基于FPGA的多串口通信电路设计
姓名: 周保朋
专业: 集成电路设计与集成系统 指导老师:王祖强
目录
摘 要摘 要
随着计算机系统和微机网络的快速发展,串行通信在数据通信及控制系统中得到广泛的应用。各种新型通用异步串行接收/发送器UART(Universal Asynchronous Receiver
Transmitter),它们较好的满足了时下的需求,并且能够实现比较全面的串行通信功能;但是常用UART芯片比较复杂且移植性差,而且在实际应用过程中,我们只需要其部分的功能,因而造成一定的资源浪费。本设计提出一种采用可编程器件FPGA 实现UART 的方法,实现了对UART 的模块化设计方法。最后将UART的核心功能集成到FPGA上,使整体设计紧凑,小巧,实现的UART功能。
本说明书在介绍串行通信、可编程ASIC和VHDL语言之后,着重讨论了如何使用FPGA现多串口模块,提出了一种专用异步串行通信电路的FPGA实现方法,具体描述了发送、接收、波特率发生模块及接口模块的设计,详细阐述了各个模块的流程、结构与设计细节,并且给出了各个模块及整个系统的仿真结果及分析。该电路根据实际应用中串口复用的要求,扩展四路串口,形成一个多串口模块。这样便充分利用FPGA的资源,提高了设计的灵活性和稳定性,简化了电路、缩小了体积、提高了稳定性,具有更大的灵活性。
关键词:可编程专用集成电路;串行通信;通用异步串口;系统级芯片;IP核。
Abstract
Following the rapid develop of the computer system and network,the serial communication is used widely in the data transmission and the control system. Many kind of new-type asynchronous transmitter /receiver,such as PC16550,could satisfy a present need, and can carry out a more overall function of serial communication.but when it came into the practice ,But in common, the UART chips is very complicated and its transplantation is bad,and also we just need the part function of them,so this can be seem to be a resource waste.his design give a new method that using programmable logic device FPGA to realize UART.it carries out the model design for the UART, and Integrate the Core function of UART to the FPGA,make the whole design very well-knit ,little,and the function is so stable and dependable.
This thesis emphasize to discuss how to use FPGA to emulate several-serial-port module, after the introducing of serial communicating ,FPGA and the VHDL language .And a new realizing method which carry out by FPGA is given out for the special use of asynchronous serial data transmission. this thesis has descriptied the details design of transmission module ,receive module ,the origination of baud rate module and the interface module,such as every model ‘s process,structure and the design details , and give each mold piece and the whole system imitate result and analysis.according to the request of serial ports multiplexing in practice, we expand four serial port to get a module of serial ports . All those make good use of a FPGA resources, raise the vivid and stability of design, and simplify electric circuit,reduce physical volume and improve a stability,and have more flexibility.
Key words: FPGA ;UART ;SOC;serial communication; IP cores.
随着微处理器(单片机、DSP等)的性能价格比不断提高,数据处理能力不断加强,其应用领域日益增多。当在实时数据采集及数字信号处理等应用中,微处理器往往需要使用串口和多个外设进行数据交换,如何实现其多串口通信成为系统设计的关键。本设计的主要内容是在对当前应用的多串口通信方法进行对比
和研究,提出多串口通信电路设计方案。 关键词:FPGA,串口通信,UART,RS232 Abstract
绪论
一、FPGA
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
目前以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。
系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。
FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。
FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。FPGA的基本特点主要有:
1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。 2)FPGA可做其它全定制或半定制ASIC电路的中试样片。 3)FPGA内部有丰富的触发器和I/O引脚。
4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。 5) FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。 FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。
加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即
可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。
Altera的DE2教育平台选用的FPGA是CycloneII系列FPGA中的EP2C35F672C6。
二、串口通信原理
串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配:
a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。
b,数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。
c,停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。
d,奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置