微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 有关状态机的uart通信问题

有关状态机的uart通信问题

时间:10-02 整理:3721RD 点击:
                     

  1. if(clk_bps)        begin
  2.                                         num 发送起始位
  3.                                                 4'd1: rs232_tx_r <= tx_data[0];        //发送bit0
  4.                                                 4'd2: rs232_tx_r <= tx_data[1];        //发送bit1
  5.                                                 4'd3: rs232_tx_r <= tx_data[2];        //发送bit2
  6.                                                 4'd4: rs232_tx_r <= tx_data[3];        //发送bit3
  7.                                                 4'd5: rs232_tx_r <= tx_data[4];        //发送bit4
  8.                                                 4'd6: rs232_tx_r <= tx_data[5];        //发送bit5
  9.                                                 4'd7: rs232_tx_r <= tx_data[6];        //发送bit6
  10.                                                 4'd8: rs232_tx_r <= tx_data[7];        //发送bit7
  11.                                                 4'd9: rs232_tx_r <= 1'b1;        //发送结束位
  12.                                                  default: rs232_tx_r <= 1'b1;
  13.                                                 endcase

复制代码


这个特权同学的一段代码,看代码感觉没有发送起始位,但是仿真时通过的。哪位大神指导下

亲,第四行,当num==0的时候,发送了数据位0,那么根据UART的协议,该位即为起始位啊。特权在注释中也写得很清楚的啊。
http://wenku.baidu.com/link?url= ... A13Vz0lD5a6Xm8FRvHm
起始位:先发出一个逻辑“0”的信号,表示传输字符的开始。

问题在这里,上面的程序是不会出现发送0的吧?begin...end里面顺序执行,应该是num++,直接跳过发送0了吧

问题在这里,上面的程序是不会出现发送0的吧?begin...end里面顺序执行,应该是num++,直接跳过发送0了吧

这个就是时序逻辑的特点了,如果你不能理解,就请参看Verilog语法书中关于时序逻辑非阻塞赋值语句中的相关讲解。明确告诉你,这个是会执行的,这与C语言有本质的区别。

非阻塞赋值,已经明白了,谢了

我的uart波形仿真总是出错啊

请问您的uart实现了吗  实现的帮我发一下参考一下啊  1805815464@qq.com 谢谢了

刚看到,马上发给你

恩已经收到了  谢谢啊 我想只用quartusII直接进行波形仿真 不用testbench 请问一下应该怎么弄

hedh ,学习学习,够细心的

只用quartus直接仿真,我只知道要自己画波形,感觉很麻烦,建议还是不要这样做了,直接学TB更有用

小梅哥的解释是正确的。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top