算术逻辑单元(ALU)的VHDL代码

此项目是算术逻辑单元(ALU)的VHDL代码。算术逻辑单元(ALU)是CPU中最重要的数字逻辑组件之一。 它通常执行逻辑和算术运算,例如加法,减法,乘法,除法等。ALU中实现的逻辑和算术运算如下:1.算术加法ALU_Out = A + B;2.算术减法ALU_Out = A-B;3.算术乘法ALU_Out = A * 等等。了解更多请下载附件。

应用介绍

此项目是算术逻辑单元(ALU)的VHDL代码。

算术逻辑单元(ALU)是CPU中最重要的数字逻辑组件之一。 它通常执行逻辑和算术运算,例如加法,减法,乘法,除法等。

在VHDL中设计并实现了ALU。 完整介绍了ALU的VHDL代码。

aLU1.png

ALU中实现的逻辑和算术运算如下:

1.算术加法

ALU_Out = A + B;

2.算术减法

ALU_Out = A-B;

3.算术乘法

ALU_Out = A * B;

4.算术除法

ALU_Out = A / B;

5.逻辑左移

ALU_Out =逻辑左移1;

6.逻辑右移

ALU_Out =逻辑右移1;

7.向左旋转

ALU_Out =向左旋转1;

8.向右旋转

ALU_Out =向右旋转1;

9.逻辑与

ALU_Out = A和B;

10.逻辑或

ALU_Out = A或B;

11.逻辑异或

ALU_Out = A XOR B;

12.逻辑或非

ALU_Out = A NOR B;

13.逻辑与非

ALU_Out = A NAND B;

14.逻辑XNOR

ALU_Out = A XNOR B;

15.大的比较

如果A> B,则ALU_Out = 1否则为0;

16.平等比较

ALU_Out = 1 A = B否则为0;

附件中包括:ALU的VHDL代码、ALU的Testbench VHDL代码。

本人在下方展示了ALU的VHDL代码;想了解更多请下载附件。

-- fpga4student.com: FPGA Projects, Verilog projects, VHDL projects 
-- VHDL code for ALU
-- @fpga4student
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use ieee.NUMERIC_STD.all;
-----------------------------------------------
---------- ALU 8-bit VHDL ---------------------
-----------------------------------------------
entity ALU is
  generic ( 
     constant N: natural := 1  -- number of shited or rotated bits
    );
  
    Port (
    A, B     : in  STD_LOGIC_VECTOR(7 downto 0);  -- 2 inputs 8-bit
    ALU_Sel  : in  STD_LOGIC_VECTOR(3 downto 0);  -- 1 input 4-bit for selecting function
    ALU_Out   : out  STD_LOGIC_VECTOR(7 downto 0); -- 1 output 8-bit 
    Carryout : out std_logic        -- Carryout flag
    );
end ALU; 
architecture Behavioral of ALU is
signal ALU_Result : std_logic_vector (7 downto 0);
signal tmp: std_logic_vector (8 downto 0);
begin
   process(A,B,ALU_Sel)
 begin
  case(ALU_Sel) is
  when "0000" => -- Addition
   ALU_Result <= A + B ; 
  when "0001" => -- Subtraction
   ALU_Result <= A - B ;
  when "0010" => -- Multiplication
   ALU_Result <= std_logic_vector(to_unsigned((to_integer(unsigned(A)) * to_integer(unsigned(B))),8)) ;
  when "0011" => -- Division
   ALU_Result <= std_logic_vector(to_unsigned(to_integer(unsigned(A)) / to_integer(unsigned(B)),8)) ;
  when "0100" => -- Logical shift left
   ALU_Result <= std_logic_vector(unsigned(A) sll N);
  when "0101" => -- Logical shift right
   ALU_Result <= std_logic_vector(unsigned(A) srl N);
  when "0110" => --  Rotate left
   ALU_Result <= std_logic_vector(unsigned(A) rol N);
  when "0111" => -- Rotate right
   ALU_Result <= std_logic_vector(unsigned(A) ror N);
  when "1000" => -- Logical and 
   ALU_Result <= A and B;
  when "1001" => -- Logical or
   ALU_Result <= A or B;
  when "1010" => -- Logical xor 
   ALU_Result <= A xor B;
  when "1011" => -- Logical nor
   ALU_Result <= A nor B;
  when "1100" => -- Logical nand 
   ALU_Result <= A nand B;
  when "1101" => -- Logical xnor
   ALU_Result <= A xnor B;
  when "1110" => -- Greater comparison
   if(A>B) then
    ALU_Result <= x"01" ;
   else
    ALU_Result <= x"00" ;
   end if; 
  when "1111" => -- Equal comparison   
   if(A=B) then
    ALU_Result <= x"01" ;
   else
    ALU_Result <= x"00" ;
   end if;
  when others => ALU_Result <= A + B ; 
  end case;
 end process;
 ALU_Out <= ALU_Result; -- ALU out
 tmp <= ('0' & A) + ('0' & B);
 Carryout <= tmp(8); -- Carryout flag
end Behavioral;

文件列表(部分)

名称 大小 修改日期
算术逻辑单元(ALU)的VHDL代码 (附件).txt1.35 KB2020-04-05
aLU1.png30.01 KB2020-04-05
image10.00 KB2020-04-05

立即下载

相关下载

[算术逻辑单元(ALU)的Verilog代码] 此项目是算术逻辑单元(ALU)的Verilog代码。上一次,在VHDL中设计并实现了算术逻辑单元(ALU)。 提出了用于ALU的完整VHDL代码。现在,apollocode提供了ALU的Verilog代码。 还提供了用于ALU的testbench Verilog代码以进行仿真。附件中包括:ALU的Verilog代码、ALU的Testbench Verilog代码、ALU的仿真波形。了解更多请下载附件。
[算术逻辑单元(ALU)的VHDL代码] 此项目是算术逻辑单元(ALU)的VHDL代码。算术逻辑单元(ALU)是CPU中最重要的数字逻辑组件之一。 它通常执行逻辑和算术运算,例如加法,减法,乘法,除法等。ALU中实现的逻辑和算术运算如下:1.算术加法ALU_Out = A + B;2.算术减法ALU_Out = A-B;3.算术乘法ALU_Out = A * 等等。了解更多请下载附件。
[全加法器的VHDL代码] 此项目是全加法器的VHDL代码。在此VHDL项目中,提供了用于全加器的VHDL代码。 用于加法器的VHDL代码是通过使用行为和结构模型来实现的。全加法器具有三个输入X1,X2,进位Cin和两个输出S,进位Cout。附件中包括:使用结构模型的完整加法器的VHDL代码、使用行为模型的全加法器的VHDL代码。如想了解的更多请下载附件。
[D触发器的VHDL代码] 此项目是D触发器的VHDL代码。该项目介绍了D型触发器的VHDL代码。  D触发器有几种类型,例如高级异步复位D触发器,低级异步复位D触发器,同步复位D触发器,上升沿D触发器,下降沿D触发器。 触发器,在此VHDL项目中的VHDL中实现。附件中包括:上升沿D型触发器的VHDL代码、具有同步复位的上升沿D触发器的VHDL代码、具有异步复位高电平的上升沿D触发器的VHDL代码等等。了解更多请下载附件。
[FIFO存储器的VHDL代码] 此项目是FIFO存储器的VHDL代码。FIFO具有16个8位数据宽度级和五个状态信号,包括上溢,下溢,空,满和阈值。 通过在Xilinx ISIM上进行混合语言仿真,使用相同的Verilog测试平台代码验证FIFO存储器的VHDL代码。通过观察可以很容易地看到如何将数据写入FIFO以及如何从FIFO读取数据。 值得注意的是,状态信号(例如上溢,下溢,空,满)对于确定FIFO的正确性至关重要。
[8位比较器的VHDL代码] 此项目是8位比较器的VHDL代码。这项目介绍了一个8位比较器的VHDL代码。 74F521是一个8位身份比较器,如果两个8位输入匹配,它将提供低电平输出。此附件包括:真值表和比较器的符号【真值表、比较器的逻辑符号、逻辑图(来自74L521的数据表)】;比较器的VHDL代码;比较器的Testbench VHDL代码;比较器的仿真波形。

评论列表 共有 0 条评论

暂无评论

微信捐赠

微信扫一扫体验

立即
上传
发表
评论
返回
顶部