mig_7series_v4_0_data_gen_chk

  1. `timescale 1ns / 1ps
  2. //////////////////////////////////////////////////////////////////////////////////
  3. // Company:
  4. // Engineer:
  5. //
  6. // Create Date: 2018/07/17 09:57:04
  7. // Design Name:
  8. // Module Name: mig_7series_v4_0_data_gen_chk
  9. // Project Name:
  10. // Target Devices:
  11. // Tool Versions:
  12. // Description:
  13. //
  14. // Dependencies:
  15. //
  16. // Revision:
  17. // Revision 0.01 - File Created
  18. // Additional Comments:
  19. //
  20. //////////////////////////////////////////////////////////////////////////////////
  21.  
  22. module mig_7series_v4_0_data_gen_chk # (
  23.  
  24. parameter C_AXI_DATA_WIDTH = // Width of the AXI write and read data
  25.  
  26. )
  27. (
  28.  
  29. input clk,
  30. input data_en,
  31. input [:] data_pattern,
  32. input pattern_init,
  33. input [:] prbs_seed_i,
  34. input wrd_cntr_rst,
  35. input rdata_vld,
  36. input [C_AXI_DATA_WIDTH-:] rdata,
  37. input [C_AXI_DATA_WIDTH/-:] rdata_bvld,
  38.  
  39. output reg [:] data_o, // generated data
  40. output reg [:] wrd_cntr // Word count output
  41.  
  42. );
  43.  
  44. //---------------------------------------------------------------
  45.  
  46. // 产生数据
  47. reg [:] lfsr_q = 'h0;
  48. always @(posedge clk)
  49. begin
  50. if(pattern_init)
  51. begin
  52. lfsr_q <= {prbs_seed_i + 'h55555555};
  53. end
  54.  
  55. else if(data_en)
  56. begin
  57. lfsr_q[:] <= lfsr_q[:];
  58. lfsr_q[] <= lfsr_q[] ^ lfsr_q[];
  59. lfsr_q[] <= lfsr_q[] ^ lfsr_q[];
  60. lfsr_q[:] <= lfsr_q[:];
  61. lfsr_q[] <= lfsr_q[] ^ lfsr_q[];
  62. lfsr_q[] <= lfsr_q[] ;
  63. lfsr_q[] <= lfsr_q[];
  64. end
  65. end
  66.  
  67. //---------------------------------------------------------------
  68.  
  69. // 数据向左移
  70. reg [:] walk0 = 'h0;
  71. always @(posedge clk)
  72. begin
  73. if(pattern_init)
  74. walk0 <= 'hFFFF_FFFE;
  75.  
  76. else if(data_en)
  77. walk0 <= {walk0[:],walk0[]};
  78. end
  79.  
  80. //---------------------------------------------------------------
  81.  
  82. //数据向左移
  83. reg [:] walk1 = 'h0;
  84. always @(posedge clk)
  85. begin
  86. if (pattern_init)
  87. walk1 <= 'h0000_0001;
  88.  
  89. else if (data_en)
  90. walk1 <= {walk1[:],walk1[]};
  91. end
  92.  
  93. //---------------------------------------------------------------
  94.  
  95. reg [:] prbs;
  96. always @(*)
  97. begin
  98. prbs = lfsr_q[:];
  99. end
  100.  
  101. //---------------------------------------------------------------
  102.  
  103. // 选择输出数据的模式
  104. always @(*)
  105. begin
  106. case (data_pattern)
  107. 'b001: data_o = prbs; // PRBS pattern
  108. 'b010: data_o = walk0; // Walking zeros
  109. 'b011: data_o = walk1; // Walking ones
  110. 'b100: data_o = 32'hFFFF_FFFF; // All ones
  111. 'b101: data_o = 32'h0000_0000; // All zeros
  112. default: data_o = 'h5A5A_A5A5;
  113. endcase
  114. end
  115.  
  116. //---------------------------------------------------------------
  117.  
  118. //数据计数器
  119. always @(posedge clk)
  120. begin
  121. if (wrd_cntr_rst)
  122. wrd_cntr <= 'h00;
  123.  
  124. else if (rdata_vld)
  125. wrd_cntr <= wrd_cntr + 'h01;
  126. end
  127.  
  128. //---------------------------------------------------------------
  129.  
  130. //此段代码是对输出的数据与读进来数据进行对比,如果不一致,则会产生错误标志位
  131.  
  132. reg [C_AXI_DATA_WIDTH/-:] msmatch_err_sig;
  133.  
  134. genvar i;
  135. generate
  136. begin: data_check
  137. for(i = ; i <= (C_AXI_DATA_WIDTH/-); i=i+)
  138. begin:gen_data_check
  139. always @(posedge clk)
  140. if(wrd_cntr_rst)
  141. msmatch_err_sig[i] <= 'b0;
  142. else if( rdata_vld &
  143. ( (rdata[((i*)+):i*] != data_o[:] & rdata_bvld[(i*)]) |
  144. (rdata[((i*)+):((i*)+)] != data_o[:] & rdata_bvld[(i*)+]) |
  145. (rdata[((i*)+):((i*)+)] != data_o[:] & rdata_bvld[(i*)+]) |
  146. (rdata[((i*)+):((i*)+)] != data_o[:] & rdata_bvld[(i*)+]) )
  147. )
  148. msmatch_err_sig[i] <= 'b1;
  149. else
  150. msmatch_err_sig[i] <= 'b0;
  151.  
  152. end
  153. end
  154.  
  155. endgenerate
  156.  
  157. assign msmatch_err = |msmatch_err_sig;
  158.  
  159. endmodule
  160.  
  161. /*
  162. add_force {/mig_7series_v4_0_data_gen_chk/clk} -radix hex {1 0ns} {0 50000ps} -repeat_every 100000ps
  163. add_force {/mig_7series_v4_0_data_gen_chk/pattern_init} -radix hex {0 0ns} {1 200ns} {0 300ns}
  164. add_force {/mig_7series_v4_0_data_gen_chk/prbs_seed_i} -radix hex {00000001 0ns}
  165. add_force {/mig_7series_v4_0_data_gen_chk/data_en} -radix hex {0 0ns} {1 500ns} {0 600ns} {1 800ns} {0 900ns}
  166.  
  167. */

mig_7series_v4_0_data_gen_chk的更多相关文章

随机推荐

  1. 日常英语---八、REBOOT - What is the difference? -MapleStory

    日常英语---八.REBOOT - What is the difference? -MapleStory 一.总结 一句话总结: trade transfer drop_rate equipment ...

  2. The `android.dexOptions.incremental` property is deprecated and it has no effect on the build process.

    编译报错:The android.dexOptions.incremental property is deprecated and it has no effect on the build pro ...

  3. Android Studio酷炫插件(一)——自动化快速实现Parcelable接口序列化

    https://blog.csdn.net/kroclin/article/details/40902721 一.前言相信数据序列化大家都多多少少有接触到,比如自定义了一个实体类,需要在activit ...

  4. Bootstrap框架整理

    bootstrap框架的介绍 栅格系统 bootstrap框架把整个浏览器的宽度分为12列,并能适配各种屏幕的尺寸大小进行相应的匹配,达到调节页面大小的效果. 首先需要放置一个容器div,class= ...

  5. struct放入list中按照某字段排序

    //管线字段信息 public struct FieldInfo { public int iID; //编号 public string sFieldName; //字段名 public strin ...

  6. JAVA 创建文件和文件夹,删除文件和文件夹的实用工具

    package com.file; import java.io.File; import java.io.IOException; //创建新文件和目录 public class CCRDFile ...

  7. Php基本类型——布尔类型

    1)简介 布尔类型,这是最简单的类型,bollean表达了真值,可以为true或false,它是php4引进的. 2)语法 要指定一个布尔值,使用关键字true或false,两个都不区分大小写. &l ...

  8. 关于WebUpload插件的使用

    上传的路径地址: 删除图片时也应该注意: unlink('/Upload/1.jpg')删除不了 unlink('./Upload/1.jpg')可以删除. 也就是说,绝对路径删除不了  相对路径可以 ...

  9. Java servlet 实现的简易购物车

    首页 2.购买页 3.购物车页 1. 首页代码 发送一个post请求 <!DOCTYPE html><html lang="en"><head> ...

  10. 【转载】关于nginx以及内核参数的配置

    nginx应用总结(2)--突破高并发的性能优化  原文地址:https://www.cnblogs.com/kevingrace/p/6094007.html 在日常的运维工作中,经常会用到ngin ...