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,6 +82,7 @@ begin
INST0_VSpritePipeline_Y_Sprite : entity work.PipelineRegister
generic map(
G_PipelineStages => 1,
G_Width => G_Y_Width
)
port map(
@@ -93,6 +94,7 @@ begin
INST0_VSpritePipeline_Y_Request : entity work.PipelineRegister
generic map(
G_PipelineStages => 1,
G_Width => G_Y_Width
)
port map(
@@ -109,6 +111,7 @@ begin
INST_VSpritePipeline_Y_Bottom_Sprite : entity work.PipelineRegister
generic map(
G_PipelineStages => 1,
G_Width => G_Y_Width
)
port map(
@@ -120,6 +123,7 @@ begin
INST1_VSpritePipeline_Y_Sprite : entity work.PipelineRegister
generic map(
G_PipelineStages => 1,
G_Width => G_Y_Width
)
port map(
@@ -131,6 +135,7 @@ begin
INST1_VSpritePipeline_Y_Request : entity work.PipelineRegister
generic map(
G_PipelineStages => 1,
G_Width => G_Y_Width
)
port map(
@@ -147,14 +152,25 @@ begin
) else '0';
--@ Calculate the offset address of the sprite
process (R1_Y_Request, R1_Y_Sprite)
variable V_SPRITE_ROW_OFFSETS_Address : integer := 0;
begin
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(to_integer(unsigned(R1_Y_Request) - unsigned(R1_Y_Sprite))),
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
generic map(
G_PipelineStages => 1,
G_Width => 1
)
port map(
@@ -166,6 +182,7 @@ begin
INST_Offset_OutputRegister : entity work.PipelineRegister
generic map(
G_PipelineStages => 1,
G_Width => G_Offset_Width
)
port map(