View unanswered posts | View active topics It is currently Thu Mar 28, 2024 3:02 pm



Reply to topic  [ 138 posts ]  Go to page Previous  1 ... 6, 7, 8, 9, 10
 FISA64 - 
Author Message

Joined: Fri May 08, 2015 6:22 pm
Posts: 61
robfinch wrote:
Quote:
Another option might be temporal dithering similar to what's used in some cheaper LCDs.

I may try dithering the output instead. I half expected the circuit to produce a dithered output given the high bandwidth DAC.

I had a chance to play with Delta-Sigma code and it looks like it would apply some nice dithering to your LSB.
For testing I used only a single bit for each colour with no kind of external DAC, the only added components are a 1K + 270Ohm series resistor net (1 per R,G,B) to drop the 3.3v output to 0.7v for the VGA input of the screen.
I used an internal colour space of 18 bits (6 per colour). 50MHz pixel clock with a 300MHz subpixel clock. Used a little Altera Cyclone II board that could do with VGA, seems to have a nice PLL.

Video:
https://www.youtube.com/watch?v=Sfqd7RtJZ_s

Code looks like this, excuse the VHDL ;)
Code:
  process(CLOCK_300)
  begin
    if rising_edge(CLOCK_300) then     
    -- Show test animation
    PWM_Accumulator1  <=  (('0'&PWM_Accumulator1(5 downto 0)) + ('0'&SixBitRedInput));
    PWM_Accumulator2  <=  (('0'&PWM_Accumulator2(5 downto 0)) + ('0'&SixBitGreenInput));
    PWM_Accumulator3  <=  (('0'&PWM_Accumulator3(5 downto 0)) + ('0'&SixBitBlueInput));
   end if;
    end if;
  end process;

VGAOutRed <= PWM_Accumulator1(6);
VGAOutGreen <= PWM_Accumulator2(6);
VGAOutBlue <= PWM_Accumulator3(6);

robfinch wrote:

I started working on a Bit-Blitter component. It copies a rectangular region from a source bitmap to a destination bitmap excluding pixels that match the transparent color.
It works a pixel at a time. The blitter currently handles up to 64 region copies from up to 16 source bitmaps to a single target bitmap. I've been trying to find information on blitter components on the web in particular capabilities and registers sets. There are a zillion sites that have non-specific information.

I've only had a quick look at the source so far so might have missed it. The ability to average two bitmaps is handy but I don't think I saw it in the code. It would help with the datkening areas of the screen : (bitmap1 colour + bitmap2 colour) / 2


Fri May 22, 2015 4:07 pm
Profile

Joined: Sat Feb 02, 2013 9:40 am
Posts: 2095
Location: Canada
Quote:
I've only had a quick look at the source so far so might have missed it. The ability to average two bitmaps is handy but I don't think I saw it in the code. It would help with the datkening areas of the screen : (bitmap1 colour + bitmap2 colour) / 2

I'll be changing that 'ADD' into 'AVG'. I've read that the simple raster-ops AND,OR,XOR, aren't actually that useful, and that higher mathematical functions are usually used instead. For example for lighting effects. I wonder if the blitter could be treated more like a matrix accelerator co-processor to the cpu. I've set it up as if there were 64 "matrix" (image) registers, with operations taking place between the registers.
One thing I've left out of the blitter so far is a shifter / rotator. A shifter / rotator is usually used to align source pixels with the destination. However it would be difficult to do as pixels are not byte aligned in this case and are packed into 128 bit strips. Instead I have the blitter just working a pixel at a time. That may make the blitter quite slow compared to other solutions. The blitter gets more efficient at greater color depths however.

_________________
Robert Finch http://www.finitron.ca


Sat May 23, 2015 12:05 pm
Profile WWW

Joined: Sat Feb 02, 2013 9:40 am
Posts: 2095
Location: Canada
Started working on another processor project called DSD1 (for Darkstar Dragon 1). There are a couple of things I desire which FISA64 doesn't support.
- segmented architecture
- condition codes
- variable length instructions

Variable length instructions are a good way to make better use of the instruction cache. Varying the instruction length with shorter instructions as opposed to a fixed 32 bit format, can result in an instruction stream significantly smaller. That means fewer cache loads and higher performance.

For any operation performed by the processor there is a result and additional result status data. For many cpu's the result status data is stored in a condition code register(s).

A segmented architecture offers a low-overhead means of performing memory management.

_________________
Robert Finch http://www.finitron.ca


Mon Jun 08, 2015 10:23 pm
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 138 posts ]  Go to page Previous  1 ... 6, 7, 8, 9, 10

Who is online

Users browsing this forum: No registered users and 13 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software