ad_iobuf实现代码:
module ad_iobuf #(
parameter DATA_WIDTH = 1) (
input [(DATA_WIDTH-1):0] dio_t,
input [(DATA_WIDTH-1):0] dio_i,
output [(DATA_WIDTH-1):0] dio_o,
inout [(DATA_WIDTH-1):0] dio_p);
genvar n;
generate
for (n = 0; n < DATA_WIDTH; n = n + 1) begin: g_iobuf
assign dio_o[n] = dio_p[n];
assign dio_p[n] = (dio_t[n] == 1'b1) ? 1'bz : dio_i[n];
end
endgenerate
endmodule
端口说明:
dio_t | 控制信号 |
dio_i | din(做输入) |
dio_o | dout(做输出) |
dio_p | 控制端口方向 |
如果dio_t为高电平时,dio_p为高阻态,高阻态是高电平还是低电平由后面接的东西定,dio_p可以被外界驱动,此时inout端口为input型
如果dio_t为低电平时,dio_p=dio_i,也就是dio_o = dio_i,此时inout端口为output型