System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于FPGA的HDLC模块设计方法技术_技高网

基于FPGA的HDLC模块设计方法技术

技术编号:40068212 阅读:6 留言:0更新日期:2024-01-16 23:45
本发明专利技术涉及一种基于FPGA的HDLC模块设计方法,包括:将通信帧中的地址字段、控制字段和信息字段及对应的CRC校验结果通过发送通道的数据输入端口写入FIFO1;将FIFO1中的数据按位读出,将数据写入FIFO2并添加帧头标志和帧尾标志;从FIFO2按位读出数据,并通过发送通道的数据输出端口发送数据;将接收通道输入端口接收到的数据进行串并转换,将除帧头标志外的其它数据写入FIFO3;从FIFO3中按位读出数据,将地址字段、控制字段、信息字段写入FIFO4,将CRC校验结果写入CRC校验结果寄存器;从FIFO4按位读出数据并通过接收通道的数据输出端口发送数据,计算读出数据的CRC校验结果,与CRC校验结果寄存器中的值进行对比后置位。本发明专利技术降低了HDLC协议的实现难度,提高了HDLC模块程序的复用性。

【技术实现步骤摘要】

本专利技术涉及通信,具体涉及一种基于fpga的hdlc模块设计方法。


技术介绍

1、开放式系统互连参考模型由国际标准化组织和国际电报电话咨询委员会联合制定,为开放式互连信息系统提供了一种标准的功能结构框架,该框架从低到高分为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。其中,数据链路层定义了在通信链路上如何传输数据,包括如何将数据组帧,如何控制帧在通信链路上的传输等。

2、高级数据链路控制方法(hdlc,high-level data link control)是数据链路层中使用最广泛的协议之一,具有传输透明、可靠性高、传输效率高、适应性强等特点。hdlc协议的帧结构由标志字段、地址字段、控制字段、信息字段和校验字段组成。其中,标志字段是帧的起始与结束标志,通常选用16进制的0x7e表示标志字段;地址字段用于存放主站与从站的地址;控制字段用于存放控制命令;信息字段用于存放主站与从站之间的交互信息;校验字段用于存放地址字段、控制字段和信息字段根据校验序列运算后的校验结果。hdlc协议是一种基于比特传输的通信协议,其采用位填充技术和循环冗余校验保证数据传输的可靠性:

3、(1)位填充技术

4、在根据hdlc协议进行比特传输的过程中,其它字段中可能会含有与标志字段‘01111110’相同的字段,为了避免接收方将其误认为是标志字段而导致通信错误,通常采用位填充技术解决这一问题。在发送端,每5位连续的‘1’后插入1位‘0’;在接收端,每检测到5位连续的‘1’,若第6位为‘0’,则将其删除,若第6位为‘1’,则认为其为标志字段。

5、(2)循环冗余校验(crc,cyclic redundancy check):

6、循环冗余校验利用除法及余数检测数据传输过程中出现的错误,即将传输的数据表示为一个多项式,用其除以校验位表示的另一个多项式,便可实现传输数据与校验位之间的循环校验,得到的余式即为循环冗余校验码。根据校验位宽度和初始值不同、多项式数值不同以及输入、输出是否翻转,循环冗余校验分为crc-16/ccitt、crc-16/modbus、crc-16/x25等不同的标准算法模型。

7、在实际应用中,根据开发平台的不同,hdlc协议有多种实现方式,鉴于其是一种基于比特传输的通信协议,通常采用fpga硬件平台对hdlc协议进行开发。然而,由于hdlc协议的处理过程较为繁琐,导致hdlc协议的开发难度较大,并且在应用中的复用性较差。


技术实现思路

1、有鉴于此,有必要提供一种基于fpga的hdlc模块设计方法。

2、本专利技术提供一种基于fpga的hdlc模块设计方法,该方法包括如下步骤:a.将通信帧中的地址字段、控制字段和信息字段以及对应的crc校验结果通过hdlc模块发送通道的数据输入端口写入fifo1;b.将fifo1中的数据按位读出,根据位填充技术将数据写入fifo2并在fifo2中添加帧头标志和帧尾标志;c.从fifo2按位读出数据,并通过hdlc模块发送通道的数据输出端口发送数据;d.将hdlc模块接收通道输入端口接收到的数据进行实时的串并转换并判断帧头标志,将除帧头标志外的其它数据写入fifo3;e.根据位填充技术从fifo3中按位读出数据,将地址字段、控制字段、信息字段写入fifo4,将crc校验结果写入crc校验结果寄存器;f.从fifo4按位读出数据并通过hdlc模块接收通道的数据输出端口发送数据,实时计算读出数据的crc校验结果,在与crc校验结果寄存器中的值进行对比后置位crc_error。

3、优选地,所述的步骤a包括:

4、在hdlc模块发送通道的输入端,设置一个8bit位宽的数据输入端口tx_din[7:0],将通信帧中的地址字段、控制字段和信息字段通过数据输入端口写入fifo1,同时,对写入的数据进行实时crc校验,并将最终的crc校验结果写入fifo1。

5、优选地,所述的步骤b包括:

6、在将所有数据通过数据输入端口写入fifo1后,首先在fifo2中写入帧头标志,然后从fifo1中按位读出数据并根据位填充技术将数据写入fifo2,当fifo1中所有数据都读出后,在fifo2中写入帧尾标志。

7、优选地,所述的步骤c包括:

8、在hdlc模块发送通道的输出端,设置一个1bit位宽的数据输出端口tx_dout[0:0],从fifo2按位读出数据并通过数据输出端口发送数据。

9、优选地,所述的步骤d包括:

10、在hdlc模块接收通道的输入端,设置一个1bit位宽的数据输入端口rx_din[0:0],当端口接收到数据时,将数据进行实时的串并转换并判断是否为帧头标志:若是,则将端口后续接收到的数据写入fifo3,并对写入的数据量进行统计。

11、优选地,所述的步骤e包括:

12、在将所有数据通过数据输入端口写入fifo3后,根据位填充技术从fifo3中按位读出数据写入fifo4,并统计从fifo3中读出的数据量,当fifo3中仅剩crc校验结果和帧尾标志时,将crc校验结果从fifo3中读出并写入crc校验结果寄存器后复位fifo3。

13、优选地,所述的步骤f包括:

14、在hdlc模块接收通道的输出端,设置一个8bit位宽的数据输出端口rx_dout[7:0],从fifo4读出数据并通过数据输出端口发送数据,同时,实时计算读出数据的crc校验结果。

15、优选地,所述的步骤f还包括:

16、当fifo4中所有数据都读出后,判断计算的crc校验结果与crc校验结果寄存器中的值是否一致:

17、若crc校验结果与crc校验结果寄存器中的值一致,则将crc_error置0,说明hdlc模块接收通道数据输出端口的数据正确;否则,将crc_error置1,说明hdlc模块接收通道数据输出端口的数据存在错误。

18、本申请结构清晰,易于实现。利用fpga平台将hdlc协议进行模块化设计后,既降低了hdlc协议的实现难度,又提高了hdlc模块程序的复用性,显著改善了hdlc协议开发难度大、复用性差的问题。

本文档来自技高网...

【技术保护点】

1.一种基于FPGA的HDLC模块设计方法,其特征在于,该方法包括如下步骤:

2.如权利要求1所述的方法,其特征在于,所述的步骤a包括:

3.如权利要求2所述的方法,其特征在于,所述的步骤b包括:

4.如权利要求3所述的方法,其特征在于,所述的步骤c包括:

5.如权利要求4所述的方法,其特征在于,所述的步骤d包括:

6.如权利要求5所述的方法,其特征在于,所述的步骤e包括:

7.如权利要求6所述的方法,其特征在于,所述的步骤f包括:

8.如权利要求7所述的方法,其特征在于,所述的步骤f还包括:

【技术特征摘要】

1.一种基于fpga的hdlc模块设计方法,其特征在于,该方法包括如下步骤:

2.如权利要求1所述的方法,其特征在于,所述的步骤a包括:

3.如权利要求2所述的方法,其特征在于,所述的步骤b包括:

4.如权利要求3所述的方法,其特征在于,所述的步骤c包括:...

【专利技术属性】
技术研发人员:王军何昕何家维穆治亚张磊张欣
申请(专利权)人:中国科学院长春光学精密机械与物理研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1