当前位置:主页 > 科技论文 > 网络通信论文 >

基于CPLD的异步串行通信设计

发布时间:2015-02-15 17:40

摘 要:

摘 要:异步串行通信技术在电子通信设备中被广泛使用。随着复杂可编程逻辑器件(CPLD)的发展,按照异步串行通信的协议,采用VHDL语言编程,可以将异步串行通信功能集成到CPLD内,也就是用软件的方法实现硬件的功能,既减少了元器件数量、简化了电路,又提高了设计的可靠性。

关键词:

关键词:CPLD VHDL 异步串行通信

     异步串行通信无需数据时钟、帧同步时钟等时钟信号,完全依靠收发双方约定的传输波特率和数据线自身的电平变化来正确的收发数据,而且连线简单,广泛应用于电子通信设备中。

  由于许多微处理器都没有异步串行口,为了实现异步串行通信,需要使用专用串行通信芯片,电路设计比较复杂。随着复杂可编程逻辑器件(CPLD)的发展,按照异步串行通信的协议,采用VHDL语言编程,可以将异步串行通信功能集成到CPLD内,也就是用软件的方法实现硬件的功能,既减少了元器件数量、简化了电路,,又提高了设计的可靠性。软件编程采用的VHDL硬件描述语言,设计灵活,调试简单,可以先通过计算机进行仿真,再投入实际使用,可大大降低设计的风险性。


1 异步串行通信基本原理

  所谓异步串行通信是指具有不规则数据段传送特性的串行数据传输。异步通信数据帧的第一位是起始位,在通信线上没有数据传送时处于逻辑“1”状态。当发送设备要发送一个字符数据时,首先发出一个逻辑“0”信号,这个逻辑低电平就是起始位。起始位通过通信线传向接收设备,当接收设备检测到这个逻辑低电平后,就开始准备接收数据位信号。因此,起始位所起的作用就是表示字符传送开始。当接收设备收到起始位后,紧接着就会收到数据位。数据发送完之后,可以发送奇偶校验位。奇偶校验位用于有限差错检测,通信双方在通信时需约定一致的奇偶校验方式。就数据传送而言,奇偶校验位是冗余位,但它表示数据的一种性质,这种性质用于检错,虽有限但很容易实现。在奇偶位或数据位之后发送的是停止位。停止位是一个字符数据的结束标志。


2 复杂可编程逻辑器件(CPLD)

  复杂可编程逻辑器件—CPLD(Complex Programmable Logic Device),是从PAL的GAL器件发展出来的器件,相对而言规范大,结构复杂,属于大规模集成电路范围。是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆将代码传送到目标芯片中,实现设计的数字系统。


3 VHDL语言

  VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。VHDL主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格和句法十分类似于一般的计算机高级语言。


4 异步串行通信设计

4.1 总体框图

  本设计规定的数据帧格式为:1位起始位,8位数据位,1位停止位,无校验位;波特率为9600bps;系统时钟频率为1.8432MHz。程序主要包括波特率发生器、发送电路和接收电路三个部分。程序的功能框图如图1所示。

           

基于CPLD的异步串行通信设计

4.2 波特率发生器

  波特率发生器实际上就是一个分频器,主要是根据要求的串行口波特率,将系统时钟进行分频,分别产生发送时钟和接收时钟。发送时钟的频率与串行口波特率相同。由于串行数据帧与接收时钟是异步的,为了实现接收时钟与接收数据帧的同步,需要采用高速率时钟对接收数据进行采样,一般选择16倍于波特率的时钟频率作为接收时钟。本设计中,系统时钟(1.8432MHz)12次分频后得到接收时钟(153600Hz),再将接收时钟16次分频后得到发送时钟(9600Hz)。

4.3 发送电路

4.3.1 发送电路原理

  发送电路相对比较简单,当有发送请求时,按照发送时钟的时序,在上升沿时刻依次发送起始位、8位数据和停止位。需要说明的是,8位数据的发送顺序是先发送低位后发送高位。发送电路的时序图如图2所示。

 

基于CPLD的异步串行通信设计

4.3.2 发送电路设计

  发送电路采用Moore型状态机的方式设计,包括:空闲、发送起始位、发送数据位和发送停止位四个状态。发送电路的状态图如图3所示。

  空闲状态:初始状态为空闲状态,只有在空闲状态下,才能检测是否有发送请求,当检测到有发送请求时,将8位数据装入发送移位寄存器,进入发送起始位状态。

发送起始位状态:发送一位起始位,进入发送数据位状态。

  发送数据位状态:依次发送8位数据,当8位数据全部发送完成后,进入发送停止位状态。

  发送数据位状态:发送一位停止位,表示一帧数据发送完成,再次进入空闲状态。

 

基于CPLD的异步串行通信设计

4.4 接收电路

4.4.1 接收电路原理

  接收时钟在每个时钟周期都对接收数据进行采样,当检测到当前数据位为“0”而前一个数据位为“1”时,即表示检测到了起始位。为了保证读取数据的可靠性,每个数据位均在中间点进行采样,在检测到起始位后,延迟8个接收时钟周期,开始依次读取起始位、数据位和停止位,两次读取的间隔为16个接收时钟周期。为了能够接收连续两帧数据中的后一帧,读取到停止位的下一个时钟周期(而不是延迟8个时钟周期)即开始检测起始位。接收电路的时序图如图4所示。

 

基于CPLD的异步串行通信设计

4.4.2 接收电路设计

  接收电路同样采用Moore型状态机的方式设计,包括:空闲、接收起始位、接收数据位和接收停止位四个状态。接收电路的状态图如图5所示。

  空闲状态:初始状态为空闲状态,不断对数据进行采样,检测起始位,一旦检测到起始位,即进入接收起始位状态。

  接收起始位状态:接收一位起始位,并对起始位的有效性进行判别,若为虚假起始位,则返回空闲状态,若确认起始位有效,则进入接收数据位状态。

  接收数据位状态:依次接收8位数据,当8位数据全部接收后,进入接收停止位状态。

  接收停止位状态:接收一位停止位,表示一帧数据接收完成,将8位数据送接收缓存,再次进入空闲状态。

                            

基于CPLD的异步串行通信设计


5 结语

  本文对异步串行通信的工作原理、电路设计进行了分析,采用VHDL语言编程,在CPLD上实现了异步串行通信功能。该设计为固定波特率和数据帧结构,无需微处理器进行额外设置,操作简单,使用方便。在实际工程应用中,还可以根据需求,在此基础上增加波特率设置、数据帧结构设置、地址译码等电路,实现多路、波特率和数据帧结构可设置的异步串行通信。



本文编号:14943

资料下载
论文发表

本文链接:https://www.wllwen.com/kejilunwen/wltx/14943.html


Copyright(c)文论论文网All Rights Reserved | 网站地图 |

版权申明:资料由用户7f26a***提供,本站仅收录摘要或目录,作者需要删除请E-mail邮箱bigeng88@qq.com