S?bastien Bourdeauducq wrote:
> Should now be fixed in HEAD - can you confirm?

Works great ! This is what 30 seconds of IN-NAK traffic look like:

http://downloads.qi-hardware.com/people/werner/m1/usb/usb-better-dpll.png

It didn't jump even once. I'm now seeing some RX timeout errors
that weren't there before (maybe masked by the much worse DPLL
problem).

In 211.1 seconds, I got 123 such errors. That's 0.6 Hz.

> But my full speed devices still refuse to work...

Oh, I'm sure there are more germlins :-)

E.g., we may need something like the patch below to avoid races
between the poll loop in Navre and packet state changes. But I
haven't verified that one yet.

The race would be as follows:

1) softusb tests rx_pending
2) last byte completes, setting rx_pending
3) EOP is received, clearing rx_active
4) softusb tests rx_active

There are only about 200 ns or 9.6 Navre cycles between
rx_pending rising and rx_active falling. 

- Werner

diff --git a/cores/softusb/rtl/softusb_sie.v b/cores/softusb/rtl/softusb_sie.v
index 7e09d1a..3d49c81 100644
--- a/cores/softusb/rtl/softusb_sie.v
+++ b/cores/softusb/rtl/softusb_sie.v
@@ -97,7 +101,7 @@ always @(posedge usb_clk) begin
                                        rx_pending <= 1'b0;
                        end
                        6'h0a: io_do <= rx_pending;
-                       6'h0b: io_do <= rx_active;
+                       6'h0b: io_do <= rx_active | rx_pending;
                        6'h0c: begin
                                io_do <= rx_error_pending;
                                if(io_re)
_______________________________________________
http://lists.milkymist.org/listinfo.cgi/devel-milkymist.org
IRC: #milkymist@Freenode

Reply via email to