文档详情

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

发布:2018-07-10约8.37千字共16页下载文档
文本预览下载声明
基于FPGA的通用异步收发器设计 作者: 学号: 指导教师 摘要:文章简要介绍了UART的基本功能,采用Verilog HDL语言作为硬件功能的描述,运用模块化设计方法设计了通用异步收发器的发送模块、接收模块和波特率发生器。实现了基于FPGA的UART基本功能设计,并给出了UART的软件编程实例。 关键字:Verilog HDL;FPGA;UART; Abstract: this paper briefly introduces the basic function of UART, the Verilog HDL language as a description of the hardware function, using modular design method to design the general asynchronous transceiver module, receive send the module and baud rate generator. Realized the basic function of UART which based on FPGA , and gives the UART software programming examples. Key word: Verilog HDL; FPGA; UART; 1.引言 串行通信要求的传输线少,可靠性高,传输距离远,被广泛应用于计算机和外设的数据交换。通常都由通用异步收发器(UART)来实现串口通信的功能。在实际应用中,往往只需要UART的几个主要功能,专用的接口芯片会造成资源浪费和成本提高。随着FPGA/CPLD的飞速发展与其在现代电子设计中的广泛应用,FPGA/CPLD功能强大、开发过程投资小、周期短、可反复编程、保密性好等特点也越来越明显。因此可以充分利用其资源,在芯片上集成UART功能模块,从而简化了电路、缩小了体积、提高了可靠性,而且设计时的灵活性更大,周期更短。鉴于此本文提出了一种采用FPGA实现UART功能的方法,可以有效地解决上述问题。 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的工作状态,以便进行实时处理。 图(1) 3. UART的模块化设计 系统总体结构 。module uart_test(clock,key,rdata,wen,sdata,seg,seg_dig); input clock; //系统时钟(48MHz) input[2:0] key; //按键输入(KEY1~KEY3) input[7:0]rdata; //接收到的数据 output wen; //发送数据使能 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]dout1,dout2,dout3,buff; //消抖寄存器 reg[1:0] cnt; //数码管扫描计数器 reg[3:0]disp_dat; //数码管扫描显存 reg div_clk; //分频时钟 wire[2:0]key_edge; //按键消抖输出 //时钟分频部分 always @(pose
显示全部
相似文档