中国新通信官方 国内统一刊号:CN 11-5402/TN
国际标准刊号:ISSN 1673-4866
* 投稿网站
中国新通信
《 中国新通信 》
级别:国家级     分类:科技    周期:半月刊
主管单位:中国人民共和国工业和信息化部
主办单位:电子工业出版社
国内刊号:CN 11-5402/TN
国际刊号:ISSN 1673-4866
收稿编辑:QQ /电话2880067970 / 0531-85701017
投稿邮箱:仅支持在线投稿
期刊名称 (*)投稿期刊名称
文章标题 (*)投稿论文的题目
作者姓名 (*)只需填写通讯作者
作者电话 (*)方便编辑及时沟通
作者邮箱 (*)方便编辑做详细用稿答复
上传稿件 (*)限word文件
投稿附言   
期刊信息
期刊名称:中国新通信
主      编:杨帆
出版周期:半月刊
出版地区:北京市
定      价:16.00元
收      录:知网、万方、维普、龙源
社      址:北京173信箱中国新通信杂志社
邮政编码:100029
范文-基于FPGA的串口通信设计-中国新通信

 基于FPGA的串口通信设计

周庆芳
(曲靖师范学院 教育技术研究所,云南曲靖 655011)
摘要:本设计主要研究基于FPGA的RS232异步通信,采用VHDL语言设计分频模块、发送模块、接收模块和显示模块,用键盘输入以及串口调试软件调试拨码开关控制发送资料,并以数码管显示出接收到的数据。该方设计既实现了UART模块化设计,又避免了常用UART芯片复杂与移植性差的缺点,具有可移植、实时性高、集成性好、可靠性高等特点。
关键字:串口通信;FPGA技术;RS232异步通信 
1 引言
现代社会,电子通信技术的发展是日新月异,不断地改变我们的生活,改变着我们的世界。人们对通信的速率、时效、安全、便捷的要求也越来越高[1]。RS232异步通讯协议,数据传输过没有时钟信号,在接收端必须与接收数据进行同步。传统串行接口芯片存体积较大、接口复杂、成本较高、结构无法灵活修改[2]。文本介绍一种采用FPGA实现串口通信的方法,用硬件描述语言编写串口通信模块,既可简化电路,又能提高系统可靠性以及稳定性[3]。
2 原理介绍
2.1串口通信
串口主要用于串行式逐位数据传输,是计算机上一种非常通用设备通信的协议,同时也是仪器仪表设备通用的通信协议,也可以用于获取远程采集设备的数据[4]。串口通信可以在使用一根线发送数据的同时用另一根线接收数据。通信过程使用3根线完成:地线,发送,接收。通用异步收发器的顶层模块由波特率发生器、接收器和发送器构成。发送器的是将准备输出的并行数据按照基本帧格式转为信号串行输出;接收器接收串行信号,并将其转化为并行数据。波特率发生器专门产生一个远远高于波特率的本地时钟信号对输入不断采样,以不断让接收器与发送器保持同步[5]。
2.2异步通信波特率
串行口每秒发送或接收数据的位数为波特率。若发送或接收一位数据需要时间为t,则波特率为1/ t,相应的发送或接收时钟为1/t Hz。发送和接收设备的波特率应该设置成一致,否则会出现校验错或者帧错。波特率发生器是一个分频器,可根据给定的系统时钟频率和要求的波特率算出波特率分频因子。该系数在FPGA实现时是固定的,但对于不同的实现,系数需要更改。使用VHDL的Generic语句可使问题获得两全其美的解决 [6]。
3 设计实现
3.1 波特率发生器的设计
串行异步通信的关键在于准确地检测到起始位,因此接收端的时钟必须采用比波特率更高的时钟信号,以便提高采样的分辨率和抗干扰能力,从而更准确地判定起始位。接收端检测到传输线上电平由高到低的变化后便开始对接收时钟进行计数,当计到8个时钟以后,再次对传输线进行采样,如果仍为低电平,则确认是起始位,而不是干扰信号,之后每隔16个时钟进行一次采样,直到采样到停止位。由仿真结果可知,输入为50MHz晶振信号,输出为送往接收模块和发送模块的9600×11Hz的信号,时钟周期为104us,频率为9600Hz。
3.2 RS232发送顶层模块设计
RS-232发送模块要接收8位数据,并将其串行输出,其参数是固定的: 8位数据,2个停止位,无奇偶校验。RS232发送模块仿真时,输入为9600×1Hz时钟信号、PC机发送的串行数据,输出为PC机发送的串行数据并行输出。图1所示为第一个字符发送波形,数值为“01100110”,发送时低位先发送,其序列应为“01100110”,每一帧数据为10个bit,第一个为起始位,最后一个为停止位,中间的八位为“01100110”,说明了仿真波形的正确性。
1.jpg
图1 发送顶层模块波形仿真图
3.3 RS-232接收顶层模块设计
RS-232接收模块要实现异步接收,必须通过一定的机制与接收到的输入信号同步, 为了确定新数据的到来,先检测开始位,使用几倍于波特率的采样时钟对接收到的信号进行采样。 一旦检测到"开始位",再将采样时钟频率降为已知的发送端的波特率。RS232接收模块仿真时,输入为9600×1Hz时钟信号、发送数据按键,输出为字符串的串行输出。图2中设定的输入信号为“10010110”。接收时将先接收到的数据作为低位,后接收到的数据作为高位,因此转化成的并行数据应为“01101001”,因此仿真波形正确。
2.jpg
图2 接收顶层模块原理图
4 小结
本设计完成采用硬件描述语言和FPGA芯片相结合进行的RS232串行通信的研究,整个设计基于FPGA的可编程特性,完成实时可靠控制,不难看出EDA技术的发展在一定程度上实现了硬件设计的软件化。设计的过程变得相对简单,容易修改,相信随着电子技术的发展,串行通信的功能会更加多样化,FPGA串口通信集成模块的灵活特性将大大满足人们的需要。
参考文献
[1]康华光.电子技术基础.高等教育出版社.2002.
[2]谢自美.电子线路设计、实验、测试.华中理工大学出版社,2003.
[3]王开军,姜宇柏. 面向CPLD/FPGA的VHDL设计.机械工业出版社.2006. 
[4]邢建平,曾凡泰. VHDL程序设计教程[M].清华大学出版社,2005.
[5]刘福奇.基于VHDL的FPGA和Nios II实例精炼.北京航空航天大学出版社,2011.
[6]杨军,李彤. 基于FPGA的SOPC实践教程.科学出版社,2010.