Optimizes pipeline and clock configuration
Refactors pipeline architecture by separating input and output stages. Introduces additional controllers and registers for better modularity. Aligns signal and attribute formatting for improved readability.
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
#NET I_CLK LOC = AG18;
|
||||
NET I_CLK LOC = B8;
|
||||
NET I_CLK TNM_NET = CLOCK;
|
||||
TIMESPEC TS_CLOCK = PERIOD CLOCK 240 MHz HIGH 50 %;
|
||||
TIMESPEC TS_CLOCK = PERIOD CLOCK 250 MHz HIGH 50 %;
|
@@ -12,7 +12,7 @@ use ieee.math_real.all;
|
||||
entity Pipeline_pb is
|
||||
generic (
|
||||
--@ Number of pipeline stages
|
||||
G_PipelineStages : integer := 3;
|
||||
G_PipelineStages : integer := 10;
|
||||
--@ Data width
|
||||
G_Width : integer := 32;
|
||||
--@ Register balancing attribute<br>
|
||||
@@ -64,7 +64,12 @@ architecture RTL of Pipeline_pb is
|
||||
attribute keep of R_DataOut, R_ValidOut, R_ReadyIn : signal is "true";
|
||||
attribute IOB of R_DataOut, R_ValidOut, R_ReadyIn : signal is "false";
|
||||
|
||||
signal C_PipelineEnable : std_logic;
|
||||
signal C_Pipeline0Enable : std_logic;
|
||||
signal C_Pipeline1Enable : std_logic;
|
||||
|
||||
signal R_Valid : std_logic;
|
||||
signal R_Ready : std_logic;
|
||||
signal R_Data : std_logic_vector(G_Width - 1 downto 0);
|
||||
begin
|
||||
|
||||
BenchmarkEnvironmentFFs : process (I_CLK)
|
||||
@@ -86,7 +91,7 @@ begin
|
||||
end if;
|
||||
end process;
|
||||
|
||||
PipelineController : entity work.PipelineController
|
||||
PipelineControllerIn : entity work.PipelineController
|
||||
generic map(
|
||||
G_PipelineStages => G_PipelineStages,
|
||||
G_ResetActiveAt => '1'
|
||||
@@ -95,14 +100,14 @@ begin
|
||||
I_CLK => I_CLK,
|
||||
I_RST => R_RST,
|
||||
I_CE => R_CE,
|
||||
O_Enable => C_PipelineEnable,
|
||||
O_Enable => C_Pipeline0Enable,
|
||||
I_Valid => R_ValidIn,
|
||||
O_Ready => R_ReadyOut,
|
||||
O_Valid => R_ValidOut,
|
||||
I_Ready => R_ReadyIn
|
||||
O_Valid => R_Valid,
|
||||
I_Ready => R_Ready
|
||||
);
|
||||
|
||||
PipelineRegister : entity work.PipelineRegister
|
||||
PipelineRegisterIn : entity work.PipelineRegister
|
||||
generic map(
|
||||
G_PipelineStages => G_PipelineStages,
|
||||
G_Width => G_Width,
|
||||
@@ -110,8 +115,39 @@ begin
|
||||
)
|
||||
port map(
|
||||
I_CLK => I_CLK,
|
||||
I_Enable => C_PipelineEnable,
|
||||
I_Enable => C_Pipeline0Enable,
|
||||
I_Data => R_DataIn,
|
||||
O_Data => R_Data
|
||||
);
|
||||
|
||||
---------
|
||||
|
||||
PipelineControllerOut : entity work.PipelineController
|
||||
generic map(
|
||||
G_PipelineStages => G_PipelineStages,
|
||||
G_ResetActiveAt => '1'
|
||||
)
|
||||
port map(
|
||||
I_CLK => I_CLK,
|
||||
I_RST => R_RST,
|
||||
I_CE => R_CE,
|
||||
O_Enable => C_Pipeline1Enable,
|
||||
I_Valid => R_Valid,
|
||||
O_Ready => R_Ready,
|
||||
O_Valid => R_ValidOut,
|
||||
I_Ready => R_ReadyIn
|
||||
);
|
||||
|
||||
PipelineRegisterOut : entity work.PipelineRegister
|
||||
generic map(
|
||||
G_PipelineStages => G_PipelineStages,
|
||||
G_Width => G_Width,
|
||||
G_RegisterBalancing => G_RegisterBalancing
|
||||
)
|
||||
port map(
|
||||
I_CLK => I_CLK,
|
||||
I_Enable => C_Pipeline1Enable,
|
||||
I_Data => R_Data,
|
||||
O_Data => R_DataOut
|
||||
);
|
||||
|
||||
|
Reference in New Issue
Block a user