Refactors VGA timing and mode handling

Renames and restructures VGA timing generator for clarity and modularity.
Introduces VGA modes package for centralized resolution and timing configuration.
Updates related testbenches and constraints to align with new structure.
Improves maintainability and flexibility for future VGA mode additions.
This commit is contained in:
2025-04-26 10:26:52 +00:00
parent 319b51bf56
commit a73f125357
13 changed files with 404 additions and 223 deletions

View File

@@ -9,33 +9,209 @@
<top_module name="math_real" />
<top_module name="numeric_std" />
<top_module name="std_logic_1164" />
<top_module name="vgatiminggenerator_tb" />
<top_module name="textio" />
<top_module name="vcomponents" />
<top_module name="vga_modes_pkg" />
<top_module name="vgatiminggenerator_test_tb" />
<top_module name="vital_primitives" />
<top_module name="vital_timing" />
<top_module name="vpkg" />
</top_modules>
</db_ref>
</db_ref_list>
<WVObjectSize size="6" />
<wvobject fp_name="/vgatiminggenerator_tb/VGATimingGenerator_inst/i_clk" type="logic" db_ref_id="1">
<WVObjectSize size="16" />
<wvobject fp_name="/vgatiminggenerator_test_tb/i_clk" type="logic" db_ref_id="1">
<obj_property name="DisplayName">label</obj_property>
<obj_property name="ElementShortName">i_clk</obj_property>
<obj_property name="ObjectShortName">i_clk</obj_property>
<obj_property name="label">Clock</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/s_clk_fb" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">s_clk_fb</obj_property>
<obj_property name="ObjectShortName">s_clk_fb</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/s_clk_pixel" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">s_clk_pixel</obj_property>
<obj_property name="ObjectShortName">s_clk_pixel</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/s_clk_logic" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">s_clk_logic</obj_property>
<obj_property name="ObjectShortName">s_clk_logic</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/i_vga_pixelce" type="logic" db_ref_id="1">
<obj_property name="DisplayName">label</obj_property>
<obj_property name="ElementShortName">i_vga_pixelce</obj_property>
<obj_property name="ObjectShortName">i_vga_pixelce</obj_property>
<obj_property name="label">Pixel_CE</obj_property>
</wvobject>
<wvobject fp_name="group3" type="group">
<obj_property name="label">Testbench</obj_property>
<obj_property name="DisplayName">label</obj_property>
<wvobject fp_name="/vgatiminggenerator_test_tb/o_hsync" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">o_hsync</obj_property>
<obj_property name="ObjectShortName">o_hsync</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/o_vsync" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">o_vsync</obj_property>
<obj_property name="ObjectShortName">o_vsync</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/o_red" type="array" db_ref_id="1">
<obj_property name="ElementShortName">o_red[2:0]</obj_property>
<obj_property name="ObjectShortName">o_red[2:0]</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/o_green" type="array" db_ref_id="1">
<obj_property name="ElementShortName">o_green[2:0]</obj_property>
<obj_property name="ObjectShortName">o_green[2:0]</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/o_blue" type="array" db_ref_id="1">
<obj_property name="ElementShortName">o_blue[1:0]</obj_property>
<obj_property name="ObjectShortName">o_blue[1:0]</obj_property>
</wvobject>
</wvobject>
<wvobject fp_name="group9" type="group">
<obj_property name="label">UUT</obj_property>
<obj_property name="DisplayName">label</obj_property>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/i_vga_pixelrst" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">i_vga_pixelrst</obj_property>
<obj_property name="ObjectShortName">i_vga_pixelrst</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/i_vga_ce" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">i_vga_ce</obj_property>
<obj_property name="ObjectShortName">i_vga_ce</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/i_vga_rst" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">i_vga_rst</obj_property>
<obj_property name="ObjectShortName">i_vga_rst</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/i_vga_pixeldata_valid" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">i_vga_pixeldata_valid</obj_property>
<obj_property name="ObjectShortName">i_vga_pixeldata_valid</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/o_vga_pixeldata_ready" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">o_vga_pixeldata_ready</obj_property>
<obj_property name="ObjectShortName">o_vga_pixeldata_ready</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/i_vga_pixeldata" type="array" db_ref_id="1">
<obj_property name="ElementShortName">i_vga_pixeldata[7:0]</obj_property>
<obj_property name="ObjectShortName">i_vga_pixeldata[7:0]</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/r_currentcolor" type="array" db_ref_id="1">
<obj_property name="ElementShortName">r_currentcolor[7:0]</obj_property>
<obj_property name="ObjectShortName">r_currentcolor[7:0]</obj_property>
</wvobject>
</wvobject>
<wvobject fp_name="group24" type="group">
<obj_property name="label">Y</obj_property>
<obj_property name="DisplayName">label</obj_property>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/o_vga_req_y_valid" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">o_vga_req_y_valid</obj_property>
<obj_property name="ObjectShortName">o_vga_req_y_valid</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/i_vga_req_y_ready" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">i_vga_req_y_ready</obj_property>
<obj_property name="ObjectShortName">i_vga_req_y_ready</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/o_vga_req_y" type="array" db_ref_id="1">
<obj_property name="ElementShortName">o_vga_req_y[9:0]</obj_property>
<obj_property name="ObjectShortName">o_vga_req_y[9:0]</obj_property>
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
</wvobject>
</wvobject>
<wvobject fp_name="group25" type="group">
<obj_property name="label">X</obj_property>
<obj_property name="DisplayName">label</obj_property>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/o_vga_req_x_valid" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">o_vga_req_x_valid</obj_property>
<obj_property name="ObjectShortName">o_vga_req_x_valid</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/i_vga_req_x_ready" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">i_vga_req_x_ready</obj_property>
<obj_property name="ObjectShortName">i_vga_req_x_ready</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/o_vga_req_x" type="array" db_ref_id="1">
<obj_property name="ElementShortName">o_vga_req_x[9:0]</obj_property>
<obj_property name="ObjectShortName">o_vga_req_x[9:0]</obj_property>
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
</wvobject>
</wvobject>
<wvobject fp_name="group37" type="group">
<obj_property name="label">Errors</obj_property>
<obj_property name="DisplayName">label</obj_property>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/INST_VGA/r_error[0]" type="logic" db_ref_id="1">
<obj_property name="DisplayName">label</obj_property>
<obj_property name="ElementShortName">[0]</obj_property>
<obj_property name="ObjectShortName">r_error[0]</obj_property>
<obj_property name="label">Pixel Underrun</obj_property>
</wvobject>
<wvobject fp_name="group39" type="group">
<obj_property name="label">Raw</obj_property>
<obj_property name="DisplayName">label</obj_property>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/INST_VGA/r_error" type="array" db_ref_id="1">
<obj_property name="ElementShortName">r_error[7:0]</obj_property>
<obj_property name="ObjectShortName">r_error[7:0]</obj_property>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/INST_VGA/r_error[7]" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">[7]</obj_property>
<obj_property name="ObjectShortName">r_error[7]</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/INST_VGA/r_error[6]" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">[6]</obj_property>
<obj_property name="ObjectShortName">r_error[6]</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/INST_VGA/r_error[5]" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">[5]</obj_property>
<obj_property name="ObjectShortName">r_error[5]</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/INST_VGA/r_error[4]" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">[4]</obj_property>
<obj_property name="ObjectShortName">r_error[4]</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/INST_VGA/r_error[3]" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">[3]</obj_property>
<obj_property name="ObjectShortName">r_error[3]</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/INST_VGA/r_error[2]" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">[2]</obj_property>
<obj_property name="ObjectShortName">r_error[2]</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/INST_VGA/r_error[1]" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">[1]</obj_property>
<obj_property name="ObjectShortName">r_error[1]</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/INST_VGA/r_error[0]" type="logic" db_ref_id="1">
<obj_property name="DisplayName">label</obj_property>
<obj_property name="ElementShortName">[0]</obj_property>
<obj_property name="ObjectShortName">r_error[0]</obj_property>
<obj_property name="label">Pixel Underrun</obj_property>
</wvobject>
</wvobject>
</wvobject>
</wvobject>
<wvobject fp_name="divider40" type="divider">
<obj_property name="label">Slow</obj_property>
<obj_property name="DisplayName">label</obj_property>
<obj_property name="BkColor">128 128 255</obj_property>
<obj_property name="TextColor">230 230 230</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/INST_VGA/INST_TimingGenerator/i_clk" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">i_clk</obj_property>
<obj_property name="ObjectShortName">i_clk</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_tb/VGATimingGenerator_inst/i_ce" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">i_ce</obj_property>
<obj_property name="ObjectShortName">i_ce</obj_property>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/INST_VGA/INST_AsyncPixelDataFIFO/i_read_clk" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">i_read_clk</obj_property>
<obj_property name="ObjectShortName">i_read_clk</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_tb/i_rst" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">i_rst</obj_property>
<obj_property name="ObjectShortName">i_rst</obj_property>
<wvobject fp_name="divider42" type="divider">
<obj_property name="label">Fast</obj_property>
<obj_property name="DisplayName">label</obj_property>
<obj_property name="BkColor">128 128 255</obj_property>
<obj_property name="TextColor">230 230 230</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_tb/VGATimingGenerator_inst/o_pixelready" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">o_pixelready</obj_property>
<obj_property name="ObjectShortName">o_pixelready</obj_property>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/INST_VGA/INST_XY_Generator/i_clk" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">i_clk</obj_property>
<obj_property name="ObjectShortName">i_clk</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_tb/VGATimingGenerator_inst/o_hsync" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">o_hsync</obj_property>
<obj_property name="ObjectShortName">o_hsync</obj_property>
</wvobject>
<wvobject fp_name="/vgatiminggenerator_tb/VGATimingGenerator_inst/o_vsync" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">o_vsync</obj_property>
<obj_property name="ObjectShortName">o_vsync</obj_property>
<wvobject fp_name="/vgatiminggenerator_test_tb/VGATimingGenerator_test_inst/INST_VGA/INST_AsyncPixelDataFIFO/i_write_clk" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">i_write_clk</obj_property>
<obj_property name="ObjectShortName">i_write_clk</obj_property>
</wvobject>
</wave_config>