0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在FPGA内实现扰码过程

454398 来源:MYMINIEYE微信公众号 作者:MYMINIEYE微信公众号 2020-10-10 15:52 次阅读

一、扰码的作用

数字信号的比特进行随机处理,减少连0和连1的出现,从而减少码间干扰和抖动,方便接收端的时钟提取;同时又扩展了基带信号频谱,起到加密的效果。为了保证在任何情况下进入传输信道的数据码流中“0”与“1”的概率都能基本相等,传输系统会用一个伪随机序列对输入的传送码流进行扰乱处理,将二进制数字信息做“随机化”处理。

二、扰码的原理
伪随机序列是由一个标准的伪随机序列发生器生成的,其中“0”与“1”出现的概率接近50%。用伪随机序列对输入的传送码流进行扰乱后,无论原始传送码流是何种分布,扰乱后的数据码流中“0”与“1”的出现概率都接近50%。扰乱虽然改变了原始传送码流,但这种扰乱是有规律的,可以在接收端解除。将待发送的信息序列与发端产生的m序列进行模二加(扰码),扰码序列通过传输信道传送到接收端,接收端接收到扰码序列,使用同样的m序列进行模二加,即可恢复原来的信息。

三、扰码实现方法
1. 数学模型
扰码模块对每个数据块进行随机化处理,随机化序列和数据块同步,每个数据块都要重新初始化随机序列,随机化从数据块的 MSB 位开始处理,K_BCH 位结束(K_BCH为定义的数据输入长度)。扰码序列的生成多项式为1+X14+X15,初始序列为100101010000000,扰码实现结构如下:

matlab代码

根据以上结构,在matlab里产生伪随机序列,函数代码如下,其中K_BCH 为7032,为一组数据的长度,运行得到7032长度的伪随机序列码。

产生一组随机数据,用作数据的输入,与此同时,这个数据也被用作modelsim的数据输入。输入数据和m序列作模二加,即异或,进行扰码处理,得到最终输出,扰码的matlab的程序如下

3. FPGA实现

在FPGA内实现扰码过程的,并不复杂,主要是信号的控制,这里使用AXI总线的结构,定义模块的输入输出接口如下

名称

方向

有效状态

描述

clk

in

-

时钟,上升沿有效

rstn

in

low

同步复位

s_data_tvalid

in

high

输入数据有效信号

s_data_tdata[0:0]

in

-

数据输入

s_data_tready

out

high

准备接收数据使能

s_data_tlast

in

high

表示输入最后1bit数据

m_data_tvalid

out

high

数据输出有效信号

m_data_tdata[0:0]

out

-

数据输出

m_data_tready

in

high

下一模块接收准备使能

m_data_tlast

out

high

表示输出最后1bit数据

该模块主要处理基于数据块的操作,每个数据完成一次扰码操作,并且每一帧的初始扰码移位寄存器均要初始化。应满足的时序如下

完成的功能为伪随机序列的产生和数据扰码两个过程,如下

通过modelsim仿真波形,可以看到,输入数据经过扰码之后的输出能够减少连1的出现。

4. 数据比对

对同一输入数据,用matlab和FPGA分别进行扰码操作,然后把结果写入到本地,通过对比,验证Verilog代码的正确性。

编辑:hfy


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21309

    浏览量

    593127
  • 无线通信
    +关注

    关注

    56

    文章

    4195

    浏览量

    142297
  • 数字信号
    +关注

    关注

    2

    文章

    796

    浏览量

    47209
  • 仿真波形图
    +关注

    关注

    1

    文章

    5

    浏览量

    3075
收藏 人收藏

    评论

    相关推荐

    FPGA工程师:如何在FPGA实现状态机?

    安全高效的状态机设计对于任何使用FPGA的工程师而言都是一项重要技能。选择Moore状态机、Mealy状态机还是混合机取决于整个系统的需求。无论选择哪种类型的状态机,充分掌握实现方案所需的工具和技巧,将确保您实现最佳解决方案。本
    发表于 03-29 15:02 1.2w次阅读
    <b class='flag-5'>FPGA</b>工程师:如<b class='flag-5'>何在</b><b class='flag-5'>FPGA</b>中<b class='flag-5'>实现</b>状态机?

    测控系统中B同步技术的FPGA实现

    测控系统中B同步技术的FPGA实现
    发表于 08-06 11:48

    器的VHDL编程

    有谁知道器和解器的VHDL编程,各位大哥们教教小弟,小弟菜鸟一个,老师布置的课程设计,后天就要教了!!!{:soso_e109:}{:soso_e109:}
    发表于 11-24 19:23

    PN的同步如何使用FPGA实现??(求助)

    自己设计两个板子,一个用于产生PN,通过数据现传入另一个板子,然后在接收的板子中实现该PN的同步,然后输出到示波器,对比产生的PN和输出PN
    发表于 04-10 14:48

    何在FPGA实现过零检测器?

    大家好!我想知道如何在FPGA中使用VHDL实现过零检测器。所以我想实现一个数字常数小数鉴别器。 firt部分提供了双极性信号,但我想知道如何在
    发表于 01-29 08:16

    器的并行化问题

    如果一个器现在做并行化,例如要求输入位宽为32位,那么本原多项式如何确定?在实现过程中,如果想使用并行,是不是需要将同移位寄存器长一致的周期后状态机算出来呢?不很明白为什么可以
    发表于 05-07 16:53

    通信中器与并行器设计

    的工作频率要求非常高,但是由于串行器是1bit进行的,如果再要求频率过高的话,FPGA是无法实现如此高频率的。所以我们要对其进行并行化处理,以此达到高速的要求。并行
    发表于 07-31 16:30

    什么是CVSD?其算法分析如何在FPGA实现

    的不足,同时也方便在现场可编程门阵列(FPGA)中增加一些其他相关的应用功能,因此在FPGA实现CVSD语音编译码调制功能的前景将是非常广阔的。这里将详细介绍什么是CVSD?其算法分析如何在
    发表于 08-07 07:04

    [Mill]FPGA无线通信课程连载——的原理及实现

    用作modelsim的数据输入。输入数据和m序列作模二加,即异或,进行处理,得到最终输出,的matlab的程序如下3. FPGA
    发表于 12-18 09:37

    何在低端FPGA实现DPA的功能?

    FPGA中,动态相位调整(DPA)主要是实现LVDS接口接收时对时钟和数据通道的相位补偿,以达到正确接收的目的。那么该如何在低端FPGA实现
    发表于 04-08 06:47

    何在FPGA中利用低频源同步时钟实现LVDS接收字对齐呢?

    在串行数据传输的过程中,如何在FPGA中利用低频源同步时钟实现LVDS接收字对齐呢?
    发表于 04-08 06:39

    如何用FPGA实现下行

    下行的生成过程是怎样的?如何用FPGA实现下行
    发表于 04-30 07:24

    突发通信中的Turbo编译码算法的FPGA实现

    Turbo编码器的FPGA实现Turbo译码器的FPGA实现Turbo
    发表于 05-07 06:06

    何在开发板上实现控制扫模块

    本程序编写基于正点原子STM32F407开发板。本文使用的扫模块是下面这个品牌。扫模块的应用场景非常广泛,我们可以上百度搜索一下:等等。今天就来说说如何在开发板上实现控制它吧,打开
    发表于 08-05 08:06

    无线通信中的

    或,进行处理,得到最终输出,的matlab的程序如下: 3. FPGA实现
    发表于 09-21 10:42