基于FPGA的HDB3编译码verilog实现,包括testbench

简介: 基于FPGA的HDB3编译码verilog实现,包括testbench

1.算法仿真效果
vivado2019.2仿真结果如下:

3d7e7d10f9589c35892e56fb04f54234_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
d1b502ee203e83b9f7d2fa9ec566f1a4_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

2.算法涉及理论知识概要
数字基带信号的传输是数字通信系统的重要组成部分。在数字通信中,有些场合可不经过载波调制和解调过程,而对基带信号进行直接传输。采用AMI码的信号交替反转,有可能出现四连零现象,这不利于接收端的定时信号提取。而HDB3码因其无直流成份、低频成份少和连0个数最多不超过三个等特点,而对定时信号的恢复十分有利,并已成为CCITT协会推荐使用的基带传输码型之一。

  三阶高密度双极性码(英语:High Density Bipolar of Order 3 code,简称:HDB3码)是一种适用于基带传输的编码方式,它是为了克服AMI码的缺点而出现的,具有能量分散,抗破坏性强等特点。
   三阶高密度双极性码用于所有层次的欧洲E-carrier系统,HDB3码将4个连续的“0”位元取代成“B00V”。这个做法可以确保连续的violations are of differing polarity,即是相隔单数的一般B记号。

1、连0的个数不超过3时,规则与AMI相同,即0不变,1变为-1、+1交替;

2、若连0的个数超过3,则将每4个0看作一小节,定义为B00V,B可以是-1、0、+1,V可以是-1、+1;

3、B和V具体值满足以下条件:V和前面相邻非0符号极性相同;不看V时极性交替;V与V之间极性交替;

4、一般第一个B取0,第一个非0符取-1。

    在V与V之间如果出现偶数个B时,应在后一个V字节补一个B',定义为B'00V,B'与前面相邻的B之间符号极性相反,这个字节的V和B'符号极性相同。

    由于V会破坏极性交替的规律、B有3种变化以满足规则,所以V称为破坏脉冲、B称为调节脉冲,B00V称为取代节、破坏节。

±1和±B、±V没有区别,这里只是说明它们是0变来的。
-B为补码,值为-1,此字节V符号跟随,为-V
由规则导出的一种编码方法,个人认为这是机器实现时最效率的思路之一:
1、源码是1时,暂时不变;
2、连0不超过3个时不变,有4个或以上连0时把每4个0换为取代节,即B00V;
3、确定B是0还是±1:第一个B一般取0,若两个取代节之间1的个数为偶,易推得后者的B一定是±1,此时B和1遵循的规则完全相同,可以直接记为1,即100V;为奇则一定是0,记为0,即000V。
4、统一确定极性:第一个非0符一般取-1,之后,根据前一个非0符极性,V取同,1取反;
手算的方法多种多样,理清规则,遵循“先满足V之间极性交替,然后确定B”的大方向,皆可迎刃而解。
常见的错误:经常出现 “第一步先转成AMI” 的表述,这无论对于手算还是编程,实际操作起来都是多余的步骤。如例子中的最后一位,HDB3码和AMI码相反,AMI码和HDB3码的极性没有必然关系,因此转成AMI既决定不了1码最终的极性,又不改变0,对HDB3编码过程没有任何帮助。HDB3是改进的AMI,提到它主要是追根溯源、做对比,起到帮助理解记忆的作用,并不是一定要在编码过程中用到它。

1、虽然编码很复杂,但解码规则很简单,就是把原来的取代节(4个连零)找到即可,若3连“0”前后非零脉冲同极性,则将最后一个非零元素译为零,如+1000+1 就应该译成“10000”,否则不用改动;若2连 “0”前后非零脉冲极性相同,则两零前后都译为零,如-100-1,就应该译为0000,否则也不用改动.

2、再将所有的-1变换成+1后,就可以得到原消息码。

3.verilog核心程序
````timescale 1ns / 1ps
module hdb3(
input rst_n,clk,data_in,
output [1:0] bv_out,hdb3_out,state,
output flag,
output [7:0] count,
output hdb3_dec,
output [9:0] fifo_dec
);

wire [1:0] hdb3_vout;
wire [1:0] v_in;
wire [1:0] bv_in;
wire [1:0] hdb3_in;

VB VB_u(
.rst_n (rst_n),
.clk (clk),
.v_in (v_in),
.bv_out (bv_out),
.flag (flag),
.count (count)
);

SV SV_u(
.rst_n (rst_n),
.clk (clk),
.data_in (data_in),
.hdb3_vout (hdb3_vout)
);

hdb3_VB hdb3_VB_u(
.rst_n (rst_n),
.clk (clk),
.bv_in (bv_in),
.hdb3_out (hdb3_out),
.state (state)
);

decode decode_u(
.rst_n (rst_n),
.clk (clk),
.hdb3_in (hdb3_in),
.hdb3_dec (hdb3_dec),
.fifo_dec (fifo_dec)
);

assign v_in = hdb3_vout;
assign bv_in = bv_out;
assign hdb3_in = hdb3_out;

endmodule
```

相关文章
|
5天前
|
机器学习/深度学习 算法 异构计算
m基于FPGA的多通道FIR滤波器verilog实现,包含testbench测试文件
本文介绍了使用VIVADO 2019.2仿真的多通道FIR滤波器设计。展示了系统RTL结构图,并简述了FIR滤波器的基本理论,包括单通道和多通道的概念、常见结构及设计方法,如窗函数法、频率采样法、优化算法和机器学习方法。此外,还提供了Verilog核心程序代码,用于实现4通道滤波器模块,包含时钟、复位信号及输入输出接口的定义。
42 7
|
5天前
|
算法 异构计算
m基于FPGA的MPPT最大功率跟踪算法verilog实现,包含testbench
该内容包括三部分:1) 展示了Vivado 2019.2和Matlab中关于某种算法的仿真结果图像,可能与太阳能光伏系统的最大功率点跟踪(MPPT)相关。2) 简述了MPPT中的爬山法原理,通过调整光伏电池工作点以找到最大功率输出。3) 提供了一个Verilog程序模块`MPPT_test_tops`,用于测试MPPT算法,其中包含`UI_test`和`MPPT_module_U`两个子模块,处理光伏电流和电压信号。
9 1
|
5天前
|
编解码 算法 异构计算
m基于CCSDS标准的LDPC编码器的FPGA实现,包含testbench,码长1024,码率0.5
在Vivado 2019.2中进行的LDPC码仿真展示了算法的良好效果。LDPC码是一种1962年由Gallager提出的稀疏校验矩阵线性分组码,利用Tanner图表示编码解码结构。CCSDS标准定义的LDPC(1024,512)码具有准循环结构,适用于空间通信,其编码通过填充信息比特和校验节点的线性组合实现。Verilog代码示例展示了TEST_encoder_top模块,用于控制LDPC编码过程,包括时钟、复位信号处理和中间数据读取。
23 1
|
5天前
|
存储 算法 异构计算
m基于FPGA的多功能信号发生器verilog实现,包含testbench,可以调整波形类型,幅度,频率,初始相位等
使用Vivado 2019.2仿真的DDS信号发生器展示了正弦、方波、锯齿波和三角波的输出,并能调整幅度和频率。DDS技术基于高速累加器、查找表和DAC,通过频率控制字和初始相位调整产生各种波形。Verilog程序提供了一个TEST模块,包含时钟、复位、信号选择、幅度和频率控制输入,以生成不同波形。
39 18
|
5天前
|
算法 计算机视觉 异构计算
基于FPGA的图像累积直方图verilog实现,包含tb测试文件和MATLAB辅助验证
该内容展示了FPGA实现图像累积直方图的算法。使用Vivado2019.2和matlab2022a,通过FPGA的并行处理能力优化图像处理。算法基于像素值累加分布,计算图像中像素值小于等于特定值的像素个数。核心代码为`test_image`模块,读取二进制图像文件并传递给`im_hist`单元,生成直方图和累积直方图。
|
5天前
|
算法 异构计算
基于FPGA的ECG信号滤波与心率计算verilog实现,包含testbench
基于FPGA的ECG信号滤波与心率计算verilog实现,包含testbench
|
5天前
|
算法 异构计算
m基于FPGA的电子钟verilog实现,可设置闹钟,包含testbench测试文件
该文介绍了基于FPGA的电子钟设计,利用Vivado2019.2平台进行开发并展示测试结果。电子钟设计采用Verilog硬件描述语言,核心包括振荡器、分频器和计数器。时间显示为2个十进制格式,闹钟功能通过存储器和比较器实现,当当前时间等于设定时间时触发。文中给出了Verilog核心程序示例,展示了时钟信号、设置信号及输出的交互。
42 2
|
5天前
|
算法 5G 数据处理
m基于FPGA的PPM光学脉位调制解调系统verilog实现,包含testbench
m基于FPGA的PPM光学脉位调制解调系统verilog实现,包含testbench
60 0
|
5天前
|
算法 异构计算 索引
m基于FPGA的Hamming汉明编译码verilog实现,包含testbench测试文件,不使用IP核
m基于FPGA的Hamming汉明编译码verilog实现,包含testbench测试文件,不使用IP核
52 1
|
5天前
|
算法 异构计算
m基于FPGA的RS+卷积级联编译码实现,RS用IP核实现,卷积用verilog实现,包含testbench测试文件
m基于FPGA的RS+卷积级联编译码实现,RS用IP核实现,卷积用verilog实现,包含testbench测试文件
17 0

热门文章

最新文章