文章正文

诗词 散文 小说 杂文 校园 文苑 历史 人物 人生 生活 幽默 美文 资源中心小说阅读归一云思

基于FPGA八位小型ALU的设计

时间:2023/11/9 作者: 北极光 热度: 19923
  陈燕凤
  
  
  摘 要:基于可编程逻辑器件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期
赞(0)


猜你喜欢

推荐阅读

参与评论

0 条评论
×

欢迎登录归一原创文学网站

最新评论