使用HDL优化的CRC库块
此示例显示如何使用HDL优化的CRC生成器和CRC检测器库块,然后配置这些块以满足IEEE®802.11标准[1].
简介
该模型展示了如何使用HDL优化的CRC生成器和检测器库块进行仿真和HDL代码生成。应用采用802.11标准。要了解有关HDL对HDL优化的CRC块的HDL支万博1manbetx持的更多信息,请参阅通用CRC生成器HDL优化块。要了解更多关于区块所使用的算法,请参阅[2].
要打开这个示例模型,运行以下命令:
modelname =“commcrchdl”;open_system (modelname);
在这个模型中,顶层子系统CRC子系统
包含HDL优化CRC生成器和检测器块。这个子系统也有AddNoise
子系统,您可以选择添加噪声到生成的CRC校验和。使用实例打开该子系统。
Systemname = [modelname .“/ CRC子系统”];open_system (systemname);
参数设置
多项式
CRC-CCITT在IEEE®802.11标准中用于保护SIGNAL、SERVICE和LENGTH字段。行向量[1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1]表示多项式:
初始状态
演示中HDL优化的CRC生成器块使用直接方法,这意味着它将消息馈送到校验和移位寄存器的最高有效位(MSB),并在不填充零的情况下处理消息。IEEE 802.11 CRC的实现示意图如图15-2所示。的初始状态设置为1
.
最终异或值
的最终异或值设置为0 xffff
来实现CRC校验和的补充。
输入信号
本模型中的测试向量使用802.11标准中指定的DBPSK信号示例。测试数据填满了crc_len
在流模式下以16位/样本处理零。变量dataIn_width
,为CRC Generator输入端口的端口宽度dataIn,定义数据处理速度。mlen
定义控件信号中的周期startIn,endIn,validIn.dlen
信号的脉冲宽度validIn信号。输入信号配置在InitFcn中的回调函数。模型属性对话框。
% DBPSK数据数据= [0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0];Crc_len = 16;% pad crc_len 0MSG = [data zero (1,crc_len)];dataIn_width = 16;mlen = length(msg)/dataIn_width;dlen = length(data)/dataIn_width;
为满足您的设计要求,您可以更改dataIn_width
本例中为8,4,2或1bit。例如,如果您正在处理长度为56的数据,除了填充8位零和使用dataIn_width
16、你可以选择dataIn_width
以8为保证mlen
而且dlen
都是整数。
输出信号
使用以下命令运行模型:
sim (modelname);
几个关键信号已经被记录到工作空间中。这些信号可以在逻辑分析器窗口中查看。这个函数commcrchdl_plot
展示如何设置逻辑分析器显示。有关逻辑分析器系统对象™的更多信息,请参阅dsp。LogicAnalyzer
.
h = commcrchdl_plot(dataIn,startIn,endIn,validIn,…dataOut_gen、startOut_gen endOut_gen validOut_gen,…dataIn_det、dataOut_det startOut_det、endOut_det validOut_det,犯错);
dataIn,startIn,endIn,validIn为HDL CRC发生器的输入数据和控制信号。dataOut_gen(CRC生成器的输出)显示带有校验和的消息dataIn_width
每样本位。您可以读取校验和时endOut_gen在输出波形中是高的。的值0 x5b57匹配802.11标准章节15.2.3.6中规定的CRC-16 FCS。dataIn_det显示带有损坏的校验和的消息。dataOut_det显示CRC检测器输出的消息。时检测到错误犯错信号很高。犯错有效时,endOut_det是活跃的。
在CRC发生器和检测器的输出端引入初始延迟。可以使用以下命令计算初始延迟:
initial_delay_gen = crc_len/dataIn_width + 2;initial_delay_det = 4*crc_len/dataIn_width + 4;
检查和生成HDL代码
要检查并生成此示例的HDL代码,您必须拥有HDL Coder™许可证。
您可以使用命令makehdl (subsystemname)
而且makehdltb (subsystemname)
生成各子系统的HDL代码和测试平台。
将子系统名称指定为“发射器中的commcrchdl/CRC子系统/HDL CRC”或“接收器中的commcrchdl/CRC子系统/HDL CRC”。
选择引用
IEEE 802.11:无线局域网介质访问控制(MAC)和物理层(PHY)规范。(2007修订)。IEEE-SA。二零零七年六月十二日。
Giuseppe Campobello, Giuseppe Patane, Marco Russo。并行CRC实现IEEE计算机汇刊第52卷,no。10,第1312-1319页,2003年10月。