Progettare il mio autobus


8

Questa domanda va oltre alla mia domanda precedente: alternative alla SPI a causa dell'IME . Sto giocando con l'idea di progettare il mio bus di comunicazione. Le sarei grato se qualcuno potesse attirare la mia attenzione sul mio progetto preliminare e dirmi dove sono pazzo ...

Attualmente sto usando SPI da 2MHz trasportato cavi lunghi 10 cm a sette ADC su PCB separati (CS condiviso, ma ogni ADC ha la sua linea MISO. È bit-banged), ma vorrei sostituirlo con qualcosa di differenziale per ridurre l'EMI. Il problema è che non ci sono molti ADC con un bus differenziale, quindi mi chiedo se sia possibile progettare il mio bus. Almeno il livello fisico, e forse anche il protocollo.

Obiettivi di progettazione del nuovo autobus:

  • utilizzare componenti fisicamente piccoli
  • bassa EMI
  • non più di 4 cavi dati (due coppie)
  • larghezza di banda> 300kbps per ciascun ADC. (> 2.1 Mbps totali)

Prima di considerarmi pazzo per averci pensato, considera che su PSoC5 potrebbe non essere così difficile . Su quel chip posso certamente progettare il mio protocollo in Verilog e averlo implementato in hardware. E in una certa misura, potrei essere in grado di includere anche i componenti del livello fisico. Inoltre, potrei essere in grado di avere sette di queste cose contemporaneamente, tutte in parallelo nel master, una per ogni slave in modo da ottenere una buona larghezza di banda complessiva.

Ed ecco la mia idea preliminare:

inserisci qui la descrizione dell'immagine

Si baserebbe su I2C, leggermente modificato per consentire la connessione ai componenti del livello fisico. Le linee SDA e SCL sono ora coppie differenziali. La coppia SDA ha la proprietà OR-ing. Ciò si ottiene utilizzando un solo pin che può solo guidare in alto e uno che può solo guidare in basso. La coppia SCL è gestita esclusivamente dal master. La velocità dei dati verrebbe aumentata ad almeno 1 Mbps.

Il master sarebbe un PSoC5 con 7 moduli master. Gli slave sarebbero anche PSoC5, con un modulo slave, e utilizzerebbero l'ADC integrale.

Pensieri:

  • Non sono sicuro di quale sia il modo migliore per implementare i resistori di pull-up e i componenti di limitazione della velocità di risposta.
  • Presumo di non aver bisogno di alcuna risoluzione. Se limito la velocità di risposta a circa 80 ns, dovrebbe essere buono per un cavo lungo 10 cm.
  • Questo ovviamente non è un vero ricetrasmettitore differenziale. Sto sprecando il mio tempo cercando di farne uno fuori dai cancelli?
  • Quelle non porte causano qualche disallineamento. È probabile che questo sia un problema?

Forse LVDS vale la pena dare un'occhiata se si desidera la segnalazione differenziale?
Saad,

Non credo di aver visto dispositivi slave in stile I2C con ingressi e uscite SDA separati. Inoltre, se si utilizza uno slave I2C basato su microprocessore, è necessario consentire agli slave di mantenere SCK basso in modo tale che il master sia in grado di vederlo (il master si fermerà quindi all'invio del bit successivo fino allo slave rilascia SCK). Altrimenti, se il master invia i dati senza aspettare che gli slave siano pronti, le cose falliranno male. In alternativa, è possibile utilizzare SPI e utilizzare solo determinati valori di byte per l'invio di dati (quindi ogni byte di dati "reali" verrebbe trasmesso come due byte). Se lo fai ...
supercat

... poiché la maggior parte delle implementazioni SPI eliminerà multipli di interi byte in caso di sovraccarico / underrun di dati, potresti avere il master in grado di rilevare quando lo slave non è stato in grado di tenere il passo e ritrasmettere singoli byte fino a quando lo slave non è stato in grado di riconoscerli.
supercat

Risposte:


4

Bene, se hai PSoC5 tutto intorno, di recente ho letto di IEEE 1355 . La variante di collegamento del segnale DS-SE-02 può fare ciò che desideri. Richiede 4 linee di segnale: una linea dati e una linea stroboscopica in ciascuna direzione. L'unico hardware dedicato che riesco a trovare implementa 1355 è un ingranaggio Spacewire rinforzato con rad , ma questa presentazione IEEE afferma che può essere implementato su un FPGA con 1/3 delle porte di un UART e che opera a velocità 100 volte più veloce di un UART .

Una copia pubblica dello standard completo è disponibile per gentile concessione del CERN se sei pronto per leggere un po 'di luce. Non ho avuto la possibilità di sedermi con tutto, quindi non posso parlare per le sue prestazioni EMI. Osservando la sezione DS-SE, sembra che sia necessario controllare l'impedenza nella linea di trasmissione e terminare all'estremità di ricezione.


Grazie per questa idea Sembra interessante. Tutto ciò che si chiama Spacewire va bene per me. Lo guarderò ora ...
Rocketmagnet,

4

Hai considerato l'utilizzo di RS485?

Esistono già molti componenti progettati per funzionare su bus RS485.


Sì, ci ho pensato. È certamente un'opzione. Non penso che facciano OR-ing, ma il master potrebbe trasmettere in modo asincrono su una coppia, mentre gli slave si alternano sull'altra coppia. L'unico problema era che non riuscivo a trovare ricetrasmettitori veramente piccoli. Ho già detto che sono disperatamente stretto nello spazio.
Rocketmagnet,

2
SOIC 8 è troppo grande per le tue esigenze? Recentemente stavo considerando di utilizzare un Intersil ISL83485IBZ o un ricetrasmettitore SN65HVD11D di Texas Instruments su uno dei miei progetti. Entrambi hanno pacchetti SOIC 8.
Bruno Ferreira,

@Bruno - SOIC-8, stai scherzando? :-) Il PCB è di 11 mm x 13 mm .
Stevenvh,

@stevenvh Non ho notato le dimensioni sull'altra domanda. Suppongo che un pacchetto MSOP non risolva il tuo problema. In tal caso, potresti utilizzare ADM1485
Bruno Ferreira il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.