en202:vga_bitmap
Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
en202:vga_bitmap [2022/09/07 15:25] – créée 78.229.230.2 | en202:vga_bitmap [2023/11/05 23:02] (Version actuelle) – [instanciation] Yannick Bornat | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Bitmap VGA output ====== | ====== Bitmap VGA output ====== | ||
- | Before the implementation of any of these modules, please, check if your design leaves enough memory resources for the required memory. Logic requirements are negligible and working frequency is above 395MHz | + | **WARNING** : The module has recenty been updated... some information here might be obsolete... contact me for confirmation. |
+ | |||
+ | Before the implementation of any of these modules, please, check if your design leaves enough memory resources for the required memory. Logic requirements are negligible and working frequency is high enough | ||
Ligne 11: | Ligne 13: | ||
* reset is active high | * reset is active high | ||
+ | ---- | ||
+ | ====instanciation==== | ||
+ | |||
+ | The most simple version is to be instanced with the following lines. Optional I/Os are not used, and might produce warnings, you can safely ignore them. | ||
+ | |||
+ | |||
+ | display_module : entity work.vga_bitmap_640x480 | ||
+ | generic map(RAM_BPP | ||
+ | INDEXED | ||
+ | READBACK => 0) -- read from bitmap memory disabled | ||
+ | | ||
+ | port map(clk | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | If data readback is required, it becomes : | ||
+ | * **warning**: | ||
+ | * data read requests can be pipelined | ||
+ | |||
+ | |||
+ | display_module : entity work.vga_bitmap_640x480 | ||
+ | generic map(RAM_BPP | ||
+ | INDEXED | ||
+ | READBACK => 1) -- read from bitmap memory enabled | ||
+ | | ||
+ | port map(clk | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | The // | ||
---- | ---- | ||
==== addressing a pixel ==== | ==== addressing a pixel ==== | ||
- | Pixels are addressed by lines from the top left to the bottom right. For example, using a 160x100 resolution, the top left pixel has address | + | Pixels are addressed by x,y coordinates |
Different resolutions are available : | Different resolutions are available : | ||
- | * 160x100 | + | * <del>160x120</ |
- | * 160x120 | + | |
- | * 320x200 | + | |
* 320x240 | * 320x240 | ||
* 640x480 | * 640x480 | ||
Ligne 80: | Ligne 130: | ||
===== memory usage (Artix 7) ===== | ===== memory usage (Artix 7) ===== | ||
- | |||
- | All combinations could not be tested, so the information below may be incomplete. Please not that the following values are given for the Artix 7 family synthetized with ISE 14.7 . | ||
- | * For 160x100, half RAM block use the ability to split a 36kb block into two 18kb blocks. So using the 3bpp color representation requires one 36kb block and one 18kb block (the second half of the 36kb block used is still available) | ||
- | * For 320x240, the synthetizer is not able to split blocks because of address counting, so using a 3bpp representation will actually require 8 blocks (7.5 rounded to 8). | ||
- | * For 640x480, memory requirements may be very high, resulting in very high implementation times. | ||
- | * Being only a machine, the synthetizer is not able to perform high optimizations. For example, it is possible to use only 5 36k-block RAMs to perform a 160x120 resolution with 8bpp, instead of 8 required by the synthetizer. Implementing this optimization could be a nice project :) | ||
^ resolution ^ ISE synthesis ^ greedy Vivado (v1.1 and previous) ^ | ^ resolution ^ ISE synthesis ^ greedy Vivado (v1.1 and previous) ^ | ||
- | ^ 160x100 | 0.5 BRAM / bpp | 0.5 BRAM / bpp | | ||
- | ^ 160x120 | 1 BRAM / bpp | 1 BRAM / bpp | | ||
- | ^ 320x200 | 2 BRAM / bpp | 2 BRAM / bpp | | ||
^ 320x240 | 2.5 BRAM / bpp | 4 BRAM / bpp | | ^ 320x240 | 2.5 BRAM / bpp | 4 BRAM / bpp | | ||
^ 640x480 | 10 BRAM / bpp | 16 BRAM / bpp | | ^ 640x480 | 10 BRAM / bpp | 16 BRAM / bpp | | ||
Ligne 96: | Ligne 137: | ||
===== Files ===== | ===== Files ===== | ||
- | * {{ en202: | ||
- | * {{ en202: | ||
- | * {{ en202: | ||
* {{ en202: | * {{ en202: | ||
* {{ en202: | * {{ en202: | ||
Ligne 104: | Ligne 142: | ||
===== Known bugs ===== | ===== Known bugs ===== | ||
- | Modules use excessively high memory resources when synthetising with Vivado. Versions 1.2 and above should soon fix this issue soon. Til then, 640x480 resolution can only be achieved at 8 bits/Pixel. (9 bits/pixel might work but was not tested, please give feedback concerning this limitation). | + |
en202/vga_bitmap.1662557147.txt.gz · Dernière modification : 2022/09/07 15:25 de 78.229.230.2