基于FPGA的UART接口开发

2008-10-29 11:51:43来源: 互联网

  设计背景

  串口即通用异步收发器(UART,Universal Asynchronous Receiver Transmitter)。串行通信具有传输线少、成本低、可靠性高等优点,所以系统间互联常采用RS-232接口方式,一般该接口由UART 专用芯片来实现。但UART接口芯片一般引脚较多,内含许多辅助模块和一些辅助功能,在实际使用时往往用不到这些功能,因此若采用UART专用芯片,必将使电路变得复杂,PCB面积增大,从而导致成本增加,系统的稳定性和可靠性降低。基本的UART通信只需要两条信号线(RXD和TXD),接收与发送是全双工形式,其中TXD是UART的发送端, RXD是UART的接收端。由于FPGA的功能日益强大,开发周期短、可重复编程等优点也越来越明显,可以在FPGA芯片上集成UART功能模块,从而简化电路,缩小PCB面积,提高系统可靠性。此外,FPGA的设计具有很高的灵活性,可以方便地进行升级和移植。

  设计要求

  本接口作为一个关于内容保护系统的电路板的一部分,主要用于和计算机进行通信,也可与其他带UART接口的电路板进行通信。对数据传输速率要求不高,传输距离也不要求很长,但传输数据要求准确可靠。该接口可用来监控电路内部状态,将FPGA内部信息通过串口输出至计算机,以达到辅助调试电路的目的。另外,电路板上的FPGA外挂有串行Flash,可通过串口对Flash进行调试,将Flash中的数据输出至计算机,并可将数据通过串口写入Flash中。简而言之,该接口是作为计算机与电路板的一个可靠的双向数据传输通道。

  UART的实现原理

  UART是异步通信方式,通信的发送方和接收方各自有独立的时钟,传输的速率由双方约定。本设计采用最常用的每秒9600波特的传输速度。

  UART的通信协议十分简单,以低电平作为起始位,高电平作为停止位,中间可传输5~8比特数据和1比特奇偶校验位,奇偶校验位的有无和数据比特的长度由通信双方约定。一帧数据传输完毕后可以继续传输下一帧数据,也可以继续保持为高电平,两帧之间保持高电平,持续时间可以任意长。本方案采用不添加校验位的方法,以提高数据传输效率。发送端发送数据时先发一低电平,然后发送8比特数据,之后马上把信号拉高,从而完成一帧数据传送。接收端接收到低电平时开始计数,然后接收8比特信息位后如果检测到高电平即认为已接收完一帧数据,继续等待下一帧起始信号低电平的到来,若接收完8比特数据后没有检测到高电平则认为这不是一帧有效数据,将其丢弃,继续等待起始信号。时序关系如图1所示,收发可同时进行,互不干扰。

基于FPGA的UART接口开发

  图1 RS-232接口的工作时序

  硬件电路原理图及说明

  一个完整的RS-232接口是一个25针的D型插头座,25针的连接器实际上只有9根连接线,所以就产生了一个简化的9针D型RS-232插头座,常用的就是一个9针的D型插头座。通常只用到一根发送信号线、一根接收信号线和一条地线,其余的振铃指示、请求传送、清除传送、准备就绪及数据载波检测等线可以做悬空处理。

  RS-232标准规定逻辑1的电平为 -15~-3V,逻辑0的电平为+3~+15V。CMOS电路的电平范围一般是从0V到电源电压,FPGA的I/O输入输出电压通常为0~3.3V,为了与FPGA 供电电压保持一致,必须加电平转换芯片。选用Maxim公司的MAX3232电平转换芯片,电路原理图如图2所示。

基于FPGA的UART接口开发

  图2 RS-232接口电路

  连线采用最简单的3 线制连接模式,即只需要两根信号线和一根地线来完成数据收发。而FPGA 只需要选择两个普通I/O引脚分别与接口芯片MAX3232 对应引脚T2IN、R2OUT相连即可完成将串口电平转换为设备电路板的工作电平,即实现RS-232电平和TTL/ CMOS 电平的转换。一个MAX3232芯片可以支持两个串口的电平变换,我们选择其中的一组接口,图中的4个电阻可以省去。在电路中加入了0Ω的跳线电阻,是为了在这组接口出故障时可以方便地跳线,使用另一组接口。

  软件设计

  异步收发器由波特率发生器、UART接收器和UART发送器三个模块构成。采用的是每秒9600波特的传输速度,而系统提供的时钟是10MHz,这就要求进行速率变换。在实际中由于电路中存在干扰等因素,在数据边缘进行采样容易发生误判,只有在数据的中央进行采样出错的概率才能降到最低,所以使用16倍于波特率的时钟,即9600×16Hz=15600Hz。因此波特率发生器输出的时钟频率应为15600Hz,UART 收发的每一个数据宽度都是波特率发生器输出的时钟周期的16倍,采用Altera公司芯片内部自带的锁相环可以方便地实现。UART接收器和UART发送器均采用Verilog语言编程实现。

  通常使用的数据多为并行数据,为了方便与系统中其他电路互连,UART接收器的输出数据和UART发送器的输入数据均为8比特并行数据。UART接收器将串行数据接收下来并将其转化为并行数据送出,UART发送器将输入的并行数据转换为串行数据并按照UART的帧格式输出。

基于FPGA的UART接口开发

  图3 UART接收器符号图

  图3为UART接收器的符号图,其中rst为全局复位信号,rxd为串行数据输入端,baudClk16x为输入时钟,dataOut[7..0]为并行数据输出口,irq为输出数据的指示信号。首先接收器等待起始位的到来,在每个时钟上升沿检测输入数据是否为低电平,若检测到低电平,则开始计数,如果连续8个时钟内输入数据均为低电平,则认为起始信号有效,其中若有一次采样得到的为高电平则认为起始信号无效,返回初始状态重新等待起始信号的到来。认定起始信号有效后,每隔16个时钟采样一次,这样就可以保证每次都在数据的中点出采样,将采样结果送入8比特的移位寄存器,8比特数据采样结束后,间隔16个时钟采样停止位。如果采得的是高电平,则认为这帧数据有效,将移位寄存器中的数据并行送出同时将输出数据的指示信号置高,然后接收器复位,重新等待下一帧的到来;若采得的为低电平,则认为这不是一帧有效数据,不将移位寄存器中的数据输出,直接返回初始状态。

基于FPGA的UART接口开发

  图4 UART发送器符号图

  图4 为UART发送器的符号图,其中flag为输入数据指示信号,rst为全局复位信号,clkin为输入时钟,din[7..0]为并行数据输入端,tdo为串行数据输出端。接收器在每个时钟的上升沿检测输入数据指示信号,若检测到其为高电平,则将并行输入数据锁存入内部的8比特移位寄存器,接下来先送出一个低电平并保持16个时钟,然后每隔16个时钟将移位寄存器中的数据移出一位,最后送出高电平,返回初始状态。

  系统调试

  UART接收器和发送器可根据实际需要单独使用,但在调试时为了方便,将两者对接起来,如图5所示。UART接收器的输出与UART发送器的输入相连,复位信号和时钟信号共用,时钟信号由片外晶振提供,输入FPGA后通过锁相环转换为需要的频率。

基于FPGA的UART接口开发

  图5 调试系统模块图

  串口的调试需要借助于串口调试工具,可以用VC编程实现,也可以直接使用网上已有的调试工具。直接选用网上的串口调试助手进行了测试,将数据从计算机送出,经过UART接口接收后再送回计算机。经过长达数十分钟的不间断接收和发送后,将送回计算机的数据与原始数据进行比较,多次测试均没有发生任何错误,这充分说明了这一UART接口程序具有高度的可靠性和稳定性,可以满足设计要求。

  结束语

  用FPGA 来对UART接口进行开发,可以减小系统的PCB面积,降低系统的功耗,提高设计的稳定性和可靠性,并可以充分利用了FPGA 的剩余资源。综合报告显示这一UART接口部分仅消耗了68 个逻辑单元,对于FPGA来说,这点资源实在是微不足道的,用如此少的资源就可以为系统增添一条新的数据通道,这是十分值得的。该设计具有很大的灵活性,虽然这一UART接口工作在每秒9600波特,但通过调整锁相环的参数,就可以使其工作在其他频率,十分方便。这仅仅是一个简单的通信接口,可根据不同系统的需要,增加FIFO等内容。该模块也可以作为一个完整的IP核,灵活地移植进各种型号的FPGA中,通用性很强。

关键字:FPGA  UART  接口技术

编辑:冀凯 引用地址:http://www.eeworld.com.cn/FPGA/2008/1029/article_318.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
FPGA
UART
接口技术

小广播

独家专题更多

TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 

夏宇闻老师专栏

你问我答FPGA设计

北京航空航天大学教授,国内最早从事复杂数字逻辑和嵌入式系统设计的专家。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved