matlab rsenc函数,Xilinx RS编码IP核仿真验证
最近做的项目中用到了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核仿真验证相关推荐
- Xilinx RS编码IP核仿真验证
最近做的项目中用到了RS编码,FPGA代码中是通过调用Reed-Solomon Encoder IP核来实现的.这里以R-S(255,223)为例,分别对单通道和多通道两种情况进行了仿真验证,下面给出 ...
- Xilinx DDR3 —— MIG IP核的读写仿真(APP接口)
在上一篇中Xilinx DDR3 -- MIG IP核的配置(APP接口),已经观看了Xilinx官方提供的MIG IP核读写例程仿真波形,本着学习的目的,本篇开始自己编写MIG IP核读写程序,用于 ...
- FPGA开发技巧备忘录——大量相同类型IP核仿真时tcl简化写法
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 FPGA开发技巧备忘录--大量相同类型IP核仿真时tcl简化写法 前言 通配符* 前言 之前在<modelsim独立仿真quar ...
- Xilinx vivado 常用IP核使用
目录 1. Accumulator 12.0 2. Aurora 8B10B 11.1 3. Clocking Wizard 3.1. 时钟资源 4. Divider Generator 5.1 5. ...
- 【沧小海笔记】之基于FPGA的以太网设计相关知识——第三章 xilinx 三速以太网IP核(TEMAC)的介绍
总目录在这里哦~ https://blog.csdn.net/z123canghai/article/details/114649502 Xilinx为我们提供了一个叫做"Tri-Mode ...
- Xilinx的FIR IP核使用方法(参数重构改变滤波器形式)
FIR IP核可配置为极点系数为0的横向滤波器结构 IP 核配置 Filter coefficients 这里配置滤波器的类型,在Filter type中可将滤波器配置为单比率.抽取.插值滤波器.对于 ...
- Xilinx HLS FFT IP核运行时动态配置FFT长度
如上图所示,xilinx hls的fft ip核不仅可以计算固定长度的FFT变换,还可以在运行时动态配置fft变换长度,但其可配置的长度仅限于小于等于最大长度的所有可能的2的幂,即若该fft ip可支 ...
- 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 ...
- 【基于EDK的嵌入式系统】 关于Xilinx EDK添加自定义IP核到PLB总线后linux无法boot的问题
在成功移植Montavista到ML507开发板之后,尝试添加最简单的用户自定义IP核到PLB总线上,自定义IP核包含一个可以访问的wire型寄存器reg0,并给assign reg0 = 32'd1 ...
- XILINX中DDR3 IP核的使用
前言 最近一直在查找关于DDR3的资料,网上也有很多介绍,这篇主要是记录我的学习过程,以防后期遗忘.本篇主要是针对如何运用XILINX的MIG核,因个人能力有限,对DDR3的硬件外围电路和原理只是大概 ...
最新文章
- 分布式系统的面试题11
- ecplise中插件Jrebel的安装
- PHP+Mysql数据库操作简类
- AngularJs学习笔记(3)--$scope中的$apply和$digest方法
- 问题集锦(1-10)
- 关于Qstring.replace传参Qstring.length为0引起程序退出的记录
- 如何进入鸿蒙系统,魅族确认接入鸿蒙系统!并且即将亮相和用户碰面
- Oracle应用容器云的自由
- securecrt哪个版本好用_电脑跑分测试软件哪个好?好用的电脑跑分软件推荐
- 酒店叫醒系统服务器,酒店叫醒服务的流程
- 找出100以内内被7整除的数,每行显示7个,然后换行显示
- 关于Nginx的配置文件解析
- git分支添加访问权限
- django 环境配置.
- 无法绑定到新的显示成员,参数名:newDisplayMember
- golang爬取Instagram内容下载地址
- 京东QQ都没有的牛轰特效、两个ListView联动效果,不用stickyheaderlistview,
- iomega ix2 Android,Lenovo Iomega ix2系统安装_联想 IOMEGA IX2_服务器评测与技术-中关村在线...
- staruml 依赖于 libgcrypt11 (= 1.4.5);然而:未安装软件包 libgcrypt11。
- 数据库笔试——查出各部门超出部门平均薪资的员工的姓名,薪资,所在部门名称及部门平均薪水...