Electronics > FPGA

FPGA VGA Controller for 8-bit computer

<< < (630/734) > >>

nockieboy:
Funnily enough I've just sat down to spend some time on this issue - I haven't had a chance to look into it up til now. ::)

nockieboy:
Fixed it. :-/O  It was a 'minor' tweak to the DMI setup code I'd made at some point last week, causing the text transparency flag to not be reset at bootup, so it had a random value which caused the inconsistent nature of the bug.  :palm:

BrianHG:
 :phew: Ok, here we go, 16 layers...

GPU_DECA_DDR3_version_16_Jan_20_2021.zip = 16 layers.

Parameters...
PDI_LAYERS     = 4
SDI_LAYERS     = 4

This means that the layers 0 through 15 =
PDI layer 0 -> SDI 0,1,2,3 = Layer 0,1,2,3
PDI layer 1 -> SDI 0,1,2,3 = Layer 4,5,6,7
PDI layer 2 -> SDI 0,1,2,3 = Layer 8,9,10,11
PDI layer 3 -> SDI 0,1,2,3 = Layer 12,13,14,15.

Note that to save on blockram resources, the TILE/FONT mode & memory is only available for PDI_LAYER 0.  This means the tile/font mode is only functional on layers 0,1,2&3.  The available ram for the font is set to 65536 bytes.  This means a 256 character 16x16 pixel font with 8bpp, IE 256 colors per pixel font is possible.

Remember, the 'CLK_DIVIDER' must be at least =3 to have all SDI layers 0,1,2,&3 functional.

IE, if the 'CLK_DIVIDER' = 1, (needed for 720p@60hz, or 1080p@30hz) then only SDI layers 0&1 will function meaning only layers 0,1,4,5,8,9,12,&13 are functional.  That's 8 functional window layers.

IE, if the 'CLK_DIVIDER' = 0, (needed for 1080p@60hz) then only SDI layer 0 will function meaning only layers 0,4,8,12 are functional.  That's 4 functional window layers.

Do not forget to disable any unused layers as they will still eat DDR3 bandwidth, especially in 1080p@60hz as that mode eats a ton of DDR3 bandwidth.  Even if the SDI layer arent functional, my controller will still try to do the DDR3 reading for those unseen SDI layers, but at full speed wasting bandwidth and potentially corrupting the display's line buffer.

The new layer swapping controls are at address 0x00F0 through 0x00FF.  These controls allows you to quick swap which layers sit on top of each other allowing you to move which window appears in front of one another.  This means you can also move a tile enabled layer in the 0,1,2,&3 to a different position in the window stack.  Documentation is coming.

Note that by default, layer 15 is the bottom window layer, layer 0 is the top window layer.  Only the BGC color setting is below layer 15 and it cannot be swapped anywhere above like all other windows 0 through 15.

You may take a look at the Debugger_test_bin_files.zip file and load the 14 layer bobafet example,and play with the swap controls in the RS232 debugger to see how you can swap which window sits in front of another.

Things left to do:
1. Fix a bug in my DDR3 controller to allow bug free support for 'Quarter Rate' mode to allow 400MHz DDR3 support fixing the current red timing report.
2. Have Nockieboy do something interesting with all 16 layers.
3. Add a hardware pixel collision detector between window layers.

BrianHG:
Ooops, found a bug in the 'BrianHG_GFX_Layer_mixer.sv' when swapping SDI_LAYERS.  It can potentially kill the video.  Please download this patch and update the file in your 'BrianHG_DDR3_GFX_source_v16' folder.

nockieboy:
No major issues that I can detect so far. :-+

Navigation

[0] Message Index

[#] Next page

[*] Previous page

There was an error while thanking
Thanking...
Go to full version
Powered by SMFPacks Advanced Attachments Uploader Mod