Re: [問題] quartus II 的問題

看板Electronics作者 (Trai)時間17年前 (2007/02/11 00:58), 編輯推噓0(005)
留言5則, 2人參與, 最新討論串2/12 (看更多)
※ 引述《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
請試著把buffer的code拆開,也就是不要用reg. array來做
02/11 02:52, 1F

02/15 00:41, , 2F
io_addr 是有16bits嗎?感覺起來很大,比較像memory
02/15 00:41, 2F

02/15 00:43, , 3F
16bits 的 MUX 我覺得很詭異..不過我verilog也才寫三年
02/15 00:43, 3F

02/15 00:44, , 4F
如果是數到16 用4bits就好
02/15 00:44, 4F

02/15 00:47, , 5F
我是從你其他文章的推文判斷你只需要count到16 ~~
02/15 00:47, 5F
文章代碼(AID): #15pVcx2Q (Electronics)
討論串 (同標題文章)
文章代碼(AID): #15pVcx2Q (Electronics)