2016-02-08 58 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