基于FPGA器件EP1C12Q240CQ8芯片实现UAR核心功能的设计_第1页
基于FPGA器件EP1C12Q240CQ8芯片实现UAR核心功能的设计_第2页
基于FPGA器件EP1C12Q240CQ8芯片实现UAR核心功能的设计_第3页
基于FPGA器件EP1C12Q240CQ8芯片实现UAR核心功能的设计_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于FPGA器件EP1C12Q240CQ8芯片实现UAR核心功能的设计引言随着嵌入式系统的广泛推广和应用,UART(UniversalAsynchronousReceiverTransmiller)作为一种串行数据传输方式也得到广泛的使用。UART允许在串行链路上进行全双工通信。串行外设到RS232-C异步串行接口一般采用专用的集成电路即UART实现。常见的串行接口芯片如8250、8251、NS16450等,能够实现比较全面的串行通信功能。而在实际应用中,我们往往并不需要如此完整的功能,从而会造成资源的浪费和成本的提高。随着EDA技术的飞速发展,我们就可以根据自己的需求,将所需要的UART功能集成到FPGA内部,从而简化了电路、减小了体积、提高了系统的可靠性。基于这种思想,在设计中选用Altera公司的EP1C12Q240CQ8,使用VerilogHDL设计实现UART的核心功能。1UART通信原理串行通信分为两种类型:同步通信方式和异步通行方式。UART是通用异步发送器,是一种串行异步通信方式。它是各种设备之间进行通信的关键模块,允许在串行链路上进行全双工的通信。在发送端,并行的数字信号需要转化成串行信号才能通过有线或无线传输到另外一台设备;而在接收端,串行信号必须要被恢复成并行信号才能进行数据处理。UART就是用来处理这种数据与串口之间的串并和并串转换的。UART传送一个字符以起始位(StartBit)开始,以停止位(StopBit)结束,字符之间没有固定的时间间隔要求。每一个字符的前面都有一个起始位(低电平),字符本身由5~8位数据位组成,然后是一位校验位(可选),最后是停止位(1位,1位半或2位),停止位后面是不定长度的空闲位。停止位和空闲位都规定高电平,这样就可以保证起始位开始处有一个下降沿。2UART在FPGA中的实现2.1UART的硬件电路设计在串行通信中,普遍采用的是RS-232接口标准。硬件电路主要由FPGA串口模块、MAX3232和DB-9组成,电路图如图2所示。数据从DB-9的TxD端进入,经过MAX3232进行电平转换后由FPGA串口模块中的RxD端进入,进行串并转换后由数据总线进入FPGA的其他模块。数据处理后经由数据总线进入FPGA串口模块,在其中进行并串转换后由TxD端输出到MAX3232中,经电平转换后由DB-9的RxD端输出。2.2UART的结构设计UART主要由波特率发生模块、发送模块、接收模块这三个部分组成。2.2.1波特率发生模块当UART在发送数据的时候,只需要按照一定的速率将数据串行地移动出就可以了。然而,当UART在接收串行的数据时,在什么时刻将数据移入移位寄存器是非常关键的。最理想的情况是在串行数据的每一位的中间时刻,对串行数据进行采样。对每一位数据的时间进行分段,时间的分段越多,对串行数据的采样就越靠近中点,由于接收方和发送方的时钟不可能完全同步,时间的分段越多,接收方出现采样错误的概率就越低。但时间的分段越多,也意味着采样时间就越高,系统的开销就越大。因此,在实际的设计中,采用16倍于波特率的时钟频率。UART收发的每一个数据宽度都是波特率发生器输出的时钟周期的16倍。如按照9600b/s进行收发,那么波特率发生器的输出时钟频率应为9600×16Hz。由于外部时钟采用25MHz,可以很简单地通过总线写入不同的数值到波特率发生器保持寄存器中,然后用计数器的方式生成所需要的各种波特率。计算公式为:25000000/(16×所期望的波特率)-1。2.2.2发送模块发送模块主要实现对并行数据的缓存,并串转换,然后把串行数据按照既定数据帧格式进行输出,其机构如图3所示:实验中串行数据结构为1位起始位,8位数据位,1位奇偶校验位,1位停止位。数据的发送由外部接收模块控制,接收模块给出wrn信号,UART发送模块根据此信号将并行数据data-input锁存进发送缓冲,并通过移位寄存器进行并串转换,在转换结束后加上奇偶校验位,发送到端口txd进行串行输出。在整个工作过程中,输出信号tbre作为标志信号,在串行数据全部输出完毕之后变成0,并在发送模块未工作时保持为0。2.4接收模块接收模块的结构如图4所示。接收模块的作用是把收到的串行数据转换成并行数据进行输出,并判断收到数据是否有错。接收模块的内部结构及工作过程与发送模块类似,只不过接收模块的工作和发送模块的工作相反,是进行数据的串并转换。rxddout[7:0]rdndatareadyrstparity-errorclk16xframing-errora)rxd接收串行数据输入;b)rdn为输入控制端,只有rdn为0时,并行数据才允许输出;c)data-ready为数据是否准备好的标志;d)parity-error为校验位是否出错的标志;e)framing-error为帧是否出错的标志;f)data-out[7:0]为并行数据输出端。接收模块从捕捉到数据串的第一个0开始工作,然后把随后依次输入的8个数据位通过移位在寄存器中完成窜并转换,并将并行数据输出至端口data-out。将8个数据位移位至寄存器后,接收模块将检测输入数据串的最后一位是否为1(停止位)来判断接收到的数据帧是否出错,若不为1,就将输出framing-error置1。3仿真验证在实验中,作者选用Altera公司的Cyclone系列产品中的EP1C12Q240C8芯片,硬件描述语言采用VerilogHDL,用Quartus5.1进行逻辑综合,仿真工具则使用ModelSim6.0。发送模块和接收模块的仿真结果分别如图5所示。发送的数据能够严格按照串行通信协议进行传输;接收的数据也完全正确。通过仿真测试后,将程序下载到FPGA芯片中运行,结果通信数据正确,电路工作稳定、可靠。4结束语用FPGA实现了UART通信功能,可以实现对数据的接收和发送,并可以在接收数据时对其校验位、停止位进行判断,在发送数据时可以形成完整的一帧数据格式。本文利用FPGA设计实现了U

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论