介绍
算术逻辑单元,就是一种可以执行算术运算和逻辑运算操作的电路。为了区分电路进行算术运算还是逻辑运算,我是通过一个复用器来实现的。
电路展示
图中,AU指的是算术单元,LU指的是逻辑单元,可以看到后面有一个复用器,用于区分算术运算还是逻辑运算。
在这里我孩展示一下真值表的,有点懒得做了,emmm大家看代码吧,也很好理解。
设计文件
设计文件可以在一个vhd文件中完成的,我为了让整个设计清晰一些吧,这里采用了模块化的设计,所以会有多个hdl文件。
顶层文件
library ieee;
use ieee.std_logic_arith.all;
use ieee.std_logic_1164.all;
entity alu is
port( a,b : in std_logic_vector(7 downto 0);
sel1 : in std_logic_vector(2 downto 0);
sel : in std_logic;
cin : in std_logic;
output : out std_logic_vector(7 downto 0));
end alu;
architecture alu of alu is
component logical_unite is
port( a,b : in std_logic_vector(7 downto 0);
sel1 : in std_logic_vector(2 downto 0);
outp2 : out std_logic_vector(7 downto 0));
end component logical_unite;
component arith_unite is
port( a,b : in std_logic_vector(7 downto 0);
sel1 : in std_logic_vector(2 downto 0);
cin : in std_logic;
outp1 : out std_logic_