基于FPGA的异步串行通信的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于FPGA的异步串行通信的实现
【摘要】随着FPGA的飞速发展,在异步串行通信中FPGA发挥着越来越重要的作用。本文基于Altera公司的FPGA芯片,采用Verilog硬件描述,给出了帧同步的提取方法,成功地提取了同步信号位和数据位。
【关键词】FPGA;Verilog;帧同步
0 引言
异步串行通信要求的传输线少、可靠性高、传输距离远,被广泛应用于计算机和外设的数据交换。异步串行通信是以帧为单位,每帧按照通信协议进行传输,并且数据的发送端和接收端都使用各自的时钟控制数据的发送和接收过程[1];接收端先数据解调,然后将有效数据传输给终端设备。
对于接收端的数据解调,首先要从数据流中提取同步信号位信息,然后提取数据位信号。同步信号位信息提取性能的好坏直接影响到整个数据的解调质量,甚至影响整个通信系统的性能[2]。传统的帧设计很难做到位同步,随着FPGA 的飞速发展及Verilog语言的出现,用FPGA来实现同步信号位的提取,不仅简化了电路、缩小了体积、提高了可靠性,而且设计时的灵活性更大、保密性更好。
1 通信协议及接收思路
FPGA的输入是485收发器传输过来的信号rxd,并不是标准的485通信协议,其帧结构如图1所示,其特点如下:
图1 输入信号rxd波形
(1)每一帧长度固定为25位;
(2)波特率为1Mbit/s;
(3)每一帧由同步信号位和数据位组成,前13位为1111111111110的二进制同步序列,后12位为数据位;
(4)当矩形脉冲信号占空比为75%时,表示数据“1”;当矩形脉冲信号占空比为25%时,表示数据“0”。
FPGA接收信号的步骤如下:
(1)先检测输入信号每一位数据的上升沿,当检测到输入信号的上升沿,把输入采样信号tb_zhen置1,并开始计数,当计数计到输入信号每一位的中间位置时,把tb_zhen置0,保证每次采样都是在每一位数据的中点处,可以得到
一组与输入同步的30%占空比的方波信号tb_zhen;
(2)在tb_zhen下降沿的时候,开始读取输入信号电平,此时得到的逻辑电平就认为是输入信号的电平信号,读取的信号电平较输入有0.5us的延时;
(3)帧同步的提取,可以考虑采用有限状态机实现帧同步,也可以采用队列模式实现,当13位寄存器中出现1111111111110时,就认为同步完成,数据位已经到来;
(4)当检测到同步完成后,开始接收和发送数据,当下一次同步完成时,进行下一轮数据的接收和发送。
2 软件设计
3 实测波形
为了进行对数据提取的检测,将程序下载到EP1C6系列的FPGA里进行数据采集,为了便于观察,主要测量5种波形:tb_zhen的波形、帧同步完成sys_tb 波形、完整的帧sjs_zhen波形、同步信号位sys_pd波形、数据位sys_sj波形。如图3所示。(a)是rxd和tb_zhen的波形,(b)是rxd和sys_tb的波形,(c)是rxd和sys_zhen的波形,(d)是rxd和sys_pd的波形,(e)是rxd和sys_sj的波形。从下面的波形可以看出,解帧后的输出波形和输入波形是一样的,说明对输入电平的读取及帧同步过程是正确的,并成功地提取了同步信号位和数据位数据。
4 结束语
本文使用Verilog语言成功地实现了对输入电平的正确读取和帧同步的提取,体现了FPGA的强大功能。文中的通信协议并不是标准的485通信协议,但是实际效果比485通信协议方便可靠,具有一定的应用价值。
【参考文献】
[1]阳宪惠.现场总线技术及其应用[M].清华大学出版社,1999.
[2]叶懋,景新辛,杨海燕.基于Verilog语言的帧同步的实现[J].系统仿真技术,2007.
[3]夏宇闻.Verilog数字系统设计教程[M].北京航空航天大学出版社,2008.
[4]Lee,Weng Fook. Verilog coding for logic synthesis[M].Hoboken,N.J.:Wiley-Interscience,2003.