RTV forum PL | NewsGroups PL

Opóźnienie w transmisji USB przy demodulacji AM w prototypie z FPGA i FT2232H

Opóźnienie w transmisji USB

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Opóźnienie w transmisji USB przy demodulacji AM w prototypie z FPGA i FT2232H

Goto page Previous  1, 2, 3  Next

Adam Górski
Guest

Wed Apr 01, 2015 10:02 am   



On 2015-03-31 21:19, stchebel@gmail.com wrote:
Quote:
W dniu wtorek, 31 marca 2015 18:40:23 UTC+2 użytkownik Adam Górski napisał:


Jaką masz rewizję FT2232H ?


Za cholerę nie odczytam nic ze scalaka. Może jutro rano ktoś z lepszymi gałami da radę. Czyżbyś miał jakąś wiedzę tajemną w tym temacie?

Żadna wiedza tajemna. Rewizja A ma jakieś bliżej nieokreślone problemy z

FIFO w trybie synchronicznym i czasem gubi bajty. Errata bardzo
lakonicznie o tym wspomina. Mógłby to być jakiś trop.

Adam

Adam Górski
Guest

Wed Apr 01, 2015 1:14 pm   



On 2015-04-01 14:08, stchebel@gmail.com wrote:
Quote:
W dniu środa, 1 kwietnia 2015 12:02:17 UTC+2 użytkownik Adam Górski napisał:
On 2015-03-31 21:19, stchebel@gmail.com wrote:
W dniu wtorek, 31 marca 2015 18:40:23 UTC+2 użytkownik Adam Górski napisał:


Jaką masz rewizję FT2232H ?


Za cholerę nie odczytam nic ze scalaka. Może jutro rano ktoś z lepszymi gałami da radę. Czyżbyś miał jakąś wiedzę tajemną w tym temacie?

Żadna wiedza tajemna. Rewizja A ma jakieś bliżej nieokreślone problemy z
FIFO w trybie synchronicznym i czasem gubi bajty. Errata bardzo
lakonicznie o tym wspomina. Mógłby to być jakiś trop.


Akurat mój młody dał radę odczytać ze scalaka. Są poza typem IC 2 dodatkowe wiersze:
I245-C
D6LT32

Wracając do tematu, to opóźnienie wygląda tak, jakby w pamięci peceta tworzył się FIFO o n-krotnej pojemności rozmiaru pojedyńczego frame'a akwizycji (16KB).

Czyli raczej z hw strony nie ma się czego przyczepić.

1. Ok. Czy masz jakiś alternatywny soft do odbioru danych ? Może FTDI
coś dostarcza ?
2. Inny PC, inne sterowniki ?

Nie chcę mi się wierzyć że podstawowa funkcjonalność ma takie problemy.

Adam

J.F.
Guest

Wed Apr 01, 2015 1:46 pm   



Użytkownik napisał w wiadomości
Quote:
Wracając do tematu, to opóźnienie wygląda tak, jakby w pamięci peceta
tworzył się FIFO o n-krotnej pojemności rozmiaru pojedyńczego frame'a
akwizycji (16KB).

Chyba jak najbardziej mozliwe, trzeba by sie doczytac opisu drivera.
Z tym, ze powinies go tez szybko oproznic, skoro przetwarzanie jest
szybkie.
No i powinny byc dane od razu do dyspozycji, a o ile rozumiem po
prierwszym uruchomieniu programu odbierajacego mamy sekunde czekania.

Z drugiej banki - a moze urzadzenie za malo wysyla ?
Jak rozumiem to w programie czytasz potrzebna ilosc bajtow ... i wedle
opisu funkcja czeka az tyle naplynie.
Jesli naplywa powoli, to czekamy.

Tylko wtedy na koncu nie ma pobierania danych z bufora.

J.

Guest

Wed Apr 01, 2015 2:08 pm   



W dniu środa, 1 kwietnia 2015 12:02:17 UTC+2 użytkownik Adam Górski napisał:
Quote:
On 2015-03-31 21:19, stchebel@gmail.com wrote:
W dniu wtorek, 31 marca 2015 18:40:23 UTC+2 użytkownik Adam Górski napisał:


Jaką masz rewizję FT2232H ?


Za cholerę nie odczytam nic ze scalaka. Może jutro rano ktoś z lepszymi gałami da radę. Czyżbyś miał jakąś wiedzę tajemną w tym temacie?

Żadna wiedza tajemna. Rewizja A ma jakieś bliżej nieokreślone problemy z
FIFO w trybie synchronicznym i czasem gubi bajty. Errata bardzo
lakonicznie o tym wspomina. Mógłby to być jakiś trop.


Akurat mój młody dał radę odczytać ze scalaka. Są poza typem IC 2 dodatkowe wiersze:
I245-C
D6LT32

Wracając do tematu, to opóźnienie wygląda tak, jakby w pamięci peceta tworzył się FIFO o n-krotnej pojemności rozmiaru pojedyńczego frame'a akwizycji (16KB).

Guest

Wed Apr 01, 2015 4:42 pm   



W dniu środa, 1 kwietnia 2015 15:14:46 UTC+2 użytkownik Adam Górski napisał:

Quote:
Czyli raczej z hw strony nie ma się czego przyczepić.

1. Ok. Czy masz jakiś alternatywny soft do odbioru danych ? Może FTDI
coś dostarcza ?

Niestety nie. Pisałem do nich, ale ich tech. support odpisywał takie pierdoły, że dałem se spokój.

Quote:
2. Inny PC, inne sterowniki ?

Na innym PC, to samo. Znalazłem też takie coś spoza FTDI, ale nie obsługuje akurat tej kostki.

http://www.intra2net.com/en/developer/libftdi/

Quote:

Nie chcę mi się wierzyć że podstawowa funkcjonalność ma takie problemy.

To może być dobre do odtwarzania audio/video, ale w moim przypadku to "przesunięcie fazowe" jest niedopuszczalne.


Michał Semeniuk
Guest

Thu Apr 02, 2015 12:38 am   



Dnia 2015-04-01, o godz. 07:42:28
stchebel@gmail.com napisał(a):
Quote:
Na innym PC, to samo. Znalazłem też takie coś spoza FTDI, ale nie
obsługuje akurat tej kostki.

http://www.intra2net.com/en/developer/libftdi/


Na wstępie witam całą grupę !

Nie prawda, że libftdi nie wspiera FT2232H:

http://developer.intra2net.com/git/?p=libftdi;a=blob_plain;f=README;hb=HEAD

Od dłuższego czasu używam FT2232H (tryb asynchroniczny) + libftdi. W
pierwszej wersji korzystałem z binding'ów do python'a, teraz mam już
wszystko przepisane na natywne C. System operacyjny: Linux.
Tryb synchroniczny FIFO jest również wspierany przez libftdi dla
FT2232H, w źródłach masz nawet przykład:

http://developer.intra2net.com/git/?p=libftdi;a=blob_plain;f=examples/stream_test.c;hb=HEAD

Wydajność z tego co piszą ludzie (nie robiłem porównania osobiście)
jest trochę gorsza niż binarne d2xx ale w zamian masz:
- dostęp do całego kodu źródłowego: kernel + libusb + libftdi
- bezproblemowe i stabilne działanie na mips/arm - to akurat dla mnie
warunek konieczny

Korzystając z dołączonych przykładów, ogarnięcie w python'ku libftdi +
FT2232H to jeden dłuższy wieczór.

Jeżeli chodzi o samo opóźnienie to nic takiego nie zauważyłem. Wiadomo
działamy w userspace więc coś tam może się przytkać i zbuforować, ale
to raczej dziesiątki-max setki ms, przy mocno obciążonym systemie. W
takim układzie zadziała handshake sprzętowy po stronie ftdi - nie dasz
rady do niego pisać. Sprawdzone w praktyce, ale tj pisałem w trybie
asynchronicznym.

--
Pozdrawiam
Michał Semeniuk

Guest

Thu Apr 02, 2015 10:46 pm   



W dniu czwartek, 2 kwietnia 2015 02:38:07 UTC+2 użytkownik Michał Semeniuk napisał:
Quote:
Dnia 2015-04-01, o godz. 07:42:28
stchebel@gmail.com napisał(a):
Na innym PC, to samo. Znalazłem też takie coś spoza FTDI, ale nie
obsługuje akurat tej kostki.

http://www.intra2net.com/en/developer/libftdi/


Na wstępie witam całą grupę !

Witaj !!

Quote:

Ano być moxe masz rację. Ja "zabazowałem" na tym co znalażłem (link w poprzednim moim wpisie)

Quote:

Od dłuższego czasu używam FT2232H (tryb asynchroniczny) + libftdi. W
pierwszej wersji korzystałem z binding'ów do python'a, teraz mam już
wszystko przepisane na natywne C. System operacyjny: Linux.
Tryb synchroniczny FIFO jest również wspierany przez libftdi dla
FT2232H, w źródłach masz nawet przykład:

http://developer.intra2net.com/git/?p=libftdi;a=blob_plain;f=examples/stream_test.c;hb=HEAD

Wydajność z tego co piszą ludzie (nie robiłem porównania osobiście)

Zrób, jak coś sensownego wyjdzie, to się dogadamy w sprawach finansowych.

Quote:

Jeżeli chodzi o samo opóźnienie to nic takiego nie zauważyłem.

Jak to sprawdzałeś ?

Guest

Thu Apr 02, 2015 11:29 pm   



W dniu środa, 1 kwietnia 2015 15:46:50 UTC+2 użytkownik J.F. napisał:
Quote:
Użytkownik napisał w wiadomości
Wracając do tematu, to opóźnienie wygląda tak, jakby w pamięci peceta
tworzył się FIFO o n-krotnej pojemności rozmiaru pojedyńczego frame'a
akwizycji (16KB).

Chyba jak najbardziej mozliwe, trzeba by sie doczytac opisu drivera.
Z tym, ze powinies go tez szybko oproznic, skoro przetwarzanie jest
szybkie.

No w końcu mnie zrozumiałeś!! Zdarza się, że czasami zbyt "zawile" opisuję problemy. Zacznijmy od dokumentacji:

1) datasheet:

http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT2232H.pdf

Ot, takie pierdulamenty jak to pospawać, jakie tryby są możliwe, etc...

2) D2XX Programmer's Guide:

http://www.ftdichip.com/Support/Documents/ProgramGuides/D2XX_Programmer%27s_Guide%28FT_000071%29.pdf

Na stronie 18 masz opisaną funkcję FT_READ. Ano z niej korzystam !!

3) No i dokumentacja trybu jakiego używam:

http://www.ftdichip.com/Support/Documents/AppNotes/AN_130_FT2232H_Used_In_FT245%20Synchronous%20FIFO%20Mode.pdf

===================
No i rva jego mać, zaczynam mieć tego dosyć!! Zbyt długo się w tym ciapram.
Na ChipScopie(XILINX) wszystko zapindala jak se Stachu zaplanował..

Wracając do głównego wątka.. Pytanie do WSZYSTKICH, aktywnych w tym wątku:

Jaka inna kostka? Może jakiś Cypress?

Quote:
No i powinny byc dane od razu do dyspozycji, a o ile rozumiem po
prierwszym uruchomieniu programu odbierajacego mamy sekunde czekania.

Z drugiej banki - a moze urzadzenie za malo wysyla ?
Jak rozumiem to w programie czytasz potrzebna ilosc bajtow ... i wedle
opisu funkcja czeka az tyle naplynie.
Jesli naplywa powoli, to czekamy.

Tylko wtedy na koncu nie ma pobierania danych z bufora.

J.


2m
Guest

Fri Apr 03, 2015 1:23 am   



W dniu czwartek, 2 kwietnia 2015 23:29:07 UTC+2 użytkownik stch...@gmail.com napisał:

Quote:
http://www.ftdichip.com/Support/Documents/ProgramGuides/D2XX_Programmer%27s_Guide%28FT_000071%29.pdf

Na stronie 18 masz opisaną funkcję FT_READ. Ano z niej korzystam !!

3) No i dokumentacja trybu jakiego używam:

http://www.ftdichip.com/Support/Documents/AppNotes/AN_130_FT2232H_Used_In_FT245%20Synchronous%20FIFO%20Mode.pdf


A jak masz ustawione Timeouty ? i co ważniejsze parametry USB funkcja FT_SetUSBParameters....
Moze zerknij tutaj:
http://www.ftdichip.com/Support/Documents/AppNotes/AN232B-03_D2XXDataThroughput.pdf

2m

Guest

Fri Apr 03, 2015 1:57 am   



W dniu piątek, 3 kwietnia 2015 01:23:59 UTC+2 użytkownik 2m napisał:
Quote:
W dniu czwartek, 2 kwietnia 2015 23:29:07 UTC+2 użytkownik stch...@gmail.com napisał:

http://www.ftdichip.com/Support/Documents/ProgramGuides/D2XX_Programmer%27s_Guide%28FT_000071%29.pdf

Na stronie 18 masz opisaną funkcję FT_READ. Ano z niej korzystam !!

3) No i dokumentacja trybu jakiego używam:

http://www.ftdichip.com/Support/Documents/AppNotes/AN_130_FT2232H_Used_In_FT245%20Synchronous%20FIFO%20Mode.pdf


A jak masz ustawione Timeouty ? i co ważniejsze parametry USB funkcja FT_SetUSBParameters....

Timeouty są ustawione na maxa. Na 256ms. Dlaczego na aż tyle? Moje badziewie robi akwizycję przez 60ms. Dopóki nie zakończy, to pomimo wysłanego sygnału TXE# ze strony FT2232H, sygnał WR# jest w stanie '1'. I to działa! Bo gdyby nie działało, to cała synchronizacja poszła by się paść.

Quote:
Moze zerknij tutaj:
http://www.ftdichip.com/Support/Documents/AppNotes/AN232B-03_D2XXDataThroughput.pdf

Znam to!! Nie chodzi mi o prędkość transmisji, bo owa jest zarąbista. Nie mierzyłem precyzyjnie, ale z całą pewnością >30MB/s. Ale nie w tym rzecz!!


Przeczytaj główny wątek jeszcze raz, dyskusję z Kolegami, bo nie chce mi się po raz setny tłumaczyć w czym problem.

2m
Guest

Fri Apr 03, 2015 4:41 am   



Quote:
Przeczytaj główny wątek jeszcze raz, dyskusję z Kolegami, bo nie chce mi się po raz setny tłumaczyć w czym problem.

Czytałem.
Czy i na jaką wartość masz ustawiony parametr dwInTransferSize w funkcji FT_SetUSBParameters ?

2m

Guest

Fri Apr 03, 2015 1:10 pm   



W dniu piątek, 3 kwietnia 2015 04:41:16 UTC+2 użytkownik 2m napisał:
Quote:
Przeczytaj główny wątek jeszcze raz, dyskusję z Kolegami, bo nie chce mi się po raz setny tłumaczyć w czym problem.

Czytałem.
Czy i na jaką wartość masz ustawiony parametr dwInTransferSize w funkcji FT_SetUSBParameters ?

2m

16K

janusz_k
Guest

Fri Apr 03, 2015 4:12 pm   



W dniu 2015-04-02 o 23:29, stchebel@gmail.com pisze:
Quote:
W dniu środa, 1 kwietnia 2015 15:46:50 UTC+2 użytkownik J.F. napisał:
Użytkownik napisał w wiadomości
Wracając do tematu, to opóźnienie wygląda tak, jakby w pamięci peceta
tworzył się FIFO o n-krotnej pojemności rozmiaru pojedyńczego frame'a
akwizycji (16KB).

Chyba jak najbardziej mozliwe, trzeba by sie doczytac opisu drivera.
Z tym, ze powinies go tez szybko oproznic, skoro przetwarzanie jest
szybkie.

No w końcu mnie zrozumiałeś!! Zdarza się, że czasami zbyt "zawile" opisuję problemy. Zacznijmy od dokumentacji:

1) datasheet:

http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT2232H.pdf

Ot, takie pierdulamenty jak to pospawać, jakie tryby są możliwe, etc..

2) D2XX Programmer's Guide:

http://www.ftdichip.com/Support/Documents/ProgramGuides/D2XX_Programmer%27s_Guide%28FT_000071%29.pdf

Na stronie 18 masz opisaną funkcję FT_READ. Ano z niej korzystam !!

3) No i dokumentacja trybu jakiego używam:

http://www.ftdichip.com/Support/Documents/AppNotes/AN_130_FT2232H_Used_In_FT245%20Synchronous%20FIFO%20Mode.pdf

====================

No i rva jego mać, zaczynam mieć tego dosyć!! Zbyt długo się w tym ciapram.
Na ChipScopie(XILINX) wszystko zapindala jak se Stachu zaplanował..

Wracając do głównego wątka.. Pytanie do WSZYSTKICH, aktywnych w tym wątku:

Jaka inna kostka? Może jakiś Cypress?
Wtrącę swoje 3 grosze, mam kupiony analizator stanów logicznych Saleae i

też się nie wyrabia, teoretycznie powinien samplować 24M a ja w porywach
osiągam 500k, jak poczytałem to podobno wina sterowników usb które w
jakiś sposób się gryzą i zabagnionego windowsa, tyle że ja nie mam
zabagnionego a mimo to się nie wyrabia, więc wychodzi kicha, może
postawię czystego XP i spróbuję znowu.
Więc zastanów się zanim sięgniesz po cypressa bo może się okazać że ma
tak samo złe drivery usb jak reszta.


--
Pozdr

Janusz_K

2m
Guest

Fri Apr 03, 2015 4:21 pm   



W dniu piątek, 3 kwietnia 2015 13:10:24 UTC+2 użytkownik stch...@gmail.com napisał:
Quote:
W dniu piątek, 3 kwietnia 2015 04:41:16 UTC+2 użytkownik 2m napisał:
Przeczytaj główny wątek jeszcze raz, dyskusję z Kolegami, bo nie chce mi się po raz setny tłumaczyć w czym problem.

Czytałem.
Czy i na jaką wartość masz ustawiony parametr dwInTransferSize w funkcji FT_SetUSBParameters ?

2m

16K

Moim zdaniem powinieneś pomanipulować tą wartością uwzględniając to, że dane są przesyłane w 64bajtowych pakietach (endpoint size) i w każdym pakiecie USB 2 bajty są zarezerwowane przez FTDI.
Czyli dwInTransferSize powinien być:
A) wielokrotnością 64
B) jego wartość powinna uwzględniać TwojDane + wspomniane 2 bajty na pakiet.
Wtedy będzie to transakcja. Host Controller Driver robi sheduling USB optymalizowny na transakcje. (UHCI OHCI EHCI każdy z nich stosuje różne algorytmy).
Twój przypadek pasuje mi do sytuacji kiedy TwojeDane nie mieszczą się w jednej transakcji i stąd powstaje opóźnienie.
Daj znać jeśli trafiłem.
2m

Guest

Fri Apr 03, 2015 6:26 pm   



W dniu piątek, 3 kwietnia 2015 16:21:10 UTC+2 użytkownik 2m napisał:
Quote:
W dniu piątek, 3 kwietnia 2015 13:10:24 UTC+2 użytkownik stch...@gmail.com napisał:
W dniu piątek, 3 kwietnia 2015 04:41:16 UTC+2 użytkownik 2m napisał:
Przeczytaj główny wątek jeszcze raz, dyskusję z Kolegami, bo nie chce mi się po raz setny tłumaczyć w czym problem.

Czytałem.
Czy i na jaką wartość masz ustawiony parametr dwInTransferSize w funkcji FT_SetUSBParameters ?

2m

16K

Moim zdaniem powinieneś pomanipulować tą wartością uwzględniając to, że dane są przesyłane w 64bajtowych pakietach (endpoint size) i w każdym pakiecie USB 2 bajty są zarezerwowane przez FTDI.
Czyli dwInTransferSize powinien być:
A) wielokrotnością 64
B) jego wartość powinna uwzględniać TwojDane + wspomniane 2 bajty na pakiet.
Wtedy będzie to transakcja. Host Controller Driver robi sheduling USB optymalizowny na transakcje. (UHCI OHCI EHCI każdy z nich stosuje różne algorytmy).
Twój przypadek pasuje mi do sytuacji kiedy TwojeDane nie mieszczą się w jednej transakcji i stąd powstaje opóźnienie.
Daj znać jeśli trafiłem.
2m

Nawet nie podchodzę do Twoich sugestii, bo są bezsensowne. To o czym piszesz ma wpływ na całkowitą prędkość transmisji, a nie na buforowanie "w stylu FIFO"

Goto page Previous  1, 2, 3  Next

elektroda NewsGroups Forum Index - Elektronika Polska - Opóźnienie w transmisji USB przy demodulacji AM w prototypie z FPGA i FT2232H

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map