TSEI67 Telekommunikation Lab 4: Digital transmission Redigerad av Niclas Wadströmer Mål Målet med laborationen är att bekanta sig med transmission av binära signaler. Det innebär att du efter laborationen ska känna till några olika pulsformer vad gäller utseende och egenskaper. Du skall även känna till hur signalerna påverkas av brus och bandbegränsning samt veta hur signalerna kan detekteras hos mottagaren. Uppstart Se till att du har aktiverat kursen i ISY:s datorsystem. Det görs annars via kursverktyget. Laborationen utförs i matlab/simulink. Starta matlab i ett terminalfönster med kommandot matlab och öppna sedan kursens toolbox genom att skriva TSEI67 i matlabfönstret. Då öppnas ett fönster innehållande de verktyg som behövs för att genomföra laborationen: Sources - genererar insignaler till systemen. Sinks - tar hand om resultaten genom att visa figurer eller spara som variabel eller fil. Channels - några kanalmodeller. Channel coding - felrättande koder. Modulation - block för modulering/demodulering Line codes - några olika linjekoder Detectors - detektorer till linjekoderna ovan. Filters - matchade filter mm. Genom att dubbelklicka på dessa block öppnas nya fönster med block som kan användas i modellerna. Dessa har vanligtvis en eller flera parametrar som ställs in genom att öppna blocket. Genomförande Simulink är ett simulatorverktyg där man grafiskt kan bygga modeller utgående från olika byggblock. Börja en ny modell genom att välja File - New - Model i fönstermenyn. Modellen byggs sedan upp genom att dra-och-släppa block från den öppnade toolboxen och förbinda dem med ledningar. En ledning kan förgrenas genom att högerklicka-och-dra. När modellen är färdig startas simulering genom att välja Simulation - Start i fönstermenyn. 1
A. Titta på en signal Bygg en modell bestående av en binär slumpgenerator (Sources - Bernoulli Binary Generator) och ett oscilloskop (Sinks - Time Scope). Förbind dessa med en ledning och ställ sedan in parametrarna för blocken. Välj lika sannolikhet för etta resp. nolla i generatorn, låt samplingstiden vara 1/1000 s och se till att inte välja frame-based output. Justera sedan simulationsparametrarna genom att välja Simulation - Simulation parameters i fönstermenyn. Sätt stopptiden till 0.01 s och starta sedan simuleringen. Dubbelklicka på oscilloskopblocket för att öppna dess fönster. Du bör nu se en binär signal där. Testa att ändra parametrarna och kör några simuleringar för att se vad som ändras. Testa även att zooma in och ut i oscilloskopfönstret. Lägg till ett Vector Scope (Sinks - Vector Scope) och mata det med samma signal som ert Time Scope. Det finns ett antal parametrar som kan ställas till ett Vector Scope. Den enda parameter ni behöver ändra är Time display span som anger hur många sampel som ska visas samtidigt i fönstret. Testa lite olika värden och se vad som händer. Hur skiljer sig de båda oscilloskopen åt vad gäller presentation av signalen?... B. Linjekoder För att skicka en sekvens av binära symboler används någon typ av signalpulser, linjekoder. I blocket Line codes finns några varianter av linjekoder att utforska. Ni kan nu ta bort blocket Vector Scope tills vidare. Lägg till ett linjekodsblock mellan generatorn och oscilloskopet i din modell och förbind på lämpligt sätt. De parametrar som hör till linjekodsblocken är datatakt (bit/sek) och antal sampel per bit. Notera att det nu står variabelnamn (Rb resp Spb) i rutorna. Det är för att kunna ställa om alla blocken på en gång, genom att ändra värdet på variabeln, i stället för att öppna ett block i taget och ändra. Variabelns värde ändras i matlabfönstret genom att skriva tex Rb=1000. Variablerna måste skapas innan de kan användas i simuleringarna. Låt Rb=1000 (bit/sek) och Spb=10 (sampel/bit). Dessa variabler kan även utnyttjas i generatorn, ändra värdet på samplingstiden till 1/Rb. Kör några simuleringar med var och en av de tillgängliga linjekoderna och fundera på följande: Hur ser pulsen för nolla resp etta ut hos de olika linjekoderna? 2
Vilka linjekoder innehåller en likströmskomponent?.... Hur påverkar en ev. likströmskomponent en transmissionslänk i praktiken?...... C. Effektspektrum En signals effektspektrum (power spectral density) visar vilka frekvenser som signalen är uppbyggd av och i hur stor grad. Ur detta kan man bla se hur stor bandbredd en signal behöver för att kunna sändas utan att deformeras. Att känna till detta gör också att mottagaren kan förses med ett filter som dämpar störningar på andra frekvenser. Stoppa in ett block som skattar effektspektrum (Sinks - Spectrum scope) efter linjekodningen. Sätt simuleringstiden så att minst 1000 bitar skickas. Studera effektspektrum för de olika linjekoderna och fundera på: Vid vilken frekvens hittas första topp och dal i linjekodernas spektrum?... Vilken bandbredd kräver de?....... (Hur mäter man bandbredd?) Hur påverkas spektrum då datatakten ändras?... Vad är den maximala datatakten som kan skickas över en kanal med bandbredden B (khz)?...... Vilken datatakt kan nås med de använda linjekoderna (på en kanal med bandbredd B)?....... D. Transmissionskanalen Kanalen mellan en sändare och en mottagare kommer att införa en viss distorsion av den sända signalen. Distorsionen består av tex brus från elektroniska komponenter, yttre störkällor och överföringsegenskaperna hos transmissionsmediet. Genom att mäta vilka störningar som finns på en viss kanal kan man skapa en matematisk modell av kanalen. Med denna modell kan man sedan försöka förutsäga vad som händer med en skickad signal. En vanlig kanalmodell är att anta att kanalen adderar vitt brus till signalen plus att kanalen är bandbegränsad vilket kan modelleras med ett filter av lämpligt slag. Lägg till en kanal till din modell (Channels - Channel One). Placera den mellan linjekodaren och oscilloskopen. Sätt åter Rb=1000 (bit/s), Spb=10 (sampel/bit). Ändra nu simuleringstiden så att 10 pulser får passera kanalen.välj polar_nrz som linjekod och kör en simulering. Går det att urskilja vilken den sända sekvensen var?.... 3
Ställ om parametrarna på Time scope så att det kan ta två insignaler. Mata detta oscilloskop med signalen före och signalen efter kanalen. Upprepa simuleringen och jämför signalerna. Ta nu en titt på kanalblocket. Dubbelklicka för att ta fram de bakomliggande delarna. Blocket AWGN channel har en parameter för signaleffekt. Vilken signaleffekt har ni på er signal?.... Blocket har även en parameter för signalbrusförhållandet (E s /N 0 ). Variera signalbrusförhållandet och fundera på: Vid vilket signalbrusförhållande går signalen inte att skilja från bruset?... Hur förändras spektrum då signalbrusförhållandet ändras? (Ni behöver köra längre simuleringar för att kunna se spektrum.)... Hur förhåller sig utsignalens spektrum till spektrum för insignalen och spektrum för bruset?... I kanalblocket finns även ett filterblock. Dubbelklicka på det så startas ett fönster där ni kan förändra filtrets egenskaper. Till att börja med har ni ett andra ordningens Butterworth-(lågpass)-filter med gränsfrekvensen (f_c) 4,9 khz. Ändra nu gränsfrekvensen till 3 khz och klicka sedan på design filter. Återställ signalbrusförhållandet till 30 db och kör en simulering. Syns det något på signalen?...... Testa att sänka gränsfrekvensen ytterligare tills ni ser tydligt hur signalen påverkas. Prova gärna även att skapa ett något brantare filter genom att ändra till ett högre ordningens filter. Vad blir effekten av ett brantare filter?.... Skulle man hos mottagaren, utan att ha tillgång till ursprungssignalen, kunna se att signalen har passerat ett filter?... Vad händer med signalens spektrum?... E. Ögondiagram Genom att titta på ögondiagram kan man på ett bra sätt se effekterna av kanalfilter och brus. Plocka in ett eye diagram scope (Sinks - Discrete-Time Eye Diagram Scope) i din modell och mata det med utsignalen från linjekodaren. Sätt simuleringstiden till 1 s och kör en simulering för att se hur ögondiagrammet för en ostörd signal ser ut. Ta en titt på vilka parametrar som kan sättas och fundera på vad de innebär. 4
Ändra nu så att ni kan se ögondiagrammet från signalen efter kanalen (ny simulering måste köras). Ur ögondiagrammet kan man utläsa ett antal parametrar. Ögats bredd avslöjar inom vilket tidsintervall sampling bör ske. Ögats höjd (invändigt) ger information om marginalen gentemot bruset. Lutningen på övergångarna berättar om signalen är känslig för tidsfel. I vissa fall kan även bredden på korsningarna vara intressant. Den ger information om hur osäker tidpunkten för nollgenomgången är. Kör nu ett antal simuleringar där ni varierar kanalens brus och bandbredd. Studera hur ögondiagrammet ändras. Fundera över när den bästa tidpunkten för sampling är och om tidpunkten ändras beroende på kanalens egenskaper. Prova sedan att göra samma sak med de andra linjekoderna. Vilka linjekoder ger vettiga ögondiagram?....... F. Signalanpassade filter Med ett signalanpassat (matchat) filter kan man mäta likheten hos en signal med en viss referenssignal. Namnet signalanpassat (matchat) kommer av att filtret är det filter som maximerar signal-brus-förhållandet hos mottagaren för en viss skickad puls. Vid kommunikation kan man då välja pulsformer och filter så att de passar ihop och därmed ger bästa möjliga mottagning. Skriv Matchexempel i matlab fönstret så öppnas en modell bestående av ett block som läser in en variabel, en linjekodare, ett matchat filter, ett block som sammanför två signaler i en ledning samt ett vector scope. Testa och kör en simulering så får ni upp ett oscilloskop med två signaler. När når utsignalen från det matchade filtret sitt maximum?.... Hur förhåller sig den tiden till den puls som linjekodaren genererade?.. Vad är maxvärdet?... Stämmer det med teorin?....... Hur borde impulssvaret till filtret se ut? Hur kan ni kolla om det använda filtret har detta impulssvar?.... Testa att byta ut linjekodare och matchat filter. 5
Hur ser den mottagna signalen ut om filtret inte matchar den sända signalen? (Ge ett exempel och förklara) När nås maximum hos de andra linjekoderna, med rätt resp. fel filter?.. Testa nu att ändra insignalen så du skickar sekvensen [1 0 0 1 0]. Ser utsignalen från filtret ut som du förväntar dig?... G. Signal detektering För att få ett fungerande kommunikationssystem måste mottagaren kunna detektera vilka pulser som sändes. Skriv Detektionsexempel i matlabfönstret för att få en ny modell som består av en slumpkälla, en linjekodare, en kanal och ett oscilloskop. Sätt simuleringstiden till 0.01 s (10 bitar) och kör en simulering. Vilken tror ni den sända sekvensen var?.... Vad baserar ni er gissning på?...... Stoppa in ett matchat filter (Filters - Match polar_nrz) mellan kanalen och oscilloskopet och kör en ny simulering. Vilken tror ni nu var den sända sekvensen?... Vad baserar ni er gissning på nu?.... Ändra nu parametern i blocket Matrix concatenation så den tar två insignaler. Dra en ledning från utgången på linjekodaren. Nu kommer oscilloskopet visa två signaler i samma bild. Simulera igen. Vilken var den ursprungliga sekvensen?.... Hur många fel hade ni?...... 6
H. En mottagare En detektor ska ta beslut om vilken puls som troligast sändes i ett visst tidsintervall. För att ta beslutet ska något värde samplas fram (ev efter filtrering) och sedan används någon beslutsregel. Hur gjorde ni när ni gissade i förra uppgiften?... Vid vilka tidpunkter borde signalen samplas?.... Vilken beslutsregel borde användas?... Stoppa in en detektor (Detectors - Multidetector) i er modell, lägg även till ett Time scope. Förbind det matchade filtret med detektorn och låt detektorns utgång mata ert Time scope. Detektorn har två parametrar, Samplingstidpunkt t 0 (sampling sker då vid tidpunkterna t i = t 0 + k*tb, där Tb=1/Rb och k=0,1,2,3,osv), och tröskelvärde V (om det samplade värdet är över tröskelvärdet, sätt 1, om under, sätt 0). Testa lite olika värden på dessa parametrar. Vilka värden ger bästa mottagning?........ Stoppa nu in ett Eye diagram scope och mata det med utsignalen från det matchade filtret. Hur kan man i ögondiagrammet se vilka parametrar som är optimala för detektorn?........ Vilka är dessa värden?.... I. Felsannolikheter Ett mått på hur bra en kommunikationslänk är, är felsannolikheten. Den anger hur stor andel av de sända symbolerna som tolkas fel i detektorn. Hur beräknas felsannolikheten på länken ni håller på med?.... Lägg till ett block för att mäta felsannolikheten (Sinks - error rate calculation) och ett för att visa resultatet (Sinks - Display). Dra en ledning från slumpgeneratorn till ingång Tx på felmätarblocket och en ledning från utgången på detektorn till ingång Rx på samma felmätarblocket. Förbind även utgången på felmätarblocket med ingången på displayen. Sätt simuleringstiden till 5 s och starta en simulering. Simuleringen avbryts automatiskt när totalt 100 felaktiga symboler har registrerats. Vad blev felsannolikheten?... Hur stämmer det med teorin?...... 7