数电实验ALU设计

更新时间:2023-11-27 22:05:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数字逻辑设计实验报告

ALU的设计与实现

摘要:

本实验基于vhdl语言设计一个基本的ALU,并使用FPGA完成两个四位二进制数的加、减、乘及左右移位功能,使用软件modelsim进行了仿真波形检验,补充部分为了避免使用PPGA会产生按键抖动,而使用chipscope和开发平台测量ALU的功能。 一.实验目的:

1.熟悉数字电路中流水的概念

2.设计一个基本的ALU,使其具有要求的运算功能 3.进一步熟悉VHDL语言的编程 二.实验要求:

(1) 用FPGA完成两个四位数的加、减、乘及移位功能; (2) 编写ALU的VHDL代码,并通过Modelsim仿真测试; (3) 用chipscope和开发平台测量ALU的功能

三、实验方案及原理: 实验方案:

我们的总体思路就是分别设计出加法、减法、左右移位、乘法部分,最后设计选择器部分来进行运算形式的选择控制。

实验设计难点在于:一是流水的设计,二是乘法器的设计。乘法器的设计比较简单,还是通过加法器来构造,只不过是连线要比以前的复杂一些。

流水的设计是要求在输入输出端口分别设计出一个触发器,达到延时的效果,来实现流水的功能。

实验原理及系统架构:

1)加法器:

加法器的设计要求:实现四位带符号运算。我们设计的思路是为了避免溢出问题,先把输入的4位数扩为五位来考虑。我们通过用五个全加器来实现。

Co=CiA+CiB+AB

仿真结果:

注:结果延时两拍输出

2) 减法器设计只需将被减数转换为其补码然后利用加法器即可。减法时注意-8的运算,a<=ain(3)&ain;b<=not (bin(3)&bin)+\由于带有符号位,所以我们在最后加上了0001。 3)乘法器:

乘法器的设计要求:实现无符号位的乘法运算。我们设计的思路是用全加器阵列实现一个用于四位无符号数的乘法器,将乘数和被乘数代入计算乘积。

4)移位器:

移位器的设计要求对四位输入数据进行左移,右移操作,并按8位输出,我们的设计思路就是对于系统的两个输入,对第一个输入进行移位处理,取第二

个输入的后两位来判断移几位,在预先输入的时候就判定了进行左移还是右移。具体处理,使用case语句对每一种移位进行处理。若是进行右移将是循环移位,将溢出的位数到左边补位。

5).顶层以及控制器的设计:

控制部分

顶层的设计要求是设计一个控制器来决定对输入的数据进行哪种操作,并延时一拍后输出相应的结果。

由输入的控制信号来决定进入下图中六个运算模块中的哪一个,并针对每一个模块设计一个状态机,使输入控制信号时打开相应的模块,并在两拍之后关闭现在以开启的模块(如果这两拍内没有收到打开这个模块控制信号)。我们使用的是触发器的延时来设计状态机。

整体结构 控制器结构图

仿真结果:

四.设计总结:

1.这次ALU的设计,我们收获很大,在设计各个模块的时候,我们和其他同学进行了很多交流,互相交流意见;

2.这次设计,使我们进一步了解了“流水”,“状态机”,“顶层”的概念,为我们以后设计综合数字电路打下了基础;

本文来源:https://www.bwwdw.com/article/y94t.html

Top