高速接口中的PRBS的设计
http://bbs.ednchina.com/BLOG_ARTICLE_3018596.HTM
在高速设计中,为了测试高速串行通道传输的误码率,通常通过发送PRBS码来进行测试
原理:用生产函数产生一段随机码流,然后按周期循环。
PRBS码的周期长度与其阶数有关,常用的阶数有7,9,11,15,20,23,31.
对于N阶PRBS码,每个周期的序列长度为2^N-1.
在每个周期内,0和1时随机分布的,并且0和1的个数相等。
连续个1的最大数目为n,连续个0的最大数目为n-1(反转后就是n-1个连续1和n个连续0)。
在对高速信号链路进行误码测试时,基本上都是利用PRBS码流来模拟真实的线网码流环境,因为在线网中,所有的数据都是随机出现的,没有任何规律可言,而PRBS码流在一定程度上具有这种“随机数据”特性,二进制0和1随机出现,其频谱特征与白噪声非常接近。PRBS码流的阶数越高,其包含的码流就越丰富,就越接近真实的线网环境,测试的结果就越准确。
一个PRBS序列可以串/并转换成多路(2、4、8、16.路),每路输出的速率降低,但仍然保持原序列的所有特诊,反之,同一时钟源低速多路(2、4、8、16..路)同一个n数的PRBS可以经并/串转换成高速率的n阶PRBS。
下面采用verilog来设计PRBS模块,可以通过外部参数配置PRBS7, PRBS9, PRBS15, PRBS23, PRBS31,
`timescale 1ns / 1ps
module prbs_gen
#(
parameter PRBS_WIDTH = 32,
parameter PRBS_PATTERN = "prbs7" //prbs7,prbs9.prbs15,prbs23,prbs31
)
(
input sys_clk, //系统时钟
input reset_n, //系统复位
input prbs_en, //enable_prbs
input inser_err,
output [PRBS_WIDTH-1:0] prbs_data //prbs_out
);
reg [PRBS_WIDTH-1:0] prbs_reg;
reg [PRBS_WIDTH-1:0] tx_data;
wire feed_data;
wire [PRBS_WIDTH-1:0] prbs_d;
integer m;
//本原多项式
//prbs7 = 1+x^6+x^7
//prbs9 = 1+x^5+x^9
//prbs15 = 1+x^14+x^15
//prbs23 = 1+x^18+x^23
//prbs31 = 1+x^28+x^31
localparam PRI_MAX_WIDTH = 40;
wire [PRI_MAX_WIDTH-1:0] prbs_pri_val;
reg prbs_en_d0,prbs_en_d1;
assign prbs_pri_val = (PRBS_PATTERN == "prbs7")? 40'b0011000001:
(PRBS_PATTERN == "prbs9")? 40'b1000100001:
(PRBS_PATTERN == "prbs15")? 40'b0000110000__0000000001:
(PRBS_PATTERN == "prbs23")? 40'b0000001000_0100000000_1000100001:
(PRBS_PATTERN == "prbs31")? 40'b0000000010_0100000000_0000000000_0000000001:0011000001;
localparam reset_seed = 40'haa_aaaa_aaaa;
always @(posedge sys_clk or negedge reset_n) begin
if(~reset_n) begin
prbs_en_d0 <= #1 'b0;
prbs_en_d1 <= #1 'b0;
end
else begin
prbs_en_d0 <= #1 prbs_en;
prbs_en_d1 <= #1 prbs_en_d0;
end
end
always @(posedge sys_clk or negedge reset_n) begin
if(reset_n == 1'b0) begin
prbs_reg <= prbs_pri_val[(PRBS_WIDTH-1):0];
//prbs_reg <= prbs_pri_val[7:0];
end
else if(prbs_en_d1) begin
for(m =1; m< PRBS_WIDTH; m = m+1)
prbs_reg[PRBS_WIDTH-m-1] <= prbs_reg[PRBS_WIDTH-m];
prbs_reg[PRBS_WIDTH-1] <= feed_data;
end
else
prbs_reg[PRBS_WIDTH-1:0] <= prbs_reg[PRBS_WIDTH-1:0];
end
assign prbs_d = prbs_reg & prbs_pri_val[(PRBS_WIDTH-1):0];
assign feed_data = ^prbs_d;
reg inser_err_d0;
reg inser_err_d1;
reg detect_insererr;
always @(posedge sys_clk or negedge reset_n) begin
if(reset_n == 1'b0) begin
tx_data <= reset_seed[PRBS_WIDTH-1:0];
inser_err_d0 <= 1'b0;
inser_err_d1 <= 1'b0;
detect_insererr <= 1'b0;
end
else begin
inser_err_d0 <= inser_err;
inser_err_d1 <= inser_err_d0;
if(inser_err_d0 == 1'b1 && inser_err_d1 == 1'b0)
detect_insererr <= 1'b1;
else
detect_insererr <= 1'b0;
if(detect_insererr == 1'b1)
tx_data <= {~prbs_reg[PRBS_WIDTH-1],prbs_reg[PRBS_WIDTH-2:0]};
else
tx_data <= prbs_reg[PRBS_WIDTH-1:0];
end
end
assign prbs_data = tx_data;
endmodule
高速接口中的PRBS的设计相关推荐
- 软件的接口设计图_【学术论文】高速接口JESD204B的灵敏放大器设计
摘要 采用UMC 28 nm CMOS工艺,在低电源电压下设计实现了一种高速.低失调的灵敏放大器.在传统差分放大器.AB类锁存器等电路的基础上进行改进,提出了一种新型结构的灵敏放大器.利用Cadenc ...
- 高速USB转8串口产品设计-RS232串口
基于480Mbps 高速USB转8路串口芯片CH348,可以为各类主机扩展出8个独立的串口.使用厂商提供的VCP串口驱动程序,可支持Windows.Linux.Android.macOS等操作系统.使 ...
- 高速USB转4串口产品设计-TTL串口
基于480Mbps 高速USB转8路串口芯片CH344Q,可以为各类主机扩展出4个独立的串口.CH344芯片支持使用操作系统内置的CDC串口驱动,也支持使用厂商提供的VCP串口驱动程序,可支持Wind ...
- 高速USB转8串口产品设计-RS485串口
基于480Mbps 高速USB转8路串口芯片CH348,可以为各类主机扩展出8个独立的串口.使用厂商提供的VCP串口驱动程序,可支持Windows.Linux.Android.macOS等操作系统.使 ...
- zynqsd的读写数据_数据存储结构图 - Zynq7000 FPGA的高速信号采集处理平台的设计搭建以及后续拓展...
通过FPGA搭建A/D数据高速缓存机制,A/D数据经过FPGA的片上缓存,写入DDR A/D数据区,作为高速缓存,DDR其他空间作为ARM控制系统的运行程序,与A/D转换器进行数据交互.数据存储结构图 ...
- 【高速PCB电路设计】6.布局设计流程与案例实践
文章目录 1.布局流程 2.模块布局 3.整体布局 4.叠层与阻抗 4.1设计参数确认 4.2叠层评估 4.3阻抗计算 5.总结 1.布局流程 ①模块布局 ②整体布局 ③叠层与阻抗 ④规则设置 ⑤模块 ...
- 高速PCB设计指南(十)
三. PowerPCB简介 PowerPCB是美国Innoveda公司软件产品. PowerPCB能够使用户完成高质量的设计,生动地体现了电子设计工业界各方面的内容.其约束驱动的设计方 ...
- 【国产虚拟仪器】基于dsp+fpga+AD+ENDAC的半导体运动台高速数据采集电路仿真设计(四)
整个调试验证与仿真分析分三个步骤:第一步是进行 PCB 检查及电气特性测试,主 要用来验证硬件设计是否正常工作:第二步进行各子模块功能测试,包括高速光纤串行 通信的稳定性与可靠性测试, A/D 及 D ...
- 【国产虚拟仪器】基于Zynq的雷达10Gbps高速PCIE数据采集卡方案(二)硬件设计
3.1 引言 采集卡的硬件设计是实现采集功能的基础,良好的硬件设计可以使采集功能更容 易实现,方便软件开发.本章基于第二章的硬件设计方案来详细介绍采集卡硬件设计. 包括载卡和子卡的芯片的选型.配置和具 ...
最新文章
- golang备份和恢复
- ASP.NET【4】--ASHX
- 索引存储模型-二分查找
- 机器学习-聚类之K均值(K-means)算法原理及实战
- Memcached缓存在.Net 中的使用(memcacheddotnet)
- 线程、多线程和线程池,看完这些你就能全部搞懂了
- java编程思想第四版第十八章总结
- 深度学习工作笔记002---曼哈顿距离_欧氏距离
- 编程调节Win7/Win8系统音量的一种方法
- python textrank_TextRank算法提取文本摘要
- Mac安装Mysql(图文解说详细版)
- 机器学习笔记 - 什么是标准正态分布表?
- SSM框架的Web项目实现微信登陆
- 独家对话阿里副总裁李飞飞:数据库的进化之路
- CGArt 2008 Issue
- CAD带文字线型的文字偏移bug介绍
- 韦东山 android 淘宝,韦东山-android音频子系统中audio_policy.conf的usb声卡理解 - 百问网嵌入式问答社区...
- English trip EM3 LP 4B Home Design Relationship Teacher:Ryan
- 7-14 电话聊天狂人(25 分)
- chatgpt研究框架 --技术路线-行业进程研究