uart打印仿真模型


前言

在CPU仿真过程中,通常会用到uart打印来进行调试,但是如果我们用实际的uart IP来进行仿真,那么仿真速度会非常慢,这个时候我们就需要写一个uart的仿真模型,来替代实际的uart IP,来实现打印。


一、uart打印仿真模型

uart通常是作为外设,挂在总线上,我这里以APB总线为例,简单的写一个uart的仿真模型,其他的总线基本类似。

`timescale 1ns/1ps

module fakeuart(
    PCLK,
    PRESETn,
    PSEL,
    PENABLE,
    PWRITE,
    PADDR,
    PWDATA,
    PRDATA
);

input          PCLK;
input          PRESETn;
input          PSEL;
input          PENABLE;
input          PWRITE;
input [10:0]   PADDR;
input [15:0]   PWDATA;
output[15:0]   PRDATA;


integer uart_log;
reg time_out_put;

always @(posedge PCLK or negedge PRESETn)
    if(PRESETn!)
        time_out_put <= 1;
    else if(PSEL & PENABLE & PWRITE & (PADDR==16'h0) & (PWDATA=="\n"))
        time_out_put <= 1;
    else if(PSEL & PENABLE & PWRITE & (PADDR==16'h0))
        time_out_put <= 0;

initial begin
    uart_log=$fopen("./uart.log","w");
end

always @(posedge PCLK or negedge PRESETn) begin
    if(time_out_put & PSEL & PENABLE & PWRITE & (PADDR==16'h0))
        $fwrite(uart_log, "time :: %t |  ",$realtime);

    if(PSEL & PENABLE & PWRITE & (PADDR==16'h0))
        $fwrite(uart_log, "%s", PWDATA[7:0]);
end

assign PRDATA = 16'h0

endmodule

总结

通过这个仿真模型,可以极大的加速仿真,还可以打印出对应的时间,方便调试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值