ALU in VHDL - come si può descrivere ?

Sezione dedicata al linguaggio di descrizione hardware per logiche programmabili

ALU in VHDL - come si può descrivere ?

Postby execute » 10 Jan 2013, 22:50

Ciao a tutti,

come va?, intanto buon anno a tutti anche se in ritardo.

non so se avete letto su altra sezione: sto cercando di realizzare una semplice cpu con relativa alu utilizzando solamente integrati TTL.

ovviamente cercando sulla rete mi sono imbattuto su architetture di tutti i tipi e su alu realizzate e scritte in VHDL (che sto iniziando a studiare).

domanda. come si può descrivere una semplice alu 8bit in vhdl che possa eseguire le funzioni principali sia aritmetiche che booleane?

qualcuno potrebbe mostrarmi un esempio di codice?

vi ringrazio tanto.
execute
 
Posts: 13
Joined: 19 Dec 2012, 10:07

Re: ALU in VHDL - come si può descrivere ?

Postby deluca » 16 Jan 2013, 22:04

ti mostro un semplice codice per descrivere una alu a 8bit:

Code: Select all
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;

entity simple_alu is
port(A,B : in  signed(3 downto 0);   -- input operands
      Op : in  unsigned(2 downto 0); -- Operation to be performed
       R : out signed(3 downto 0)    -- output of ALU
       );
end simple_alu;

architecture Behavioral of simple_alu is

  signal Reg1 : signed(3 downto 0) := (others => '0');
  signal Reg2 : signed(3 downto 0) := (others => '0');
  signal Reg3 : signed(3 downto 0) := (others => '0');
 
begin

alu:process(op,Reg1,Reg2,Reg3)

begin
    case Op is
             when "000" => Reg3 <= Reg1 + Reg2;    -- somma
             when "001" => Reg3 <= Reg1 - Reg2;    -- sottrazione
             when "010" => Reg3 <= Reg1 + 1;       -- incr
             when "011" => Reg3 <= Reg1 - 1;       -- decr       
             when "100" => Reg3 <= not Reg1;       -- NOT R1
             when "101" => Reg3 <= Reg1 and Reg2; --  AND R1 R2
             when "110" => Reg3 <= Reg1 or Reg2;  --  OR  R1 R2                 
             when "111" => Reg3 <= Reg1 xor Reg2;  -- XOR R1 R2
             
             when others => NULL;
    end case;           
end process;   

 Reg1 <= A;   
 Reg2 <= B;   
 R <= Reg3;   

end Behavioral;
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: ALU in VHDL - come si può descrivere ?

Postby execute » 20 Jan 2013, 17:26

grazie deluca per il codice, proverò ad interpretarlo visto che ancora mastico pochissimo vhdl.

nel codice vedo descritta una alu che può fare un certo numero di operazioni aritmetiche e manipolazioni booleane.

non vedo nè la moltiplicazione, nè la divisione; domanda : come mai? non dovrebbe essere semplice a questo punto implementare anche queste operazioni ?

c'è un nesso allora con il fatto che molti microcontrollori non supportano la moltiplicazione e la divisione hardware e tutto è affidato al compilatore ? è veramente così difficile?

grazie
execute
 
Posts: 13
Joined: 19 Dec 2012, 10:07


Return to VHDL x FPGA

Who is online

Users browsing this forum: No registered users and 2 guests

cron