作者pat12345 (咖啡杯)
看板Electronics
标题[请益] verilog 双向inout问题
时间Sat Dec 24 12:34:23 2016
有一个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://webptt.com/cn.aspx?n=bbs/Electronics/M.1482554066.A.844.html
1F:→ pat12345: 有人知道吗@@?12/26 13:50
2F:→ lovepy: EN=1的时候你写的tb还是给了他pad_A的值?12/26 15:41
3F:→ pat12345: EN=1,pad_A=data12/26 16:22
4F:→ pat12345: EN=0,pad_A以写的tb讯号12/26 16:22
※ 编辑: pat12345 (42.72.208.111), 12/26/2016 16:23:00
5F:→ r901042004: pad_A是wire所以不能在initial block被指定值,所以只 12/26 19:46
6F:→ r901042004: 要在tb宣告一个reg temp,assign pad_A=temp,在 12/26 19:46
7F:→ r901042004: initial block里更改temp的值就可以了 12/26 19:46
8F:→ pat12345: 可以了,非常谢谢两位的详解! 12/27 02:01