Un modem una scheda di rete o comunque

  • Slides: 13
Download presentation

Un modem, una scheda di rete, o comunque una unità di comunicazione tra calcolatori

Un modem, una scheda di rete, o comunque una unità di comunicazione tra calcolatori elettronici, trasmettendo un’informazione, a causa di disturbi esterni, potrebbe variare la stessa in modo significativo compromettendo tutti i dati trasmessi. Schematizzando le due unità si riesce meglio a comprendere come avviene il passaggio di informazione. La schematizzazione prevede T come unità trasmettente, R come unità ricevente, d sono i vari disturbi. L’esempio del modem è molto semplice da spiegare, poiché l’informazione viaggia sulla linea telefonica. Sarà sicuramente capitato a chiunque di sentire durante una telefonata (con un normale apparecchio telefonico) un fruscio o altre conversazioni di sottofondo, ciò è dovuto alla presenza di disturbi esterni che grazie alla sensibilità degli strumenti di ricezione vengono amplificati compromettendo la comunicazione.

La stessa cosa avviene per la connessioni ad internet, infatti queste possono essere considerate

La stessa cosa avviene per la connessioni ad internet, infatti queste possono essere considerate vere e proprie telefonate, che vengono trasmesse dai toni che i modem riescono a codificare in bit e che verranno poi a loro volta trasmessi all’unità centrale per i controlli che andremo adesso ad analizzare. Supponendo che la stringa da trasmettere sia formata da quattro bit, verranno aggiunti altri tre bit in questo modo: La stringa da trasmettere è: DCBA tramite la parità pari (un metodo di correzione che prevede l’aggiunta del bit 1 se il numero di uno è dispari, 0 se è già pari) si aggiunge il primo bit (P) tra DCB il secondo (S) tra DBA e il terzo (T)Per tracorreggere CBA ottenendo una stringa strutturata: e minimizzare gli così errori le unità di PSTDCBA. trasmissione modificano Se l’unità che riceve riesce a calcolaredei gli bit stessi bit dia parità, la stringa da inviare aggiungendo davanti quelli dal’informazione inviare che è stata ricevuta correttamente, altrimenti la nuova parità e verranno chiamaticalcolando bit di parità. confrontandola con quella ricevuta attraverso determinate tabelle si riesce a trovare e, quindi, a correggere l’errore. Ovviamente, il prezzo da pagare è nella dimensione della stringa: infatti trasmettere 7 bit è certamente meno conveniente che trasmetterne 4.

Esempio numerico: D C 1 0 B A 0 1 Calcolando la parità, riusciamo

Esempio numerico: D C 1 0 B A 0 1 Calcolando la parità, riusciamo a capire che la stringa da trasmettere sarà: P S T 1 0 1 D 1 C 0 B A 0 1 Non si può certo chiedere al processore del PC di calcolare la parità pari di una stringa, difatti si utilizza una funzione matematica chiamata XOR (Excusive or). L’opzione xor calcola la parità tra più numeri attraverso la seguente funzione algebrica:

Infatti: X Y XOR 0 0 1 1 0 0 1 1 0 0

Infatti: X Y XOR 0 0 1 1 0 0 1 1 0 0 0

Come si può verificare la funzione espressa restituisce la parità pari delle variabili immesse.

Come si può verificare la funzione espressa restituisce la parità pari delle variabili immesse. Passando alla pratica inizializziamo un programma con due comandi, invia e correggi. Con il comando invia si creano i bits di parità per la stringa inserita e tramite la funzione random si sbaglia un bit e si invia al secondo comando Dim n As String Dim stringa As String Dim fin As String Dim a, b, c, d, p, s, t, a 1, b 1, c 1, d 1, p 1, s 1, t 1 As Integer Dim r, test 1, test 2, test 3 As Integer Dim conta, somma, num, err, bin As Integer Dim errore, sbagl As String Private Sub Command 1_Click() n = Text 1. Text d = Mid(n, 1, 1) c = Mid(n, 2, 1) b = Mid(n, 3, 1) a = Mid(n, 4, 1) p = d Xor c Xor b s = d Xor c Xor a t = c Xor b Xor a fin = p & s & t & d & c & b & a Randomize r = Int(Rnd() * 7) + 1 If Mid(fin, r, 1) = 1 Then Mid(fin, r, 1) = 0 Else Mid(fin, r, 1) = 1 End If Label 2. Caption="La stringa arrivata è " & fin sbagl = fin End Sub

Si otterrà così una stringa di nome sbagl, che contiene il numero inviato completo

Si otterrà così una stringa di nome sbagl, che contiene il numero inviato completo di bit di parità ed errore già inserito. Poiché questo programma simula l’errore e non lo crea veramente, utilizziamo una funzione che generi un numero casuale, questa funzione in ambiente “basic” assume il nome di Random, tramite questa funzione possiamo dare in uscita un numero generato tra 1 e 7 (in quanto sono 7 le cifre che compongono la stringa) che diventerà la posizione dell’errore. Nella funzione già espressa vediamo che subito dopo la random è inserita una “if”, questa controllerà se in quella posizione si trova un’ 1 o uno 0 che convertirà da 0 a 1 o da 1 a 0, simulando così l’errore del disturbo. Adesso si può passare alla conversione. I due pulsanti inseriti, come già detto, servono uno per inviare, l’altro per ricevere-correggere; premuto il secondo pulsante si attueranno 3 test e unendo i risultati si ricaverà il bit errato e sarà quindi semplice attuare la correzione.

I test che si effettuano si basano ancora una volta sulla funzione matematica XOR

I test che si effettuano si basano ancora una volta sulla funzione matematica XOR però questa volta si farà un controllo tra il bit di parità arrivati e quelli che lo hanno creato (il bit P è stato creato facendo xor tra DCB, per il test faremo xor tra PDCB) se il risultato del test sarà 0 vorrà dire che quei bit (PDCB) sono arrivati correttamente. Quindi traducendo in “basic” avremo: Private Sub Command 2_Click() d 1 = Mid(sbagl, 4, 1) c 1 = Mid(sbagl, 5, 1) b 1 = Mid(sbagl, 6, 1) a 1 = Mid(sbagl, 7, 1) p 1 = Mid(sbagl, 1, 1) s 1 = Mid(sbagl, 2, 1) t 1 = Mid(sbagl, 3, 1) stringa = p 1 & s 1 & t 1 & d 1 & c 1 & b 1 & a 1 test 1 = p 1 Xor d 1 Xor c 1 Xor b 1 * test 2 = s 1 Xor d 1 Xor c 1 Xor a 1 * test 3 = t 1 Xor c 1 Xor b 1 Xor a 1 * errore = test 1 & test 2 & test 3 conta = 3 num = 0

Do bin = Mid(errore, conta, 1) somma = somma + (bin * 2 ^

Do bin = Mid(errore, conta, 1) somma = somma + (bin * 2 ^ num) conta = conta - 1 num = num + 1 Loop Until conta <= 0 Select Case somma Case 1 err = 3 Case 2 err = 2 Case 3 err = 7 Case 4 err = 1 Case 5 err = 5 Case 6 err = 4 Case 7 err = 6 End Select Msg. Box "L'errore sta nel " & err & " bit. ", vb. OKOnly, "A T T E N Z I O N E" inverti (err) Label 1. Caption = "la stringa corretta è " & stringa End Sub Private Sub inverti(err) If Mid(stringa, err, 1) = 1 Then Mid(stringa, err, 1) = 0 Label 1. Caption = stringa Else Mid(stringa, err, 1) = 1 End If End Sub

Per tradurre questo pezzo di programma abbiamo utilizzato una sub esterna e un select

Per tradurre questo pezzo di programma abbiamo utilizzato una sub esterna e un select case. La sub esterna ci consente di eseguire una sorta di “sottoprogramma” che viene attivato solo quando è il programma principale a chiederlo, il select case invece è una sorta di insieme di “if”, questo al variare della variabile segnalata fa assumere un valore predefinito ad un’altra variabile; es. Select case Fame Case molta Pasta = 10 Case poca Pasta = 2 End select Questa select case verifica se la fame e molta o poca, se è molta fa assumere alla variabile pasta il valore 10 altrimenti 2 sarebbe come questo blocco if: if fame= molta then pasta = 10 elseif fame = poca then pasta = 2 end if la differenza è la comodità della scrittura. Per stabilire questi valori ci serviamo della seguente tabella

Sempl Test 1 Test 2 Test 3 Errore 0 0 No err. 1 0

Sempl Test 1 Test 2 Test 3 Errore 0 0 No err. 1 0 0 1 T 2 0 1 0 S 3 0 1 1 A 4 1 0 0 P 5 1 0 1 C 6 1 1 0 D 7 1 1 1 B Nella traduzione in basic, se si osservano per bene i test, ci si renderà conto che ci sono dei termini che non vengono ripetuti e altri che lo sono, osservando i risultati si comprenderà che se ad esempio solo il terzo test ha dato risultato 1 l’errore sarà in T, se il secondo e il terzo hanno dato risultato 1 il bit errato sarà A.

Relazione a cura di Massarelli Arcangelo. Tommaso Presentazione e layout di Melle Davide Alverio

Relazione a cura di Massarelli Arcangelo. Tommaso Presentazione e layout di Melle Davide Alverio Giovedì 22 aprile 2004

Massarelli Tommaso Melle Davide 3^b liceo scientifico tecnologico I. T. I. S. “Oreste Del

Massarelli Tommaso Melle Davide 3^b liceo scientifico tecnologico I. T. I. S. “Oreste Del Prete” di Sava (TA) Docenti di informatica e sistemi: Prof. Francesco Picca e Prof. Fabio Mariggiò