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的更多相关文章
随机推荐
- Otto.de:我为什么选择分布式垂直架构
Otto.de:我为什么选择分布式垂直架构 http://cloud.51cto.com/art/201510/493867.htm
- Introduce oneself
首先,我是一个男生, 我很喜欢打游戏,钟爱LOL,接触它已经7年了.虽然还是很菜,但就是喜欢.选择计算机科学与技术这个专业呢,就是因为喜欢电脑,可以和室友一起开黑,然而室友都不玩,有点难受. 此外呢, ...
- Android测试(一)——Apk文件结构以及Android组件介绍
APK文件结构: assests目录:一般存放的是不会被编译处理的文件,一般是资源性质的文件或者配置文件: libs目录:程序依赖的native库,包含针对特定处理器软件层的编译代码: res目录:存 ...
- 6 款最棒的 Go 语言 Web 框架简介
地址: https://studygolang.com/articles/11897?fr=sidebar
- C++使用: C++中map的基本操作和用法
在阅读SSD代码中发现作者使用了C++中的map方法,因此搜索该关联式容器的使用方法,在这里一并总结. 一.Map 簡介 Map是STL的一個容器,它提供一對一的hash. 第一個可以稱為關鍵字(ke ...
- coursera-斯坦福-机器学习-吴恩达-笔记week1
1 Introduction 1.1 概念:一个程序被认为能从经验E中学习,解决任务 T,达到性能度量值P,当且仅当, 有了经验E后,经过P评判, 程序在处理 T 时的性能有所提升. 1.2 机器学习 ...
- nginx优化参考
参考链接:http://blog.sina.com.cn/s/blog_4f9fc6e10102uxib.html 计算访问路径频度 awk -r|more |grep /路径 ps print &a ...
- 超简单的实现wordcount
worcount1.0,源码参见GitHub:https://github.com/18382271904/spring_lee_flag.git
- ﺑﯘﻟﺒﯘﻟﻼﺭ--思恋--IPA--维吾尔语
很美的维语歌曲, 迪里拜尔将之唱得十分动人心弦.
- VSTO:使用C#开发Excel、Word【12】
Excel对象模型中的事件了解excel对象模型中的事件至关重要,因为这通常是代码运行的主要方式.本章将检查Excel对象模型中的所有事件,引发事件以及可能与这些事件关联的代码类型. Excel对象模 ...