用V e r i l o g实现一个简单ALU(组合逻辑)

实验名称:

用V e r i l o g实现一个简单ALU。(组合逻辑)

实验目的:

学生通过用V e r i log实现简单的ALU,熟悉硬件描述语言Verilog的基本语法和ALU相关概念,为用Verilog实现CPU和计算机组成的学习打下基础。

实验描述:

输入:两个4位二进制数,代表两个操作数A,B;一个3位控制信号operation,代表ALU要进行的运算。本实验中,ALU可以实现4种运算:

输出:4位结果,1位进位

实验分析:

实现四种运算,与、或、异或、同或。

a&b a|b a^b ~(a^b)

代码如下:

复制代码
`timescale 1ns / 1ps

module new(

            a,

            b,

            c,

            d,

            y

            );

    input a;

    input b;

    input c;

    input d;

    output y;

    reg y;

    always@(a or b or c or d)begin

        if(c==0)begin

            if(d==0)begin

            y<=a&b;

            end

            else begin

            y<=a^b;

            end

         end

         else begin

            if(d==0)begin

            y<=~(a^b);

            end

            else begin

            y<=a|b;

            end

         end

    end

endmodule

testbench代码进行仿真测试:

复制代码
`timescale 1ns / 1ps

module test();

   reg a,b,c,d;

   wire y;

   

   new tsh(

       .a(a),

       .b(b),

       .c(c),

       .d(d),

       .y(y)

       );

       

   initial begin

       a=0;b=0;c=0;d=0;

       # 20;

       a=0;b=0;c=0;d=1;

       # 20;

       a=0;b=0;c=1;d=0;

       # 20;

       a=0;b=0;c=1;d=1;

       # 20;

       a=0;b=1;c=0;d=0;

       # 20;

       a=0;b=1;c=0;d=1;

       # 20;

       a=0;b=1;c=1;d=0;

       # 20;

       a=0;b=1;c=1;d=1;

       # 20;

       a=1;b=0;c=0;d=0;

       # 20;

       a=1;b=0;c=0;d=1;

       # 20;

       a=1;b=0;c=1;d=0;

       # 20;

       a=1;b=0;c=1;d=1;

       # 20;

       a=1;b=1;c=0;d=0;

       # 20;

       a=1;b=1;c=0;d=1;

       # 20;

       a=1;b=1;c=1;d=0;

       # 20;

       a=1;b=1;c=1;d=1;

       # 20;

       $finish;

   end

endmodule

运行结果:

相关推荐
szxinmai主板定制专家1 小时前
RK3568+FPGA+CODESYS异构控制方案:赋能半导体设备与工业自动化升级
人工智能·fpga开发·自动化·rk3576·半导体设备
辰丁电子3 小时前
allegro入门教程-菜单栏Logic
fpga开发·pcb设计·pcb工艺·layout·pcb layout
FPGA小徐21 小时前
数字IC/FPGA设计基础_ILA原理与使用
fpga开发
FPGA小徐1 天前
FPGA 部署 YOLO 完整指南:从模型量化到 Zynq PS+PL 硬件加速
yolo·fpga开发
dadaobusi1 天前
学习:chiesel,scala
学习·fpga开发·scala
爱吃汽的小橘1 天前
异步FIFO核心揭秘:格雷码与指针同步
fpga开发
璞致电子1 天前
基于 P201Pro | 接收端基础知识——Costas环锁定后为何仍会错?DQPSK与前导码相位校正(6)
经验分享·fpga开发·ad9361·软件无线电·sdr·qpsk·pzsdr
璞致电子2 天前
基于 AD9361 (PZSDR‑P201Pro) 软件无线电实战综述:从板卡选型、硬件平台升级到 GNU Radio QPSK 完整收发链路
经验分享·嵌入式硬件·fpga开发·软件无线电·sdr·璞致电子
炎龙铠甲会合体2 天前
从 SPEC 到上板:在 Zynq-7020 上用 RTL 手写一个 YOLO 卷积加速器(完整教程)
yolo·fpga开发·axi·芯片验证
FPGA小徐2 天前
Vivado 按键消抖与复位模块代码修复详解:KEY_TOP、key、rst_gen 完整实战
fpga开发