结 论 37
致 谢 38
参 考 文 献 39
附录一(各个模块代码): 40
附录二(UART内核代码): 50
附录三(UART顶层模块代码): 58
1. 引言
本课题的研究内容是基于FPGA实现通用异步串行接口。实现串行发送接口,对于一个设备的处理器来说,要接收和发送串行通信的数据,需要一个器件将串行的数据转换为并行数据以便于处理器进行处理,这个器件就是UART(Universal Asynchronous Receiver/Transmitter),全称即通用异步收发器,所以本课题的重点是基于FPGA实现一个UART控制器。[1]
1.1 选题背景及意义
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA是电子设计领域中最具有活力和发展前途的一项技术,它的影响丝毫不亚于20世纪70年代单片机的发明和使用。可以毫不夸张地讲,FPGA能完成任何数字器件的功能。[1]随着EDA软件和硬件描述语言(HDL)的进步, FPGA的开发周期越来越短,产品功能越来越强。FPGA在复杂逻辑电路以及数字信号处理领域中扮演者越来越重要的角色[2]。论文网
UART(通用异步接受/发送器)通用异步接收/发送装置,它是一种应用广泛的于短距离串行传输接口,常常用于短距离、低速度、低成本通信中,基于FPGA实现起来简单方便。[9]UART是一个并行输入成为串行输出的芯片,通常集成在主板上在数字通信和控制系统中得到广泛应用。UART是一种广泛使用的串行数据传输协议,它允许在串行链路上进行全双工通信。串行外设中用到的如RS232异步串行接口等,一般可以采用专用的集成电路即UART来实现。用UART来实现传输数据的串/并转换或者并/串转换。[7]
在通信系统中,UART主要功能如下。首先将接收到的并行数据转换成串行数据来传输。消息帧从一个低位起始位开始,后面是5~8个数据位,一个可用的奇偶位和一个或几个高位停止位。接收器发现开始位时它就知道数据准备发送,并尝试与发送器时钟频率同步。如果选择了奇偶,UART就在数据位后面加上奇偶位。奇偶位可用来帮助错误校验。在接收过程中,UART从消息帧中去掉起始位和结束位,对进来的字节进行奇偶校验,并将数据字节从串行转换成并行。UART也产生额外的信号来指示发送和接收的状态。[13]例如,如果产生一个奇偶错误,UART就置位奇偶标志。
目前大部分处理器芯片中都集成了UART功能,但是在FPGA芯片中一般没有集成UART,这增加了FPGA芯片与其他处理器间数据交换的复杂性。为提高FPGA设计的灵活性,采用硬件描述语言编写一个具有UART功能的模块。这样可以简化电路又能提高系统可靠性以及稳定性,方便快捷,使整个设计更加紧凑稳定、可靠。
1.2 国内外研究现状
1.3 本文主要工作和组织安排
1.3.1 本文的主要工作
本课题要求以EDA技术为手段,FPGA可编程逻辑器件为载体,设计基用异步串行接口。为保证传输的可靠性,该接口还需具有奇偶效验功能。首先,对于串行通信接口中的UART协议要有所了解,它是一个使用广泛的串行数据传输协议。本课题要求采用RS232协议实现通用异步串口,需要熟悉RS232串口的通信标准和要求。RS232使用的是负逻辑电平,所以要注意电平和TTL之间的转换。本课题可以使自己在之前EDA实验的基础上更加熟悉Quartus II,并将之熟练运用。在建立UART各个模块的过程用使用VHDL语言完成。