l'affichage marche presque

This commit is contained in:
leo 2021-12-19 23:05:28 +01:00
parent 94e7110845
commit 175d0d37b7
3 changed files with 46 additions and 39 deletions

View File

@ -59,55 +59,61 @@ signal snakeHere: std_logic; --1 si on doit afficher le pixel 0 sinon
signal dx : signed(2 downto 0); signal dx : signed(2 downto 0);
signal dy : signed(2 downto 0); signal dy : signed(2 downto 0);
signal running : std_logic; signal running : std_logic;
signal startUpdate : std_logic;
signal snakePresentBuffer : std_logic;
begin begin
-- Process de calcul d'affichage -- Process de calcul d'affichage
process(X,Y,clk,reset,running,dx,dy,updateOrder,currentSnake,snakeHere) process(X,Y,clk,reset,running,dx,dy,updateOrder,currentSnake,snakeHere,snakePresentBuffer)
begin begin
--if(updateOrder'event and updateOrder = '1') then if(updateOrder'event and updateOrder = '1') then
-- running <= '1'; snakePresentBuffer <= snakeHere;
-- snakeHere <= '0'; startUpdate <= '1';
-- dx <= to_signed(-1,3); end if;
-- dy <= to_signed(-1,3);
--end if;
--if(reset = '0') then if(reset = '0') then
-- dx <= to_signed(-1,3); running <= '0';
-- dy <= to_signed(-1,3); snakeHere <= '0';
-- running <= '0'; snakePresentBuffer <= '0';
-- snakeHere <= '0'; elsif(clk'event and clk = '1') then
--elsif(clk'event and clk = '1') then if(startUpdate = '1') then
-- if(running = '1') then running <= '1';
-- dx <= dx + 1; snakeHere <= '0';
dx <= to_signed(-1,3);
dy <= to_signed(-1,3);
end if;
if(running = '1') then
dx <= dx + 1;
if(dx = 2) then
dx <= to_signed(-1,3);
dy <= dy + 1;
end if;
-- if(dx = 2) then if(dy = 2) then
-- dx <= to_signed(-1,3); dy <= to_signed(-1,3);
-- dy <= dy + 1; running <= '0';
-- end if; end if;
-- end if;
--end if; if(currentSnake.isDefined = '1') then
if(clk'event and clk = '1') then --if(X>=currentSnake.X-8 and X<=currentSnake.X+8 and Y>=currentSnake.Y-8 and Y<=currentSnake.Y+8) then
if(currentSnake.isDefined = '1') then snakeHere <= '1';
--if(X>=currentSnake.X-8 and X<=currentSnake.X+8 and Y>=currentSnake.Y-8 and Y<=currentSnake.Y+8) then --end if;
snakeHere <= '1'; end if;
--end if;
else
snakeHere <= '0';
end if; end if;
end if; end if;
--if(dy = 2) then if(running = '1') then
-- dy <= to_signed(-1,3); startUpdate <= '0';
-- running <= '0'; end if;
--end if;
end process; end process;
--matAddress <= resize(shift_right(to_unsigned(to_integer(Y)+to_integer(dy),9),4)*40+shift_right(to_unsigned(to_integer(X)+to_integer(dx),10),4),SNAKE_ADDRESS_SIZE); --on resize parce qu'il as décidé que le resultat faisait 18bits au lieu des 11 attendus matAddress <= resize(shift_right(to_unsigned(to_integer(Y)+to_integer(dy),9),4)*40+shift_right(to_unsigned(to_integer(X)+to_integer(dx),10),4),SNAKE_ADDRESS_SIZE); --on resize parce qu'il as décidé que le resultat faisait 18bits au lieu des 11 attendus
matAddress <= resize(shift_right(Y,4)*40+shift_right(X,4),SNAKE_ADDRESS_SIZE); --matAddress <= '0' & X/16;--resize(shift_right(Y,4)*40+shift_right(X,4),SNAKE_ADDRESS_SIZE);
currentAddress <= listRef; currentAddress <= listRef;
snakePresent <= snakeHere; snakePresent <= snakePresentBuffer;
end Behavioral; end Behavioral;

View File

@ -247,7 +247,7 @@ U6 : snakeRAM --La RAM pour le snake
address1 => displayRAMAddress, address1 => displayRAMAddress,
data1 => displayRAMdata, data1 => displayRAMdata,
writeEnable1 => '0', writeEnable1 => '0',
clk1 => pxl_clk, clk1 => H125MHz,
address2 => updateRAMAddress, address2 => updateRAMAddress,
data2 => updateRAMData, data2 => updateRAMData,
@ -265,7 +265,7 @@ U7 : snakeRAM --La RAM pour la matrice de correspondance
address1 => matdispRAMAddress, address1 => matdispRAMAddress,
data1 => matdispRAMdata, data1 => matdispRAMdata,
writeEnable1 => '0', writeEnable1 => '0',
clk1 => pxl_clk, clk1 => H125MHz,
address2 => matupdRAMAddress, address2 => matupdRAMAddress,
data2 => std_logic_vector(matupdRAMData), data2 => std_logic_vector(matupdRAMData),
@ -273,5 +273,6 @@ U7 : snakeRAM --La RAM pour la matrice de correspondance
clk2 => H125MHz clk2 => H125MHz
); );
led <= std_logic_vector(displayRAMData(3 downto 0)); led(0) <= resetGeneral;
led(1) <= updateRAMWE;
end Behavioral; end Behavioral;

View File

@ -96,7 +96,7 @@ begin
currentSnake.dirY <= to_signed(0,2); currentSnake.dirY <= to_signed(0,2);
currentSnake.isDefined <= '0'; currentSnake.isDefined <= '0';
matAddress <= to_unsigned(10,SNAKE_ADDRESS_SIZE); matAddress <= index;
matData <= to_unsigned(10,SNAKE_ADDRESS_SIZE); matData <= to_unsigned(10,SNAKE_ADDRESS_SIZE);
end if; end if;
end process; end process;