基于CPLD的异步串行接口设计

时间:2022-10-07 06:39:18

基于CPLD的异步串行接口设计

摘 要:CPLD是大规模集成电路技术发展的产物,是一种半定制的集成电路。结合计算机软件技术(EDA技术)可以快速、方便地构建数字系统。文章重点介绍了CPLD和PC机之间的异步串行接口间的通信。设计中采用多模块化的设计方法设计整个系统,包括波特率发生器、数据接收模块、数据发送模块及显示模块。采用VHDL硬件描述语言来开发基于CPLD的异步串行通信接口。采用RS232作为主要的接口控制芯片,利用Quartus II 9.0应用软件在CPLD芯片上进行综合描述。采用六种常用波特率,以开关形式对数据传输方式进行选择,输出以LED灯的明灭和数码管显示数值进行验证。分别在QuartusII 9.0和Altium Designer 6.9软件开发环境下进行设计、综合与仿真。进而实现异步串行接口的控制功能及速度可选择性数据传送的设计。

关键词:CPLD;RS232;异步串行接口;VHDL

1 CPLD与VHDL简述

CPLD适用性编辑器采用中心互连矩阵形式对不同的编码进行矩阵排列,该编辑器与原有传统CMOS编辑器不同点在于,该编辑器能够对传输电路时间具有一定的预测性。当编码器收到电流脉冲信号时,便会对电流大小进行数据收集,然后将收集的数据信号转化为电流脉冲,该编辑器便会对电流的流经时间做定性分析,保证电流传输的稳定性。

大规模可编程逻辑器件是利用EDA技术进行电子系统设计的载体,硬件描述语言是利用EDA技术进行电子系统设计的主要表达手段。常用的硬件描述语言有VHDL、Verilog和ABEL。设计中使用的VHDL语言在电子工程领域已成为事实上的通用硬件描述语言。

2 异步串行通信接口设计

课题要求实现基于CPLD的异步串行接口的设计,需要进行以下工作。

首先,需要利用Altium Designer 6.9软件开发环境进行硬件系统的设计;其次,运用QuartusII 9.0软件将软件系统程序进行设计、综合及仿真;最后,将软硬件系统结合起来综合调试、分析,实现设计课题的要求,在条件允许的情况下或进行进一步的完善。

2.1 串行异步通信的数据格式

收发双方取得同步的方法是在字符格式中设置起始位和停止位,在一个有效字符正式发送前,发送器先发送一个起始位,然后发送有效字符位,在字符结束时再发送一个停止位,起始位到停止位构成一帧。

2.2 串口模块的设计

设计中选择的是RS232串口通信。目前RS232是PC机与通信工业中应用最广泛的一种串行接口。典型的RS232信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平在+5~+15V,负电平在-5~-15V。当无数据传输时,线上为TTL,从开始传送数据到结束,线上电平从TTL到RS232电平再返回TTL电平。接收器典型的工作电平在+3~+12V与-3~-12V。

2.3 异步串行通信系统模块设计

本设计可划分为4个部分,即波特率发生模块、接收模块、发送模块、显示模块和控制模块的设计。

2.3.1 分频模块设计

系统利用晶振T5提供系统时钟,然后通过分频模块产生六种波特率。

波特率(Baud Rate)是单位时间内传送的二进制数据的位数,以位/秒(b/s)表示。收/发时钟频率=N*波特率。为了兼顾速度和稳定性一般N取为16。

根据当前异步串行通信系统的传输结构,其波特率发生器在连接方式上采用2个8位数据寄存器相连,这样便能进行有效的数字寄存,保证1-16位进制编码的有效进行。其次在系统频率分频方面,该波特率发生器能够进行2分频,保证传输的分频波形能够达到预定位置,但传输波形为一个波峰时,则另个传输波形便会到达波谷,完成波特率波形的周期传输。

由于内部采样时钟bclk周期(由波特率发生器产生)是收/发波特率时钟频率的16倍,如CPLD的系统时钟为50MHz,当波特率为9600Hz时,则波特率时钟的每个周期相当于(1/9600)/[1/(50*106)]≈5208个系统时钟的周期。若要得到占空比为1:1的波特率时钟,只要使计数器在数到5208×1/2=2604时将输出置高,之后计数到5208时将输出置低并且重新计数,就能够实现和9600波特率同步的时钟。

设计功能:实现六种波特率1200、2400、4800、9600、19200、38400Hz的可选择性,从而可以选择数据传输速率。

假设数据的波特率为p,则所需时钟的频率为16*p,开发板上所选择的晶振频率为50MHz,则波特率发生器的分频系数CNT1计算公式如下式:

X=50000000/(16*p)/2-(因X为计数器中值,所以需除以2)

则:当p=1200时,X=1302;

p=2400时,X=651;

p=4800时,X=325;

p=9600时,X=162;

p=19200时,X=81;

p=38400时,X=41;

2.3.2 接收模块设计

该模块的功能:实时检测线路,当线路产生下降沿时,即认为线路有数据传输,启动接收数据进程进行接收,按从低位到高位接收数据。

2.3.3 显示模块设计

设计的显示模块中,数码管显示传输数据的具体数值(十六进制);八个LED灯主要是为了显示系统从外部接收到的数据(二进制)从左到右依次显示数据的高位到低位,灯亮为“1”,反之则为“0”。

设计功能:将发送的数据结果显示到开发板数码管及LED灯上。

由于系统选用的是共阳极的数码管,所以数码管位选位初始值为“0”,当位选位为“1”时选中该位。

2.3.4 控制模块设计

系统的数据的接收可通过按键设计一个发送键,从PC机上输入数据,按下发送键,将数据传输到开发板上,由CPLD芯片接收;数据发送可通过开发板上的拨码开关控制数据传输;同时,六种波特率的选择亦可通过拨码开关设计。

3 结束语

本设计具有很大的灵活性,这一异步串行通信接口工作的波特率可以通过拨码开关选择,使其工作在不同的频率环境下,十分方便。由于采用了VHDL语言作为输入方式并结合CPLD,大大缩短了设计周期,提高了设计的可靠性、灵活性,使用户可根据自己的需求,方便、高效地设计出适合的串行接口电路。

参考文献

[1]王晓丽.可编程逻辑器件CPLD/FPGA的发展[J].科技信息(科学・教研),2007(28).

[2]侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计[M].西安: 西安电子科技大学出版社,1999.

[3]林容益.CPU/SOC及电路应用设计(基于FPGA/CPLD)[M].北京:北京航空航天大学出版社,2004.

上一篇:县级医院医护人员压力分析及管理对策 下一篇:石墨烯复合材料超电容性能的研究