USB-interface til 1MB / s & ingen interrupts?

F

farminbob

Guest
Hej til alle, lige fundet dette forum og det ser ud som jeg kunne få nogle svar på mit problem

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Smile" border="0" />Jeg forsøger at gøre en grænseflade til et digitalt tv-transmitter til amatørradioudstyr ..
Original design anvendes den parallelle port til 1.024Mb / s 8-bit parallel overføringshastighed i dos med ingen interrupts til parallel input af transmitteren, det pulserende de stroboskopeffekt input på printerens port til at anmode hver byte data.

Jeg forsøger at gøre en USB-version af denne og i øjeblikket eksperimenterer med FTDI FT245 chip conntected direkte til min eksterne interface.

Med dette setup har jeg fået en halv arbejdsdag, men som du måske har gættet, jeg får nogle problemer med afbryder på USB bus med jævne mellemrum og jeg løst en række bytes hver gang der ikke kan ske, hvis det skal fungere korrekt.

så ...dumme spørgsmål tid ...Jeg har
128.000 bytes / s, med 1ms?afbryde for usb = 128 bytes tabt ved hver afbryder?
Jeg tror jeg har brug for en buffer større end 128 bytes at gøre det til et tabsfri overførsel?
Interessant det FTDI chip hedder det har en 128 byte TX buffer, så jeg gætter
jeg er tæt på fuld kapacitet ..

Har nogen nogen simple idéer om en suppleant USB-interface med en større buffer eller en FIFO buffer idé, som jeg kan bruge, som ikke
er alt for kompliceret, Digital design er ikke min stærke side!

mange tak

Rob

 
Der synes at være en misforståelse med USB ms SOF (starten af frame) tic.

restrict the througput, it's rather a kind of idle signaling.

Det begrænser ikke
througput, det
er snarere en slags tomgang signaling.Vaertslandet kan starte en ny transmission til enhver tid, og det
er også forpligtet til at sende en ny anmodning pakkekoblende efter en fuld data packet modtaget fra enheden.Således en FT245 har ingen problemer med at nå op til 8 MBbps gennemstroemningsmaengden.Hvis du mister data i din ansøgning,
er det enten et spørgsmål om forkert FIFO håndtering ved FT245 eller et software problem på værten side.

 
Tak for svaret, interessant om 1ms bit, alle andre sider jeg havde læst før siger dette var den begrænsning, måske jeg kan gøre nogle fremskridt derefter ..!

Godt på det tidspunkt,
jeg sender data til FIFO fra nogle VB kode på fuld hastighed, dvs ingen FIFO kontrol men jeg tror, det sker allerede inden for de FTDI driver?

På FT245 udgangen I'm Lysblink de RD pin til at læse bytes af data fra 8-bit havn @ 128KHz og se ~ 200-400us huller i data stream (formentlig mere end én gang en anden) om FF pin der svarer til fejl i de data,
jeg ser så dette skal pege på, når de indberetter buffer på FT245 er tom, hvis det var bare ikke helt jeg ikke skulle se fejl på strømmen .. right?

Hvis jeg ur den RD pin @ 50KHz Jeg ser ingen fejl på alle og FF output fra chip forbliver lav ...hvad det fortæller os,
jeg er ikke helt sikker på, men det
er en begyndelse!

Jeg vil have lidt mere at læse om software side af tingene igen, måske det er der,
jeg får den ulejlighed.
Er Visual Basic ok for denne form for anvendelse, som
jeg har hørt om andre sider, at det ikke
er den hurtigste sprog ..?(men det
er den eneste, jeg kender!)

Tak

Rob

 
Gennemstroemningsmaengden specifikationer kan læses fra FT245 datablad, og de er korrekte, så vidt jeg har oplevet.FIFO håndtering er på FT245 side, selvfølgelig.Omend nok forvente at have oplysningerne i FIFO hele tiden, det FIFO logik kan kræve en læst, der skal gøres, hvis RXF # er hævdet.En FIFO underkoering ville være en let påviselige fejl betingelse derefter.

Problemet er mere sandsynligt, på
pc'en side dog.Jeg har ikke nogensinde brug VB med FTDI D2XX føreren, med C -Builder eller Delphi, jeg ikke se nogen.Som en yderligere antydning, et software USB overvåge kan hjælpe med at spore kommunikation.

 
Ok tak for, at oplysninger, jeg har lavet et par ændringer i softwaren, men det
er bare semi uddannede gætterier her med min viden til at gøre tingene ske, og fra at jeg ikke har bemærket nogen forskel med output stream udfald.

Jeg er kommet til den konklusion, at det kører ud af FIFO buffer i FT245 enhed ratehr end software.
Så jeg er nødt til at foretage en ekstern FIFO buffer, der er større, for det har jeg en IDT72221 chip, som jeg tror er den samme som den CY7C4221 med 1K bytes, som burde være nok ..

Nu hvor jeg har formået at passe det ind i hardware, men jeg har et par problemer.
Hvis jeg bremse ure ned til en lavere hastighed jeg kan se, at den buffer er blevet fyldt på ny FIFO ved EF går højt, så skriver input synes at være velfungerende.
Når jeg forsøger at læse bytes Jeg kan se FF gå lav brieflly i hvert læse cyklus, men jeg ser ingen data om output porte ...de opholder sig lav ...

REN1, REN2 og OE er lave, når jeg forsøger at læse bytes ..

Alle har nogen idéer?

Rob

 
Så i dag har jeg endelig fået den FIFO chip virker.Jeg har brugt en PIC indlæse bytes i FIFO chip og produktionen er læst ved en konstant hastighed.

Jeg har nu en arbejdsgruppe setup, som giver 1.024Mbit uden fejl

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Smile" border="0" />Næste Jeg vil forsøge at gå op til 2Mbit gennemstroemningsmaengde men jeg har et spørgsmål til at spørge ..

Jeg bruger en 16F84 at gøre med lastningen af FIFO og nogle picbasic kode - den hurtigste belastning hastighed jeg kan opnå med en 20MHz xtal er ~ 180KHz Jeg behøver 200KHz eller mere for 2Mbit overførsel ...

Koden går sådan her

Eventuelle bemærkninger velkommen ...

Tak

Rob

>>>>>>>>>>>>
»FIFO

TRISA =% 11111
TRISB =% 00000000'Forbindelse INFO:
«
»PIN 7 PORTB.1 = WEN1 WRITE gøre det muligt at FIFO
»PIN 8 PORTB.2 = RD læse data TIL FT245
»PIN 9 PORTB.3 = WCLK WRITE uret til FIFO
«
»PIN 17 PORTA.0 = RXF GOES højt, når FT245 ER TOM
»PIN 18 PORTA.1 = FF GOES lavt når FIFO chip FULL»START TILSTAND
PORTB.1 = 1
PORTB.2 = 1
PORTB.3 = 1

MAIN:

PORTB.3 = 0
PORTB.1 = 1
PORTB.2 = 1

hvis PORTA.0 = 0 Then 'IF FT245 HAR DATA derefter fortsætte
HVIS PORTA.1 = 1 Then 'IF FIFO Chip ikke er fuld derefter fortsætte
PORTB.2 = 0 'LOW PULSE for RD
PORTB.1 = 0 'LOW PULSE OUT FOR WRITE ENABLE
ENDIF
ENDIF
PORTB.3 = 1 'WCLK skal skiftes for at opdatere FF status hele tiden.
GOTO MAIN

>>>>>>>>>>>>>>>>>>

 
Jeg tror, det PIC16F begrænser gennemstroemningsmaengden her, men faktisk er jeg ikke forstår det's rolle i relation til det oprindelige problem beskrivelse.

Som et andet punkt, FT245 nævner en isokrone option,
der kan mig meningsfyldt at opnå en vedvarende data sats uden ekstern FIFO chip.

 
Ja PIC er problemet ..cant get enough rutinemæssige gjort i cykler til rådighed ..

PIC-kontrol lastningen af hver byte fra FT245 i FIFO, jeg kunne gøre dette med en ekstern ur og nogle porte, men det var lettere logisk at gøre det med pic for at få Wen / WCLK / RD i den rigtige rækkefølge.

Isokrone tilstand er ikke muligt var svaret fra FTDI et år eller så tilbage, da jeg startede projektet ...
Masser af oplysninger på nettet om, hvordan du bruger FT245 for INPUT men altid spørgsmålet er, hvorfor vil man ikke arbejde på hurtige hastigheder, når du bruger den til OUTPUT data.
Iw ill se nogle yderligere i et hurtigere PIC eller avr måske ...

Rob

 
OK, jeg gjorde ikke prøve isokrone tilstand med FT245 (jeg kun læses fra datablad) eller jeg kender til det værst tænkelige huller i bulk transmission, jeg lige ved af erfaring, at de angivne overføringshastighed er muligt.Så jeg blot antage en ekstern FIFO er nødvendig for din ansøgning.Men det
er en meget enkel lim logik, der kan leveres med et par standard logik ICS eller en programmeret logik enhed.Hvorfor er du forsøger med en uegnet langsom PIC?

PS: Jeg tror, noget lignende 74HC00 74HC74 vil gøre for lim logik.

 
Ok tak for det, jeg tænkte pic ville være bedre oprindeligt men naturligvis ikke!

Jeg har nu fået en 7414 og 4081 til at gøre det samme arbejde som PIC, og det ser ud til at fungere fint med 1Mbit overførsler naturligvis Jeg skulle have brugt mere tid sammen med den grundlæggende logik først!

Den 1Mbit data ser godt ud, når det bliver afkodes i den anden ende, så det ser ud som fejlfri, kan ikke være 100% sikker!

Det ser ud, som jeg har lært ting arbejder bedre og nu 2Mbit synes at arbejde, men med nogle små fejl ...vil tage et nærmere kig.

Når du har noget godt at du altid vil have mere!

Dybest set, hvad
jeg gør er at gøre en MPEG Transport stream med Audio / Video bruger VLC (videolan.org) og tilføje nogle fejlkorrektion til streamen.Derefter bliver sendt via USB interface / FIFO til en »serialiser« og til modulatoren skal kunne overføre DVB-S TV-standard, så modtage det på en normal satellit receiver@1.2GHz.
Måske det vil interesse nogen .... hmmmmRob

 

Welcome to EDABoard.com

Sponsor

Back
Top