(SMI,MDIO)高阻態陷阱

SMI接口時序圖如下:
在這裏插入圖片描述
在讀數據的時候,主機端應該給高阻態,但是我把它過了一個觸發器,就類似下面這樣:

assign mdio_in = mdio;
assign mdio_o = mdio_reg;
always @(posedge clk)
	mdio_reg <= 1'bz;

用示波器測得輸出得電平變成低電平了,於是當讀出來的數據爲高電平的時候,就變成了半高的電平,如下圖:在這裏插入圖片描述在這裏插入圖片描述
後來將代碼修改成了這樣,才恢復正常:

assign mdio_in = mdio;
assign mdio_o = en ? mdio_reg : 1'bz;

正常的波形如下:
在這裏插入圖片描述
其實以前都是按照第二種方法寫inout數據的賦值的,這次也就是想換一種寫法,沒想到高阻態經過觸發器後會變成低電平。

像這種出現半高狀態的波形,看到的時候,就應該想到是一端拉高,一端拉低,才導致了電平只有一半。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章