使用FPGA实现算术逻辑单元

介绍

算术逻辑单元,就是一种可以执行算术运算和逻辑运算操作的电路。为了区分电路进行算术运算还是逻辑运算,我是通过一个复用器来实现的。


电路展示

图中,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_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值