Forum Discussion
Altera_Forum
Honored Contributor
17 years agoProvided you don't try to connect your signal in a higher level module, you can drive an inout signal down to a lower module.
However normal practice is to do I/O driving in the top level, driving data and output enable signals as outputs to the top level and sending signals down to the inner levels. example: inout pad_sda; inout pad_scl; wire sda_oe_n; wire scl_oe_n; assign pad_sda = sda_oe_n ? 1'b0 : 1'bz; assign pad_scl = scl_oe_n ? 1'b0 : 1'bz; i2c_module i2c_inst ( .sda( pad_sda ), .sda_oe_n( sda_oe_n ), .scl_oe_n(scl_oe_n ) ); then in module i2c_module ( sda, sda_oe_n, scl_oe_n ); input sda; output sda_oe_n; output scl_oe_n; .... endmodule