FPGA下UART发送功能学习记录
摘要:
- 跟“小梅哥”学习记录,使用acx720板卡(老版),代码=先自己思考+跟视频修改细节,因而跟原版略有出入。
- 功能:每1s内,板卡向XCOM串口软件发送10位数据(start+SW0-SW7的开关状态+stop),且发送完成后,led翻转。
🎈任务需求

详细时序如下:

注:8位数据发送的总时间远小于1s,led的翻转在剩余的空闲时间中完成。
💃功能分析
1. 输入输出分析
需要一个clk作为同步发送时钟,一个rx引脚保存8位数据,一个tx发送该8位数据给上位机,一个led作为发送标志灯。自然而然,板卡上的SW[7:0]是最好不过的选择。

2. 时序分析
时序:每1s=发送10bit数据(9600b/s)+led翻转+空闲
需2个定时器(定时器考虑使能、计数、清零三要素)。
- 1s定时器:每1s发送一组数据给上位机,无需暂停。
- 波特定时器:1s定时器清零后,开始波特定时器记数。10位数据传输结束后,关闭使能,且led翻转。
- 位逻辑:记数波特定时器溢出次数,一次对应一位。
- led翻转逻辑:波特溢出且次数为10时触发

3. 时序计算
1s定时器:FPGA晶振50MHz=20ns,则1s/20ns=50_000_000。
波特定时器:(1/960)s/20ns

共13位

波形仿真

传输data数据,共花费1.0416ms,即5208次记数。

发送完数据后,在1s记数的空闲时间,led翻转。

本文来自博客园,作者:树上掉下一只鱼,转载请注明原文链接:https://www.cnblogs.com/FishDroppingTree/p/19572902

浙公网安备 33010602011771号