下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
用CPLD实现串行通信时的波特率自动侦测杨李莎1朱华福2(1.长安大学研究生部,陕西西安710064;2.云南昆船设备有限公司昆明650236)摘要:本文介绍了一种利用CPLD实现波特率自动侦测的方法,文章最后给出其仿真结果关键词:串行通信波特率自动侦测复杂可编程逻辑器件Abstract:Inthispaper,itintroducesawaytoautomaticallydetectbaudratebyusingCPLD,andintheendindicatesit'semulationresults.Keywords:serialcommunicationbaudrateautodetectedCPLD1、 引言串行数据通信是应用极为广泛的技术,通过数据传输控制或监测中心可以对远端设备进行控制和监测设备的工作状态串行外设都会用到RS-232C异步串行接口•传统上采用专用的集成电路即UART实现,如TI、EXAR、EPIC的550、452等系列,但是我们一般不需要使用完整的UART的功能,而且对于多串口的设备或需要加密通讯的场合使用UART也不是最合适的。如今的许多的电器都有串口,主要用于软件的升级或者用于自诊断。通常单机设备的串行通信波特率设置都是采用硬件拨码的方式进行的,对于一些拨码开关特别多的设备来说难于记忆,因此能否寻求一种波特率自适应的方法来解决这个问题呢?回答是肯定的,本文就介绍一种用复杂可编程逻辑器件来实现波特率自动侦测的方法。系统只设计了数据接收模块,利用VHDL语言对其进行编程,最后给岀其仿真结果。2、系统设计2.1系统介绍图1所示为数据接收模块结构框图,数据接收模块由波特率发生基准时钟、开始位下降沿检测、接收控制、串并转换器、锁存器、缓冲器等部分组成。为了能准确地侦测岀接收数据的波特率,数据接收模块中采用了波特率发生基准时钟,首先用基准时钟对RXD端的数据进行接收采样,然后按波特率自动侦测原理进行波特率自动侦测,最后产生一个与发送端发送的数据相同的波特率,利用波特率进行通信。波特率发生基准时钟3开始位下降沿检测串并转换器缓冲盤锁存盤波特率自动侦测波特率发生基准时钟3开始位下降沿检测串并转换器缓冲盤锁存盤波特率自动侦测数据输岀1【作者简介】杨李莎(1981—)女,长安大学研究生部04级交通信息工程及控制专业硕士研究生,主要从事高速公路和城市道路的交通控制及管理研究。
图1数据接收模块结构框图图1数据接收模块结构框图为了能对位进行正确的操作,以基准波特率16倍的速率采样RXD端的电平,这就把接收一位的时间分成16份,当检测到开始位的下降沿时,就开始进行数据采样。采样的数据为一个位的第6、7、8三个状态,然后三个里面取两个以上相同的值作为采样结果,这样可以避免干扰。2)串行数据接收控制当开始位的采样结果不是0的时候就判定为接收出错,把串行接收控制器的位计数器复位。在波特率未侦测之前,当接收完波特率自动侦测原理需要的位数后就进行数据的输出,并把串行数据接收控制器的位计数器复位,等待正式数据的传输开始。当波特率确定之后,按照设计的数据传输格式(开始位、8位数据、停止位、无校验位)当接收完10位数据后就进行数据的输出,并把串行数据接收控制器的位计数器复位,等待下一数据的到来。2.2波特率自动侦测原理众所周知,微机键盘中的回车键(CR)常用于命令的执行,许多程序中的命令都是以回车键来结束的,因此在波特率自动侦测中也采用回车键。因为回车键在ASCII码中的值为0X0D(十六进制),用二进制来表示即为00001101B,在异步传输过程中,数据的传输是以高电平来代表‘1'用低电平来代表‘0',在10位数据(1个起始位、8位数据、1个停止位)的格式下传输回车键的传输格式如下:1开始位100000停止位LSB MSB所以规定在数据发送前,先发送回车字符,数据在传输过程中,低位在前、高位在后,再加上开始位和停止位其二进制表达式为0101100001(开始位加数据加停止位,其中数据低位在前、高位在后),根据数据传输格式可看出,只要能测出开始位和数据位的最低位之间的时间间隔,即可知道数据传输的波特率(由波特率的定义知每位数据传输的时间为波特率的倒数,又每位数据的传输时间即为两位数据传输的时间间隔)。因此我们采用一种以“帧”(此处的“帧”为在数据传输过程中,每发送一个字符加上开始位和停止位)为单位来进行波特率自侦测的方法,同样是以回车字符为先导。我们假设设备的通信速率在9600bps〜115200bps之间,系统时钟频率为44MHz。根据设备通信的波特率都有一定的规律性,所以我们在9600bps〜115200bps之间列出所有常用的波特率:9600bps、14400bps、19200bps、28800bps、38400bps、57600bps、76800bps、115200bps。在这些波特率当中把9600bps、19200bps、38400bps、76800bps归为第一组;把14400bps、28800bps、57600bps、115200bps归为第二组,在第一组中使用一个波特率基准发生时钟把它称之为基准时钟1,在第二组中也使用一个波特率发生基准时钟把它称之为基准时钟2。两组基准时钟同时对系统接收端的数据进行接收,当任一组接收完10位数据之后,取中间的8位数据(除数据位0和数据位9)然后再根据这8位数据确定发送数据的波特率,其具体过程如下。取第一组中的基准时钟的波特率为76800bps,第二组中的基准时钟的波特率为115200bps。以第一组为例,假设发送数据的波特率为76800bps,则接收的数据为回车字符(0X0D)。若发送数据的波特率为38400bps,则因基准时钟的周期为发送数据的波特率时钟周期的1/2,所以基准时钟每两个时钟周期接收一个数据,故所接收的数据用二进制表示为00110011110000000011B(低位在前,高位在后),取前10位(0011001111),除去第一位和最后一位所得数据为01100111B(0XE6),其它波特率以此类推。下面所示为发送数据的波特率与接收到的数据的关系图。第一组:波特率以76800bps速率接收数据字节分频系数7680001011000010X0D3338400001100111100000000110XE66519200000011110000111111110X781309600000000001111111100000X80260第二组:波特率以115200bps速率接收数据字节分频系数11520001011000010X0D2257600001100111100000000110XE64328800000011110000111111110X788714400000000001111111100000X80174从上面的关系图可看出,第一组中的波特率为9600bps的2n倍(其中n=1、2、4、8);第二组中的波特率为14400bps的2n倍(其中n=1、2、4、8)。虽然第一组和第二组中接收的字节当n相同时是一样的,但是若发送数据的波特率在第一组所列的波特率中,则按第一组来锁定波特率,这时第二组接收的字节就不是关系图中所列的字节。同理,第二组也是一样。其算法如图2所示。在算法中设置标志位FLAG,程序初始化时就设置FLAG为‘1'(默认设置),当接收完10位数之后,取出取中间的8位数据(除数据位0和数据位9)用第一组所列波特率来判断,若不满足置FLAG为f启用第二组所列波特率来判断。这样便能侦测出第一组和第二组中所列的所有波特率。
开始以基准时钟1接收数据的前10位以基准时钟2接收数据的前10位取中间8位数据除数据位0和数据位9Y开始以基准时钟1接收数据的前10位以基准时钟2接收数据的前10位取中间8位数据除数据位0和数据位9YVYY-<Y等于0XE6?等于等于OXOD?等于0X78?取中间8位数据除数据位0和数据位9图2算法流程图无法侦测等于0XE6?等于0X78?二二等于0X0D?N匸二二-等于0X80?3、功能编译、设计仿真与硬件下载本系统采用Altera公司生产的FLEX10K系列的CPLD芯片,应用该公司的MAX+PLUSII软件完成设计后,需对各种源文件从底层到顶层逐个编译,再进行逻辑仿真。选择器件后,打开检查项目中所有设计文件,通过检测发现在编程器件中可能存在的不可靠性不好的逻辑器件引脚分配。Altera公司推荐的编译器可自动为项目进行引脚分配,也可人工调整引脚。在编译器窗口选择Start按钮,将对所有设计的项目进行处理,出现错误将给出具体错误提示。为了保证设计的正确性,在编译通过后,还需要进行逻辑仿真。仿真通过后再运用MAX+PLUSII的编程器对所选可编程逻辑器件下载编程,便完成了数据接收模块的ASIC芯片设计和硬件固化。最后给出数据接收仿真波形图,如图3所示:
接收下一个字符“0xF8”,从接收的结果可以看出,数据接收正确。参考文献:1、 周立功等:单片机与CPLD综合应用技术,北京航空航天大学出版,2003年9月2、 诸振勇等:FPGA设计及应用,西安电子科技大学,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论