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

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

ID:58512780

大小:76.00 KB

页数:16页

时间:2020-05-18

基于FPGA的通用异步收发器设计.doc_第1页
基于FPGA的通用异步收发器设计.doc_第2页
基于FPGA的通用异步收发器设计.doc_第3页
基于FPGA的通用异步收发器设计.doc_第4页
基于FPGA的通用异步收发器设计.doc_第5页
资源描述:

《基于FPGA的通用异步收发器设计.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于FPGA的通用异步收发器设计作者:学号:指导教师摘要:文章简要介绍了UART的基本功能,采用VerilogHDL语言作为硬件功能的描述,运用模块化设计方法设计了通用异步收发器的发送模块、接收模块和波特率发生器。实现了基于FPGA的UART基本功能设计,并给出了UART的软件编程实例。关键字:VerilogHDL;FPGA;UART;Abstract:thispaperbrieflyintroducesthebasicfunctionofUART,theVerilogHDLlanguageasadescriptionoftheha

2、rdwarefunction,usingmodulardesignmethodtodesignthegeneralasynchronoustransceivermodule,receivesendthemoduleandbaudrategenerator.RealizedthebasicfunctionofUARTwhichbasedonFPGA,andgivestheUARTsoftwareprogrammingexamples.Keyword:VerilogHDL;FPGA;UART;1.引言串行通信要求的传输线少,可靠性高,传

3、输距离远,被广泛应用于计算机和外设的数据交换。通常都由通用异步收发器(UART)来实现串口通信的功能。在实际应用中,往往只需要UART的几个主要功能,专用的接口芯片会造成资源浪费和成本提高。随着FPGA/CPLD的飞速发展与其在现代电子设计中的广泛应用,FPGA/CPLD功能强大、开发过程投资小、周期短、可反复编程、保密性好等特点也越来越明显。因此可以充分利用其资源,在芯片上集成UART功能模块,从而简化了电路、缩小了体积、提高了可靠性,而且设计时的灵活性更大,周期更短。鉴于此本文提出了一种采用FPGA实现UART功能的方法,可以有

4、效地解决上述问题。2.UART的工作原理UART(UniversalAsynchronousReceiverTransmitter,通用异步收发器)是广泛使用的异步串行数据传输协议。在串行通信中,数据以字节为单位的字节帧进行传送。发送端和接收端必须按照相同的字节帧格式和波特率进行通信。UART控制器所传输的一帧串行数据包括1位起始位(低电平)、5~8位数据位、1位校验位(可选)和停止位(可为1,1.5,2位)。起始位是字节帧的开始,使数据线处于逻辑0状态,用于向接收端表明开始发送数据帧,起到使发送和接收设备实现同步的功能。停止位是字

5、节帧的终止,使数据线处于逻辑1状态。用于向接收端表明数据帧发送完毕。波特率采用标准速率9600b/s。数据在传输时,低位在前,高位在后。接收端检测并确认起始位后,接收数据位。停止位接收完毕后,向CPU发出中断信号,同时将数据发送到计算机的8位数据总线上;发送数据时,先由CPU设置波特率,然后将8位并行数据加上起始位和停止位发送给外设。停止位发送完毕后,向CPU发出中断信号。在数据发送和接收过程中,CPU可以通过控制信号来读取UART的工作状态,以便进行实时处理。图(1)为UART的传输结构图。图(1)3.UART的模块化设计3.1系

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

7、g);inputclock;//系统时钟(48MHz)input[2:0]key;//按键输入(KEY1~KEY3)input[7:0]rdata;//接收到的数据outputwen;//发送数据使能output[7:0]sdata;//要发送的数据output[7:0]seg;//数码管段码输出output[7:0]seg_dig;//数码管位码输出//I/O寄存器reg[7:0]sdata;reg[7:0]seg;reg[7:0]seg_dig;//内部寄存器reg[16:0]count;//时钟分频计数器reg[2:0]dou

8、t1,dout2,dout3,buff;//消抖寄存器reg[1:0]cnt;//数码管扫描计数器reg[3:0]disp_dat;//数码管扫描显存regdiv_clk;//分频时钟wire[2:0]key_edge;//按键消抖输

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。