UART(串口)收发模块设计.doc

上传人:白大夫 文档编号:3274393 上传时间:2019-08-07 格式:DOC 页数:2 大小:15KB
返回 下载 相关 举报
UART(串口)收发模块设计.doc_第1页
第1页 / 共2页
亲,该文档总共2页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《UART(串口)收发模块设计.doc》由会员分享,可在线阅读,更多相关《UART(串口)收发模块设计.doc(2页珍藏版)》请在三一文库上搜索。

1、UART(串口)收发模块设计UART(串口)收发模块设计- 02整体架构回顾整体结构如下图,整个UART有两个大模块,一个接收模块,一个发送模块。具体大家可以回顾文章UART(串口)收发模块设计- 01。波特率时钟产生模块收发模块里面都有一个波特率时钟产生模块BuadRate_set,用于将系统时钟clk进行分频,得到波特率时钟Buad_clk,以控制数据的收发。端口如下,通过CLK_Period指定当前的clk时钟频率,比如50M,则为50000000。Buad_Rate为设定的波特率。主要设计代码如下,通过localparam DIV_PEREM指定分频计数值。分频计数器为cnt,当ena

2、ble为高时,cnt开始循环的从0递增到DIV_PEREM。Buad_clk在每次cnt=DIV_PEREM的时候就翻转一次,从而得到clk时钟的CLK_Period/Buad_Rate倍分频。数据接收模块状态机:数据接收模块通过一个状态机来控制。状态机的跳转由波特率时钟下降沿控制。波特率时钟Buad_clk起始为高电平。IDLE:其中IDLE为空闲状态,只有当检测到起始位的时候,才进入GET_DATA。GET_DATA:在GET_DATA状态下获得8位数据位数据,通过一个计数器来计数接收到的数据位数。当cnt为d7时表明接收到了8位数据,便跳到最后一个状态END_BIT。END_BIT:等待

3、停止位的到来,然后回到IDLE状态,完成数据的接收。起始位的检测:其实就是在IDLE状态下,检测uart_rx的下降沿,如下代码所示。将uart_rx通过一个6bit的移位寄存器get_start_bit(uart_rx从低bit往高bit移动),那么当get_start_bit的,高3bit都为1,低3bit为0时,表明uart_rx出现了下降沿,此时将start拉高,以便启动状态机和波特率时钟产生模块BuadRate_set。数据的接收:在GET_DATA状态下,由波特率时钟的下降沿控制,将uart_rx往一个8bit的移位寄存器送,uart_rx从高bit向低bit流动(由于串口发送是先

4、发低位数据)。数据发送模块状态机:数据接收模块通过一个状态机来控制。状态机的跳转由clk时钟上升沿控制。IDLE:IDLE为空闲状态,当检测到tx_en(发送使能信号)为高,则进入EN_TX模块。EN_TX:在EN_TX模块发送10bit数据(起始位,数据位,停止位)。数据的发送由波特率时钟Buad_clk上升沿控制。如下代码,在cnt为0时将tx_data(待发送的数据位)与起始位(0),装载到data_to_send中,然后对data_to_send做从高位向低位的移位操作,高位填1。将data_to_send的最低位接uart_tx,发送出去。利用cnt计数发送的位数。上板实测这里设计了一个实测设计(UART_TEST),功能如下:上电复位后,通过串口向上位机发送数据8h34,然后只要收到上位机发送过来的数据,就将其返回给上位机。大家可以把源码下下来,自己新建工程,结合开发板上板测试一下。文件里面提供了一个PC端串口调试上位机SSCOM。大家在上板测试时,需要一个USB转串口器(有的开发板上集成了这个),使得板子的串口可以通过USB端口与PC上位机通信。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1