Refines VHDL formatting and counter logic
Aligns signal and port declarations for improved readability. Adjusts horizontal and vertical counter bit-width calculations for accuracy. Splits conditional statements across multiple lines for better clarity. No functional changes introduced.
This commit is contained in:
@@ -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;
|
||||
end architecture RTL;
|
||||
|
16
vhdl_ls.toml
16
vhdl_ls.toml
@@ -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
|
Reference in New Issue
Block a user