[Libre-soc-bugs] [Bug 746] I2C needs an Open Drain IO Pad

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Mon Nov 15 22:52:20 GMT 2021


--- Comment #5 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
(In reply to Cesar Strauss from comment #1)
> It seems that Open Drain can be implemented by a constant zero output, and
> switching the tri-state/direction/oe control signal (1=tri-state,
> 0=push-pull to ground).

# Open Drain Mode, made with a standard FlexLib IOlib cell
with m.If(sda.oe):
  with m.If(sda.o == 1):
    comb += pad.oe.eq(1)
    comb += pad.o.eq(1)
  with m.Else():
    comb += pad.oe.eq(0)
    comb += pad.o.eq(0)
with m.Else():
    comb += pad.oe.eq(0)
    comb += sda.i.eq(pad.i)

this will do the job, Staf: no need to change IOLib

You are receiving this mail because:
You are on the CC list for the bug.

More information about the libre-soc-bugs mailing list