Con riferimento al topic di EXECUTE riguardo la realizzazione o sintesi di una ALU in TTL tecnology,
vi mostro un semplice esempio schematico che ho realizzato con Quartus-II che mostra come è possibile creare ad hoc una semplice ALU 8bit che esegue alcune funzioni artimetiche in modo molto veloce.
L'impostazione dei segnali "S" così come configurati permette alla nostra ALU di effettuare la somma di "A" e "B", il risultato binario viene convertito in BCD usando il listato VHDL allegato ed infine dei semplici convertitori BCD to 7-Seg pilotano dei display (sulla DE-1 Terasic) che ne mostrano il risultato. Come si può l'ingresso "B" è settato a 15 dec, così il valore risultante di partenza con "A"=0 è pari a 15.
Lo schema è molto semplice, chi vuole può provare ad implementarlo anche su una semplice PLD.
- Code: Select all
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
entity binbcd is
port (
B: in STD_LOGIC_VECTOR (7 downto 0);
P: out STD_LOGIC_VECTOR (9 downto 0)
);
end binbcd;
architecture binbcd_arch of binbcd is
begin
bcd1: process(B)
variable z: STD_LOGIC_VECTOR (17 downto 0);
begin
for i in 0 to 17 loop
z(i) := '0';
end loop;
z(10 downto 3) := B;
for i in 0 to 4 loop
if z(11 downto 8) > 4 then
z(11 downto 8) := z(11 downto 8) + 3;
end if;
if z(15 downto 12) > 4 then
z(15 downto 12) := z(15 downto 12) + 3;
end if;
z(17 downto 1) := z(16 downto 0);
end loop;
P <= z(17 downto 8);
end process bcd1;
end binbcd_arch;