Add pipeline stages parameter to PipelineRegister instances and refactor C_Offset calculation
All checks were successful
Manuelles Build mit ISE / build (push) Successful in 38s

This commit is contained in:
2025-04-25 11:38:28 +00:00
parent a9ddd1a12d
commit 7e78e62b47

View File

@@ -82,7 +82,8 @@ begin
INST0_VSpritePipeline_Y_Sprite : entity work.PipelineRegister INST0_VSpritePipeline_Y_Sprite : entity work.PipelineRegister
generic map( generic map(
G_Width => G_Y_Width G_PipelineStages => 1,
G_Width => G_Y_Width
) )
port map( port map(
I_CLK => I_CLK, I_CLK => I_CLK,
@@ -93,7 +94,8 @@ begin
INST0_VSpritePipeline_Y_Request : entity work.PipelineRegister INST0_VSpritePipeline_Y_Request : entity work.PipelineRegister
generic map( generic map(
G_Width => G_Y_Width G_PipelineStages => 1,
G_Width => G_Y_Width
) )
port map( port map(
I_CLK => I_CLK, I_CLK => I_CLK,
@@ -109,7 +111,8 @@ begin
INST_VSpritePipeline_Y_Bottom_Sprite : entity work.PipelineRegister INST_VSpritePipeline_Y_Bottom_Sprite : entity work.PipelineRegister
generic map( generic map(
G_Width => G_Y_Width G_PipelineStages => 1,
G_Width => G_Y_Width
) )
port map( port map(
I_CLK => I_CLK, I_CLK => I_CLK,
@@ -120,7 +123,8 @@ begin
INST1_VSpritePipeline_Y_Sprite : entity work.PipelineRegister INST1_VSpritePipeline_Y_Sprite : entity work.PipelineRegister
generic map( generic map(
G_Width => G_Y_Width G_PipelineStages => 1,
G_Width => G_Y_Width
) )
port map( port map(
I_CLK => I_CLK, I_CLK => I_CLK,
@@ -131,7 +135,8 @@ begin
INST1_VSpritePipeline_Y_Request : entity work.PipelineRegister INST1_VSpritePipeline_Y_Request : entity work.PipelineRegister
generic map( generic map(
G_Width => G_Y_Width G_PipelineStages => 1,
G_Width => G_Y_Width
) )
port map( port map(
I_CLK => I_CLK, I_CLK => I_CLK,
@@ -147,15 +152,26 @@ begin
) else '0'; ) else '0';
--@ Calculate the offset address of the sprite --@ Calculate the offset address of the sprite
C_Offset <= std_logic_vector( process (R1_Y_Request, R1_Y_Sprite)
to_unsigned( variable V_SPRITE_ROW_OFFSETS_Address : integer := 0;
K_SPRITE_ROW_OFFSETS(to_integer(unsigned(R1_Y_Request) - unsigned(R1_Y_Sprite))), begin
C_Offset'length) V_SPRITE_ROW_OFFSETS_Address := to_integer(unsigned(R1_Y_Request) - unsigned(R1_Y_Sprite));
);
if V_SPRITE_ROW_OFFSETS_Address > 0 and V_SPRITE_ROW_OFFSETS_Address < G_Sprite_Height then
C_Offset <= std_logic_vector(
to_unsigned(
K_SPRITE_ROW_OFFSETS(V_SPRITE_ROW_OFFSETS_Address),
C_Offset'length)
);
else
C_Offset <= (others => '0');
end if;
end process;
INST_IsVisible_OutputRegister : entity work.PipelineRegister INST_IsVisible_OutputRegister : entity work.PipelineRegister
generic map( generic map(
G_Width => 1 G_PipelineStages => 1,
G_Width => 1
) )
port map( port map(
I_CLK => I_CLK, I_CLK => I_CLK,
@@ -166,7 +182,8 @@ begin
INST_Offset_OutputRegister : entity work.PipelineRegister INST_Offset_OutputRegister : entity work.PipelineRegister
generic map( generic map(
G_Width => G_Offset_Width G_PipelineStages => 1,
G_Width => G_Offset_Width
) )
port map( port map(
I_CLK => I_CLK, I_CLK => I_CLK,