我想寫的東西是這樣的:如何等待始終阻止的邊?
[email protected](posedge bus_start)
begin
@(posedge scl) buffer[7] = sda;
@(posedge scl) buffer[6] = sda;
@(posedge scl) buffer[5] = sda;
@(posedge scl) buffer[4] = sda;
@(posedge scl) buffer[3] = sda;
@(posedge scl) buffer[2] = sda;
@(posedge scl) buffer[1] = sda;
@(posedge scl) buffer[0] = sda;
end
但是,根據我得到的錯誤是不是合成的。
我可以使用FSM來解決這個問題,但這可能會使它變得複雜,有什麼辦法可以使它合成嗎?
不,這是高層次的行爲Verilog。它會爲測試平臺提供一個很好的參考模型,但它的詳細程度不夠可以合成。您需要編寫可合成代碼的抽象_級別(詳細級別)稱爲RTL(寄存器傳輸級別),其中您幾乎可以手動確定觸發器的位置以及合成器填充組合邏輯的位置。對於這個I2C接口,你需要一個移位寄存器,你需要一個FSM,你可能需要一個計數器。請參閱[我公司的網站](https://www.doulos.com/knowhow/verilog_designers_guide/)。 –