从卷积到卷积码--及Verilog实现

如题所述

第1个回答  2024-11-06
从离散的卷积公式出发,我们可以定义一个特殊的序列,如 h 序列,用于生成特定的输出。在这个序列的卷积运算中,输入序列 x 被替换为特定函数 [公式],该过程产生了卷积码。

上述表达式与FIR滤波器的 impulse response 类似,只是将输入 x 替换为 [公式] 函数。通过图形表示该运算,可以直观地理解这个过程。

选取输出值进行分析,引入两个输出值 [公式] 和 [公式]。这样,可以绘制一个包含 x(n) 和{1,1,1},{1,0,1}卷积的图形。表示为(n,k,l)即(2,1,2),码率R=1/2。

生成多项式{1,1,1}和{1,0,1}在卷积编码中起关键作用,以802.11a为例,其生成多项式是[公式] 和 [公式]。将八进制转换为二进制,分别得到001 011 011和001 111 001。去除最左两个0,得到实际使用形式。

接下来,用Verilog实现上述生成多项式运算。Verilog实现有状态机和移位寄存器两种方式,这里采用后者。首先,展示预期结果并与Matlab结合使用。

测试套件(testbench)中,先通过Matlab输出结果,与Verilog的输出进行对比。Matlab输出简化,代码简单明了。通过将输入输出变量输出到txt文件,使用两个memory在testbench中,可以方便地比较Matlab输入与Verilog输出。

使用命令行将变量输出至文件,接下来编写testbench。通过观察mem和mem_result的值,可以验证结果的准确性。最终,通过比较两个金黄色输出线与mem_result,验证卷积码生成的正确性。
相似回答
大家正在搜