Joan (discussió | contribucions)
Joan (discussió | contribucions)
Línia 297: Línia 297:


===== Funcionament del CPLD =====
===== Funcionament del CPLD =====
El CPLD utilitza un CLK=16.384MHz, és a dir 16x vegades el baudrate. Internament el CPLD divideix aquesta senyar per obtenir uun CLK secundari de 1.024MHz sincronitzat amb les dades que està processant. També permet la generació de les senyals adecuades per enviar rebre dades via el protocol SPI.
{|class=wikitable
!CLK16||CLK_SPI||CLK_HDLC||Events
|-
|0||0||0||<-Reset/CLK_SYNC
|-
|}


El CPLD té dos modes de funcionament:
El CPLD té dos modes de funcionament:

Revisió del 14:33, 2 abr 2014

Versió 1

Connexionat LDST <-> MRSJ

S'ha produït un error en crear la miniatura: Fitxer inexistent
Esquemàtic connexionat LDST <-> MRSJ
MRSJ Dir LDST
Port Senyal PIN PIN Senyal Port
CASSETTE RxD 2 3 TxD Port A
TxD 3 2 RxD
ReadyToSend 4 4 DTR
MustSendData 5 6 DSR
GND 7 5 GND
Eject 11 1 DCD
BuffSTOut 14 7 RTS
BuffSTIn 16 8 CTS
Operable 20 4 DTR Port B
TERMINAL RxD 2 3 TxD
TxD 3 2 RxD
GND 7 5 GND

Connexionat Emulació MRSJ <-> Cinta i terminal

S'ha produït un error en crear la miniatura: Fitxer inexistent
Esquemàtic connexionat Emulació MRSJ <-> Cinta i terminal
MRSJ-Emu Dir Perifèrics
Port Senyal PIN PIN Senyal Port
Port A CD 1 20 Operable CASSETTE
RxD 2 2 TxD
TxD 3 3 RxD
DTR 4 5 MustSendData
GND 5 7 GND
DSR 6 4 ReadyToSend
RTS 7 16 BuffSTin
CTS 8 14 BuffSTout
Port B DTR 4 11 Eject
RxD 2 2 TxD TERMINAL
DTR 3 3 Eject
GND 5 7 GND

Versió 2

Analisis econòmic

Conversor USB <-> Serie

Per el que s'ha pogut determinar, FTDI sembla el millor fabricant de conversors USB<->Serie. A molts forums es recomanen els seus adaptadors
A més a més en la seva web hi han penjades les especificacions, Datasheets, Application Notes,.... del seus productes. Cosa que facilita determinar si els seus productes són els adients per les nostres necessitats.

Dintre de la seva gamma de productes, els que més s'aproximen a les nostres necessitats són:

  • FT2232D: 2xPorts serie USB FullSpeed
  • FT2232H: 2xPorts serie USB HiSpeed
  • FT4232H: 4xPorts serie USB HiSpeed

S'ha optat per el FT2232H ja que és el més barat.

Adaptació de voltatges

Per poder connectar el conversor USB a un port RS232 és necessari adaptar els voltatges usant els line-drivers corresponents. Ja que el xip treballa a 3.3V i el RS232 de -15V a 15V

En el nostre cas necessitem: 5x RS232->Lògica 5x Lògica->RS232

S'han explorat 3 opcions per aconseguir-ho:

  • A) 3x MAX232 Preu:3x(MAX232 0.49Eur, Condensadors 1.36Eur)=5,55Eur:
    • pros:
      • al usar el mateix component 3 vegades és més fàcil tenir descompte per volum
      • posibilitat d'aillar electricament entre ells els ports terminal i cassette
      • chip extremadament popular i per tan fàcil d'aconseguir tan a curt com a llarg termini
    • contres:
      • consum d'espai de circuit considerable
      • possible problema de variacions de voltatge entre els diferents xips
      • possibles complicacions d'enrutat del circuit


  • B) 1x MAX232 + 1xMC1488 + 1xMC1489 Preu:(MAX232 0.49Eur,Condensadors 1.36Eur,MC1488 0.46Eur,MC1489 0.59Eur)=2,90Eur
    • pros:
      • barat
      • chips extremadament populars i per tan fàcils d'aconseguir tan a curt com a llarg termini
    • contres:
      • possible problema de sobrecarrega al reusar la font del MAX232 per alimentar el MC1488
      • impossible aillar els ports.


  • C) 1x chip ho fa tot (HIN240,MAX244..MAX249....) Preu:6-20Eur
    • pros:
      • fàcil disseny del circuit
      • enrutat del circuit extremadament simple
      • més fiable (la probabilitat de fallada d'un circuit és directament proporcional al número de components)
    • contres:
      • problematic d'obtenir en petites quantitats (menys de 500), relativament probable que en uns anys no es pugui obtenir ni trobar-ne un equivalent.
      • car a menys que es demani en grans quantitats (alguns d'ells són realment barats per compres superirors a 2000 unitats...)
      • impossible aillar els ports

Finalment s'ha optat per la opció A.

Disseny del circuit

S'ha produït un error en crear la miniatura: Fitxer inexistent
Esquemàtic

S'ha construit un prototipus per verificar el correcte funcionament del xip FT2232H i veure si tenia algun comportament extrany (Com per exemple els PA088E fabricats per MCT Corp. que refusen els comandaments EscapeCommFunction(SETXOFF,....); EscapeCommFunction(SETXON,....); )

Per evitar les complicacions de soldar components SMD s'ha utilitzat el mòdul prefabricat DS2232H_miniModule que ofereix el propi fabricant del xip. També té l'avantatge que ja porta incorporats tots els components critics per el bon funcionament del xip (Cristall + condensadors, regulació 3.3V , EEPROM....).

S'ha optat per utilitzar condensadors ceràmics en lloc dels estandards de tàntal ja que són més barats, al no tenir polaritat no es poden posar al revés i en cas de sobrecarrega no tendeixen a explotar. També s'ha de dir que la major part dels inconvenients que tenen respecte els de tàntal no ens afecten significativament en aquest disseny (major deriva tèrmica, major deriva al llarg del temps, dependència Vdc/capacitat, soroll piezzoelèctric).

L'estandard USB, que requereix que quan un dispositiu es connecta al bus mantingui un consum inferior a 100mA fins que no rebi l'aprovació del sistema de gestió de consum del bus (normalment el S.O. del PC és el qui controla quanta potència pot consumir cada dispositiu).

Per tan per complir amb l'estandard ens veiem obligats a tenir desactivats tots els MAX232 durant l'arrencada del dispositiu. Ja que cada MAX232 té un consum de 30mA fent un total de 90mA en tots ells, que combinat amb un consum de uns 70-100mA del FT2232H ens posa clarament fora dels limits imposats per l'estandard.

Per desactivar els MAX232 durant l'arrencada s'ha optat per usar el disseny aconsellat per FTDI en AN_146 USB Hardware Design Guidelines for FTDI_ICs (pg. 6). Que utilitza un MOSFET (U6) amb la seva corresponent xarxa de polarització (R5,R6,C6). A més a més s'ha afegit un pont (R1) per si es decideix en algun moment que es vol alimentar directament els MAX232 (durant tests o per estalviar components).

Si s'opta per posar el pont R1 i suprimir el MOSFET , malgrat que s'incompliria l'estandard, el dispositiu continuaria funcionant en la majoria de casos. Ja que gairabé cap Host USB té un limitador de corrent configurable per poder forçar els dispositius a respectar l'estandard. La gran part dels PCs no tenen limitador o si el tenen és un de fixe a 500mA (consum màxim permès per el bus USB).

Finalment, s'ha cablejat els 2 connectors DB-25 de manera que es puguin connectar a una la màquina Mayer sense necessitat de adaptador.

Disseny del PCB

S'ha optat per usar una placa de 2 capes ja que és la més barata de fabricar i si fos necessari, es pot fabricar sense maquinaria especialitzada. S'han utilitzat les versions SMD de la majoria de components ja que així són més barats i ocupen menys espai.

En el disseny actual s'ha intentat fer el màxim de petit possible per així tenir una idea de quin és el tamany mínim de caixa requerit. S'ha decidit posar tots els components a la mateixa cara ja que moltes empreses de ensamblat de plaques no soporten aquesta opció.

Finalment s'han posat un pla de terra a la cara de sota i un altre pla conectat a 5V a la cara de sobre. Això es fa per reduir interferències electromagnètiques i també té l'avantatge de fer de condensador de filtre. Per raons d'espai s'utilitzen els 2 plans per enrutar les línies GND i 5V respectivament.



Index

Versió 3

Motivació

Durant la venta del LDST2 s'han trobat diversos problemes:

  • Els conversors FTDI emulen tan bé un port serie real que el Windows invoca el servei serenum que té la mania de confondre el port de TERMINAL amb un mouse serie cosa que acaba provocant que el LDST no arrenqui (el port està en ús) i que la màquina tingui un comportament erratic (rep ordres destinades a un mouse). No hi ha una manera senzilla de desactivar aquest comportament.
  • No hi ha manera senzilla de afegir soport pel protocol d'alta velocitat i sembla que algunes màquines només volen parlar el protocol d'alta velocitat....
  • El encapsulat del xip (FT2232H) és massa compacte per poder ser soldat a mà de manera fiable. (El volum de producció segurament no serà prou alt per justificar un ensamblat a màquina)
  • Han aparegut alguns problemes amb la API del port serie que proporciona el Windows (Imposibilitat de sincronitzar un canvi de linia de control amb les dades o detectar quan s'ha acabat de transmetre, comportament inconsistent entre els diferents drivers de port serie....)
  • Detecció de ports innecessariament complexe.

Per solventar tots aquests problemes s'ha optat per un nou diseny que no utilitzi el port serie.

Disseny del protocol

S'ha optat per continuar utilitzant la interficie USB per comunicar-se amb el PC. S'han estudiat diverses opcions:

Tipus dispositiu Pros Contres
CDC/ACM
  • drivers inclosos amb el OS
  • el codi del LDST teòricament el pot usar sense modificació
  • els problemes inherents a la API del port serie continuen existint
  • protocol complexe
  • falten linies de control/estat respecte un port serie normal de PC
Vendor specific
  • protocol a mida.
  • requereix desenvolupar drivers per cada versió/tipus d'OS que es vulgui soportar (extremadament complexe)
  • requereix certificat digital aprovat per Microsoft (quota anual)
HID
  • drivers inclosos amb el OS
  • API per parlar directament amb el dispositiu disponible en la majoria d'OS (Linux,Windows,OS X,Android,...)
  • Nomborsos exemples de codi disponibles.
  • fàcil de desenvolupar
  • descriptor de dispositiu complexe
  • només es poden fer transferencies tipus Interrupt
  • limitat el nombre de EndPoints (1xIN 1xOUT) per dispositiu lògic

Finalment s'ha escollit el dispositiu HID malgrat les limitacions ja que és relativament senzill d'implementar i algunes de les restriccions es poden esquivar amb facilitat.

Una de les restriccions més problemàtiques és la limitació d'EndPoints ( un endpoint tipus Interrupt en mode FullSpeed està limitat a 64KBytes/s ) però per sort és extremadament senzilla d'esquivar. Si el dispositiu s'identifica com a 'CompositeDevice' pot presentar fins a 255 dispositius lògics...

S'ha optat per presentar 2 dispositius lògics un per cada port (CASSETTE, TERMINAL)

Disseny del Hardware

Interficie HDLC/d'alta velocitat

Vist que no s'ha trobat cap xip amb una interfice de relativament bon conectar al PIC18F24J50, (La majoria de xips que està garantit que funcionaran correctament són dels anys 70-80 i utilitzen un bus de 8 bits compatible amb 80x86 o Z80) i com que s'haurà d'utilitzar igualment un PLA/CPLD per conectar els transceptors amb el xip que implementi el protocol HDLC, s'ha optat per integrar dins el propi CPLD la funcionalitat de (de)codificar el protocol HDLC.

Finalment, per simplificar la lògica a implementar en el CPLD, s'ha decidit que aquest només adapti la codificació de les dades el mínim necessari per que compleixin amb la senyalització el protocol SPI que és soportat directament per l'electrònica del PIC18F24J50 soporta directament.

Codificació

S'ha optat per utlitzar una etapa de potència semblant a la original tot i que s'ha substituit el SN75159 per un MC3487N per motius de disponibilitat. La electrònica és bàsicament la mateixa: Un PLA/CPLD controlant un transmisor de RS422/RS485 que s'utilitza com a driver del transformador. Podria esser interessant en un futur d'utilitzar un transformador amb un primari amb presa intermitja i utilitzar 2 sortides del CPLD en mode colector comú per controlar directament el transformador.


Decodificació

S'ha utilitzat un disseny totalment diferent del original. Ja que:

  • els xips requerits (o similars) són cada cop més dificils de trobar
  • s'ha de ajustar a mà el resonador utilitzat per recuperar la senyal de rellotge per cada placa que es fabriqui....
  • requereix molts components discrets auxiliars....

El disseny qe s'ha implementat utilitza optocouplers d'alta velocitat per detectar els pulsos de la senyal i envia directament la sortida dels optocouplers al CPLD per que aquest acabi la decodificació i recuperació de rellotge.

Aquest disseny té com a inconvenients que és molt menys sensible que l'original ja que els optocouplers necessiten un llindar de detecció de 1.8-2V i tampoc disposa d'una etapa amplificadora. Tot i això tests realitzats amb una unitat de dades Mayer han demostrat que rep correctament les dades fins i tot amb 10m de cable. Com a avantage requereix molts pocs components i no requereix cap ajust.


Funcionament del CPLD

El CPLD utilitza un CLK=16.384MHz, és a dir 16x vegades el baudrate. Internament el CPLD divideix aquesta senyar per obtenir uun CLK secundari de 1.024MHz sincronitzat amb les dades que està processant. També permet la generació de les senyals adecuades per enviar rebre dades via el protocol SPI.

CLK16 CLK_SPI CLK_HDLC Events
0 0 0 <-Reset/CLK_SYNC

El CPLD té dos modes de funcionament:

  • Transmissio (SPI -> HDLC) pin RX_NTX=0

sdfasdfa asdfasdf asdfas

  • Recepció (HDLC -> SPI) pin RX_NTX=1

sdf s fasd fas fdasfd asdf