重定义在ModelSim仿真中的便捷实用

前提良好的代码风格习惯,极大地增加了调试效率


部分代码段
RS232_TX文件

module RS232_TX(
                //input....

                //output ....
                );

    parameter Baud_MAX = 16'd5207;
    parameter Start = 1'b0;
    parameter Stop = 1'b1;
    ...
endmodule

RS232_RX文件

module RS232_RX(
                //input ....

                //output ...
                );

    parameter Baud_MAX = 16'd5207;
    parameter Baud_MID = 16'd2603;
    parameter Start = 1'b0;
    parameter Stop = 1'b1;
    .....
endmodule

仿真tb文件

`timescale 1ns/1ps
module UART_FIFO_tb;

    reg clk,rst_n;
    reg rs232_rx;

    wire rs232_tx;
    defparam    UART_FIFO_inst.RS232_RX_inst.Baud_MAX=52;//
    defparam    UART_FIFO_inst.RS232_RX_inst.Baud_MID=26;//
    defparam    UART_FIFO_inst.RS232_TX_inst.Baud_MAX=52;//

    initial clk = 1;
    always #10 clk = ~clk;

    initial begin
        rst_n = 0;
        #200
        rst_n = 1;
    end

    initial begin//调用任务
        rs232_rx <= 1'b1;
        #100
        data_r();   
    end

    reg[7:0]a_mem[7395:0];
    initial begin
    $readmemh("data.txt",a_mem);//相当于初始化a_mem, h为十六进制
    end

    task data_r();//task的嵌套调用
        integer i;
        for(i=0;i<7396;i=i+1)begin
            rx_bit(a_mem[i]);       
        end
    endtask

    task rx_bit(input [7:0]data);
        integer j;
        for(j=0;j<10;j=j+1)begin
            case(j)
                0:  rs232_rx <=1'b0;
                1:  rs232_rx <= data[0];
                2:  rs232_rx <= data[1];
                3:  rs232_rx <= data[2];
                4:  rs232_rx <= data[3];
                5:  rs232_rx <= data[4];
                6:  rs232_rx <= data[5];
                7:  rs232_rx <= data[6];
                8:  rs232_rx <= data[7];
                9:  rs232_rx <= 1'b1;
            endcase
            #1040;
        end
    endtask


    UART_FIFO UART_FIFO_inst(
                        //.....
                        );


endmodule

**defparam UART_FIFO_inst.RS232_RX_inst.Baud_MAX=52;//
defparam UART_FIFO_inst.RS232_RX_inst.Baud_MID=26;//
defparam UART_FIFO_inst.RS232_TX_inst.Baud_MAX=52;//**

在tb中调用任务读取文件,大量的数据,如果不使用重定义参数,我们要看完仿真结果需要等多久….喝杯茶,,,吃点食品,,,估计还在仿真呢
要是在遇到我们修改数据需要重新仿真呢,你还要继续等吗???
大量的时间浪费在等波形…

那我们用重定义后的效果呢
对比一下原数据5207,2603….改变后的数据呢 52,26 …. 相同的时间,跑出来的波形可以自行尝试对比

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值