Replies: 7 comments 8 replies
-
Hey @thack123, I think this is a really good idea! I also had some issues with "deeply burried" tri-state drivers when playing with Xilinx block designs. |
Beta Was this translation helpful? Give feedback.
-
Yes, I think that would be the best solution. |
Beta Was this translation helpful? Give feedback.
-
As a current user of the core, I'm not a fan of needing to redo my top level with an "I/O-ring" around the core. |
Beta Was this translation helpful? Give feedback.
-
I hope you still appreciate my 2 cents on this topic, but in my opinion
there should be no tristate pins on any IP block.
NeoRV32 is an IP block, not a top-level. Therefore, there should be an I/O
ring. In 99% of the cases you will need an I/O ring anyway, whether it is
for instantiating a PLL, a memory controller, or whatever. The NeoRV32 is a
very complete system (my compliments!), but if you just need a SoC, you
better buy a SoC-like device, instead of an FPGA. In my opinion there is
always something "of your own" in the FPGA, something that is not part of
the NeoRV32 SoC. The benefit of I/O rings is also that they can be vendor
specific, while the NeoRV32 is fully vendor agnostic.
In my IP, I usually use the _i, _o, _t postfixes for signals that
-together- make a tristate I/O.
|
Beta Was this translation helpful? Give feedback.
-
I made a first proposal for implementing this in #543. |
Beta Was this translation helpful? Give feedback.
-
In my IP, I usually use the _i, _o, _t postfixes for signals that
-together- make a tristate I/O.
Looks good! But I think two signals for each tri-state signal should be
enough in this case, as all those signals (TWI SDA & SCL, NEOLED data) can
only be driven low (actively) by the processor.
Ah yes, bu then it's not tri-state, but bi-state, in particular "open
drain". ;-) Yeah, the _o and _i are then enough. Super! 👍👍
… Message ID: <stnolting/neorv32/repo-discussions/538/comments/5257655@
github.com>
|
Beta Was this translation helpful? Give feedback.
-
Thank you, that saves a lot of time! |
Beta Was this translation helpful? Give feedback.
-
Hi Sephan,
would it be possible to restrict the use of InOut ports to the design top level? At least in the EFINIX development environment, top-level InOut ports are only permitted via an explicit description, IN / OUT / OUT_EN. Therefore, whenever I want to use a new version of your core, I have to patch several files. It is easy to derive the additional 'Z' state in the top module from the necessary signals for e.g. TWI. Unfortunately it doesn't work the other way around.
Greetings
Thomas
Beta Was this translation helpful? Give feedback.
All reactions