Re: High Speed Serial
Posted: Mon Jan 06, 2025 4:30 pm
one of those places to look for these 'complicated' stuff is ethernet
https://www.microchip.com/en-us/product ... ernet-phys
https://www.ti.com/interface/ethernet/p ... rview.html
https://www.broadcom.com/products/ether ... poe/copper
https://www.digikey.com/en/products/fil ... eivers/710
but that those would be ethernet 10/100 mbps ethernet is quite common, and so is 1 gbps these days.
some of the bigger stm32 chips e.g. stm32f405 has a built-in mac and can interface a ethernet phy over the mii, rmii interface
I've been thinking about serializing and deserializing NRZI signals in software e.g. using spi
https://www.engineersgarage.com/signal- ... -part-5-6/
well there are 'cheap' transceivers, you can literally buy them
https://www.onsemi.com/products/interfa ... s/USB1T11A
https://www.onsemi.com/download/data-sh ... t11a-d.pdf
I can figure out how to connect stm32 to e.g. usb1t11a usb fulls speed transceiver 12 Mbps
the thing is the signals that I'd receive is usb NRZI signals and I need to do the complicated "serial interface engine" part.
Trouble with this is I've seen quite a few VHDL designs say for FPGA to do that "serial interface engine"
but there is no easy 'software' methods to do NRZI, bit stuffing, signalling end of packet using 'single-ended-zero' (pull both differential lines down to zero) etc
note also that Ti has various LVDS serializers / deserializes, some of which goes up to gigabits speeds
https://www.ti.com/interface/lvds-m-lvd ... rview.html
those may be worth looking up in case there is something that works
as for usb, I'd guess stm32's native hardware (e.g. some bigger chips F4xx like F405/F407, etc are likely the most cost-effective and fuss free options if you want to simply use that chip and do a usb-host, you would need a usb hub, but I'd guess that is easy, then that all the down stream usb devices can be practically any stm32 with usb. usb does what is practically time division multiplexing, with the host polling every port at 1 ms intervals, if you have 10 devices including the hub, that 12 mbps bandwidth gets divided by 10.
there is also high speed usb 2.0 480 Mbps, but that is like ethernet and requires an external usb 2.0 high speed ulpi transceiver and interfacing.
this is also mainly supported by the 'bigger' chips
https://www.microchip.com/en-us/product ... ernet-phys
https://www.ti.com/interface/ethernet/p ... rview.html
https://www.broadcom.com/products/ether ... poe/copper
https://www.digikey.com/en/products/fil ... eivers/710
but that those would be ethernet 10/100 mbps ethernet is quite common, and so is 1 gbps these days.
some of the bigger stm32 chips e.g. stm32f405 has a built-in mac and can interface a ethernet phy over the mii, rmii interface
I've been thinking about serializing and deserializing NRZI signals in software e.g. using spi
https://www.engineersgarage.com/signal- ... -part-5-6/
well there are 'cheap' transceivers, you can literally buy them
https://www.onsemi.com/products/interfa ... s/USB1T11A
https://www.onsemi.com/download/data-sh ... t11a-d.pdf
I can figure out how to connect stm32 to e.g. usb1t11a usb fulls speed transceiver 12 Mbps
the thing is the signals that I'd receive is usb NRZI signals and I need to do the complicated "serial interface engine" part.
Trouble with this is I've seen quite a few VHDL designs say for FPGA to do that "serial interface engine"
but there is no easy 'software' methods to do NRZI, bit stuffing, signalling end of packet using 'single-ended-zero' (pull both differential lines down to zero) etc
note also that Ti has various LVDS serializers / deserializes, some of which goes up to gigabits speeds
https://www.ti.com/interface/lvds-m-lvd ... rview.html
those may be worth looking up in case there is something that works
as for usb, I'd guess stm32's native hardware (e.g. some bigger chips F4xx like F405/F407, etc are likely the most cost-effective and fuss free options if you want to simply use that chip and do a usb-host, you would need a usb hub, but I'd guess that is easy, then that all the down stream usb devices can be practically any stm32 with usb. usb does what is practically time division multiplexing, with the host polling every port at 1 ms intervals, if you have 10 devices including the hub, that 12 mbps bandwidth gets divided by 10.
there is also high speed usb 2.0 480 Mbps, but that is like ethernet and requires an external usb 2.0 high speed ulpi transceiver and interfacing.
this is also mainly supported by the 'bigger' chips