看板 Electronics 關於我們 聯絡資訊
有一個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
pat12345: 有人知道嗎@@?12/26 13:50
lovepy: EN=1的時候你寫的tb還是給了他pad_A的值?12/26 15:41
pat12345: EN=1,pad_A=data12/26 16:22
pat12345: EN=0,pad_A以寫的tb訊號12/26 16:22
※ 編輯: pat12345 (42.72.208.111), 12/26/2016 16:23:00
r901042004: pad_A是wire所以不能在initial block被指定值,所以只 12/26 19:46
r901042004: 要在tb宣告一個reg temp,assign pad_A=temp,在 12/26 19:46
r901042004: initial block裡更改temp的值就可以了 12/26 19:46
pat12345: 可以了,非常謝謝兩位的詳解! 12/27 02:01