目录
当UART完成了模块分解和输出之后,就可以开始设计逻辑了,设计好了再写代码!!!!
还是先从外围模块开始,UART_TX模块的功能比较简单,将多bit数据按照波特率解构成单bit发送到tx上即可。
由于tx端每一拍的数据都不同,即当前tx输出会与之前tx_data有关,因此输出输入是时序逻辑关系,此处使用状态机进行设计。
状态设计两种:IDLE和TRANS。咱先用语言描述每个状态要干啥 以及状态转移条件,再翻译成时序图,最终形成代码
IDLE状态下,一直等待要发送的数据出现,出现了就转入TRANS状态
TRANS状态下,将待发送的数据按照帧格式和波特率单bit发送,发完了转回IDLE。
状态转换图如下:

1. IDLE:等待并数据到来
IDLE状态什么都不用做,只需找到一个条件判断有待发送数据即可进入TRANS状态。
1.1. valid&ready 的Slave写握手
UART_TX的接口都给出了tx_data、tx_data_valid和tx_ready,摆明了告诉你将UART_TX当作Slave通过写握手判断数据到来。
本文详细介绍了UART_TX模块的逻辑设计,包括基于valid&ready的Slave写握手和基于异步FIFO的Master读握手。在IDLE状态等待数据,TRANS状态进行并串转换,利用状态机实现UART的数据发送。同时,讨论了如何通过异步FIFO提高效率,并提供了相应的状态机时序图和代码实现。
订阅专栏 解锁全文
2029

被折叠的 条评论
为什么被折叠?



