[問題] verilog 組合邏輯的delay
// 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
10/27 08:49, 1F
→
10/27 08:51, , 2F
10/27 08:51, 2F
推
10/27 23:35, , 3F
10/27 23:35, 3F
→
10/27 23:36, , 4F
10/27 23:36, 4F
→
10/27 23:38, , 5F
10/27 23:38, 5F
→
10/27 23:38, , 6F
10/27 23:38, 6F
推
10/27 23:42, , 7F
10/27 23:42, 7F
→
10/27 23:42, , 8F
10/27 23:42, 8F
→
10/28 14:23, , 9F
10/28 14:23, 9F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):