Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoCaprice Cicci Modificato 10 anni fa
2
Un modem, una scheda di rete, o comunque una unità di comunicazione tra calcolatori elettronici, trasmettendo uninformazione, 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. Lesempio del modem è molto semplice da spiegare, poiché linformazione 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.
3
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 allunità centrale per i controlli che andremo adesso ad analizzare. Per correggere e minimizzare gli errori le unità di trasmissione modificano la stringa da inviare aggiungendo dei bit davanti a quelli da inviare che verranno chiamati bit di parità. 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 laggiunta 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) tra CBA ottenendo una stringa così strutturata: PSTDCBA. Se lunità che riceve riesce a calcolare gli stessi bit di parità, linformazione è stata ricevuta correttamente, altrimenti calcolando la nuova parità e confrontandola con quella ricevuta attraverso determinate tabelle si riesce a trovare e, quindi, a correggere lerrore. Ovviamente, il prezzo da pagare è nella dimensione della stringa: infatti trasmettere 7 bit è certamente meno conveniente che trasmetterne 4.
4
Esempio numerico: D C B A 1 0 0 1 Calcolando la parità, riusciamo a capire che la stringa da trasmettere sarà: P S T D C B A 1 0 1 1 0 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). Lopzione xor calcola la parità tra più numeri attraverso la seguente funzione algebrica:
5
Infatti: 0 0 0 1 1 1 1 0 0 1 1 0 1 1 0 0 1 1 0 0 XOR Y X
6
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 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 Label2.Caption="La stringa arrivata è " & fin sbagl = fin End Sub Dim n As String Dim stringa As String Dim fin As String Dim a, b, c, d, p, s, t, a1, b1, c1, d1, p1, s1, t1 As Integer Dim r, test1, test2, test3 As Integer Dim conta, somma, num, err, bin As Integer Dim errore, sbagl As String Private Sub Command1_Click() n = Text1.Text d = Mid(n, 1, 1) c = Mid(n, 2, 1) b = Mid(n, 3, 1)
7
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 lerrore 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 dellerrore. 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ì lerrore del disturbo. Adesso si può passare alla conversione. I due pulsanti inseriti, come già detto, servono uno per inviare, laltro 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.
8
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 Command2_Click() d1 = Mid(sbagl, 4, 1) c1 = Mid(sbagl, 5, 1) b1 = Mid(sbagl, 6, 1) a1 = Mid(sbagl, 7, 1) p1 = Mid(sbagl, 1, 1) s1 = Mid(sbagl, 2, 1) t1 = Mid(sbagl, 3, 1) stringa = p1 & s1 & t1 & d1 & c1 & b1 & a1 test1 = p1 Xor d1 Xor c1 Xor b1 * test2 = s1 Xor d1 Xor c1 Xor a1 * test3 = t1 Xor c1 Xor b1 Xor a1 * errore = test1 & test2 & test3 conta = 3 num = 0
9
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 MsgBox "L'errore sta nel " & err & " bit.", vbOKOnly, "A T T E N Z I O N E" inverti (err) Label1.Caption = "la stringa corretta è " & stringa End Sub Private Sub inverti(err) If Mid(stringa, err, 1) = 1 Then Mid(stringa, err, 1) = 0 Label1.Caption = stringa Else Mid(stringa, err, 1) = 1 End If End Sub
10
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 unaltra 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
11
B1117 D0116 C1015 P0014 A1103 S0102 T1001 No err.0000 ErroreTest 3Test2Test1Sempl 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 lerrore sarà in T, se il secondo e il terzo hanno dato risultato 1 il bit errato sarà A.
12
Relazione a cura di Massarelli ArcangeloTommaso Presentazione e layout di Melle Davide Alverio Giovedì 22 aprile 2004
13
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ò
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.