我在verilog中编写了模式生成器模块和错误检查模块的代码。 模式生成器模块生成PRBS-7。 错误检查器模块采用两个8位序列的序列并告诉我BER(我已经通过testbench验证了)。 但是我在从模式生成器模块向错误检查模块提供输入时遇到了麻烦。怎么做?
答案 0 :(得分:0)
你必须制作一个包含两个模块的测试平台并将它们连接起来。
要生成人为错误,您必须更改生成器和检查器之间连接中的一个或多个位:
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;
请注意,上面介绍了多个错误位,在某些情况下可能会检测不到。