实验1 算术逻辑运算单元设计【计算机组成原理】
- 前言
- 推荐
- 实验1 算术逻辑运算单元设计
- 一、实验目的
- 二、实验环境
- 三、实验任务
- 四、实验原理与实验步骤
- 1. 实验原理
- 2. 实验步骤
- 五、实验结果:
- 1.运算程序:
- 2.测试程序:
- 3.仿真图
- 4.布局图
- 5.输入输出规划
- 六、心得体会:
- 最后
前言
以下内容源自计组实验
仅供学习交流使用
推荐
实验1 算术逻辑运算单元设计
一、实验目的
- 掌握算术逻辑运算单元的工作原理和基本功能。
- 熟悉Modelsim、ISE\Vivado集成开发环境。
- 熟悉使用FPGA开发板进行设计应用的流程。
二、实验环境
- 装有ModelSim和ISE\Vivado的计算机。
- Sword\Basys3\EGo1实验系统。
三、实验任务
- 用VerilogHDL语言设计实现32位算术逻辑运算单元,在ModelSim上仿真实现。
- 生成FPGA设计文件,下载到实验开发板上验证电路功能。
四、实验原理与实验步骤
1. 实验原理
算术逻辑运算单元(ALU)能够完成较为常用的多种算术运算和逻辑运算,是计算机内部运算器的核心部件,并且被广泛用于信号处理、通信和多媒体信息处理等专用集成电路中。算术逻辑运算单元包括算术运算和逻辑运算,在实际系统中输入数据通常采用补码形式。此次实验的寄存器为32位,即一次运算位宽为32位。算术逻辑运算器的控制信号与MIPS 32位CPU的操作控制字段保持一致。
图1 算术逻辑运算器原理框图
表1 算术逻辑运算功能表
指令功能 | 控制信号func[5:0] | 详细描述 |
add | 100000 | Ra + Rb -> Rd |
sub | 100010 | Ra – Rb -> Rd |
and | 100100 | Ra & Rb -> Rd |
or | 100101 | Ra |
xor | 100110 | Ra ^ Rb -> Rd |
sll | 000000 | Rb << Ra[4:0] -> Rd, 左移。 |
srl | 000010 | Rb >> Ra[4:0] -> Rd, 逻辑右移。 |
sra | 000011 | 算术右移 |
移位运算说明:将寄存器Rb中的32位数据,进行左移或右移(逻辑右移或算术右移)。移位位数由Ra中低5位的数据决定。将移位后的结果写入Rd寄存器中。左移时,右部空出位补零。逻辑右移时,左部空出位补零。算术右移时,左部空出位补符号位(最高位)。例如:
左移 Rb = 32’b0110, Ra = 32’b0001, 则运行结果为Rd = 32’b1100
逻辑右移:Rb = 32’b0110, Ra = 32’b0001, 则运行结果为Rd = 32’0011
算术右移:Rb=32’h8000_0000, Ra=32’b0001, 则运行结果为Rd=32’hc000_0000
2. 实验步骤
(1)用VerilogHDL语言完成对算术逻辑运算单元的建模描述,并完成modelsim下的功能仿真。
(2)在ISE\Vivado综合工具中生成bit文件,并下载FPGA开发板进行测试。可根据情况进行化简,例如选择sw7-sw0给出第一个加数,sw15-sw8给出第二个加数,运算结果在led7-led0显示,进位位和零标志位分别用led15和led14显示。
(4)生成FPGA文档,并下载到实验板上物理运行,检查设计结果。
五、实验结果:
1.运算程序:
2.测试程序:
3.仿真图
4.布局图
5.输入输出规划
六、心得体会:
通过本次实验的学习,
我掌握了算术逻辑运算单元的工作原理和基本功能,
熟悉了Modelsim、ISE\Vivado集成开发环境,
熟悉并使用了FPGA开发板进行设计应用的流程。
最后
这篇博客能写好的原因是:站在巨人的肩膀上
这篇博客要写好的目的是:做别人的肩膀
开源:为爱发电
学习:为我而行