数字前端设计——CPU设计(1)

介绍

CPU的流程可分为取指、译码、执行、访存、回写(Instruction Fetch,Decode,Execution,Memory Request,Write Back)五阶段。本实验需要完成了执行阶段的ALU部分,并进行了简单的访存实验。

ALU的设计实验

如图所示,给出一个具有N位输入和N位输出的算术逻辑单元。此单元接收控制信号F,执行对应功能后,得到N位输出;

F2:0功能
000A + B
001A - B
010A & B
011A OR B
100~A
101SLT
110NULL
111NULL

ALU的实验要求

      1、根据ALU原理图,使用verilog语言定义ALU模块,其中给输入输出端口参考实验原理,运算指令码长度[2:0];
      2、内置一个32位num2(32h‘01)输入到A口;
      3、将输入到B口的8位num1扩展至32位(sw1-sw7),作为B口的输入;
      4、运算器支持”加、减、与、或、非“5种操作,输入控制信号F(op[2:0]);
      5、验证表1中所有功能;

module alu_assign(
    input wire [31:0] a,
    input wire [7:0] b,
    input wire [2:0] f,
    output wire [31:0] s,
    output wire overflow
    );

    wire [31:0] Sign_extend;
    assign Sign_extend={{24{1'b0}},b[7:0]};

    assign overflow = 1'b0;
    assign s = (f == 3'b000) ? (a + Sign_extend):
            (f == 3'b001) ? (a - Sign_extend):
            (f == 3'b010) ? (a & Sign_extend):
            (f == 3'b011) ? (a | Sign_extend):
            (f == 3'b100) ? (~ a):
            (f == 3'b101) ? (a < Sign_extend):
            32'b0;

endmodule

这篇笔记参考网上众多资料实验并整理而成,如果涉及侵权烦请请告知,我将第一时间处理。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字ic攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值