电子工程师的网站
首 页 |  新闻资讯 | 最新产品 | 解决方案 | 技术参数
设计应用
电路图 | 技术资料 | 芯片资料 | 技术论坛
  现在位置: 首页 > 设计应用 > EDA/PLD > 详细信息
EDA/PLD:利用FPGA实现UART的设计
来源:   时间: 2007-7-25 10:17:07    
引 言

随着计算机技术的发展和广泛应用,尤其是在工业控制领域的应用越来越广泛,计算机通信显的尤为重要。串行通信虽然使设备之间的连线大为减少,但随之带来串/并转换和位计数等问题,这使串行通信技术比并行通信技术更为复杂。串/并转换可用软件实现,也可用硬件实现。用软件实现串行传送大多采用循环移位指令将一个字节由高位到低位(或低位到高位)一位一位依次传送,这种方法虽然简单但速度慢,而且大量占用CPU的时间,影响系统的性能。更为方便的实现方法是用硬件,目前微处理器串行接口常用的LSI 芯片是UART(通用异步收发器)、USART(通用同步异步收发器)和ACIA(异步通信接口适配器)等。不论是哪一种芯片,它们的一种基本功能是实现串/并转换。正是这些串行接口芯片弥补了串行通信较为复杂这一缺陷。本文应用EDA(电子设计自动化)技术,基于FPGA(现场可编程门阵列)/CPLD(复杂可编程逻辑器件)设计与实现UART。

1 总体设计

整个设计包括两部分:基于FPGA的UART的设计和基于VB6.0的上位机程序设计。UART的设计采用模块化的设计思想,可分为3个模块:FPGA数据发送模块、FPGA波特率发生器控制模块及数据接收模块。上位机程序采用VB 6.0的Mscomm控件,可分为画面设计和功能设计两部分。串口采用标准的RS-232协议,主要参数选择为:波特率9 600 bit/s,8位有效位,无奇偶校验位,1位停止位。

2 UART的结构和帧格式

UART主要包括接收器和发送器。从异步接收输入信号SIN接收到的异步信号通过接收器完成串行/并行的转换,形成异步数据帧;发送器将CPU发出的8位数据进行并行/串行转换,从SOUT发送出去。功能包括微处理器接口、TBR(发送缓冲器)、TSR(发送移位寄存器)、帧产生、并转串、RBR(接收缓冲器)、RSR(接收移位寄存器)、帧产生、串转并。UART的结构如图1所示。

UART的帧格式包括线路空闲状态(idle,高电平)、起始位(start bit,低电平)、5位~8位数据位(da-ta bits)、校验位(parity bit,可选)和停止位(stop bit,位数可为1、1.5、2位)。这种格式是由起始位和停止位来实现字符的同步。UART内部一般有配置寄存器,可以配置数据位数(5位~8位)、是否有校验位和校验的类型、停止位的位数(1,1.5,2位)等设置。

3 UART的设计与实现

UART是广泛使用的串行数据传输协议。UART允许在串行链路上进行全双工的通信。串行外设使用RS-232-C异步串行接口,一般采用专用集成电路即UART实现。如8250、8251、NS16450等芯片都是常见的UART器件,这类芯片已经相当复杂,有的含有许多辅助的模块(如FIFO),有时不需要使用完整的UART的功能和这些辅助功能,或者使用了FPGA/CPLD,那么就可以将所需要的UART功能集成到FPGA内部。使用VHDL将UART的核心功能集成,从而使整个设计更加紧凑、稳定且可靠。

下面分别设计UART的3个模块(发送器、接收器和波特率产生器),并给出其仿真结果。

3.1 发送器设计

UART串行发送器模块框图如图2所示。DIN为8位数据,其余为1位。

从图2的框图可以看出,串行发送器中包含有一个8位THR(发送保持寄存器)和TSR(发送移位寄存)。复位时,引脚TRE为高电平。当数据载入到TSR之后,引脚TRE变为低电平。发送完毕,TRE变为高电平。当侦测到输入WRN变为低电平时,自动使能串行数据发送过程。首先传送1位的起始位(逻辑电平0),同时THR中的数据自动地并行载入到TSR中。然后,定长的数据位从TSR中移出,接着是校验位。最后,产生停止位(逻辑电平1),标志着一帧的结束。串行数据帧将以内部时钟频率的1/16传送。如果THR中内容不空,当一个串行数据帧传送结束后,紧接着发送下一个数据帧。这种自动的流程使得数据帧以背靠背的方式发送,提高了数据传输的带宽。当没有数据发送时,SDO引脚保持高电平。

发送器每隔16个时钟周期输出1位,顺序遵循1位起始位、8位数据位(假定数据位为8位)、1位校验位(可选)、1位停止位。引入发送字符长度和发送次序计数器no_bits_sent,实现的部分VHDL程序如下:

发送器功能仿真结果如图3所示。并行输入DIN十六进制数56,WRN输入由1变为0,肩动发送程序,计数器开始计数,串行输出SDO为0010101101,发送完毕,TRE变为高电平。起始位0,8位数据位,1位停止位,证明了发送模块的正确性。

3.2 接收器设计

UART串行接收器模块框图如图4所示。DOUT为8位数据,其余为1位。接收器包含一个8位RBR和RSR。RBR的状态可以通过引脚DATA_READY米表示。当RBR中的数据有效时,DATA_READY变为高电平,向CPU表明可以取同数据。

本设计只要求实现简单的收发功能,故未设计检错程序,程序在侦测到起始位后,计16个时钟周期,便开始接收数据,移位输入RSR,最后输出数据DOUT。还要输出一个数据接收标志信号标志数据接收完。实现的部分VHDL程序如下:

接受器功能仿真结果图略。串行输入RXD为0010101101,每一位占16个时钟周期,一旦检测到输入RXD为0,计数器开始计数,开始接收数据,接收完毕,标志位变为高电平。仿真结果证明了接收模块的正确性。

3.3 波特率发生器的设计

UART的接收和发送是按照相同的波特率进行收发的。波特率发生器产生的时钟频率不是波特率时钟频率,而是波特率时钟频率的16倍,目的是为在接收时进行精确地采样,以提出异步的串行数据。根据给定的晶振时钟和要求的波特率算出波特率分频数。实现的部分VHDL程序如下:

波特率功能仿真结果图略。输入频率为20 MHz,波形周期为50 ns,20 MHz/(9 600 bit/s×16 bit)=130,由仿真结果可知输出波形的半个周期为65倍的输入时钟周期,从而证明了波特率产生器模块的正确性。

4 上位机程序设计

本文使用VB 6.0进行上位机程序的设计,实现PC与FPGA的串行通信。下面是1个上位机收发测试通信程序的设计过程,通过该程序可以与FPGA进行串行通信。波特率默认值是“9600,N,8,1”,其意为所使用的通信端口是以9 600 bit/s的速度传输,不作字符校验,每次的数据是8位,而停止位是1位。波特率(单位为bit/s)可为110、300、600、1200、2400、9 600、14 400、19 200、28 800。校验位为:E偶校验,N无校验,O奇校验,S空白。正确的数据位值有:4、5、6、7、8(默认值)。正确的停止位值有:1(默认值)、1.5、2。

将UART的程序编译、仿真后,下载到FPGA的EPlK30TC144-3芯片上。引入20 MHz的晶振频率;发送使能端和复位端分别接一个开关;状态输出标志TRE和DATA-READTY分别接一个二极管,指示状态;设置波特率为“9 800,N,8,1”。串行数据帧的格式为:起始位0,8位数据位,无校验位,1位停止位。将UART的串行发送、接收端口分别与计算机的RS-232的串行接收、发送端口连接,以便与PC机进行串行通信;并行输入DIN接入并行输出DOUT;连好线后,执行发送测试程序。

5 结束语

在实现FPGA与PC的串行通信中,将程序下载到芯片中验证设计的正确性,目前还没有更好的工具可以在下载后实时地对FPGA的工作情况和数据进行分析。通过串行通信,可以向FPGA发控制命令让其执行相应的操作,同时把需要的数据通过串口发到PC上进行相应的数据处理和分析,以此来判断FPGA是否按设计要求工作。本文以UART为重点讨论了FP-GA与上位机串行通信的实现方法。采用高级语言VB实现了上位机与FPGA的通信。

相关信息
发表评论
打印本页 关闭本页
飞兆推出两款高集成度模块产品FDMS9600S/20S
    飞兆半导体公司(Fairchild Semiconductor)推出两款高集成度模块产品FDMS9600S和FDMS9620S,能够显著减少电路板空间,同时可在同步降压设计中达到较高的转换效率。FDMS96xx系列中每个模块均在节省空间的单一5mm×6mm MLP封装中,集成了一个高边和低边N沟道MOSFET和一个单片集成肖特基二极管,成功为空间严格受限的应用提供高功效解决方案,包括笔记本电脑、小外形台式机、媒体中心PC、...
>>详细内容
RS-232、RS-422与RS-485协议标准及应用概述
  一、RS-232、RS-422与RS-485的由来     RS-232、RS-422与RS-485都是串行数据接口标准,最初都是由电子工业协会(EIA)制订并发布的,RS-232在1962年发布,命名为EIA-232-E,作为工业标准,以保证不同厂家产品之间的兼容。RS-422由RS-232发展而来,它是为弥补RS-232之不足而提出的。为改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传...
>>详细内容
为RS-232C接口通信设计可视光链路
  图1所示的设计是一条看得见的光链路,可供需要观看被传送的数据的人使用。该设计的一个附加优点是隔离电平高达5000V以上。对该系统的测试使用了数据采集系统的COM输入端以及标准PC的COM端口。MC1489将RS-232C的数据变换成TTL信号,7404门电路再将TTL信号倒相。7404的输出信号驱动Q1,即2N3055型功率晶体管。该功率晶体管驱动3只发光二极管(LED),以组成一个光源。当RS-232C端口上没有数...
>>详细内容
单收/单发RS-232接口芯片ADM101E及其应用
  单收/单发RS-232接口芯片ADM101E及其应用 北京香山87076部队 崔恒志 1.概述 在各种单片机应用系统的设计中,如智能仪器仪表、各类手持设备、GPS接收器等,都会遇到怎样与PC机进行通讯的问题。在数据量不大、传输要求不高的情况下,一般都采用通讯方式,即通过与PC机配置的RS-232标准串行接口COM1、COM2等相连接来实现应用系统与PC机之间的数据交换。 鉴于单片机的输入、输出...
>>详细内容
单收/单发RS-232接口芯片 ADM101E及其应用
  1.概述   在各种单片机应用系统设计中,如智能仪器仪表、各类手持设备、GPS接收器等,都会遇到怎样与PC机进行通讯的问题。在数据量不大、传输速率要求不高的情况下,一般都采用串行通讯方式,即通过与PC机配置的RS-232标准串行接口COM1、COM2等相连接来实现应用系统与PC机之间的数据交换。   鉴于单片机的输入、输出电平为TTL电平,与PC机RS-232标准串行接口的电气规范不一致,因此...
>>详细内容
基于CAN总线的RS-232串口设备远程通信
  摘要:阐述了CAN总线在232串口设备远程通信或自组网络中的应用,介绍了CAN到RS-232转换装置的软硬件设计方法。重点对软件设计中CAN波特率的设置、串口波特率的自动检测以及数据流控制等作为详细的叙述。 关键词:CAN波特率流控制 1引言 工业设备通信通常涉及到很多硬件和软件产品以及用于连通标准计算机平台(个人计算机或工作站)和工业自动化应用设备的协议,而且所使用设备和协议...
>>详细内容
已有(
)位对此新闻感兴趣的网发发表了看法 >>更多评论
内 容:
     
 
热点新闻
一周排行
关于我们 | 服务项目 | 付款方式 | 广告服务 | 联系我们 | 友情链接 | 投诉 建议 合作 | 网站地图 | 加入收藏
Copyright © 2007-2008 WEEQOO.COM Corp.All Rights Reserved. 版权所有 经营许可证编号:浙B2-20050339 法律声明
维库电子旗下网站:维库电子市场网 | ChinaICMart | 维库电子开发网 | 维库电子人才网
总部:杭州市下城区朝晖路182号国都发展大厦1号楼80A
电话:0571-85889139-8007 QQ:303939539 | MSN:zh1226@hotmail.com |  邮箱:laz8258@163.com dzsc51@163.com