2016-02-08 43 views
0

这是测试台从模拟的Quartus的ModelSim发射的不能正常工作

`timescale 1 ps/ 1 ps 

module sum_fix_vlg_tst(); 

reg select; 
reg [7:-8] valor_a; 
reg [7:-8] valor_b; 


// wires            
wire [8:-8] result_fx; 

sum_fix i1 (

.result_fx(result_fx), 
.select(select), 
.valor_a(valor_a), 
.valor_b(valor_b) 
); 

initial             
$monitor ("valor_a = %b, valor_b = %b, result_fx = %b", valor_a, 
valor_b,result_fx); 

initial 
begin             
#10 
select = 1; 
valor_a = 32'b0000000011111111; 
valor_b = 32'b0000000011111111; 

#20 

valor_a = 32'b1111111111111111; 
valor_b = 32'b1111111111111111; 

#30 

valor_a = 32'b1001100111001000; 
valor_b = 32'b0001111000111101; 

end              

endmodule 

而且这是在编译的Quartus很好的UUT

。然后我推出像这样的Modelsim:工具> RTL模拟。它推出了Modelsim,但它只给了我很多zzzzzzzzzzzzz输入和xxxxxxxxxxxxxx在输出没有任何波。

我想说,我不确定是否将此测试平台正确添加到项目中。我是一个开始。我所做的是:作业>设置>编译测试:单击测试长凳>新,查找文件并添加,然后确定。我不确定这是否正确,因为它看起来太复杂。请帮助。

此外,我评论说我在quartus中启动了测试平台模板,但是我最终改变了文件中的所有内容,最终结果是上面的代码。

回答

1

所以,我试着在EDAPlayrgound(http://www.edaplayground.com/x/Cyc)上的代码,它看起来很好。 (如果你愿意,你可以给自己一个跑步机会)。

你看到了X,因为在0时刻,你没有为你的任何输入指定值(因为你在分配任何东西之前延迟了10次)。考虑删除第一个#10,或者在它之前进行一些分配。

X =未知值; Z =高阻抗,这意味着既不是1也不是0输入)。对于在Quartus中设置它,你做的方式是正确的。

+0

感谢您提供有关x和z的含义以及网站edaplayground的信息,我已经修复了它,问题是模块名称必须与测试平台文件名相同。我不得不说Quartus测试平台的整个过程通常很复杂,Xilinx更直观。 – sujeto1