Bonjour!
Je viens tout juste de débuter en VHDL et j'ai un petit problème...
Je dois réaliser un ALU et un Encoder qui est décrit dans la situation que j'ai mis en pièces jointes.
J'ai réussi à coder l'ALU et l'encoder. Voici leur code:
Code:ALU: library IEEE; use IEEE.std_logic_1164.all; use ieee.numeric_std.all; entity ALU2 is port (A: in unsigned (3 downto 0); B: in unsigned (3 downto 0); S: in unsigned (1 downto 0); Op_valid: in unsigned (0 downto 0); Resultat: out unsigned (4 downto 0); Erreur: out unsigned (1 downto 0)); end ALU2; architecture behav of ALU1 is begin process(A,B, S, Op_valid) variable res : integer; variable AI: integer; variable BI: integer; begin AI:= TO_INTEGER(A); BI:= TO_INTEGER(B); if Op_valid="1" then if S="00" then Res := AI+BI; elsif S="01" then Res := AI * BI; if A*B >= "11111" then Erreur <= "01"; else Erreur <= "00"; end if; elsif S="10" then Res := (AI) - (BI); if (BI >= AI) then Erreur <= "01"; else Erreur <= "00"; end if; elsif S="11" then if (AI >= BI) then Resultat<="00001"; else Resultat <="00000"; end if; else Resultat <= "00000"; end if; end if; Resultat<= to_unsigned(Res,5); end process; end architecture; et voici le code pour mon encoder: Encoder: library IEEE; use IEEE.std_logic_1164.all; entity encoder is port (J: in std_logic_vector (3 downto 0); S: out std_logic_vector (1 downto 0); Op_valid: out std_logic); end encoder; architecture behav of encoder is begin with J select S<="00" when "0001", "01" when "0010", "10" when "0100", "11" when "1000", "00" when others; with J select Op_valid<='1' when "0001", '1' when "0010", '1' when "0100", '1' when "1000", '0' when others; end architecture;
Cependant lorsque je suis rendu à l'étape où je dois réaliser le schéma que l'on voit dans la pièce jointe,
ça ne marche pas et je ne comprends pas pourquoi...
Est-ce qu'on pourrait m'aider...![]()
-----