作者horsehead ( NNNN)
看板Electronics
標題[問題] tri-state buffer
時間Sat Dec 22 09:06:51 2007
各位大大好 目前我這邊有一個關於雙向匯流排的問題
一般要做雙向 在verilog 裡面語法為宣告一個 inout port
(ex: inout ti ) 而我查過一些文獻 他有一句比較關鍵的語法如下
assign tmp = oen ? a : 1'bz;
其中tmp 為宣告成inout的bidirection a為一內部信號 oen 為一外部控制信號
控制 tmp 為輸入或輸出
當chip 一上電後因為我們無法推算各邏輯的值是多少,所以會需要有enable或reset
信號來控制所有暫存器一開始那段時間的狀態 , 不過enable或reset也是邏輯訊號
他們也是需要外部觸發來驅動(ex 手動按鈕或是另一個晶片發出信號給他)
因此要是當這些信號還沒被driving之前在實體電路上我們依樣無法推算他的電位
因此我想上面程式碼的oen信號也會是同樣情形,那們我們依樣無法掌握tri-state
buffer到底是被接通變成output或是處於高阻抗狀態,那在這不明的情況下雙向匯流排
上的晶片有可能處於兩邊都是output且一個drivig high 一個driving low 導致短路使
晶片燒毀
我想問的問題是現在有沒有什麼常用的設計規範用來減少這種風險(也許是
我多慮,不過因為我對tri-state的經驗並不豐富所以無法斷言,其實上述狀況我是只針對
系統剛上電的暫態部分,因為如果是良好的設計我相信當系統run過一段時間各個點的值
都可以推算出來,因此可以正確去規避這種危險)
不好意思字有點多 @@ 還請大大們指教 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.77.48