实验目的
一、 掌握算术逻辑单元 (ALU) 的功能。
二、 掌握数据通路和控制器的设计方法。
三、 掌握组合电路和时序电路,以及参数化和结构化的Verilog描述方法。
四、 了解查看电路性能和资源使用情况。
五、 利用ALU设计应用器件。
实验环境
Vivado 2019.2 on ubantu20.04
实验步骤
一、 完成ALU模块的逻辑设计和仿真
二、 查看32位ALU的RTL和综合电路图,以及综合电路资源和时间性能报告
三、 完成6位ALU的下载测试,并查看RTL电路图,以及实现电路资源和时间性能报告
四、 完成FLS的逻辑设计、仿真和下载测试
工程文件源代码
https://github.com/windwangustc/USTC
实验过程
一、 ALU模块的逻辑设计和仿真

根据上图的输入输出逻辑真值表,可以很容易的设计出ALU功能模块,代码如下:
module alu #(parameter WIDTH=32)
(
input clk,
input [WIDTH-1:0] a,b,
input [2:0]f,
output reg [WIDTH-1:0] y,
output reg z
);
localparam ADD=0, SUB=1, AND=2, OR=3, XOR=4;
always @(*)
begin
case(f)
ADD: y = a+b;
SUB: y = a-b;
AND: y = a&b;
OR: y = a|b;
XOR: y = a^b;
default:
begin y = 0 ;
z = 1;
end
endcase
if(y) z=0;
else z=1;
end
endmodule
以4位ALU为例进行仿真的结果如下,可以看到加减与或的逻辑结果和时序都正确,Y=0时Z输出1:

32位ALU的RTL:

二、 完成6位ALU的下载测试,并查看RTL电路图

6位ALU的逻辑电路图已经给出了,在原有的ALU上加上寄存器和译码器即可完成电路设计,同时有了寄存器就可以分析时间性能了,代码如下图所示。其中寄存器FABZY都是由module register实例化后得来,之后将这些寄存器同实例化后的ALU和Decoder连线即可。
module alu_6
(
input en,clk,
input [7:0] sw,
output z

该实验旨在掌握ALU功能、数据通路和控制器设计,以及Verilog描述方法。实验内容包括:设计并仿真4位和6位ALU,实现6位ALU的下载测试,以及设计斐波那契数列器(FLS),通过状态机和寄存器实现。所有设计都在Vivado 2019.2上完成,并进行了性能分析。
最低0.47元/天 解锁文章
5480

被折叠的 条评论
为什么被折叠?



