计组第一次实验 定点加法

新建工程

设备选择中 family选择Artix 7 package选择fbg676 型号为:xc7a200tfbg676-2

添加加法器程序

`timescale 1ns / 1ps
module adder(
        input [31:0] operand1,
        input [31:0] operand2,
        input        cin,
        output [31:0] result,
        output cout
    );
    assign {cout,result} = operand1+operand2+cin;
endmodule
  • 两个32位操作数输入和一个进位信号输入
  • 一个32位结果输入和一位进位信号输出

进行仿真

添加仿真文件

`timescale 1ns / 1ps   //仿真单位时间为1ns,精度为1ps
module testbench;

    // Inputs
    reg [31:0] operand1;
    reg [31:0] operand2;
    reg cin;

    // Outputs
    wire [31:0] result;
    wire cout;
    // Instantiate the Unit Under Test (UUT)
    adder uut (
        .operand1(operand1), 
        .operand2(operand2), 
        .cin(cin), 
        .result(result), 
        .cout(cout)
    );
    initial begin
        // Initialize Inputs
        operand1 = 0;
        operand2 = 0;
        cin = 0;
        // Wait 100 ns for global reset to finish
        #100;
        // Add stimulus here
    end
    always #10 operand1 = $random;  //$random为系统任务,产生一个随机的32位数
    always #10 operand2 = $random;  //#10 表示等待10个单位时间(10ns),即每过10ns,赋值一个随机的32位数
    always #10 cin = {$random} % 2; //加了拼接符,{$random}产生一个非负数,除2取余得到0或1
endmodule

目的是进行一个随机模拟输入信号,以验证程序正确

进行仿真

点击 Run simulation 可以看到波形图,右键信号源可更改颜色和数制等

添加外围模块

到板子上需要用触摸屏显示,所以需要加一个触摸屏模块,并将输入输出信号与之联系起来