一种基于FPGA+ARM架构HDLC协议控制器设计
7E有效个数;传输控制单元采用FPCA实现,主要功能是实现HDLC传输控制逻辑和数据缓存;接口总线采用全双工RS422数据总线,由于RS422传输线为差分电压,因此需要进行电平转化,为此根据设计要求本文设计的控制器选用MAX3491作为电子转换芯片,其转换速度达到10Mbps以满足需要。文中将针对HDLC控制器设计重点介绍数据处理单元、输出控制逻辑两部分。
2.2 HDLC传输控制单元
HDLC传输是按位操作,因此采用FPGA完成,FPGA采用altera公司的CYCLONE Ⅱ系列的FPGA,开发平台基于QuartuslI 6.0开发环境,利用有限状态机设计实现HDLC协议的传输控制部分,并最终以IP核的方式给出设计实现,便于开发人员进行维护和升级。
由于HDLC协议控制器是全双工通信,即包含了HDLC同步比特数据的接收电路设计和HDLC同步比特数据帧的发送电路设计。在FPGA的设计中,接收端和发送端都是基于比特的处理,其功能框图如图2所示。
![](../img/eep/emb/emb-47090azum2z3k5gm.jpg)
在接收端,一直根据接收时钟RCLK信号的上升沿接收数据,在信息帧发出以前,判断帧头“7E”,并记录“7E”个数,当“7E”个数满足设定要求,开始启动信息帧的接收,并开启数1计数器,当遇到连续5个“1”时删除其后的“0”,同时进行串并转换,将数据按8BIT组成一字节,存入FIFO中,整字节接收完毕后,如接收到“7E”表明该信息帧结束,并开始记录“7E”个数,当“7E”个数满足帧尾设定要求,表明该帧接收完毕,否则表示接收出错,抛弃该帧。图3即为接收帧状态转移图。
![](../img/eep/emb/emb-470914v4bdv1us4b.jpg)
在发送端,接收到ARM启动发送指令后,发送相应个数帧头0x7E,然后将数据从发送FIFO中取出,进行并串转换,在根据设置的时钟TCLK的下降沿,逐位发送数据到Tx线路上,并且在连续发送了5个比特“1”后,自动插入比特“0”,发送结束后发送相应个数帧尾0x7E,结束该次发送。发送帧状态转移图如图4所示。
![](../img/eep/emb/emb-470920dyyge0xcxp.jpg)
2.3 HDLC数据处理单元
HDLC数据处理单元主要完成信息的帧的CRC校验和打包解包任务,其处理芯片采用意法半导体的STM32F103系列ARM芯片,该芯片具有开发简单灵活,成本较低的优势。数据处理单元对数据的处理同样包括接收和发送两部分,以接收为例,具体工作流程图如图5所示。
当进入接收中断进程时,首先读空接收FIFO,其中最后两次读出的数据为该帧信息的CRC校验码,利用该校验码进行CRC校验,校验采用CRC-16-CCITT标准,生成r取值为16,其生成多项式为:C(x)=x16+x12+x2+1传统CRC校验是对消息逐位处理,对于ARM来说,这样效率是很低的。为了提高时间效率,通常的思想是以空间换时间。考虑到内循环只与当前的消息字节和crc_reg的低字节有关,针对crc_reg低字节建立数表进行查询相应的CRC校验码,最终循环完毕如果没有差错发生则结果应为0。
发送单元与接收单元类似,为其逆过程,首先将信息按约定帧格式打包,然后进行CRC校验,将校验码放入信息帧的最后2个字节,并将该信息帧通过数据总线存入FPGA的发送FIFO中,最后写入发送标志字,启动FPGA发送传输控制逻辑。
3 验证及结果
为完成设计,首先采用ModelSim进行仿真验证,如图6所示通过激励文件生成ARM与FPCA的读写时序,给出符合HDLC帧格式的一组数据写入FPGA发送FIFO,并启动发送,在激励文件中将RX/RCLK与TX/TCLK短接,形成回环,FPGA根据协议控制器接收到数据,并将数据存入接收FIFO,完成验证。其逻辑时序满足HDLC协议帧格式和通信时序要求。
![](../img/eep/emb/emb-47093k00nx1vb2um.jpg)
最后按照设计要求将设计好的HDLC通信协议控制器加载至FPGA与ARM上,并与串口通信卡BST23109进行回环测试,该卡能够实现串口同步模式,通信满足HDLC协议要求。试验结果表明在5 m通信距离内,波特率可达2 Mb/s,误码率为10-8。
4 结论
文中针对飞行模拟装置中HDLC协议的应用需求开展了HDLC协议控制器的设计,文中首先介绍了HDLC协议的相关内容,然后重点介绍了HDLC协议控制器软硬件实现,详细给出于HDLC协议控制器的没计实现过程。通过仿真和实测试验表明在5m通信距离内,波特率可达2Mb/s,误码率为10-8。在该飞行模拟装置交付使用过程中,该控制器功能完整,能够很好地满足各项指标的技术要求。
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 基于FPGA的快速并行FFT及其在空间太阳望远镜图像锁定系统中的应用(06-21)
- 3DES算法的FPGA高速实现(06-21)
- 用FPGA实现FFT算法(06-21)
- FPGA的DSP性能揭秘(06-16)