mig_7series_v4_0_data_gen_chk
mig_7series_v4_0_data_gen_chk
- `timescale 1ns / 1ps
- //////////////////////////////////////////////////////////////////////////////////
- // Company:
- // Engineer:
- //
- // Create Date: 2018/07/17 09:57:04
- // Design Name:
- // Module Name: mig_7series_v4_0_data_gen_chk
- // Project Name:
- // Target Devices:
- // Tool Versions:
- // Description:
- //
- // Dependencies:
- //
- // Revision:
- // Revision 0.01 - File Created
- // Additional Comments:
- //
- //////////////////////////////////////////////////////////////////////////////////
- module mig_7series_v4_0_data_gen_chk # (
- parameter C_AXI_DATA_WIDTH = // Width of the AXI write and read data
- )
- (
- input clk,
- input data_en,
- input [:] data_pattern,
- input pattern_init,
- input [:] prbs_seed_i,
- input wrd_cntr_rst,
- input rdata_vld,
- input [C_AXI_DATA_WIDTH-:] rdata,
- input [C_AXI_DATA_WIDTH/-:] rdata_bvld,
- output reg [:] data_o, // generated data
- output reg [:] wrd_cntr // Word count output
- );
- //---------------------------------------------------------------
- // 产生数据
- reg [:] lfsr_q = 'h0;
- always @(posedge clk)
- begin
- if(pattern_init)
- begin
- lfsr_q <= {prbs_seed_i + 'h55555555};
- end
- else if(data_en)
- begin
- lfsr_q[:] <= lfsr_q[:];
- lfsr_q[] <= lfsr_q[] ^ lfsr_q[];
- lfsr_q[] <= lfsr_q[] ^ lfsr_q[];
- lfsr_q[:] <= lfsr_q[:];
- lfsr_q[] <= lfsr_q[] ^ lfsr_q[];
- lfsr_q[] <= lfsr_q[] ;
- lfsr_q[] <= lfsr_q[];
- end
- end
- //---------------------------------------------------------------
- // 数据向左移
- reg [:] walk0 = 'h0;
- always @(posedge clk)
- begin
- if(pattern_init)
- walk0 <= 'hFFFF_FFFE;
- else if(data_en)
- walk0 <= {walk0[:],walk0[]};
- end
- //---------------------------------------------------------------
- //数据向左移
- reg [:] walk1 = 'h0;
- always @(posedge clk)
- begin
- if (pattern_init)
- walk1 <= 'h0000_0001;
- else if (data_en)
- walk1 <= {walk1[:],walk1[]};
- end
- //---------------------------------------------------------------
- reg [:] prbs;
- always @(*)
- begin
- prbs = lfsr_q[:];
- end
- //---------------------------------------------------------------
- // 选择输出数据的模式
- always @(*)
- begin
- case (data_pattern)
- 'b001: data_o = prbs; // PRBS pattern
- 'b010: data_o = walk0; // Walking zeros
- 'b011: data_o = walk1; // Walking ones
- 'b100: data_o = 32'hFFFF_FFFF; // All ones
- 'b101: data_o = 32'h0000_0000; // All zeros
- default: data_o = 'h5A5A_A5A5;
- endcase
- end
- //---------------------------------------------------------------
- //数据计数器
- always @(posedge clk)
- begin
- if (wrd_cntr_rst)
- wrd_cntr <= 'h00;
- else if (rdata_vld)
- wrd_cntr <= wrd_cntr + 'h01;
- end
- //---------------------------------------------------------------
- //此段代码是对输出的数据与读进来数据进行对比,如果不一致,则会产生错误标志位
- reg [C_AXI_DATA_WIDTH/-:] msmatch_err_sig;
- genvar i;
- generate
- begin: data_check
- for(i = ; i <= (C_AXI_DATA_WIDTH/-); i=i+)
- begin:gen_data_check
- always @(posedge clk)
- if(wrd_cntr_rst)
- msmatch_err_sig[i] <= 'b0;
- else if( rdata_vld &
- ( (rdata[((i*)+):i*] != data_o[:] & rdata_bvld[(i*)]) |
- (rdata[((i*)+):((i*)+)] != data_o[:] & rdata_bvld[(i*)+]) |
- (rdata[((i*)+):((i*)+)] != data_o[:] & rdata_bvld[(i*)+]) |
- (rdata[((i*)+):((i*)+)] != data_o[:] & rdata_bvld[(i*)+]) )
- )
- msmatch_err_sig[i] <= 'b1;
- else
- msmatch_err_sig[i] <= 'b0;
- end
- end
- endgenerate
- assign msmatch_err = |msmatch_err_sig;
- endmodule
- /*
- add_force {/mig_7series_v4_0_data_gen_chk/clk} -radix hex {1 0ns} {0 50000ps} -repeat_every 100000ps
- add_force {/mig_7series_v4_0_data_gen_chk/pattern_init} -radix hex {0 0ns} {1 200ns} {0 300ns}
- add_force {/mig_7series_v4_0_data_gen_chk/prbs_seed_i} -radix hex {00000001 0ns}
- add_force {/mig_7series_v4_0_data_gen_chk/data_en} -radix hex {0 0ns} {1 500ns} {0 600ns} {1 800ns} {0 900ns}
- */
mig_7series_v4_0_data_gen_chk的更多相关文章
随机推荐
- 日常英语---八、REBOOT - What is the difference? -MapleStory
日常英语---八.REBOOT - What is the difference? -MapleStory 一.总结 一句话总结: trade transfer drop_rate equipment ...
- 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 ...
- Android Studio酷炫插件(一)——自动化快速实现Parcelable接口序列化
https://blog.csdn.net/kroclin/article/details/40902721 一.前言相信数据序列化大家都多多少少有接触到,比如自定义了一个实体类,需要在activit ...
- Bootstrap框架整理
bootstrap框架的介绍 栅格系统 bootstrap框架把整个浏览器的宽度分为12列,并能适配各种屏幕的尺寸大小进行相应的匹配,达到调节页面大小的效果. 首先需要放置一个容器div,class= ...
- struct放入list中按照某字段排序
//管线字段信息 public struct FieldInfo { public int iID; //编号 public string sFieldName; //字段名 public strin ...
- JAVA 创建文件和文件夹,删除文件和文件夹的实用工具
package com.file; import java.io.File; import java.io.IOException; //创建新文件和目录 public class CCRDFile ...
- Php基本类型——布尔类型
1)简介 布尔类型,这是最简单的类型,bollean表达了真值,可以为true或false,它是php4引进的. 2)语法 要指定一个布尔值,使用关键字true或false,两个都不区分大小写. &l ...
- 关于WebUpload插件的使用
上传的路径地址: 删除图片时也应该注意: unlink('/Upload/1.jpg')删除不了 unlink('./Upload/1.jpg')可以删除. 也就是说,绝对路径删除不了 相对路径可以 ...
- Java servlet 实现的简易购物车
首页 2.购买页 3.购物车页 1. 首页代码 发送一个post请求 <!DOCTYPE html><html lang="en"><head> ...
- 【转载】关于nginx以及内核参数的配置
nginx应用总结(2)--突破高并发的性能优化 原文地址:https://www.cnblogs.com/kevingrace/p/6094007.html 在日常的运维工作中,经常会用到ngin ...