deltagere - kekker.dkog elektroteknik ved institut for elektroniske systemer på aalborg universitet...

139

Upload: others

Post on 03-Sep-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet
Page 2: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet
Page 3: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Aalborg UniversitetElektronik og ElektroteknikFredrik Bajers Vej 5, Postboks 159DK-9100 AalborgTlf. (+45) 9635 8080http://www.aau.dk

Titel:

Indendørs positioneringssystem

Tema:

Mikrodatamatsystemer

Projektperiode:

E4, forårssemesteret 2006

Projektgruppe:

06gr414

Deltagere:

Brian Thorarins Jensen

Christian Fink Petersen

Jens Karsten Nedergaard Boll

Mads Kronborg Agesen

Søren Vagndorf Schjødt Kristensen

Vejleder:

Henrik Vie Christensen

Oplagstal: 8

Sideantal: 136

Heraf appendiks: 53

Bilagsantal og –art: 1 stk. CD-ROM

Afsluttet den 29-05-2006

Synopsis:

Dette projekt omhandler en del af et indendørspositioneringssystem, som via infrarøde signalermuliggør, at en mobilenhed kan udregne sin po-sition i et rum. I dette projekt konstrueres envægenhed, som skal modtage og sende de infrarø-de signaler fra og til en mobilenhed. Vægenhedenkonstrueres bl.a. med det formål, at eftervise prin-cippet med at benytte et mikrodatamatsystem tilat genkende et serielt signal og sende et serieltsvarsignal til brug ved positionsbestemmelse.

Vægenheden er baseret på et minimumssystemmed en Motorola 68000 processor. Dertil er derkonstrueret moduler, der kan modtage og sendeinfrarøde signaler. Der er skrevet software til væg-enheden, der kan genkende et bestemt signal førder udsendes et svarsignal efter en bestemt tid.Det er desuden muligt via software at ændre føl-gende parametre i vægenheden vha. en RS232 for-bindelse og en pc: signalet der skal svares på, sig-nalet der skal sendes samt tiden der ventes fra etsignal er genkendt, til et svar udsendes.

Vægenheden er designet med udgangspunkt i deprimære brugerkrav, og overholder disse. Dermedkan vægenheden skelne forskellige signaler fra hin-anden og udsende et bestemt svarsignal efter enbestemt tid. Derimod er de sekundære bruger-krav om virkeområde indenfor 0,5 til 10 m ik-ke overholdt, hvilket skyldes at de konstrueredemodtager- og sendermoduler ikke tillader, at af-standen mellem vægenheden og mobilenheden erstørre end ca. 30 cm.

Videreudvikling af vægenheden kan indebære atdesigne sender- og modtagermoduler efter at kun-ne overholde de sekundære brugerkrav, samt æn-dre softwaren således, at der tillades støj i detmodtagne signal.

Rapportens indhold er frit tilgængeligt, men offentliggørelse (med kildeangivelse) må kun ske efter aftale medforfatterne.

Page 4: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet
Page 5: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Aalborg UniversitetElektronik og ElektroteknikFredrik Bajers Vej 5, Postboks 159DK-9100 AalborgTlf. (+45) 9635 8080http://www.aau.dk

Title:

Indoor positioning system

Theme:

Mikroprocessor system

Project period:

E4, spring term 2006

Project group:

06gr414

Participants:

Brian Thorarins Jensen

Christian Fink Petersen

Jens Karsten Nedergaard Boll

Mads Kronborg Agesen

Søren Vagndorf Schjødt Kristensen

Supervisor:

Henrik Vie Christensen

Copies: 8

Number of pages: 136

Appendices hereof: 53

Attachment: 1 CD-ROM

Finished 05-29-2006

Abstract:

This report deals with a part of an indoor po-sitioning system. It allows for a mobile unit tocalculate its position in a room by use of infra-red signals. In this report the development of awall unit for such a system will be treated. Thewall unit must detect and verify an infrared sig-nal, and then wait a given time before it respondsby transmitting an infrared signal to the mobileunit. The wall unit is primarily developed to de-monstrate that a microprocessor can be used toverify a serial signal and respond by transmittinganother serial signal that can be used by the mo-bile unit to determine its position.The wall unit is based on a Motorola 68000 micro-processor, to which there is designed additionalmodules that enables the wall unit to receive andtransmit infrared signals. There has been writtensoftware that allows for recognizing a certain sig-nal before a response signal is transmitted after apreset time. Furthermore it’s possible to changewhat signal the wall unit shall respond to, whatsignal it shall transmit back to the mobile unitand the time it must wait before the response istransmitted. This feature is incorporated with aRS232 connection.Design of the wall unit is based on keeping theprimary user demands, which contains the abili-ty to discern signals and respond appropriatelyby transmitting a response signal after a chosentime when a correct signal is detected. The secon-dary user demands that state the system must befunctional from 0.5 m to 10 m are not meet. Withthe used transmitter and receiver, it does not al-low for signals to be transmitted and received ata distance greater then 30 cm.Further development of the wall unit might con-tain designing better transmitter and receiver u-nits to meet the secondary user demands, and alsochanging the software to allow for a certain amo-unt of noise in the received signal.

The content of this report is freely accessible, though publication (with reference) may only occur after permissionfrom the authors.

Page 6: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet
Page 7: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

ForordDenne rapport er udfærdiget på 4. semester af projektgruppe 06gr414 på retningen Elektronikog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1.februar 2006 til og med 29. maj 2006.

Formålet med projektforløbet er ifølge studieordningen pr. 01-09-2005 for 3. - 5. semester Elek-tronik- og elektrotekniksektoren:

1. At give viden om systembegrebet, herunder metoder på anvendelsesniveau til ned-brydning af systemer i delsystemer og forståelse for metoder til beskrivelse afsystemer.

2. At give forståelse for metoder til konstruktion af sammensatte digitale systemer,herunder en indføring i grundlæggende digitale kredsløbsblokke, deres brug ogbegrænsninger.

3. At give forståelse for grundlæggende begreber for datamaters arkitektur.

4. At give viden om programmelsystemer, herunder operativsystemer, udviklings-programmel og andet systemprogrammel.

5. At give metoder på anvendelsesniveau til specifikation, konstruktion, realisation,test og dokumentation af programmel og af maskinel.

Projektets tema er ”Mikrodatamatsystemer”, og tager udgangspunkt i projektforslag 16 stillet afPh.D. studerende Henrik Vie Christensen, v/ Inst. for elektroniske systemer, Aalborg Universitet.

LæsevejledningAktivt lave signaler angives med en linie over signalet eller benets navn. For eksempel angivesdet aktivt lave signal CS i rapporten med CS. I diagramtegninger vil der stå RESET*, hvilket erdet samme som RESET. Ligeledes vil der på diagramtegninger kunne stå C_P, hvilket i tekstenvil være skrevet som CP . Hexadecimaltal betegnes med et $ foran. Ved angivelse af lagerstørrelseskrives der ’b’ hvis det er byte, og ’bit’ hvis det er bit størrelse.

Kildehenvisninger er lavet efter Harvard-metoden, således at f.eks. ”Microprocessor Systems De-sign” henvises til ved hjælp af [Clements, 1997]. I litteraturlisten ses hele forfatterens navn, titel,ISBN/URL, forlag, sted samt år for udgivelse og evt. note.

Bilag, som kun forefindes på den vedlagte CD, henvises til ved at skrive placeringen og filnavnettil pågældende bilag. For eksempel (/hardware/ir testsender/data.hex).

v

Page 8: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Brian Thorarins Jensen

Christian Fink Petersen

Jens Karsten Nedergaard Boll

Mads Kronborg Agesen

Søren V. Schjødt Kristensen

Page 9: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Indhold

1 Indledning 1

2 Kravspecifikation 3

2.1 Beskrivelse af vægenhedens funktioner . . . . . . . . . . . . . . . . . . . . . . . . 3

2.2 Struktur for kravspecifikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.3 Brugerkrav . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.4 Systemkrav . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3 Design af vægenhed 11

3.1 Systemoversigt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.2 Begrænsninger ved design af vægenhed . . . . . . . . . . . . . . . . . . . . . . . . 12

4 Design af mikrodatamat 13

4.1 Motorola 68000 processor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

4.2 Lager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4.3 Adressedekodning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.4 Seriel datakommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.5 Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.6 Test af mikrodatamatsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

5 Design af infrarød sender- og modtagermodul 37

vii

Page 10: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Indhold

5.1 Design af sendermodul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

5.2 Design af modtagermodul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

5.3 Test af sender- og modtagermodul . . . . . . . . . . . . . . . . . . . . . . . . . . 44

6 Softwaredesign 45

6.1 Programdesign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

6.2 Initialisering af vægenhed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

6.3 Databehandling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

6.4 Send signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

6.5 Konfiguration af vægenhed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

7 Accepttest 63

7.1 Test af primære brugerkrav . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

7.2 Test af sekundære brugerkrav . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

8 Konklusion 67

9 Udvidelsesmuligheder 69

9.1 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

9.2 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

Litteraturliste 72

A Accepttestspecifikation 73

B Systemkravtestspecifikation 77

C Simuleret mobilenhed 81

D Testjournal 85

E Brugervejledning 89

F RAM allokering 93

viii

Page 11: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

INDHOLD

G PEEL kode 95

H Assembler kode 101

I Komponentliste 121

J Diagram 123

K Placeringsdiagram 125

ix

Page 12: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Indhold

x

Page 13: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Kapitel 1Indledning

Til positionsbestemmelse anvendes ofte GPS. Dette har dog visse begrænsninger ved f.eks. in-dendørs brug grundet problemer med at opnå tilstrækkeligt signal. Ydermere er systemets nøjag-tighed en begrænsning. Den typiske nøjagtighed for et civilt system er i størrelsen meter, hvilketikke vil være tilstrækkeligt til indendørs brug [Statsgeodæt Per Knudsen & Landinspektør Cas-per Jepsen, 2000].

Et system til indendørs positionsbestemmelse er anvendeligt i mange sammenhænge, og ønskesaf Institut for Elektroniske Systemer (IES) ved Aalborg Universitet (AAU) fremstillet. Detteprojekt omhandler udviklingen af en vægenhed, som skal indgå i et indendørs positioneringssy-stem. Vægenheden udvikles med henblik på at det samlede indendørs positioneringssystem, somminimum tillader positionsbestemmelse i et rum på 10 m gange 10 m.

Positionsbestemmelsen er af IES bestemt til at foregå vha. infrarøde signaler. En infrarød sender-og modtagerenhed er placeret på en mobil enhed, der har brug for at kende sin position. På væg-gene i rummet monteres et antal vægenheder, der indeholder sender og modtager. Mobilenhedenudsender et infrarødt signal, der opfanges af enhederne på væggene. Såfremt disse signaler verifi-ceres i vægenheden, returneres et forudbestemt svarsignal til mobilenheden. I både vægenhederneog i mobilenheden skal de modtagne signaler verificeres iht. et referencesignal, således enheder-ne ikke aktiveres fejlagtigt af støj fra f.eks. en fjernbetjening eller andre enheder, der udsenderinfrarøde signaler. I vægenheden skal det være muligt, at indstille en ventetid der angiver hvorlang tid, vægenheden skal vente med at sende et svarsignal, efter et modtaget signal er godkendt.Dermed kan vægenhederne svare på forskellige tidspunkter, således mobilenheden ikke modtagersvar fra flere på en gang.

Princippet i selve positionsbestemmelsen er, at mobilenheden beregner vinklen mellem densretning, og de signaler den modtager fra vægenhederne, som illustreret på Figur 1.1. Vinklen kanbestemmes ved, at mobilenheden har påmonteret et antal modtagere og ud fra signalstyrken frahver af modtagerne, kan vinklen bestemmes.

Der er fra IES’ side stillet krav om, at vægenhederne ikke skal være forbundet elektrisk, dasystemet skal være mobilt og let at installere. Da der ligeledes er ønske om senere, at kunneudbygge systemet og optimere det til givne omgivelser, skal signalerne der accepteres som værende

1

Page 14: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

1 Indledning

Mobilenhed

Vægenhed

Retning

Signal

Figur 1.1: Illustration af indendørs positioneringssystem

fra mobilenheden, samt det signal der sendes retur, kunne ændres via en computer.

Systemet kan gøres mobilt ved at montere vægenhederne i kegler, hvilket gør det muligt atanvende systemet uafhængigt af enhver anden installation. En sådan anvendelsesmulighed kunnevære til selvkørende gulvvaskerobotter i f.eks. industrihaller eller gymnastiksale. Samme principvil kunne anvendes til f.eks. selvkørende støvsugere i private hjem.

2

Page 15: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Kapitel 2Kravspecifikation

Der udføres en analyse baseret på SPU-UML med henblik på at kunne opstille en kravspecifika-tion og accepttest. I denne analyse beskrives vægenheden som et samlet system. Først beskrivesvægenhedens funktionalitet, og de enkelte funktioner opdeles i Use Cases. Derefter opstilles enkravspecifikation og udfra denne en accepttestspecifikation til det samlede produkt.

2.1 Beskrivelse af vægenhedens funktioner

For at få et overblik over systemets funktioner benyttes Use Case metoden. Ved at lave Use Casesfor systemets hovedfunktioner fås et indblik i hvilke krav der kan opstilles. På Figur 2.1 ses enillustration af systemet og dets funktioner. Til hver funktion er der knyttet en aktør. Disse vilblive beskrevet senere.

Figur 2.1: Illustration af de to Use Cases modtag/send signal og konfiguration af vægenhed samt aktører til disse

De to Use Cases, modtag/send signal og konfiguration af vægenhed, der ses på Figur 2.1 beskrivesherefter.

3

Page 16: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

2 Kravspecifikation

2.1.1 Modtag/send signal

Vægenheden modtager et infrarødt triggersignal fra mobilenheden, og dette signal verificeres iht.et referencesignal lagret i hukommelsen. Såfremt det modtagne signal kan verificeres iht. refe-rencesignalet, udsendes et svarsignal efter den angivne ventetid. Denne ventetid sikrer, at flerevægenheder ikke svarer mobilenheden samtidig, hvilket medfører en nem adskillelse af svarsig-nalerne. Er de enkelte vægenheders ventetider kendt af mobilenheden, ved den hvornår den skalforvente et svar fra hver enkelt vægenhed.

Normal scenario

1. Et infrarødt triggersignal modtages fra mobilenheden

2. Et korrekt triggersignal verificeres iht. referencesignalet

3. Der ventes i en forudbestemt periode før svarsignalet udsendes

4. Et forudbestemt infrarødt svarsignal udsendes

Undtagelser

Såfremt det modtagne triggersignal ikke kan godkendes iht. referencesignalet udsendes ikke etsvarsignal, og der afventes et nyt signal.

For at overskueliggøre Use Casen modtag/send signal laves et flowdiagram over forløbet, somkan ses På Figur 2.2. Det kan endvidere ses, hvor undtagelsen træder ind.

Modtag signal

Databehandling

Vent

Afsend signal

Ja

Signal genkendt?

Nej

Triggersignal

Svarsignal

Mobilenhed

Figur 2.2: Flowdiagram over Use Casen send/modtag signal med undtagelse

4

Page 17: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

2.2. Struktur for kravspecifikation

2.1.2 Konfiguration af vægenhed

Det skal være muligt at ændre følgende parametre i vægenheden vha. en pc: referencesignalet dersammenlignes med, svarsignalet der sendes ud, samt ventetiden der går fra at der er modtagetet korrekt triggersignal, til der sendes et svarsignal. Det skal desuden være muligt at udlæseparametrene til en pc.

Normal scenario

1. En pc tilsluttes vægenheden

2. Data modtages fra eller sendes til den tilsluttede pc

Undtagelser

Indtastes en forkert kommando, udskrives en fejlmelding.

2.1.3 Aktører

Aktører er de ting eller personer, der har indflydelse på, eller bliver påvirket af funktioner isystemet. Til dette system er der to aktører; mobilenheden og brugeren.

Mobilenhed

Mobilenheden er den aktør, der sender et triggersignal, som efterfølgende skal opfanges af vægen-hederne. Mobilenheden kan være en selvkørende robot eller lignende. Mobilenheden udsender etbestemt triggersignal, og forventer derefter at få bestemte svarsignaler tilbage fra vægenhederne.Ud fra disse svarsignaler beregner mobilenheden, hvor den befinder sig.

Bruger

Den anden aktør er brugeren af systemet, der via en pc kan konfigurere vægenheden. Brugerenkan ændre triggersignal, svarsignal samt ventetiden mellem et korrekt triggersignal modtages tilet svarsignal udsendes.

2.2 Struktur for kravspecifikation

Kravspecifikationen opstilles ud fra de krav, som brugeren af det færdige produkt stiller. Brugerener oftest kunden til produktet, men i dette projekt er det IES. Med disse krav kan der udarbejdeskrav til systemet på et mere teknisk niveau. Dette niveau kaldes systemkrav og opdeles i hardwareog software. En illustration over strukturen af kravspecifikation kan ses på Figur 2.3.

5

Page 18: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

2 Kravspecifikation

BrugerkravSystemkrav

Hardware Software

Figur 2.3: Illustration af kravspecifikationens opbygning

Projektforslagsstilleren angiver brugerkravene og ud fra disse opstilles systemkrav til hhv. hard-og software. Næste afsnit beskriver brugerkravene og systemkravene.

2.3 Brugerkrav

Brugerkrav er de krav, som kunden sætter til det samlede system. Disse krav er opdelt i primærebrugerkrav, PBK, og sekundære brugerkrav, SBK.

2.3.1 Primære brugerkrav

De primære brugerkrav er krav, hvor der kun ses på den funktionelle virkemåde. Det vil sige, atder f.eks. ikke er krav til afstand og vinkel mellem mobil- og vægenhed. De primære brugerkravopstilles ud fra de opstillede Use Cases.

Modtag/send signal

PBK01: Vægenheden skal kunne modtage et infrarødt triggersignal

PBK02: Det modtagne triggersignal skal kunne verificeres iht. til et referencesignal

PBK03: Der ventes med en tolerance på ±1 sample ved en ventetid på 512 samples, mellem ettriggersignal modtages til et svarsignal udsendes

PBK04: Et svarsignal skal udsendes, såfremt der modtages et korrekt triggersignal

PBK05: Det modtagne triggersignal, referencesignalet og svarsignalet skal være på 16 bit. PåFigur 2.4 ses en model for signalerne.

Hver bit i signalet består af 32 samples, og der er dermed 512 samples i et komplet signal. For aten bit bestående af 32 samples skal betegnes som en logisk høj, skal de tre første samples værelave, de næste tre skal være høje, og de resterende 26 samples skal være lave. En lav bit skalbestå af 32 lave samples.

6

Page 19: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

2.3. Brugerkrav

32 samples

512 samples = 16 bit

1 bit

Figur 2.4: Model for referencesignal

Konfiguration af vægenhed

PBK06: Der skal anvendes en RS232 forbindelse til overførsel af data mellem pc og vægenhed

PBK07: Brugerfladen på pc’en skal være et konsolprogram som f.eks. Hyper Terminal

PBK08: Ændring af referencesignalet som det modtagne signal verificeres i henhold til skal væremulig

PBK09: Ændring af svarsignalet som sendes retur til mobilenheden skal være mulig

PBK10: Ændring af ventetiden mellem et triggersignal er modtaget og godkendt, til et svarsignaludsendes skal være mulig

PBK11: Udlæsning af den aktuelle konfiguration skal være mulig

2.3.2 Sekundære brugerkrav

Sekundære brugerkrav, SBK, til vægenheden beskrives ud fra de opstillede Use Cases.

Modtag/send signal

SBK01: Der skal kunne modtages et infrarødt signal fra en sender, der sender med konstantsendestyrke, i en afstand på 0,5 m til 10 m

SBK02: Der skal kunne modtages et infrarødt signal i en vinkel på ±90 i forhold til den retning,vægenheden peger SBK03: Ét forudbestemt svarsignal udsendes med en sendestyrke, der sikrerat svarsignalet kan modtages, af en modtager svarende til den der sidder på vægenheden, i enafstand på 0,5 m til 10 m

7

Page 20: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

2 Kravspecifikation

2.4 Systemkrav

Ud fra brugerkravene opstilles systemkravene. Disse er opdelt i hhv. hardwaresystemkrav, HSK,og softwaresystemkrav, SSK.

I vægenheden benyttes et mikrodatamatsystem bestående af en Motorola 68000-processor medtilhørende perifere enheder, da undervisningen på 4. semester er baseret på denne.

Efter hvert krav er kravets oprindelse angivet i parantes. Det kan enten være et brugerkrav elleret valg fra gruppens side, GPV.

2.4.1 Hardware

Kravene til hardware er opdelt i krav til hhv. senderen og modtageren. Sender- og modtager-modulerne betragtes således, at de indeholder den nødvendige hardware til at tilslutte modulernedirekte til et mikrodatamatsystem.

2.4.2 Krav til sender/modtager

1. Krav til infrarød modtager

HSK01: Signalet skal samples med en frekvens på 9,6 kHz. Dette krav er valgt af gruppen,da denne samplingshastighed vurderes til at give tid nok til signalgenkendelse (GPV).Dermed vil mobilenheden kunne få opdateret sin position 9 gange i sekundet, se Formel2.1.

H =((9600 Hz)−1 · 2 · 512 samples

)−1= 9, 375 (2.1)

Hvor H er opdateringshyppigheden per sekund

2. Krav til infrarød sender

HSK02: Der skal kunne sendes samples med 9,6 kHz, således at der sendes samples medsamme frekvens, som der modtages iht. HSK01 (GPV)

2.4.3 Software

Kravene til softwaren er opdelt efter de enkelte programdele, der er nødvendige i projektet.

1. Databehandling

SSK01: Softwaren skal sample et signal bestående af 512 samples fra den infrarøde mod-tager (PBK05)

SSK02: Et korrekt modtaget triggersignal skal kunne genkendes og skelnes fra andre sig-naler. Ved en høj bit i et signal tillades at hhv. første eller sidste høje sample modtagessom en lav (PBK02)

8

Page 21: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

2.4. Systemkrav

SSK03: Databehandlingstiden per sample må ikke overskride periodetiden af samplings-frekvensen. Dette sikrer, at alle samples kan behandles, inden næste sample modtages(HSK01)

2. Send signal

SSK04: Der ventes i et forudbestemt tidsrum med en tolerance på ±1 sample, målt veden ventetid på 512 samples (SBK03)

SSK05: Svarsignalet skal være i overensstemmelse med signalkodningen. Desuden skalsignalet der sendes være i overensstemmelse med det ønskede svarsignal. Der tillades enafvigelse i et helt signals længde på ±1 sample (PBK05)

3. Konfiguration af vægenhed

SSK06: Ind- og udlæsning af konfigurationer, herunder referencesignal, svarsignal samtventetid, skal være mulig via et konsolprogram (PBK07)

Accepttestspecifikationen kan ses i Appendiks A Accepttestspecifikation på side 73.

9

Page 22: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

2 Kravspecifikation

10

Page 23: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Kapitel 3Design af vægenhed

I dette kapitel beskrives systemets hardwareblokke, mht. deres funktioner og integration i densamlede vægenhed.

3.1 Systemoversigt

På Figur 3.1 ses en oversigt over hardwareblokkene i en vægenhed til det indendørs positione-ringssystem.

IR-modtager Forstærker A/D-konverter

DriverIR-sender

Modtagermodul

Sendermodul

Lager

Seriel kommunikation

Adresse-dekoder

Mikrodatamat

68K processor

Figur 3.1: Oversigt over hardware-blokke i en vægenhed til det indendørs positioneringssystem

Vægenheden er opdelt i 3 hovedblokke: Modtagermodul, mikrodatamat og sendermodul.

Modtagermodulet består af en IR-modtager, som modtager et infrarødt signal og omdanner dettil et analogt signal. Det analoge signal bliver forstærket og konverteret til et digitalt signal. Detdigitale signal indlæses af mikrodatamaten til videre databehandling.

11

Page 24: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

3 Design af vægenhed

Mikrodatamatsystemet består af hukommelse, adressedekoder, seriel kommunikation og en pro-cessor. Hukommelsen anvendes til at lagre software og data. Adressedekoderen styrer hvilkeenheder, der kan tilgå databussen, ud fra hvilken adresse processoren skriver på adressebussen.Den serielle kommunikation består af to RS232 forbindelser, hvor den ene bruges til at kommu-nikere med TS2 debugger/monitor, og den anden bruges til konfiguration af vægenheden. Derbenyttes to forbindelser, idet at der under en testproces således vil være mulighed for at benyttebegge forbindelser samtidigt, og på den måde fejlfinde i softwaren. Processoren foretager allenødvendige beregninger på de modtagne data.

Mikrodatamatens funktion er at lagre det modtagne triggersignal fra modtagermodulet, og sam-menligne signalet med et referencesignal. Såfremt det modtagne signal er magen til referencesig-nalet, udsendes et svarsignal vha. sendermodulet.

Sendermodulet består af en driver og en IR-sender. Mikrodatamaten skal styre hvornår IR-senderen skal sende, mens adressedekoderen genererer et signal til driveren, når processorenskriver til sendermodulet. Vha. et databen på processoren overføres signal til sendermodulet.

3.2 Begrænsninger ved design af vægenhed

Designfasen tager udgangspunkt i de primære brugerkrav, samt de opstillede systemkrav. Y-dermere tages der ikke højde for størrelse, vægt og strømforbrug, da der i dette projekt kunkonstrueres en prototype af en vægenhed. Disse aspekter samt de sekundære brugerkrav vil skul-le tilgodeses i et endeligt design. Vægenheden vil således kunne drives af batterier, monteres påen væg eller i f.eks. en kegle for optimal systemfleksibilitet.

I de to efterfølgende kapitler designes mikrodatamat samt sender- og modtagermodul.

12

Page 25: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Kapitel 4Design af mikrodatamat

I dette kapitel beskrives udviklingen af et minimums mikrodatamatsystem baseret på en Motorola68000 processoren.

4.1 Motorola 68000 processor

I dette afsnit beskrives Motorola 68000 processorens benforbindelser, og hvorledes der genereresen clock. Desuden vil et power-up-reset kredsløb blive beskrevet.

4.1.1 Beskrivelse af Motorola 68000 processoren og benforbindelser

Der anvendes i dette projekt en processor af typen MC68HC000FN12.

Benforbindelser

Motorola 68000 processoren der anvendes i dette projekt har ialt 68 ben. En oversigt over ben-grupperingerne ses på Figur 4.1.

Benforbindelserne kan inddeles i tre kategorier [Clements, 1997]:

1. Systemben

2. Styring af hukommelse og eksterne enheder

3. Specialben

13

Page 26: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

4 Design af mikrodatamat

VCC

GND

Clock

Reset

Systemben

MC68HC000

D0-D15

A1-A23

AS*

R/W*

UDS*

LDS*

DTACK*Ben til styring af hukommelse og

eksterne enheder FC0-FC2

IPL0*-IPL2*

BR*

BG*

BGACK*

BERR*

E

VMA*

VPA*

Specialben

Halt

Figur 4.1: Oversigt over benforbindelser på Motorola 68000 processor. Modificeret figur fra [Clements, 1997]

Systemben er følgende:

Power supply: Benene VCC og GND er til spændingsforsyningen på 5 V og 0 V til processoren.

Clock: TTL-kompatibelt signal der angiver processorens clockhastighed. Clockfrekvensen kandermed indstilles efter behov. Den maksimale clockfrekvens for den aktuelle processor er 20 MHz[Motorola, 1993].

Reset: Nulstiller processoren, så den kommer tilbage i den tilstand, som den er ved power-up.Under opstart af processoren skal benene Reset og Halt være lave i mindst 100 ms, såledesat forsyningsspændingerne har tid til at stabilisere sig. Når processoren kører, og den ønskesgenstartet skal Reset og Halt være aktive i mindst 10 clockcykler. Resetbenet fungerer også somet output. Hvis instruktionen ’reset’ udføres i processoren, går Reset benet lavt i 124 clockcycles.Reset benet kan dermed benyttes til at nulstille perifere enheder uden at resette processoren[Motorola, 1993].

Halt: Dette ben er aktivt lavt, og standser processoren når den aktuelle bus cycle er færdig.Dermed kan processoren tvinges til at udføre en bus cycle af gangen. Dette er anvendeligt veddebugging af program. Halt benet kan ligesom resetknappen også virke som output. Hvis hukom-melsen ikke svarer korrekt på en read- eller write cycle, så stopper processoren og sætter Haltbenet. Dermed er det muligt at følge med i om processoren er stoppet.

Styring af hukommelse og eksterne enheder er følgende:UDS og LDS: Upper Data Strobe og Lower Data Strobe er signaler, der kontrollerer databussen.Hvis der læses eller skrives et word til hukommelsen er både UDS og LDS aktive, og hvis derskrives en byte er det enten LDS eller UDS der er aktiv. Hvis LDS er aktiv benyttes ben D0 tilD7, og hvis UDS er aktiv så benyttes ben D8 til D15.

14

Page 27: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

4.1. Motorola 68000 processor

Adressebus: Benene A1 til A23 anvendes til processorens 24 bit adressebus. LDS og UDS kanregnes som A0, hvilket giver at 224 16 bit ord kan adresseres. Adressebussen benyttes til at vælgehvor i hukommelsen, der skal skrives data til og læses data fra.

Databus: Benene D0 til D15 anvendes til den 16 bit databus hvor data til og fra processorentransporteres. Tilgås et word bruges alle benene i databussen, men hvis der kun tilgås en byte,benyttes enten ben D0 til D7 eller ben D8 til D15.

Ud over adresse- og databussen er der fem kontrolsignaler til at styre overførslen af data til ogfra processoren. Disse fem signaler er:

AS: Adress Strobe. Såfremt AS er lav er adresserne på adressebussen er gyldige.

R/W: Read/Write. Angiver om der læses fra hukommelsen eller skrives til hukommelsen. Såfremtder læses fra hukommelsen er R/W høj, og hvis der skrives til hukommelsen er R/W lav. R/W erdesuden høj når processoren hverken skriver eller læser i hukommelsen, hvilket vil sige at R/Wkun er lav når der skrives til hukommelsen.

R/W UDS LDS Operation D08-D15 D00-D07

0 1 1 Ingen operation Ugyldig Ugyldig0 1 0 Skriv nedre byte D00-D07 Gyldige data0 0 1 Skriv øvre byte Gyldige data D08-D15

0 0 0 Skriv word Gyldige data Gyldige data1 1 1 Ingen operation Ugyldige Ugyldige1 1 0 Læs nedre byte Ugyldige Gyldige data1 0 1 Læs øvre byte Gyldige data Ugyldige1 0 0 Læs word Gyldige data Gyldige data

Tabel 4.1: Kontrol af databussen vha. LDS, UDS og R/W , modificeret figur i forhold til [Clements, 1997]

I Tabel 4.1 vises sammenhængen mellem R/W, UDS, LDS og hvornår der er gyldige data pådatabenene.

DTACK: Data Transfer ACKnowledge. Signal fra perifere enheder hvorfra der hentes ellergemmes data. Hvis DTACK er lav angiver det, at data på databussen er gyldig, og at processorenkan fortsætte til næste instruktion. Såfremt DTACK er høj indsætter processoren wait-states,hvor den ikke udfører beregninger. Det vil sige, at processoren venter til den perifere enhedmelder, at data er klar.

VPA: Valid Peripheral Address. Signal fra perifere enheder der angiver, at processoren haradresseret en gyldig adresse.

VMA: Valid Memory Address. Signal fra processoren der angiver at der er en gyldig adresse påadressebussen, når processoren har modtaget et VPA signal.

E: Enable. Et asymmetrisk clocksignal der bruges til timing ved kommunikation med Motorola6800-enheder. En clockcycle svarer til 10 af processorens clockcycles.

15

Page 28: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

4 Design af mikrodatamat

Specialben er følgende:Disse ben kan inddeles i fire undergrupper:

• Bus fejlkontrolGør det muligt for processoren at arbejde videre selvom der opstår en fejl i hukommelses-systemet

• BusstyringGør det muligt at flere processorer deler adresse- og databussen

• FunktionsudgangeAngiver hvilken type operation processoren udfører, og kan bruges til at kontrollere adgan-gen til hukommelsen

• InterruptstyringGør det muligt for en ekstern enhed at bede om processorens opmærksomhed, og angivehvilken ekstern enhed der ønsker opmærksomhed

1. Bus fejlkontrol:

Benet BERR gør det muligt for en ekstern enhed at tilkendegive overfor processoren, at der ergået noget galt med den aktuelle bus cycle. Dermed kan processoren enten forsøge at gentage denfejlagtige bus cycle eller udføre en undtagelse og dermed lade softwaren løse problemet. Detteben anvendes ikke i dette projekt, hvorfor dette tilsluttes til VCC via en 10 kΩ modstand.

2. Busstyring:

Benene BR, Bus Request, og BG, Bus Grant, muliggør at to eller flere processorer kan dele densamme data- og adressebus. Den processor der har kontrollen over data- og adressebus modtageren forespørgsel via BR benet fra den processor, der ønsker at tilgå data- og adressebus. Derefterafgiver den første processor kontrollen med data- og adressebus via BG benet. Dermed harprocessor to kontrol over de to busser, og melder dette tilbage via benet BGACK, Bus GrantACKnowledge. Benene BR, BG og BGACK benyttes ikke i dette projekt, hvorfor disse tilsluttestil VCC via en 10 kΩ modstand.

3. Funktionsudgange:

Funktionskontrolbenene, FC0, FC1 og FC2, kobles til en 3 til 8-funktionsdekoder

De tre ben FC0, FC1 og FC2 benyttes til at angive processorens statusinformation. Disse treben benyttes i dette projekt kun i forbindelse med Interrupt Acknowledge, og kobles til en 3til 8-dekoder for nemmere at kunne overvåge processorens status ved evt. fejlsøgning. Statusin-formation er f.eks. information om, hvorvidt processoren arbejder med data eller programmel. ITabel 4.2 ses en oversigt over betydningen af de tre funktionsudgange.

De udefinerede, reserverede tilstande er reserverede til senere udvidelser i nye udgaver af Mo-torola 68000 processoren. Det ses, at FC2 angiver om processoren arbejder i user mode ellersupervisor mode. Benet FC1 angiver at processoren arbejder i program mode, og FC0 angiver atprocessoren arbejder i data mode. Tilstanden ’CPU space (interrupt acknowledge)’ forekommer,når en perifer enhed genererer en interrupt request, og processoren behandler denne. Opdelingen

16

Page 29: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

4.1. Motorola 68000 processor

FC2 FC1 FC0 Clock cycle type

0 0 0 Udefineret, reserveret0 0 1 User data0 1 0 User program0 1 1 Udefineret, reserveret1 0 0 Udefineret, reserveret1 0 1 Supervisor data1 1 0 Supervisor program1 1 1 CPU space (interrupt acknowledge)

Tabel 4.2: Oversigt over betydningen af funktionskontrolbenene [Clements, 1997]

i user og supervisor mode udføres fordi, at visse instruktioner kun kan udføres i supervisor mode.Processoren starter altid i supervisor mode, og kan skifte til user mode via software men ikkeomvendt. Ydermere kan processoren kun skifte fra user mode til supervisor mode hvis der skeren undtagelse. En undtagelse kan være, hvis der kommer et interrupt fra en perifer enhed.

4. Interruptstyring:

Interruptstyring består af tre inputben på processoren benævnt IPL0, IPL1 og IPL2. Såfremten perifer enhed ønsker processorens opmærksomhed, sender den et interrupt request. Der er treinterrupt request inputben, hvilket muliggør otte forskellige interrupts requests fra 0 til 7, meninterrupt 0 benyttes ikke. En perifer enhed har typisk kun et ben til at angive den ønsker inter-rupt. Derfor er det nødvendigt med digital logik, der angiver den rette interrupt til processoren.Som prioritetsenkoder anvendes en 8 til 3-enkoder. Interruptniveau 0 har den laveste prioritet,og interrupt niveau 7 har højest prioritet. Interrupt request 7 vil altid blive behandlet af proces-soren. I processorens statusregister er der tre bits I0, I1 og I2, der angiver hvilken interruptniveauder behandles. Såfremt I0-I2 er 5, behandles interrupt request 5 og interrupt requests med lavereprioritet ikke. Processoren sætter ydermere adressebenene A1, A2 og A3 med tilsvarende kodesom er på IPL-benene. De tre adresseben bliver dekodet i en 3 til 8-dekoder, og anvendes somniveaudekoder til interrupt behandling.

4.1.2 Generering af clock

Processorens clockhastighed styres via ben 15 på processoren, hvor der tilsluttes en clockgeneratormed den ønskede frekvens. I dette projekt vælges det at køre med 8 MHz clockfrekvens. Derfortilsluttes en oscillator af typen MCO 1425 B - 8 MHz som vist på Figur 4.2.

Ben 14 på oscillatoren tilsluttes 5 V spændingsforsyning, og ben 7 tilsluttes til 0 V. Mellemben 7 og ben 8 tilsluttes en belastningskondensator, C2, som er angivet i databladet til 15 pF[Komponenten, 1993]. Ben 8 på oscillatoren tilsluttes ben 15 på Motorola 68000 processoren.Ben 1 benyttes ikke.

17

Page 30: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

4 Design af mikrodatamat

MCO1425B

14 8

71

V_CC

5 V

C2

15 pF

CLK

--- D:\Dokumenter\AAU\4. semester\Gruppemappe\Rapport\Figur\Prefigur\cpuclock.asc ---

Figur 4.2: Diagram over clockkredsløb til Motorola 68000 processor

4.1.3 Opbygning af power-up-reset kredsløb

Til opbygningen af power-up-reset kredsløbet anvendes en TL7705 kreds fra Texas Instruments,da denne er fremstillet til dette formål.

Benene på TL7705 kredsen har følgende funktioner:

REF: Reference. Angiver referencespændingen for kredsen. Tilsluttes normalt til stel.

RESIN: Reset Input. Hvis dette ben trækkes lavt, genererer TL7705 kredsen et reset signal påudgangen. Dvs. en kontakt kan tilsluttes til dette ben, så processoren kan genstartes via denne.

SENSE: TL7705 kredsen overvåger forsyningsspændingen via SENSE benet, så dette tilsluttesVCC .

CT: Hvis TL7705 kredsen på SENSE benet registrerer, at forsyningsspændingen går under 3,6V, går reset aktiv. Reset forbliver aktiv i en periode efter forsyningsspændingen er steget igen.Denne periode, td, angives af en kondensator, der monteres mellem stel og benet CT på TL7705kredsen. Perioden td udregnes således ud fra databladet for TL7705 [Instruments, 2003]:

td = 1, 3 · 104 · Ct (4.1)

Hvor td angiver forsinkelsen i sekunder, og Ct angiver størrelsen af kondensatoren i Farad.

Periodetiden for en clockcyklus når processoren kører 8 MHz er 125 ns, og reset skal være aktiv imindst 10 clock cycles, før processoren genstarter. 1,25 µs er mindre end de 100 ms hvor reset skalvære aktiv ved opstart af processoren, og derfor dimensioneres kondensatoren der skal tilsluttesmellem benet CT og stel således, at reset benet er aktivt i 100 ms vha. Formel 4.1:

td = 1, 3 · 104 · Ct ⇔ Ct =td

1, 3 · 104⇒

Ct =100 · 10−3 s

1, 3 · 104= 7, 7 µF (4.2)

Denne værdi afrundes til 10 µF hvilket giver en ventetid, td, på 130 ms.

GND og VCC: Tilsluttes til stel og forsyningsspændingen på 5 V.

RESET og RESET: TL7705 kredsen kan anvendes både til kredse der har aktivt lavt resetog aktivt højt reset signal. Motorola 68000 processoren har aktivt lavt reset signal, så derforbenyttes ben 5 på TL7705 kredsen, da det er aktivt lavt. Begge reset ben har open-collectorudgang, og der skal derfor anvendes pull-up modstande.

18

Page 31: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

4.2. Lager

På Figur 4.3 ses et diagram over power-up-reset kredsløbet.

R1

10 k

C1

0,1 uF

VCC

5 V

C_t

10 uF

R2

10 k

Reset

D1

D

D2

D

R3

10 k

R4

10 k

REF

RESIN*

CT

GND

VCC

SENSE

RESET

RESET*

TL77051

2

3

4 5

6

7

8

VCC

VCC

VCC

VCC

Halt*

Reset*

VCC

VCC

--- D:\Dokumenter\AAU\4. semester\Gruppemappe\Rapport\Figur\Prefigur\Power-up-reset.asc ---

Figur 4.3: Diagram over power-up-reset kredsløb

Ben 1, REF, er tilsluttet til stel via en afkoblingskondensator med størrelsen 100 nF, da det-te er angivet i databladet [Instruments, 2003]. Ben 2, RESIN, er tilsluttet en modstand og enresetkontakt, således processoren kan genstartes manuelt. Ben 3, CT, tilsluttes til stel via kon-densatoren Ct der bestemmer hvor lang tid, reset er aktiv. Størrelsen af denne kondensator erudregnet i Formel 4.2. Ben 4, GND, er tilsluttet stel. Ben 5, RESET, tilsluttes HALT og RESETpå processoren. Dioderne D1 og D2 bevirker, at HALT og RESET ikke kan påvirke hinanden.Ben 6, RESET, tilsluttes stel gennem en 10 kΩ modstand, da den ikke benyttes. Ben 7, SENSE,og ben 8, VCC , tilsluttes forsyningsspændingen.

4.2 Lager

I vægenheden anvendes der to typer af lager, ROM og RAM. Som ROM kan f.eks. bruges E-PROM eller Flash-RAM. ROM bruges til at lagre softwaren, som skal køres af processoren, dadataene ikke bliver slettet, når forsyningsspændingen fjernes. RAM derimod mister deres data,når forsyningsspændingen fjernes.

I dette projekt skal der bruges lager til to ting. Det er hhv. til TS2 debugger/monitor der skalbruge lager til software og data, og til software og data der giver vægenheden dens funktionalitet.TS2 debugger/monitor stiller krav med hensyn til mængde og placering i memorymap. TS2debugger/monitor kræver 2·128kbit·8 EPROM eller Flash-RAM på adresserne $0-$1200. RAMtil TS2 skal være på adresserne $40000-$40FFF.

4.2.1 ROM - Read Only Memory

ROM er et kombinations kredsløb med n indgange og b udgange, hvert input giver et bestemtoutput. Et ROM-kredsløb kan f.eks. være en 3 til 8 dekoder, som har 3 indgange og 8 udgange.En ROM kreds har typisk to kontrol inputs, output enable (OE) og chip select (CS) som beggeskal være aktive, når der skal læses fra ROM’en. Nogle ROM kredse kan slettes, og programmeres

19

Page 32: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

4 Design af mikrodatamat

efter behov. En oversigt over forskellige ROM-typer ses i Tabel 4.3. Læse-cyklus angiver tidenfra der anmodes om data til data’en er tilgængelig. Skrive-cyklus angiver tiden fra data’en derskal gemmes er til rådighed, til de er gemt.

Type Teknologi Læse-cyklus Skrive-cyklus Kommentarer

Mask ROM NMOS, CMOS 10-200 ns - En skrivning, lav effektforbrugMask ROM Bipolar < 100 ns - En skrivning, høj effektforbrugPROM Bipolar < 100 ns 10-50 µs/byte En skrivning, høj effektforbrug,

ingen udgifter ved skrivningEPROM NMOS, CMOS 25-200 ns 10-50 µs/byte Kan slettes og programmeres,

lav effektforbrug,ingen udgifter ved skrivning

EEPROM NMOS 50-200 ns 10-50 µs/byte 10.000-100.000skrivninger/læsninger,ingen udgifter ved skrivning

Tabel 4.3: Oversigt over typer af ROM-kredse [Wakerly, 2002]

Mask ROM er en ældre type ROM-kredse, som bliver fremstillet af producenten, udfra kundensønsker om input/output relationer. Disse kredse kan ikke ændres efter fremstilling, og benyttesderfor sjældent.

PROM: Programmable Read-Only Memory. Gør det muligt for kunden selv at programmere sinROM-kreds.

EPROM: Erasable Programmable Read-Only Memory. En PROM hvor det er muligt at sletteindholdet med ultra-violet lys, og derefter indlæse nye data.

EEPROM: Electrically Erasable Programmable Read-Only Memory. Kan slettes elektrisk hvilketmuliggør omprogrammering, mens den er implementeret i et system.

ROM-kredse er dermed anvendelige, hvis der skal bruges data, som ikke skal ændres mens syste-met kører. Men hvis der er behov for at gemme eller ændre data, mens et system kører, vil dettypisk være bedre at bruge RAM istedet for ROM.

4.2.2 RAM - Random Access Memory

RAM er en hukommelseskreds, hvor den tid det tager at skrive eller læse en bit er uafhængig afplaceringen i RAM kredsen. Alle RAM kredse har i modsætning til ROM kredse data inputs.RAM kredse har et ekstra kontrol input, Write Enable (WE), som sammen med CS skal væreaktive, når der skal skrives til RAM’en. Dermed kan data på databenene skrives til en bestemtadresse bestemt af adressebenene. Der er typisk to typer af RAM, statisk og dynamisk. StatiskRAM gemmer alt data, når de først er skrevet én gang til RAM’en, så længe der er strøm påkredsen. Dynamisk RAM skal have opdateret indholdet periodisk for ikke at miste data.

20

Page 33: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

4.3. Adressedekodning

4.2.3 Valg af ROM

Som ROM vælges at benytte kredse af typen flash-RAM. Det vælges at bruge kredsen 29F010, dadenne kreds er tilgængelig i laboratoriet og opfylder kravene. Kredsen har en læse- og skrivecyklustid på 90 ns. Kredsen er designet til at kunne programmeres, implementeret i et mikrodatamat-system, via adresse- og databussen.

Benene på kredsen har følgende funktioner [AMD, 1995]:

A0-A16: Adressebenene som skal forbindes til processoren via adressebussen.

DQ0-DQ7: Databenene der skal forbindes til databussen.

CE: Chip Enable. Modsvarer chip select på andre kredse. Styres via adressedekodning.

OE: Output Enable. Skal være lav, når der skal læses fra kredsen. Styres via adressedekodning.

WE: Write Enable. Skal være lav, når der skal skrives til kredsen. Styres via adressedekodning.

VCC: Forsyning til kredsen og forbindes til 5 V med en afkoblingskondensator.

VSS: Ground. Forbindes til stel.

4.2.4 Valg af RAM

Til RAM vælges at benytte kredse af typen HM628512, da de er tilgængelige i laboratoriumet.Kredsen har en læse- og skrivecyklus tid på 70 ns.

HM628512 har samme type benforbindelser som 29F010. Adressebenene A0-A18, databeneneI/O0-I/O7 og samme type kontrolben CE, OE og WE [Hitachi, 1994].

4.3 Adressedekodning

Adressedekoderens formål er, at generere chipselect, CS, til de enheder der kan tilgå databussen.I det følgende afsnit beskrives adressefordelingen på adressebussen. Dekodnings- samt styrelogikprogrammeres efterfølgende i en Programmable Electrically Erasable Logic kreds, (PEEL kreds).

4.3.1 Adressefordeling

På Figur 4.4 ses en indledende adressefordeling. De forskellige enheder der skal memorymappes erinddelt i tre hovedområder: Hukommelse for TS2 debugger/monitor, specifikt kode samt bruger-lager (memory), adresser til kommunikation (COM) og sidst adresser forbeholdt Input/Output(I/O).

Denne opdeling gør det overskueligt at udvide f.eks. hukommelsesområdet eller tilføje flereInput/Output-enheder.

21

Page 34: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

4 Design af mikrodatamat

TS2 D/M ACIA

$800 000 $BFF FFF$A00 001$800 003 $A00 003

...Konfig.ACIA

...

$C00 000 $FFF FFF$??? ???$??? ??? $??? ???

(RAM3)

RAM1ROM1

8-bit DAC

8-bit ADC

Konfig. ACIA

TS2 D/M ACIA

(RAM4)

RAM2ROM2

LDS(D7-D0)

$0 $1 000 000$800 000 $C00 000

Memory COM I/O

$0 $7F FFFF$4 0000 $13 FFFF

FLASH ROM 1+2 RAM 1+2 …

00 000103 FFFF

00 000003 FFFE

04 0001

13 FFFF

04 0000

13 FFFE14 0001

23 FFFF

14 0000

23 FFFE24 00012F FFFF

24 00002F FFFE30 0000

3F FFFE40 0000

4F FFFE50 0000

5F FFFE60 0000

60 FFFE70 0000

70 FFFE80 0001

9F FFFF

80 0000

9F FFFEA0 0001

BF FFFF

A0 0000

BF FFFEC0 0001

DF FFFF

C0 0000

DF FFFEE0 0001

FF FFFF

E0 0000

FF FFFE

30 0001

3F FFFF40 0001

4F FFFF50 0001

5F FFFF60 0001

60 FFFF70 0001

70 FFFF

UDS(D15-D8)

Figur 4.4: Tildeling af adresseområder

4.3.2 Hukommelse

Af TS2 debugger/monitor stilles en række krav til placering af hukommelse samt den ene kom-munikationsforbindelse. TS2 debugger/monitor kræver, at der er ROM på adresserne $0 til $1200samt at der forefindes RAM på adresserne fra $40000 til $40FFF. Dette medfører, at adresseom-rådet skal deles op i områder bestående af $40000 adresser, således alt ROM kan adresseres medsamme CS. Et område bestående af $40000 adresser, giver 256 kb hukommelse. Den samledemængde adresserbare hukommelse for en Motorola 68000 processoren er 16 Mb. Der skal derfordekodes ned til en 1/64 af den samlede hukommelse. En opdeling i 64 områder kan opnås ved atdekode på et antal adresseben bestemt ud fra Formel 4.3.

n =log (m)log (2)

, m > 0 (4.3)

Hvor n er antal adresseben og m er antallet af områder der ønskes dekodet.

Dermed kan antallet af adresseben udregnes vha. Formel 4.5.

n =log (64)log (2)

(4.4)

n = 6 (4.5)

Dermed dekodes på de 6 øverste adresseben (A23-A18).

Som beskrevet i afsnit 4.2 Lager på side 19, anvendes to ROM-blokke af typen AM29F010, somhver kan indeholde 1 Mbit ordnet som 128 k × 8 bit. Placeres to blokke af denne type fra adresse$0, således at den ene blok adresseres til Lower Data Strobe, LDS, mens den anden adresserestil Upper Data Strobe, UDS, udfylder disse tilsammen det første hukommelsesområde fra $0 til$3FFFF.Ydermere anvendes to RAM-blokke af typen HM628512 til statisk RAM, som hver kan indeholde4 Mbit ordnet som 512 k × 8 bit. Disse placeres lige efter ROM-blokkene for at overholde kravetstillet af TS2 debugger/monitor, og kommer dermed til at ligge i adresseområdet fra $40000 til$13FFFF, ligeledes til hhv. LDS og UDS.Det samlede memorymap for CPU’ens adresseområde ses på Figur 4.5.

Der skal således dekodes på de 6 øverste adresseben (A23-A18), datastrobe (LDS/UDS) samtadressestrobe, AS, for at chipselect, CS, først genereres, når der er en gyldig adresse på adresse-bussen.

I adresseområderne markeret som TS2 ACIA, Konfig. ACIA, ADC og IR driver forekommerspejling. I TS2 ACIA og Konfig. ACIA bruges 2 adresser i hver. Disse adresser spejles på deresterende adresser i området, da adressedekodningen ikke er fuldstændig. I adresseområderneADC og IR driver, benyttes kun 1 adresse i hver. Dette giver spejling der betyder, at alle adresseri områderne vil aktivere hhv. ADC’en eller IR driveren.

22

Page 35: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

4.3. Adressedekodning

IR driverE0 0001E3 FFFF

E0 0000E3 FFFEE4 0000

FF FFFE

E4 0001

FF FFFF

ADCC0 0001C3 FFFF

C0 0000C3 FFFEC4 0000

DF FFFE

C4 0001

DF FFFF

Konfig. ACIAA0 0001A3 FFFF

A0 0000A3 FFFEA4 0000

BF FFFE

A4 0001

BF FFFF

TS2 D/M ACIA80 000183 FFFF

80 000083 FFFE84 0000

9F FFFE

84 0001

9F FFFF

RAM1 RAM2

RAM1 RAM2

RAM1 RAM2

RAM1 RAM2

ROM1 ROM2

LDS(D7-D0)

00 000103 FFFF

00 000003 FFFE

UDS(D15-D8)

04 000107 FFFF

04 000007 FFFE

08 00010B FFFF

08 00000B FFFE

0C 00010F FFFF

0C 00000F FFFE

10 000113 FFFF

10 000013 FFFE14 0000

7F FFFE

14 0001

7F FFFF

Figur 4.5: Memorymap over processorens 16 Mb adresseområde (adresser er angivet i hex). De grå felter angiverubenyttede områder der ikke adresseres. Dermed menes at der ikke chipselectes nogle kredse på disse adresser. Degrå felter med stiplet linie angiver, at de spænder over et større område.

Placeringen af RAM’en i memorymappen samt deres størrelse betyder, at data ikke vil bliveplaceret fortløbende i den fysiske RAM. Dette skyldes, at det mest betydende adresseben påRAM-blokkene er mere betydende end det mindst betydende ben, der dekodes på i adressedeko-deren.

$ 7 FFFF $ BF FFFE

RAM 1 adresser

$ 4 0000 $ 04 0000

$ 3 FFFF $ 13 FFFE

$ 0 0000 $ C0 0000

Processor adresser

Figur 4.6: Omsætning af adresser fra processor til RAM1

På Figur 4.6 ses sammenhængen mellem den faktiske adresse processoren tilgår, og den adressesplacering i RAM’en. På Figur 4.6 ses det ligeledes at processoren spænder over flere adresser endRAM1. Dette skyldes, at RAM1 kun ligger på de lige adresser i hukommelsen. Dette har ikke

23

Page 36: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

4 Design af mikrodatamat

betydning i den anvendte konfiguration, da der ikke anvendes Direct Memory Access (DMA).Hvis det derimod var tilfældet, at flere enheder kunne styre bussen, var det nødvendigt at sikreenten fortløbende placering af data eller ens datatilgang til bussen.

Styrelogik til perifere enheder

Styrelogikken har til opgave at generere output enable, OE, og write enable, WE, til de perifereenheder. Ovennævnte genereres ud fra CPU’ens asynkrone kontrolbus, hvor AS er lav ved gyldigadresse på adressebussen, mens R/W er høj, når CPU’en er i read-mode og lav i write-mode.

En sandhedstabel over styrelogikken på kontrolbussen ses i Tabel 4.4.

Input OutputAS R/W OE WE

0 0 1 00 1 0 11 0 1 11 1 1 1

Tabel 4.4: Sandhedstabel over styrelogik til RAM- og ROM-kredse

4.3.3 Kommunikation

Af TS2 debugger/monitor stilles et krav om placering af en ACIA-kreds. Denne skal placeres påadresserne $800001 og $800003. Kredsen er placeret på ulige adresser, og forbindes derfor til dennedre del af databussen (D0-D7), og adresseres vha. adressebenene samt LDS og AS.

Udover ACIA-kredsene tilkobles I/O-enheder til kommunikation med sender- og modtagerkreds-løb for IR-signaler. Disse er placeret i den øverste del af adresseområdet jf. adressefordelingen påFigur 4.4. Sender og modtager adresseres til den nedre del af bussen vha. LDS. Placeringen kanses af memorymappen, Figur 4.5.

4.3.4 PEEL kode for Adressedekoder

Som beskrevet tidligere programmeres addressedekodningen i en PEEL kreds. Her opstilles de lo-giske udtryk på baggrund af det opstillede memorymap, der ses på Figur 4.5. Adressedekodningenopstilles i en tabel over adresseområder og adresseben, se Tabel 4.5.

Ud fra Tabel 4.5 kan der opstilles følgende logiske ABEL1 udtryk for generering af CS. ACIA1i udtrykkene henviser til ACIA-kredsen, der bruges til TS2 debugger/monitor, mens ACIA2henviser til ACIA-kredsen, der anvendes i forbindelse med konfiguration af systemet.

1Advanced Boolean Expression Language - kodesprog til generering af kode til f.eks. PEEL kredse

24

Page 37: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

4.4. Seriel datakommunikation

Enhed A23 A22 A21 A20 A19 A18 A17-A1 LDS UDS AS

ROM1 0 0 0 0 0 0 X X 0 0ROM2 0 0 0 0 0 0 X 0 X 0RAM1 0 0 0 0 0 1 X X 0 0

0 0 0 0 1 X X X 0 00 0 0 1 0 0 X X 0 0

RAM2 0 0 0 0 0 1 X 0 X 00 0 0 0 1 X X 0 X 00 0 0 1 0 0 X 0 X 0

TS2 ACIA 1 0 0 0 0 0 X 0 X 0Konf. ACIA 1 0 1 0 0 0 X 0 X 0IR Rx 1 1 0 0 0 0 X 0 X 0IR Tx 1 1 1 0 0 0 X 0 X 0

Tabel 4.5: Tabel over logiske niveauer for generering af CS til CPU’ens perifere kredsløb. 1 = høj, 0 = lav mensX angiver en don’t care

!ROM1 = !A23 & !A22 & !A21 & !A20 & !A19 & !A18 & !UDS & !AS;!ROM2 = !A23 & !A22 & !A21 & !A20 & !A19 & !A18 & !LDS & !AS;!RAM1 = !A23 & !A22 & !A21 &

((!A20 & !A19 & A18) # (!A20 & A19) # (A20 & !A19 & !A18))& !UDS & !AS;

!RAM2 = !A23 & !A22 & !A21 &((!A20 & !A19 & A18) # (!A20 & A19) # (A20 & !A19 & !A18))& !LDS & !AS;

!ACIA1 = A23 & !A22 & !A21 & !A20 & !A19 & !A18 & !LDS & !AS;!ACIA2 = A23 & !A22 & A21 & !A20 & !A19 & !A18 & !LDS & !AS;!Rx = A23 & A22 & !A21 & !A20 & !A19 & !A18 & !LDS & !AS;!Tx = A23 & A22 & A21 & !A20 & !A19 & !A18 & !LDS & !AS;

For styrelogikken til kontrolbussen opstilles følgende udtryk på baggrund af sandhedstabellen,se Tabel 4.4 på side 24.

!OE = !AS & RW;!WE = !AS & !RW;

Ovenstående udtryk programmeres i en PEEL kreds af typen ICT 22CV10A. Denne tager optil 22 input, hvoraf 10 kan anvendes som output. De 10 opstillede udtryk giver tilsammen 10outputs vha. 10 inputs.Den endelige PEEL kode ses i Appendiks G.

4.4 Seriel datakommunikation

For at mikrocomputeren kan kommunikere med andre enheder, benyttes der seriel datakom-munikation. Denne kommunikation sker gennem en RS232 forbindelse. Først beskrives RS232

25

Page 38: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

4 Design af mikrodatamat

forbindelsen, dernæst den tilknyttede ACIA2 med baudgenerator og NMI-kontakt der benyttestil TS2 debugger/monitor. Sidst beskrives hvorledes interrupt request (IRQ) i forbindelse medden serielle datakommunikation håndteres.

4.4.1 Beskrivelse af RS232

RS232 er en serielt brugerflade, der f.eks. kan anvendes til at transmittere data mellem en pc og enmikrodatamat. I dette projekt benyttes denne type forbindelse, når vægenheden skal konfigureres,og når TS2 debugger/monitor anvendes.

Med seriel dataoverførsel forstås, at når der transmitteres data mellem mikrodatamaten og enpc, sendes én bit af gangen. Til at indikere hvornår en datasekvens starter og stopper, benyttesstart- og stopbit. På Figur 4.7 ses et eksempel på et bitmønster for seriel data ved brug af RS232.

Start bit

Data bits Paritet bit

Stop bit

En karakter

LSB MSB

Figur 4.7: Illustration af et serielt datasignal iht. RS232 standarden. Signalet indeholder en startbit, 7 databits,en paritetsbit og en stopbit [Clements, 1997]

Når der ikke sendes data over den serielle forbindelse er det logiske niveau 1. Når en datasekvensskal sendes, er den første bit en startbit. En startbit er altid lav. Derefter følger 7 eller 8 bits,som er databits. Efter disse kan der følge en paritetsbit. Til sidst er der en eller to stopbit somaltid er høje. Det vælges om signalet pariteten skal være lige, ulige eller helt uden paritet. Vælgespariteten til ulige, vil paritetsbitten være høj hvis der i databittene er et lige antal høje bits, oglav hvis der er et ulige antal [Clements, 1997]. Alt i alt giver det 12 forskellige muligheder fordatasekvenser. I datasekvensen er den første bit efter startbitten LSB, og bitten lige før et evt.paritetsbit eller stopbit er MSB.

RS232 driver

Når bitsignalet kommer fra processoren er dets spændingsniveau enten 0 V eller 5 V. Standardenfor RS232 foreskriver spændingsniveauer mellem ±5 V og ±25 V [Clements, 1997]. Derfor ersignalet fra processoren nødt til at blive forstærket, og flyttet således det ligger omkring 0 V. Dettekan gøres med en RS232-driver. I dette projekt anvendes en RS232 driver af typen MAX232A.Ud fra 0 V og 5 V kan denne driver konvertere spændingsniveauerne til ±8 V, hvilket er indenforspecifikationerne i standarden.

Denne driver har ligeledes den egenskab, at den kan bruges, når et signal skal konverteres ned til0 V og 5 V fra RS232 forbindelsen. Det vil sige, at et signal med spændingsniveauer mellem -25V og 25 V bliver til 0 V og 5 V.

2Asynchronous Communications Interface Adapter

26

Page 39: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

4.4. Seriel datakommunikation

MAX232A kan håndtere to serielle forbindelser, hvilket gør at den benyttes til både TS2 debug-ger/monitor og konfiguration via PC.

4.4.2 Parallel/seriel konverter

Databussen på Motorola 68000 processoren er en parallel bus. Derfor benyttes en ACIA kredstil at konvertere data mellem parallel og seriel form. Denne konvertering benyttes både til TS2debugger/monitor og til den anden serielle port der benyttes til at konfigurere vægenheden viaen pc. I dette projekt benyttes en MC6850 ACIA kreds [Semiconductors, 1994]. De datamæssigtrelevante benforbindelser beskrives efterfølgende.

D0-D7: Databen som er koblet på mikroprocessoren.

RxD: Databen til modtagelse af data fra seriel forbindelse.

RxCLK: Clock input til ACIA kredsen. Clock’en bruges til modtagelse af data.

TxCLK: Clock til timing af TxD. Ofte koblet sammen med RxCLK.

TxD: Transmit Data. Databenet hvorpå der sendes seriel data. Når der ikke sendes data ertilstanden høj.

E: Enable. Clock til read/write mellem ACIA kredsen og processoren.

VPA: Valid Peripheral Address. Går lav når en synkron buscyklus ønskes fra processoren.

VMA: Valid Memory Address. Indikerer for ACIA kredsen, at der er en gyldig adresse påadressebussen. VMA går lav som følge af at VPA går lav.

IRQ: Interrupt Request. Interruptben fra ACIA kredsen, som sættes lav når en byte er modtaget.

RS: Register Select. Højimpedant indgang der anvendes til at vælge ACIA kredsens interne regi-stre. Et højt niveau vælger send/modtag dataregistre og et lavt vælger kontrol/status registrene.

R/W: Read/Write. Styrer retningen at dataflowet i ACIA kredsen. Når den er høj er ACIAkredsens udgang aktiveret og registre læses. Når den er lav er udgangene ikke aktive og derskrives i ACIA kredsens interne registre.

ACIA kredsen er koblet på databussen ligesom hukommelse. ACIA kredsen benytter ikke sammeclock som processoren, og derfor benyttes tre kontrolsignaler, E, VPA og VMA, fra processorentil styring. Databenene D0 til D7 på ACIA kredsen kobles til D0 til D7 på processoren.

Generering af chipselect af ACIA kredsene

To af ACIA kredsens tre chipselectben, CS0 og CS1, sættes høje. Derved er de aktive og kredsenvælges derefter, når CS2 er lav. ACIA kredsenes chipselect genereres ud fra VMA, LDS, ASog adressebenene A18 til A23. Adressebenene A18 til A23 samt AS udgør adresseringen i denkonstruerede adressedekoder, se afsnit 4.3, og betegnes her som adresseringssignalet. Adresse-ringssignalet genererer VPA til processoren. Når VPA går lav, starter processoren umiddelbart

27

Page 40: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

4 Design af mikrodatamat

herefter en synkron buscyklus, og sætter derefter VMA lav. VMA, LDS og adresseringssignalettil ACIA kredsen fra adressedekoderen logisk AND’es, og laver chipselect, CS2 for pc eller TS2debugger/monitor.

Desuden benyttes R/W til at indikere overfor ACIA kredsen, om der skrives til den eller læsesfra den. Adressebenet A1 på processoren kobles til RS på ACIA kredsen, og vælger hvilke registreder skal bruges.

4.4.3 ACIA kredsens registre

ACIA kredsen har fire interne registre. To write-only, benævnt kontrolregister (CR) og senddataregister (TDR) og to read-only, benævnt statusregister (SR) og modtag dataregister (RDR).Registrene CR og SR vil efterfølgende blive beskrevet.

Kontrolregister

ACIA kredsens kontrolregister sættes op til at styre, hvordan kredsen skal operere. Kontrolregi-steret er på 8 bit og delt op i 4 felter. I Tabel 4.6 ses en oversigt over registeret.

Bit CR7 CR6 CR5 CR4 CR3 CR2 CR1 CR0

Funktion Modtager interrupt Sender Valg af bitmønster Clockdivision

Tabel 4.6: Tabel over ACIA kredsens statusregister og dets bits funktioner [Clements, 1997]

Efterfølgende vil statusregisterets funktioner blive gennemgået.

ClockdivisionCR0 og CR1 vælges til at bestemme clockdivisionen i ACIA kredsen. Det vil sige neddelingenaf den clock, der tilsluttes på benene RxCLK og TxCLK. Der er tre delingsforhold, 1, 16 og 64.I dette projekt vælges den til 16, hvilket giver at CR0 = 1 og CR1 = 0. Når begge bit er høje,nulstilles kredsen.

Valg af bitmønsterCR2, CR3 og CR4 bruges til at bestemme antallet af databit, paritet og antal stopbits. Antalletaf databit vælges til at være 8 bit. Der skal ikke være nogen paritet, og der kan være en stopbit,hvilket giver CR2 = 1, CR3 = 0, CR4 = 1.

SenderCR5 og CR6 bestemmer RTS og Transmitter interrupt. RTS bestemmer, om IRQ skal sætteslav, når der skal sendes data. Hvis Transmitter Interrupt er aktiv, laver senderen et interrupt såsnart TDR er tomt.

Modtager interruptCR7 bestemmer om ACIA’en må generere interrupt til mikroprocessoren.

28

Page 41: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

4.4. Seriel datakommunikation

Statusregister

Statusregistret bruges til at mikroprocessoren kan udlæse status for ACIA kredsen. For at udlæsestatusregistret skal RS være lav og R/W høj. I Tabel 4.7 ses registrets bits og deres funktion.

Bit SR7 SR6 SR5 SR4 SR3 SR2 SR1 SR0

Funktion IRQ PE OVRN FE CTS DCD TDRE RDRF

Tabel 4.7: Tabel over statusregistret med bitnummer og funktion [Clements, 1997]

Efterfølgende vil hver funktion blive beskrevet.

RDRF: Receive Data Register Full. Angiver at modtaget data er læst ind i modtager dataregi-steret, og klar til at blive læst af mikroprocessoren.

TDRE: Transmit Data Register Empty. En høj bit angiver, at data fra sender dataregisteret ersendt, og klart til at blive fyldt op igen. En lav bit angiver, at registeret er fyldt.

DCD: Data Carrier Detect. Bruges når den serielle forbindelse kobles til et modem. Angiver omder er data på forbindelsen.

CTS: Clear-To-Send. Når signalet er lavt er f.eks. et modem klart til at sende data til kredsen.

FE: Framing Error. Fejlmeddelselse der angiver fejl i synkroniseringen. FE sættes høj, hvis detmodtagne signal ikke indeholder både start- og stopbit.

OVRN: Receiver Overrun. Angiver at data ikke er modtaget. For eksempel hvis modtag data-registeret ikke er blevet læst, inden der er blevet sendt en ny byte.

PE: Parity Error. Er høj hvis den forudindstillede paritet ikke passer med den modtagne.

IRQ: Interrupt Request. Når IRQ er høj i statusregisteret, er IRQ-udgangen lav. Den blivernulstillet, når en skrive- eller læseoperation udføres.

4.4.4 Baudgenerator

Når der sendes data over en seriel forbindelse efter RS232 standarden sendes clock-pulserne ikkemed. Derfor skal der genereres nye clockpulser hos modtageren med samme hastighed som isenderen.

TS2 debugger/monitor kræver en baudhastighed på 9600 baud (bits/sekund). ACIA kredsen ervalgt til at dele med 16. På baggrund af dette kan frekvensen af clockgeneratoren, fclk, beregnesi Formel 4.6.

fclk = 16 · 9600 Hz = 153, 6 kHz (4.6)

Denne frekvens er ikke tilgængelig som integreret clockgenerator eller krystal, og derfor anvendesen oscillator med højere frekvens, der kan neddeles til 153,6 kHz. Baudganeratoren konstrueresherefter med en rippletæller af typen 74HC4040 samt en oscillator på 2,4576 MHz, hvilket er 16gange højere end den ønskede frekvens.

29

Page 42: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

4 Design af mikrodatamat

Oscillatoren kobles til, CLK, på rippletælleren og udgangen med den korrekte neddeling koblestil clock på ACIA kredsen. Ifølge datablad for rippletælleren neddeler Q4 med 16 [Philips, 2005].Ben 11, RST, bruges til reset af kredsen. Da rippletælleren anvendes til at neddele en clock ogikke til at tælle tilsluttes dette ben til stel.

4.4.5 Interrupt request

Når der modtages data på en af RS232 forbindelserne benyttes autovektoriseret interrupt forat få processorens opmærksomhed. Interrupt request fra de to ACIA kredse enkodes via pri-oritetsenkoderen til processoren, som svarer med tilhørende IACK på niveaudekoderen. TS2debugger/monitoren kræver interrupt 7 til kommunikation, mens det vælges at den anden ACIAkreds skal benytte interrupt 5. Således genereres der individuelle IACK for ACIA kreds til pc ogTS2 debugger/monitor. Disse benævnes hhv. IACK5 og IACK7.

I en PEEL kreds logisk AND’s IACK5 med IRQ5 og IACK7 med IRQ7. Såfremt IACK5 ellerIACK7 går lav, går VPA ligeledes lav, hvis den tilhørende IRQ er aktiv. Dermed chipselectesden perifere enhed.

4.4.6 PEEL kode for chipselect og interruptstyrring af ACIA

Som beskrevet anvendes en PEEL kreds til styring af en del af kommunikationen mellem proces-soren og ACIA’erne. I Tabel 4.8 ses sammenhængen ind- og udgange.

Udgang VMA LDS ACIA_PCI ACIA_DMI IRQ5 NMI IACK5 IACK7

VPA X X 0 X X X X XX X X 0 X X X XX X X X 0 1 0 1X X X X 1 0 1 0

ACIA_PCO 0 0 1 0 X X X XACIA_DMO 0 0 0 1 X X X X

Tabel 4.8: Tabel over ind- og udgange for ACIA PEEL kreds

Ud fra Tabel 4.8 opstilles følgende ABEL udtryk, der efterfølgende programmeres i en PEELkreds.

!VPA = !CS_ACIA_PCI # !CS_ACIA_DMI;!VPA = !IRQ5 & !IACK5;!VPA = !NMI & !IACK7;!CS_ACIA_PCO = !VMA & !LDS & CS_ACIA_PCI & !CS_ACIA_DMI;!CS_ACIA_DMO = !VMA & !LDS & !CS_ACIA_PCI & CS_ACIA_DMI;

ABEL koden programmeres i en PEEL kreds af typen ICT 22CV10A. Den endelige PEEL kodeses i Appendiks G.

30

Page 43: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

4.5. Timing

4.4.7 NMI funktion

Som interrupt til TS2 debugger/monitor benyttes interrupt request 7. Interrupt 7 har højestprioritet, og får adgang med det samme, hvis den sættes lav.

Interruptet laves af en mekanisk kontakt, da det er brugeren af systemet, der bestemmer nårfunktionen ønskes benyttet. Procedureren kunne i teorien laves ved, at en kontakt trækker IRQ7på prioritetsdekoderen lav. Når en mekanisk kontakt påvirkes opstår der prell, hvorved metodenikke virker, da der vil komme mange interrupt requests. Derfor laves en prell-fri knap, hvorvedskiftet fra høj til lav foregår uden prell.

En måde at lave denne prell-fri kontakt er ved at lave en bistabil multivibrator. På Figur 4.8 seset diagram over en bistabil multivibrator.

5

5

4

4

3

3

2

2

1

1

D D

C C

B B

A A

NMI

NMI*

VCC VCC

Title

Size Document Number Rev

Date: Sheet of

<Doc> <RevCode>

<Title>

A

1 1Wednesday, May 03, 2006

Title

Size Document Number Rev

Date: Sheet of

<Doc> <RevCode>

<Title>

A

1 1Wednesday, May 03, 2006

Title

Size Document Number Rev

Date: Sheet of

<Doc> <RevCode>

<Title>

A

1 1Wednesday, May 03, 2006

A

B

12

3

12

3

Figur 4.8: Diagram over prell-fri kontakt lavet som en bistabil multivibrator

Virkemåden ved dette kredsløb er, at i off-tilstand er NMI høj og bliver ført ned som indgangpå NAND-gate B. Når der skiftes til on-tilstand går NMI lav og føres ned på NAND-gate B. Daden ene indgang er lav på NAND-gate B, sker der ikke noget ved at der er prell på den andenindgang på NAND-gate B. Det tilsvarende sker når NMI skifter fra lav til høj. Til at opbygge denprell-fri kontakt benyttes en 74HC03 kreds, som indeholder 4 stk. 2-input NAND-gates [Philips,1990].

4.5 Timing

For at mikrodatamatsystemet skal virke efter hensigten, er timingen af stor betydning. Medtiming forståes tidsafhængigheden af logiske niveauer på de signaler der forbinder processorenog enheder som f.eks. RAM og ROM.

Da ingen af de anvendte kredse kan generere DTACK til processoren, skal DTACK genereres påanden vis. Hvordan DTACK skal genereres afhænger af om timingen for de anvendte RAM- ogROM-kredse samt øvrige I/O enheder umiddelbart passer i processorens læse- og skrivecyklus.Hvis disse er hurtige nok, kan DTACK forbindes til AS. På den måde vil processoren læse gyldigdata på databussen umiddelbart efter, at den har sat en gyldig adresse på adressebussen. Hviskredsene derimod er for langsomme til denne konfiguration, skal der vha. en DTACK-generator

31

Page 44: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

4 Design af mikrodatamat

indsættes wait states således at DTACK først genereres, når RAM- og ROM-kredsene er klartil det. DTACK-konfigurationen afgøres ud fra den forsinkelse, der er fra AS går lav, til derer gyldig data på databussen. I dette tilfælde forsinkelsen i adressedekoderen samt i RAM- ogROM-kredsene, samt øvrige enheder der kan tilgå databussen.

I det følgende beskrives læse- og skrivecyklus for busoperationer med hukommelsen med hen-blik på, at bestemme om DTACK kan forbindes direkte med AS. Øvrige enheder der kan tilgådatabussen, er valgt efter at passe med denne timing.

4.5.1 Læsecyklus

Timingen for en læsecyklys er illustreret på Figur 4.9. Parametrene på timingdiagrammet, samtde relevante tidsparametre for RAM, ROM og den anvendte PEEL kreds til adressedekodningses i Tabel 4.9.

t1

t3

t4

t2

t5

Figur 4.9: Læsecyklus for Motorola 68000 processor. Modificeret figur fra datablad for Motorola 68000 processor[Motorola, 1993]

Accesstider Delays CPU-timing (Se også Figur 4.9)

tACC,ROM tACC,RAM tadr t1 t2 t3 t4 t5

≤ 90 ns ≤ 70 ns ≤ 10 ns ≤ 62 ns ≤ 55 ns ≤ 60 ns ≥ 10 ns ≥ 10 ns

Tabel 4.9: Tidsparametre for anvendte kredse samt CPU i forbindelse med en læsecyklus. Data fra datablade forhhv. ROM [AMD, 1995], RAM [Hitachi, 1994], PEEL kreds [ICT, 2004] samt Motorola 68000 processor [Motorola,1993]

Tiden, t5, i Tabel 4.9 er processorens krav til, hvornår data skal være gyldig på databussen.Tiden, t5 ≥ 10 ns skal overholdes, hvis der ikke skal indsættes wait states. Tiden, t5, kan findesved at betragte tiden fra stigende flanke i STATE 2 (S2) til faldende flanke i S7, hvorfra der

32

Page 45: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

4.5. Timing

trækkes tiden det tager processoren at generere AS, t3, accesstiden på hukommelsen, tACC , samtforsinkelsen i adressedekoderen, tadr.

Den aktuelle t5 udregnes dermed på følgende vis.

t5 ≥ 1fclk

· 2, 5− (t3 + tadr + tACC,ROM) (4.7)

Ovenstående udtryk er udledt af timingdiagrammet for processorens læsecyklus, se Figur 4.9,hvor det første led er tiden fra stigende flanke i S2 til faldende flanke i S7.

Tiden tACC,ROM anvendes, da det er denne kreds, der har det største delay i read-mode for RAMog ROM. Indsættes værdier i udtrykket fås følgende.

t5 ≥ 125 ns · 2, 5− (60 ns + 10 ns + 90 ns) (4.8)t5 ≥ 152, 5 ns (4.9)

Denne tid overholder kravet, t5 ≥ 10 ns. Skrivecyklus beskrives i følgende afsnit med henblik påat bestemme timing i forbindelse med denne.

4.5.2 Skrivecyklus

Timingen for en skrivecyklys er illustreret på Figur 4.10. Parametrene på timingdiagrammet,samt de relevante tidsparametre for RAM, ROM og den anvendte PEEL kreds til adressedekod-ning ses i Tabel 4.10.

t1 t3 t6

t7

t4

t2

Figur 4.10: Skrivecyklus for Motorola 68000 processor. Modificeret figur fra datablad for Motorola 68000 processor[Motorola, 1993]

Af datablade for de anvendte RAM og ROM fremgår det, at data skal være på databussen min.30 ns før, den af WE eller CS der senest går høj, går høj igen [Hitachi, 1994] [AMD, 1995]. Denne

33

Page 46: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

4 Design af mikrodatamat

Data setup Delays CPU-timing (Se også Figur 4.10)

tDS,ROM tDS,RAM tadr t1 t2 t3 t4 t6 t7

≥ 30 ns ≥ 30 ns ≤ 10 ns ≤ 62 ns ≤ 55 ns ≤ 60 ns ≥ 10 ns ≤ 62 ns ≤ 62 ns

Tabel 4.10: Tidsparametre for anvendte kredse samt CPU i forbindelse med en skrivecyklus. Data fra databladefor hhv. ROM [AMD, 1995], RAM [Hitachi, 1994], PEEL kreds [ICT, 2004] samt Motorola 68000 processor[Motorola, 1993]

tid, tDS ≥ 30 ns skal overholdes, hvis der ikke skal indsættes wait states. Tiden tDS kan udregnesved at betragte tiden fra stigende flanke i S4 til faldende flanke i S7, hvortil der lægges den tiddet minimum tager fra faldende flanke i S6, til processoren har sat AS, t6, samt den mindsteforsinkelse i adressedekoderen, tadr, dvs. 0 ns. Fra denne tid trækkes tiden fra stigende flanke iS4 til LDS/UDS er sat, t3 samt forsinkelsen i adressedekoderen, tadr, indtil WE samt CS er sataktiv. Dermed fås følgende udtryk for tDS.

tDS ≥ 1fclk

· 1, 5 + t6,min + tadr,min − t3 − tadr (4.10)

Indsættes værdier i udtrykket fås følgende.

tDS ≥ 125 ns · 1, 5 + 0 ns + 0 ns− 60 ns− 10 ns (4.11)tDS ≥ 117, 5 ns (4.12)

Gyldig data er af processoren sat på databussen før WE samt CS er sat aktiv, da t7 < 1fclk

+t3,min + tadr,min og dermed sikrer at gyldig data er på bussen.

Dermed er kravet, tDS ≥ 30 ns, overholdt samtidig med kravet, t5 ≥ 10 ns, i læsecyklen.

4.5.3 Generering af Data Transfer Acknowledge

Da kravene til tiderne, tDS og t5, overholdes, kan der genereres DTACK til processoren ved atforbinde DTACK til AS. På den måde indsættes ikke wait states, da DTACK er genereret mereend t4 = 10 ns fra faldende flanke af S5, som databladet for Motorola 68000 foreskriver hvis derikke skal indsættes wait states [Motorola, 1993].

4.6 Test af mikrodatamatsystem

Mikrodatamatsystemet er testet vha. TS2 debugger/monitor, som er brændt i ROM kredsene.Ved hjælp af Hyper Terminal på en pc kommunikeres der med mikrodatamatsystemet, og da TS2debugger/monitor fungerer efter hensigten konkluderes det, at RAM og ROM fungerer efter hen-sigten. TS2 debugger/monitor anvender både RAM og ROM, og da det er muligt at kommunikeremed mikrodatamatsystemet fungerer ACIA kredsløbet, der anvendes til TS2 debugger/monitorligeledes.

RS232 forbindelsen, der anvendes til ind- og udlæsning af parametre i vægenheden, testes vha. ettestprogram. Dette testprogram gemmer de karakterer, der sendes til vægenheden fra pc’en, og

34

Page 47: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

4.6. Test af mikrodatamatsystem

sender derefter karaktererne retur til pc’en. Programmet indlæses i vægenheden, og der sendeskarakterer vha. Hyper Terminal på pc’en. Programmet og vægenheden fungerer efter hensigten,og dermed fungerer ACIA kredsløbet efter hensigten. Testprogrammet kan ses på den vedlagteCD (/hardware/testprogrammer/rs232.asm).

35

Page 48: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

4 Design af mikrodatamat

36

Page 49: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Kapitel 5Design af infrarød sender- og modtagermodul

For at vægenheden kan kommunikere med en mobilenhed, skal der anvendes et infrarødt sender-og modtagermodul. Designfasen tager udgangspunkt i de primære krav til vægenheden, da detprimære mål for projektet er at eftervise en funktionalitet. Når denne funktionalitet er eftervist,kan der efterfølgende bruges mere tid på at designe sender- og modtagermodul således, at desekundære krav kan overholdes.

5.1 Design af sendermodul

Senderen konstrueres i første omgang til kun, at kunne sende med én styrke. Signalet, der skalsendes, er et digitalt signal. Det er nødvendigt med en en spænding til strøm konvertering,da det er strømmen igennem lysdioden, der bestemmer intensiteten, den lyser med. Senderenkonstrueres som vist på Figur 5.1.

R_IN BD137

R_C

R_IN

1 k Ohm

BC547

1,5 OhmR_C

BD137

SFH487P SFH487P

+5V +5V

+Input

_

+

Input

_

--- C:\Documents and Settings\Boll\Skrivebord\P4\Medlemsmapper\Boll\tx1pdf.asc ---

Figur 5.1: Diagram over sendermodulets opbygning

Der anvendes to transistorer i en Darlington-kobling, da der dimensioneres efter, at kunne trækkeen strøm på én ampere ned igennem dioden. Transistorer der kan tåle en sådan strøm, har enlav strømforstærkning i forhold til småsignalstransistorer, og vil derfor belaste signalforsyningen.

37

Page 50: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

5 Design af infrarød sender- og modtagermodul

Der er lavet forsøg med en signalgenerator monteret direkte som kilde til modulet, hvor der kunvar monteret en BD137 som udgangstransistor, og her var belastningen for stor.

Indgangsmodstanden, RIN , er monteret for at sikre en indgangsmodstand på mindst 1 kΩ. Mod-standen begrænser også inputstrømmen til ca. 3,8 mA, når der sættes 5 V på indgangen. Kol-lektormodstanden, RC , er dimensioneret ud fra oplysninger i databladende for lysdioden ogtransistoren ud fra følgende formel:

RC =VCC − Vce − Vd

Id(5.1)

Den maksimale kollektor-emitter spænding over transistoren, Vce, er opgivet til 0,5 V, og ved enampere igennem lysdioden er der opgivet et typisk spændingsfald, Vd, på 3 V. Dette giver ved5 V forsyningsspænding, at kollektormodstanden skal være 1,5 Ω for at begrænse strømmen, Id,til én ampere. Denne strøm er valgt, fordi det er den maksimale strøm dioden kan tåle med denaktuelle duty cycle, når der sendes et signal på 16 bit.

På Figur 5.2 ses inputsignalet til sendermodulet og spændingen på diodens anode. Inputsignaleter et firkantsignal med en frekvens på 9,6 kHz og en duty cycle på ca. 10 %.

2 2.5 3 3.5x 10-4

-1

0

1

2

3

4

5

6

inputsignal

anode

tid [s]

Spæ

ndin

g [V

]

Figur 5.2: Spændinger på anoden af senderdioden SFH487P målt i forhold til stel samt inputsignalet

Ud fra spændingen på anoden kan det bestemmes, at der løber ca. én ampere ned igennemdioden, når denne lyser.

5.1.1 Driver

Sendermodulet er memorymappet, så den kan tilgås af processoren via adressebussen. Der bliversåledes genereret et chipselectsignal, Tx, i adressedekoderen, når sendermodulet skal benyttes. Forat sende data til sendermodulet benyttes databenet D0 fra processoren, da der sendes et serieltsignal. Ved at skrive 1 til sendermodulets adresse genereres chipselect, og databenet D0 går højt.Chipselect og data på databenet forsvinder igen, når en skrivecyklus er slut, og dermed sendersendermodulet ikke længere. Der anvendes derfor en JK flip-flop til at fastholde de sidst skrevnedata til sendermodulet. Flip-floppens to indgange tilsluttes hhv. til spændingsforsyningen, VCC ,

38

Page 51: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

5.2. Design af modtagermodul

og stel. En PEEL kreds genererer hhv. clock, CLK, og clear, CLR, til flip-floppen. Sammenhængenmellem chip select, Tx, databenet D0, clock, CLK, og CLR er givet i Tabel 5.1.

Input OutputTx D0 CLK CLR

0 0 1 00 1 0 11 0 1 11 1 1 1

Tabel 5.1: Sammenhæng mellem Tx, D0, CLK og CLR i PEEL kredsen

Ud fra Tabel 5.1 opskrives følgende PEEL kode:

!Clk = !Tx & D0!Clr = !Tx & !D0

Ovenstående PEEL kode er implementeret i kredsen TX PEEL. Den endelige PEEL kode ses iAppendiks G. Ved hjælp af flip-floppen og PEEL kredsen aktiveres sendermodulet ved at skrive1 til dets adresse, og det slukkes igen ved at skrive 0.

Det vælges desuden at montere en jumper, der kan afbryde forsyningsspændingen til sender-modulet, således dette kan slukkes, da dioden ikke kan tåle at være tændt i lang tid, som villekunne forekomme ved brug af TS2 debugger/monitor.

5.2 Design af modtagermodul

Til at konvertere det infrarøde lyssignal om til strøm og spænding anvendes en fotodiode. Denvalgte fotodiode har ifølge databladet størst følsomhed ved samme bølgelængder som det in-frarøde lys, der udsendes fra lysdioden i sendertrinet. Fotodioden genererer en strøm, der erproportional med lysstyrken, den udsættes for.

Modtagermodulet ses på Figur 5.3. Der anvendes en operationsforstærker opkoblet som en ikkeinverterende forstærker med 26 ganges forstærkning. Parallelt over fotodioden er placeret enmodstand og et højpasfilter med en knækfrekvens på 2,5 kHz. Modstanden, R1, bestemmer hvorstor spænding der genereres fra fotodioden, og filteret er der for at fjerne lavfrekvent støj fra foreksempel lysstofrør, der ved test viste sig som 100 Hz sinus.

Udgangsspændingen fra modtagermodulet ses sammen med input til sendermodulet, der er etfirkantsignal med en frekvens på 9,6 kHz og en duty cycle på ca. 10 %, på Figur 5.4.

Det ses, at signalet ud af modtagermodulet er forsinket i forhold til inputsignalet. Dette tyder på,at operationsforstærkeren i modtageren er gået i mætning. Dette kan løses ved at øge afstandenmellem sender og modtager. Bliver amplituden af signalet ud af modtageren for lille ved dette,kan forstærkningen i modtageren øges ved at montere en mindre modstand RA, eller en størretilbagekoblingsmodstand, RF , da det er forholdet mellem disse, der bestemmer forstærkningen.

39

Page 52: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

5 Design af infrarød sender- og modtagermodul

R14,99 k Ohm

R260,4 k Ohm

C1

1 nF

R_A

40,2 Ohm

R_F

1 k OhmU1

BPW34+

output -

--- C:\Documents and Settings\Boll\Skrivebord\P4\Medlemsmapper\Boll\rx1pdf.asc ---

Figur 5.3: Diagram over modtagermodulets opbygning

2 2.2 2.4 2.6 2.8 3 3.2 3.4 3.6 3.8x 10-4

-1

0

1

2

3

4

5

6

output

inputsignal

tid [s]

Spæ

ndin

g [V

]

Figur 5.4: Plot af signalet fra sendermodulet og spændingen der kan måles på udgangen af modtagermodulet,målt med ca. 5 cm mellem sender- og modtagerdiode

En anden mulighed er at montere en større modstand, R1, parallelt over fotodioden, da dettevil bevirke at spændingen der forstærkes bliver større.

Under implementeringen blev det konstateret, at modtageren ikke fungerede som forventet. Detteskyldes, at frekvensen der blev testet med under konstruktionen er forkert. Der skulle have værettestet med et signal med en frekvens på 300 Hz og en duty cycle på 9,4 %, da dette er bitfrekvensenog duty cycle for en høj bit i et sendt signal. Bitfrekvensen udregnes som

fbit =fs

n⇒ 9600 Hz

32= 300Hz (5.2)

Hvor n er antallet af samples i en bit, mens fs er den anvendte samplingsfrekvens. Duty cycle erudregnet ud fra definitionen på en høj bit.

D =nh

n⇒ 3

32= 9, 375 % (5.3)

Hvor nh er antallet af høje samples i en høj bit.

Resultatet af denne forkerte måling betød, at der med det rigtige signal til dioden ikke var detkorrekte signal på indgangen af operationsforstærkeren. Kondensatoren, C1, kunne ikke holde

40

Page 53: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

5.2. Design af modtagermodul

spændingen på indgangen af operationsforstærkeren efter at have overført skiftet fra lav til høj.Dette bevirkede, at der kunne måles en afladekurve på indgangen af operationsforstærkeren. Kon-densatoren er derfor afmonteret og erstattet af en kortslutning. Dette bevirker, at støjniveauetpå udgangen hæves, da spændingen over modtagerdioden fra baggrundslyset nu ikke filtreres fra.

5.2.1 Analog til digital konverter

Til at konvertere den analoge spænding ud af modtagermodulet til en digital værdi processorenkan håndtere, anvendes en analog til digital konverter.

Der er stillet et krav om, at signalet der sendes og modtages skal bestå af 16 bit, og hvert bitskal samples 32 gange. Ydermere er der fra gruppens side valgt en samplingsfrekvens på 9,6 kHz.Med 512 samples på et 16 bit signal vil det tage 53,3 ms at modtage eller sende signalet medden valgte samplingsfrekvens. Samplingsfrekvensen vælges, da denne i forvejen er tilgængelig iforbindelse med den serielle kommunikation, og fremkommer ved at neddele 2,4576 MHz 256gange. Desuden vælges det at montere en jumper, hvor det er muligt at vælge seks frekvenser,fra 9,6 kHz til 307,2 kHz. Dette giver mulighed for senere, at kunne teste om samplingsfrekvensenkan øges.

Som ADC vælges ADC0820, da den er designet til indgå i et mikrodatamatsystem, og dermedkan optræde som en perifer enhed på en bestemt adresse. ADC0820 kan tri-state udgangene,og kan dermed kobles direkte på databussen. Kredsen har desuden indbygget sample-hold påindgangen, der kan håndtere at spændingen ændrer sig op til 100 mV/µs. Det analoge signal fraIR-modtageren varierer mellem 0 V og 5 V, som skal samples i ADC’en, har ifølge målinger, derses på Figur 5.4, stige- og faldetider på ca. 4 µs. Der vil i værste fald ske én sampling på flanken,men dette tages der højde for i softwaren via en tolerance, som tillader et antal dårlige samples.

Processoren henter en sample fra ADC’en, når der kommer et interrupt 4. Herefter starter pro-cessoren en ny konvertering i ADC’en. På den måde vil de indlæste samples altid være en samplebagud, men dette betyder ikke noget for systemets funktion.

ADC’en sættes op til at operere i WR-RD mode, da processoren dermed kun behøver at kom-munikere med ADC’en, når der skal hentes en sample, og når der skal startes en konvertering.Til kontrol af ADC’en benyttes signalerne CS, WR og RD, se Figur 5.5.

For at starte ADC’en skal der genereres CS og WR i minimum 600 ns (tWR). Konverteringen erfærdig, når INT går lav, typisk 800 ns (tINT) efter WR er gået høj igen. For at læse konverteringengenereres CS og RD, og typisk 70 ns (tACC2) efter er der gyldig data på udgangen. Udgangenbliver tri-stated typisk 100 ns (t1H) efter, at RD går høj igen. [Corporation, 2004]

Pulsforlænger

For at starte ADC’en skal der genereres CS og WR i minimum 600 ns, hvilket processoren ikkekan generere.

I afsnit 4.5 Timing på side 31 er beskrevet hvorledes LDS/UDS genererer CS. Ud fra dette samtprocessorens timing, se Figur 4.10 på side 33, kan den tid CS er aktiv, tCS, udregnes. LDS/UDS

41

Page 54: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

5 Design af infrarød sender- og modtagermodul

Figur 5.5: Timingdiagram over i ADC’en ADC0820 [Corporation, 2004]

sættes lav senest tiden t3 efter stigende flanke i S3, og går tidligst høj igen ved faldende flanke iS6. Dette giver følgende udtryk.

tCS ≥ 1fclk

· 1, 5− t3,maks (5.4)

tCS ≥ 125 ns · 1, 5− 60 ns (5.5)tCS ≥ 127, 5 ns (5.6)

Derved bliver der ikke genereret CS i lang tid nok, hvilket medfører at det er nødvendigt atanvende et pulsforlængerkredsløb. Til dette benyttes samme type kredsløb, som er benyttet tilgenerering af RESET til processoren. Kredsen TL7705 kan forlænge en puls i en tid, som erbestemt af en ekstern kondensator. Med følgende formel kan tiden, td, beregnes, hvorved en pulsbliver forlænget udfra kondensatoren Ct1 [Instruments, 2003].

td = 1, 3 · 104 · Ct1 ⇔ Ct1 =td

1, 3 · 104⇒

Ct1 ≥ 600 ns− 127, 5 ns

1, 3 · 104= 36, 3 pF (5.7)

Den beregnede kondensator er på den konstruerede vægenhed erstattet med en 12 pF kondensa-tor, da dette gav en tid tættere på det beregnede.

ADC timing

Som beskrevet i afsnit 4.5 Timing på side 31 er der et krav vedrørende timing til alle perifereenheder, som processoren skal tilgå via databussen. Når processeren skal læse data fra ADC’en,skal data være gyldig minimum 10 ns før faldende flanke i S7 af processorens skrivecyklus. ForADC’en går der maks 120 ns (tACC2), fra der er genereret CS og RD til der er gyldig data på

42

Page 55: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

5.2. Design af modtagermodul

udgangen. Udfra Figur 4.10 i afsnit 4.5 Timing på side 33, kan det beregnes hvor lang tid der ergyldig data på databussen før faldende flanke i S7. Denne tid, tDATA, mellem stigende flanke i S2og faldende flanke i S7, kan udregnes som angivet i Formel 5.8, hvor t3,maks er den maksimale tidfra stigende flanke i S2 til processoren har genereret AS og LDS/UDS. Tiden tadr er forsinkelseni adressedekoderen til chipselect af ADC’en.

tDATA ≥ 1fclk

· 2, 5− t3,maks − tadr − tACC2 (5.8)

tDATA ≥ 125 ns · 2, 5− 60 ns− 10 ns− 120 ns (5.9)tDATA ≥ 122, 5 ns (5.10)

Dermed overholder ADC’en kravet, da der er gyldig data 122,5 ns før faldende flanke i S7.

Opkobling af ADC

Til styring af ADC’en benyttes signalerne OE, WE og Rx fra adressedekoderne, hvor Rx erchip select til ADC’en. Benet CS på ADC’en sættes til stel, og dermed styres ADC’en kun medbenene RD og WR, se Figur 5.6. Der opstilles derfor en sandhedstabel på baggrund af styring afADC’en.

Input OutputOE WE Rx WR RD

0 1 0 1 00 1 1 1 11 0 0 0 11 0 1 1 1

Tabel 5.2: Sandhedstabel over styring af ADC’en i PEEL kredsen

Udfra Tabel 5.2 opskrives følgende PEEL kode:

!RD = !OE & WE & !Rx!WR = OE & !WE & !Rx

Den samlede PEEL kode kan ses i Appendiks G

ADC’en og pulsforlængerkredsløbet er koblet op som vist på Figur 5.6.

REF+ og REF- angiver det spændingsinterval, som ADC’en konverterer indenfor. Når indgangener lig REF- er ADC’ens udgange, D0 til D7, 0, og når indgangen er lig REF+, er udgangenADC’ens udgange lig 1. Idet ADC’en skal konvertere et signal med en amplitude mellem 0 V og5 V forbindes REF- til GND og REF+ til VCC . Hvis indgangssignalet overstiger REF+, sætterADC’en signalet OFL, som indikerer overflow. Denne funktion benyttes ikke, da overflow i denanvendte sammenhæng ikke er mulig.

Signalet INT kan bruges til at generere interrupt til processoren, som signal om at konverteringener færdig. På den måde kan der opnås den maksimale samplingsfrekvens, som ADC’en tillader.

43

Page 56: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

5 Design af infrarød sender- og modtagermodul

5

5

4

4

3

3

2

2

1

1

D D

C C

B B

A A

D3D4D5D6D7

D0D1D2

WR*

RD*

Vcc

Vcc

Vcc

Title

Size Document Number Rev

Date: Sheet of

<Doc> <RevCod

<Title>

A3

1 1Thursday, May 25, 2006

Title

Size Document Number Rev

Date: Sheet of

<Doc> <RevCod

<Title>

A3

1 1Thursday, May 25, 2006

Title

Size Document Number Rev

Date: Sheet of

<Doc> <RevCod

<Title>

A3

1 1Thursday, May 25, 2006

IR_inDatabus

C8100n

C8100n

Delay

TL7705B

Delay

TL7705B

CT3

SEN7

RESIN2

REF1 RST 6

RST 5

R3310kR3310k

R30

10k

R30

10k

ADC

ADC0820

ADC

ADC0820

VIN1

REF+12REF-11

D0 2D1 3D2 4D3 5D4 14D5 15D6 16D7 17

INT 9OFL 18

CS13

MODE7RD8

WR/RDY6C_t1

47p

C_t1

47p

Figur 5.6: Opkobling af ADC0820 til WR-RD-mode

Da der går 104 µs mellem hver sampling, og ADC’en har en konverteringstid på maksimalt 1,52µs i WR-RD-mode, vil konverteringen altid være færdig, når der læses en sample, og det erdermed ikke nødvendigt at benytte INT.

5.3 Test af sender- og modtagermodul

For at teste sender- og modtagermodul benyttes et testprogram, der er skrevet i assembler.Sender- og modtagermodul testes samtidigt, dog uden selve den infrarøde sender og modtagermonteret, som beskrevet i Appendiks B Systemkravtestspecifikation på side 77. Dermed er detkun de dele der interagerer med processoren, der er testet og ikke den infrarøde kommunikation.

Ved eksekvering af programmet og udlæsning af data udlæstes $FF og $00 som forventet. Det kon-kluderes derfor, at driveren til sendermodulet og konverteringsdelen af modtagermodulet fungererkorrekt. Testprogrammet kan ses på vedlagte på CD (/hardware/testprogrammer/IRTest.asm).

44

Page 57: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Kapitel 6Softwaredesign

I dette kapitel beskrives opbygningen af softwaren til vægenheden. Først opdeles softwaren iprocesser vha. et flowdiagram, hvorefter de enkelte processer beskrives.

6.1 Programdesign

I dette afsnit beskrives hovedfunktionerne i softwaren. Flowdiagrammet på Figur 6.1 viser sam-menhængen mellem hovedprocesserne i softwaren.

Tænd

Initialisering

Interrupt 7

Kør TS2 debugger/

monitor

Interrupt 5

Konfigurer vægenhed

Data-behandling

Interrupt 4

RTE

Send eller modtag?

Send sample

Modtag sample

Send Modtag

RTE

Nye data?

Ja

Nej

RTE

Main program

Interruptrutine 4Interruptrutine 5Interruptrutine 7

Figur 6.1: Flowdiagram over hovedprocesserne i softwaren. RTE angiver Return From Exception

Softwaren er opdelt i en Initialisering, et Main program og tre Interruptrutiner. Initialiseringenudføres kun, når vægenheden har været slukket, eller er blevet genstartet. Efter initialiseringenbegynder processoren at udføre main programmet. Processoren vil blive ved med at udføre main

45

Page 58: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

6 Softwaredesign

programmet, indtil den modtager et interrupt. Når processoren får et interrupt, vil den afbrydemain programmet og begynde behandlingen af den interruptrutine, der hører til det modtagedeinterrupt. Når processoren behandler en interruptrutine, vil interrupts med samme eller lavereprioritet blive ignoreret. Prioriteten er den samme som interruptnummeret. Når interruptrutinenafsluttes returneres til main programmet, hvor processoren blev afbrudt af interruptet.

Processen Initialisering skal indstille vægenheden til at modtage signal og starte en konverte-ring i ADC’en, således at der er gyldig data at hente, når processen Modtag signal køres førstegang. Det kan dog forekomme, at ADC’en ikke kan nå at lave en komplet konvertering, indender hentes data. Dette kan dog kun ske første gang, der hentes data fra ADC’en, efter vægen-heden er blevet tændt eller genstartet. Processen opsætter også ACIA kredsløbet, der håndtererkommunikationen med pc’en. Den opsættes til at køre med 8 databit, ingen paritet, ét stopbitog en intern clockdivision på 16. Herved er denne ACIA opsat til at bruge samme format, somden der automatisk opsættes af TS2 debugger/monitor. Derudover opsættes ACIA kredsen, derhåndterer kommunikationen med pc’en, til at kunne generere interrupts.

I vægenheden anvendes der 3 interrupts. Interruptprioriteterne er delvist valgt frit. Gruppen harvalgt, at der ikke skal kunne modtages eller sendes IR-signaler, når vægenheden konfigureres viaRS232 forbindelsen. Det vælges derfor, at Konfiguration af vægenhed har interrupt 5, og Modtageller Send signal processerne aktiveres af interrupt 4. TS2 debugger/monitor stiller krav til, ataktivering skal ske via interrupt 7, som er den højeste prioritet.

Main programmet starter med at aflæse et flag, der indikerer, om der er nye data, der skalsammenlignes med referencesignalet. Processoren vil blive ved med at foretage denne sammen-ligning, indtil den modtager et interrupt, hvorved den springer til den respektive interruptrutine.Har der været et interrupt 4, og der er modtaget data, vil processoren fortsætte til processenDatabehandling, når den er returneret fra interruptrutinen. Processen Databehandling udførerkontrollen om, hvorvidt de modtagne data udgør et gyldigt signal. Det er også i processen Da-tabehandling, der skiftes mellem, om der skal sendes eller modtages data, når der kommer etinterrupt 4.

Ved et interrupt 4 springer processoren fra main programmet til interruptrutine 4. I interrup-trutinen startes enten processen Modtag sample eller Send sample. Processen Modtag samplehenter data fra ADC’en, gemmer dataene i hukommelsen og sætter et flag der indikerer, at derer modtaget ny data, hvorefter den starter en ny konvertering i ADC’en. Herefter afsluttes in-terruptrutinen og processoren returnerer til main programmet. Processen Send sample afsenderen sample til mobilenheden vha. det infrarøde sendermodul. Ventetiden, fra der er modtaget etgyldigt signal, til der afsendes et svar, er også indeholdt i denne proces, da der ikke afsendessvarsignal, før der er ventet det antal interrupts, der er angivet af brugeren. Interrupt 4 aktiveresaf en ekstern clock med en frekvens på 9,6 kHz.

Ved interrupt 5 startes interruptrutine 5, der indeholder processen Konfigurer vægenhed. Denneproces muliggør ændring af referencesignal, svarsignal og ventetid vha. en RS232 forbindelse tilen pc. Interrupt 5 genereres, når der sendes en karakter til vægenheden via RS232 forbindelsen.Efter Konfigurer vægenhed processen er startet, indstilles vægenheden til at ignorere interrupt 5og derunder. Dermed modtages eller sendes der ikke IR-signaler. Selvom der genereres interrupt5, hver gang der sendes til vægenheden, ignoreres dette, da det er valgt, at der anvendes pollingved konfigurering af vægenheden. Processen Konfigurer vægenhed og interruptrutine 5 afsluttesaf brugeren, hvorefter vægenheden igen indstilles til at modtage alle interrupts. Herefter vil

46

Page 59: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

6.2. Initialisering af vægenhed

processoren returnere til main programmet eller interruptrutine 4, alt efter hvor den var, dainterrupt 5 blev genereret.

Ved tryk på NMI-knappen modtager processoren interrupt 7 og springer til interruptrutine 7, derindeholder processen TS2 debugger/monitor. Interrupt 7 afsluttes, når brugeren af vægenhedenafslutter TS2 debugger/monitor, ved enten at skrive ’go’ eller genstarte vægenheden. Alt efterhvordan processen og dermed interruptrutinen afsluttes, returnerer processoren dertil, hvor denvar da interruptet blev genereret.

Softwaren er dermed delt op i seks processer, som efterfølgende vil blive behandlet.

• Initialisering af vægenhed

• Databehandling

• Send signal

• Modtag signal

• Konfiguration af vægenhed

• TS2 debugger/monitor

Processen Modtag signal beskrives ikke videre, da denne kun henter data fra ADC’ens adresse,som det er blevet beskrevet. Ligeledes vil processen TS2 debugger/monitor ikke blive beskre-vet yderligere da det er udviklingsværktøj der er skrevet af forfatteren til [Clements, 1997] ogredigeret af Sofus Birkedal Nielsen, Associate professor, AAU.

En samlet oversigt over RAM allokering ses i Appendiks F RAM allokering på side 93.

6.2 Initialisering af vægenhed

Processen Initialisering af vægenhed køres når vægenheden tændes og skal udføre følgende:

1. Initialisere ACIA til RS232 forbindelsen der anvendes til konfiguration af vægenheden

2. Indlæse standardværdier for referencesignal, svarsignal, ventetid og høj bit referencen

3. Indstille tilstands- og dataflag

I de følgende afsnit beskrives de ovenstående punkter.

I Initialisering af vægenhed indstilles statusregisteret først til $2500, således processoren ignorererinterruptniveau 5 og derunder. Dette gøres for at sikre, at initialiseringen ikke bliver afbrudtaf et interrupt. Som den sidste instruktion i Initialisering af vægenhed indstilles processorensstatusregister til $2000, således alle interruptniveauer behandles.

47

Page 60: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

6 Softwaredesign

Initialisering af ACIA kreds

ACIA kredsen skal initialiseres, så det er muligt at sende og modtage data via RS232 forbin-delsen. Dette gøres ved hjælp af kontrolregisteret. Først laves masterreset af ACIA kredsen, ogderefter sættes den op til den ønskede virkemåde. Masterreset laves ved at skrive $03 til kontrol-registeret. Ved at sætte kontrolregisteret til $95 konfigureres ACIA kredsen til at kunne generereinterrupts, ikke kunne modtage interrupt, datalængde på 8 bit, ingen paritet, ét stopbit og internclockdivision på 16.

Indlæs standardværdier for referencesignal, svarsignal, ventetid og høj bit referencen

Når vægenheden starter op, skal der i hukommelsen ligge standardværdier for referencesignal,svarsignal og ventetid. Disse værdier indlæses lige efter initialiseringen af ACIA kredsen.

I en endelig udgave af vægenheden vil de senest indlæste paramtere blive gemt i ROM, såledesdisse parametre gemmes selv om forsyningsspændingen fjernes.

Standardværdierne, der senere kan vises i hyper terminalen, gemmes som ASCII værdier i hukom-melsen. Når et 0 indtastes i hyper terminalen, er det repræsenteret ved ASCII værdien $30, 1med $31, 2 med $32 osv. Fra disse trækkes $30 inden de lagres i hukommelsen, således at de errepræsenteret med hhv. $00, $01 og $02. Dette betyder, at når der skal gemmes en bitstreng på16 bit, fylder det i hukommelsen 16 byte. Disse 16 byte gemmes som 4 longword. Referencesignalog svarsignal består af 16 bit, mens ventetiden er bestemt til at være repræsenteret ved en hex-værdi, gemt i et longword. Ydermere gemmes indtastede værdier for ventetiden i et midlertidigtlager, da udlæsning af data dermed vil kunne gøres på en overskuelig måde ved blot at udlæsedet midlertidige lager. Der indlæses desuden en høj bit reference, der anvendes i Send signalprocessen, som beskrives senere.

Indstille tilstands- og dataflag

Det vælges at lagre et tilstandsflag på adressen $70000, som angiver, om der skal sendes ellermodtages ved næste interrupt 4. Flaget defineres til at 1 angiver send, og 0 angiver modtag.Ligeledes defineres et dataflag, der indikerer, at der er nye data. Flaget defineres til 1, når derer nye data. Flaget benyttes til at opfylde betingelsen for at udføre processen Databehandling,når der returneres til main programmet fra interruptrutine 4. I Initialiseringsprocessen indstillestilstandsflaget til at modtage og dataflaget sættes til, at der ikke er nye data.

6.3 Databehandling

Processen Databehandling skal genkende et triggersignal i de modtagne data fra ADC’en. Denefterfølgende beskrivelse er med udgangspunkt i flow diagrammet vist på Figur 6.2 Det vælgesat opdele processen i følgende tre moduler:

• Søgning efter første bit

48

Page 61: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

6.3. Databehandling

• Søgning efter høj bit

• Søgning efter lav bit

Når der modtages data, benyttes Søgning efter første bit modulet til at finde den første høje biti de modtagne data. Efter den første bit er fundet, skal der søges i de efterfølgende data efterenten en høj eller en lav bit iht. referencesignalet.

Databuffer = 38000000 v30000000?

Konverter sample til 1

eller 0

Høj

Ja

Flyt sample ind i

databuffer

Databuffer = 1C000000?Nej

Ja

Sammenlign-ingsflag = 0

Tæl bit op

Databuffer = 0C000000?

Nej

Ja

Sammenlign-ignsflag = 1

Tæl bit op

Flyt sample ind i

databuffer Nej

Modtaget 32 samples?

NejJa

Databuffer = 1C000000 v0C000000 v18000000?

Første bit?

Ja

Tæl bit op Nulstil

sampletæller

Nej

Sammenlig-ningflag = 1?

Ja

Nej

Ja

Nej

Nulstil

Tæl bit op Nulstil

sampletæller

Sampletæl-ler +1

Søger efter høj eller lav bit?Lav

Flyt sample ind i

databuffer

Sampletæl-ler +1

Modtaget 32 samples?

Nej

Ja

Databuffer = 00000000?

Nulstil

Nej

Tæl bit op Nulstil

sampletæller

Ja

Nulstil

main

Start proces

Figur 6.2: Flowdiagram over processen Databehandling

Fælles for de tre moduler er, at der benyttes en databuffer, som kan indeholde 32 samples,svarende til en bit i referencesignalet. Det vælges at anvende en af processorens dataregistre somdatabuffer, da det er hurtigere at gemme og hente data i dataregistrene frem for i RAM. Vedat have databufferen i dataregistrene giver det mere tid, mellem hver sample hentes, til at søgeefter et indkommende signal. Ved indsættelse af en høj sample i databufferen, udføres ’Logic

49

Page 62: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

6 Softwaredesign

Shift Left’ (LSL) på databufferen og denne logisk OR’es med et ettal. Dermed er databufferensindhold blevet flyttet en sample til venstre og et ettal er sat ind i starten. Ved indsættelse af enlav sample udføres kun LSL på databufferen, da det der flyttes ind, er et nul. Data fra ADC’enfylder en byte, og da der ikke er plads til 32 bytes i et af processorens dataregistre konvertereshver sample til en bit. Dette gøres vha. en funktion der sammenligner den hentede sample medværdien $32, hvilket svarer til en femtedel af ADC’ens opløsning. I dette tilfælde, hvor ADC’enmåler værdier mellem 0 og 5 V, vil grænseværdien være 1 V. En sampleværdi på $32 og derunder,konverteres til en 0 bit, mens en sampleværdi over $32, konverteres til en 1 bit. Ved at konverterede enkelte samples til enkelte bit er det muligt at lagre 32 konverterede samples i et dataregister.

I processen Databehandling benyttes følgende data- og adresseregistre:

• D0: Sidste modtagede sample fra ADC’en efter konvertering til 0 eller 1.

• D1: Sampletæller. Tæller antallet af samples indlæst i databufferen.

• D2: Bittæller. Tæller antallet af genkendte bits i triggersignalet.

• D5: Sammenligningsflag der indikerer om det første bit i triggersignalet bestod af 2 højesamples eller 3 høje samples.

• D6: Databuffer til de sidste 32 modtagede og konverterede samples fra ADC’en.

• A5: Referencepointer som peger på det bit i referencesignalet der skal sammenlignes med

Databehandlingen starter med, at undersøge om der søges efter en høj eller lav bit ud fra, hvadreferencepointeren peger på. Hvis der søges efter en høj bit, undersøges der, om den er første biti referencesignalet.

Når der søges efter den første bit, som altid er en høj, flyttes hver sample ind i databufferen,og der sammenlignes med referencesignalets første bit efter hver interrupt, se Figur 6.2. På denmåde opnås en løbende søgning, der sammenligner de 32 senest modtagede samples med en højbit i referencesignalet. Hvis disse samples ikke indeholder en høj bit, hentes én ny sample ogdatabufferens indhold rykkes, så den første kasseres, se Figur 6.3. Således fungerer databufferenefter First In First Out (FIFO) princippet.

Samples som binær udtryk

Samples som hex udtryk

Figur 6.3: Illustration af FIFO princippet ved søgning efter første bit

Processorens dataregistre kan indeholde fire bytes. Derfor sammenlignes databufferens indholdmed $1C000000, som svarer til en høj bit i referencesignalet. Det tillades, at kun to af tre sampleser høje, og derfor godkendes indholdet af databufferen også, hvis den indeholder $0C000000,hvilket svarer til, at den første af de tre høje samples er lav. Hvis den sidste af de tre højesamples i en høj bit er lav, vil der også stå $0C000000 i databufferen, da det binære signal

50

Page 63: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

6.3. Databehandling

000011000... vil blive registreret før 000110000..., og derfor sammenlignes der kun med det.Dermed er der en risiko for, at databehandlingen kan komme en sample foran i forhold til detsignal, der bliver sendt. Derfor sættes et sammenligningsflag, hvis den første genkendte bit beståraf to høje samples, således at der tages højde for dette ved sammenligning af signalets resterendehøje bits. Det er valgt fra gruppens side, at der ikke tillades støj på triggersignalet. Hverken påen høj eller en lav bit i triggersignalet.

Hvis den første bit findes, tælles bittælleren og referencepointeren op med en, og der ventes pånæste interrupt.

Når den første bit er fundet, er der blevet synkroniseret og der sammenlignes herefter på bitniveaui referencesignalet, når databufferen er fyldt med 32 samples. Når der søges efter en høj bit,sammenlignes databufferen med $1C000000, $0C000000 og $18000000 for at godkende en højbit. Hvis dette ikke medførte en godkendelse, undersøges det, om sammenligningsflaget er sat, seFigur 6.2, da der dermed skal tages højde for, at behandlingen kan være én sample foran. Hvisdette er tilfældet, skal databufferens indhold også godkendes, hvis det indeholder $38000000 eller$30000000, som svarer til, at $1C000000 og $18000000 er rykket én bit. Hvis en bit ikke blivergodkendt, skal der nulstilles og startes forfra med at søge efter det første bit. Ved nulstillingsættes bittælleren til 0, referencepointeren sættes til at pege på referencesignalets første bit,sampletælleren sættes til 0 og sammenligningsflaget sættes til 0.

Søgning efter en lav bit foregår på samme måde som ved søgning efter en høj bit. Men vedsammenligning, sammenlignes databufferens indhold kun med $00000000. Er indholdet ikke$00000000 nulstilles der igen, og der søges efter første bit. Ellers tælles bittæller og referen-cepointer op med en.

Assemblerkoden til Databehandling kan ses i Appendiks H på side 101.

6.3.1 Procestest af databehandling

Som beskrevet i kravspecifikationen skal et modtaget triggersignal kunne genkendes. Ydermereskal de syv givne testsignaler kunne skelnes fra hinanden. De syv testsignaler kan ses i AppendiksC Simuleret mobilenhed på side 81.

Testen udføres som beskrevet i Appendiks B Systemkravtestspecifikation på side 77, hvor til-standsflaget er sat til 1 under hele forløbet, så der kun modtages. Ydermere tælles antallet afgenkendte signaler op i et dataregister.

Det fremgår af resultaterne i Tabel 6.1, at det var muligt at skelne alle signaler fra hinandensamt at genkende de korrekte testsignaler. Dermed er kravene til databehandlingen overholdt.

Ved simulering af processen Databehandling i programmet 68000 IDE er det aflæst, at processenbruger ca. 550 clockcycles på at søge efter det første bit. Med den valgte samplingsfrekvens ogclockfrekvens på processoren er der ca. 833 clockcycles mellem hver interrupt. Dermed overholderDatabehandlingen kravet om, at kunne behandle data inden den næste interrupt.

51

Page 64: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

6 Softwaredesign

Referencesignal Testsignal

Signal 1 Signal 1 !

Signal 1 Øvrige %

Signal 2 Signal 2 !

Signal 2 Øvrige %

Signal 3 Signal 3 !

Signal 3 Øvrige %

Signal 4 Signal 4 !

Signal 4 Øvrige %

Signal 5 Signal 5 !

Signal 5 Øvrige %

Signal 6 Signal 6 !

Signal 6 Øvrige %

Signal 7 Signal 7 !

Signal 7 Øvrige %

Tabel 6.1: Resultater for procestest af behandling af data. ! er opnået ved overensstemmelse mellem antal sendteog godkendte signaler

6.4 Send signal

Processen Send signal aktiveres ved interrupt 4, når tilstandsflaget er 1. Ud fra funktionsbeskri-velsen i afsnit 6.1 Programdesign skal processen udføre følgende:

1. Afgøre om der skal sendes et signal eller ventes inden afsendelsen påbegyndes

2. Hvis der skal ventes afsluttes interruptrutinen uden der sendes

3. Hvis der skal sendes, skal det afgøres om der skal sendes en høj eller lav bit

4. Hvis der skal sendes en lav bit, sendes en lav sample

5. Hvis der skal sendes en høj bit, skal der sendes enten en høj eller en lav sample i henholdtil referencen for, hvordan en høj bit i svarsignalet skal se ud

Ovenstående funktionsbeskrivelse kan ses på flowdiagrammet på Figur 6.4.

Svarsignalet, der sendes til mobilenheden består af 512 samples, som tidligere beskrevet. Derforbenyttes to referencer til at bestemme, om den sample der skal afsendes, skal være høj eller lav:

• Svarsignal:Svarsignalet gemmes som bit, der enten er 1 eller 0, og gemmes som 1 byte i hukommelsen.

• Høj reference bit:De 32 samples, der udgør en høj bit, gemmes som 32 bytes, hvor 4., 5. og 6. byte harværdien 1, og resten har værdien 0.

52

Page 65: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

6.4. Send signal

Vent eller send signal?Ventetæller + 1

Er sampletæller

32?

Nulstil sampletæller. Bittæller +1

Er antallet af sendte bit 16?

Nulstil sampletæller, bittæller og ventetæller.

Sæt tilstandsflag til at modtage

Sendes der en høj eller en lav

bit i svarsignalet?

Skriv 0 til sendermodulet.

Sampletæller + 1

Send værdien af den sample som sampletælleren angiver i høj bit

referencen.Sample + 1

Vent

Send

Ja

Nej

Ja

Nej

Høj Lav

Retur fra proces

Start på proces

Figur 6.4: Flowdiagram over Send signal processen

Herved kræves kun 48 bytes til at gemme svarsignalet i, istedet for de 512 bytes det ville havekrævet, hvis hele signalet skulle gemmes som en lang række af bytes. Dette gør det også lettereat ændre en høj bit i svarsignal, hvis denne senere skal have en anden kodning. Det vil dog ikkeumiddelbart være muligt at ændre denne vha. Konfigurationsprocessen. Der lagres ikke en lavreference bit, da alle samples her er lave. I processen benyttes følgende adresse- og dataregistre:

• D1: Sampletæller. Angiver hvilken sample, der sendes. Sampletælleren har en værdi mellem0 og 31, da den nulstilles når der er afsendt 1 bit i svarsignalet.

• D2: Bittæller. Angiver hvilken bit i svarsignalet, der sendes. Bittælleren har dermed enværdi mellem 0 og 15.

• D3: Ventetid. Hvis der skal ventes, lægges der 1 til dette dataregister, indtil registeret harsamme værdi som ventetiden specificeret af brugeren.

• A1: Adresse på den sample der afsendes, når der afsendes en sample af en høj bit i svar-signalet.

• A2: Adresse på svarsignalet. Registeret peger på den bit, der sendes en sample af. Registeretbenyttes til at afgøre, om der skal sendes en sample af en høj eller en lav bit i svarsignalet.

53

Page 66: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

6 Softwaredesign

I henhold til Figur 6.4 skal det først afgøres, om der skal sendes et svarsignal, eller om derskal ventes inden svarsignalet udsendes. Dette udføres ved at tælle antallet af interrupts ogsammenligne med ventetiden angivet af brugeren. Først når der har været et antal interruptssvarende til ventetiden angivet af brugeren, påbegyndes afsendelsen af signalet.

Når ventetiden er overstået, kontrolleres det, om antallet af sendte samples er 31, og hvis det ertilfældet, nulstilles sampletælleren og bittælleren tælles op med 1. Derefter kontrolleres det, omantallet af sendte bits i svarsignalet er 16. Hvis dette er tilfældet, nulstilles sampletæller, bittæller,interrupttæller, adresseregistre og tilstandsflaget sættes til at modtage ved næste interrupt 4.

Såfremt signalet ikke er afsendt, skal det undersøges, om der skal sendes en sample af en høj elleren lav bit i svarsignalet. Dette gøres vha. bittælleren og svarsignalet i hukommelsen. Afhængigtaf om der skal sendes en sample af en høj eller en lav bit, springes til den rutine, der afsender ensample af en høj bit eller en lav bit.

Rutinen, der afsender en høj bit i svarsignalet, benytter høj bit referencen og sampletællerentil at undersøge, om den aktuelle sample skal være høj eller lav. Sampletælleren lægges til denadresse, hvor høj bit referencen er gemt, og indholdet af adressen angiver, om samplen skal værehøj eller lav. Indholdet skrives til sendermodulet, og sampletælleren tælles op med 1.

Ved afsendelse af en lav bit er alle samples lave. Derfor skrives der 0 til sendermodulet, ogbittælleren tælles op med 1.

Assembler koden for Send signal kan ses i Appendiks H Assembler kode på side 101.

6.4.1 Procestest af send signal

Processen Send signal testes som beskrevet i Appendiks B Systemkravtestspecifikation på side 77.Signalet, der sendes, skal være i overensstemmelse med signalkodningen. Desuden skal signalet,der sendes, være i overensstemmelse med det ønskede svarsignal.

Ud fra den ønskede bitkodning af et signal samt afvigelsen på ±1 sample over et helt signal kanafvigelsen i antal samples, n, udregnes.

1fbit

=512 + n

512· 1fs· 32 (6.1)

n =fs · 512fbit · 32

− 512 (6.2)

Hvor fs er samplingsfrekvensen. Bitfrekvensen, fbit = 299,9 Hz, blev målt mellem to høje bits iet sendt signal. Indsættes dette i ovenstående udtryk fås.

n =9600 Hz · 512299, 9 Hz · 32

− 512 (6.3)

n = 0, 17 (6.4)

På Figur 6.5 ses det udsendte signal sammenholdt med det simulerede svarsignal med den valgtebitkodning.

54

Page 67: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

6.5. Konfiguration af vægenhed

0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04 0.045 0.05-1

0

1

2

3

4

5

6Simuleret svarsignal

Tid [s]

Spæ

ndin

g [V

]

0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04 0.045 0.05-1

0

1

2

3

4

5

6Målt svarsignal

Tid [s]

Spæ

ndin

g [V

]

Figur 6.5: Resultat af måling på udsendt svarsignal sammenholdt med det simulerede svarsignal

Som det ses, stemmer det udsendte signal overens med det simulerede svarsignal. Hermed erkravene om korrekt bitkodning og maksimal sampleafvigelse overholdt.

6.5 Konfiguration af vægenhed

Denne proces aktiveres, når der sendes data til vægenheden via RS232 forbindelsen. Processenstartes når processoren modtager et interrupt 5. Efter processen er aktiveret, ignoreres interrupt5, og der anvendes istedet polling til at hente data fra ACIA kredsen. Et flowdiagram overprocessen ses på Figur 6.6.

Ved interrupt 5 skal konfiguration af vægenhed udføre følgende:

1. Hvis indlæs data vælges, skal brugeren indtaste det nye referencesignal, svarsignal ellerventetid. Disse data lagres i hukommelsen

2. Hvis udlæs data vælges, udlæses referencesignal, svarsignal og ventetid fra hukommelsentil pc’en

Processen opdeles i fem moduler:

• Initialisering af ACIA

• Send/modtag ASCII koder fra RS232 forbindelse

• Kontrollér kommando

55

Page 68: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

6 Softwaredesign

• Udlæs konfiguration

• Indlæs konfiguration

Modulet Initialisering af ACIA foretages i processen Initialisering af vægenhed og beskrives derforikke nærmere. Det vælges at bruge et terminalprogram på en pc til at skrive og læse tegn. Et ter-minalprogram fungerer ved at det sender og modtager ACSII værdier. I processen Konfigurationaf vægenhed benyttes følgende data- og adresseregistre:

• D0: Karakterbuffer. Indeholder de ASCII værdier, der bliver modtaget og skal sendes viaRS232 forbindelsen

• A2: Pointer til adressebuffer. Peger på den adresse næste karakterer der modtages, skalgemmes på

• A3: Adressepointer for parametrene reference- og svarsignal samt ventetid, der er gemt ihukommelsen

• A4: Adressepointer for ventetiden angivet i hexadecimal

• A7: Stackpointer

Send/modtag en byte gennem RS232 forbindelse

Når der skal sendes en byte gennem RS232 forbindelsen til pc’en, skal det først undersøges, omACIA kredsen er klar til at sende. Dette gøres ved at sammenligne TDRE i ACIA kredsensstatusregister med et 1 tal. Dette indikerer, om send data registeret er tomt. Hvis det ikke ertomt, køres en løkke, der står og kontrollerer, om det er tomt. Når det er tomt, skal data flyttestil ACIA kredsens send data register, og ACIA kredsen sender herefter byte’en. Det vælges atdataene, der skal sendes via RS232 forbindelsen, først lagres i D0.

Når der skal modtages en byte, undersøges det, om modtag data registeret er fyldt. Dette gøresved at sammenligne RDRF i ACIA kredsens statusregister med et 0. Er receive data registeretfyldt, overføres denne byte til D0.

Kontrollér kommando

For at kunne kontrollere indtastede kommandoer, lægges hver karakter ind i en inputbuffer.Der benyttes et adresseregister, A2, til at pege på inputbufferen, som ligger på adresse $42000.Adresseregisteret tælles op for hver modtaget karakter, og det er derefter muligt at se, hvad detforrige indtastede var. Når konsollen skal modtage ASCII koder fra hyper terminalen, sættesinputbuffer, adresseregister A2, til $42000. Hver gang der er modtaget en ASCII kode, lægges1 til A2. Efter hver modtagen ASCII kode undersøges det, om denne er ’ENTER’. Hvis det ertilfældet, skal det undersøges, om der er indtastet enten ”load”, ”read” eller ”exit”. Hvis A2 minus1 ikke er karakteren ’d’, springes der til en ny rutine, der undersøger om det er et ’t’. Hvis det

56

Page 69: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

6.5. Konfiguration af vægenhed

Skriver ”Menu”

Henter indtastet

tegn

Trykket return?

Nej

Ja

Tastet ”load”?

Skriver:1: ref2: ans3: time

Ja

Nej

Henter indtastet

tegn

Trykket return?

Nej

Ja

Tastet ”1”?

Nej

Ja

Henter indtastet

referencesignal

Tastet ”2”?

Henter indtastet

svarsignal

Ja

Tastet ”3”?

Nej

Ja

Henter indtastet vente tid

Nej

Skriver ”Invalid

command”

Tastet ”read”? Ja

Udskriver parametrene:

refAnstime

Tastet ”exit”?

Nej

Ja

Nej

Skriver ”Invalid

command”

main

Start proces

Trykket ESC?

Nej

Ja

Figur 6.6: Flowdiagram over processen Konfiguration af vægenhed

er tilfældet undersøges, om det før er ’i’ osv. Hvis karakteren før ’ENTER’ var et ’d’ undersøgesdet om det før er ’a’ osv.

Hvis der indtastes en kommando, som ikke er enten ”load”, ”read” eller ”exit”, springes til rutinenUgyldig kommando. Denne rutine skriver ”Invalid Command”, og brugeren får derefter mulighedfor at indtaste en ny kommando da der springes tilbage til menuen.

57

Page 70: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

6 Softwaredesign

Udlæs konfiguration

De indlæste parametre er gemt fra adresse $43000 til $4302B. De to parametre, ref. og svar,fylder hver 16 byte, mens tiden er lagret to steder; et sted som hexværdi og i et midlertidigt lagersom indeholder de indtastede cifre.

Ved udlæsning af ref. og svar kopieres $43000 ind i adresseregister A3. Derefter udskrives det A3peger på og A3 tælles op med 1. Det A3 nu peger på udskrives og tælles igen op med 1 osv. Nårref. er udskrevet hoppes videre til svar og derefter til tid.

Indlæs konfiguration

Når der indtastes ”load” i menuen, får brugeren valget om at indtaste parameter for ref., svar ogtid, samt at gå tilbage til menuen. Ref. vælges ved at taste 1, svar ved at taste 2, tid ved at taste3 og for at gå tilbage til menuen skal brugeren trykke ’ESC’.

Først kontrolleres om den sidst indtastede karakter er ’ESC’. Hvis dette ikke er tilfældet, kon-trolleres om det er ’ENTER’. Hvis der er trykket ’ENTER’, kontrolleres om der er tastet enten”1”, ”2” eller ”3”.

Parametrene, ref og svar, indtastes i hyper terminalen som et 16 bit word bestående af 0 og 1,alle andre karakterer udelukkes. Første bit af ref. lagres på adresse $43000, næste bit lagres på$43001 osv. Når de 16 bit er indtastet springes tilbage til menuen.

Proceduren er den samme for svar, bortset fra at det 16 bit word lagres fra $43010.

Ved indlæsning af ventetiden, skal det indlæste konverteres til hex og lagres som et word på$43020. Desuden skal de indlæste tal forblive lagret, som deres ASCII værdier fratrukket $30,fra adresse $43024. Desuden tillades alle tal fra 0-9 og ikke kun 0 og 1, som ved reference- ogsvarsignal.

Assemblerkoden for konfiguration af vægenhed kan ses i Appendiks H Assembler kode på side101.

6.5.1 Procestest af konsolprogram

Konsolprogrammets funktionalitet testes jf. systemkravtestspecifikationen, der ses i AppendiksB Systemkravtestspecifikation på side 77.

Udlæsning af standardkonfiguration

I denne test sikres det først, at indlæste standardværdier for hhv. reference- og svarsignal samtventetid er placeret i hukommelsen på de ønskede adresser. Dette gøres jf. acceptspecifikationenmed TS2 debugger/monitor. På Figur 6.7 ses de standardværdier, der er indlæst i vægenheden.

På Figur 6.7c angiver xx indholdet af de adresser i hukommelsen, der ikke benyttes. På disse

58

Page 71: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

6.5. Konfiguration af vægenhed

Adresse: $43000 $4300FVærdi: 01 00 01 01 00 01 01 01 00 01 00 00 00 01 01 01

(a) Indlæst referencesignal

Adresse: $43010 $4301FVærdi: 01 01 01 00 00 00 00 00 01 01 01 01 00 00 00 01

(b) Indlæst svarsignal

Adresse: $43020 $4302FVærdi: 02 00 xx xx 00 05 01 02 xx xx xx xx xx xx xx xx

(c) Indlæst ventetid

Figur 6.7: Indlæste standardværdier, (a) Referencesignal, (b) Svarsignal, (c) Ventetid

adresser vil der således være tilfældig data.

Ved udlæsning af hukommelsen med TS2 debugger/monitor, ses de forventede bytes på de for-ventede adresser, og udlæsningsmodulet kan nu testes. På Figur 6.8 ses teksten i konsollen underudlæsning af konfigurationen.

MENU:readRef: 1011011101000111Ans: 1110000111100001Time: 0512

MENU:

Figur 6.8: Udlæsning af konfiguration via konsol

Da det udlæste er lig standardværdierne er konsolprogrammet i stand til at udlæse korrekt data.

59

Page 72: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

6 Softwaredesign

Indlæsning af konfiguration

Der indlæses et referencesignal, svarsignal samt en ventetid, som efterfølgende kontrolleres ihukommelsen vha. TS2 debugger/monitor. Dette gøres ved brug af MEM-kommandoen, somlister indholdet af adresser. Figur 6.9 viser indlæsning i konsollen i venstre spalte samt denudlæste hukommelse via TS2 debugger/monitor vist i højre spalte.

Indlæsning af konfiguration:

MENU:load1: Ref.2: Ans.3: TimeESC: MENU1Ref. 1101111000101110

MENU:load1: Ref.2: Ans.3: TimeESC: MENU2Ans. 1110001011101101

MENU:load1: Ref.2: Ans.3: TimeESC: MENU3Time. 0000

MENU:

Kontrol via TS2:

#MEM 43000##00043000 0101 + <- ref.signal start#00043002 0001 +#00043004 0101 +#00043006 0100 +#00043008 0000 +#0004300A 0100 +#0004300C 0101 +#0004300E 0100 +#00043010 0101 + <- svarsignal start#00043012 0100 +#00043014 0000 +#00043016 0100 +#00043018 0101 +#0004301A 0100 +#0004301C 0101 +#0004301E 0001 +#00043020 0000 + <- ventetid i hextal#00043022 2F29 +#00043024 0000 + <- ventetid i decimaltal#00043026 0000 + <- repræsenteret ved bytes#00043028 4751 +#0004302A 2F6F +#0004302C 4F2F +#0004302E 7B0F

Figur 6.9: Indlæsning af konfiguration via konsol. Til venstre: Indlæst konfiguration. Til højre: Verificering viaTS2 debugger/monitor

Som det ses af udlæsningen af data via TS2 debugger/monitor, er der overensstemmelse mellemhukommelse og indlæst konfiguration, og indlæsningsmodulet virker dermed som ventet.

60

Page 73: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

6.5. Konfiguration af vægenhed

Udlæsning af indlæst konfiguration

Sidst verificeres at en indlæst konfiguration kan udlæses via den tidligere verificerede udlæsnings-procedure.

Denne test er udført i forlængelse af test af indlæsningsrutinen. Det er dermed også sammeværdier, som netop indlæst, der udlæses.

På Figur 6.10 ses udlæsningen af konfigurationen via konsollen.

MENU:readRef: 1101111000101110Ans: 1110001011101101Time: 0000

MENU:

Figur 6.10: Udlæsning af indlæst konfiguration via konsol

Da de udlæste værdier stemmer overens med de indlæste værdier, kan det konstateres, at kon-solprogrammet virker efter hensigten.

61

Page 74: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

6 Softwaredesign

62

Page 75: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Kapitel 7Accepttest

Accepttesten udføres som beskrevet i Appendiks A Accepttestspecifikation på side 73. Testenudføres for at verificere at kravene opstillet i afnit 2 Kravspecifikation på side 3 overholdes. Førsttestes de primære brugerkrav og derefter de sekundære.

Til at udføre testen benyttes en simuleret mobilenhed. Denne mobilenhed består af en testsenderog et modtagermodul, der modtager svarsignalet fra vægenheden, og forstærker det op. Densimulerede mobilenhed er beskrevet nærmere i Appendiks C Simuleret mobilenhed på side 81.

7.1 Test af primære brugerkrav

De primære brugerkrav, der verificeres, er beskrevet i Kapitel 2 Kravspecifikation på side 3.

7.1.1 Vægenhedens respons ved korrekt triggersignal

Den simulerede mobilenhed udsender et infrarødt triggersignal med et kendt bitmønster. Væ-genheden skal modtage dette triggersignal, sammenligne det med et referencesignal og efter enventetid på 512 samples sende et svarsignal. Den simulerede mobilenhed skal detektere dettesvarsignal.

Ud fra måleproceduren i afsnit D Testjournal på side 85 måles signalerne, og disse kan ses påFigur 7.1. Det ses, at svarsignalet detekteres af mobilenheden efter den bestemte ventetid. Ven-tetiden er på et oscilloskop målt til 512,3 samples.

Det bemærkes, at svarsignalets offsetniveau ligger højere end ved test af modtagermodulet iafsnit 5.3 Test af sender- og modtagermodul på side 44, hvor dette er beskrevet nærmere. Dettevil også gøre sig gældende i de efterfølgende tests.

63

Page 76: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

7 Accepttest

0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.20.5

1

1.5

2

2.5

3

3.5

4

4.5

5

5.5

Tid [s]

Spæ

ndin

g [V

]

Triggersignal

Svarsignal

Figur 7.1: Måling af testsignaler på den simulerede mobilenhed. Øverste kurve er spændingen på anoden afsenderdioden, og nederste kurve er spændingen ud af modtageren.

7.1.2 Vægenhedens respons ved ukorrekt triggersignal

Den simulerede mobilenhed skal udsende et triggersignal, der ikke stemmer overens med detreferencesignal, der er gemt i vægenheden. Ventetiden er stadig 512 samples. Da triggersignaletog referencesignalet ikke er ens, skal vægenheden derfor ikke udsende et svarsignal.

0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.20.5

1

1.5

2

2.5

3

3.5

4

4.5

5

5.5

Tid [s]

Spæ

ndin

g [V

]

Triggersignal

Svarsignal

Figur 7.2: Måling af testsignaler på den simulerede mobilenhed. Øverste kurve er spændingen på anoden afsenderdioden, og nederste kurve er spændingen ud af modtagermodulet.

Det ses på Figur 7.2, at der ikke udsendes et svarsignal, når det tilsendte signal ikke er ligreferencen.

Ud fra ovenstående to tests kan det konstateres, at følgende krav i kravspecifikationen overholdt:PBK01, PBK02, PBK03, PBK04 og PBK05.

64

Page 77: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

7.2. Test af sekundære brugerkrav

7.1.3 Vægenhedens respons ved ændrede parametre

Der indlæses nye parametre for referencesignal, svarsignal og ventetid i vægenheden. Den simu-lerede mobilenhed skal udsende et triggersignal svarende til vægenhedens nye referencesignal, ogdet nye svarsignal skal sendes til mobilenheden.

Efter ændring af referencesignal, svarsignal og ventetid fungerer vægenheden efter hensigten. Denudsender det nye svarsignal, når det tilsendte triggersignal er lig referencesignalet, og den nyeventetid fungerer ligeledes. Derfor er dette krav overholdt.

Det testes ligeledes, hvorvidt den simulerede mobilenheds øvrige triggersignaler kan godkendesmed tilsvarende referencesignaler indlæst i vægenheden. I afsnit 6.3 Databehandling på side 52kan det i Tabel 6.1 ses, at alle triggersignaler kan godkendes under procestesten af Databehandlingprocessen.

De tre parametre, referencesignal, svarsignal og ventetid, i vægenheden udlæses i et konsolpro-gram.

De udlæste parametre var lig de indlæste i ovenstående punkt.

Dermed er følgende krav i kravspecifikationen overholdt: PBK06, PBK07, PBK08, PBK09,PBK10, og PBK11.

7.2 Test af sekundære brugerkrav

De sekundære brugerkrav der testes, er beskrevet i Kapitel 2 Kravspecifikation side 3.

7.2.1 Krav til afstand og vinkel

Under test af de sekundære brugerkrav benyttes testproceduren fra de primære brugerkrav, hvorder yderligere stilles krav til følgende:

1. 0,5 m mellem vægenheden og den simulerede mobilenhed, samt vinkel på 0

2. 10 m mellem vægenheden og den simulerede mobilenhed, samt vinkel på 0

3. 0,5 m mellem vægenheden og den simulerede mobilenhed, samt vinkel på 90

4. 10 m mellem vægenheden og den simulerede mobilenhed, samt vinkel på 90

Ved en afstand på ca. 30 cm kan der ikke længere registreres et signal fra den simulerede mobilen-hed i vægenhedens modtager, og vægenheden overholder derfor ikke ovenstående krav. Sender-og modtagermodulerne i vægenheden og den simulerede mobilenhed er konstrueret ens hvilketmedfører, at samme problem opstår, når der sendes fra vægenheden til mobilenheden. Dermedoverholder vægenheden ikke følgende sekundære brugerkrav: SBK01, SBK02 og SBK03.

65

Page 78: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

7 Accepttest

For at kunne overholde de sekundære brugerkrav, skal der designes nyt hardware. Dette kræverbl.a. en anden type IR-diode, da den anvendte er specificeret til en strøm gennem dioden påmaksimal 1 A ved den anvendte duty cycle. Modtagermodulerne skal kunne filtrere støj fra,så grænsen for ’lav’-niveau i software kan sættes ned. Der skal ligeledes være DC-adskillelseefter modtagerdioden, så påvirkning fra baggrundsbelysning elimineres. Der kan desuden evt.implementeres støjfiltrering i softwaren.

66

Page 79: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Kapitel 8KonklusionDette projekt omhandler konstruktionen af en vægenhed til et indendørs positioneringssystem.Vægenhedens opgave er at afvente et infrarødt triggersignal fra en mobilenhed, hvorpå der skaludsendes et svarsignal. Signalet der modtages, sammenlignes i vægenheden med et reference-signal, og er disse ens, udsendes et svarsignalet til mobilenheden efter en forudbestemt tid.Vægenhedens opgave er dermed, at kunne modtage, genkende og udsende et infrarødt signal.Desuden skal det være muligt at ændre referencesignalet, svarsignalet og ventetiden via en pc.

Udgangspunktet for dette projekt er et minimumssystem baseret på en Motorola 68000 mikro-processor. Minimumssystemet udgør en platform for de hardwaremoduler, der skal tilføjes, for atkunne opfylde kravene til vægenheden. Dette er konstrueret således, at kravene for udviklings-værktøjet TS2 debugger/monitor overholdes.

Det konstruerede minimumssystem er delvist interruptstyret, idet vægenhedens sende- og mod-tagefunktioner er styret af en oscillator, der generer interrupt med samplingsfrekvensen 9,6 kHz.Modtagelse og afsendelse af signaler sker gennem dertil konstruerede moduler. Signalerne derbehandles i vægenheden, har en længde af 16 bit, hvor hver bit består af 32 samples. Konfigu-ration af vægenheden sker gennem en implementeret RS232 forbindelse, hvortil der benyttes etterminalprogram på en pc.

Det konstruerede minimumssystem er afprøvet med TS2 debugger/monitor, hvorved det blevkonstateret, at det virkede. Sender- og modtagermodulerne er konstrueret og testet separat,hvilket resulterede i, at modtagermodulet blev testet med et forkert signal. Modtagermoduletblev modificeret således, at det var muligt at udføre en accepttest for de primære brugerkrav.Resultatet af modifikationen blev, at baggrundsbelysningen ikke blev filtreret fra som før mo-difikationen. Ved de små afstande der testes ved, er dette ikke en begrænsning i forhold til deprimære krav, men bevirker, at de sekundære brugerkrav ikke kan overholdes. De primære bru-gerkrav er krav til funktionaliteten af vægenheden, mens de sekundære brugerkrav omhandlerafstande og vinkler mellem vægenhed og mobilenhed.

Den konstruerede vægenhed er testet med syv forskellige triggersignaler og er i stand til atskelne alle signalerne fra hinanden. Under testen sendte vægenheden derefter et svarsignal, deroverholdte kravet til dette. Ydermere er kravet til ventetiden overholdt. Det er ligeledes muligtat ind- og udlæse parametre fra en pc til vægenheden via en RS232 forbindelse. Herved er deprimære krav til vægenheden overholdt.

67

Page 80: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

8 Konklusion

68

Page 81: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Kapitel 9Udvidelsesmuligheder

I dette kapitel beskrives nogle af de udvidelsesmuligheder og forbedringer, gruppen har overvejetmen ikke implementeret.

9.1 Software

Ud over at optimere koden således det er muligt at genkende triggersignalet med færre clockcycles,har gruppen overvejet følgende:

Filtrering

Ved at lave en filtrering i softwaren vil det være muligt at skelne høje samples bedre fra lavesamples. En sådan filtrering kunne være, at implementere en varierende grænse for, hvornår ensample er høj eller lav. En måde at gøre dette på, kunne for eksempel være at finde en middelværdifor de sidste 64 samples. Grænsen for hvornår der skelnes mellem en høj og en lav sample placeressåledes lidt over denne middelværdi. Dermed vil det være af mindre betydning om amplituden udaf modtagermodulet er 1, 2 eller 3 V, blot signalerne er højere end den udregnede middelværdi.

Tillade støj i triggersignalet

Ved at tillade støj gøres tolerancen for triggersignalet større. Dette dækker over, at systemetskal kunne tillade enkelte høje samples i triggersignalet, hvor der skulle have været lave samples.Som genkendelsessoftwaren er bygget op nu, tillades ingen høje samples, når der skal modtagesen lav bit. Udover de tre samples der skal være høje i en høj bit, tillades der heller ikke andrehøje samples.

69

Page 82: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

9 Udvidelsesmuligheder

9.2 Hardware

Denne del af kapitlet beskriver udvidelsesmuligheder i hardwaren. Ud over at øge sendestyrkeni sendermodulet og forstærkningen i modtagermodulet, kan ligeledes laves en filtrering af detmodtagne signal i modtagermodulet.

Varierende sendestyrke

En udvidelsesmulighed kunne være, at sendestyrken varieres således sendermodulet i vægenhe-den ikke lyser så kraftigt, når mobilenheden er tæt på vægenheden. Sendestyrken kunne justeresud fra hvor kraftigt et signal, der modtages fra mobilenheden, således at ved et svagt trigger-signal, udsendes et kraftigere svarsignal. Fordelen ved at kunne sende med svag sendestyrke er,at mobilenhedens modtagermodul ikke vil gå i mætning, når den er tæt på vægenheden. Enanden fordel ved varierende sendestyrke er, at der kan laves større forstærkning i mobilenhedensmodtagermodul, så denne kan modtage et svarsignal i en større afstand.

Højere clockfrekvens til processoren

Såfremt processorens clockfrekvens øges, kan der udføres flere instruktioner mellem hvert inter-rupt 4, og dermed kan samplingsfrekvensen muligvis øges. Med den nuværende software er detikke muligt at øge samplingsfrekvensen i modtagermodulet uden at skulle øge clockfrekvensen.Øges processorens clockfrekvens, kan der dog opstå problemer med timingen mellem processorenog de perifere enheder.

70

Page 83: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Litteraturliste

[AMD, 1995]Advanced Micro Devices AMD: Am29F010.Advanced Micro Devices, 1995URL: http://www.farnell.com/datasheets/5830.pdfNote: Datablad

[Clements, 1997]Clements, Alan: Microprocessor Systems Design.PWS Publishing Company, 20 Park Plaza; Boston, MA 02116, 1997ISBN: 0-534-94822-7Note: Third edition

[Corporation, 2004]National Semiconductor Corporation: ADC0820 8-Bit High Speed ìP Compatible A/D Con-verter with Track/Hold Function.National Semiconductor Corporation, 2004URL: http://cache.national.com/ds/DC/ADC0820.pdfNote: Datablad

[Hitachi, 1994]Hitachi: HM628512 Series 524288-word x 8-bit High Speed CMOS Static RAM.Hitachi, Ltd., Semiconductor & Integrated Circuits, Nippon Bldg., 2-6-2, Ohte-machi,Chiyoda-ku, Tokyo 100-0004, Japan, 1994URL: http://www.chipcatalog.com/Datasheet/0B6659869B1E72F80DC5A69B128DD471.htmNote: Datablad

[ICT, 2004]ICT: PEEL 22CV10A-7/-10/-15/-25.ICT, Anachip Corp., 2F, No. 24-2, Industry E. Rd. IV, Science-Based,Industrial Park, Hsinchu,300, Taiwan, 2004URL: http://www.anachip.com/eng/product/search/datasheets/PEEL22CV10A.pdfNote: Datablad

[Instruments, 2003]Texas Instruments: TL7705 Supply Voltage Supervisors.Texas Instruments, Post Office Box 655303; Dallas - Texas 75265, 2003

71

Page 84: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Litteraturliste

URL: http://focus.ti.com/lit/ds/symlink/tl7705a.pdfNote: Datablad

[Komponenten, 1993]TQ Elektronik Komponenten: TTL Quartz Crystal Oscillators.TQ Elektronik Komponenten GMBH, Landstrasse; D-6924 Neckarbischofsheim, 1993Note: Datablad

[Motorola, 1993]Motorola: M68000 8-/16-/32-Bit Microprocessors Users Manual; Ninth edition.Motorola INC., 1993URL: http://acoustics.aau.dk/fc/mikro/MC68000UM.pdfNote: Manual til Motorola 68000 processor

[Philips, 1990]Philips: 74HC/HCT03.Koninklijke Philips Electronics N.V., The Netherlands, 1990URL: http://www.standardics.philips.com/products/hc/pdf/74hc03.74hct03.pdfNote: Datablad

[Philips, 2005]Philips: 74HC4040.Koninklijke Philips Electronics N.V., The Netherlands, 2005URL: http://www.semiconductors.philips.com/acrobat/datasheets/74HC_HCT4040_3.pdfNote: Datablad

[Semiconductors, 1994]Motorola Semiconductors: MC6850.Motorola Ltd., European Literature Center, 88 Tanners Drive, Blakelands, Milton Keynes,MK14 5BP, England, 1994URL: http://www.ortodoxism.ro/datasheets/motorola/MC6850.pdfNote: Datablad

[Statsgeodæt Per Knudsen & Landinspektør Casper Jepsen, 2000]Statsgeodæt Per Knudsen & Landinspektør Casper Jepsen, Kort & Matrikelstyrelsen: Posi-tionsbestemmelse med GPS er blevet mere nøjagtig.Dansk Selskab for Rumfartsforskning, Dansk Selskab for Rumfartsforskning, Postboks 31, K-1002 København K, 2000URL: http://www.rumfart.dk/vis.asp?artikelid=78Note: Hentet 01-03-2006

[Wakerly, 2002]John F. Wakerly: Digital Design.Cisco Systems, Inc. Stanford University, 2002ISBN: 0-13-090772-3

72

Page 85: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Appendiks AAccepttestspecifikation

Acceptestspecifikationen udarbejdes med henblik på, at kunne udføre en acceptest, der tester, omkravene opstillet i Kapitel 2 Kravspecifikation på side 3 er overholdt. Accepttestspecifikationendeles op i primære og sekundære brugerkrav.

Primære brugerkrav

Acceptesten af de primære krav verificeres ved brug af en simuleret mobilenhed. Den simuleredemobilenhed er beskrevet i Appendiks C Simuleret mobilenhed på side 81.

Modtagermodulet i den simulerede mobilenhed er koblet til et oscilloskop, så det kan ses omvægenhedens svarsignal, er som det ønskede. Accepttesten af de primære brugerkrav udføresuden krav til afstand og vinkel.

Vægenhedens respons ved korrekt triggersignalDer laves en opstilling, hvor den simulerede mobilenhed er placeret ca. 10 cm fra vægenheden.

1. Den simulerede mobilenhed udsender et triggersignal magen til referencesignalet i vægen-heden

2. Den simulerede mobilenhed registrerer svarsignalet fra vægenheden efter den ønskede ven-tetid

Accept:Den simulerede mobilenhed modtager et korrekt svarsignal til den ønskede svartid med en tole-rance på ±1 sample.

Vægenhedens respons ved ukorrekt triggersignalDer anvendes sammen opstilling som i første test. Denne test udføres for at verificere, at der kunsendes svarsignal ved modtagelse af et korrekt triggersignal.

73

Page 86: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

A Accepttestspecifikation

1. Den simulerede mobilenhed udsender et signal, der er forskellig fra referencesignalet i væ-genheden

2. Den simulerede mobilenhed registrerer ikke et svarsignal fra vægenheden

Accept:Den simulerede mobilenhed modtager ikke et svarsignal. Ved accept af de to ovenstående testser følgende krav i kravspecifikationen overholdt: PBK01, PBK02, PBK03, PBK04 og PBK05.

Vægenhedens respons ved ændrede parametreDer anvendes samme opstilling som i de to første test. Testen udføres for at verificere, at der kansendes nye parametre til vægenheden via en RS232 forbindelse, og disse kan anvendes. Desudenskal der kunne modtages parametre fra vægenheden.

1. Nye data for referencesignal, svarsignal og ventetid sendes til vægenheden

2. De to ovenstående tests af de primære brugerkrav gentages

3. Referencesignalet, svarsignalet og ventetiden sendes til pc’en, og sammenlignes med designaler, der blev sendt i punkt 1

Accept:Der kan sendes et nyt referencesignal, svarsignal og en ny ventetid, og vægenheden fungererkorrekt med de nye signaler. Desuden skal de gemte data, der udlæses i punkt 3 være magentil de signaler, der er indlæst i punkt 1. Såfremt vægenheden overholde ovenstående tests, erde følgende primære brugerkrav overholdt: PBK01, PBK02, PBK03, PBK04, PBK05, PBK06,PBK07, PBK08, PBK09, PBK10 og PBK11.

Sekundære brugerkrav

Accepttesten til de sekundære krav opstilles udfra de sekundære krav opgivet i afsnittet 2 Krav-specifikation på side 3. Testen af de sekundære brugerkrav udføres ved, at udføre den første testunder Primære brugerkrav fire gange, hvor nedenstående betingelser opfyldes en af gangen.

Modtage og sende signal af vægenheden med krav til afstanden og vinkelen.

1. Accepttesten udføres i en afstand på 0,5 m mellem vægenheden og den simulerede mobi-lenhed, i en vinkel på 0 ifht. vinkelret på den flade, hvorpå vægenheden er monteret

2. Accepttesten udføres i en afstand på 10 m mellem vægenheden og den simulerede mobilen-hed, i en vinkel på 0 ifht. vinkelret på den flade, hvorpå vægenheden er monteret

3. Accepttesten udføres i en afstand på 0,5 m mellem vægenheden og den simulerede mobi-lenhed, i en vinkel på 90 ifht. vinkelret på den flade, hvorpå vægenheden er monteret

4. Accepttesten udføres i en afstand på 10 m mellem vægenheden og den simulerede mobilen-hed, i en vinkel på 90 ifht. vinkelret på den flade, hvorpå vægenheden er monteret

74

Page 87: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Accept:Den simulerede mobilenhed modtager et korrekt svarsignal fra vægenheden, når der afsendeset triggersignal magen til referencesignalet, i alle fire tilfælde. Dermed er følgende sekundærebrugerkrav opfyldt SBK01, SBK02 og SBK03.

75

Page 88: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

A Accepttestspecifikation

76

Page 89: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Appendiks BSystemkravtestspecifikation

Systemkravtestspecifikationen udarbejdes for at verificere systemkravene, opstillet i afsnit 2 Krav-specifikation på side 3, kan overholdes. I dette appendiks beskrives testprocedurerne for system-kravene, da der ikke udføres en målejournal for disse.

Hardware

1. Modtager

HSK01: Signalet skal samples med en frekvens på 9,6 kHz

Testprocedure:Dette krav betragtes som designkrav og testes gennem den software, der anvender detdesignede hardware.

2. Sender

HSK02: Der skal kunne sendes samples med 9,6 kHz, således at der sendes samples medsamme frekvens som der modtages iht. HSK01

Testprocedure:Dette krav betragtes som designkrav og testes gennem den software, der anvender detdesignede hardware.

Hardwaren testes dog ved brug af testsoftware, der anvender de designede moduler, ved atmodtage en sendt sample. Proceduren er som følger.

Testprocedure:

1. Driveren til sendertrinet forbindes direkte til ADC’en. Derved kan den spænding driverenleverer til sendertrinet læses fra ADC’en.

2. Et testprogram skrevet i assembler eksekveres.Testprogrammet er vedlagt på CD (/hardware/testprogrammer/IRTest.asm).

77

Page 90: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

B Systemkravtestspecifikation

3. Data indlæst i hukommelsen udlæses vha. TS2 debugger/monitor, og bør skiftevis være$FF og $00 svarende til en høj og en lav sample.

Det anvendte testprogram er interruptstyret. Når der ikke behandles interrupt udføres komman-doen ’NOP’ (no operation) i en uendelig løkke. Ved interrupt 4 startes en interruptrutine, derskifter mellem at sende og modtage data. Det vil sige, at der sendes data første gang der kommerinterrupt 4, og at der modtages data næste gang, der kommer interrupt 4. Når der sendes skiftesder desuden mellem at sende hhv. en høj og en lav sample. Ved modtagelse gemmes data fraADC’en i en ringbuffer i hukommelsen.

Software

1. Databehandling

SSK01: Softwaren skal sample et signal bestående af 512 samples fra den infrarøde mod-tager. Dette kommer af brugerkravene om et 16 bit signal hvor hver bit samples 32 gange(PBK05)

Testprocedure:Indirekte testet ved accept af SSK02, idet signaler ikke kan genkendes hvis ikke softwarenkan behandle et signal bestående af 512 samples da modtagne signaler har netop dennekodning.Accept:SSK02 skal overholdes for at dette krav er overholdt.

SSK02: Et korrekt modtaget testsignal skal kunne genkendes og skelnes fra andre signaler.Ved en høj bit i et signal tillades at første eller sidste høje sample modtages som en lav.(PBK02)

Testprocedure:

(a) Tilstandsflaget sættes til 1 under hele forløbet så der kun modtages signaler

(b) Antallet af genkendte samples tælles op i et af processorens dataregistre

(c) En konstrueret simuleret mobilenhed udsender et kendt antal signaler svarende tilreferencesignalet for genkendelsesproceduren

(d) Det verifeceres, at databehandlingen har genkendt et antal signaler svarende til an-tallet af sendte testsignaler med TS2 debugger/monitor

(e) Den simulerede mobilenhed indstilles til at udsende et testsignal, der ikke skal kunnegenkendes som værende et korrekt signal

(f) Det verificeres, at databehandlingen ikke har genkendt nogle korrekte signaler medTS2 debugger/monitor

Ovenstående udføres til databehandlingen er testet med alle kombinationer af test- ogreferencesignaler.

Accept:Antallet af verificerede signaler skal være lig antallet af sendte korrekte testsignaler for allekombinationer

78

Page 91: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

SSK03: Databehandlingstiden per sample må ikke overskride periodetiden af samplings-frekvensen. Dette sikrer, at alle samples kan behandles inden næste sample hentes (HSK01)

Testprocedure:Indirekte testet ved accept af SSK02, idet signaler ikke kan genkendes hvis ikke alle sampleser færdigbehandlet inden næste sample hentes. Desuden udføres en simulering af anvendteclockcyles med simuleringsprogrammet 68000 IDE, for at kontrollere at antallet af clock-cycles ikke overstiger det tilladte.Accept:Overholdes SSK02 overholdes dette krav også overholdt. Antallet af anvendte clockcyclesper sample må ikke overskride 833.

2. Send signal

SSK04: Der ventes i et forudbestemt tidsrum med en tolerance på ±1 sample, målt veden ventetid på 512 samples.

Denne test udføres i den endelige accepttest da ventetiden ikke han testes ved test af denenkelte softwareproces, og er nærmere beskrevet i Appendiks A Accepttestspecifikation påside 73.

SSK05: Signalet, der sendes, skal være i overensstemmelse med signalkodningen (PBK05).Desuden skal signalet der sendes være i overensstemmelse med det ønskede svarsignal. Dertillades en afvigelse i signallængden på ±1 sample.

Testprocedure:

(a) Send signal procesen gentages med udsendelse af et kendt svarsignal bestående af 16bit, indkodet i hukommelsen

(b) Det verificeres på oscilloskop, at det udsendte svarsignal overholder signalkodningensamt at bitmønsteret er i overensstemmelse med det indkodede signal

Accept:Signalet skal være i overensstemmelse med det indkodede signal. Ydermere skal en højbit være repræsenteret ved tre lave samples efterfulgt af tre høje og efterfølgende lave,mens en lav bit repræsenteres ved 32 lave samples jf. signalkodningen beskrevet i afsnit 2Kravspecifikation på side 3.

3. Konfiguration af vægenhed

SSK06: Ind- og udlæsning af konfigurationer, herunder referencesignal, svarsignal samtventetid, skal være mulig via et konsolprogram.

Testprocedure:

(a) Indlæste standardværdier verificeres i hukommelsen via TS2 debugger/monitor, ogudlæses via RS232 forbindelsen

(b) Der indlæses et nyt referencesignal, svarsignal samt ny ventetid via RS232 forbindel-sen, som verificeres i hukommelsen via TS2 debugger/monitor

(c) En konfiguration indlæst via RS232 forbindelsen udlæses via RS232 forbindelsen

Accept:De udlæste værdier stemmer overens med de indlæste værdier.

79

Page 92: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

B Systemkravtestspecifikation

80

Page 93: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Appendiks CSimuleret mobilenhed

For at verificere at vægenheden fungerer, konstrueres der en IR testsender, som kan sende for-skellige signaler med samme frekvens, som vægenheden sampler med. Der konstrueres ligeledes etmodtagermodul med samme specifikationer som det, der benyttes i vægenheden. Disse to udgørden simulerede mobilenhed, se Figur C.1.

Vægenhed med IR-modtager og sendere

IR test sender

IR modtager

Simuleret mobilenhed

Oscilloskop

IR test sender

IR modtager

Simuleret mobilenhed

Figur C.1: Illustration af simuleret mobilenhed

Et diagram over IR testsenderen ses på Figur C.3. Senderen styres af en oscillator på 2,4576MHz, som neddeles til 6 forskellige frekvenser for at have mulighed for at sende med forskelligefrekvenser. Den laveste frekvens er 9600 Hz, og den højeste er 307,2 kHz. Valget af frekvenserstyres med en dip-switch. Den valgte frekvens bruges som clock i en tæller, hvor udgangsbenenebruges som adresseben til en EPROM. Tælleren kan tælle til 4096 svarende til 4096 samples. Daet signal er 512 samples langt, er der signal 1

8 af den tid, det tager tælleren at tælle op til 4096,hvorefter den starter forfra. Dermed er der en pause før signalet gentages. EPROM’en har 8databen, hvoraf de 7 (Q1 −Q7) bruges til at sende 7 forskellige signaler, se Tabel C.1. Det sidstedataben (Q0) benyttes til en lysdiode, der blinker med en duty cycle på 50 %. Denne indikerer, atden simulerede mobilenhed er aktiv. EPROM’ens databen vælges med en dip-switch, og tilsluttesudgangstrinet som beskrevet i afsnit 5.1 Design af sendermodul på side 37. Lysdioden drives afen operationsforstærker, der fungerer som en strømforstærker for lysdioden.

De data, der er brændt i EPROM’en, ses på den vedlagte CD (/hardware/ir testsender/data.hex).Ydermere er der vedlagt et regneark med samme data (/hardware/ir testsender/data.xls).

81

Page 94: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

C Simuleret mobilenhed

Bit nr.Databen 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Q1 - signal 1 1 1 1 0 1 1 0 1 1 1 1 0 0 0 1 0Q2 - signal 2 1 1 1 0 1 1 0 1 0 0 0 1 1 1 0 1Q3 - signal 3 1 1 1 0 0 0 1 0 1 1 1 0 1 1 0 1Q4 - signal 4 1 1 0 1 1 1 1 0 0 0 1 0 1 1 1 0Q5 - signal 5 1 0 1 1 0 1 1 1 1 0 1 1 1 0 0 0Q6 - signal 6 1 0 1 1 0 1 1 1 0 1 0 0 0 1 1 1Q7 - signal 7 1 0 0 0 1 0 1 1 0 1 1 1 1 0 1 1

Tabel C.1: Tabel over signaler der er programmeret i EPROM’en

Ved test af IR testsenderen måles signalet med et oscilloskop som beskrevet i afsnit 5.1 Designaf sendermodul på side 37. Målinger af signal 1 er vist på Figur C.2. Det ses, at det målte signalstemmer overens med det forventede for signal 1.

0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04 0.045 0.050

0.5

1

1.5

2

2.5

3

3.5

4

4.5

5

5.5

Tid [s]

Spæ

ndin

g [V

]

Figur C.2: Målinger af signal 1 udsendt af IR testsenderen, hvor de lodrette linier markerer bitadskillelse

Samme målinger er foretaget med de øvrige signaler, og var ligeledes det forventede. Dermedkonkluderes at IR testsenderen fungerer.

82

Page 95: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

5 5

4 4

3 3

2 2

1 1

DD

CC

BB

AA

Vcc

Vcc

Title

Size

Doc

umen

t Num

ber

Rev

Dat

e:Sh

eet

of

<Doc

><R

evC

od

<Titl

e>

A3

11

Tues

day,

May

23,

200

6

Title

Size

Doc

umen

t Num

ber

Rev

Dat

e:Sh

eet

of

<Doc

><R

evC

od

<Titl

e>

A3

11

Tues

day,

May

23,

200

6

Title

Size

Doc

umen

t Num

ber

Rev

Dat

e:Sh

eet

of

<Doc

><R

evC

od

<Titl

e>

A3

11

Tues

day,

May

23,

200

6

U12

74H

C40

40

U12

74H

C40

40Q

121

Q6

2Q

53

Q7

4

Q4

5Q

36

Q2

7Q

19

CLK

10

RS

T11

Q9

12Q

813

Q10

14Q

1115

U31

M27

128A

U31

M27

128A

A0

10A

19

A2

8A

37

A4

6A

55

A6

4A

73

A8

25A

924

A10

21A

1123

A12

2A

1326

VP

P1

O0

11O

112

O2

13O

315

O4

16O

517

O6

18O

719

CE

20

OE

22P

GM

27

J6 JUM

PER

7

J6 JUM

PER

7

12

34

56

78

910

1112

1314

R36

10k

R36

10k

D4

L813

DD

4L8

13D

R39

150

R39

150

C10

15pF

C10

15pF

R38

1kR38

1k

R37

1.5

R37

1.5

J5

JUM

PER

6J5

JUM

PER

6

12

34

56

78

910

1112

D3

SFH

487P

D3

SFH

487P

S1 SWIT

CH

1X2

S1 SWIT

CH

1X2

U33

74H

C40

40

U33

74H

C40

40Q

121

Q6

2Q

53

Q7

4

Q4

5Q

36

Q2

7Q

19

CLK

10

RS

T11

Q9

12Q

813

Q10

14Q

1115

U34

A

TLC

071

U34

A

TLC

071

+

3

-

2O

UT

6

Q1

BC54

7Q

1BC

547

Q2

BD13

7Q

2BD

137

R40

10k

R40

10k

U11

CO

C/T

2.4

576M

Hz

U11

CO

C/T

2.4

576M

Hz

1 1

7 788

1414

Figur C.3: Diagram over IR testsender

83

Page 96: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

C Simuleret mobilenhed

84

Page 97: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Appendiks DTestjournal

Formål

Formålet med denne test er at udføre verificering af de opstillede brugerkrav. De efterfølgendetests tager udgangspunkt i Appendiks A Accepttestspecifikation på side 73.

Måleopstilling for test af primære brugerkrav

Da der ikke er krav til afstand og vinkel mellem vægenheden, og den simulerede mobilenhedvælges det at placere enhederne ca. 10 cm fra hinanden. På Figur D.1 ses testopstillingen.

Vægenhed med IR-modtager og sender

IR test sender

IR modtager

Simuleret mobilenhed

Oscilloskop

IR test sender

IR modtager

Simuleret mobilenhedFigur D.1: Måleopstilling anvendt under test af primære brugerkrav

På IR-testsenderen måles spændingen på anoden af senderdioden, og på IR-modtageren målesspændingen ud af modtageren, der er konstrueret som beskrevet i afsnit 5.2 Design af modtager-modul på side 39.

85

Page 98: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

D Testjournal

Måleopstilling for test af sekundære brugerkrav

Der anvendes samme måleopstilling som ved test af de primære brugerkrav. Dog øges afstandenmellem den simulerede mobilenhed og vægenheden.

Apparaturliste

En oversigt over benyttet apparatur ses i Tabel D.1.

Type Mærke Model AAU nr. AAU placering

Strømforsyning Mascot 6823 02143-09 B1-104Oscilloskop Agilent 54621A 33863 B1-101-F-2

Tabel D.1: Anvendt måleapparatur for test af brugerkrav

Måleprocedure

Måleproceduren for verificering af de primære brugerkrav opdeles i følgende:

1. Vægenhedens respons ved korrekt triggersignal

2. Vægenhedens respons ved ukorrekt triggersignal

3. Vægenhedens respons ved ændrede parametre

Vægenhedens respons ved korrekt triggersignal

Den simulerede mobilenhed indstilles til at sende signal 6 (1011011101000111). Referencesignal,svarsignal samt ventetid sættes til standardværdierne (1011011101000111, 1110000011110001 og512 samples).

1. Stel fra strømforsyningen kobles til vægenheden, den simulerede mobilenhed og oscil-loskopet

2. Oscilloskopets probe 1 kobles til anoden på sendermodulets IR-diode

3. Oscilloskopets probe 2 kobles til udgangen på modtagermodulet

4. På den simulerede mobilenhed vælges signal 6 vha. dip-switchen

5. 5 V fra strømforsyningen kobles til vægenheden og den simulerede mobilenhed

6. Oscilloskopet indstilles således at triggersignalet til vægenheden kan ses to gange

86

Page 99: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

7. På oscilloskopet aflæses tiden fra faldende flanke på det sidste bit i triggersignalet tilstigende flange af første bit i svarsignalet

8. Datapunkter udlæses til videre databehandling

Den simulerede mobilenhed er beskrevet i Appendiks C Simuleret mobilenhed på side 81.

Vægenhedens respons ved ukorrekt triggersignal

Den simulerede mobilenhed indstilles til at sende signal 7 (1000101101111011). Referencesignal,svarsignal samt ventetid sættes til standardværdierne (1011011101000111, 1110000011110001 og512 samples).

1. Stel fra strømforsyningen kobles til vægenheden, den simulerede mobilenhed og oscil-loskopet

2. Oscilloskopets probe 1 kobles til anoden på sendermodulets IR-diode

3. Oscilloskopets probe 2 kobles til modtagermodulets udgang

4. På den simulerede mobilenhed vælges signal 7 vha. dip-switchen

5. 5 V fra strømforsyningen kobles til vægenheden og den simulerede mobilenhed

6. Oscilloskopet indstilles således at triggersignalet til vægenheden kan ses to gange

7. Datapunkter udlæses til videre databehandling

Vægenhedens respons ved ændrede parametre

Vægenhedens referencesignal ændres via konfigurationsprogrammet til 1101111000101110, svar-signalet til 1110001011101101 og ventetiden til 0 samples.

1. Stel fra strømforsyningen kobles til vægenheden, den simulerede mobilenhed og oscil-loskopet

2. Oscilloskopets probe 1 kobles til anoden på sendermodulets IR-diode

3. Oscilloskopets probe 2 kobles til modtagermodulets udgang

4. På den simulerede mobilenhed vælges signal 7 vha. dip-switchen

5. Parametrene i vægenheden ændres til de førnævnte

6. 5 V fra strømforsyningen kobles til vægenheden og den simulerede mobilenhed

7. Oscilloskopet indstilles således at triggersignalet til vægenheden kan ses to gange

87

Page 100: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

D Testjournal

Måleresultater

Grafer over måleresultaterne ses i Kapitel 7 Accepttest på side 63.

88

Page 101: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Appendiks EBrugervejledning

Denne brugervejledning er udarbejdet til brug ved anvendelse af vægenheden til et indendørspositioneringssystem. Brugervejledningen indeholder en systembeskrivelse samt en vejledning ikonfiguration og brug af vægenheden.

Systembeskrivelse

Vægenheden er en del af et samlet positioneringssystem til indendørs brug, der gør brug afinfrarøde signaler. Vægenheden indeholder foruden hardware til databehandling også en infrarødsender og modtager. På Figur E.1 ses en illustration af systemet.

Mobilenhed

Vægenhed

Retning

Triggersignal

Svarsignal

Figur E.1: Illustration af positioneringssystem

Signalet, som mobilenheden udsender, kaldes et triggersignal, mens signalet, som vægenheden

89

Page 102: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

E Brugervejledning

udsender som svar på triggersignalet, kaldes et svarsignal. Parametre i databehandlingen somtriggersignal samt svarsignal kan ændres gennem et konfigurationsprogram, der tilgås via en pctilsluttet vægenheden med en RS232 forbindelse. Foruden disse parametre kan ventetiden, fra ettriggersignal er modtaget til et svarsignal udsendelse, ændres.

Brug af systemet

Beskrivelsen af brug af systemet er opdelt i tre emner; Opsætning af pc, Menuen i konfigura-tionsprogrammet, Afbrydelse af sendermodulet. Disse beskrives herefter.

E.0.1 Opsætning af pc

For at konfigurere vægenheden tilsluttes denne til en pc via en RS232 forbindelse, og et terminal-program som f.eks. Hyper Terminal startes. Terminalprogrammet indstilles til at kommunikeremed følgende indstillinger:

• 9600 bit/s

• 8 databit

• Ingen paritet

• 1 stopbit

• Ingen flowstyring

E.0.2 Menuen i konfigurationsprogrammet

Efter opsætning af terminalprogrammet på pc’en aktiveres vægenhendens konfigurationsprogramved tryk på en vilkårlig tast på tastaturet, herefter vises et terminalvinduet som vist på FigurE.2.

MENU:r

Figur E.2: Eksempel på opstart af konfigurationprogrammet, her er den vilkårlige tast valgt til r

I menuen vælges der mellem at udlæse data og indlæse data med kommandoerne ”read” og”load” efterfulgt af Enter . Ønskes ingen af delene bruges kommandoen ”exit” efterfulgt af Enter, hvorefter forbindelsen mellem terminalprogrammet og vægenheden afbrydes.

90

Page 103: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Udlæs data

Vælges det at udlæse data tastes kommandoen ”read” efterfulgt af Enter . Herefter udskrivesdet aktuelle referencesignal, svarsignal og ventetiden. Et eksempel af en sådan udlæsning ses påFigur E.3.

MENU:readRef: 1011011101000111Ans: 1110000111100001Time: 0512

MENU:

Figur E.3: Eksempel på udlæsning af parametre

Efter udskrivning af disse parametre vender programmet tilbage til menuen.

Indlæs data

Vælges det at indlæse data tastes kommandoen ”load” efterfulgt af Enter . Herefter vises enundermenu, hvor der vælges mellem at indlæse enten referencesignal, svarsignal eller ventetid.Her skal der tastes:

1 : For at indlæse referencesignalet. Der skal indtastes et 16 bit langt referencesignal beståendeaf en kombination af tallene 0 og 1. Herefter vender programmet tilbage til menuen. Den førstindtastede karakter i referencen er ligeledes den første bit der sammenlignes med. N.B. Det førstebit skal derfor være 1 for at vægenheden skal være i stand til at genkende det ønskede signal.

2 : For at indlæse svarsignalet. Der skal indtastes et 16 bit langt svarsignal bestående afen kombination af tallene 0 og 1. Herefter vender programmet tilbage til menuen. Den førstindtastede karakter vil være den først afsendte bit i svarsignalet.

3 : For at indlæse ventetiden. Der skal indtastes et tal på 4 cifre. Tallet angiver det antalsamples, der ønskes at vente. Samplingsfrekvens er 9600 Hz, hvilket svarer til at der er 104,17 µsmellem hver sample.

Esc : For at vende tilbage til menuen

Et eksempel på indlæsning af et referencesignal ses på Figur E.4.

Eksempel på udregning af den faktiske ventetid, hvis der indtastes 0022:

22 · 104, 17 µs = 2, 29 ms (E.1)

Det vil sige, at der ventes 2,29 ms, inden svarsignalet sendes.

91

Page 104: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

E Brugervejledning

MENU:load1 Ref.2 Ans.3 TimeESC: MENU1Ref. 1100110011001100

MENU:

Figur E.4: Eksempel på indlæsning af et referencesignal

Den minimale ventetid er 0 og det maksimale er 9999. Ved 9999 er ventetiden:

9999 · 104, 17 µs = 1, 04 s (E.2)

Den maksimale ventetid er dermed 1,04 s.

Hvis der på noget tidspunkt tastes en ugyldig kommando, skrives der ’Invalid Command’ ikonsolprogrammet, og der vendes tilbage til menuen.

E.0.3 Afbrydelse af sendermodulet

Det er muligt at udlæse og indlæse til hukommelsen i vægenheden via TS2 debugger/monitor.Programmet tilgåes ved at trykke på NMI knappen på fronten af vægenheden, og afbryder alleigangværende processer.

Da det ikke kan vides om vægenhedens sendermodul er igang med at sende, når der trykkes påNMI-knappen, er der monteret en jumper til at afbryde forsyningsspændingen til sendermodulet,så IR-dioden ikke brænder af.

92

Page 105: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Appendiks FRAM allokering

På Figur F.1 ses en oversigt over allokering af adresseområder i RAM kredsene. De grå områderer uudnyttede adresseområder.

TS2 debugger/monitor

Referencesignal

Svarsignal

Ventetid i hex

Ventetid i decimal

Høj bit reference

Software

Lager til samples

Tilstandsflag

Dataflag

04 000004 0FFF04 000004 0FFF04 300004 300F04 301004 301F04 002004 002204 002404 002804 003004 004F04 005004 4FFF04 500004 5A1604 5A1705 01FF05 020005 03FF05 040006 FFFF

07 0000

07 0001

07 000213 FFFF

RAM allokering

Figur F.1: Oversigt over RAM allokering. De grå områder er adresseområder der ikke anvendes.

93

Page 106: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

F RAM allokering

94

Page 107: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Appendiks GPEEL kode

PEEL kode for Adressedekoder

module _adrdek

" TITLEtitle ’Adressedekoder, 17-04-2006’

" DEVICEadrdek device ’P22V10’;

" INPUTA23, A22, A21, A20, A19, A18 pin 2,3,4,5,6,7;AS, LDS, RW, UDS pin 8,9,10,11;

" OUTPUTROM1, ROM2, RAM1, RAM2 pin 14,15,16,17;ACIA1, ACIA2, Tx, Rx pin 18,19,20,21;WE pin 22;

" ISTYPEROM1, ROM2, RAM1, RAM2,ACIA1, ACIA2, Tx, Rx,WE istype ’pos,com’;

X=.X.;

" EQUATIONS

95

Page 108: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

G PEEL kode

equations!ROM1 = !A23 & !A22 & !A21 & !A20 & !A19 & !A18 & !UDS & !AS;!ROM2 = !A23 & !A22 & !A21 & !A20 & !A19 & !A18 & !LDS & !AS;!RAM1 = !A23 & !A22 & !A21 &

((!A20 & !A19 & A18) # (!A20 & A19) # (A20 & !A19 & !A18))& !UDS & !AS;

!RAM2 = !A23 & !A22 & !A21 &((!A20 & !A19 & A18) # (!A20 & A19) # (A20 & !A19 & !A18))& !LDS & !AS;

!ACIA1 = A23 & !A22 & !A21 & !A20 & !A19 & !A18 & !LDS & !AS;!ACIA2 = A23 & !A22 & A21 & !A20 & !A19 & !A18 & !LDS & !AS;!Rx = A23 & A22 & !A21 & !A20 & !A19 & !A18 & !LDS & !AS;!Tx = A23 & A22 & A21 & !A20 & !A19 & !A18 & !LDS & !AS;

!WE = !AS & !RW;

test_vectors ’memory’( [A23,A22,A21,A20,A19,A18,LDS,UDS,AS]->[ROM1,ROM2,RAM1,RAM2,ACIA1,ACIA2,Tx,Rx])" ROM:[0,0,0,0,0,0,1,0,0] -> [0,1,1,1,1,1,1,1];[0,0,0,0,0,0,0,0,0] -> [0,0,1,1,1,1,1,1];[0,0,0,0,0,0,1,1,0] -> [1,1,1,1,1,1,1,1];[0,0,0,0,0,0,0,1,0] -> [1,0,1,1,1,1,1,1];[0,0,0,0,0,0,X,X,1] -> [1,1,1,1,1,1,1,1];

" RAM:[0,0,0,0,0,1,1,0,0] -> [1,1,0,1,1,1,1,1];[0,0,0,0,0,1,0,0,0] -> [1,1,0,0,1,1,1,1];[0,0,0,0,0,1,1,1,0] -> [1,1,1,1,1,1,1,1];[0,0,0,0,0,1,0,1,0] -> [1,1,1,0,1,1,1,1];[0,0,0,0,0,1,X,X,1] -> [1,1,1,1,1,1,1,1];

[0,0,0,0,1,X,1,0,0] -> [1,1,0,1,1,1,1,1];[0,0,0,0,1,X,0,0,0] -> [1,1,0,0,1,1,1,1];[0,0,0,0,1,X,1,1,0] -> [1,1,1,1,1,1,1,1];[0,0,0,0,1,X,0,1,0] -> [1,1,1,0,1,1,1,1];[0,0,0,0,1,X,X,X,1] -> [1,1,1,1,1,1,1,1];

[0,0,0,1,0,0,1,0,0] -> [1,1,0,1,1,1,1,1];[0,0,0,1,0,0,0,0,0] -> [1,1,0,0,1,1,1,1];[0,0,0,1,0,0,1,1,0] -> [1,1,1,1,1,1,1,1];[0,0,0,1,0,0,0,1,0] -> [1,1,1,0,1,1,1,1];[0,0,0,1,0,0,X,X,1] -> [1,1,1,1,1,1,1,1];

test_vectors ’com’

96

Page 109: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

( [A23,A22,A21,A20,A19,A18,LDS,AS] -> [ROM1,ROM2,RAM1,RAM2,ACIA1,ACIA2,Tx,Rx])" ACIA1:[1,0,0,0,0,0,1,0] -> [1,1,1,1,1,1,1,1];[1,0,0,0,0,0,0,0] -> [1,1,1,1,0,1,1,1];[1,0,0,0,0,0,1,1] -> [1,1,1,1,1,1,1,1];[1,0,0,0,0,0,0,1] -> [1,1,1,1,1,1,1,1];

" ACIA2:[1,0,1,0,0,0,1,0] -> [1,1,1,1,1,1,1,1];[1,0,1,0,0,0,0,0] -> [1,1,1,1,1,0,1,1];[1,0,1,0,0,0,1,1] -> [1,1,1,1,1,1,1,1];[1,0,1,0,0,0,0,1] -> [1,1,1,1,1,1,1,1];

test_vectors ’I/O’( [A23,A22,A21,A20,A19,A18,LDS,AS] -> [ROM1,ROM2,RAM1,RAM2,ACIA1,ACIA2,Tx,Rx])" Tx:[1,1,0,0,0,0,1,0] -> [1,1,1,1,1,1,1,1];[1,1,0,0,0,0,0,0] -> [1,1,1,1,1,1,1,0];[1,1,0,0,0,0,1,1] -> [1,1,1,1,1,1,1,1];[1,1,0,0,0,0,0,1] -> [1,1,1,1,1,1,1,1];

" Rx:[1,1,1,0,0,0,1,0] -> [1,1,1,1,1,1,1,1];[1,1,1,0,0,0,0,0] -> [1,1,1,1,1,1,0,1];[1,1,1,0,0,0,1,1] -> [1,1,1,1,1,1,1,1];[1,1,1,0,0,0,0,1] -> [1,1,1,1,1,1,1,1];

test_vectors ’kontrolbus’( [RW,AS] -> [WE])[0,0] -> [0];[0,1] -> [1];[1,0] -> [1];[1,1] -> [1];end _adrdek

PEEL kode for ACIA PEEL

module _aciairqtitle ’Acia select, 20-04-2006’aciairq device ’P22V10’;

"Pin layout"input pinsRW, VMA, LDS, CS_ACIA_PCI, CS_ACIA_DMI pin 1, 2, 3, 4, 5;IRQ5, NMI, IACK5, IACK7 pin 6, 7, 8, 9;Rx, Tx, AS, WE, D0, OEin pin 10, 11, 13, 14, 15, 17;

97

Page 110: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

G PEEL kode

"output pinsOEout, VPA, CS_ACIA_PCO, CS_ACIA_DMO pin 16, 18, 19, 20;WR, RD pin 21, 22;

" ISTYPEOEout, VPA, CS_ACIA_PCO, CS_ACIA_DMO,WR, RD istype ’pos,com’;X = .X.;

equations

!VPA = !CS_ACIA_PCI # !CS_ACIA_DMI;

!VPA = !IRQ5 & !IACK5;

!VPA = !NMI & !IACK7;

"--------------------------------------------------------------

!CS_ACIA_PCO = !VMA & !LDS & CS_ACIA_PCI & !CS_ACIA_DMI;

!CS_ACIA_DMO = !VMA & !LDS & !CS_ACIA_PCI & CS_ACIA_DMI;

"--------------------------------------------------------------

!RD = !OEin & WE & !Rx;!WR = OEin & !WE & !Rx;

"-------------------------------------------------------------

!OEout = !AS & RW;

"-------------------------------------------------------------

test_vectors ’CHIPSELECT’([VMA,LDS,CS_ACIA_PCI,CS_ACIA_DMI] -> [CS_ACIA_PCO,CS_ACIA_DMO]);[0,0,0,0]->[1,1];[0,0,0,1]->[1,0];[0,0,1,0]->[0,1];[0,0,1,1]->[1,1];[0,1,X,X]->[1,1];[1,X,X,X]->[1,1];

test_vectors ’VPA’([NMI,IACK7,IRQ5,IACK5,CS_ACIA_PCI,CS_ACIA_DMI] -> [VPA]);

98

Page 111: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

[X,X,0,0,X,X]->[0];[0,0,X,X,X,X]->[0];[X,X,X,X,X,0]->[0];[X,X,X,X,0,X]->[0];[0,1,0,1,1,1]->[1];[0,1,1,0,1,1]->[1];[0,1,1,1,1,1]->[1];[1,0,0,1,1,1]->[1];[1,0,1,0,1,1]->[1];[1,0,1,1,1,1]->[1];[1,1,0,1,1,1]->[1];[1,1,1,0,1,1]->[1];[1,1,1,1,1,1]->[1];

test_vectors ’modtag’([OEin,WE,Rx] -> [WR,RD]);"[0,0,0]->[0,0];[0,0,1]->[1,1];[0,1,0]->[1,0];[0,1,1]->[1,1];[1,0,0]->[0,1];[1,0,1]->[1,1];[1,1,0]->[1,1];[1,1,1]->[1,1];

test_vectors ’kontrolbus’([RW,AS] -> [OEout]);[0,0] -> [1];[0,1] -> [1];[1,0] -> [0];[1,1] -> [1];

end _aciairq

PEEL kode for TX PEEL

module _Tx

" TITLEtitle ’Tx, 17-04-2006’

" DEVICETxPEEL device ’P22V10’;

" INPUTTx, D0, IACK4, IRQ4 pin 2,3,4,5;

99

Page 112: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

G PEEL kode

" OUTPUTTxClk, TxClr, VPA pin 14,15,16;

" ISTYPETxClk, TxClr, VPA istype ’pos,com’;

" EQUATIONSequations!TxClk = !Tx & D0;!TxClr = !Tx & !D0;

!VPA = !IACK4 & !IRQ4;

test_vectors ’Tx’([Tx,D0]->[TxClk,TxClr]);[0,0]->[1,0];[0,1]->[0,1];[1,0]->[1,1];[1,1]->[1,1];

test_vectors ’VPA’([IRQ4,IACK4]->[VPA]);[0,0]->[0];[1,0]->[1];[0,1]->[1];[1,1]->[1];

end _Tx

100

Page 113: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Appendiks HAssembler kode

* Projekt inkluder: main.asm* interrupt4.asm* konsol.asm* load.asm* read.asm* sammenlign.asm**************************************************************************

************************** Interruptvektortabel **************************

org $400E0 ;Adr. for autovektor til interrupt 4jmp sendmodtag ;Spring til interruptrutine 4

org $400E8 ;Adr. for autovektor til interrupt 5jmp konsol ;Spring til interruptrutine 5

************************** Initialisering **************************

org $45000 ;Programstart adresse $45000

* Sæt SR til ikke at tillade interrupts mens der initialiseres ******

move.w #$2500,SR ;Ignorer interrupt 5 og alle lavere

* Placering af flag, hukommelsesområder, etc. ******ref_signal equ $043000 ;Placering af referencesignallagerstart equ $050200 ;Lagerstart for samplingerlagermax equ $0503FF ;Sidste adresse i samplingslager

101

Page 114: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

H Assembler kode

tilstflag equ $070000 ;0 = send, 1 = modtagdataflag equ $070001 ;1 = ny data til behandlingADC equ $C00001 ;Adr. på ADCIRud equ $E00001 ;Adr. på IR sendermodul

refbitadr equ $43010 ;Svarsignalet er lagret fra denne adr.;og fremefter (16 bit, hver på 1 byte)

ventetid equ $43020 ;Adr. hvor ventetiden er lagret (word)refsampleadr equ $43030 ;Adr. hvor referencesignal for 1 høj

;bit i svarsignal er gemt som 32;samples, hver på 1 byte

* Initialisering af RS232-forbindelse til konsol ******ACIACR equ $A00001 ;ACIA kontrol- og statusreg adr.ACIADR equ $A00003 ;ACIA dataregistrets adresseRDRF equ 0 ;ACIA Receive Data Register FullTDRE equ 1 ;ACIA Transmit Data Register Empty

move.b #$03,ACIACR ;Masterreset af ACIAmove.b #$95,ACIACR ;Opsætning af ACIA til generering af

;interrupt, 8 bit data, ingen paritet,;1 stopbit, intern clock division 16

* Initialisering af brugerflade i konsol ******

move.b #$0C,D0 ;NewPagebsr Output ;Rutine til at skrive ud på konsolmove.b #$0A,D0 ;ASCII NewLinebsr Outputmove.b #$0D,D0 ;ASCII returnbsr Outputmove.b #$4D,D0 ;ASCII Mbsr Outputmove.b #$45,D0 ;ASCII Ebsr Outputmove.b #$4E,D0 ;ASCII Nbsr Outputmove.b #$55,D0 ;ASCII Ubsr Outputmove.b #$0A,D0 ;ASCII NewLinebsr Outputmove.b #$0D,D0 ;ASCII returnbsr Outputmove.b #$3A,D0 ;ASCII :bsr Outputclr.b D0 ;Nulstil dataregister

102

Page 115: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

* Indlæs standardværdier for signaler og ventetid ******

move.l #$01000101,$43000 ;Reference signal (ref_signal)move.l #$00010101,$43004 ;hvilket signal der skal svares påmove.l #$00010000,$43008 ;1011.0111.0100.0111move.l #$00010101,$4300Cmove.l #$01010100,$43010 ;Svar signalmove.l #$00000001,$43014 ;hvilket signal skal svares tilbagemove.l #$01010100,$43018 ;1110.0001.1110.0001move.l #$00000001,$4301Cmove.w #$0200,$43020 ;Ventetid gemt som hex værdimove.l #$00050102,$43024 ;Ventetid som bytes for lettere

;udlæsning i konsol

* Indlæs udseende for høj referencebit ******

move.l #$00000001,$43030 ;Høj bit reference bestående afmove.l #$01010000,$43034 ;32 samples = 32 bytesmove.l #$00000000,$43038 ;udseende (. for læselighed):move.l #$00000000,$4303C ;00011100.00000000.00000000.00000000move.l #$00000000,$43040move.l #$00000000,$43044move.l #$00000000,$43048move.l #$00000000,$4304C

* Indlæs standardpointere og sæt flag ******

move.l #lagerstart,A0 ;Nulstil lagerpointer til $50200move.l #lagerstart,A1 ;Nulstil signalstartpointer til $50200move.l #ref_signal,A5 ;bitpointer i referencesignalmove.b #1,(tilstflag) ;sæt til modtagmove.b #0,(dataflag) ;ingen ny data der skal behandles

* Sæt SR til at tillade alle interrupts ******

move.w #$2000,SR ;Accepter alle interrupts

************************** Main program **************************start cmp.b #1,(dataflag) ;Er der ny data?

bne start ;Nej -> spring til label startmove.b #0,(dataflag) ;Ja -> Nulstiller dataflagjmp genkend ;Spring til genkendelsesrutine

* Interruptrutine 4*************************************************************’

103

Page 116: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

H Assembler kode

*************************** Valget send/modtag ***************************sendmodtag move.b (ADC),D0 ;Flytter data fra ADC til dataregister

;D0, og fjerner interrupt 4cmp.b #0,(tilstflag) ;Skal der sendes?beq send ;Ja -> spring til label sendmove.b #1,(dataflag) ;Nej -> Sætter dataflag = 1move.b #1,ADC ;Starter en ny konvertering i ADCrte ;Afslut interruptrutine 4,

;sidste sample fra ADC ligger i D0

* Processen Send sample i interruptrutine 4 ******

************************** Vente eller sende? **************************send cmp.w (ventetid),D3 ;Er antal interrupts >= ventetid?

bge afsend ;Ja -> spring til afsendadd.w #1,D3 ;Nej -> tæl antal interrupts op med 1rte ;Afslut interruptrutine

************************** Afsendelse af sample **************************

afsend cmp.b #31,D1 ;Er sampletæller = 31?beq nybit ;Ja -> spring til nybitcmp.b #16,D2 ;Er bittæller = 16?beq saetflag ;Ja -> spring til saetflagmove.l #refbitadr,A3 ;Nej -> Flyt refbitadr. til A3add.l D2,A3 ;Refbitadr. tælles op med bitnr.cmp.b #1,(A3) ;Er bitværdien i svarsignal = 1?bne sendlav ;Nej -> spring til sendlav

sendhoej move.l #refsampleadr,A2 ;Flyt refsampleadr. til A2add.l D1,A2 ;Adder refsampleadr. med sampletællermove.b (A2),IRud ;Sender sample til IR-sendermoduladd.w #1,D1 ;Tæl sampletæller op med 1rte ;Afslut interruptrutine

sendlav move.b #0,IRud ;Send et 0 til IR-sendermoduladd.w #1,D1 ;Tæller sampletælleren op med 1rte ;Afslut interruptrutine

nybit clr D1 ;Nulstiller sampletælleren

104

Page 117: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

add.w #1,D2 ;Tæller bitnummeret op med 1rte ;Afslut interruptrutine

saetflag clr D1 ;Nulstiller sampletællerenclr D2 ;Nulstiller bittællerenclr D3 ;Nulstiller ventetidstællerenmove.l #$0,A2 ;Nulstiller refsampleadr.move.l #$0,A3 ;Nulstiller refbitadr.move.b #1,tilstflag ;Tilstandsflag = 1, så der modtages

;sample ved næste interrupt 4rte ;Afslut interruptrutine

* Konfigurationsprogram* Anvendes til at konfigurere* Startes af interrupt 5**********************

************************** Konsol rutine **************************konsol move.b #0,IRud ;Slukker sendedioden

move.l D0,-(A7) ;D0 -> stakkenmove.l A2,-(A7) ;A2 -> stakkenmove.l A3,-(A7) ;A3 -> stakkenmove.l A4,-(A7) ;A4 -> stakken

move.l #$42000,A2 ;Inputbuffer start

* Ryd skærm/vindue i konsol og skriv menu på skærmen ******reset move.b #$0C,D0 ;NewPage

bsr Output ;Spring til Output rutine

kons_go move.b #$0A,D0 ;ASCII NewLinebsr Outputmove.b #$0D,D0 ;ASCII returnbsr Outputmove.b #$4D,D0 ;ASCII Mbsr Outputmove.b #$45,D0 ;ASCII Ebsr Outputmove.b #$4E,D0 ;ASCII Nbsr Outputmove.b #$55,D0 ;ASCII Ubsr Outputmove.b #$0A,D0 ;ASCII NewLinebsr Outputmove.b #$0D,D0 ;ASCII return

105

Page 118: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

H Assembler kode

bsr Outputmove.b #$3A,D0 ;ASCII :bsr Output

* input af konfigurationsdata ******conf bsr Input ;Spring til Input

move.b D0,(A2) ;Input flyttes til inputbuffercmp.b #$0D,D0 ;Er der tastet ASCII return?beq chkload ;Ja -> spring til chkloadadda #1,A2 ;Nej -> Tæl inputbuffer en opbsr Output ;Skriv input tilbage via RS232jmp conf ;Spring til conf

;Kør indlæsningsløkken igen

* kontroller om der er tastet ’load’, der testes bagfra ******chkload cmp.b #$64,-(A2) ;ASCII d

bne chkexitcmp.b #$61,-(A2) ;ASCII abne invalidcmp.b #$6F,-(A2) ;ASCII obne chkreadcmp.b #$6C,-(A2) ;ASCII lbne invalidjmp load ;Der er tastet ’load’, spring til load

* kontroller om der er tastet ’read’, der testes bagfra hvor ’ad’ delen er* testet under chkload*****chkread adda #1,A2 ;Læg 1 til inputbufferen, da der blev

;trukket en fra for at teste for ’o’ i;’load’

cmp.b #$65,-(A2) ;ASCII ebne invalidcmp.b #$72,-(A2) ;ASCII rbne invalidjmp read ;Der er tastet ’read’, spring til read

* kontroller om der er tastet ’exit’, der testes bagfra ******chkexit adda #1,A2

cmp.b #$74,-(A2) ;ASCII tbne invalidcmp.b #$69,-(A2) ;ASCII ibne invalidcmp.b #$78,-(A2) ;ASCII xbne invalid

106

Page 119: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

cmp.b #$65,-(A2) ;ASCII ebne invalid

* er der tastet ’exit’, skrives ’Bye!’ ******

move.b #$0A,D0 ;ASCII NewLinebsr Outputmove.b #$0D,D0 ;ASCII returnbsr Outputmove.b #$42,D0 ;ASCII Bbsr Outputmove.b #$79,D0 ;ASCII ybsr Outputmove.b #$65,D0 ;ASCII ebsr Outputmove.b #$21,D0 ;ASCII !bsr Outputmove.b #$0A,D0 ;ASCII NewLinebsr Outputmove.b #$0D,D0 ;ASCII returnbsr Outputjmp niceend ;Spring til niceend

* Udskriver ’Invalid command’ på konsol ******invalid move.l #$42000,A2 ;Nulstil Inputbuffer

move.b #$0A,D0 ;ASCII NewLinebsr Outputmove.b #$0D,D0 ;ASCII returnbsr Outputmove.b #$49,D0 ;ASCII Ibsr Outputmove.b #$6E,D0 ;ASCII nbsr Outputmove.b #$76,D0 ;ASCII vbsr Outputmove.b #$61,D0 ;ASCII absr Outputmove.b #$6C,D0 ;ASCII lbsr Outputmove.b #$69,D0 ;ASCII ibsr Outputmove.b #$64,D0 ;ASCII dbsr Outputmove.b #$20,D0 ;ASCII spacebsr Outputmove.b #$63,D0 ;ASCII cbsr Output

107

Page 120: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

H Assembler kode

move.b #$6F,D0 ;ASCII obsr Outputmove.b #$6D,D0 ;ASCII mbsr Outputmove.b #$6D,D0 ;ASCII mbsr Outputmove.b #$61,D0 ;ASCII absr Outputmove.b #$6E,D0 ;ASCII nbsr Outputmove.b #$64,D0 ;ASCII dbsr Outputmove.b #$7,D0 ;ASCII BELL (lyd)bsr Outputmove.b #$0A,D0 ;ASCII NewLinebsr Outputmove.b #$0D,D0 ;ASCII returnbsr Outputmove.b #$0A,D0 ;ASCII NewLinebsr Outputmove.b #$3A,D0 ;ASCII returnbsr Outputjmp conf ;Spring til conf

* Genskab adresse- og dataregistre til hvad de var før interruptrutine 5 ******niceend move.l (A7)+,A4 ;Indlæs gammel værdi til A4

move.l (A7)+,A3 ;Indlæs gammel værdi til A3move.l (A7)+,A2 ;Indlæs gammel værdi til A2move.l (A7)+,D0 ;Indlæs gammel værdi til D0rte ;Afslut interruptrutine

* RS232 INPUT OUTPUT rutiner ******

************************** Input rutine **************************

Input btst.b #RDRF,ACIACR ;Bittest, Receive Data Register Full;er 0 i ACIA kontrol- og statusreg.

beq Input ;Ja -> spring til Input, udfør;polling efter data

move.b ACIADR,D0 ;Kopier ACIA Data Register -> D0rts ;Afslut input rutine

*************************

108

Page 121: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

* Output rutine **************************

Output btst.b #TDRE,ACIACR ;Bittest, Transmit Data Registe Empty;er 1 i ACIA kontrol- og statusreg.

beq Output ;Ja -> spring til Outputmove.b D0,ACIADR ;Kopier D0 -> ACIA Data Registerrts ;Afslut output rutine

* Indlæs data til system* ref = Referencesignal der skal genkendes* ans = svarsignal* time = antal interrupts der skal ventes fra signal er genkendt til der sendes******

* Menu’en til udskriv med gyldige valgmuligheder ******load move.l #$42000,A2 ;Nulstil Inputbuffer

move.b #$0A,D0 ;ASCII NewLinebsr Output ;Udskriv til konsol via RS232move.b #$0D,D0 ;ASCII Returnbsr Outputmove.b #$31,D0 ;ASCII 1bsr Outputmove.b #$3A,D0 ;ASCII :bsr Outputmove.b #$20,D0 ;ASCII spacebsr Outputmove.b #$52,D0 ;ASCII Rbsr Outputmove.b #$65,D0 ;ASCII ebsr Outputmove.b #$66,D0 ;ASCII fbsr Outputmove.b #$2E,D0 ;ASCII .bsr Outputmove.b #$0A,D0 ;ASCII NewLinebsr Outputmove.b #$0D,D0 ;ASCII returnbsr Outputmove.b #$32,D0 ;ASCII 2bsr Outputmove.b #$3A,D0 ;ASCII :bsr Outputmove.b #$20,D0 ;ASCII spacebsr Outputmove.b #$41,D0 ;ASCII Absr Output

109

Page 122: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

H Assembler kode

move.b #$6E,D0 ;ASCII nbsr Outputmove.b #$73,D0 ;ASCII sbsr Outputmove.b #$2E,D0 ;ASCII .bsr Outputmove.b #$0A,D0 ;ASCII NewLinebsr Outputmove.b #$0D,D0 ;ASCII returnbsr Outputmove.b #$33,D0 ;ASCII 3bsr Outputmove.b #$3A,D0 ;ASCII :bsr Outputmove.b #$20,D0 ;ASCII spacebsr Outputmove.b #$54,D0 ;ASCII Tbsr Outputmove.b #$69,D0 ;ASCII ibsr Outputmove.b #$6D,D0 ;ASCII mbsr Outputmove.b #$65,D0 ;ASCII ebsr Outputmove.b #$0A,D0 ;ASCII NewLinebsr Outputmove.b #$0D,D0 ;ASCII returnbsr Outputmove.b #$45,D0 ;ASCII Ebsr Outputmove.b #$53,D0 ;ASCII Sbsr Outputmove.b #$43,D0 ;ASCII Cbsr Outputmove.b #$3A,D0 ;ASCII :bsr Outputmove.b #$20,D0 ;ASCII spacebsr Outputmove.b #$4D,D0 ;ASCII Mbsr Outputmove.b #$45,D0 ;ASCII Ebsr Outputmove.b #$4E,D0 ;ASCII Nbsr Outputmove.b #$55,D0 ;ASCII Ubsr Outputmove.b #$0A,D0 ;ASCII NewLinebsr Output

110

Page 123: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

move.b #$0D,D0 ;ASCII returnbsr Output

* Afvent indtastning og bestem hvad der er tastet ******loadcom bsr Input ;Spring til Input, afvent indtastning

move.b D0,(A2) ;Kopier D0 -> databuffercmp.b #$1B,D0 ;Er der tastes ASCII ESC?beq reset ;Ja -> spring til resetcmp.b #$0D,D0 ;Er der tastet ASCII return?beq command ;Ja -> spring til commandadda #1,A2 ;Læg 1 til A2, databufferbsr Outputjmp loadcom ;Spring til loadcom

command cmp.b #$31,-(A2) ;Er der tastet ASCII 1?beq loadref ;Ja -> spring til loadrefcmp.b #$32,(A2) ;Nej -> Er der tastet ASCII 2?beq loadans ;Ja -> spring til loadanscmp.b #$33,(A2) ;Nej -> Er der tastet ASCII 3?beq loadtime ;Ja -> spring til loadtimejmp invalid ;Nej -> spring til invalid

* Indlæs referencesignal ******loadref move.b #$0A,D0 ;ASCII NewLine

bsr Outputmove.b #$0D,D0 ;ASCII returnbsr Outputmove.b #$52,D0 ;ASCII Rbsr Outputmove.b #$65,D0 ;ASCII ebsr Outputmove.b #$66,D0 ;ASCII fbsr Outputmove.b #$2E,D0 ;ASCII .bsr Outputmove.b #$09,D0 ;ASCII TABbsr Output

move.l #$43000,A3 ;Læg startadr. for ref.signal -> A3refin bsr Input ;Spring til Input

cmp.b #$30,D0 ;Er der tastet ASCII 0?beq refnext ;Ja -> spring til refnextcmp.b #$31,D0 ;Nej -> Er der tastet ASCII 1?bne refin ;Nej -> spring til refin, ignorer

;indtastninger der ikke er 0 ell. 1refnext bsr Output ;Ja -> skriv indtastning på konsol

111

Page 124: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

H Assembler kode

sub.b #$30,D0 ;Træk $30 fra indtastede ASCII kode,;så det gemmes som 0 og 1 i hukommelse

move.b D0,(A3) ;Gem indtastning i hukommelseadda #1,A3 ;Læg 1 til A3cmp.l #$43010,A3 ;Er der indtastet et komplet signal?bne refin ;Nej -> spring til refinmove.b #$0A,D0 ;Ja -> Udskriv ASCII NewLinebsr Outputmove.b #$0D,D0 ;ASCII returnbsr Outputjmp kons_go ;Spring til kons_go

* Indlæs svarsignal ******loadans move.b #$0A,D0 ;ASCII NewLine

bsr Outputmove.b #$0D,D0 ;ASCII returnbsr Outputmove.b #$41,D0 ;ASCII Absr Outputmove.b #$6E,D0 ;ASCII nbsr Outputmove.b #$73,D0 ;ASCII sbsr Outputmove.b #$2E,D0 ;ASCII .bsr Outputmove.b #$09,D0 ;ASCII TABbsr Output

move.l #$43010,A3 ;Læg startadr. for svarsignal -> A3ansin bsr Input ;Spring til Input

cmp.b #$30,D0 ;Er der tastet ASCII 0?beq ansnext ;Ja -> spring til ansnextcmp.b #$31,D0 ;Nej -> Er der tastet ASCII 1?bne ansin ;Nej -> spring til ansin, ignorer

;indtastninger der ikke er 0 ell. 1ansnext bsr Output ;Ja -> skriv indtastning på konsol

sub.b #$30,D0 ;Træk $30 fra indtastede ASCII kode,;så det gemmes som 0 og 1 i hukommelse

move.b D0,(A3) ;Gem indtastning i hukommelseadda #1,A3 ;Læg 1 til A3cmp.l #$43020,A3 ;Er der indtastet et komplet signal?bne ansin ;Nej -> spring til refinmove.b #$0A,D0 ;Ja -> Udskriv ASCII NewLinebsr Outputmove.b #$0D,D0 ;ASCII returnbsr Outputjmp kons_go ;Spring til kons_go

112

Page 125: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

* Indlæs svartid ******loadtime move.b #$0A,D0 ;ASCII NewLine

bsr Outputmove.b #$0D,D0 ;ASCII returnbsr Outputmove.b #$54,D0 ;ASCII Tbsr Outputmove.b #$69,D0 ;ASCII ibsr Outputmove.b #$6D,D0 ;ASCII mbsr Outputmove.b #$65,D0 ;ASCII ebsr Outputmove.b #$2E,D0 ;ASCII .bsr Outputmove.b #$09,D0 ;ASCII TABbsr Output

move.l #$43024,A3 ;Læg startadr. for ventetid -> A3timein bsr Input ;Spring til Input

cmp.b #$30,D0 ;Er der tastet ASCII 0?beq timenext ;Ja -> spring til timenextcmp.b #$31,D0 ;Er der tastet ASCII 1?beq timenext ;Ja -> spring til timenextcmp.b #$32,D0 ;Er der tastet ASCII 2?beq timenext ;Ja -> spring til timenextcmp.b #$33,D0 ;Er der tastet ASCII 3?beq timenext ;Ja -> spring til timenextcmp.b #$34,D0 ;Er der tastet ASCII 4?beq timenext ;Ja -> spring til timenextcmp.b #$35,D0 ;Er der tastet ASCII 5?beq timenext ;Ja -> spring til timenextcmp.b #$36,D0 ;Er der tastet ASCII 6?beq timenext ;Ja -> spring til timenextcmp.b #$37,D0 ;Er der tastet ASCII 7?beq timenext ;Ja -> spring til timenextcmp.b #$38,D0 ;Er der tastet ASCII 8?beq timenext ;Ja -> spring til timenextcmp.b #$39,D0 ;Er der tastet ASCII 9?bne timein ;Nej -> spring til timein

timenext bsr Output ;Ja -> skriv indtastning på konsolsub.b #$30,D0 ;Træk $30 fra indtastede ASCII kode

;så der kan gemmes som 0,1,..9 i;hukommelse i stedet for ASCII koden

move.b D0,(A3) ;Gem indtastning i hukommelseadda #1,A3 ;Læg 1 til A3

113

Page 126: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

H Assembler kode

cmp.l #$43028,A3 ;Er der skrevet 4 tegn?bne timein ;Nej -> spring til timein

;Ja -> konverter indtastede til hex

* Konvertering til hex påbegyndes. Anvendes for at have den indtastede ventetid* gemt som word for at lette sammenligningen i processen Send.*****

move.l #$43020,A4 ;Læg startadr. for ventetid hex -> A4move.b -(A3),D0 ;Flyt mindst betydende til D0move.w D0,(A4) ;Flyt mindst betydende til (A4)move.b -(A3),D0 ;Flyt 10’er til D0mulu #10,D0 ;Multiplicitet af tal: 10add.w D0,(A4) ;Adder tallet til (A4)clr D0move.b -(A3),D0 ;Flyt 100’er til D0mulu #100,D0 ;Multiplicitet af tal: 100add.w D0,(A4) ;Adder tallet til (A4)clr D0move.b -(A3),D0 ;Flyt 1000’er til D0mulu #1000,D0 ;Multiplicitet af tal: 1000add.w D0,(A4) ;Adder tallet til (A4)

* Konvertering afsluttet******

move.b #$0A,D0 ;ASCII NewLinebsr Outputmove.b #$0D,D0 ;ASCII returnbsr Outputjmp kons_go ;Spring til kons_go

* Udlæser data fra system* ref = referencesignal der skal svares på* ans = svarsignalet der udsendes når der er genkendt et signal* time = antal interrupts der skal ventes fra signal genkendt til svar sendes*****read move.l #$42000,A2 ;Nulstil Inputbuffer

* udlæs referencesignalet ******ref move.b #$0A,D0 ;ASCII NewLine

bsr Output ;Udskriv til konsol via RS232move.b #$0D,D0 ;ASCII returnbsr Outputmove.b #$52,D0 ;ASCII Rbsr Outputmove.b #$65,D0 ;ASCII ebsr Outputmove.b #$66,D0 ;ASCII f

114

Page 127: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

bsr Outputmove.b #$3A,D0 ;ASCII :bsr Outputmove.b #$9,D0 ;ASCII TABbsr Output

move.l #$43000,A3 ;Kopier startadr. for ref.signal -> A3refout move.b (A3),D0 ;Kopier det A3 peger på -> D0

add.b #$30,D0 ;Læg $30 til D0, så der skrives ASCII;0 og 1 på konsol i stedet for det;ACSII kode 0 og 1 angiver

bsr Outputadda #1,A3 ;Læg 1 til A3, så A3 peger på næste

;adr. i referencesignaletcmp.l #$43010,A3 ;Er hele referencesignalet skrevet ud?beq ans ;Ja -> spring til ansjmp refout ;Nej -> spring til refout

* Udlæs svarsignalet ******ans move.b #$0A,D0 ;ASCII NewLine

bsr Outputmove.b #$0D,D0 ;ASCII Returnbsr Outputmove.b #$41,D0 ;ASCII Absr Outputmove.b #$6E,D0 ;ASCII nbsr Outputmove.b #$73,D0 ;ASCII sbsr Outputmove.b #$3A,D0 ;ASCII :bsr Outputmove.b #$9,D0 ;ASCII TABbsr Output

move.l #$43010,A3 ;Kopier startadr. for svarsignal -> A3ansout move.b (A3),D0 ;Kopier det A3 peger på -> D0

add.b #$30,D0 ;Læg $30 til D0, så der skrives ASCII;0 og 1 på konsol i stedet for det;ACSII kode 0 og 1 angiver

bsr Outputadda #1,A3 ;Læg 1 til A3, så A3 peger på næste

;adr. i svarsignaletcmp.l #$43020,A3 ;Er hele svarsignalet skrevet ud?beq time ;Ja -> spring til timejmp ansout ;Nej -> spring til ansout

* Udlæs ventetid *

115

Page 128: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

H Assembler kode

*****time move.b #$0A,D0 ;ASCII NewLine

bsr Outputmove.b #$0D,D0 ;ASCII returnbsr Outputmove.b #$54,D0 ;ASCII Tbsr Outputmove.b #$69,D0 ;ASCII ibsr Outputmove.b #$6D,D0 ;ASCII mbsr Outputmove.b #$65,D0 ;ASCII ebsr Outputmove.b #$3A,D0 ;ASCII :bsr Outputmove.b #$9,D0 ;ASCII TABbsr Output

move.l #$43024,A3 ;Kopier startadr. for ventetid -> A3timeout move.b (A3),D0 ;Kopier det A3 peger på -> D0

add.b #$30,D0 ;Læg $30 til D0, så der skrives ASCII;0,1,..,9 på konsol i stedet for det;ACSII kode 0,1,..,9 angiver

bsr Outputadda #1,A3 ;Læg 1 til A3, så A3 peger på næste

;adr. i ventetidencmp.l #$43028,A3 ;Er ventetiden udskrevet?beq endline ;Ja -> spring til endlinejmp timeout ;Nej -> spring til timeout

endline move.b #$0A,D0 ;ASCII NewLinebsr Outputmove.b #$0D,D0 ;ASCII returnbsr Output

jmp kons_go ;Spring til kons_go

*Processen Databehandling der er indeholdt i main programmet***************************

************************** Genkend og søg bit **************************genkend move.b D0,(A0) ;Flyt data fra D0 til det A0 peger på

;A0 peger på samplelageradr.bsr highlow ;Spring til rutinen highlow

116

Page 129: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

soegbit bsr sammenlign ;Spring til rutinen sammenligningcmp.b #16,D2 ;Er D2 (bittæller) = 16?bne nextbit ;Nej -> spring til nextbitmove.b #0,(tilstflag) ;Tilstandsflag = 0,clr.b D0 ;Nulstil D0, sidste sample lagerclr.b D1 ;Nulstil D1, sampletællerclr.b D2 ;Nulstil D2, bittællerclr.b D5 ;Nulstil D5, sammenligningsflag

;1 = ufuldstænding 1.st bit;0 = 1.st bit godkendt som ’perfekt’;’perfekt’ = 000111000000...0

clr.l D6 ;Nulstil D6, databuffer/FIFO der inde-;holder de sidste 32 samples som 1 og;0 (når der har været 32 samples)

move.l #ref_signal,A5 ;A5 = referencesignal adr.add.b #1,D7 ;Tæl antal godkendte signaler op med 1

;(anvendt under test)nextbit adda.l #1,A0 ;Læg 1 til samplelageradr. og gem i A0

cmp.l #lagermax,A0 ;A0 = slutning af samplelager?beq nulstiladr ;Ja -> spring til nulstiladrjmp start ;Spring til start

nulstiladr move.l #lagerstart,A0 ;A0 = start af samplelagerjmp start ;Spring til start

************************** høj/lav bit rutine **************************

highlow cmp.b #$32,D0 ;Er sample < $32?;$32 = 1 V fra IR-modtager under;antagelse af at ADC er lineær

bls lowbit ;Ja -> spring til lowbitmove.b #$1,D0 ;Flyt 1 til sidste sample lager, D0rts ;Afslut highlow rutine

lowbit move.b #$0,D0 ;Flyt 0 til sidste sample lager, D0rts ;Afslut highlow rutine

************************** Sammenling rutine **************************

* Søges der efter høj eller lav bit? ******sammenlign cmp.b #0,(A5) ;Peger bitpointerer på en lav bit?

beq soeglav ;Ja -> spring til soeglav

117

Page 130: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

H Assembler kode

* Søg efter høj bit ******soeghoej cmp.b #0,D2 ;Er det første bit?

beq foerstebit ;Ja -> Spring til førstebitcmp.b #0,D0 ;Nej -> Er sample der er hentet 0?beq nulind_h ;Ja -> spring til nulind_hjmp etind_h ;Nej -> spring til etind_h

chk_h add.b #1,D1 ;Tæl sampletæller opcmp.b #32,D1 ;Er der hentet 32 bit?beq chk_hbit ;Ja -> spring til chk_hbitrts ;Afslut sammenlign rutinen

chk_hbit cmp.l #$1C000000,D6 ;Her testes for 3 muligheder afbeq equal_h ;indholdet i databufferen D6 ogcmp.l #$18000000,D6 ;springes til equal_h, hvisbeq equal_h ;D6 = tallet der sammenlignes med.cmp.l #$0C000000,D6 ;Dette giver tolerence på hvor mangebeq equal_h ;samples der skal være høje for at

;blive godkendt som høj bit.cmp.b #1,D5 ;Er sammenligningsflag = 1?bne nulstil ;Nej -> spring til Nulstilcmp.l #$38000000,D6 ;Tolerence på hvad der i databufferbeq equal_h ;kan verificeres som korrekt, pga.cmp.l #$30000000,D6 ;uvished om hvilken sample der blevbne nulstil ;misset i første godkendte bit

equal_h add.b #1,D2 ;Tæl bittæller opadda.l #1,A5 ;Tæl bitpointer opclr.b D1 ;Nulstil sampletællerclr.l D6 ;Nulstil databufferrts ;Afslut sammenlign rutinen

nulstil clr.l D6 ;Nulstil databufferclr.b D2 ;Nulstil bittællermove.l #ref_signal,A5 ;Nulstil bitpointerclr.b D1 ;Nulstil sampletællerrts ;Afslut sammenlign rutinen

************************** Søg første bit rutine **************************foerstebit cmp.b #0,D0 ;Er sidste sample = 0?

beq nulind_f ;Ja -> spring til nulind_fjmp etind_f ;Nej -> spring til etind_f

chk_f cmp.l #$1C000000,D6 ;Er databuffer = 000111000000...0?bne case2 ;Nej -> spring til case2move.b #0,D5 ;Nulstil sammenligningsflag

118

Page 131: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

jmp equal ;Spring til equalcase2 cmp.l #$0C000000,D6 ;Er databuffer = 000011000000...0?

bne return ;Nej -> spring til returnmove.b #1,D5 ;Ja -> sammenligningsflag = 1

equal add.b #1,D2 ;Tæl bittæller op med 1adda.l #1,A5 ;Tæl bitpointer op med 1

return rts ;Afslut foerstebit rutinen

************************** Søg lav bit rutine **************************soeglav cmp.b #0,D0 ;Er databuffer = 0?

beq nulind_l ;Ja -> spring til nulind_ljmp etind_l ;Nej -> spring til etind_l

chk_l add.b #1,D1 ;Tæl sampletæller op med 1cmp.b #32,D1 ;Er der hentet 32 samples?beq chk_lbit ;Ja -> spring til chk_lbitrts ;Nej -> afslut soeglav rutine

chk_lbit cmp.l #$00000000,D6 ;Er databuffer = 0?bne nulstil ;Nej -> spring til nulstil

equal_l add.b #1,D2 ;Tæl bittæller op med 1adda.l #1,A5 ;Tæl bitpointer op med 1clr.b D1 ;Nulstil sampletællerrts ;Afslut soeglav rutine

************************** Input i databuffer ***************************Der anvendes forskellige rutiner til at indsætte data i dababufferen, da der*ikke returneres/springes sammested hen alt efter om det er første bit eller et*af de andre der er igang med at blive genkendt****** indsæt 1 - første bit ******etind_f lsl.l #1,D6 ;Skift databuffer 1 til venstre

or.b #1,D6 ;Logisk OR 1 på bit 0 i databufferjmp chk_f ;Spring til chk_f

* indsæt 1 - genkend høj bit ******etind_h lsl.l #1,D6 ;Skift databuffer 1 til venstre

or.b #1,D6 ;Logisk OR 1 på bit 0 i databufferjmp chk_h ;Spring til chk_h

* indsæt 1 - genkend lav bit ******etind_l lsl.l #1,D6 ;Skift databuffer 1 til venstre

119

Page 132: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

H Assembler kode

or.b #1,D6 ;Logisk OR 1 på bit 0 i databufferjmp chk_l ;Spring til chk_l

* indsæt 0 - første bit ******nulind_f lsl.l #1,D6 ;Skift databuffer 1 til venstre

jmp chk_f ;Spring til chk_f

* indsæt 0 - høj bit ******nulind_h lsl.l #1,D6 ;Skift databuffer 1 til venstre

jmp chk_h ;Spring til chk_h

* indsæt 0 - lav bit ******nulind_l lsl.l #1,D6 ;Skift databuffer 1 til venstre

jmp chk_l ;Spring til chk_l

* afslutning af mainprogram ******

end $45000

120

Page 133: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Appendiks IKomponentliste

Komponentlisten er opdelt i to sektioner. En der dækker mikrodatamatsystemet, med de kom-ponenter der ses på de respektive diagrammer.

Mikrodatamatsystemet

Diagrammet til mikrodatamatsystemet ses i Appendiks J Diagram på side 123.Komponenterne i mikrodatamatsystemet er navngivet som på diagrammet. Alle anvendte mod-stande er 10 kΩ. Der er anvendt flere afkoblingskondensatorer, end de her angivne, men disseer monteret på undersiden af printet og derfor ikke navngivet på placeringsdiagrammet. Der erligeledes enkelte kondensatorer der er synlige fra oversiden, men ikke på placeringsdiagrammet,og enkelte kondensatorer på eldiagrammet der ikke er at finde i placeringsdiagrammet. Dissekondensatorer er monteret på undersiden af en sokkel, og er alle 100 nF.

IC’erMikroprocessor MC68HC000ACIA EF6850PAdressedekoder 22CV10AACIA PEEL 22CV10ATX PEEL 22CV10ARS232 DRIVER SP232ACPDeler 74HC4040B1

RAM HM628513-7ROM AM29FO10B-90PCIPL 74LS148IACK 74HCT138NFUNC.GEN 74HCT138NINT timer 74HC73B1

Oscillatorer

8,0000 Mhz MCO-1415 B 2,4576 MHz COC/T 50

121

Page 134: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

I Komponentliste

KondensatorerC1 100 nFC2 15pFC3 100 nFC4 100 nFC5 100 nFC6 100 nFC7 15 pFC8 100 nF

C_t 10 µFC_t1 47 pFC_A1 330 pFC_A2 330 pFC_A3 100 µFC_A4 100 µFC_A5 100 nFC_A6 220 nF

Sender- og modtagermodul samt mobilenheden

Komponenterne anvendt i sendermodulet navngives som på Figur 5.1 side 37.

SendermodulTransistor BC547Transistor BD137IR diode SFH487P

R_IN 1 kΩ

R_C 1,5 Ω

Komponenterne i modtagermodulet navngives som på Figur 5.3 på side 40, hvor forstærkerendog ikke er navngivet. Den vil i tabellen hedde OpAmp.

Modtagermodul

OpAmp TLC071IR modtagerdiode BPW34R1 4,99 kΩ

R2 60,4 kΩ

R_A 40,2 Ω

R_F 1 kΩ

C1 1 nF

Komponenterne i mobilenheden er navngivet som på Figur C.3 på side 83.

MobilenhedQ1 BC547Q2 BD137U11 COC/T 50U12 74HC4040U31 M27128AU33 74HC4040U34A TLC071C10 15 pF

R36 10 kΩ

R37 1,5 Ω

R38 1 kΩ

R39 150 Ω

R40 10 kΩ

D3 SFH487PD4 L813D

122

Page 135: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Appendiks JDiagram

123

Page 136: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet
Page 137: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

A23

A10

A5

A17

A11

A6

A12

A18

A13

A7

A19

A14

A8

A15

A9

A16

A10

A17

A11A12A13A14A15A16A17

A1

D0

A18

A2

D1

A19

A3A4

A1

D2

A5A6

A2

D3

A7

A3

A8

D4

A9

A4

A10

D5

A5

A11

D6

A12

A6

A13

D0

D7

A7

A14

D1

A15

D2

A8

D3

A16

D4

A9

A17

D5

A1

A10

D6

A1A2

A2

A3

D7

A4A5

A11

A3

D8

A6

D9

A12

A4D10

A5

A13

D11

A6

A1

A7

D12

A8A9

A14

A10

A7

A11

A2

A12

D13

A13A14

A8

A15

D14

A15

A16

A3

A17A18

A9

A19

D15

A20

A4

A21

A16

A22

D8D9D10D11D12D13D14D15

D0D1D2D3D4D5D6D7

D1D2D3D4D5D6D7

RESET*

R/W*LDS*AS*

A18A19A20A21A22A23

CS1*

CS2*

A1

A1 D0

E

E

R/W*

VMA*LDS*

FC0FC1FC2

CS1*CS2*

IPL0IPL1IPL2

AS*

A1A2A3

D10D11D12D13D14D15

D0D1D2D3D4D5D6D7D8D9

IPL0*IPL1*IPL2*

VPA*

FC0FC1FC2

VMA*E

UDS*LDS*R/W*

VPA*

UDS*

D0D1D2D3D4D5D6D7

AS

D0

DTACK*

HALT*

RST*HALT*

AS*

VPA*

IRQ4*

D0

A1

Vcc

Vcc

Vcc

Vcc

VccVcc Vcc

Vcc

Vcc

Vcc Vcc

Vcc Vcc

VccVcc

Vcc

Vcc

Vcc

Vcc

Vcc

Vcc

Vcc

Vcc

Vcc

Vcc

Vcc

Vcc

Databus

Adressebus

Kontrolbus

IR_in

IR_out

IR_out

R10R10RAM2

HM628512

RAM2

HM628512

A012A111A210A39A48A57A66A75A827A926A1023

I/O0 13I/O1 14I/O2 15I/O3 17I/O4 18I/O5 19I/O6 20I/O7 21

A143 A1328

A1125A124

A1531A162A1730A181

OE24WE29CS22

ADC

ADC0820

ADC

ADC0820

VIN1

REF+12REF-11

D0 2D1 3D2 4D3 5D4 14D5 15D6 16D7 17

INT 9OFL 18

CS13

MODE7RD8

WR/RDY6

R11R11

R5R5

R33R33

IACK

74HCT138

IACK

74HCT138

A1B2C3

Y0 15Y1 14Y2 13Y3 12Y4 11Y5 10Y6 9Y7 7

G16G2A4G2B5

R4R4

ROM2

AM29F010

ROM2

AM29F010

DQ0 13DQ1 14DQ2 15DQ3 17DQ4 18DQ5 19DQ6 20DQ7 21

A012A111A210A39A48A57A66A75A827A926A1023A1125A124A1328A1429A153A162

CE22

OE24WE31

ACIA-TS2

6850

ACIA-TS2

6850

E14

CS08CS110CS29

RS11RXDATA2CTS24DCD23

RXCLK3TXCLK4

R/W13

TXDATA 6

RTS 5

IRQ 7

D0 22D1 21D2 20D3 19D4 18D5 17D6 16D7 15

R35R35

R9R9

TS2 D/M

DSUB 9 - side

TS2 D/M

DSUB 9 - side

16

27

38

49

5

ROM1

AM29F010

ROM1

AM29F010

DQ0 13DQ1 14DQ2 15DQ3 17DQ4 18DQ5 19DQ6 20DQ7 21

A012A111A210A39A48A57A66A75A827A926A1023A1125A124A1328A1429A153A162

CE22

OE24WE31

R8R8

Divider

74HC4040

Divider

74HC4040Q12 1

Q6 2Q5 3

Q7 4

Q4 5Q3 6Q2 7Q1 9CLK10

RST11

Q9 12Q8 13

Q10 14Q11 15

R7R7

INT timer B

74HC73

INT timer B

74HC73

J7

CLK5

K10 Q 9Q 8

CLR6

Reset

TL7705B

Reset

TL7705B

CT3

SEN7

RESIN2

REF1 RST 6

RST 5

RS232

MAX232A

RS232

MAX232A

C1+1C1-3C2+4C2-5V+2V-6

D/M_OUT 12PC_OUT 9

D/M_IN11PC_IN10

D/M_IN13PC_IN8

D/M_OUT 14PC_OUT 7

R12R12

C6 100nC6 100n

R17R17

R18R18

R2R2

2,45

76 M

Hz

COC/T

2,45

76 M

Hz

COC/T

11

77

88

1414

USER

DSUB 9 - front

USER

DSUB 9 - front

16

27

38

49

5

Function

74HCT138

Function

74HCT138

A1B2C3

Y0 15Y1 14Y2 13Y3 12Y4 11Y5 10Y6 9Y7 7

G16G2A4G2B5

R16R16

R1R1

RAM1

HM628512

RAM1

HM628512

A012A111A210A39A48A57A66A75A827A926A1023

I/O0 13I/O1 14I/O2 15I/O3 17I/O4 18I/O5 19I/O6 20I/O7 21

A143 A1328

A1125A124

A1531A162A1730A181

OE24WE29CS22

INT timer A

74HC73

INT timer A

74HC73

J14

CLK1

K3 Q 12Q 13

CLR2

ACIA-user

6850

ACIA-user

6850

E14

CS08CS110CS29

RS11RXDATA2CTS24DCD23

RXCLK3TXCLK4

R/W13

TXDATA 6

RTS 5

IRQ 7

D0 22D1 21D2 20D3 19D4 18D5 17D6 16D7 15

D1D1

C215pFC215pF

R30R30

C715pFC715pFR3R3

IPL

74LS148

IPL

74LS148

D0 10D1 11D2 12D3 13D4 1D5 2D6 3D7 4

EI 5

Q09Q17Q26

GS14 EO15R24R24

Reset knapReset knap1 2

R19R19

NMI A

74LS03

NMI A

74LS03

1

23

R23R23

C_t

10u

C_t

10u

TX PEEL

22CV10A

TX PEEL

22CV10AI/CLK1

TXClk* 14TXClr* 15

VPA* 16I/O 17I/O 18I/O 19I/O 20I/O 21I/O 22I/O 23

TX*2D03IACK4*4IRQ4*5I6I7I8I9I10I11I13

R22R22

8,00

00 M

Hz

MCO1425B

8,00

00 M

Hz

MCO1425B

11

77

88

1414

R13R13

CLK JMP

JUMPER6

CLK JMP

JUMPER6

1 23 45 67 89 10

11 12

C5100nC5100n

R26R26

R41R41

D2D2

Delay

TL7705B

Delay

TL7705B

CT3

SEN7

RESIN2

REF1 RST 6

RST 5

C4 100nC4 100n

R20R20

Microprocessor

68000CC

Microprocessor

68000CC

CLK15VPA23

IPL027IPL126IPL225

BGACK12BR13

DTACK10 BERR24

FC030FC129FC228

BG11VMA21E22

HALT19RESET20AS6UDS7LDS8R/W9

A1 32A2 33A3 34A4 35A5 36A6 37A7 38A8 39A9 40

A10 41A11 42A12 43A13 44A14 45A15 46A16 47A17 48A18 49A19 50A20 51A21 53A22 54A23 55

D0 5D1 4D2 3D3 2D4 1D5 68D6 67D7 66D8 65D9 64

D10 63D11 62D12 61D13 60D14 59D15 58

NMI B

74LS03

NMI B

74LS03

4

56

Adressedekoder

22CV10A

Adressedekoder

22CV10AI/CLK1

ROM1* 14ROM2* 15RAM1* 16RAM2* 17ACIA1* 18ACIA2* 19

TX* 20RX* 21WE* 22

I/O 23

A232A223A214A205A196A187AS*8LDS*9R/W*10UDS*11I13

SW2

NMI knap

SW2

NMI knap

ACIA-PEEL

22CV10A

ACIA-PEEL

22CV10AR/W*1

WE* 14D0 15

OEout* 16OEin* 17VPA* 18CS1* 19CS2* 20WR* 21RD* 22I/O 23

VMA*2LDS*3ACIA1*4ACIA2*5IRQ5*6IRQ7*7IACK5*8IACK7*9Rx*10Tx*11AS*13

R14R14

C1

100n

C1

100n

C8

100n

C8

100n

C3 100nC3 100n

+-

5 VVcc+

-5 VVcc

R42R42 R21R21

R34R34

C_t1

47p

C_t1

47p

Page 138: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

Appendiks KPlaceringsdiagram

125

Page 139: Deltagere - kekker.dkog Elektroteknik ved Institut for Elektroniske Systemer på Aalborg Universitet i perioden fra 1. februar 2006 til og med 29. maj 2006. Formålet med projektforløbet

AD

R.D

EC

RA

M LO

WER

RA

M U

PPER

RO

M LO

WER

RO

M U

PPER

USER

AC

IA

TS2 AC

IA

USER

STIK

NMI IPL IACK FUNC.

TS2

STIK

RS232

AC

IA PEEL DIVIDER

2,4 MHz

C7

CLK

JMP*

NM

IKN

AP

R14 R13

R35

BN

C

SIKR

ING

+5 V

0 V

-15 V

0 V

+15 V

PULL-UP 2*

AD

C

8 MH

z

C2 RESET

C_T

R2

RD

1*

MC

68HC

000

C_T1

R33R

30

DELAY

0 V+5 V

R41

PULL-UP 1*

C-R

S232*

C_A1

C_A3 C_A4

C_A2

INT timer

R41

TX PEEL

ON OFF

TX JM

P

MODTAGER MODUL

SENDER MODUL

C_A5 C_A6

RESET K

NA

P Figur K.1: Placeringsdiagram

PULL-UP 1*

PULL-UP 2*

RD

1*

CLK

JMP*

307,2 kHz 153,6 kHz

76,8 kHz 38,4 kHz 19,2 kHz

9,6 kHz

C-R

S232*

R1

R34

R18

R26

R17

R20

R22

R23

R24

R21

R19

R12

R11

R10

R9

R7

R5

R8

R16

D2 D1 R3 R4

C3 C4 C6 C5

Figur K.2: Placeringsdiagram for komponenter