diff --git a/src/VGATimingGenerator.vhd b/src/VGATimingGenerator.vhd index 9608888..205062d 100644 --- a/src/VGATimingGenerator.vhd +++ b/src/VGATimingGenerator.vhd @@ -22,58 +22,58 @@ entity VGATimingGenerator is --@ Horizontal Front Porch G_HFront : integer := 16; --@ Horizontal Sync Pulse - G_HSync : integer := 96; + G_HSync : integer := 96; --@ Horizontal Back Porch - G_HBack : integer := 48; + G_HBack : integer := 48; --@ Horizontal Total resolution G_HTotal : integer := 800; --@ Vertical Front Porch G_VFront : integer := 10; --@ Vertical Sync Pulse - G_VSync : integer := 2; + G_VSync : integer := 2; --@ Vertical Back Porch - G_VBack : integer := 33; + G_VBack : integer := 33; --@ Vertical Total resolution G_VTotal : integer := 525 ); port ( --@ Clock signal; **Rising edge** triggered - I_CLK : in std_logic; + I_CLK : in std_logic; --@ Clock Enable signal - I_CE : in std_logic; + I_CE : in std_logic; --@ Synchronous reset signal - I_RST : in std_logic; + I_RST : in std_logic; --@ Ready signal (AXI like) to indicate that the pixel data is ready to be displayed O_PixelReady : out std_logic; --@ @virtualbus VGA-Timing-Signals @dir out VGA timing signals --@ Horizontal Sync signal; **Active low** - O_HSync : out std_logic; + O_HSync : out std_logic; --@ Vertical Sync signal; **Active low** - O_VSync : out std_logic + O_VSync : out std_logic --@ @end ); end entity VGATimingGenerator; architecture RTL of VGATimingGenerator is --@ Horizontal Counter; max value = G_HTotal - signal R_HorizontalCounter : unsigned(integer(ceil(log2(real(G_HTotal)))) downto 0) := (others => '0'); + signal R_HorizontalCounter : unsigned(integer(ceil(log2(real(G_HTotal)))) - 1 downto 0) := (others => '0'); --@ Vertical Counter; max value = G_VTotal - signal R_VerticalCounter : unsigned(integer(ceil(log2(real(G_VTotal)))) downto 0) := (others => '0'); + signal R_VerticalCounter : unsigned(integer(ceil(log2(real(G_VTotal)))) - 1 downto 0) := (others => '0'); --@ Counter Enable signal for Vertical Counter - signal C_VerticalCE : std_logic := '0'; + signal C_VerticalCE : std_logic := '0'; --@ Flag to indicate if the horizontal counter is in the visible area - signal C_HorizontalVisible : std_logic := '0'; + signal C_HorizontalVisible : std_logic := '0'; --@ Flag to indicate if the vertical counter is in the visible area - signal C_VerticalVisible : std_logic := '0'; + signal C_VerticalVisible : std_logic := '0'; --@ Horizontal Sync signal shift register - signal R_HSync : std_logic_vector(1 downto 0) := (others => '0'); + signal R_HSync : std_logic_vector(1 downto 0) := (others => '0'); --@ Vertical Sync signal register - signal R_VSync : std_logic := '1'; + signal R_VSync : std_logic := '1'; --@ Pixel Ready signal - signal C_PixelReady : std_logic := '0'; + signal C_PixelReady : std_logic := '0'; begin --@ Horizontal Pixel Counter. --@ Overflows at G_HTotal. @@ -112,7 +112,8 @@ begin --@ Flag generator for horizontal visible area. P_HorizontalVisible : process (R_HorizontalCounter) begin - if R_HorizontalCounter >= G_HSync + G_HBack and R_HorizontalCounter <= G_HTotal - G_HFront - 1 then + if R_HorizontalCounter >= G_HSync + G_HBack and + R_HorizontalCounter <= G_HTotal - G_HFront - 1 then C_HorizontalVisible <= '1'; else C_HorizontalVisible <= '0'; @@ -166,7 +167,8 @@ begin --@ Flag generator for vertical visible area. P_VerticalVisible : process (R_VerticalCounter) begin - if R_VerticalCounter >= G_VSync + G_VBack and R_VerticalCounter <= G_VTotal - G_VFront - 1 then + if R_VerticalCounter >= G_VSync + G_VBack and + R_VerticalCounter <= G_VTotal - G_VFront - 1 then C_VerticalVisible <= '1'; else C_VerticalVisible <= '0'; @@ -189,15 +191,15 @@ begin begin if rising_edge(I_CLK) then if I_RST = '1' then - O_HSync <= '1'; - O_VSync <= '1'; + O_HSync <= '1'; + O_VSync <= '1'; O_PixelReady <= '0'; elsif I_CE = '1' then - O_HSync <= R_HSync(0); - O_VSync <= R_VSync; + O_HSync <= R_HSync(0); + O_VSync <= R_VSync; O_PixelReady <= C_PixelReady; end if; end if; end process; -end architecture RTL; \ No newline at end of file +end architecture RTL; diff --git a/vhdl_ls.toml b/vhdl_ls.toml deleted file mode 100644 index a7e2aab..0000000 --- a/vhdl_ls.toml +++ /dev/null @@ -1,16 +0,0 @@ -[libraries] -defaultlib.files = [ - 'tests/*.vhd', - 'src/*.vhd', - 'src/*/*.vhd', -] - -# Libraries can be marked as third-party to disable some analysis warnings, such as unused declarations -UNISIM.files = [ - '/opt/Xilinx/14.7/ISE_DS/ISE/vhdl/src/unisims/unisim_VCOMP.vhd', -] -UNISIM.is_third_party = true - -[lint] -unused = 'error' # Upgrade the 'unused' diagnostic to the 'error' severity -unnecessary_work_library = false # Disable linting for the 'library work;' statement \ No newline at end of file