首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于FPGA的通用异步收发器设计

基于FPGA的通用异步收发器设计

串行通信要求的传输线少,可靠性高,传输距离远,被广泛应用于计算机和外设的数据交换。通常都由通用异步收发器(UART)来实现串口通信的功能。在实际应用中,往往只需要UART的几个主要功能,专用的接口芯片会造成资源浪费和成本提高。随着FPGA/CPLD的飞速发展与其在现代电子设计中的广泛应用,FPGA/CPLD功能强大、开发过程投资小、周期短、可反复编程、保密性好等特点也越来越明显。因此可以充分利用其资源,在芯片上集成UART功能模块,从而简化了电路、缩小了体积、提高了可靠性,而且设计时的灵活性更大,周期更短。鉴于此本文提出了一种采用FPGA实现UART功能的方法,可以有效地解决上述问题。
1 UART的工作原理
UART(Universal Asynchronous Receiver Transmitter,通用异步收发器)是广泛使用的异步串行数据传输协议。在串行通信中,数据以字节为单位的字节帧进行传送。发送端和接收端必须按照相同的字节帧格式和波特率进行通信。UART控制器所传输的一帧串行数据包括1位起始位(低电平)、5~8位数据位、1位校验位(可选)和停止位(可为1,1.5,2位)。起始位是字节帧的开始,使数据线处于逻辑0状态,用于向接收端表明开始发送数据帧,起到使发送和接收设备实现同步的功能。停止位是字节帧的终止,使数据线处于逻辑1状态。用于向接收端表明数据帧发送完毕。波特率采用标准速率9 600 b/s。数据在传输时,低位在前,高位在后。接收端检测并确认起始位后,接收数据位。停止
位接收完毕后,向CPU发出中断信号,同时将数据发送到计算机的8位数据总线上;发送数据时,先由CPU设置波特率,然后将8位并行数据加上起始位和停止位发送给外设。停止位发送完毕后,向CPU发出中断信号。在数据发送和接收过程中,CPU可以通过控制信号来读取UART的工作状态,以便进行实时处理。

2 UART的模块化设计
2.1 系统总体结构
在大规模电路的设计中,广泛采用层次化、结构化的设计方法。它将一个完整的硬件设计任务从系统级开始,划分为若干个可操作的模块,编制出相应的模型并进行仿真验证,最后在系统级上进行组合。这样在提高设计效率的同时又提高了设计质量,是目前复杂数字系统实现的主要手段,也是本文设计思想的基础。按照系统功能进行划分,UART主要由波特率发生器、接收模块和发送模块三大部分组成。在Maxp-lusⅡ仿真环境下,由各个子模块进行综合的系统总模块如图1所示。下面分别讨论发送模块、接收模块和波特率发生器模块的具体实现过程。

2.2 发送模块
2.2.1 发送模块及其功能
   
发送模块主要实现对并行数据的缓存、并串转换,并把串行数据按照既定数据帧格式进行输出。发送模块的引脚如图2所示,各引脚功能见表1。


由CPU送来的待发送的并行数据,首先写入发送缓冲器TBR[7..0]。发送缓冲区中有数据待发送时,数据自动装入移位寄存器TSR[7..0]并自动完成串行数据的发送。首先传送一位起始位0,然后根据帧结构中定义的数据长度,分别串行移出TSR[7..0]中的数据,数据的低位在前,高位在后。当没有数据发送的时候,SDO管脚保持高电平。
2.2.2 发送模块功能仿真
发送器功能仿真结果如图3所示。二进制数11110000从引脚DIN[7..0]并行输入,当WRN为0时,启动发送程序,计数器开始计数,使发送器将并行数据锁存到发送缓冲器TBR[7..0],并通过发送移位寄存器TSR[7..0]逐位移位发送串行数据至串行数据输出端SDO。在数据发送过程中用输出信号TBRE,TSRE作为标志信号。当一帧数据由发送缓冲器TBR[7..0]送到发送移位寄存器TSR[7..0]时,TBRE信号为1。由发送数据缓冲器传给发送移位寄存器主要由信号TSRE控制。当TSRE为1时,表示发送移位寄存器TSR[7..0]串行发送完毕;为0时表示还没
有发送完一帧数据。由仿真结果验证了发送模块的正确性。

继承事业,薪火相传
返回列表