hfffhfh 2024-08-10 11:49 采纳率: 0%
浏览 24

我用verilog写串口通信的接收端,我现在的水平真的找不到问题,能不能请求看到这个帖子的同学给我瞅瞅呀?

我用verilog语言写了一个串口模块,其中

sys_clk是系统时钟;rst_n是复位信号;

rx_data是接收数据的传输线;

rx_reg1和rx_reg2是给rx_data打拍子的第一拍和第二拍;

start是为了检测rx_data下降沿,由rx_reg1和rx_reg2产生的使能信号;

rx_flag是允许信号传输的标志信号;

cnt是计算发送一个bit所需要的时;

cnt_bit是计算rx_flag高电平情况下,一共发送了多少bit;

rx_done是信号发送结束的标志信号,在cnt_bit记到第九位时,rx_done产生一个高电平信号,此时rx_flag拉低,不允许发送数据;

uart_data是要发送的数据,当rx_done拉高的时候,把之前接受的数据发送出去。

img

我对着讲解看了,我检查不出哪里有问题,可是 现在我遇到的问题是:我写的仿真文件里面rx_reg1,rx_reg2,rx_flag,start ,rx_done,全部都是高阻态,而uart_data是未知态,这是怎么回事呢??

下面这个是我的测试文件:

img

下面这个是仿真结果:

img

下面试我想实现的时序结果:

img

  • 写回答

2条回答 默认 最新

  • 老皮芽子 2024-08-10 17:28
    关注

    激励文件的rst_n 信号可能不对
    你试着把激励文件中的19行代码往下移两行,整到initial 的最后

    评论

报告相同问题?

问题事件

  • 创建了问题 8月10日