[請益] verilog 雙向inout問題

看板Electronics作者 (咖啡杯)時間9年前 (2016/12/24 12:34), 9年前編輯推噓0(008)
留言8則, 3人參與, 最新討論串1/1
有一個verilog code的問題想要問你,試了一天以上... 我想把pad_A當雙向pin , 在EN = 1 時候,pad_A當輸出pin,把data傳出去, 反之,EN = 1,從外部收訊號, 我照下面的寫法,是會有Error的, 高手們可以給我一些指點嗎,感激不盡~ --------------------------------------------------------- module PAD( pad_A, EN ); inout pad_A ; input EN ; reg data=1; assign pad_A = EN ? data : 1'bz ; endmodule module tb; reg EN; wire pad_A; PAD I1 ( pad_A, EN ); initial fork #0 pad_A=0; #22 pad_A=1; #35 pad_A=0; #40 pad_A=1; #62 pad_A=0; #78 pad_A=1; #90 pad_A=0; join initial EN=0; always #25 EN = EN + 1 ; initial begin $fsdbDumpfile("DUT.fsdb"); #100 $finish; end endmodule -------------------------------------------------- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.171.12.138 ※ 文章網址: https://www.ptt.cc/bbs/Electronics/M.1482554066.A.844.html

12/26 13:50, , 1F
有人知道嗎@@?
12/26 13:50, 1F

12/26 15:41, , 2F
EN=1的時候你寫的tb還是給了他pad_A的值?
12/26 15:41, 2F

12/26 16:22, , 3F
EN=1,pad_A=data
12/26 16:22, 3F

12/26 16:22, , 4F
EN=0,pad_A以寫的tb訊號
12/26 16:22, 4F
※ 編輯: pat12345 (42.72.208.111), 12/26/2016 16:23:00

12/26 19:46, , 5F
pad_A是wire所以不能在initial block被指定值,所以只
12/26 19:46, 5F

12/26 19:46, , 6F
要在tb宣告一個reg temp,assign pad_A=temp,在
12/26 19:46, 6F

12/26 19:46, , 7F
initial block裡更改temp的值就可以了
12/26 19:46, 7F

12/27 02:01, , 8F
可以了,非常謝謝兩位的詳解!
12/27 02:01, 8F
文章代碼(AID): #1ONVhIX4 (Electronics)