赛灵思的prbs模块

//------------------------------------------------------------------------------
//    File Name:  PRBS_ANY.v
//      Version:  1.0
//         Date:  6-jul-10
//------------------------------------------------------------------------------
//
//      Company:  Xilinx, Inc.
//  Contributor:  Daniele Riccardi, Paolo Novellini
//
//   Disclaimer:  XILINX IS PROVIDING THIS DESIGN, CODE, OR
//                INFORMATION "AS IS" SOLELY FOR USE IN DEVELOPING
//                PROGRAMS AND SOLUTIONS FOR XILINX DEVICES.  BY
//                PROVIDING THIS DESIGN, CODE, OR INFORMATION AS
//                ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE,
//                APPLICATION OR STANDARD, XILINX IS MAKING NO
//                REPRESENTATION THAT THIS IMPLEMENTATION IS FREE
//                FROM ANY CLAIMS OF INFRINGEMENT, AND YOU ARE
//                RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY
//                REQUIRE FOR YOUR IMPLEMENTATION.  XILINX
//                EXPRESSLY DISCLAIMS ANY WARRANTY WHATSOEVER WITH
//                RESPECT TO THE ADEQUACY OF THE IMPLEMENTATION,
//                INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR
//                REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE
//                FROM CLAIMS OF INFRINGEMENT, IMPLIED WARRANTIES
//                OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
//                PURPOSE.
//
//                (c) Copyright 2010 Xilinx, Inc.
//                All rights reserved.
//
//--------------------------------------------------------------------------
// DESCRIPTION
//--------------------------------------------------------------------------
//   This module generates or check a PRBS pattern. The following table shows how
//   to set the PARAMETERS for compliance to ITU-T Recommendation O.150 Section 5.
//
//   When the CHK_MODE is "false", it uses a  LFSR strucure to generate the
//   PRBS pattern.
//   When the CHK_MODE is "true", the incoming data are loaded into prbs registers
//   and compared with the locally generated PRBS
//
//--------------------------------------------------------------------------
// PARAMETERS
//--------------------------------------------------------------------------
//   CHK_MODE     : true =>  check mode
//                  false => generate mode
//   INV_PATTERN  : true : invert prbs pattern
//                     in "generate mode" the generated prbs is inverted bit-wise at outputs
//                     in "check mode" the input data are inverted before processing
//   POLY_LENGHT  : length of the polynomial (= number of shift register stages)
//   POLY_TAP     : intermediate stage that is xor-ed with the last stage to generate to next prbs bit
//   NBITS        : bus size of DATA_IN and DATA_OUT
//
//--------------------------------------------------------------------------
// NOTES
//--------------------------------------------------------------------------
//
//
//   Set paramaters to the following values for a ITU-T compliant PRBS
//------------------------------------------------------------------------------
// POLY_LENGHT POLY_TAP INV_PATTERN  || nbr of   bit seq.   max 0      feedback
//                                   || stages    length  sequence      stages
//------------------------------------------------------------------------------
//     7          6       false      ||    7         127      6 ni        6, 7   (*)
//     9          5       false      ||    9         511      8 ni        5, 9
//    11          9       false      ||   11        2047     10 ni        9,11
//    15         14       true       ||   15       32767     15 i        14,15
//    20          3       false      ||   20     1048575     19 ni        3,20
//    23         18       true       ||   23     8388607     23 i        18,23
//    29         27       true       ||   29   536870911     29 i        27,29
//    31         28       true       ||   31  2147483647     31 i        28,31
//
// i=inverted, ni= non-inverted
// (*) non standard
//----------------------------------------------------------------------------
//
// In the generated parallel PRBS, LSB is the first generated bit, for example
//         if the PRBS serial stream is : 000001111011... then
//         the generated PRBS with a parallelism of 3 bit becomes:
//            data_out(2) = 0  1  1  1 ...
//            data_out(1) = 0  0  1  1 ...
//            data_out(0) = 0  0  1  0 ...
// In the received parallel PRBS, LSB is oldest bit received
//
// RESET pin is not needed for power-on reset : all registers are properly inizialized
// in the source code.
//
//------------------------------------------------------------------------------
// PINS DESCRIPTION
//------------------------------------------------------------------------------
//
//      RST          : in : syncronous reset active high
//      CLK          : in : system clock
//      DATA_IN      : in : inject error (in generate mode)
//                          data to be checked (in check mode)
//      EN           : in : enable/pause pattern generation/check
//      DATA_OUT     : out: generated prbs pattern (in generate mode)
//                          error found (in check mode)
//
//-------------------------------------------------------------------------------------------------
// History:
//      Version    : 1.0
//      Date       : 6-jul-10
//      Author     : Daniele Riccardi
//      Description: First release
//-------------------------------------------------------------------------------------------------
// no timescale neededmodule PRBS_ANY(RST, CLK, DATA_IN, EN, DATA_OUT);//--------------------------------------------       // Configuration parameters//--------------------------------------------       parameter CHK_MODE = 0;parameter INV_PATTERN = 0;parameter POLY_LENGHT = 31;parameter POLY_TAP = 3;parameter NBITS = 16;//--------------------------------------------     // Input/Outputs//--------------------------------------------      input RST;input CLK;input [NBITS - 1:0] DATA_IN;input EN;output reg [NBITS - 1:0] DATA_OUT = {NBITS{1'b1}};//--------------------------------------------     // Internal variables//--------------------------------------------     wire [1:POLY_LENGHT] prbs[NBITS:0];wire [NBITS - 1:0] data_in_i;wire [NBITS - 1:0] prbs_xor_a;wire [NBITS - 1:0] prbs_xor_b;wire [NBITS:1] prbs_msb;reg  [1:POLY_LENGHT]prbs_reg = {(POLY_LENGHT){1'b1}};//--------------------------------------------       // Implementation//--------------------------------------------     assign data_in_i = INV_PATTERN == 0 ? DATA_IN : ( ~DATA_IN);assign prbs[0] = prbs_reg; genvar I;generate for (I=0; I<NBITS; I=I+1) begin : g1assign prbs_xor_a[I] = prbs[I][POLY_TAP] ^ prbs[I][POLY_LENGHT];assign prbs_xor_b[I] = prbs_xor_a[I] ^ data_in_i[I];assign prbs_msb[I+1] = CHK_MODE == 0 ? prbs_xor_a[I]  :  data_in_i[I];  assign prbs[I+1] = {prbs_msb[I+1] , prbs[I][1:POLY_LENGHT-1]};endendgeneratealways @(posedge CLK) beginif(RST == 1'b 1) beginprbs_reg <= {POLY_LENGHT{1'b1}};DATA_OUT <= {NBITS{1'b1}};endelse if(EN == 1'b 1) beginDATA_OUT <= prbs_xor_b;prbs_reg <= prbs[NBITS];endendendmodule

verilog prbs相关推荐

  1. 基于verilog的 PRBS编码

    PRBS编码 PRBS 编码原理 verilog PRBS 什么是PRBS?,我相信当你点开这篇博文的时候肯定对PRBS有一定了解,或者你只是单纯了解verilog.对于什么是PRBS,百度百科给出的 ...

  2. 高速接口中的PRBS的设计

    http://bbs.ednchina.com/BLOG_ARTICLE_3018596.HTM 在高速设计中,为了测试高速串行通道传输的误码率,通常通过发送PRBS码来进行测试 原理:用生产函数产生 ...

  3. 常用电路设计之PRBS伪随机码发生器的设计

    一.PRBS伪随机码产生原理 PRBS 伪随机编码是一种专门用于在高速设计中测试高速串行通道传输误码率的一种编码类型. PRBS伪随机码不仅具有随机序列的一些统计特性和高斯噪声所有的良好的自相关特征, ...

  4. Verilog数字系统基础设计-LFSR

    Verilog数字系统基础设计-LFSR 引言 LFSR(线性反馈移位寄存器)用于产生可重复的伪随机序列PRBS,该电路由n级触发器和一些异或门组成.在每个时钟周期内,新的输入值会被反馈到LFSR内部 ...

  5. Verilog与SystemVerilog编程陷阱:怎样避免101个常犯的编码错误

    这篇是计算机类的优质预售推荐>>>><Verilog与SystemVerilog编程陷阱:怎样避免101个常犯的编码错误> 编辑推荐 纠错式学习,从"陷阱 ...

  6. 芯片开发语言:Verilog 在左,Chisel 在右

    来源 | 老石谈芯 在最近召开的RISC-V中国峰会上,中科院计算所的包云岗研究员团队正式发布了名为"香山"的开源高性能处RISC-V处理器.前不久我有幸和包老师就这个事情做了一次 ...

  7. sublime Text3安装和verilog安装

    百度下载sublime text3,安装 百度:sublime text 3 Package Control安装步骤 (在sublime中安装package control) 到官网去下载Packag ...

  8. 关于Verilog HDL的一些技巧、易错、易忘点(不定期更新)

    本文记录一些关于Verilog HDL的一些技巧.易错.易忘点等(主要是语法上),一方面是方便自己忘记语法时进行查阅翻看,另一方面是分享给大家,如果有错的话,希望大家能够评论指出. 关键词: ·技巧篇 ...

  9. Verilog代码规范I

    Verilog代码规范I "规范"这问题 "规范"这个富含专业气息的词汇(个人感觉),其实规范这种东西,就是大家都约定熟成的东西,一旦你不遵守这个东西,专业人士 ...

最新文章

  1. Android 3.0 r1 API中文文档(107) —— AsyncPlayer
  2. BZOJ1295 [SCOI2009]最长距离
  3. css的三种定位方式使用探讨
  4. vue 可视化布局工具_GitDataV一款Github的'大数据可视化平台'
  5. Tensorflow:在Tensorflow的不同版本中如何实现Xavier参数权重初始化
  6. Intel Realsense D435 python 实战(二)
  7. SAP Commerce Cloud 项目 Spartacus 入门
  8. dsp课程设计c语言源码,DSP课程设计-基于C语言实现256点的FFT精选.pdf
  9. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 12丨游戏玩法分析 V【难度困难】
  10. Swift 5 时代的机遇与挑战到底在哪里?
  11. Nginx 日志配置实践
  12. 学习 Shell —— 括号、引号
  13. 使用dsoFramer开始Office应用程序
  14. Ontrack易恢复最新版EasyRecovery数据恢复软件功能
  15. 亚马逊显示在售商品为0怎么办?亚马逊新品货还没到就在售了
  16. 【工大SCIR笔记】自然语言处理领域的数据增广方法
  17. 【论文笔记】Learning from Multiple Cities: A Meta-Learning Approach for Spatial-Temporal Prediction
  18. public/private/protected的具体区别
  19. 处理R安装后出现You're using a non-UTF8 locale, therefore only ASCII characters will work.的情况
  20. 【踩坑】npm ERR! missing script: serve

热门文章

  1. JVM(2)垃圾收集器
  2. 【数据结构】树与树的表示、二叉树存储结构及其遍历、二叉搜索树、平衡二叉树、堆、哈夫曼树与哈夫曼编码、集合及其运算
  3. 手机充值业务python_小伙利用Python爆破某会员网站,充会员?不存在的!
  4. canvas下雪效果(原生js)
  5. 易语言服务器停止运行程序,易语言防止程序运行时 系统自动关闭显示器
  6. html动画爱心制作代码,CSS心形加载的动画源码的实现
  7. java中IO流体系以及常用实现类
  8. vs修改项目属性无效的原因
  9. UOS x86安装Intel网卡驱动
  10. 行流 - 通用;仅使用库存接口开单 and 行流 - 通用;