DVB-S码型研究及信道编码的FPGA
g0,g1,,?,gl5,是生成多项式g(X)的16个系数,则有系数
g0=59=00111011,利用线性反馈移位寄存器来实现有限域多项式的除法运算。 RS(204,188)编码器的逻辑电路。
RS编码和BCH码的相同点与不同点:
Bch码是一种纠随机错误较好的码型且目前成果很多,而RS码和BCH码基本相似,只是由以前BIT位的运算变成加洛华域的字节运算,这样大大增强了纠突发错误能力。 数据输入
控制CP为1 RS码
前180字节数据输16个字节寄存
伽罗华域运算 后16字节输出
(图4.6)
数据输出 - 18 -
DVB-S码型研究及信道编码的FPGA
VHDL程序及 quartus ii 编译图
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all;
PACKAGE JIAO_PKG IS
TYPE SHUZU IS ARRAY(16 DOWNTO 1) OF STD_LOGIC_VECTOR(7 DOWNTO 0); END JIAO_PKG;
USE WORK.JIAO_PKG.ALL;
ENTITY RS IS PORT
( A: IN STD_LOGIC_VECTOR(7 DOWNTO 0); B: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); CLK: IN STD_LOGIC; CP: IN STD_LOGIC );
END ENTITY;
ARCHITECTURE FOur OF RS IS
SIGNAL PI: STD_LOGIC_VECTOR(8 DOWNTO 0):=\signal r :shuzu; signal x :integer;
signal y: std_logic_vector(8 downto 0);
SIGNAL P: STD_LOGIC_VECTOR(7 DOWNTO 0):=\signal g:shuzu;
signal g(16):=\signal g(15):=\signal g(14):=\signal g(13):=\signal g(12):=\signal g(11):=\signal g(10):=\signal g(9):=\signal g(8):=\signal g(7):=\signal g(6):=\signal g(5):=\signal g(4):=\signal g(3):=\signal g(2):=\signal g(1):=\
signal g0: STD_LOGIC_VECTOR(7 DOWNTO 0) :=\BEGIN
process (cp) BEGIN
if (cp='0') then
for i in 1 to 188 loop
if (clk'event and clk='1') then
- 19 -
DVB-S码型研究及信道编码的FPGA
p<=a;
for j in 15 downto 1 loop
x<=conv_integer(a) * conv_integer(g(j)) mod conv_integer(pi); y<=conv_std_logic_vector(x); r(j)<=y xor r(j-1); end loop;
x<=conv_integer(a) * conv_integer(g0) mod conv_integer(pi); r(0)<=conv_std_logic_vector(x);
end if; b<=p;
end loop;
elsif (co='1') then
for k in 15 downto 0 loop b<=r(k); end loop;
end if;
end process; end four;
注:由于论文时间紧迫,没有时间完成伽罗华域乘法运算器件,仅转换成实数域进行计算。
4、3、卷积交织
纠错编码在实际应用中往往要结合数据交织技术。因为许多信道差错是突发的,即发生错误时,往往是有很强的相关性,甚至是连续一片数据都出了错。这是由于错误集中在一起,常常超出了纠错码的纠错能力。加入交织是为了加强编码的随机错误纠错能力,它在存在突发错误的环境下是非常有效的。所以在发送端加上数据交织器,在接收端加上解交织器,使得信道的突发差错分散开来,把突发差错信道变成独立随即差错信道,这样可以充分发挥纠错码的作用。
交织过程可算作一个编码过程,他把经过纠错编码的数据进行一定的排列组合,提高原有纠错编码的纠突发错误的能力。数字通信中一般采取的同步交织有2种:(1)块交织 也叫矩阵行列转置法。可以表述为一个二维存储器阵列(N×B)。交织过程是数据先按行写入,再按列读出;解交织过程是数据先按列写入,再按行读出。块交织结构简单但数据延时时间长而且所需的存储器比较大。这种方法将能纠
- 20 -
DVB-S码型研究及信道编码的FPGA
正T个随机错误的码作为行码,I行组成一个矩阵,这样可以纠正T个突发长度为I的错误。(2)卷积交织 是基于Forney的方法。交织器的输入端的输入符号数据按顺序分别进入B条支路延时器,每一路延时不同的符号周期。第一路无延时,第二路延时M个符号周期,第三路延时2M个符号周期,?,第B路延时(B-1)M个符号周期。交织器的输出端按输入端的工作节拍分别同步输出对应支路经延时的数据。卷积交织每条支路符号数据的延时节拍为di= (i- 1)MB,i= 1,2,?,B。解交织器的延时数与交织器相反。
本文采用DVB-S B= 12,M= 17的卷积交织器。输入是RS(204,188,T= 8)误码保护包。交织器有12条支路,也即交织深度为12。
(图4.7)
(注:卷积交织的实现方法很多,有单口RAM,双口RAM等等,但均需很多控制端口,性能较好但相对编程复杂,一下方法为个人以原理图编译的程序,控制端口较少,RAM共用1134个字单元存储器相对理想的1122个仅差12个,但由于控制端口少,实际中易出现问题,但用于学习是不错选择)
本文方法:由上图可以看出:本程序需要12路,第一个支路需1个字节存储器,第二个支路需17+1个,以此类推,第i路共需i*17+1个存储器。存储器向右依次一个字节循环,而后导出,经一个12选一多路器送给输出端口。
- 21 -
DVB-S码型研究及信道编码的FPGA
1字节寄存器(功能延迟) 17+1字节寄存器(功能延 17*2+1字节寄存器(功能延 . 17*3+1字节寄存器(功能延 . 12. 17*4+1字节寄存器(功能延 选. 一. 17*5+1字节寄存器(功能延数据输多. 出 路数据输. 器 17*6+1字节寄存器(功能延. . . 17*7+1字节寄存器(功能延 . . 17*8+1字节寄存器(功能延 17)9+1字节寄存器(功能延 17*10+1字节寄存器(功能 17*11+1字节寄存器(功能 (图4.8)
VHDL程序及 quartus ii 编译图
library ieee;
use ieee.std_logic_arith.all; use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity jiao is port
( datain :in bit_vector(7 downto 0); dout1:out bit_vector(7 downto 0); dout2:out bit_vector(7 downto 0); dout3:out bit_vector(7 downto 0); dout4:out bit_vector(7 downto 0); dout5:out bit_vector(7 downto 0);
- 22 -
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库DVB-S 码型研究及信道编码FPGA实现(5)在线全文阅读。
相关推荐: