计算机组成原理-Verilog实现ALU/斐波那契数列器

该实验旨在掌握ALU功能、数据通路和控制器设计,以及Verilog描述方法。实验内容包括:设计并仿真4位和6位ALU,实现6位ALU的下载测试,以及设计斐波那契数列器(FLS),通过状态机和寄存器实现。所有设计都在Vivado 2019.2上完成,并进行了性能分析。
摘要由CSDN通过智能技术生成

实验目的

一、 掌握算术逻辑单元 (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</
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值