HDLC的FPGA实现方法

[11-20 16:15:03]   来源:http://www.88dzw.com  FPGA   阅读:8146

文章摘要:transmitter模块由发送定时子模块tx_timer、发送数据子模块tx_data、标志发生器子模块7e_generator、发送CRC计算子模块tx_crc、数据插零子模块zero_insert等组成,见图3。HDLC的数据发送时钟tx_clk由外部电路提供(在必要时也可把这些外部电路综合进同一片FPGA),工作时钟op_clk的频率比数据发送时钟高出几倍并锁相于数据发送时钟,能以高于比特发送的速度执行对数据的操作。图3待发送数据是由外部CPU通过interface模块写入指定地址的缓冲存储器的。在HDLC中,可以选用的缓冲存储器类型有FIFO(先进先出)存储器、DPRAM(双端口RA

HDLC的FPGA实现方法,标签:fpga是什么,fpga教程,http://www.88dzw.com
transmitter模块由发送定时子模块tx_timer、发送数据子模块tx_data、标志发生器子模块7e_generator、发送CRC计算子模块tx_crc、数据插零子模块zero_insert等组成,见图3。
HDLC的数据发送时钟tx_clk由外部电路提供(在必要时也可把这些外部电路综合进同一片FPGA),工作时钟op_clk的频率比数据发送时钟高出几倍并锁相于数据发送时钟,能以高于比特发送的速度执行对数据的操作。


图3


待发送数据是由外部CPU通过interface模块写入指定地址的缓冲存储器的。在HDLC中,可以选用的缓冲存储器类型有FIFO(先进先出)存储器、DPRAM(双端口RAM)存储器、移位寄存器等。在本设计中,发送数据的存储使用的是数据锁存移位寄存器。使用这种寄存器的优点是:写入的待发送数据经锁存后,可在任何时候(包括正在发送时)对数据的任何部分读出检查,并且数据可直接串行移位做CRC计算,简化FPGA设计。这种寄存器由数据锁存器和串行移位寄存器两部分组成,占用芯片资源较多,但对于有大量片上存储器可用的FPGA 芯片来说,这点是不成问题的。
"7E"标志加在发送数据段的前后,其时序由tx_timer确定。在发送启动时,先发"7E"再发数据。
发送CRC计算子模块tx_crc由16个带赋能端e的D触发器组成,其电路图见图4,可用来按照x16 + x12 + x5 + 1的生成多项式进行16位CRC计算。该电路的原理可参看数据通信教科书,此处不再赘述,仅说明几点:
a. 如果要改变CRC的位数,只要改变D触发器的数量。
b. 如果要改变CRC生成多项式,仅需将多项式中非零系数项对应的D触发器的输出与d1信号"异或"后送至下一个D触发器的输入。
c. 通过给D触发器的PRN端或CLRN端置"0",就可改变CRC计算的初始值。
这个例子可说明用FPGA设计的CRC电路具有极大的灵活性。


图4


发送的数据经CRC计算并将计算结果附在数据后面,再经"插零"后附上"7E"标志就可输出。"插零"操作由子模块zero_insert完成。子模块tx_data监视着每一个串行移出的数据,当发现数据流中出现五?quot;1"时,就输出控制信号1f_detect/ 暂停数据移位,此时子模块zero_insert向数据流插入一个"0"比特。
子模块tx_data中存储着待发送数据的比特长度值,并随时和已发送数据的比特长度值比较。当出现两者相等的情况时,判定为数据发送完毕,子模块tx_crc停止CRC计算并把计算结果输出。再经过16个数据时钟后,子模块7e_generator发出"7E"作为结束标志,同时向接口模块interface发出tx_data_empty信号表示数据发送结束。


3.3 HDLC数据接收模块receiver


receiver模块的主要功能是:产生与本路HDLC接收数据时钟同步的FPGA工作时钟;在接收的数据流中检测有无"7E"标志;当检测到数据流中有"1F"信号时,对数据进行"删零"操作;对经"删零"后的数据进行CRC校验;把接收到的数据进行串/并转换并存入双端口RAM;当接收到结束标志后,检查CRC校验值是否正确,向interface模块发出rx_data_ready信号。
receiver模块由接收定时子模块rx_timer、接收数据子模块rx_data、标志检测子模块7e_detector、数据删零子模块zero_delete、接收CRC校验子模块 rx_crc等组成,见图5。
对比receiver模块和transmitter模块,虽然两者一些子模块的功能是相逆的,但其原理是类似的,因此不再重复说明。
在receiver模块中采用了双端口RAM来作为HDLC接收数据缓存器,因此FPGA内部向双端口RAM写入数据和FPGA外部向双端口RAM读出数据可以分别通过两个端口独立的数据地址总线同时进行。

上一页  [1] [2] [3] [4]  下一页


Tag:FPGAfpga是什么,fpga教程FPGA

《HDLC的FPGA实现方法》相关文章

分类导航
最新更新
热门排行