【verilog每日一练】“inout” 双向端口类型的使用 - FPGA开发者技术社区 - 电子技术william hill官网 - 广受欢迎的专业电子william hill官网 - 威廉希尔官方网站
分享 收藏 返回

Mill 关注 私信
[问答]

【verilog每日一练】“inout” 双向端口类型的使用

verilog除了input和output的端口类型,还有inout双向端口,比如在IIC协议中sda为双向信号。若sda在sda_out_en为1时输出sda_out的数值,在sda_out_en为0时sda为输入状态,如何使用三目运算符实现此功能

image.png

回帖(16)

Mill

2023-8-4 16:16:08
解析:verilog的4种数据状态:
0: 逻辑“0”或“假” ;
1: 逻辑“1”或“真” ;
x: 未知状态;
z: 高阻态;
若sda输出则将sda_out赋值给sda,若sda为输入则为高阻态“z”

1

卿小小_9e6

2023-8-3 16:24:03

最佳答案

wire sda_in;

sda = (sda_out_en)? sda_out : 1’bz;
sda_in = sda;

EPTmachine

2023-8-3 16:59:16
  1. reg sda_in;
  2. sda <= sda_out_en? sda_out: 1'bz;
  3. sda_in <=sda;

小C丫

2023-8-3 18:44:20
reg sda_internal;
    always @(posedge clk or posedge rst) begin
        if (rst) begin
            sda_internal <= 1'b0; // Reset the internal signal
        end else begin
            sda_internal <=(sda_out_en==1)?sda_out:sda;
        end
    end
assign   sda=sda_internal;      
        end
    end

小C丫

2023-8-3 18:50:43

更多回帖

×
发帖