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:
@@ -1,45 +0,0 @@
|
||||
|
||||
library ieee;
|
||||
use ieee.std_logic_1164.all;
|
||||
use ieee.numeric_std.all;
|
||||
|
||||
entity VGATimingGenerator_tb is
|
||||
end;
|
||||
|
||||
architecture bench of VGATimingGenerator_tb is
|
||||
-- Clock period
|
||||
constant clk_period : time := 40 ns;
|
||||
-- Ports
|
||||
signal I_CLK : std_logic := '0';
|
||||
signal I_CE : std_logic := '1';
|
||||
signal I_RST : std_logic := '1';
|
||||
signal O_PixelReady : std_logic;
|
||||
signal O_HSync : std_logic;
|
||||
signal O_VSync : std_logic;
|
||||
begin
|
||||
|
||||
VGATimingGenerator_inst : entity work.VGATimingGenerator
|
||||
port map
|
||||
(
|
||||
I_CLK => I_CLK,
|
||||
I_CE => I_CE,
|
||||
I_RST => I_RST,
|
||||
O_PixelReady => O_PixelReady,
|
||||
O_HSync => O_HSync,
|
||||
O_VSync => O_VSync
|
||||
);
|
||||
|
||||
I_CLK <= not I_CLK after clk_period/2;
|
||||
|
||||
process
|
||||
begin
|
||||
wait for 100 ms;
|
||||
I_RST <= '0';
|
||||
wait for 500 ms;
|
||||
I_RST <= '1';
|
||||
wait for 100 ms;
|
||||
I_RST <= '0';
|
||||
wait;
|
||||
end process;
|
||||
|
||||
end;
|
@@ -17,17 +17,21 @@ architecture bench of VGATimingGenerator_test_tb is
|
||||
signal O_Red : std_logic_vector(2 downto 0);
|
||||
signal O_Green : std_logic_vector(2 downto 0);
|
||||
signal O_Blue : std_logic_vector(1 downto 0);
|
||||
signal O_Pixel : std_logic_vector(7 downto 0);
|
||||
begin
|
||||
|
||||
VGATimingGenerator_test_inst : entity work.VGATimingGenerator_test
|
||||
VGATimingGenerator_test_inst : entity work.VGA_test
|
||||
port map (
|
||||
I_CLK => I_CLK,
|
||||
O_VGA_HSync => O_HSync,
|
||||
O_VGA_VSync => O_VSync,
|
||||
O_Red => O_Red,
|
||||
O_Green => O_Green,
|
||||
O_Blue => O_Blue
|
||||
O_VGA_Pixel => O_Pixel
|
||||
);
|
||||
|
||||
O_Red <= O_Pixel(2 downto 0);
|
||||
O_Green <= O_Pixel(5 downto 3);
|
||||
O_Blue <= O_Pixel(7 downto 6);
|
||||
|
||||
I_CLK <= not I_CLK after clk_period/2;
|
||||
|
||||
end;
|
||||
|
@@ -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>
|
||||
|
Reference in New Issue
Block a user