跳转至

三态门

在一些接口协议中,比如 I2C、SPI 等等,为了节省引脚数量,都出现了同一个信号在不同的时间传输不同方向的数据的现象。因此,为了防止两端设备同时输出,设备在不输出信号时需要设置高阻态。在 Verilog 代码中,我们通常会将三态门 signal_io 拆分成三个信号:signal_isignal_osignal_t,分别表示输入、输出和高阻态。对应的代码如下:

module tri_state_logic (
    inout signal_io
);

    wire signal_i;
    wire signal_o;
    wire signal_t;

    assign signal_io = signal_t ? 1'bz : signal_o;
    assign signal_i = signal_io;

endmodule

这样实现以后,内部就可以很方便地处理三态逻辑了。


最后更新: 2021年5月27日
作者:Jiajie Chen

评论