cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
vikasgok
Newbie
Newbie
353 Views
Registered: ‎11-23-2019

I3C IO PAD

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}

0 Kudos
1 Reply
vikasgok
Newbie
Newbie
315 Views
Registered: ‎11-23-2019

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

 

0 Kudos