从verilog中的PRBS生成器向错误检查模块提供输入

从verilog中的PRBS生成器向错误检查模块提供输入,verilog,fpga,hdl,Verilog,Fpga,Hdl,我已经在verilog中为模式生成器模块和错误检查模块编写了代码。 模式生成器模块生成PRBS-7。 错误检查模块获取两个8位序列的序列,并告诉我误码率(我已经通过测试台验证了这一点)。 但我在从模式生成器模块向错误检查器模块提供输入时遇到了麻烦。怎么做 您必须制作一个包含两个模块的测试台,并将它们连接起来 要生成人为错误,必须更改生成器和检查器之间连接中的一个或多个位: wire [7:0] prbs_out,checker_in; reg [7:0] make_error; assign

我已经在verilog中为模式生成器模块和错误检查模块编写了代码。 模式生成器模块生成PRBS-7。 错误检查模块获取两个8位序列的序列,并告诉我误码率(我已经通过测试台验证了这一点)。 但我在从模式生成器模块向错误检查器模块提供输入时遇到了麻烦。怎么做


您必须制作一个包含两个模块的测试台,并将它们连接起来

要生成人为错误,必须更改生成器和检查器之间连接中的一个或多个位:

wire [7:0] prbs_out,checker_in;
reg  [7:0] make_error;
assign checker_in = prbs_out ^ make_error;
只要
make_error
为全零,则位传递不变。如果您有一个测试循环,您偶尔会使用$random函数出错:

   ... // Your major test loop
// 1 in 16 times there is an error
if (($random & 32'h0F)==0)
   make_error = 8'h01;
else
   make_error = 8'h00;
一旦开始工作,您就可以开始使用错误向量:

   // On average 1 in 16 times there is an error
   if (($random & 32'h0F)==0)
      make_error = $random & 32'h00FF; 
   else
      make_error = 8'h00;

请注意,上面介绍了一个以上的错误位,在某些情况下可能无法检测到

请为您的问题添加代码。PRBS生成器是什么样子的,尤其是模块端口。检查器使用什么作为输入/输出信号等,您是否需要模拟错误。是的,我需要通过向PRBS添加一些错误来模拟错误,然后将输入提供给错误检查模块。我已经编辑了这个问题。你现在可以看到代码的链接。如何制作测试台来连接它们,主要的测试循环是什么,为什么32'h0F?32'h0F只是我为了得到1/16的错误而编造的一个任意数字。你的测试台你必须自己写。你写了“我已经通过测试台验证了这一点”,所以我假设你知道如何编写测试台。在测试台架中,通常有一个循环,等待若干时钟周期,以完成所有测试。这就是我所说的主要测试循环。它如何在16次中只给出一次错误——“32'h0F只是我为了得到1/16个错误而编造的一个任意数字”,评论说“平均16次中有1次”。从32位随机数中,仅剩下底部4位,给出范围为0..15.的随机数。数学说它为0的概率是1/16。