[問題] verilog 組合邏輯的delay

看板Electronics作者 (熙)時間15年前 (2008/10/27 04:16), 編輯推噓3(306)
留言9則, 3人參與, 最新討論串1/2 (看更多)
// module decoder input clk; input reset; input [7:0] inData; output [15:0] outData; reg [3:0] state; reg [3:0] next_state; // sequential logic always @(posedge clk or posedge reset) begin if(reset) state <= S0; else state <= next_state; end // combinational logic : FSM and Decoder always @(state or inData) begin outData = 16'h0000; case(state) S0: begin // ... next_state = S1; end S1: begin // ... case(inData[3:0]) 4'b0000: outData = 16'h1234; 4'b0001: outData = 16'h5678; ... endcase next_state = S2; end S2: ...(略) default: ... endcase end 觀察 timing analyzer 發現 worst-case tpd 約為18ns,worst-case tco 約為10ns Clock "clk" internal fmax 可達340MHz 若上述module為M1,且M1輸出的結果要作為某個FIFO(rising edge trigger)的輸入 目前希望使用100MHz作為M1和FIFO的clock來源 但是根據上面分析卻發現組合邏輯在tpd的延遲超過了一個clock cycle(10n)的長度 如此一來其後的FIFO無法正確寫入M1來的資料 是否一定要將clock頻率降低來配合組合邏輯的延遲... 或者改變M1輸出維持2個clocks以上-->但是這樣跟把clock頻率降低好像類似 ~"~ 還是有其他coding的技巧可以合成出較小延遲的電路 一般這樣的問題該如何解決呢? 為何有些電路都可以做到很高的處理頻率? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.193.11.210

10/27 08:49, , 1F
想辦法optimize ur comb logic for min delay
10/27 08:49, 1F

10/27 08:51, , 2F
如果不行 就得重改state & logic
10/27 08:51, 2F

10/27 23:35, , 3F
你是使用altera的maxii對吧 去quartus ii 裡面的
10/27 23:35, 3F

10/27 23:36, , 4F
assignment editor 下 tpd 的 timing constraint
10/27 23:36, 4F

10/27 23:38, , 5F
指定最小tpd數值 但是每個晶片都有其optimize的極限
10/27 23:38, 5F

10/27 23:38, , 6F
所以不一定會過 如果無法達成就只能改你電路架構了
10/27 23:38, 6F

10/27 23:42, , 7F
不過把tpd用timing constraint從18改成10應該還可以
10/27 23:42, 7F

10/27 23:42, , 8F
就先試試看吧
10/27 23:42, 8F

10/28 14:23, , 9F
感謝兩位的寶貴意見,先試著做做看,有問題再向各位請教m()m
10/28 14:23, 9F
文章代碼(AID): #191D0PzH (Electronics)
文章代碼(AID): #191D0PzH (Electronics)