最近做的项目中用到了RS编码,FPGA代码中是通过调用Reed-Solomon Encoder IP核来实现的。这里以R-S(255,223)为例,分别对单通道和多通道两种情况进行了仿真验证,下面给出具体的fpga ip核配置以及仿真结果。

(一)单通道

FPGA中RS IP核的配置如下图所示:

标注1:编码说明,这里选择Custom,后面将与CCSDS进行对比。

标注2:符号宽度:这里选择8。

标注3:这里与域生成多项式保持一致,本例中域生成多项式为:F(x) = x8 + x7 + x2 + x + 1(在GF(2)上定义));

x8 + x7 + x2 + x + 1  => 110000111 => 391,所以这里设置为391。

标注4:比例因子,这里设置为1,matlab仿真与fpga仿真结果一致。

标注5:这里设置为1,因为matlab中rsenc函数生成多项式下标默认从1开始,为了与matlab保持一致,这里设置为1。

这里分别对两组数的rs编码进行了fpga仿真验证,其中一组数为从1开始依次递增的奇数数组,另一组数为从2开始依次递增的偶数数组,下图为fpga仿真结果

奇数组仿真结果输出为:135 22 75 13 200 162 25 226 200 234 222 219 194 99 11 14 5 118 142 109 29 128 78 200 129 148 85 95 252 94 204 223

偶数组仿真结果输出:164 176 176 10 146 170 108 222 255 247 171 126 170 156 144 145 74 16 179 45 151 199 16 12 219 236 139 54 83 128 190 26

这里给出fpga代码和matlab代码:

reg [7:0]   dat_in  ;

reg [7:0]   dat_in1 ;

reg [7:0]   dat_in2 ;

reg [9:0]   dat_cnt ;

reg         flag1   ;

reg         flag2   ;

always @ (posedge I_clk or posedge I_rst)

begin

if(I_rst)

dat_cnt <= 0;

else if(dat_cnt < 512)

dat_cnt <= dat_cnt + 1;

else

dat_cnt <= 600;

end

always @ (posedge I_clk or posedge I_rst)

begin

if(I_rst)

begin

flag1  <= 0;

flag2  <= 0;

end

else

case(dat_cnt)

1:begin flag1 <= 1; flag2 <= 0;end

224:begin flag1 <= 0; flag2 <= 0;end

256:begin flag1 <= 0; flag2 <= 1; end

479:begin flag1 <= 0; flag2 <= 0;end

default:begin flag1 <= flag1; flag2 <= flag2;end

endcase

end

always @ (posedge I_clk or posedge I_rst)

begin

if(I_rst)

dat_in1 <= 1;

else if(flag1)

dat_in1 <= dat_in1 + 2;

else

dat_in1 <= dat_in1;

end

always @ (posedge I_clk or posedge I_rst)

begin

if(I_rst)

dat_in2 <= 2;

else if(flag2)

dat_in2 <= dat_in2 + 2;

else

dat_in2 <= dat_in2;

end

always @ (posedge I_clk or posedge I_rst)

begin

if(I_rst)

dat_in <= 0;

else if(flag1)

dat_in <= dat_in1;

else if(flag2)

dat_in <= dat_in2;

else

dat_in <= dat_in;

end

assign start = ((dat_cnt == 3) || (dat_cnt == 258))? 1  : 0;

rs_encoder  rs_encoder_inst(

.sclr     (I_rst),

.ce       (1'b1),

.rfd      (rfd),

.start    (start),

.rdy      (rdy),

.clk      (I_clk),

.rffd     (rffd),

.info     (info),

.bypass   (1'b0),

.data_in  (dat_in),

.data_out (dout)

);

(二)多通道,这里以2通道为例

此时RS IP核配置如下图:

2通道时,输入数据为从1开始依次递增1的一组数据,2个通道输入的数据个数为223*2=446

多通道时RS IP核编码时序如上图所示,输入数据依次为通道1的数据1,通道2的数据1,通道1的数据2,通道2的数据2,。。。。。,输出结果check symbol部分依次为通道1的check symbol1,通道2的check symbol2,通道1的check symbol2,通道2的check symbol2,。。。。

FPGA仿真结果为:135 164 22 176 75 176 13 10 200 146 162 170 25 108 226 222 200 255 234 247 222 171 219 126 194 170 99 156 11 144 14 145 5 74 118 16 142 179 109 45 29 151 128 199 78 16 200 12 129 219 148 236 85 139 95 54 252 83 94 128 204 190 223 26

matlab rsenc函数,Xilinx RS编码IP核仿真验证相关推荐

  1. Xilinx RS编码IP核仿真验证

    最近做的项目中用到了RS编码,FPGA代码中是通过调用Reed-Solomon Encoder IP核来实现的.这里以R-S(255,223)为例,分别对单通道和多通道两种情况进行了仿真验证,下面给出 ...

  2. Xilinx DDR3 —— MIG IP核的读写仿真(APP接口)

    在上一篇中Xilinx DDR3 -- MIG IP核的配置(APP接口),已经观看了Xilinx官方提供的MIG IP核读写例程仿真波形,本着学习的目的,本篇开始自己编写MIG IP核读写程序,用于 ...

  3. FPGA开发技巧备忘录——大量相同类型IP核仿真时tcl简化写法

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 FPGA开发技巧备忘录--大量相同类型IP核仿真时tcl简化写法 前言 通配符* 前言 之前在<modelsim独立仿真quar ...

  4. Xilinx vivado 常用IP核使用

    目录 1. Accumulator 12.0 2. Aurora 8B10B 11.1 3. Clocking Wizard 3.1. 时钟资源 4. Divider Generator 5.1 5. ...

  5. 【沧小海笔记】之基于FPGA的以太网设计相关知识——第三章 xilinx 三速以太网IP核(TEMAC)的介绍

    总目录在这里哦~ https://blog.csdn.net/z123canghai/article/details/114649502 Xilinx为我们提供了一个叫做"Tri-Mode ...

  6. Xilinx的FIR IP核使用方法(参数重构改变滤波器形式)

    FIR IP核可配置为极点系数为0的横向滤波器结构 IP 核配置 Filter coefficients 这里配置滤波器的类型,在Filter type中可将滤波器配置为单比率.抽取.插值滤波器.对于 ...

  7. Xilinx HLS FFT IP核运行时动态配置FFT长度

    如上图所示,xilinx hls的fft ip核不仅可以计算固定长度的FFT变换,还可以在运行时动态配置fft变换长度,但其可配置的长度仅限于小于等于最大长度的所有可能的2的幂,即若该fft ip可支 ...

  8. XIlinx MIG 控制DDR3 SO-DIMM内存条(三):MIG IP核仿真与调试过程

    之前写这个系列的时候忘记上传了,刚好五一补一下. 文章目录 1 MIG IP核的接口 1.1 AXI4 slave 接口 1.2 Upsizing 1.3 User Interface 1.3.1 C ...

  9. 【基于EDK的嵌入式系统】 关于Xilinx EDK添加自定义IP核到PLB总线后linux无法boot的问题

    在成功移植Montavista到ML507开发板之后,尝试添加最简单的用户自定义IP核到PLB总线上,自定义IP核包含一个可以访问的wire型寄存器reg0,并给assign reg0 = 32'd1 ...

  10. XILINX中DDR3 IP核的使用

    前言 最近一直在查找关于DDR3的资料,网上也有很多介绍,这篇主要是记录我的学习过程,以防后期遗忘.本篇主要是针对如何运用XILINX的MIG核,因个人能力有限,对DDR3的硬件外围电路和原理只是大概 ...

最新文章

  1. 分布式系统的面试题11
  2. ecplise中插件Jrebel的安装
  3. PHP+Mysql数据库操作简类
  4. AngularJs学习笔记(3)--$scope中的$apply和$digest方法
  5. 问题集锦(1-10)
  6. 关于Qstring.replace传参Qstring.length为0引起程序退出的记录
  7. 如何进入鸿蒙系统,魅族确认接入鸿蒙系统!并且即将亮相和用户碰面
  8. Oracle应用容器云的自由
  9. securecrt哪个版本好用_电脑跑分测试软件哪个好?好用的电脑跑分软件推荐
  10. 酒店叫醒系统服务器,酒店叫醒服务的流程
  11. 找出100以内内被7整除的数,每行显示7个,然后换行显示
  12. 关于Nginx的配置文件解析
  13. git分支添加访问权限
  14. django 环境配置.
  15. 无法绑定到新的显示成员,参数名:newDisplayMember
  16. golang爬取Instagram内容下载地址
  17. 京东QQ都没有的牛轰特效、两个ListView联动效果,不用stickyheaderlistview,
  18. iomega ix2 Android,Lenovo Iomega ix2系统安装_联想 IOMEGA IX2_服务器评测与技术-中关村在线...
  19. staruml 依赖于 libgcrypt11 (= 1.4.5);然而:未安装软件包 libgcrypt11。
  20. 数据库笔试——查出各部门超出部门平均薪资的员工的姓名,薪资,所在部门名称及部门平均薪水...

热门文章

  1. 2022中山大学计算机技术专硕考研初试、复试经验帖
  2. 计算机图形学学习记录(一) —— DDA画线算法
  3. c#明华rf读卡器_C#调用第三方API接口-案例明华读卡器
  4. SnagIt - 专业的截图工具
  5. 计算机组成原理课程设计报告总结
  6. 逗游怎么安装计算机丢失文件,原神PC版常见安装问题解决方法汇总
  7. 关于电力系统标准规约的一些理解
  8. ora01017 linux,Oracle linux 7.5安装oracle 12c dg一直提示ORA-01017
  9. 机器学习数学基础篇一:高数基础
  10. EXE反编译方法及工具