合肥工业大学(HFUT)2024计算机组成原理实验3

注:相应的源文件在文末的github链接中

实验三   超前进位加法器的设计与仿真

一.实验要求

1. 在 Vivado 环境下完成对简单电路工作情况的仿真模拟;

2.  完成配置程序的下载,并在 EGO1 开发板上对程序进行最终验证

二.超前进位加法器的实现

源文件

module add_ahead(sum, cout, a, b, cin);

    input [7:0] a,b;    //输入信号a,b

    input cin;          //输入进位信号c

   

    output [7:0] sum;       //输出和

    output   cout;        //  输出进位

   

    wire[7:0] G,P;      //生成和传递信号

    wire[7:0 ] C,sum;   //  进位和输出和

   //计算每一位的G和P c和sum

    assign G[0]=a[0]&b[0];

    assign P[0]=a[0]|b[0];

    assign C[0]=cin;

    assign sum[0]=G[0]^P[0]^C[0];

    assign G[1]=a[1]&b[1];

    assign P[1]=a[1]|b[1];

    assign C[1]=G[0]|(P[0]&cin);

    assign sum[1]= G[1]^P[1]^C[1];

    assign P[2]=a[2]&b[2];

    assign C[2]=G[1]|(P[1]&C[1]);

    assign sum[2]=G[2]^P[2]^C[2];

    assign G[3]=a[3]&b[3];

    assign P[3]=a[3]|b[3];

    assign C[3]=G[2]|(P[2]&C[2]);

    assign sum[3]=G[3]^P[3]^C[3];

    assign G[4]=a[4]&b[4];

    assign P[4]=a[4]|b[4];

    assign C[4]=G[3]|(P[3]&C[3]);

    assign sum[4]=G[2]^P[2]^C[2];

    assign G[5]=a[5]&b[5];

    assign P[5]=a[5]|b[5];

    assign C[5]=G[4]|(P[4]&C[4]);

    assign sum[5]=G[5]^P[5]^C[5];

    assign G[6]=a[6]&b[6];

    assign P[6]=a[6]|b[6];

    assign C[6]=G[5]|(P[5]&C[5]);

    assign sum[6]=G[6]^P[6]^C[6];

    assign G[7]=a[7]&b[7];

    assign P[7]=a[7]|b[7];

    assign C[7]=G[6]|(P[6]&C[6]);

    assign sum[7]=G[7]^P[7]^C[7];

    //计算进位输出

    assign cout=G[7]|(P[7]&C[7]);

激励文件(注意可能需要改变延时时间为自己的学号)

module tb_add_ahead();

   // 输入

   reg [7:0] a;

   reg [7:0] b;

   reg cin;

   // 输出

   wire [7:0] sum;

   wire cout;

   // 调用模块

   add_ahead UUT (

      .sum(sum),

      .cout(cout),

      .a(a),

      .b(b),

      .cin(cin)

   );

   // 初始化

   initial begin

     

      a = 8'b00000000;

      b = 8'b00000000;

      cin = 1'b0;

      #73;    

      a = 8'b11111111;

      b = 8'b00000001;

      cin = 1'b1;    

     

      #73;

      a = 8'b10101010;

      b = 8'b01010101;

      cin = 1'b0;

      #73;

      a = 8'b00110011;

      b = 8'b10001010;

      cin = 1'b0;

      #73;

      a = 8'b001111011;

      b = 8'b10101010;

      cin = 1'b0;

      #73;

      a = 8'b10110011;

      b = 8'b10101010;

      cin = 1'b0;

      #73;

      a = 8'b00010011;

      b = 8'b10101010;

      cin = 1'b0;

     

   end

endmodule

激励图像

三.github仓库链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值