Forum Discussion
Bidirectional pin USB_RX with a pseudo-differential I/O standard must use the OEIN port of the node
I am trying to make a bidirectional differential line using Cyclone V.
In VHDL, I set USB_RX, USB_RXn as INOUT on the top level (they are assigned to a Differential SSTL-II 2.5 pair). I used the ALTIOBUF in differential mode and crated this block:
COMPONENT DIFF_IO_BUF PORT
(
DATAIN : IN STD_LOGIC;
OE : IN STD_LOGIC;
OE_B : IN STD_LOGIC;
DATAIO : INOUT STD_LOGIC;
DATAIO_B : INOUT STD_LOGIC;
DATAOUT : OUT STD_LOGIC
);
END COMPONENT;
It's connected as following:
DIFF_RX : DIFF_IO_BUF
PORT MAP
(
DATAIN => 'Z',
OE => '0',
OE_B => '1',
DATAIO => USB_RX,
DATAIO_B => USB_RXn,
DATAOUT => iUSB_RX_I
);
iUSB_RX_I goes to internal logic.
Why am I getting this error? I don't see any OEIN port. I assume it means the OE and OE_B ports, but they are already connected. How can I fix this error?
The whole error msg:
Error (21168): Bidirectional pin USB_RX with a pseudo-differential I/O standard must use the OEIN port of the node DIFF_IO_BUF:DIFF_RX|DIFF_IO_BUF_iobuf_bidir_iup:DIFF_IO_BUF_iobuf_bidir_iup_component|wire_pseudo_diffa_o
Thank you!
Hi Jack,
not quite clear what you want to achieve. USB (both FS and HS) is a half-duplex protocol and involves push-pull drivers with enable signal.
Regards Frank
6 Replies
- Jack_Lin
New Contributor
FYI using Quartus 20.1.1
- Jack_Lin
New Contributor
- FvM
Super Contributor
Hi Jack,
your instantiation of DIFF_IO_BUF makes no sense. OE pins must be driven by a signal that switches direction dynamically.
Regards Frank
- FvM
Super Contributor
I see same "must use the OEIN port" error when OE is stuck to '0'. OE_B isn't used at all when driving a differential I/O standard.
- Jack_Lin
New Contributor
Thanks. My original idea was to build it up and set it to input/output first to make sure that it compiles before I add more logic to change the directions. But it seems like the reason I am getting the errors is because the differential pins on Cyclone V are not bidirectional and can only get set to either input or output. Will need to check for a different device.
- FvM
Super Contributor
Hi Jack,
not quite clear what you want to achieve. USB (both FS and HS) is a half-duplex protocol and involves push-pull drivers with enable signal.
Regards Frank