Re: [問題] quartus II 的問題
※ 引述《Trai (Trai)》之銘言:
: 請問quartusII 哪邊可以看是否有合成出latch??
: 我不知道這樣問對不對,因為目前的design時序一直不對,連續多筆運算
: 總是回隨機出現幾筆錯誤的結果,因此懷疑是不是因為latch的關系
: 但是我對FPGA的知識還不夠,不知道EDA tool會不會自己避免latch產生
: 謝謝^^
謝謝推文的建議
我的問題其實是這樣
將資料透過BUS送至FPGA中的buffer,再進行運算,最後再抓回去
這裡是FPGA抓取資料到buffer的code
========================================================
always @(posedge IO_nWE)
begin
if(IO_nECS3==0)
case(io_addr)
16'h0000: buffer[0][31:16] <= io_data;
16'h0001: buffer[0][15:0] <= io_data;
16'h0002: buffer[1][31:16] <= io_data;
16'h0003: buffer[1][15:0] <= io_data;
16'h0004: buffer[2][31:16] <= io_data;
16'h0005: buffer[2][15:0] <= io_data;
.........etc
end
=========================================================
io_data為inout port,buffer宣告為reg [31:0] buffer [15:0] 16個寬度為32
的register。另有第二個buffer2存放另一組資料
除此之外還有一個運算模組接線如下
CAL c1(.out(output),
.opA(buffer[in_counter]),
.opB(buffer2[in_counter]),
.clk(CLK),
.reset(RESET),
.start(start));
這邊主要就是當資料送到buffer後,start會拉起來,開始進行運算,
我使用一個in_counter當index,將資料一筆筆從buffer送到opA與opB中運算
in_counter在start拉起後每個clock+1
問題就出在我使用.opA(buffer[in_counter])拉線到運算模組的時候
有時候似乎會送入錯誤的資料,機率很小,但就是會發生。
如果不使用buffer[in_counter],直接固定.opA(buffer[0]) 就沒問題,
壓力測試的結果都正確。
這個bug已經花了我很多時間,但是又想不出原因
目前的想法是
buffer[in_counter] register有一個MUX來選擇輸出的register,會不會
是這個MUX造成glitch還是造成其他訊號的不同步?
但是合成後做的timing analysis得到的clock週期應該足夠訊號穩定,
我已經使用這個版子上提供的最慢的頻率了。但事實就是有錯誤。
想請問各位版友,問題有可能是我想的那樣嗎? 不論是或者不是
不知道有沒有人有類似的經驗可以分享? 在這裡實在花太多時間了,
希望能在過年前解決這問題 ORz
謝謝^^
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.89.1
→
02/11 02:52, , 1F
02/11 02:52, 1F
→
02/15 00:41, , 2F
02/15 00:41, 2F
→
02/15 00:43, , 3F
02/15 00:43, 3F
→
02/15 00:44, , 4F
02/15 00:44, 4F
→
02/15 00:47, , 5F
02/15 00:47, 5F
討論串 (同標題文章)