enjoy-digital / litesata

Small footprint and configurable SATA core
Other
119 stars 33 forks source link

Add/Finish ECP5 support. #27

Open enjoy-digital opened 11 months ago

enjoy-digital commented 11 months ago

Adding/Finishing ECP5 support would be interesting since could provide a FOSS solution (Core + Toolchain) for a SATA controller and would also be directly useful for projects like Linux-on-LiteX-VexRiscv or Linux-on-LiteX-Rocket now that @gsomlo developed a Linux driver.

The steps for this are:

The main missing part is probably the OOB initial sequencing: https://www.researchgate.net/publication/295010956/figure/fig2/AS:330628831694855@1455839464365/OOB-Initialization-Sequence.png

Some initial tests have been done to generate/receive COMRESET/COMINIT/COMWAKE in the ecp5 branch: https://github.com/enjoy-digital/litesata/tree/ecp5 but the integrated electrical idle detection feature of the ECP5 was apparently not fast enough to detect/generate the OOB sequencing correctly. With ECP5 transceiver, it's possible to use the transceiver's IOs as regular IOs driven by user logic; more information for this is available here: https://lab.ktemkin.com/post/serdes-lfps/ We should probably use this for the OOB sequencing.

mithro commented 11 months ago

FYI - @kgugala

enjoy-digital commented 11 months ago

@mithro: Just for info, I wrote this since @trabucayre will maybe look at it. But any help is welcome!

mithro commented 11 months ago

That is awesome news, I look forward to seeing it happen!