有关状态机的uart通信问题
时间:10-02
整理:3721RD
点击:
- if(clk_bps) begin
- num 发送起始位
- 4'd1: rs232_tx_r <= tx_data[0]; //发送bit0
- 4'd2: rs232_tx_r <= tx_data[1]; //发送bit1
- 4'd3: rs232_tx_r <= tx_data[2]; //发送bit2
- 4'd4: rs232_tx_r <= tx_data[3]; //发送bit3
- 4'd5: rs232_tx_r <= tx_data[4]; //发送bit4
- 4'd6: rs232_tx_r <= tx_data[5]; //发送bit5
- 4'd7: rs232_tx_r <= tx_data[6]; //发送bit6
- 4'd8: rs232_tx_r <= tx_data[7]; //发送bit7
- 4'd9: rs232_tx_r <= 1'b1; //发送结束位
- default: rs232_tx_r <= 1'b1;
- 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更有用
小梅哥的解释是正确的。