归一云思
主页网络文摘美文
文章内容页

基于FPGA八位小型ALU的设计

  • 作者: 北极光
  • 来源: 归一文学
  • 发表于2023-11-09
  • 热度20050
  •   陈燕凤
      
      
      摘 要:基于可编程逻辑器件FPGA和硬件描述语言VHDL的8位ALU的设计方法,该ALU单元有四个寄存器,其中三个为数据寄存器,一个为状态寄存器。任意三个数据寄存器均可作为输入操作数(操作数均为补码)和输出操作数。该ALU单元可实现左移、右移、加法、减法、乘法、与、或、非,指令的加载通过仿真代码实现。
      关键词:FPGA;VHDL;ALU;算术逻辑运算
      引言
      目前FPGA技术正处于高速发展时期,新型芯片的规模越来越大,成本也越来越低,低端的FPGA已逐步取代了传统数字元件,高端的FPGA不断在争夺ASIC市场份额。算术逻辑单元ALU应用广泛,是芯片上可编程系统不可缺的一部分,本文利用VHDL语言在FPGA芯片上设计8位算术逻辑运算单元ALU,通过VHDL语言实现ALU的功能,并用MAXPLUSII软件进行仿真。
      一、设计概述
      一种基于可编程逻辑器件FPGA和硬件描述语言的8位的ALU的设计方法。该ALU采用模块设计方法,有寄存器模块、控制模块和显示模块组成,能实现8位无符号数的左移,右移,加,减,乘,与、或、非。该ALU在MAXPLUSII软件环境下进行功能仿真。
      二、设计工作原理
      ALU中包含4个寄存器,其中A,B,C为8位数据寄存器,其中A,B寄存器为输入数据寄存器,C为操作数寄存器。D为状态寄存器。
      输入的第一组数据(运算数),存储在寄存器A中;输入的第二组数据(运算数),存储在B中;数据的第三组数据存储在C中,根据C存储器的数值,决定操作数A,B的运算方式(000->左移,001->右移,010->加法,011->减法,100->乘法,101->与,110->或,111->非)。当C寄存器数据为000,001时,分别对寄存器A,B中的数值进行移位后输出,状态寄存器无变化。当C寄存器数据为101,110,111时,把A,B进行对应与,或,非操作,若运算结果为0,则改变状态寄存器的值为0,若运算结果为非0值,状态寄存器值不变。当C寄存器数据为010,011,100时,把A,B进行对应的加,减,乘运算,当运算结果为0,溢出,负数时,改变状态寄存器数据,否则,状态寄存器数值不变。
      三、设计流程图
      四、仿真实现
      RST功能、复位,RST=0时,各计时器归零,各输出归零。
      时钟CLK_R=200ns
      时钟CLK=200ns
      CNT计时器,用于输入输出及运算的时序控制,6个一循环。
      OPER运算控制000-111分别表示左移,右移,加,减,乘,与,或,非
      SW_A第一个输入数
      SW_B第二个输入数
      LU_OUT运算结果,在CNT计时器计数为3时得出有效结果(当前分别对应复位,左移,右移,加,减,乘,与,或,非)。
      HEX_H和HEX_L分别为运算结果高低位的数码管输出。
      五、总结
      本设计使用MAXPLUSII软件进行仿真,通过仿真结果分析可以看出实现设计要求的功能,此运算器设计充分利用FPGA和VHDL语言的特点实现了ALU功能。随着FPGA技术的发展,VHDL语言在硬件电路设计中,越来越显示出其优势,我们还可根据实际情况制定一个具有灵活性、可靠性和可扩展的,大于八位的ALU。
      参考文献:
      [1]孔哲,王伟基于FPGA的32位ALU的设计与实现[J]信息技术,2013(12)
      [2]张庆玲,杨勇FPGA原理与实践[M]北京航空航天大学出版,2006

      北极光 2016年4期

      本文标题:基于FPGA八位小型ALU的设计

      本文链接:https://www.99guiyi.com/content/470787.html

      • 评论
      0条评论
      • 最新评论

      深度阅读

      • 您也可以注册成为归一的作者,发表您的原创作品、分享您的心情!

      热点阅读