Domanda:
Codifica Manchester
Adan Sh
2012-04-24 13:36:32 UTC
view on stackexchange narkive permalink

A quanto ho capito, nella codifica Manchester i bit noti vengono inviati prima di iniziare un trasferimento.

Ma non ho capito perché: uno dei principali vantaggi di Manchester è il fatto che la sincronizzazione tra i due lati sia più facile. Allora perché devo inviare bit prima del trasferimento?

@mazurnification: Elimino il collegamento. È il protocollo di Manchester
Direi che "protocollo Manchester" è un cattivo alias per la stessa cosa di "codice Manchester". Wikipedia ti reindirizza dal protocollo al codice.
Adan Sh: riverito per aver ripristinato il collegamento; ciò che ha detto @Telaclvo è corretto.
Sei risposte:
Olin Lathrop
2012-04-24 18:09:36 UTC
view on stackexchange narkive permalink

Ci sono due ragioni principali per utilizzare un preambolo per avviare un pacchetto di dati codificati da Manchester:

  1. Lascia che il filtro dei dati si stabilisca. Manchester è spesso utilizzato su collegamenti radio e collegamenti fisici dove non esiste un collegamento diretto e la differenza tra un livello alto e basso non è esplicitamente nota in anticipo. Questo di solito significa che un segnale di registro viene presentato a un filtro dei dati , che rileva e trasmette la sequenza di alti e bassi digitali.

    Una proprietà della codifica manchester che lo rende utile per tali collegamenti sono che mediamente a 1/2 alto e 1/2 basso su brevi intervalli. Ogni bit ha lo stesso livello medio di 1/2. Ciò rende la suddivisione dei dati relativamente facile perché può essere un semplice confronto con il livello 1/2. Tuttavia, ciò significa che devi sapere qual è il livello 1/2. I vecchi ricevitori lo farebbero nell'hardware filtrando il passa-basso nel flusso di Manchester. Tali filtri deliberatamente non reagiscono molto in un singolo bit di tempo, quindi è necessario attendere alcuni bit per stabilirsi. Il preambolo contiene bit di scarto che il ricevitore non intende rilevare correttamente mentre il suo filtro dei dati sta trovando il livello 1/2.

  2. Indica l'inizio del pacchetto. Poiché la maggior parte dei ricevitori Manchester ha essenzialmente il controllo automatico del guadagno tramite il livello 1/2 utilizzato per la suddivisione dei dati come descritto sopra, il ricevitore interpreterà il rumore di fondo come una serie di livelli alti e bassi proprio come il segnale reale. Generalmente non esiste alcun segnale alla parte di interpretazione del flusso digitale del ricevitore, solo che il flusso ha senso quando c'è un segnale reale.

    Manchester contiene alcune informazioni ridondanti in modo che alcune sequenze di livelli possano essere rilevato come non valido direttamente senza un'interpretazione di livello superiore. Ad esempio, deve esserci una transizione al centro di ogni bit. Tre mezzi bit dello stesso livello sono illegali, quindi due-uno-due, per esempio.

    Anche se il ripristino dell'avvio del pacchetto ogni volta che viene rilevata una violazione come sopra aiuta, c'è ancora abbastanza possibilità che la spazzatura casuale si trasformi in un pacchetto che deve essere affrontato nella maggior parte dei casi. Non vuoi che i livelli più alti in profondità nella logica di decodifica dei pacchetti dal rumore quando arriva un vero pacchetto che poi sembra solo più dati per il pacchetto fasullo. Alla fine il pacchetto fasullo presumibilmente fallirà il test del checksum del pacchetto, ma perdi comunque il pacchetto reale.

    Una buona strategia è quindi quella di rendere il preambolo una sequenza unica che non è valida nel resto del pacchetto . Quando viene rilevata questa sequenza, la logica di interpretazione del pacchetto di livello superiore viene reimpostata all'inizio del pacchetto indipendentemente da ciò che si pensava stesse facendo in quel momento.

    Di solito lo faccio usando uno schema di bit di roba. Se i dati reali contengono 7 0 di fila, ad esempio, il trasmettitore deve aggiungere un bit di riempimento 1 dopo gli 0. Il ricevitore lo sa e toglie 1 bit dopo 7 0 bit consecutivi. Ciò significa che non ci sono mai 8 bit 0 consecutivi, il che sarebbe una violazione di un po 'di riempimento. Se viene rilevata una violazione di un po 'di riempimento, la logica di interpretazione del pacchetto può essere ripristinata in modo sicuro all'inizio del pacchetto poiché al momento non si trovava in un pacchetto valido. Il preambolo contiene deliberatamente una tale violazione di bit per forzare il ripristino della logica di interpretazione all'inizio del pacchetto.

    Questo schema di bit di roba e il ripristino dell'inizio del pacchetto non sono standard manchester, ma qualcosa che mi piace usare per rendere manchester più affidabile su collegamenti come la radio.

C'è di più nella codifica di manchester quando si pensa veramente ai dettagli. Puoi eseguire un filtro dei dati a risposta molto più rapida in un processore digitale, ad esempio, nei casi in cui puoi utilizzare altri mezzi oltre al bit stuffing per rilevare in modo affidabile l'inizio del pacchetto, ma questo è un intero argomento su se stesso.

Due alternative al bit-stuffing che vengono utilizzate in alcuni scenari: (1) includono un bit di parità ogni pochi bit. Questo approccio è utilizzato su carte a banda magnetica, dove il numero massimo di zeri consecutivi in ​​un flusso di dati a 5 bit è 8 (10000 00001); (2) utilizzare i dati BCD. Questo approccio viene utilizzato con i dati del timecode SMPTE, sebbene i nybble BCD si alternino a quelli non BCD, quindi il numero massimo di "1" consecutivi è 8 (0111 1111 1001 se è big-endian). Sono curioso di sapere se "1101100100" sarebbe un buon modello di preambolo, poiché sarebbe unico anche senza bit-stuffing.
@supercat: Sì, ci sono molti schemi. Ad esempio, un preambolo di lungo-corto-lungo-corto, ecc. Funziona senza un po 'di riempimento poiché è una violazione del manchester di per sé. Non è in media 1/2, ma va bene se il filtro dei dati fa qualcosa di diverso dal confronto con la media recente. Funzionerebbe bene con le mie implementazioni di slicing dei dati digitali, ad esempio, poiché quelle utilizzano filtri non lineari per derivare il livello di slicing.
Penso che sia importante che un preambolo includa un massimo e un minimo della stessa lunghezza; altrimenti, se il canale di trasmissione è affatto "analogico", i tempi lunghi possono essere letti più brevi di quanto non siano realmente e i tempi brevi più lunghi. È possibile decodificare i dati di Manchester bilanciati misurando solo i tempi da fronte di salita a fronte di salita e tempi da fronte di discesa a fronte di discesa, senza dover misurare il fronte di salita a fronte di discesa o viceversa, ma un preambolo di 100 o 110 verrebbe semplicemente letto come una sequenza uniforme di fronti di salita e una sequenza uniforme di fronti di discesa.
@supercat: Quello che stai veramente dicendo è che i tipici filtri dei dati analogici richiedono che il flusso di dati abbia un valore medio di 1/2. È vero, ma come ho detto, ci sono altri tipi che non hanno questo requisito. Non uso un filtro dati analogico da anni. Tutti i miei digitali andrebbero bene con qualcosa come una sequenza lungo-breve-lungo-breve. Si stabiliscono anche più velocemente, di solito in poco più di un po 'di tempo.
Molto dipende dal mezzo attraverso il quale passano i dati. Se il comportamento sui fronti di salita e di discesa può essere assunto simmetrico, o se la velocità dei dati è nota, allora alto-basso-basso potrebbe essere un preambolo perfetto. Se tali ipotesi non sono valide, alto-basso-basso potrebbe sembrare una sequenza di lunghi o corti in cui l'impulso basso è "allungato" rispetto all'impulso alto.
@Supercat: Non deve riguardare i tempi di salita e discesa. In effetti, i miei filtri dei dati digitali non si preoccupano di quelli.
Telaclavo
2012-04-24 14:20:31 UTC
view on stackexchange narkive permalink

Uno dei principali vantaggi di Manchester è il fatto che la sincronizzazione tra le due parti è più semplice.

Il tipo di sincronizzazione che la codifica Manchester rende più facile è la sincronizzazione a il livello di bit , non a livello di parola o pacchetto . In effetti, non aiuta affatto con quest'ultimo. Ed è per questo che potresti ancora dover trasferire alcuni bit noti, prima dei bit di dati.

Aiuta con il primo (la sincronizzazione a livello di bit), perché facilita il recupero dell'orologio.

Allora perché devo inviare bit prima del trasferimento?

In modo che ti aiutino a sincronizzare a livello di parola / pacchetto. La codifica Manchester non ti aiuta a quel livello.

Grazie per la tua risposta. Quindi, come ho capito da te, ho bisogno di inviare bit prima di una parola o di un pacchetto per contrassegnare che inizio a trasferire parola / pacchetto (in altre parole, vengono decise due parti sul segno concordato, che simboleggia l'inizio del pacchetto / parola). Questo viene fatto nel livello degli acsses di rete?
@AdanSh Sì, è necessario inviare bit per questo motivo e direi che è fatto nel livello di collegamento dati. Vedi questo http://en.wikipedia.org/wiki/Frame_(networking)
stevenvh
2012-04-26 16:08:18 UTC
view on stackexchange narkive permalink

Manchester è un metodo di codifica, non un protocollo, che descrive molto di più sulla comunicazione. Ethernet è un protocollo che utilizza la codifica Manchester.

La codifica Manchester funziona a livello di bit, vede solo un singolo bit, non si preoccupa dei bit precedenti o successivi. Non gli importa se è il primo o il quinto bit, e come tale non può imporre di inviare bit extra prima dell'inizio di un trasferimento.

Quello che probabilmente intendi è che il protocollo inizierà il trasferimento di un pacchetto / parola con una sequenza nota (anche codificata Manchester, quindi questo diventa il primo bit).

Considera la seguente sequenza di quattro impulsi negativi:

\ $ \ mbox {1 1 1 1 1 0 1 0 1 0 1 0 1 1 1 1 1} \ $

Non c'è modo di sapere se questo è 0x0000 o 0x1111 e Manchester non se ne cura. Dovrai definire bit extra per i tuoi dati per poterli decodificare. Ad esempio, se il tuo protocollo dice che ogni messaggio inizia con un preambolo di 1 bit, deve essere 0x1111 . I preamboli di diversi bit facilitano la sincronizzazione, ma riducono anche l'efficienza del canale.
A proposito, tali sequenze, solo 1 so 0 , sono le uniche che possono essere decodificato. Qualsiasi sequenza che abbia almeno 1 1 e 1 0 può essere decodificata. Il bit stuffing può aiutare a evitare tutti i pattern di 1 o tutti 0 .
Anche in questo caso un preambolo rimane utile perché il decoder sarà per emettere i bit non appena vengono ricevuti. Senza un preambolo dati come 0x0000001 possono essere decodificati solo quando viene ricevuto il bit 1 .

Tuttavia, il preambolo non è un requisito per la codifica di Manchester!

Federico Russo
2012-04-24 13:47:08 UTC
view on stackexchange narkive permalink

La codifica Manchester produce un segnale bifase: o mezzo bit di tempo basso, seguito da mezzo bit di tempo alto (che è ad esempio per un 1 logico), o mezzo bit di tempo alto seguito da un tempo basso di mezzo bit ( 0 logico). Non richiede bit aggiuntivi.

enter image description here

È possibile che il livello di protocollo successivo più alto richieda un preambolo prima che il carico utile effettivo venga trasferito, ma non è definito da Manchester. Manchester solo si occupa della codifica di singoli bit, non conosce concetti come messaggi o pacchetti.

Sei sicuro? Ho letto la frase successiva in un libro che tratta questo problema: "bit che sono conosciuti da due parti, vengono inviati prima che venga avviato il trasferimento di informazioni". Lo traduco in inglese, ma spero che tu ne capisca il significato.
@AdanSh: positivo! Manchester riguarda solo la codifica che ho descritto. I bit aggiuntivi devono far parte di un protocollo di livello superiore. A proposito, come vengono codificati questi bit extra?
Il libro non menziona come, afferma solo queste informazioni.
MikeJ-UK
2012-04-24 14:17:35 UTC
view on stackexchange narkive permalink

La ragione usuale è dare al ricevitore il tempo di sincronizzare / bloccare prima che arrivino i dati effettivi. In genere viene utilizzata una sequenza di uno o zeri consecutivi.

Con MIL-STD 1553 (un protocollo bus avionico) viene inviato uno logico (o zero) della durata di 1,5 bit periodi da uno zero logico (o uno) della durata di 1,5 bit. Questa è in realtà una violazione del codice Manchester ma è facilmente rilevabile dal ricevitore.

Nei tag RFID a bassa frequenza che utilizzano il protocollo EM 4100, un frame di dati inizia con un'intestazione di 9 Manchester. La sincronizzazione non è il problema qui poiché il ricevitore ha già un orologio (perché lo irradia al tag di trasmissione). Tuttavia, i dati possono essere invertiti, quindi il ricevitore deve determinare la polarità. Poiché 9 bit consecutivi della stessa polarità non possono mai verificarsi nei dati effettivi (a causa dei bit di parità), l'intestazione può essere rilevata in modo univoco come una sequenza di uno.

Tony Stewart Sunnyskyguy EE75
2012-04-24 23:25:44 UTC
view on stackexchange narkive permalink

Assegna un nome ad almeno 3 metodi di Manchester Code o Bi-Phase: a) Mark, Space, Transition

Assegna un nome ad almeno 3 livelli di sincronizzazione nella comunicazione;

a) bit sync , b) word sync (~ byte) c) frame sync

Che cosa è ottimale per frame sync?

Codice di correlazione incrociata in cui le parole in codice hanno un'elevata unicità quando sono sincronizzate e non sono sincronizzazione. cioè schema di rilevamento del modello che è anche meno probabile che sia anche dati.

Questo è essenziale quando si convertono bit seriali in parole parallele e frame sync. Questo è ciò che sapevo 35 anni fa quando ho implementato per la prima volta un sistema SCADA a metà degli anni '70. Potrebbe essere cambiato ora. La sincronizzazione del clock può essere semplice come uno XOR con un ritardo di 1 colpo sulle transizioni per creare un clock non riattivabile, o meglio un PLL con transizioni che campionano un VCXO ultra stabile utilizzando un segnale di clock a dente di sega e fronti di dati per campionare l'errore di fase della tensione. Ovviamente il tuo filtro passa-banda e il tuo mezzo introdurranno jitter, quindi devi imparare a usare i filtri a coseno rialzato dove lo spostamento di bit è zero. Il bit error rate o BER è una funzione dell'asimmetria del tuo clock slicer, jitter &, errore di fase nel tuo clock e jitter nei tuoi dati. Il BER è prevedibile direttamente dall'SNR e i test del margine di fase aiutano a isolare la causa dei tuoi problemi di BER utilizzando finestre temporali ridotte e spostate per forzare il tuo orologio fuori centro e vedere se i dati sono ancora validi.

Questo è il metodo segreto per analizzare qualsiasi sistema di comunicazione marginale. Ho applicato alla mia comunicazione SCADA, Telemtry al settore aerospaziale, recupero dati HDD e giorni Telecom T1.

(se vuoi dettagli su VCO a dente di sega con Sample & Hold phase error from data transitions .. chiedi: p) più di 30 anni fa l'ho progettato ma penso di poterlo ancora fare.

Ovviamente quello era un canale di comunicazione sincrono .. Puoi usarlo anche per le comunicazioni ASYNC. e forse è quello che intendevi con le parti del preambolo. . Ho usato rilevatori +/- peak and hold per il filtro di tracciamento slicer.

Se nessuna di queste risposte funziona per te, prova con un'altra domanda ...

Eh? Poco di questo balbettio apparentemente senza scopo ha molto senso.
Sembra che tu non sappia nulla del codice di Manchester. Ne ho progettati molti con successo dal 1976. Biphase richiede un preamplificatore per abilitare la fase di sincronizzazione del clock. Poiché esistono protocolli a 3 fasi, Mark, Space e Inverse definiti da IEEE, non puoi immaginare che questo sia noto. Quindi l'estrazione dell'orologio è facile. Mi viene sempre in mente che chi non sa niente non può dare un senso alla ragione e alla logica e fare commenti come i tuoi .. Per favore, ritratti. BTW poiché questo è usato per asincrono. modalità. il preambolo è essenziale per mantenere la sincronizzazione dopo le parole. come frame synch, byte sync ecc. utilizzati nei ripetitori T1 e Biø
ogni volta che si stabilisce una comunicazione sincrona o asincrona con un singolo canale (clock incorporato nei dati codificati), il ripristino dei dati richiede un pre-amble stabilito. orologi sul fronte di salita del bit di inizio.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...