[問題] verilog同樣的電路,確有不同的結果?

看板Electronics作者 (Tsk)時間11年前 (2014/07/05 14:47), 11年前編輯推噓6(6023)
留言29則, 7人參與, 最新討論串1/1
小弟不才有一個小小疑問請想請教各位先進。 小弟作了一個小實驗,HDL大概長這樣: output reg IQCLK; always@(posedge EXTERNAL_CLK) begin if(DATA_READ_CLK) begin IQCLK <= 1; end else begin IQCLK <= 0; end end output reg IQWRT; always@(posedge EXTERNAL_CLK) begin if(DATA_READ_CLK) begin IQWRT <= 1; end else begin IQWRT <= 0; end end =========================================== 小弟的問題是,在作timing simulator的時候發現IQWRT上拉電位的時間點都比 IQCLK的速度還要在快一點??Why????? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.124.181.210 ※ 文章網址: http://www.ptt.cc/bbs/Electronics/M.1404542874.A.782.html ※ 編輯: gn00446610 (140.124.181.210), 07/05/2014 14:50:02

07/05 17:02, , 1F
wire delay cause this two difference result
07/05 17:02, 1F

07/05 17:06, , 2F
m大..那有辦法去控制嘛?還是要作時續約束??
07/05 17:06, 2F

07/05 21:15, , 3F
如果沒有要輸出用 sequential電路都是 clock based
07/05 21:15, 3F

07/05 21:16, , 4F
不會有影響 其他運算 看你需求
07/05 21:16, 4F

07/05 21:17, , 5F
沒有要輸出FPGA用
07/05 21:17, 5F

07/06 01:56, , 6F
你應該檢查netlist是不是用了不同的cell 如果沒有timing
07/06 01:56, 6F

07/06 01:56, , 7F
violation就不用在意這個時間差
07/06 01:56, 7F

07/06 15:49, , 8F
那麼有沒有辦法讓IQCLK的時間點比IQWRT上拉的時間點快
07/06 15:49, 8F

07/06 15:49, , 9F
一點或者同時發生???
07/06 15:49, 9F

07/06 16:32, , 10F
有甚麼特殊需求或原因一定要兩個同時發生嗎??
07/06 16:32, 10F

07/06 16:33, , 11F
因為如果是一般的同步的話 基本上只要保證下次邊緣觸發時
07/06 16:33, 11F

07/06 16:33, , 12F
所有的數值在那之前已經穩定的拉起來就可以正常運作了
07/06 16:33, 12F

07/06 19:56, , 13F
將IQWRT再接幾個delay cell就可以晚點上拉了
07/06 19:56, 13F

07/07 12:07, , 14F
l大,小的是因為要符合datasheet上的時序要求
07/07 12:07, 14F

07/07 14:52, , 15F
那你的HDL不該這樣設計 應該分兩cycle拉訊號
07/07 14:52, 15F

07/07 15:20, , 16F
有點不是很懂k大您的意思??或者舉例一下
07/07 15:20, 16F

07/07 18:00, , 17F
我晚點回信跟你解釋一下好了
07/07 18:00, 17F

07/08 18:02, , 18F
k大信可以順便寄給我嗎?感恩
07/08 18:02, 18F

07/28 03:16, , 19F
1ovepy正解 下一個clock之前對就好了 拉起來之後
07/28 03:16, 19F

07/28 03:17, , 20F
時間 沒有影響 考慮這個問題的兩種情況
07/28 03:17, 20F

07/28 03:17, , 21F
第一種 就是下一個clock setup time還沒算完
07/28 03:17, 21F

07/28 03:18, , 22F
第二種情況 就是太快算完 導致hold time不符合
07/28 03:18, 22F

07/28 03:19, , 23F
你的問題應該是第二個 解決方法就是加一些buffer(2 Not gates
07/28 03:19, 23F

08/01 09:32, , 24F
datasheet? 意思是你的輸出信號會去控制其他晶片嗎?
08/01 09:32, 24F

08/01 09:32, , 25F
比較標準的作法應該是在合成的時候設定output delay
08/01 09:32, 25F

08/01 09:34, , 26F
比較快速的做法是 你原FPGA用正緣觸發 晶片用負緣觸發
08/01 09:34, 26F

08/01 09:36, , 27F
不過這樣電路操作頻率因有些地方的延遲浪費而降低
08/01 09:36, 27F

08/03 17:41, , 28F
我這段code是要輸出訊號控制其他chip的沒錯
08/03 17:41, 28F

08/03 17:42, , 29F
而且最後得到的結果,似乎是要對合成下一些constrain
08/03 17:42, 29F
文章代碼(AID): #1Jjv-QU2 (Electronics)