en202:vga_bitmap
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
en202:vga_bitmap [2023/11/05 22:23] – Yannick Bornat | en202:vga_bitmap [2023/11/05 23:02] (Version actuelle) – [instanciation] Yannick Bornat | ||
---|---|---|---|
Ligne 13: | 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 ==== | ||
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 | |
en202/vga_bitmap.1699219432.txt.gz · Dernière modification : 2023/11/05 22:23 de Yannick Bornat