• No results found

Modellering av ett OFDM system för IEEE 802.11a med hjälp av Xilinx blockset

N/A
N/A
Protected

Academic year: 2021

Share "Modellering av ett OFDM system för IEEE 802.11a med hjälp av Xilinx blockset"

Copied!
49
0
0

Loading.... (view fulltext now)

Full text

(1)

med hjälp av Xilinx blockset

Examensarbete utfört i Elektroniksystem

vid Linköpings Tekniska Högskola

av

Johan Botvidzon

LiTH-ISY-EX-3256-2002

(2)
(3)

Examensarbete utfört i Elektroniksystem

vid Linköpings Tekniska Högskola

av

Johan Botvidzon

LiTH-ISY-EX-3256-2002

Handledare: Kent Palmkvist Examinator: Kent Palmkvist Linköping 2002-10-05

(4)
(5)

Division, Department Institutionen för Systemteknik 581 83 LINKÖPING Date 2002-10-25 Språk

Language Rapporttyp Report category ISBN X Svenska/Swedish

Engelska/English

Licentiatavhandling

X Examensarbete ISRN LITH-ISY-EX-3256-2002 C-uppsats D-uppsats Serietitel och serienummer Title of series, numbering ISSN

Övrig rapport

____

URL för elektronisk version

http://www.ep.liu.se/exjobb/isy/2002/3256/

Titel Title

Modellering av ett OFDM system för IEEE 802.11a med hjälp av Xilinx blockset Modelling of an OFDM system for IEEE 802.11a using the Xilinx blockset Författare

Author

Johan Botvidzon

Sammanfattning Abstract

Kraven på dagens trådlösa förbindelser kommer hela tiden att öka och med detta följer även högre krav på nya produkter som kan tillgodose de ökade kraven. För att göra processen från idé till produkt snabbare krävs enkla verktyg för att snabbt kunna gå från den formulerade standarden till en hårdvaruprototyp. Detta arbete har använt sig av ett av dessa verktyg som idag finns tillgängliga, Xilinx System Generator for DSP 1.1, för att ta fram sändare och mottagare för en del av den trådlösa standarden IEEE 802.11a. Arbetet ger en beskrivning av hur sändare och mottagare är uppbyggda samt även synpunkter på System Generator och beskrivningar av problem som uppstod under arbetet.

The demands on todays wireless communications will continue to increase and with this follows a demand for shorter and shorter development times for the products that are going to satisfy this demand. To

accomplish this shorter development time simple tools for going from the formulated standard to a hardware prototype is needed. This work uses one of these tools today available, Xilinx System Generator for DSP 1.1, to develop a transmitter and a reciever for a part of the wireless standard IEEE 802.11a. The work gives a description of the building blocks of the transmitter and the reciever but also some views on System Generator and descriptions of problems that were encountered during the work.

Nyckelord Keyword

(6)
(7)

Sammanfattning

Kraven på dagens trådlösa förbindelser kommer hela tiden att öka och med detta följer även högre krav på nya produkter som kan tillgodose de ökade kraven. För att göra processen från idé till produkt snabbare krävs enkla verktyg för att snabbt kunna gå från den formulerade standarden till en hårdvaruprototyp.

Detta arbete har använt sig av ett av dessa verktyg som idag finns tillgängliga, Xilinx System Generator for DSP 1.1, för att ta fram sändare och mottagare för en del av den trådlösa standarden IEEE 802.11a. Arbetet ger en beskrivning av hur sändare och mottagare är uppbyggda samt även synpunkter på System Generator och beskrivningar av problem som uppstod under arbetet.

(8)
(9)

1.1 Bakgrund . . . .1

1.2 Syfte . . . .1

2 Teori

. . . .3

2.1 OFDM . . . .3

2.1.1 Skapandet av de ortogonala bärvågorna . . . 4

2.1.2 Symbolförlängning . . . 5 2.2 IEEE 802.11a . . . .6

3 Utvecklingsmiljö

. . . .9

4 Modell

. . . .11

4.1 Sändare . . . .11 4.1.1 QAM_Mapping . . . 11 4.1.2 IFFT_In_Buffer . . . 14 4.1.2.1 sample_flip . . . 15 4.1.2.2 pilot_padding . . . 17 4.1.3 IFFT . . . 19 4.1.4 Cyclic_prefix . . . 20 4.1.5 Windowing . . . 21 4.1.5.1 2_1_prebuffer . . . 21 4.1.5.2 window . . . 21 4.1.5.3 6_5_buffer . . . 22 4.1.6 Utsignalen . . . 23 4.2 Mottagare . . . .24 4.2.1 Synchronization . . . 24 4.2.1.1 correlation . . . 25 4.2.1.2 clk_gen . . . 26 4.2.2 FFT_In_Buffer . . . 27 4.2.3 FFT . . . 28 4.2.4 FFT_Out_Buffer . . . 28 4.2.5 QAM_Demap . . . 29

5 Slutsats

. . . .33

Referenser

. . . .35

Förkortningar

. . . .37

(10)
(11)

1 Inledning

1.1 Bakgrund

Dagens snabba utvecklingstakt kräver ofta att nya produkter hela tiden finns på konstruktionsbordet. För att underlätta konstruktionsarbetet vore det bra om man snabbt kunde få fram en prototyp av produkten. Idag finns system för att snabbt kunna gå från idé till prototyp.

Ett verktyg som på ett smidigt sätt tillåter detta är Xilinx System Generator, vilket är ett tilläggsprogram till Matlab/Simulink. Xilinx System Generator tillåter att en lättöverskådlig och lätt konfigurerbar modell skapas i Simulink för snabba jämfö-relser och test av konstruktioner. Modellen kan sedan enkelt syntetiseras för implementering i en FPGA för hårdvarutest.

1.2 Syfte

Syftet med detta arbete har varit att med hjälp av Matlab och Simulink skapa en syntetiserbar modell av ett 16-QAM OFDM system som följer standarden IEEE 802.11a för implementering i en FPGA. För att få modellen syntetiserbar har modellen konstruerats enbart med hjälp av Xilinx blockset ur vilka syntetiserbar VHDL kod kan genereras via Xilinx System Generator 1.1.

(12)
(13)

2 Teori

Då intresset för mobila och trådlösa tjänster ökar höjs även kraven på högre över-föringshastigheter. För att tillgodose de ökande kraven söker forskare och pro-duktutvecklare ständigt efter nya sätt att öka hastigheterna. Ett sätt att öka hastigheten är att använda nya sorters signalmoduleringar. OFDM, Orthogonal Frequency Division Multiplexing, är en av dessa moduleringstekniker som nu används av flera standarder för höghastighetsöverföringar, bland annat HiPer-LAN/2 och IEEE 802.11a, för att uppnå högre hastigheter.

2.1 OFDM

OFDM har sitt ursprung så långt tillbaka som 1950-talet, då man började utveckla tekniker för att sända data parallellt över flera frekvenser samtidigt. Orsaken till detta var att man ville hitta en teknik som var mindre känslig för störningar och dämpningar av signalen än traditionella sändningstekniker som endast använder sig av en bärvåg för att sända.

Då data sänds med hjälp av flera bärvågor samtidigt blir sändningen mindre käns-lig mot enskilda störningar och dämpningar då dessa enbart drabbar en eller ett fåtal bärvågor. Förutom detta förkortas sändningstiden drastiskt och genom detta görs sändningen mindre känslig. Om signalen ändå skulle bli störd kan man, pre-cis som vid traditionella sändningsmetoder, med hjälp av felrättande koder ändå återställa förlorad data utan att behöva sända om informationen som förlorades. Dessa tidiga tekniker var dock inte helt lika OFDM. De tidiga teknikerna funge-rade så att frekvensbandet man ville använda delades in i N stycken ej överlap-pande områden med en buffert mellan varje område. I vart och ett av dessa områden sändes sedan data. Om N då var någorlunda stort innebar detta att man blev tvungen att använda sig av ett mycket stort frekvensområde. OFDM däremot fungerar på så sätt att man använder sig av överlappande frekvensområden, det vill säga de N stycken områdena börjar och slutar i ett angränsande område. Detta leder till att ett mycket mindre frekvensband behövs (se figur 1).

(14)

Figur 1. Frekvensområdesanvändning för a) ej överlappande tekniker, och b) OFDM.

För att mottagaren sedan skall kunna avmodulera dessa OFDM signaler på rätt sätt utan att de intilliggande bärvågorna skall störa varandra krävs att bärvågorna i sig måste vara inbördes matematiskt ortogonala, därav namnet på moduleringstekni-ken.

2.1.1 Skapandet av de ortogonala bärvågorna

Varje OFDM signal består av ett antal BPSK- eller QAM-modulerade symboler. De ortogonala bärvågorna skapas sedan genom att beräkna en invers diskret fou-riertransform, IDFT, över dessa symboler under den totala symboltiden, T. Orto-gonaliteten bärvågorna mellan kan beskrivas med hjälp av nedanstående figur som visar hur skillnaden mellan två stycken bärvågor är exakt en period samt att varje bärvåg har ett heltaligt antal perioder inom tiden T.

Figur 2. Beskrivande bild av fyra bärvågor med en periods skillnad mellan varje.

Att IDFT beräkningen kan användas för att skapa bärvågorna är en stor fördel eftersom den effektivt kan implementeras i hårdvara genom att använda sig av ‘Inverse Fast Fourier Transform’, IFFT.

(15)

2.1.2 Symbolförlängning

Ett stort problem vid sändningar är att de sända symbolerna kan ta olika väg från sändare till mottagare. Detta kan medföra att två symboler kan komma att över-lappa varandra vid mottagningen och ge upphov till störningar, så kallad Inter-Symbol Interference (ISI).

Orsaken till att OFDM handskas så väl med InterSymbol Interference är den för-längning av symbolerna som införs. Tiden med vilken symbolerna förlängs väljs så att den är längre än den förväntade fördröjningen hos symboler som tagit en längre väg från sändare till mottagare så att fördröjda symboler inte skall kunna störa aktuella symboler.

Denna förlängning skulle kunna bestå av ingen signal alls men detta skulle kunna ge upphov till störningar bärvågorna emellan eftersom den fördröjda bärvågen då skulle kunna ha ett icke heltaligt antal perioder inom FFT-intervallet i mottagaren och på så sätt störa demoduleringen av den aktuella bärvågen, så kallad InterCar-rier Interference (ICI), (figur 3). För att slippa problemet med att fördröjda bärvå-gor inte har ett heltaligt antal perioder inom FFT-intervallet fylls istället

förlängningen med en cyklisk förlängning av symbolen. Detta medför att bärvågor som är fördröjda kortare tid än förlängningstiden kommer att ha ett heltaligt antal perioder inom FFT-intervallet efter förlängningen (figur 4).

Figur 3. Bärvåg utan signal i förlängningsintervallet. Den fördröjda bärvågen (#2) har ett icke heltaligt antal perioder inom FFT-intervallet.

(16)

Figur 4. Bärvåg med cykliskt förlängd signal i förlängningsintervallet. Den fördröjda bärvågen (#2) har ett heltaligt antal perioder inom FFT-intervallet.

Hur denna förlängning placeras beror sedan på konstruktionen av systemet eller på den standard systemet ska följa. Förlängningen kan representeras som ett pre-fix, ett postfix eller som en kombination av de båda med både postfix och prefix. Det väsentliga är att fördröjda symboler får ett heltaligt antal perioder inom FFT-intervallet.

2.2 IEEE 802.11a

En av de standarder som använder sig av OFDM är IEEE 802.11a. Standarden IEEE 802.11a antogs 1999 av Institute of Electrical and Electronics Engineers för att erbjuda högre överföringshastigheter i frekvensområdet runt 5,2 GHz istället för den tidigare fastslagna 802.11 standarden för 2,4 GHz området.

Standarden erbjuder ett flertal överföringshastigheter från 6 Mbps upp till 54 Mbps. För att erbjuda dessa överföringshastigheter är OFDM tekniken kombine-rad med ett antal modulerings- och kodningsalternativ. Nedanstående tabell ger en liten överblick av vad standarden erbjuder.

(17)

Tabell 1. Data för IEEE 802.11a.

För att göra standarden robust vad det gäller störningar från signaler som gått en annan väg från sändare till mottagare, så kallad ‘InterSymbol Interference’ (ISI), används en symbolförlängning på 800 ns. För IEEE 802.11a används ett prefix som symbolförlängning, d.v.s. de sista 800 ns av symbolen kopieras och sätts in som ett prefix till symbolen.

Produkter som utnyttjar IEEE 802.11a har inte funnits på marknaden under någon längre tid. Standarden har varit tillåten av amerikanska myndigheter men i europa har man varit mer skeptisk på grund av risken för störningar av radar och satellit-kommunikation som även de arbetar vid 5 GHz. Standarden har dock nyligen god-känts för användande i några europeiska länder, däribland Sverige, dock krävs speciella tillstånd för användandet.

En standard liknande IEEE 802.11a vid namn HiPerLAN/2, som även den utveck-lats för kommunikation vid frekvensen 5 GHz, är dock tillåten att använda då denna har inbyggda funktioner för att lyssna efter annan trafik och byta frekvens-band om man riskerar att störa annan kommunikation. IEEE arbetar dock på upp-följare till 802.11a standarden som skall tillmötesgå de krav på sändarfrekvens och effekt som krävs av de europeiska myndigheterna.

Data hastighet 6, 9, 12, 18, 24, 36, 48, 54 Mbps

Modulering BPSK, QPSK, 16-QAM, 64-QAM

Kodning 1/2, 2/3, 3/4 Antal bärvågor 52 Antal pilottoner 4 OFDM symboltid 4 Symbolförlängning 800 ns Bärvågsavstånd 312,5 kHz -3dB Bandbredd 16,56 MHz Kanalavstånd 20 MHz µs

(18)
(19)

3 Utvecklingsmiljö

Modellen av systemet har tagits fram genom att använda Matlab 5.3, tilläggspro-grammet Simulink samt Xilinx System Generator for DSP 1.1.

Simulink är ett verktyg som används för att lätt skapa modeller som sedan kan simuleras och analyseras direkt. Simulink är uppbyggt runt en samling fördefinie-rade block för att lätt kunna skapa modeller men tillåter även att egna block defi-nieras samt att utomstående företag skapar samlingar av block som sedan kan integreras och användas i Simulink.

Xilinx System Generator for DSP 1.1 är ett tillägg till Simulink som ger använda-ren av Simulink möjligheten att med hjälp av Xilinx blocksamling skapa modeller som är simulerbara och analyserbara i Simulink men ur modellen kan även synte-tiserbar VHDL-kod genereras för implementering i FPGA. System Generator kan även direkt generera en testbänk för modellen för ytterligare test. För att ha möj-ligheten att generera den syntetiserbara koden måste dock modellen vara upp-byggd enbart av de block som ingår i System Generator.

(20)
(21)

4 Modell

Modellen av systemet är uppdelad i två delar. En sändardel och en mottagardel. Som tidigare nämnts så följer inte modellen standarden till fullo eftersom enbart 16-QAM moduleringen används. Detta gör att modellen enligt standarden enbart klarar överföringar med hastigheterna 24 Mbit/s och 36 Mbit/s. Modellen använ-der sig även enbart av statiska pilottoner, d.v.s. pilottonerna ändrar sig inte från symbol till symbol vilket de enligt standarden ska göra.

Det finns alltså inget stöd i modellen för att välja vilken överföringshastighet man vill använda sig av utan modellen förutsätter att all indata är data och skall modu-leras med hjälp av 16-QAM.

4.1 Sändare

Modellen av sändaren består av fem delblock (se figur 5), QAM_Mapping, IFFT_In_Buffer, IFFT, Cyclic_Prefix och Windowing. De följande avsnitten kommer att behandla dessa block var för sig och beskriva funktion samt ingånde delblock.

Figur 5. Blockschema för sändaren.

Som ses i figuren har sändaren två insignaler, In och reset. In är den seriella inda-taströmmen och reset är den globala reset-signalen, som även återfinns i mottaga-ren.

För att få timingen för signalerna att stämma efter att reset-signalen använts finns flertalet fördröjningselement inbyggda i modellen.

(22)

Figur 6. 16-QAM konstellation.

Denna typ av konstellation kallas Gray-konstellation. Om man betraktar två när-liggande punkter i konstellationen ser man att de endast skiljer sig åt i en bit. Detta är mycket praktiskt vid datasändningar. Antag att signalen (1, j3) tas emot när det borde ha varit signalen (1, j1). Detta är ju trots allt fel signal men på grund av kon-stellationen så skiljer sig dessa enbart åt i en av de fyra bitarna vilket gör att felet sedan kan rättas till med hjälp av felrättande system.

Mappningen av data görs genom att det seriella indatat först delas in i delar om fyra bitar. Detta för att få 16 olika mappningspunkter, 0 till 15 (se figur 6). Denna uppgift utförs i blocket ser2par som omvandlar den seriella inströmmen till en ström av fyra bitars parallella tal m.h.a. fyra stycken D-vippor (se figur 7).

(23)

Strömmen av parallella data tas emot av blocket LookUp som i sin tur utför omvandlingen från 4 bitars binära tal till ett komplext talpar bestående av en 16 bitars reell del och en 16 bitars imaginär del. Anledningen till att omvandlingen sker från fyra bitar till 16 bitar är att det IFFT-block som används senare i model-len kräver 16 bitars komplexa talpar för att utföra IFFT-beräkningen.

Omvandlingen i LookUp sker genom att använda två ROM innehållande mapp-ningspunkterna som uppslagningstabell. Det ena ROM:et innehållande de reella delarna av mappningspunkterna och det andra ROM:et innehållande de imaginära delarna av mappningspunkterna. De reella värdena och de imaginära värdena är dock till beloppet lika.

Mappningspunkterna i Rom:et är lagrade som 16 bitars tal med binärpunkten i position 14 och den mest signifikanta biten som teckenbit, d.v.s. talen kan anta värden i intervallet ]-3,3[ . De värden som lagras är dock inte de värden som kan ses i figuren över konstellationen. De lagrade värdena i ROM:et är skalade med en normaliseringsfaktor som för 16-QAM mappning enligt standarden är .

Normaliseringsfaktorn används för att få en jämn medeleffekt för alla mappningar och gör att mappningarna istället hamnar i intervallet [-1, 1].

De slutliga mappningspunkterna som lagras i ROM:en blir således, både för den reella delen och för den imaginära delen,

.

Som man kan se i figuren över 16-QAM konstellationen (figur 6) så beror värdet på den reella delen av talparet enbart på de två mest signifikanta bitarna av binär-värdet och binär-värdet på den imaginära delen enbart av de två minst signifikanta bitarna. Alltså kan de två mest signifikanta bitarna användas för att adressera ROM:et med de reella mappningspunkterna och de två minst signifikanta bitarna för att adressera ROM:et med de imaginära mappningspunkterna.

Figuren nedan visar hela förloppet från seriell indata till mappade utdata.

1 10 ---3 – 10 --- –1 10 --- 1 10 --- 3 10 ---, , ,    

(24)

Figur 8. Beskrivning av flödet i blocket QAM_Mapping.

4.1.2 IFFT_In_Buffer

IFFT_In_Buffer består av två stycken till stora delar identiska block, buffer_re och buffer_im, en buffert för realdelarna och en för imaginärdelarna. Dessa block består i sin tur av två delblock, sample_flip och pilot_padding.

Figur 9. Blockschema över buffer_re.

IFFT_In_Buffer har fyra insignaler och två utsignaler. Insignalerna är:

re_in - det komplexa talparets realdel im_in - det komplexa talparets imaginärdel

reset - den globala resetsignalen

rfd - “ready for data”, kontrollsignal från det efterföljande IFFT-blocket som talar om när det är redo att ta emot nya indata.

Eftersom bufferten för realdelen är i stort sätt identisk med bufferten för imaginär-delen beskrivs här enbart bufferten för realimaginär-delen samt de skillnader som finns

(25)

mel-4.1.2.1 sample_flip

Syftet med detta block är att ordna indatat till blocket pilot_padding för att på så sätt underlätta detta blocks uppgifter. Orsaken till detta finns att finna i definitio-nen av hur bärvågorna skapas med hjälp av den inversa fouriertransformen vilken kan ses nedan. I definitionen används följande beteckningar:

är den resulterande OFDM signalen

för de komplexa QAM-värdena

betecknar antalet sampel per symbol

är den totala symboltiden är symbolens starttid

(EQ 1)

EQ 1. Definition av bärvågsgenerering m.h.a. IFFT.

Denna summerar från till , d.v.s hälften av insamplen till det efterföl-jande IFFT-blocket representerar negativa frekvenser och den andra hälften repre-senterar positiva frekvenser.

Enligt standarden IEEE 802.11a skall den första hälften av insamplen represente-ras som negativa frekvenser och den andra hälften som positiva frekvenser enligt följande schema (k representerar sampelnummer):

s t( ) d i Ns T t s s t( ) d i+Ns⁄2 j2Π i T --- t t s – ( )     exp i Ns 2 ---– = Ns 2 ---–1

= t s≤ ≤t ts+T , s t( ) 0= t t s < , t t s+T > N s – 2 ---N s 2 ---–1 k–26 0≤ ≤k 4 k–25 5≤ ≤k 17 k–24 18≤ ≤k 23 k–23 24≤ ≤k 29 k–22 30≤ ≤k 42 k–21 43≤ ≤k 47

(26)

Figur 10. Schematisk beskrivning av IFFT-blockets in- och utsignaler.

D.v.s. IFFT-blocket vill ha de sampel som representerar positiva frekvenser först och det är detta som underlättas genom användningen av blocket sample_flip. Blockets uppbyggnad kan ses i figuren nedan.

Figur 11. Blockschema över blocket sample_flip.

Det blocket gör är att fördröja de 24 första samplen 48 klockperioder så att de sista 24 samplen istället hamnar först.

Figur 12. Beskrivning av funktionen i sample_flip.

Som kan ses i figur 11 ovan finns i sample_flip-blocket ett delblock som kallas flip_generator. Detta block består av en räknare som sköter “select”-ingången på den multiplexer som ser till att rätt sampel kommer ut i rätt ordning.

(27)

4.1.2.2 pilot_padding

Efter blocket sample_flip följer blocket pilot_padding. Pilot_padding-blocket är det mest komplicerade blocket i sändaren blockmässigt. Blocket är uppbyggt av fem stycken större delblock. Fyra stycken som sköter kontrollen av två multiplex-rar och ett FIFO, i vilket data mellanlagras, samt ett delblock som ordnar indatat för efterföljande block. De fyra som sköter FIFO:t och multiplexrarna är

we_generator, pilot_generator, select_generator och select_generator1. Del-blocket som sköter sorteringen av datat till det efterföljande Del-blocket är ifft_collector.

Syftet med blocket pilot_padding är att, som namnet antyder, fylla ut den än så länge 48 sampel långa symbolen till den i standarden föreskrivna längden 52 sam-pel. Detta görs genom att införa fyra stycken så kallade pilottoner. Dessa pilotto-ner kan sedan användas av mottagaren för att trimma in mottagningen på bästa sätt. Förutom de fyra pilottonerna fylls även symbolen ut med 12 stycken noll-sampel för att få den slutliga längden 64 noll-sampel och på så sätt möjliggöra för användningen av en 64-punkters IFFT i det efterföljande IFFT-blocket.

Figur 13. Blockschema över pilot_padding.

Enligt standarden skall pilottonerna placeras i bärvågorna 21, 7, -7 och -21 vilket betyder att de skall stoppas in efter datasamplen med sampelnummer 5, 18, 30 och 43, med början i 0, av de 48 ursprungliga datasamplen. Detta i sin tur motsvarar sampelnumren 21, 7, 57 och 43 i den slutliga 64 sampel långa symbolen.

(28)

Figur 14. Beskrivning av symbolens frekvenskomponenter. De feta linjerna representerar nollsamplen samt tillhörande frekvenskomponenter.

Blocket består alltså av två buffertar efter varandra. Först en för att fylla ut symbo-len till 64 sampel och sedan en för att ordna det data som skall vidare till efterföl-jande block.

För att åstadkomma den första buffertens funktion minskas först sampeltiden till 1/4 av den ursprungliga, d.v.s. varje av de ursprungliga 48 samplen delas in i fyra nya sampel där enbart det första nya samplet har det ursprungliga värdet medan de resterande tre har värdet noll. Detta gör att symbolen nu innehåller 192 sampel istället för 48 och endast var fjärde sampel innehåller data. Dessa data läses sedan in i FIFO:t genom att we_generator sätter kontrollsignalen we till 1 var fjärde sam-pelperiod. Blocket select_generator ser sedan till att data läses ut ur FIFO:t vid rätt tidpunkt. Select_generator genererar förutom kontrollsignalen re även signalen counter, vilket är en räknare som räknar upp sampelnummer, till blocket pilot_generator.

Pilot_generator-blocket genererar som namnet antyder de pilottoner som standar-den föreskriver. Det är i detta block som de tidigare nämnda buffertarna buffer_re och buffer_im skiljer sig åt. Pilottonerna är nämligen helt reella så i bufferten buffer_im består pilottonerna enbart av nollor. Det är även här som modellen inte helt följer standarden. Pilottonerna skall enligt standarden genereras ur en sekvens bestående av värdena -1 och 1. Denna sekvens skall enligt standarden genereras utanför OFDM-systemet av en s.k. ‘scrambler’. I modellen skapas dock pilotto-nerna genom att adressera ett ROM innehållandes sekvensen {-1, 1, -1, 1}. Dessa är inte heller modulerade med hjälp av 16-QAM utan är modulerade enligt BPSK (Binary Phase-Shift Keying) vilket är orsaken till att de enbart har värdena 1 eller

0 f/2 -f/2 N/2 N 0 Negativa frekvenser Positiva frekvenser sampelnummer

(29)

Blocket genererar även kontrollsignalen pilot_select, som ser till att pilottonerna skickas ut på rätt position, till blocket select_generator1.

Efter den första bufferten tar bufferten ifft_collector vid. Denna samlar ihop de 64 datasamplen samt ser till att dessa hamnar först i den nu 192 sampel långa symbo-len. Detta görs m.h.a. ett block identiskt med blocket we_generator, ett FIFO samt kontrollsignalen rfd, “ready for data”, från det efterföljande IFFT-blocket.

4.1.3 IFFT

Det är detta block som är basen i OFDM-systemet. IFFT-blocket behövs för att skapa de ortogonala bärvågor som systemet bygger på.

Figur 15. Figur över IFFT funktion, “Butterfly”.

Xilinx IFFT-block, som används i modellen, använder sig av en Cooley-Tukey radix 4 algoritm för att beräkna den inversa diskreta fourier transformen (IDFT) som behövs. Den del av IFFT-beräkningen som ses i figur 15 utgör en mycket vik-tig del av beräkningen. För att beskriva hur “butterfly”-funktionen används beskrivs här en 16-punkters IFFT-beräkning.

IFFT-beräkningen kan beskrivas i tre steg där ovanstående “butterfly”-funktion återfinns i steg ett och tre. I steg ett delas de 16 insamplen in i delar om fyra pel. Varje del om fyra sampel tilldelas sedan en “butterfly”-funktion i vilken sam-plen kombineras genom multiplikationer med givna koefficienter, [1, -1, j, -j], och additioner, där multiplikationerna utförs genom att utföra lämpliga fasrotationer på insamplen. Steg två består sedan i att varje utsampel från steg ett multipliceras med en vridningsfaktor, ωi j2πi .

N ---    exp = N = 16 i = [ ,0 N–1]

(30)

Användningen av två minnen gör att IFFT-blocket inte kontinuerligt kan ta emot data utan kräver att indatat kommer med ett visst intervall. I fallet med två minnen är intervallet 128 sampelperioder, förutom det första intervallet som är 146 sam-pelperioder. Intervalltiden 128 sampelperioder passar här utmärkt eftersom sym-boltiden in till IFFT-blocket är 192 sampelperioder av vilka 64 sampel består av data och sedan lämnar 128 sampelperioder till dess att nästa 64 datasampel kom-mer. Så användningen av två minnen ger även fördelar.

4.1.4 Cyclic_prefix

Blocket cyclic_prefix har en relativt enkel uppbyggnad men en väldigt viktig upp-gift i OFDM-systemet. Blockets uppupp-gift är att skapa en cyklisk förlängning av symbolen, ett prefix. Enligt standarden skall denna förlängning vara vilket motsvarar en förlängning med 16 sampelperioder vid sampelfrekvensen 20 MHz. Den cykliska förlängningen skapas genom att de 16 sista samplen (sampelnummer 48 - 63) kopieras och stoppas in först i symbolen som i och med detta då kommer att bestå av 80 datasampel.

Figur 16. Addition av den cykliska förlängningen.

Orsaken till att förlängningen används är att man genom att lägga till detta prefix nästan helt kommer undan problem med att symboler som gått olika långa vägar till mottagaren stör varandra, även kallat ISI (InterSymbol Interference). OFDM system är dock även utan denna förlängning relativt säkra vad det gäller denna sorts störningar eftersom sändningen sker över flera (N st) bärvågor och

symbolti-0 8, µs

0

63 63 0

63 48

(31)

I modellen används dock temporärt en förlängning på 17 sampel istället för 16 vil-ket medför 81 datasampel istället för 80. Orsaken till det extra samplet i förläng-ningen är att genom att införa detta extra sampel minskas komplexiteten i det efterföljande blocket windowing som är till för att ge utsignalen en jämn form. Efter detta block består symbolen av totalt 192 sampel men antalet datasampel i den har ökat från 64 till 81 stycken.

4.1.5 Windowing

Blocket windowing är ett relativt stort block. Det består av sex stycken delblock, tre för den reella delen och tre identiska för den imaginära delen av talparet. Då blocken för den reella delen är identiska med de för den imaginära delen beskrivs här enbart funktionen hos blocken för den reella delen. Blocken ingående i denna är 2_1_prebuffer, window och 6_5_buffer.

4.1.5.1 2_1_prebuffer

Blocket 2_1_prebuffer är som namnet säger en buffert innan den verkliga buffer-ten. Sampelhastigheten halveras här med hjälp av ett FIFO, kontrollogik samt ett block för sänkning av sampelhastigheten. Detta innebär att symbolen nu endast innehåller 96 sampel men fortfarande består av 81 datasampel.

4.1.5.2 window

För att minska risken för att utsignalen ska ge störande bidrag på intilliggande frekvensband används fönstring för att få önskat utseende på signalen.

I standarden finns ett förslag på hur fönstringen av signalen kan gå till. I tidsdis-kret form ser den föreslagna implementeringen ut enligt följande:

w T(nTS) 1 1≤ ≤n 79 0 5, 0 80, 0 annars      =

(32)

Figur 17. Beskrivning av fönstringsfunktionen.

Vad som sker är alltså att sampel 80 i symbol 1 och sampel 0 i symbol 2 adderas och sedan divideras med två för att skapa ett medelvärde. Detta skapar ett nytt sampelvärde som ersätter det i sampel 80 i symbol 1. Detta gör att symbolerna efter den avslutande bufferten får följande principiella utseende:

Figur 18. Principiell form hos den fönstrade utsignalen.

4.1.5.3 6_5_buffer

Även detta block är som namnet antyder en buffert för att ändra antalet sampel i symbolen så att den efter blocket enbart består av sampel innehållandes data. Denna buffert är precis som tidigare buffertar uppbyggda av ett FIFO, kontrollo-gik för styrning av ‘read enable’ och ‘write enable’ till FIFO:t samt block för upp- och nedsampling av sampelhastigheten. För att få den nu 96 sampel långa symbo-len att bli endast 80 sampel lång krävs en ändring av sampelhastigheten motsva-rande .

Efter blocket window består symbolerna av 81 datasampel men enligt standarden skall endast 80 datasampel ingå d.v.s. den förlängning av symbolen som gjordes i blocket cyclic_prefix skall endast bestå av 16 sampel. Detta är dock inget problem

80 0 80 0 1 2 3 3 2 1 5 6

(33)

---plet) i varje symbol helt enkelt tas bort av bufferten och endast de korrekta 80 samplen bevaras och återfinns i den slutliga utsignalen.

4.1.6 Utsignalen

Efter att signalen har passerat blocket windowing tas den nu över av radiodelen, som skulle ha funnits om detta vore en komplett sändare, där den mixas upp till den frekvens som skall användas, i det här fallet 5 GHz, och sedan sänds via antennen.

(34)

Figur 19. Överblick över mottagaren.

Som ses i figuren har mottagaren tre insignaler, re_in (realdelen av insignalen), im_in (imaginärdelen av insignalen) och reset (den globala resetsignalen).

Precis som i sändaren så är mottagaren uppdelad i två likadana delsystem. Ett för den reella delen av signalen och ett för den imaginära delen.

4.2.1 Synchronization

Det här blocket är det viktigaste blocket i mottagaren, ty detta block är till för att finna den tidpunkt då en ny symbol startar. Orsaken till att man vill veta när sym-bolen startar är att man vill kunna ta bort den förlängning, prefixet, som lades till av sändaren för att sedan kunna se till att FFT-beräkningen startar med korrekt sampel.

Mottagarmodellen beskriver i blocket synchronization inte en helt optimal motta-gare. Modellen befattar sig enbart med att ta reda på när en ny symbol anländer. För en optimal mottagning krävs dock att mottagaren även korrigerar sig för even-tuella frekvens- och fasavvikelser i den mottagna signalen för att helt utesluta eventuella störningar som då kan uppstå.

Blocket består av två delblock, correlation och clk_gen, som tillsammans utför uppgiften att finna symbolernas ankomsttider.

(35)

4.2.1.1 correlation

För att finna symbolstarten används en ‘maximum likelihood’ funktion. Denna funktion använder sig av korrelation för att finna likheter mellan två sampelgrup-per bestående av 16 sampel vardera och belägna med ett intervall av 64 sampel. Funktionen som används för att finna denna ‘maximum likelihood’ är följande.

(EQ 2)

Där representerar de löpande sampelnumren, d.v.s. hela tiden det aktuella sam-pelnumret, och gi representerar antalet sampel i symbolförlängningen, d.v.s. 16 sampel i modellen.

Denna funktion har dock modifierats en aning för att vara uppdelbar i helt imagi-nära och helt reella beräkningar. Så på grund av detta används i stället för den för-sta termen i funktionen en uppskattning av denna. Den andra termen har även den skrivits om så att den enbart innehåller reella beräkningar. Den slutliga funktionen blir då om vi använder följande signalbeteckningar:

A = realdelen av r(n)

B = imaginärdelen av r(n)

C = realdelen av r(n + 64)

D = imaginärdelen av r(n + 64)

(EQ 3)

Denna funktion innehåller enbart reella operationer och är således enkel att imple-mentera i hårdvara med hjälp av adderare och multiplikatorer. I bilderna nedan kan implementeringen av de båda termerna ses.

corr 2 r n( )r n 64( + ) Θ Θ gi 1+ –

k r n( )2+ r n( +64)2 Θ Θ gi 1+ –

–         = Θ corr 2 (AC+BD) Θ Θ gi 1+ –

i (BCAD) Θ Θ gi 1+ –

+         k (A2+B2+C2+D2) Θ Θ gi 1+ –

–         =

(36)

Figur 20. Blockschema över term 1 i blocket correlation.

Figur 21. Blockschema över term 2 i blocket correlation.

‘Maximum likelihood’-funktionen producerar ett maximum precis vid den tid-punkt då en ny symbol startar, det vill säga då de två intervallen, innehållande 16 sampel vardera, överenstämmer. Detta gör att blockets utsignal, correl_out, kan användas för att generera en klocksignal för borttagandet av de extra samplen. I delblocket correlation ingår, som ses ovan, tre stycken summaberäkningar. För att inte förlora i precision vid dessa beräkningar, samt för att kunna använda resul-tatet från correlation, används i blocken correlation och nedanstående clk_gen maximalt 40 bitar för att representera signalen istället för de 16 bitar som annars används genomgående i modellen.

4.2.1.2 clk_gen

Det här blocket är i sig indelat i två delar, clk_trigg_gen och frame_clk_gen, som utför var sin uppgift.

Blocket clk_trigg_gen finner det maximum som correlation-blocket generar och ger ifrån sig en trigg-signal då ett maximum är funnet. För att inte falska maxi-mum skall upptäckas då enbart brus finns som insignal finns även en

(37)

tröskelfunk-ansetts ge tillräcklig noggrannhet. Detta värde kan dock komma att behöva juste-ras efter mer avancerade simuleringar, till exempel simuleringar i hårdvara vid mer realistiska förhållanden.

frame_clk_gen-blocket ser sedan till att med hjälp av denna trigg-signal skapa en klocksignal enligt följande mönster

Figur 22. Den skapade klocksignalen. Klocksignalen har värdet ‘1’ under 64 sampelperi-oder och värdet ‘0’ under de resterande 16 sampelperisampelperi-oderna.

Den skapade klocksignalen kan nu användas av FFT_In_Buffer för att ta bort det prefix som sändaren adderade till symbolen.

4.2.2 FFT_In_Buffer

FFT_In_Buffer är i stort sett uppbyggd på samma sätt och fungerar på samma sätt som buffertarna i blocket windowing i sändaren. I FFT_In_Buffer används, istäl-let för signalen ifft_done som används i sändaren för att skapa den cykliska för-längningen, den klocksignal, frame_clk, som genereras i blocket synchronization för att styra logiken kring signalerna read enable och write enable till FIFO:t.

(38)

istället räcker de 40 bitar som nu används i blocket synchronization.

4.2.3 FFT

Det här blocket gör precis vad namnet säger, nämligen beräknar en FFT (Fast Fourier Transform) över 64 insampel. Blocket i sig är precis samma som blocket IFFT i sändaren. De enda skillnaderna är att FFT-blocket använder sig av konfigu-rationen med tre minnen, istället för två som IFFT-blocket använde sig av, samt kontrollsignalen inv som finns till blocket och som talar om för blocket om man vill utföra en inverstransform eller inte.

Om man vill använda blocket för att beräkna en FFT sätts inv till ‘0’ men om man vill beräkna en IFFT sätts signalen till ‘1’. I det här blocket används därför värdet ‘0’ på signalen inv, vilket skiljer sig från värdet i IFFT-blocket där värdet ‘1’ användes.

Den skillnad som användandet av konfigurationen med tre minnen gör är att data nu kan matas in till blocket kontinuerligt. Detta gör även att utdatat nu har en sam-pelhastighet som är tre gånger så hög som den samsam-pelhastigheten indatat hade. Dock sker utmatningen av data fortfarande med samma tidsintervall så det enda som har ändrats är att utdatats sampelhastighet är tre gånger så hög, vilket gör att de relevanta utsamplen kommer att åtföljas av flertalet nollsampel innan nya rele-vanta utdata erhålls.

4.2.4 FFT_Out_Buffer

FFT_Out_Buffer består av två stycken identiska buffertblock, 4_1_buffer_re och 4_1_buffer_im. Ett block för realdelen av signalen samt ett för imaginärdelen. För enkelhetens skull kallas dessa bägge för 4_1_buffer.

(39)

Buffertblocket 4_1_buffer är uppbyggt på samma sätt som övriga buffertar i syste-met, d.v.s. med hjälp av ett FIFO och logik för att styra read enable och write ena-ble signalerna till detta.

Då FFT blocket enbart lämnar ifrån sig relevanta utdata med ett visst intervall och då med en högre sampelhastighet än med vilken data matas in krävs att de överflö-diga samplen mellan intervallen tas bort och att sampelhastigheten återställs. Det är detta som FFT_Out_Buffer sköter om.

Det finns dock en skillnad mot andra buffertar i modellen. 4_1_buffer innehåller förutom buffert-funktionen även funktionen att ta bort de pilottoner samt nollsam-pel som adderades av sändaren. Denna funktion kräver dock inga större föränd-ringar av buffertens uppbyggnad. Det som krävs är ett block som håller ordning på när pilottonerna samt nollsamplen dyker upp samt lite extra logik för att styra read enable och write enable signalerna på FIFO:t lite annorlunda.

Symbolerna består efter FFT-blocket av 64 datasampel samt 128 nollsampel. Av dessa 192 sampel var det i och för sig 64 sampel som IFFT-blocket i sändaren fick som indata men dessa 64 sampel bestod dock ej enbart av datasampel utan de bestod även av fyra stycken pilottoner samt 12 stycken nollsampel för utfyllnad. Så eftersom de ickerelevanta samplen ska befinna sig i positionerna 0, 7, 21, 27 - 37, 43 samt 57 så får styrlogiken helt enkelt ta bort dessa samt de överflödiga 128 samplen så att enbart de önskade återstår. Dessa kvarvarande 48 sampel kan nu skickas vidare till QAM_Demap för att behandlas så att det sända datat kan åter-skapas.

4.2.5 QAM_Demap

I en ideal situation så skulle det här blocket använda i stort sett samma komponen-ter som blocket QAM_Mapping i sändaren, d.v.s. en uppslagstabell och en paral-lell-till-seriell omvandlare. Detta är dock inte möjligt eftersom den mottagna signalen under sin färd från sändaren och genom mottagaren utsätts för diverse störningar vilket introducerar osäkerheter i signalens data.

Avmappningen använder sig istället av ett flertal beslutslinjer för att bestämma de korrekta mappningsvärdena. Figuren nedan visar de beslutslinjer som används i konstellationen, dock skalade med en faktor 10.

(40)

Figur 24. Konstellationens beslutslinjer för avmappningen.

Beslutslinjerna används sedan på följande vis, med bit-numrering från vänster:

Om Re >= 0 sätts bit 1 till 1 annars 0

Om |Re| <= 0.6 sätts bit 2 till 1 annars 0

Om Im >= 0 sätts bit 3 till 1 annars 0

Om |Im| <= 0.6 sätts bit 4 till 1 annars 0

Bilden nedan beskriver ovanstående punkter grafiskt. Dock är värdena skalade med 10 för att få samma storleksordning som vid mappningen.

(41)

Sättet att realisera detta blir således ett block med diverse villkor på den reella insignalen och på den imaginära insignalen. Utsignalerna från dessa villkor kom-bineras sedan för att bilda fyra parallella bitar. Detta fyrabitars tal omvandlas sedan till den seriella utsignalen i parallell-till-seriell omvandlaren som utgörs av blocket par2ser.

Det ursprungliga datat som sändes är nu helt mottaget. Om mottagningsfel skulle ha inträffat kan nu felrättande koder ta vid för att om möjligt återställa eventuella fel i datat utan att det behöver sändas om.

(42)
(43)

5 Slutsats

Modellen ovan är en fullt fungerande modell av ett OFDM-system konstruerat med hjälp av Xilinx syntetiserbara blockset. Tyvärr har begränsningar i den använda versionen av Xilinx System Generator gjort att den syntetiserbara VHDL koden för det kompletta systemet ej har kunnat genereras.

Självklart har det största problemet varit att modellen ej har kunnat syntetiseras på grund av att ingen VHDL-kod kunde skapas. Orsaken till detta var Xilinx FFT-block. Orsakerna till att problem med FFT-blocket kan uppstå är kända av Xilinx och problemen har troligtvis rättats till i senare versioner av System Generator. Arbetet visar dock att det är fullt möjligt att bygga ett OFDM-system med hjälp av Xilinx blockset och System Generator. Dock rekommenderas att senare versioner av Xilinx System Generator for DSP än den som använts för denna modell (v1.1) används. Dessa innehåller förutom rättningar av problem som stöttes på under detta arbete även en hel del nya delblock som skulle kunna göra systemet mindre komplicerat och lättare att överblicka då flertalet av modellens delblock skulle kunna omkonstrueras så att de innehåller färre block.

Konstruktionsmässigt stöttes inga större problem på under arbetet. Integrationen av System Generator i Simulink fungerade tillfredställande och oftast fanns tyd-liga hjälpavsnitt om innehållet i System Generator. Det arbete som tidsmässigt tog längst tid var konstruktionen av de flertalet buffertar som återfinns i modellen. Problemet här var att få systemet att använda olika sampelhastigheter på ingångar respektive utgångar till blocken.

En implementering i en FPGA hade, eftersom den utgående sampelhastigheten ur sändaren samt inkommande sampelhastigheten till mottagaren är 20 Msampel/s, fått följande specifikationer då det gäller datahastigheter i implementeringen.

Dessa sampelhastigheter gör att modellen skulle kunna implementeras i de flesta FPGA-kretsar som finns på marknaden idag, exempelvis Xilinx Virtex-II.

Sampelhastighet in till sändaren samt ut ur mottagaren 48 Msampel/s

Lägsta sampelhastighet i sändaren 12 Msampel/s

Högsta sampelhastighet i sändaren 120 Msampel/s

Lägsta sampelhastighet i mottagaren 12 Msampel/s

(44)
(45)

Referenser

[1]. Richard Van Nee, Ramjee Prasad; OFDM for multimedia communications; Artech House; 2000

[2]. Ahmad R. S. Bahai, Burton R. Saltzberg; Multi-Carrier Digital Communica-tions : Theory and ApplicaCommunica-tions of OFDM; 1999

[3]. Magnus Sandell, Jan-Jaap van de Beek, Per Ola Börjesson; Timing and Fre-quency Synchronization in OFDM Systems Using the Cyclic Prefix; In Procee-dings of International Symposium on Synchronization, pp. 16-19, Essen, Germany, December 1995

[4]. Ismael Sanjuan Tomás, Rubén Ortiz Gonzáles; Modeling of an OFDM system in Simulink; LiTH-ISY-EX-3202; 2001

[5]. IEEE; IEEE Std 802.11a-1999 (Supplement to IEEE Std 802.11-1999); Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) specifications. High-speed Physical Layer in the 5 GHz Band

(46)
(47)

Förkortningar

BPSK Binary Phase-Shift Keying : Moduleringsmetod i

vilken data kodas som ett av två möjliga värden, 1 eller -1.

FPGA Field Programmable Gate Array :

Omprogrammer-bar logisk krets

ICI InterCarrier Interference : Störningar mellan

bärvågor

IDFT / DFT (Inverse) Discreet Fourier Transform

IEEE Institute of Electrical and Electronics Engineers, Inc.

: Standardiserings organisation IFFT / FFT (Inverse) Fast Fourier Transform

ISI InterSymbol Interference : Störningar mellan

symbo-ler, exempelvis mellan symboler som gått olika vägar från sändare till mottagare

OFDM Orthogonal Frequency-Division Multiplexing :

Metod för att sända data över flera bärvågor men med relativt litet bandbreddskrav.

QAM Qadrature Amplitude Modulation :

Moduleringsme-tod där data kodas som ett av 16 möjliga värden i en konstellation (se figur 6).

(48)
(49)

Detta dokument hålls tillgängligt på Internet – eller dess framtida ersättare – under en längre tid från publiceringsdatum under förutsättning att inga extra-ordinära omstän-digheter uppstår.

Tillgång till dokumentet innebär tillstånd för var och en att läsa, ladda ner, skriva ut enstaka kopior för enskilt bruk och att använda det oförändrat för ickekommersiell for-skning och för undervisning. Överföring av upphovsrätten vid en senare tidpunkt kan inte upphäva detta tillstånd. All annan användning av dokumentet kräver upphovsman-nens medgivande. För att garantera äktheten, säkerheten och tillgängligheten finns det lösningar av teknisk och administrativ art.

Upphovsmannens ideella rätt innefattar rätt att bli nämnd som upphovsman i den omfattning som god sed kräver vid användning av dokumentet på ovan beskrivna sätt samt skydd mot att dokumentet ändras eller presenteras i sådan form eller i sådant sam-manhang som är kränkande för upphovsmannens litterära eller konstnärliga anseende eller egenart.

För ytterligare information om Linköping University Electronic Press se förlagets hemsida http://www.ep.liu.se/

In English

The publishers will keep this document online on the Internet - or its possible replace-ment - for a considerable time from the date of publication barring exceptional circum-stances.

The online availability of the document implies a permanent permission for anyone to read, to download, to print out single copies for your own use and to use it unchanged for any non-commercial research and educational purpose. Subsequent transfers of copyright cannot revoke this permission. All other uses of the document are conditional on the consent of the copyright owner. The publisher has taken technical and administrative measures to assure authenticity, security and accessibility.

According to intellectual property law the author has the right to be mentioned when his/her work is accessed as described above and to be protected against infringe-ment.

For additional information about the Linköping University Electronic Press and its procedures for publication and for assurance of document integrity, please refer to its WWW home page: http://www.ep.liu.se/

References

Related documents

En viss rivitg poetisk talang har onekligen den här tjejen, inte tu tal om saken, men mycket tyder på att hon har blivit redigerad alltför sparsamt, just för att framstå om

Undersökningen består av två delar: den första delen tar avstamp i KB:s och Svensk biblioteksförenings utredningar om en övergång till DDK och beskriver vad detta innebär samt

Enligt Björk och Liberg kan barn som kommer från hem där man inte läser få en chock när man börjar med läsundervisningen då det kräver ett nytt sätt att tänka och det kan

En problematik som tagits upp i samtliga intervjuer är tids- och resursbristen. I perioder upplevs arbetsbördan så stor att tvärfunktionella initiativ inte hinns

Jag vill även få svar på hur barnens bildprocesser ter sig, vilka motiv de väljer när de skapar med surfplattan dels när barnen själva får välja fritt och dels vilka motiv de

Föreliggande studie syftar till att undersöka hur unga vuxna (18-25 år) söker vård relaterat till kön, ålder, symptom och lämplig vårdnivå, AM kontra Närakuten [NA].. Metod:

På en amerikansk webblogg beskrivs detta som ”the fetishization of Search” (Sondermann 2005). Informationskompetens har kommit att diskuteras på folkbiblioteken främst

ƒ ƒ Antag nu att regeringen använder proportionella Antag nu att regeringen använder proportionella skatter,.. skatter, t, t , istället för istället för klumpsumme