实例四 ALU设计(基于Robei的实验案例)
2.4.1. 本章导读
ALU(算数逻辑单元)是CPU的基本组成部分。设计要求掌握算术逻辑运算加、减操作原理,验证运算器的组合功能。
设计原理
ALU的基本结构如图2-4-1所示。我们所设计的ALU要实现最基本的加减运算,与或非和异或等功能。
(1)加法运算包含2种类型,一种是不带进位的加法器,另外一种是带进位的加法器。不带进位的加法器的公式:
{D,R}=A+B (1)
带进位的可以进行加法器级联,实现更高位数的串行加法运算。带进位的加法器的公式:
{D,R}=A+B+F (2)
(2)减法运算也包含2种类型。不带借位的减法运算:
{D,R}=A-B (3)
带借位的减法运算:
{D,R}=A-B-F (4)
设计要求
设计一个8位ALU,并能实现数据与,或,非,异或,不带进位加法,带进位加法,不带借位减法和带借位减法运算。运算符采用3比特表示。A,B,R 均为8比特数据。用测试文件测试你的ALU功能,并用级联方式将4个8比特的ALU实现32 比特的ALU。
2.4.2. 设计流程
1. ALU模型设计
- 新建一个模型命名为alu,类型为module,同时具备4输入2输出。每个引脚的属性和名称参照图2-4-2进行对应的修改。
图2-4-2 引脚属性
图2-4-3 ALU界面图 - 添加代码。点击模型下方的Code(如图2-4-4所示)添加代码。
图2-4-4 点击Code输入算法
在代码设计区内输入以下Verilog代码:
always @ (A or B or op or F)
begin
case