[爆卦]verilog assign語法是什麼?優點缺點精華區懶人包

為什麼這篇verilog assign語法鄉民發文收入到精華區:因為在verilog assign語法這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者horsehead (小孩臉)看板Electronics標題[問題] Verilog Code ...



各位版上的大大好

小弟最近在看原廠提供的一個FPGA的reference design 的RTL code

其中有一組雙向IO他的語法大概寫成

assign SDA = (條件1) ? 1'b0 : 1'bz ;
assign SDA = (條件2) ? 1'b0 : 1'bz ;

不好意思 小弟比較才疏學淺 在同一模組裡對同一根信號進寫兩個assign statment 居

然可以synthesis成功(有查過資料如果IO是三態可以成功 ,也就是如果我把1'bz改成1或0

邏輯合成是會失敗的 ,我自己做實驗也是如此)

然而問的問題是 他systehsis成功後他的behavior我看不太出來是什麼 @@ (我自己寫的

話我不會寫這種很語焉不詳的描述句 ,我一定把條件1/2整合在一起只寫成一條敘述句)

我自己在想是不是這電路的behavior會是條件1或條件2成立 就輸出0 其餘輸出Z呢 ?

還請版上高手們多多指教

謝謝

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.164.114.34 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Electronics/M.1624362746.A.12A.html
※ 編輯: horsehead (1.164.114.34 臺灣), 06/22/2021 19:53:52
b0241091: 會自動合成出tristate buffer,共用bus時會用到,好像是 06/23 06:51
b0241091: 這樣 06/23 06:51
mmonkeyboyy: 是 就是tristate b. 你可能沒寫完 但bus就是這樣 06/23 08:38
wildwolf: assign SDA = (條件2) ? 1'b1 : 1'bz ; 06/23 10:44
wildwolf: 上面那行如果是這樣的話,電路光模擬就會出現 unknown 06/23 10:45
duffrose: assign SDA=(條件1 | 條件2) ? 1'b1 : 1'bz; 06/23 10:46
duffrose: assign SDA=(條件1 | 條件2) ? 1'b0 : 1'bz; 06/23 10:47
duffrose: 上面一行大錯了,然後你要想一想為何要1'b0 & 1'bz? 06/23 10:47
mmonkeyboyy: 所以我說他沒寫完 看不出來對錯 06/23 10:48
mmonkeyboyy: 下次有這種問題的人吼 請把code都貼好貼滿 不然跟 06/23 10:49
mmonkeyboyy: 隔空抓藥是差不多意思的 06/23 10:50

感謝各位大大的回覆 Code 因為是原廠的 有些保密問題 可能不方便放上來 這邊要請各

位大大見諒 他原始的code就是一個I2C Master控制器 ,只是他上頭有兩個小模組同時會

需要取用這個I2C Master ,只是我不知道他為什麼要分兩條來寫 ,如果是我的話我會整

成一條 ,因為雖然有兩塊控制邏輯 ,但實體pin只有一根 ,所以我的話不會寫成兩個

assigm

不過這樣講還是太複雜 我覺得就直接看我自己實驗的的簡單小code來討論這個語法的行為吧


https://imgur.com/VCq9GYb

上圖就是我的實驗程式碼 很簡單 目前看兩條assign敘述 只要我每一條的驅動方式有Z

也就是關掉output buffer 合成就會過,變成三態閘目前 只是這樣寫我不知道當我

EN1/EN2都為1時 ,實際電路他會輸出啥 我是猜他等效成下面啦

assign OT = (EN1) ? 1'b1 :
(EN2) ? 1'b0 : 1'bz ;

想跟大家討論一下 看有沒有其他想法關於這語法最後合成的實際電路會是如何
※ 編輯: horsehead (1.164.114.34 臺灣), 06/23/2021 13:27:08
mmonkeyboyy: 看你寫SDA 再看看z 也猜得到是I2C 啦 XD 06/23 13:50
mmonkeyboyy: 最後會變成 OT 輸出 EN1 EN2輸入 裡面就是摻在一起 06/23 13:50
mmonkeyboyy: 做撒尿牛丸囉 06/23 13:52
mmonkeyboyy: 11/00應該都是同一態 vcs出來應該是中間 @_@~(猜的) 06/23 14:15
mmonkeyboyy: 也就是z態 floating 06/23 14:18
mmonkeyboyy: 你的寫法在某EN = z的情況下應該會不太一樣 06/23 14:23

你可能也想看看

搜尋相關網站