<div dir="ltr"><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, 22 Jun 2020 at 20:34, Rob Landley <<a href="mailto:rob@landley.net">rob@landley.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 6/22/20 2:57 AM, Tim 'mithro' Ansell wrote:<br>
> On Sun, Jun 21, 2020, 7:59 PM Rob Landley <<a href="mailto:rob@landley.net" target="_blank">rob@landley.net</a><br>
> <mailto:<a href="mailto:rob@landley.net" target="_blank">rob@landley.net</a>>> wrote:<br>
> <br>
> Sorry for the radio silence, we got buried in $DAYJOB work again. But here's an<br>
> issue I've been meaning to document:<br>
> <br>
> Although the USB 2.0 spec maxes out at 60 megabytes/second (480<br>
> megabits/second), both rounds of turtle board prototypes we did only have USB<br>
> 1.1 wired up to the USB switch chip that goes to the 4 ports. This doesn't cause<br>
> a compatibility issue (the switch chip upconverts the USB 1.1 signal to USB 2.0<br>
> as switches do), but the max bandwidth to the j-core SOC through this connection<br>
> is only 1.5 megabytes/second (12 megabits).<br>
> <br>
> The reason for that limitation is the spartan FPGAs can't actually generate a<br>
> USB 2.0 signal because it can't clock one pin fast enough. It can do 12mhz<br>
> serial output fine, but 480 mhz straight from an FPGA pin ain't happening.<br>
> <br>
> <br>
> Which Spartan are you using? <br>
<br>
The numbers on the chip say: XC6SLX45 CSG324DIV1713 D5388641A 2C<br></blockquote><div><br></div><div>That is a Spartan 6. The Spartan 6 SLX45 is the same as what is used on both the Digilent Atlys and Numato Opsis board. </div><div><br></div><div>The Opsis board also has a Microchip USB3340 and you might find joris_vr - <a href="http://jorisvr.nl/usb/">http://jorisvr.nl/usb/</a> and <a href="https://github.com/lambdaconcept/lambdaUSB">https://github.com/lambdaconcept/lambdaUSB</a> useful too.</div><div><div><br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">> On the sending side, any IO pins on the Spartan 3 can go up to 750mbit/sec and<br>
> the Spartan 6 can do up to 1250mbit/sec. Spartan 7 can do 1500mbit/sec on every<br>
> pin with a tiny bit of overclocking.<br>
<br>
This is a Jeff question. (Or Arakawa-san, or...) </blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> </blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">> The receiving side is a little bit harder unless you have a good reference<br>
> clock. On the Spartan series it is reasonably hard to get the 4x oversampling of<br>
> a 480mbit/sec required to do proper clock recovery otherwise but there are some<br>
> tricks using the IO delay phasing in a differential pair.<br>
> <br>
> It is likely we will explore some of this in the Luna stack<br>
> (<a href="https://github.com/greatscottgadgets/luna" rel="noreferrer" target="_blank">https://github.com/greatscottgadgets/luna</a>) in the future. <br>
<br>
Cool. Right now he's trying to get the parallel thing working. (He made a USB<br>
gadget, plugged it into his linux laptop to see if it would enumerate, and linux<br>
on the laptop crapped a null pointer dereference stack dump into dmesg. So we<br>
should probably report that to the kernel guys. I'm told his mac just times out<br>
instead...)<br>
<br>
I still haven't got a copy of this HAT hardware to play with yet...<br></blockquote><div><br></div><div><div><div dir="ltr"><div>I would highly recommend getting a board to Kate Temkin from Great Scott Gadgets who is working on LUNA, it is very likely she will add support for your board (she has been adding support for everything recently!). She is also very good at debugging USB issues and has a lot of tools to help figure out what is going on. I'm also sure she would love to explore another new architecture with an interesting history too!<br></div></div></div><div></div></div><div> </div><div><div dir="ltr">It would be awesome to get j-core into LiteX (<a href="https://github.com/enjoy-digital/litex/issues/107">https://github.com/enjoy-digital/litex/issues/107</a>). LiteX already supports Linux running on RISC-V 32bit (VexRISCV), RISC-V 64bit (Rocket + BlackParrot), PowerPC (microwatt) and OpenRISC1000 (mor1kx). This would open up a *lot* of potential FPGA boards to use j-core on -- see the repo at <a href="https://github.com/litex-hub/linux-on-litex-vexriscv">https://github.com/litex-hub/linux-on-litex-vexriscv</a> for a list.</div><div dir="ltr"><br></div><div dir="ltr">With ghdl + yosys starting to support more VHDL, it might even be possible to have a fully open source toolchain here. Microwatt which is also VHDL works some of the time.</div></div><div dir="ltr"><br></div><div>Keep up the good work!</div><div dir="ltr"><br></div><div>Tim 'mithro' Ansell</div><div dir="ltr"><br></div></div></div>