我正在編寫用於在FPGA上實現的UART的Verilog代碼,並且在第一個字節之後同步到字節的START位時遇到了一些問題。Verilog下降沿檢測
我的經理建議同步我接收到的信號,並使用某種中斷作爲與我的FSM通信的一個意思,即啓動已被識別。
我已閱讀有關上升沿檢測技術,我覺得我可以做這樣的事情:
module StartDetectionUnit (
input clk, state, signal_in,
output trigger
);
reg signal_d;
always @(posedge clk)
begin
signal_d <= signal_in;
end
assign trigger = signal_in & (!signal_d);
endmodule
在我的理解,這樣的描述檢測上升沿,而不是一個下降沿,但在RS-232通信中「START」是邏輯「0」。
另外,我想實際上分配國旗只是當在空閒狀態[硬編碼爲000],但做最後的任務瘋狂門控聽起來並不硬件給我。
tldr,有兩個問題
- 檢測異步輸入信號
- 在FSM的單個,特定狀態這樣做的一個通用的下降沿
感謝一堆,我m新的Verilog和有點新的HDL'ing
澄清: 「Signal_in」是我在仿真過程中從我的USB到UART橋或測試臺接收到的位。 module StartDetectionUnit( input clk,state,signal_in, output trigger ); reg signal_d; always @(posedge clk) begin signal_d <= signal_in; end assign trigger =(!signal_in)&signal_d&(!state); endmodule 我是這樣寫的,它似乎在我的第一次仿真迭代中正常工作。 我需要操作的狀態被編碼爲「000」。 –
不能模擬異步外部輸入信號。它將始終在模擬中起作用。 – FabienM
即使通過測試平臺? –