09-22-2020 01:51 AM
Is there an I3C PAD in VU440?
I3C Protocol requires that I3C PAD should convert from Open Drain to PushPull Mode.
In Pushpull mode, we need to be able to control the PULLUP from an internal I3C register bit
What kind of IOBUF I should use to create such a IOBUF where a pull up can be controlled with an external input?
I am trying to implement such I3C PAD using below logic. Is this implementation correct?
Is there any other code I can use to implement I3C?
module I3C_PAD (Y, PAD, A, IE, OE, PE);
inout PAD;
output Y;
input A;
input OE;
input PE;
input IE;
assign Y = (IE) ? PAD: 1'b0;
wire pre_pad /*synthesis xc_pullup = 1 syn_keep = 1 */;
assign PAD = OE ? A : (PE ? pre_pad : 1'bZ);
endmodule
with a synthesis constraint
define_io_standard p:I3C_SDA syn_io_termination {pullup}
09-22-2020 11:57 AM
Here is a slightly better version of the I3C IO PAD Model
module I3C_PAD (Y, PAD, A, IE, OE, PE);
inout PAD;
output Y;
input A;
input OE;
input PE;
input IE;
assign Y = (IE) ? PAD: 1'b0;
wire pre_pad /*synthesis xc_pullup = 1 syn_keep = 1 */;
tri PAD;
assign PAD = PE ? pre_pad : 1'bZ;
assign PAD = OE ? A : 1'bZ;
endmodule
with a synthesis constraint
define_io_standard p:I3C_SDA syn_io_termination {pullup}
i am able to synthesize both of them in synplify_premier and protocompiler.
Any comments would be greatly appreciated.
Thanks
vikas