Masterproef Gebruik van FPGA voor videodetectie
|
|
- Floris van den Brink
- 7 jaren geleden
- Aantal bezoeken:
Transcriptie
1 Masterproef Gebruik van FPGA voor videodetectie Studiegebied Industriële wetenschappen en technologie Opleiding Master in de industriële wetenschappen: Elektronica-ICT Afstudeerrichting Elektronica Academiejaar Pieter Deconinck I
2 Voorwoord Langs deze weg wil ik iedereen bedanken die mij geholpen heeft bij het realiseren van deze masterproef. Vooreerst mijn oprechte dank aan mijn externe promotor, Marc Lefevere. Door zijn jarenlange ervaring kon hij mij altijd goede raad geven als er problemen optraden. Ondanks zijn drukke tijdsschema stond hij toch steeds paraat om mij te helpen. Ik mag zeker ook niet nalaten om mijn interne promotor, Johan Beke, te bedanken. Hij volgde deze masterproef op de voet en gaf raad indien nodig. Als laatste wil ik ook mijn ouders en vrienden bedanken die mij gedurende deze vier jaar durende opleiding heel hard gesteund en geholpen hebben. II
3 Inhoudsopgave 1 INLEIDING STUDIE INLEIDING HET INTEGRAL IMAGE ALGORITME [1] Features PICOBLAZE [3] I²C [4] Ontstaan Werking Data overdracht HARDWARE BLOKSCHEMATISCH SAA7113H decoder chip [5] FS453 focus chip [6] Print ontwerp BESCHRIJVING VAN HET ALGORITME: VHDL BLOKSCHEMATISCH DATA SEPARATOR [7] [8] Structuur van het videosignaal Timing referentie codes Het blanking interval VHDL beschrijving Toelichting Beschrijving testbench Bespreking Simulaties INTEGRATOR Blokschema VHDL beschrijving Toelichting Beschrijving testbench Bespreking Simulaties INTEGRATOR + SIMULATOR Toplevel VHDL beschrijving Beschrijving testbench Simulaties HET INTEGREREN VAN PICOBLAZE [3] Algemeen Extra code DEBUGGEN: CHIPSCOPE [9] ALGEMEEN ICON core II
4 6.1.2 ILA core VIO core ATC2 core RESULTATEN Field Field BESLUIT AUTOMATISCH TESTBENCHES GENEREREN [10] MOTIVATIE LEZEN UIT EEN BESTAND VHDL beschrijving Bespreking Beschrijving testbench Simulatie SCHRIJVEN NAAR EEN BESTAND VHDL beschrijving Beschrijving testbench Simulatie en resultaat CONTROLEPROGRAMMA DOEL UITWERKING BESPREKING VERGELIJKING HARDWARE EN SOFTWARE OPLOSSING BESLUIT III
5 Lijst van afkortingen ADC Analog to Digital Converter ATC2 Agilent Trace Core 2 CGC Clock Generation Circuit DAC Digital to Analog converter DUT Device Under Test EAV End of Active Video FIFO First In First Out FPGA Field Programmable Gate Array HDTV High Definition Television ICON Integrated Controller Core II Integral Image ILA Integrated Logic Analyzer JTAG Joint Test Action Group NTSC National Television Standards Committee PAL Phase Alternating Line SAV Start of Active Video SDTV Standard Definition Television SECAM SEquentiel Couleur A Mémoire VBI Vertical Blanking Interval VIO Virtual Input/Output IV
6 Lijst van figuren Figuur 1: integral image... 2 Figuur 2: features... 3 Figuur 3: KCPSM Figuur 4: architectuur KCPSM Figuur 5: I²C... 7 Figuur 6: level shifters... 7 Figuur 7: start en stop conditie I²C... 8 Figuur 8: volledige data overdracht I²C... 8 Figuur 9: blokschema hardware Figuur 10: decoder chip SAA7113H Figuur 11: focus chip Figuur 12: blokschema ontwerp Figuur 13: structuur videosignaal Figuur 14: interlacing Figuur 15: shifting proces Figuur 16: EAV in blanking interval field Figuur 17: SAV in blanking interval field Figuur 18: EAV in active video field Figuur 19: SAV in active video field Figuur 20: blokschema integrator Figuur 21: input stroom integrator Figuur 22: start eerste lijn integrator Figuur 23: start tweede lijn integrator Figuur 24: start derde lijn integrator Figuur 25: start eerste lijn separator - integrator Figuur 26: start tweede lijn separator - integrator Figuur 27: integreren van picoblaze Figuur 28: hyperterminal Figuur 29: instelling hyperterminal Figuur 30: chipscope Figuur 31: ATC2 core Figuur 32: blokschema ontwerp Figuur 33: SAV lijn Figuur 34: EAV lijn Figuur 35: SAV lijn Figuur 36: EAV van andere lijn dan eerste Figuur 37: geëxporteerde testbench Figuur 38: simulatie 1 lezen uit bestand Figuur 39: simulatie 2 lezen uit bestand Figuur 40: simulatie schrijven naar bestand Figuur 41: resultaat controleprogramma V
7 Lijst van tabellen Tabel 1: timing referentie codes Tabel 2: protectie bits Tabel 3: codewoorden per field Tabel 4: codewoorden per field Tabel 5: simulatiewaarden integrator Tabel 6: meting op DSP VI
8 1 Inleiding Traficon N.V. is een West-Vlaamse KMO en wereldleider in video-analyse voor verkeerstoepassingen. Traficon maakt intelligente camera s waarmee ongevallen en filesituaties gedetecteerd kunnen worden. Dit kan het verkeer een stuk veiliger en vlotter maken. Traficon ontwerpt zowel de hardware als de software voor videodetectie. Tot nu toe was de hoofdprocessor meestal een microcontroller of een DSP, wat uiteraard een beperkte rekencapaciteit met zich meebrengt. Vooral bij beeldverwerkingstoepassingen kan dit voor problemen zorgen aangezien de hoeveelheden data die moeten verwerkt worden vrij groot kunnen worden. Field Programmable Gate Arrays (FPGA) kunnen in dit geval een oplossing bieden. De meest rekenintensieve operaties kunnen namelijk geparallelliseerd worden en in preprocessing in een FPGA gebeuren. In deze masterproef is het de bedoeling om het integral image algoritme te ontwikkelen op een FPGA. Dit algoritme zal in het vervolg van deze masterproef uitvoerig worden besproken. Er wordt begonnen met een kleine studie over het eigenlijke integral image algoritme. Er wordt ook bekeken hoe een Picoblaze processor kan gebruikt worden. Tenslotte wordt ook I²C eens onder de loep genomen. Dit alles gebeurt in hoofdstuk twee. Een eerste echte taak is het ontwikkelen van een stuk hardware. Dit bevat zowel een video decoder als een video encoder. De decoder digitaliseert het inkomende analoge videosignaal. De encoder wordt in deze toepassing niet gebruikt maar is toch aanwezig voor eventuele latere projecten. Deze hardware is compatibel met de starterkit en het ml40x evaluation platform van Xilinx. In hoofdstuk 3 wordt dit volledig uitgewerkt. Hoofdstuk 4 en volgende handelen over de uitwerking van het eigenlijke algoritme. De code wordt beschreven en toegelicht. Bij elk stuk code wordt ook een passende simulatie gedaan om te controleren of de code wel correct werkt. In het daaropvolgende hoofdstuk wordt uitgebreid gecontroleerd op fouten met behulp van chipscope. Eventuele fouten worden nog herwerkt. In het laatste hoofdstuk wordt een controleprogramma geschreven in C waarmee nagegaan wordt of de output van het algoritme overeenkomt met de correcte waarde van de integral image. 1
9 2 Studie 2.1 Inleiding De volledige masterproef draait rond het integral image algoritme. Dit dient dus eerst en vooral grondig bestudeerd te worden. Er wordt duidelijk gemaakt wat dit algoritme precies inhoudt en hoe de videodetectie hiermee effectief kan versneld worden. Picoblaze wordt gebruikt om de videodecoder te initialiseren via I²C. Daarom wordt in wat volgt zowel de werking van Picoblaze als van I²C nog besproken. 2.2 Het integral image algoritme [1] Integral image is een algoritme om snel en efficiënt de som van waarden in een rechthoekige subset van pixels te berekenen. Het voordeel van het gebruik van een integral image is het feit dat features, die gebruikt worden voor de effectieve videodetectie, veel sneller kunnen berekend worden. We kunnen dit heel simplistisch als volgt voorstellen: input integral image ii( x, y) = x' x, y' y i( x', y') Stel dat een beeld bestaat uit drie rijen van drie pixels. Zoals valt op te maken uit de formule is iedere pixel in de integral image gelijk aan de som van de pixelwaarden links en boven van deze pixel. Zo is waarde 12 bijvoorbeeld afkomstig van de som van de pixelwaarden 1,2,4 en 5. Figuur 1: integral image De figuur hiernaast biedt misschien nog meer verduidelijking. Als de pixel van de integral image op plaats 1 berekend wordt, dan is dit eigenlijk de som van alle waarden die in het vlak A liggen. Als de som van pixelwaarden van het vlak D moet berekend worden, dan kan dit vlug met volgende berekening:
10 2.2.1 Features Omdat een integral image heel belangrijk is bij de berekening van features, worden deze hier kort besproken. De features worden gebruikt bij beelddetectie. In onderstaande figuur staan vier verschillende voorbeelden hiervan. Deze laat men over het beeld lopen waarin bepaalde voorwerpen moeten gedetecteerd worden. Figuur 2: features Er zijn verschillende redenen voor het gebruik van features in plaats van onmiddellijke bewerkingen op pixels. Het belangrijkste voordeel is hier dat een feature gebaseerd systeem veel sneller kan werken dan een pixel gebaseerd systeem. Er worden drie soorten van features gebruikt. De waarde van een twee rechthoeksfeature is het verschil van de som van pixels in de twee gebieden. De twee gebieden hebben dezelfde grootte en zijn horizontaal of vertikaal aangrenzend. Een drie rechthoeksfeature berekent de som van de twee buitenste rechthoeken verminderd met de som van pixels in de centrale rechthoek. Een vier rechthoeksfeature tenslotte berekent het verschil tussen de twee diagonale paren van rechthoeken. We moeten dus telkens zo snel mogelijk de som van waarden in een rechthoekige subset van pixels kunnen bereken. Het gebruik van een integral image kan deze berekening dus aanzienlijk versnellen. Er zijn telkens maar vier berekeningen nodig zoals hierboven reeds aangetoond. Rechthoekige features kunnen primitief overkomen wanneer deze vergeleken worden met alternatieven zoals stuurbare filters. Deze zijn uitstekend voor gedetailleerde analyse van grenzen, beeld compressie en een analyse van de textuur van het beeld. Rechthoekige features, die goed zijn om randen en andere simpele structuren te detecteren, zijn dan weer iets grover. De enige mogelijke oriëntaties die mogelijk zijn, zijn horizontaal, vertikaal of diagonaal. Hun voordeel is natuurlijk wel dat deze veel sneller kunnen berekend worden met behulp van een integral image representatie. [2] 3
11 2.3 Picoblaze [3] Picoblaze is een efficiënte 8 bit microcontroller architectuur die kan gesynthetiseerd worden in Spartan3, Virtex2 en Virtex4 FPGA s. Picoblaze is vergelijkbaar met meerdere andere microcontroller architecturen, maar het is specifiek ontwikkeld en geoptimaliseerd voor Xilinx FPGA s. Er kunnen ook grotere microprocessoren geïntegreerd worden in een FPGA. Deze 32 bit architectuur krijgt de naam Microblaze mee. Picoblaze en Microblaze zijn dus eigenlijk soft core processors aangezien ze gesynthetiseerd worden uit HDL en aangezien ze de programmable logic en routing resources van de FPGA gebruiken voor de implementatie. In deze masterproef zal een Picoblaze processor worden geïntegreerd om enkele interne registers van de decoder en encoder chip op een bepaalde waarde in te stellen. Met deze registers worden de instellingen van de chip geregeld. Omdat deze enkel deze functie heeft mag deze processor klein zijn en is er geen nood aan een Microblaze. Picoblaze bestaat uit twee delen. Het eerste deel is de KCPSM3 processor core. KCPSM3 staat voor (K) constant Coded Programmable State Machine. Het tweede deel is het programma geheugen waarin de instructies worden opgeslagen. Picoblaze werd ontwikkeld met 1 dominante ontwerpfactor voor ogen, namelijk grootte. Het resultaat hiervan is een microcontroller die slechts 96 slices in beslag neemt op een spartan-3. Dit is slechts 5% van een XC3S200 device en zelfs minder dan 0.3% van een XC3S500 device. Schematisch ziet dit er nu als volgt uit: Figuur 3: KCPSM3 De architectuur van KCPSM3 wordt in figuur 3 schematisch weergegeven. 4
12 Figuur 4: architectuur KCPSM3 KCPSM3 heeft 256 input ports en 256 output ports. De poort die aangesproken wordt, wordt geadresseerd door een 8 bit adres waarde die teruggevonden wordt in de PORT_ID. Gedurende een input operatie wordt de waarde die aan de input poort staat geplaatst in een van de 16 registers. Een input operatie kan herkend worden doordat een puls wordt gezet op de read_strobe. Gedurende een output operatie wordt de inhoud van een van de 16 registers gestuurd naar de output poort. Deze operatie wordt aangeduid met een puls op de write_strobe. Er is beschikking over een 64 byte intern geheugen ( scratch pad memory ). De inhoud van de registers kan geschreven worden naar een van de 64 geheugen locaties door middel van een store instructie. Een fetch instructie doet net het omgekeerde en schrijft data van het geheugen naar een van de registers. Dit zorgt ervoor dat veel meer variabelen kunnen worden opgeslagen binnen de grenzen van de processor waardoor alle mogelijke I/O ruimte behouden blijft voor echte input en output signalen. De processor heeft ook een interrupt ingang. Interrupts worden standaard gemaskeerd. Interrupts kunnen wel handmatig toegelaten worden. 5
13 2.4 I²C [4] Omdat al de registers van de hardware worden ingesteld via I²C, wordt dit hieronder toch even kort besproken Ontstaan Eind jaren zeventig zocht Philips naar een interface om IC s met elkaar te laten communiceren via een low-cost verbinding. Deze werd niet verondersteld om heel grote snelheden te halen. De gebruikelijke methode om communicatie te verzorgen tussen verschillende IC s was op dat moment een 8 bit brede parallelle bus. Deze bus had niet enkel 8 datalijnen nodig maar ook nog enkele adreslijnen. Het is duidelijk dat dit al snel heel wat ruimte in beslag nam op een printplaat. Parallelle communicatie heeft ook altijd problemen met skew of scheefloop. Dit wil zeggen dat het ene signaal vlugger bij de ontvanger toekomt dan het andere. Phillips reduceerde het aantal communicatielijnen tot twee. Deze inter-ic bus werd IIC of I²C genoemd. Dit wordt nu vaak geïmplementeerd in situaties waarbij kosten en afmeting belangrijker zijn dan datasnelheid Werking De I²C bus bevat zoals gezegd twee lijnen. Eén daarvan wordt de SDA lijn genoemd, de ander de SCL. Deze laatste dient als kloklijn. Elke deelnemer op de I²C bus heeft zijn eigen uniek adres. Communicatie vindt plaats tussen masters en slaves, waarbij meerdere masters op een bus toegelaten zijn. De bus maakt gebruik van collision detection mechanismen om te voorkomen dat meerdere devices tegelijk de bus zouden gebruiken. Meerdere snelheden zijn mogelijk. Huidige implementaties staan snelheden van 100, 400 en 3400 kbps toe. Deze standaarden heten respectievelijk de standaard mode, de fast mode en de high speed mode. In het fysieke ontwerp van de I²C bus heeft Philips een datalijn SDA en een kloklijn SCL gedefinieerd. Deze vormen een synchrone seriële bus. Het aantal devices dat op zulk een bus mag aangesloten worden is beperkt door de capacitive load. Als er teveel devices op een bus worden aangesloten, wordt de toegelaten capaciteit op de bus overschreden waardoor signalen vervormd worden. De maximaal toegelaten capaciteit bedraagt hier 400 pf. Aangezien de meeste IC s met een I²C interface gebruik maken van low power CMOS technologie, met hoge ingangsweerstand, kunnen toch behoorlijk wat apparaten worden aangesloten vooraleer de maximale capaciteit bereikt wordt. 6
14 Het kloksignaal wordt gegenereerd door een van de masters. Als er geen communicatie plaatsvindt, worden zowel de SDA en SCL lijn via pull-up weerstanden naar de voedingsspanning getrokken. Figuur 5: I²C De niveaus voor de voedingsspanning zijn vrij flexibel. We kunnen bijvoorbeeld een 5V DC waarde aanleggen, maar een spanning tot zelfs onder de 2V DC is mogelijk. Hierdoor kan de I²C bus in vele toepassingen worden gebruikt zonder de noodzaak van een eigen voeding. Als de bus meerdere secties bevat met verschillende voedingsspanningen, kan men gebruik maken van level shifters. Figuur 6: level shifters In bovenstaande afbeelding is te zien dat een deel werkt op 3.3V en een deel op 5V. Ertussen wordt een N-kanaals MOSFET van het verrijkingstype geplaatst. De gates worden verbonden met de laagste voedingsspanning. De sources worden verbonden met het deel dat op de laagste voedingsspanning werkt en de drains met het deel met de hoogste spanning. 7
15 2.4.3 Data overdracht Enkel een master kan data overdracht initiëren op een I²C bus. Wanneer deze wenst te communiceren met een slave moet deze zich eerst de bus toe-eigenen. Dit is enkel mogelijk als de bus niet in gebruik is. In deze toestand zijn zowel de SDA als de SCL lijn hoog. De master moet een startconditie genereren om andere apparaten te melden dat hij controle over de bus neemt. Om dit te realiseren trekt hij de SDA lijn laag en laat hij de SCL lijn hoog. Dit is een unieke situatie aangezien tijdens normale overdracht de SDA lijn enkel kan wijzigen als de SCL lijn laag is. Alle andere apparaten weten nu dat een overdracht zal optreden. Aan het einde van een overdracht moet een stop conditie worden gegenereerd. Hiervoor maken we de SDA lijn hoog terwijl de SCL lijn ook hoog is. Dit is eigenlijk de standaardsituatie als geen overdracht plaatsvindt. Figuur 7: start en stop conditie I²C Tussen de start en stopconditie vindt er dus dataoverdracht plaats. Data wordt tussen master en slave overgedragen in de vorm van bytes. De eerste byte bij elke overdracht is het adres van de slave. Zeven van de acht bit in de adresbyte geven ook het werkelijke adres weer. De laagste orde bit geeft aan of het om een lees of schrijfopdracht gaat. Als deze op 0 staat betreft het een schrijfactie, anders hebben we te maken met een leesactie. De meest significante bit wordt bij overdracht eerst verstuurd. Figuur 8: volledige data overdracht I²C 8
16 Als er communicatie plaatsvindt dan zorgt de master ervoor dat de SCL periodiek hoog en laag wordt. Data op de SDA lijn mag enkel veranderd worden als de SCL lijn laag is. Aangezien de aangesloten IC s vaak maar beschikken over een beperkt geheugen, moet elke byte die verzonden wordt ook worden bevestigd door de ontvanger. Als een master een byte heeft verzonden wordt een negende klokpuls gebruikt voor de bevestiging. De slave trekt dan de SDA lijn laag. Als dit niet gebeurt weet de master dat er een fout is opgetreden gedurende de dataoverdracht. Wanneer een slave bezig is met een opdracht of te langzaam werkt en dus niet in staat is zijn volgende byte te ontvangen voor de vorige verwerkt is, dan kan de periode na de negende bevestigingsbit worden gebruikt om de master te laten wachten. Opnieuw is hier de logica om de master af te remmen heel eenvoudig. Wanneer de master een nieuw byte wenst te verzenden moet de master de SLC lijn laag maken. De master wijzigt daarna de SLC lijn naar zijn hoog toestand door zijn uitgang in hoge impedantie te schakelen. Normaal zal de pull-up weestand de toestand van de SLC lijn naar hoog brengen, maar wanneer de slave de communicatie wil vertragen trekt hij eenvoudigweg de SLC lijn naar de lage toestand voor de periode die het nodig heeft om zijn voorgaande activiteiten te beëindigen. De master kan alleen de dataoverdracht verder zetten wanneer hij detecteert dat de SLC lijn weer hoog wordt. Hiermee is een zeer eenvoudige en effectieve methode gecreëerd om langzame slaves met gelimiteerde verwerkings- en geheugencapaciteit te laten communiceren met snellere masters. Wanneer alle bytes zijn ontvangen en verwerkt wordt de stopconditie door de master gegenereerd om de bus vrij te geven voor andere communicatie. 9
17 3 Hardware 3.1 Blokschematisch Een eerste taak van deze masterproef is het ontwikkelen van een stuk hardware, compatibel met de starterkit en het ml40x ontwikkelplatform van Xilinx. Bij de ontwikkeling van het algoritme werd voornamelijk gebruik gemaakt van de starterkit. De hardware wordt gebouwd rond twee hoofdcomponenten. Enerzijds wordt gebruik gemaakt van de SAA7113H decoder chip van Philips. De tweede belangrijke component is de FS453 focus chip. De hardware kan blokschematisch als volgt worden voorgesteld. Het volledige schema is in de bijlage terug te vinden. Figuur 9: blokschema hardware SAA7113H decoder chip [5] De 9-bit video input processor is een combinatie van een twee kanaals analoog preprocessing circuit. Dit bevat onder andere een anti-aliasing filter, een ADC, een clock generation circuit (CGC), een digitale muti-standaard decoder en een helderheids, contrast en saturatie controle circuit. De decoder is in staat om PAL, SECAM en NTSC signalen om te zetten in ITU-R BT compatibele kleur component waarden. Deze chip kan automatisch detecteren of hij te maken heeft met een beeldfrequentie van 50 Hz of 60 Hz en kan automatisch schakelen tussen PAL en NTSC standaarden. De verschillende instellingen die mogelijk zijn worden ingesteld door bepaalde waarden in interne registers te plaatsen. Zo kunnen bijvoorbeeld luminantie en chrominantie instellingen gebeuren door een bepaalde waarde in het register te plaatsten. Al deze registers worden 10
18 ingesteld met behulp van I²C. De specifieke waarden die ingesteld worden zijn overgenomen van een bestaand project met gelijkaardige hardware FS453 focus chip [6] Figuur 10: decoder chip SAA7113H Eerst en vooral dient opgemerkt te worden dat de focus chip in het kader van deze masterproef eigenlijk niet gebruikt wordt. Deze is echter wel aanwezig op de print om eventueel later nog gebruikt te worden. De FS453 neemt digitale beelden aan en produceert SDTV (Standard Defenition Television) of HDTV analoge output. In SDTV mode worden volgende acties uitgevoerd: Het beeld wordt geconverteerd en geschaald De flicker wordt verwijderd. ( Flicker treedt op bij CRT schermen met een te lage refresh rate, waardoor bepaalde fosfors hun excitatie verliezen tussen opeenvolgende beschietingen van het elektronenkanon. De data wordt geëncodeerd naar PAL of SECAM formaten. In HDTV mode worden kleurruimteconversies uitgevoerd en de nodige synchronisatiesignalen toegevoegd. 11
19 Om SDTV output te creëren bijvoorbeeld verandert de FS453 de RGB video naar YCrCb. Het gebruikt gepatenteerde technologie om het aantal videolijnen en aantal pixels per lijn zo te schalen zodat dit correspondeert met de specifieke SDTV standaard. Dit zorgt ervoor dat het scherm van de gebruiker volledig kan gevuld worden zonder gebruik te maken van bijvoorbeeld lege gebieden of vervormingen van het beeld. De FS453 encodeert dan het beeld dan naar interlaced SDTV video en zendt dit uit via zijn DAC s. Figuur 11: focus chip Ook hier weer moeten specifieke registers worden ingesteld om enkele instellingen te realiseren. Dit wordt weer gedaan aan de hand van bepaalde waarden die in registers worden geplaatst met behulp van I²C Print ontwerp Het volledige schema van het ontwerp is terug te vinden in bijlage. Daarbij zijn duidelijk de twee connectoren te zien om compatibel te zijn met de twee verschillende Xilinx borden. Het enige wat ontbreekt in het ontwerp zijn de pull up weerstanden voor I²C. Deze zijn nadien manueel toegevoegd op de print. Bij de print layout is gekozen voor een ontwerp in vier lagen, waarbij 1 vlak massa is en 1 vlak de voeding. Er wordt gebruik gemaakt van het Manhattan principe. Dit houdt in dat alle lijnen van de toplaag bijvoorbeeld zo veel mogelijk in horizontale richting liggen terwijl deze van de onderste laag dan zoveel mogelijk in verticale richting liggen. Dit kan ook omgekeerd. Dit helpt om complexere designs te maken. Het design is in bijlage te vinden. 12
20 4 Beschrijving van het algoritme: VHDL 4.1 Blokschematisch Om het probleem zo efficiënt mogelijk aan te pakken en het ontwikkelen iets te vereenvoudigen is het probleem opgesplitst in twee deelblokken. In een eerste stap wordt een data separator ontwikkeld die de inkomende videostroom aanpast zodat de integral image makkelijker kan berekend worden in het tweede blok, namelijk de integrator. Blokschematisch ziet dit er als volgt uit: Figuur 12: blokschema ontwerp Het videosignaal is afkomstig van de output van de decoderchip. Ook het llc kloksignaal wordt door deze chip gegenereerd. In de data separator wordt nu een start_line, een start_frame en een enable puls aangemaakt. De enable puls zal hoog worden als eigenlijke informatie binnenkomt die kan gebruikt worden om de integral image op te berekenen. De start_line puls duidt evident op een nieuwe lijn en de start_frame puls toont dan het begin van een nieuw frame. Al deze informatie wordt nu gebruikt om de integral image te berekenen met de correcte inputwaarden. Data_out is een 26 bit brede vector. Deze breedte wordt bekomen door volgende berekening. Een frame bestaat uit een even en een oneven field. Een frame heeft 625 lijnen, waardoor een field dus bestaat uit 312,5 lijnen. Deze bevatten niet allemaal actieve beeld informatie. Actieve data gaat van lijn 23 tot 310 in het eerste field en van lijn 336 tot 623 in het tweede field. Om helemaal precies te zijn begint de data maar in de tweede helft van lijn 23 en deze eindigt na de eerste helft van 623. In totaal geeft dit 287, ,5 = 575 lijnen met effectief actieve data. Deze twee halve lijnen worden vaak als volledig beschouwd en dan heeft men toch 576 effectieve scanlijnen, of 288 lijnen per field. Elke lijn bestaat uit 720 pixels die elk 256 verschillende waarden kunnen aannemen. We moeten dus het volgende uitrekenen: 720 x 255 x 288 = Dit kan worden opgeslagen in een 26 bit brede vector. 13
21 4.2 Data Separator [7] [8] De SAA7113H digitaliseert de inkomende videostroom. Deze maakt gebruik van chroma subsampling. Dit komt erop neer dat video geëncodeerd wordt met een lagere resolutie voor chrominantie of kleur dan voor luminantie. Dit wordt gedaan omdat er altijd limitaties zijn bij de opslag of bij de transmissie van video. Daardoor ontstaat de behoefte om het signaal te reduceren. Aangezien het menselijk zicht veel gevoeliger is voor veranderingen in intensiteit dan in kleur, is het mogelijk om een videosysteem te optimaliseren door meer bandbreedte toe te kennen aan de luminantie component Y dan aan de kleurverschilcomponenten C b en C r. Het 4:2:2 systeem dat hier toegepast wordt, gebruikt slechts twee derde van de bandbreedte die anders nodig zou zijn. Deze reductie heeft bijna geen visuele invloed. In het 4:2:2 systeem worden de video data woorden onder de vorm van een 27Mbyte/s multiplex in volgende volgorde verzonden: C B, Y, C R, Y, C B, Y,. 14
22 4.2.1 Structuur van het videosignaal Op figuur 14 is te zien hoe de video in een datastroom verwerkt is. De sample identificatie gebeurt in overeenkomst met de identificatie in ITU-R BT Figuur 13: structuur videosignaal De samples tussen haakjes zijn voor als er 625 (PAL) in plaats van 525 lijnen (NTSC) zijn Timing referentie codes Er zijn twee timing referentiesignalen. Eén aan het begin van iedere video datablok en één op het einde van ieder blok. Ze heten respectievelijk SAV (start of active video) en EAV (end of active video). Dit is duidelijk te zien in vorige figuur. Ieder timing referentiesignaal bestaat uit een sequentie van vier woorden. Deze zijn opeenvolgend gelijk aan FF XY (de waardes worden uitgedrukt volgens hexadecimale 15
23 notatie). De eerste drie woorden zijn een vast voorvoegsel en zijn gereserveerd voor het gebruik van timing referentiesignalen. Het vierde woord bevat informatie die de identificatie van het tweede veld, de status van de field blanking en de status van de line blanking definieert. Het gebruik van deze timing referentiesignalen wordt toegelicht in onderstaande tabel. Data bit Eerste woord Tweede woord Derde woord Vierde woord nummer (FF) (00) (00) (XY) 9 (MSB) F V H P P P P Tabel 1: timing referentie codes Het controlewoord wordt hier dus voorgesteld door XY. Dit bestaat eigenlijk uit tien bit. Hiervan worden meestal slechts 8 bit gebruikt. De twee minst significante bits worden dan niet gebruikt. De rest wordt hieronder toegelicht. F = 0 gedurende het eerste veld en F = 1 gedurende het tweede veld V is overal 0 behalve tijdens de field blanking H = 0 in SAV en H = 1 in EAV P 0,P 1,P 2,P 3 zijn protectiebits De protectiebits zijn afhankelijk van de toestanden van F, V en H. Deze voorziening kan bij de ontvanger 1 bit fouten corrigeren en 2 bit fouten detecteren maar niet meer corrigeren. Dit wordt duidelijk gemaakt in onderstaande tabel. Bij elke toestand van F, V en H bestaat een onafhankelijke code voor P 3, P 2, P 1 en P 0. Van deze voorziening wordt echter geen gebruik gemaakt in deze masterproef. Tabel 2: protectie bits 16
24 Tabel 3 geeft de waarden van de verschillende codewoorden weer voor alle mogelijke gevallen. Dit kan heel handig zijn bij het bekijken van bijvoorbeeld een inkomende videostroom. Als een codewoord wordt gevonden dan kan hiermee onmiddellijk worden nagegaan of dit zich bevindt in het eerste of tweede veld. Het is ook duidelijk of dit zich al dan niet in het blanking gebied bevindt. const. F V H P3 P2 P1 P0 const. const. XY (hex) XY (dec) SAV active picture D 151 EAV 1st field AB 171 SAV VBI B6 182 EAV C7 199 SAV active picture DA 218 EAV 2nd field EC 236 SAV VBI F1 241 EAV Tabel 3: codewoorden per field In de tabel wordt gesproken over field 1 en field 2. Dit is omdat gebruik wordt gemaakt van interlaced scanning of interliniëring. De oneven lijnen worden eerst gescand, gevolgd door de even lijnen. Dit resulteert in een even en een oneven raster waarbij één frame dan bestaat uit twee rasters of fields. Dit wordt verduidelijkt in onderstaande afbeelding. Figuur 14: interlacing Interliniëring werd uitgevonden omdat, wanneer de standaarden gedefinieerd werden, het moeilijk was de hoeveelheid informatie in een volledig frame te versturen zonder flikkeren van het beeld. Een dubbel aantal rasters was hiervoor de oplossing. Omwille van deze interliniëring zijn de even en oneven lijnen verschoven in tijd ten opzichte van elkaar. Dit is meestal niet merkbaar, enkel bij snelle bewegingen kan het beeld wazig worden. 17
25 4.2.3 Het blanking interval Het gedeelte van de videostroom tussen de stukken actieve video staat bekend als het blanking interval. De datawoorden worden gedurende dit interval gevuld met waarden die corresponderen met de blanking levels van de C b, Y en C r signalen. Deze zijn als volgt: Cb = 80h Y = 10h Cr = 80h De sequentie in het blanking gebied is dus: 80, 10, 80, 10, Voor een standaard 625 lijnen systeem (PAL) zal het aantal blanking bytes gelijk worden aan 280. Voor een 525 lijnen systeem wordt dit aantal gelijk aan
26 4.2.4 VHDL beschrijving 19
27 20
28 21
29 4.2.5 Toelichting De hoofdfunctie van de data separator is zoals gezegd het codewoord opsporen en aan de hand van dit codewoord de nodige synchronisatie signalen aanmaken. Het codewoord volgt altijd na de sequentie FF Deze sequentie moet herkend worden om te weten dat het volgende woord het effectieve codewoord is. Hiervoor wordt als volgt te werk gegaan: Figuur 15: shifting proces De video stroom wordt vier maal doorgeklokt. Als nu video_shift2 FF is en video_shift en video_shift1 gelijk aan 00 dan is duidelijk dat het volgende woord dat zal ingeklokt worden het gezochte codewoord is. Deze detectie gebeurt in het CW_recognition proces. In het make_vertical_blanking_signal proces wordt een signaal aangemaakt dat hoog wordt gedurende het verticale blanking interval. Het make_start_line_proc en make_end_line_proc maken respectievelijk de start_line puls en de end_line puls aan. Omdat de videostroom vier keer doorgeklokt wordt, moeten alle signalen die gegenereerd zijn op basis van de originele stroom ook vier maal doorgeklokt worden. Alle signalen met achtervoegsel _O hebben betrekking op de originele videostroom. Als een signaal het achtervoegsel _S heeft dan heeft dit betrekking op video die al doorgeschoven is. Omdat, omwille van timing redenen, sommige signalen nog eens moeten doorgeklokt worden, krijgen deze het achtervoegsel _I. Om de videostroom vier maal door te klokken wordt gebruik gemaakt van SRL16 schuifregisters. De code waarin al deze data opgeschoven wordt aan de hand van deze schuifregisters is niet opgenomen in dit verslag omdat dit vrij lange code is die toch niets anders doet dan data doorschuiven. De volledige code is echter wel in bijlage opgenomen. Op basis van de start_line_o puls en de end_line_s puls kan nu een enable signaal gegenereerd worden dat hoog komt wanneer data binnenkomt waarop het algoritme effectief kan berekend worden. Dit is dus wanneer active video binnenkomt. Vervolgens word een active signaal aangemaakt. Dit is eigenlijk een hulpsignaal dat gebruikt wordt in het volgende proces om op het juiste moment een start_frame puls te genereren. In de laatste processen wordt ervoor gezorgd dat, wanneer active video binnenkomt, de chrominantiewaarden eigenlijk uit de stroom worden gehaald en de luminantiewaarde wordt gekopieerd op die plaats. De luminantiewaarde is nu beschikbaar gedurende twee klokpulsen. Dit kan de detectie ervan vereenvoudigen. 22
30 4.2.6 Beschrijving testbench 23
31 24
32 4.2.7 Bespreking De testbench wordt volledig beschreven in VHDL code. Dit heeft verschillende voordelen. Zo kunnen er verschillende klokken gegenereerd worden. In onderstaande code wordt de pixelklok (27MHz) gegenereerd. llc_5ns is een klok die 5 nanoseconden achterloopt op deze klok. Dit zorgt ervoor dat we de natuurlijke delay op de klok kunnen nabootsen. Het maakt het dus realistischer. Dit geeft dus eigenlijk ook in een behavioral simulatie een vrij realistisch beeld. Zo kan veel vlugger gesimuleerd worden dan in het geval telkens een post-route simulatie wordt uitgevoerd. Een ander voordeel is dat de code grotendeels kan hergebruikt worden voor andere devices under test (DUT) die dezelfde interface gebruiken. Gedurende de active video sequenties worden de chrominantie waarden ingesteld op 80 (hexadecimaal). De luminantie waarden lopen op. In het acht bit codewoord zijn eigenlijk enkel de vier meest beduidende bits noodzakelijk om de start_line en start_frame puls te maken. De vier minst beduidende bits worden dus in deze testbench allemaal gelijk aan 0 gehouden. Ze spelen toch geen rol. Hier wordt enkel een stuk van deze testbench weergegeven. Het vervolg van de code is grotendeels gelijkaardig. In de volledige testbench worden twee fields bekeken. Er is ervoor gezorgd dat alle mogelijke codewoorden, zowel van field 1 als van field2, voorkomen. Zo kan gecontroleerd worden of in elke situatie wel de juiste signalen gegenereerd worden. 25
33 4.2.8 Simulaties Om te controleren of in elke situatie wel de juiste signalen gegenereerd worden, moet na elk mogelijk codewoord gekeken worden of dit correct is. Hieronder worden daarom nog eens alle mogelijke codewoorden weergegeven. const. F V H P3 P2 P1 P0 const. const. XY (hex) XY (dec) SAV active picture D 151 EAV 1st field AB 171 SAV VBI B6 182 EAV C7 199 SAV active picture DA 218 EAV 2nd field EC 236 SAV VBI F1 241 EAV Tabel 4: codewoorden per field In een eerste simulatie wordt een EAV sequentie bekeken gedurende het verticale blanking interval van field 1. Alle signalen blijven laag. Figuur 16: EAV in blanking interval field 1 In het tweede geval wordt een SAV sequentie bekeken gedurende het verticale blanking interval van field 1. Alle signalen blijven weer laag. Figuur 17: SAV in blanking interval field 1 Een derde simulatie toont een EAV sequentie in het gebied van active video van field 1. Ook hier weer blijven alles signalen laag zoals dit zou moeten. 26
34 Figuur 18: EAV in active video field 1 In de laatste simulatie wordt een SAV sequentie weergegeven. Vanaf hier komt dus data binnen waarmee het algoritme effectief kan berekend worden. Omdat dit ook het begin van een frame is, wordt het start_frame signaal hoog. Ook het start_line signaal wordt hoog. Met het activeren van het start_line signaal komt tenslotte ook het enable signaal hoog. Hier is ook zichtbaar hoe de chrominatiewaarden uit de stroom zijn gehaald en dat daarin de waarde van de luminantie is gekopieerd. Figuur 19: SAV in active video field 1 Voor het tweede field zijn de simulaties gelijkaardig. Enkel bit 6 van de codewoorden is anders. Dit is de bit die aanduidt in welk field we ons bevinden. Maar deze bit heeft geen belang voor het bepalen van de start_line, start_frame puls en dus ook niet voor het enable signaal. 27
35 4.3 Integrator Blokschema Het resultaat verkregen door de separator moet nu gebruikt worden om daarop correct de integral image te berekenen. Figuur 20: blokschema integrator In het eerste gedeelte wordt elke volgende pixel opgeteld met de som van alle vorige van de rij. Cam_data wordt opgeteld met de som van de vorige waarden dus. Bij de eerste waarde van een lijn zit daar natuurlijk nog een 0. De eerste pixel wordt dus gewoon doorgestuurd. De tweede pixelwaarde van cam_data wordt nu opgeteld met de vorige. Zo wordt de eerste rij opgeteld. Wanneer de tweede lijn start moet de latch eerst gereset worden. Alle waarden van de eerste rij zijn intussen ingeklokt in een first in first out register (FIFO). Deze waarden komen nu beschikbaar aan het begin van de tweede rij. Zo wordt de eerste pixel van de tweede rij opgeteld met de eerste pixel van de eerste rij. Dit gaat zo verder tot de integral image van een volledig beeld is berekend. Er moet wel op gelet worden dat bij de start van een nieuw frame de FIFO volledig gereset wordt zodat de eerste lijn niet opgeteld wordt met de laatste van het vorige frame. 28
36 Cam_data is een 8 bit luminantie waarde die verkregen wordt van de data separator. Dit komt binnen in een continue stroom die er als volgt uitziet. Alles staat hier wel in decimale vorm. Figuur 21: input stroom integrator 29
37 4.3.2 VHDL beschrijving 30
38 31
39 4.3.3 Toelichting In een eerste poging werd gekozen voor een gepipelined design. Deze techniek heeft voordelen in bepaalde situaties maar ook enkele minpunten. Voor deze techniek wordt de 27 Mhz pixelklok verdubbeld tot 54 Mhz. Er zijn nu vier klokpulsen beschikbaar tussen de opeenvolgende luminantie waarden. Door zo te werken wordt de timing, die nu al vrij kritisch is, nog ingewikkelder. Een tweede probleem is het verdubbelen van de klokfrequentie. Het lukt niet voor alle Xilinx borden om 27 Mhz te verdubbelen omdat dit te laag is. Door al deze problemen die optreden bij het pipelinen wordt er toch gekozen om dit hier niet te doen. Dit maakt het onmiddellijk ook al een stuk eenvoudiger. De timing is ook makkelijker onder controle te houden op deze manier. Als gewerkt wordt met een pipeline moet altijd heel sterk gecontroleerd worden of de waarde waarmee gewerkt wordt al up to date is om een volgende bewerking te starten in een volgend stadium van de pipe. Via de Xilinx core generator wordt automatisch een fifo gegenereerd van 26 bit breed. Er moet wel op gelet worden dat een synchrone reset wordt gebruikt bij de fifo. Dit levert anders telkens foute resultaten op. Het signaal not_first_line is laag gedurende elke eerste videolijn. Na de eerste lijn wordt dit signaal hoog. Aan de hand van dit signaal en het synchronisatie signaal wordt beslist wanneer er gelezen wordt uit de fifo. Omdat het synchronisatiesignaal op het juiste moment moet vallen, wordt dit ook nog eens twee keer doorgeklokt. Er kan dan gebruik gemaakt worden van deze synchronisatiesignalen om alle bewerkingen in accumulator 1 en 2 goed te laten verlopen. In accumulator1_proc wordt ervoor gezorgd dat aan het begin van een nieuwe lijn een reset gebeurt van de latch. In elk ander geval wordt de waarde van cam_data opgeteld bij de vorige som. In accumulator2_proc gebeurt iets gelijkaardig. Het enige verschil is dat nu de waarde van accumulator 1 wordt opgeteld met de uitgang van de fifo. Het is duidelijk dat dit uiteindelijk veel eenvoudiger is dan een gepipelined ontwerp. Met behulp van de synchronisatie signalen wordt de timing gegarandeerd. De uitwerking ziet er zo uiteindelijk heel simpel uit terwijl dit toch heel wat voeten in de aarde heeft. 32
40 4.3.4 Beschrijving testbench 33
41 34
42 4.3.5 Bespreking De testbench wordt heel simpel gehouden. Er worden enkele videolijnen gegenereerd. De luminantiewaarden lopen gewoon op. De timing referentiecodes zijn hier gewoon vervangen door de hexadecimale waarde 60. Dit getal is volledig willekeurig gekozen want het speelt hier uiteindelijk toch geen rol aangezien alle synchronisatiesignalen al aangemaakt zijn in de data separator. Er wordt verondersteld dat een lijn 21 luminantie waarden bevat. In onderstaande tabel zijn nu drie rijen weergegeven. Er wordt ook weergegeven wat de output van accumulator 1 en accumulator 2 zou moeten zijn. Zo kan vlug vergeleken waarden of de bekomen outputs wel voldoen. input accumulator accumulator Tabel 5: simulatiewaarden integrator 35
43 4.3.6 Simulaties Er wordt gecontroleerd of na drie lijnen nog steeds de dezelfde waarden worden gevonden als in bovenstaande tabel. In een eerste simulatie wordt gekeken bij de start van de eerste lijn. Figuur 22: start eerste lijn integrator Cam_data is het signaal dat verkregen wordt van de data separator. Zoals te zien is het signaal accumulator1 telkens de som van de waarde van cam_data met alle vorige waarden van die rij. Dit moet nu opgeteld worden met de uitgang van de fifo. Dit is gedurende de eerste lijn nog nul, dus de output is dezelfde als accumulator 1. Dit is enkel een klokpuls verschoven. In een tweede simulatie wordt de start van de tweede lijn bekeken. Figuur 23: start tweede lijn integrator Zoals reeds besproken wordt bij de start van een nieuwe lijn de latch gereset en wordt accumulator1 even gelijk aan 0. De eerste pixelwaarde van de eerste rij was gelijk aan 1 en dit wordt nu opgeteld met de eerste pixelwaarde van de tweede rij, namelijk 22. Het resultaat is 23 wat dus correct is. Alle volgende waarden uit de simulatie zijn ook gelijkaardig aan deze berekend in bovenstaande tabel. 36
44 Tenslotte wordt ook nog de start een derde lijn bekeken. In de fifo moeten nu alle data_out waarden zitten van de vorige lijn. Figuur 24: start derde lijn integrator Weer wordt de latch correct gereset bij de start van de nieuwe lijn. In de FIFO zitten alle waarden van data_out van de vorige lijn en ook de output is correct. Het integrator gedeelte van de code werkt dus volledig correct. 37
45 4.4 Integrator + simulator Toplevel VHDL beschrijving 38
46 Hierboven staat het toplevel beschreven. De data_separator en het integral_image blok worden toegevoegd. Vervolgens worden ook enkele signalen gedeclareerd om de twee blokken met elkaar te linken Beschrijving testbench Om het geheel te testen wordt gebruik gemaakt van dezelfde testbench als deze gebruikt bij de data_separator. Deze twee blokken krijgen namelijk dezelfde inputsignalen te verwerken Simulaties In deze simulaties wordt gecontroleerd of de twee afzonderlijk werkende blokken ook correct kunnen samenwerken. Naast de drie signalen llc, video en data_out worden ook nog enkele signalen van de data_separator weergegeven om eenvoudiger de start van een nieuwe lijn of een nieuw field te kunnen zien. Alle waarden in de simulaties zijn decimaal weergeven om eenvoudig te kunnen controleren of de uitkomst wel correct is. Figuur 25: start eerste lijn separator - integrator Bij het begin van een lijn is duidelijk te zien dat alles correct werkt. Het enable signaal komt hoog en dan is te zien dat de data van cam_data telkens wordt opgeteld met de som van de vorige waarden. In een volgende simulatie wordt nu gekeken bij de start van een volgende lijn. Daartussen zit natuurlijk een blanking interval waarin geen waarden worden binnengehaald maar dit is natuurlijk al getest bij de data separator. Om nu te kijken bij de start van een tweede lijn moet de testbench licht aangepast worden. Er moet nog een videolijn bijkomen in het eerste field om te kunnen testen bij het begin van een tweede lijn. Als dit gebeurd is, is te zien dat de waarden van de eerste rij nu uit de fifo rollen en worden opgeteld met de nieuwe rij. Dit werkt dus correct. 39
47 Figuur 26: start tweede lijn separator - integrator 40
48 5 Het integreren van Picoblaze [3] Algemeen Om Picoblaze draaiende te krijgen moeten eerst enkele files worden toegevoegd aan het design. Het merendeel van deze files wordt geleverd door Xilinx zelf. Daar moet dus niets aan veranderd worden. De VHD file van de kcpsm3 wordt eerst toegevoegd. Deze zorgt voor de algemene werking van de processor. Figuur 27: integreren van picoblaze In bovenstaande figuur is te zien dat ook nog twee andere files worden toegevoegd. Dit zijn uart_rx.vhd en uart_tx.vhd. Deze macro s zijn eigenlijk een simpele UART transmitter en receiver. Deze hebben beiden volgende vaste karakteristieken: - 1 start bit - 8 data bits ( serieel verzonden of ontvangen met de minste beduidende bit eerst ) - geen pariteit - 1 stop bit Deze macro s kunnen met elkaar communiceren maar zijn ook compatibel met standaard UART communicatie protocollen zoals communicatie met een PC. In deze toepassing zal dit gebruikt worden om via RS232 bepaalde registers van de decoder manueel in te stellen of te wijzigen. Elke macro bevat ook een 16 byte FIFO buffer. Deze worden voor buffering gebruikt. Deze twee fifo s worden ook toegevoegd aan het design. Het enige wat dan nog moet worden toegevoegd zijn de instructies voor de kcpsm3. Deze worden geprogrammeerd in assembler. Aangezien deze code vrij uitgebreid is, is deze in bijlage toegevoegd. Dit programma wordt geschreven in een standaard Notepad of Wordpad tool. Dit bestand moet 41
49 worden opgeslagen met een.psm extensie. Om nu een VHD file hiervan te genereren moeten enkele stappen doorlopen worden. Een DOS venster moet geopend worden en er moet genavigeerd worden naar de directory waarin het bestand is opgeslagen. Met het commando kcpsm3 <filename>.psm wordt het programma geassembleerd. Dit gebeurt heel snel. De gegenereerde VHD file moet nu ook worden toegevoegd aan het design. Mediatronix pblazide is een handige tool die het debuggen van deze code kan vereenvoudigen. Het probleem dat hierbij wel optreedt is dat daarbij een andere syntax wordt gebruikt. De verschillen zijn niet zo groot maar dit zorgt toch al vlug voor heel wat problemen om code om te vormen om te gebruiken in deze tool. Aanvankelijk werd geprobeerd om zelf de assembler code volledig te ontwikkelen, uitgaande van een redelijk gelijkaardig project. Maar door de verschillende problemen die optraden werd dit niet afgewerkt. Deze problemen hebben vooral te maken met het verschil in syntax tussen de KCPSM3 instructies en de pblazide instructies. Het oude project is namelijk ontwikkeld met behulp van deze tool, maar in de meest recente versie traden constant problemen op als deze code werd ingeladen. Deze code werd dus eerst manueel omgevormd naar de andere syntax maar ook zo bleven fouten optreden. Er is dan maar beslist om de code van het oude project volledig te behouden. Deze is geschreven voor twee decoders en 1 encoder en biedt ook een interface naar de gebruiker waarmee manueel waarden van registers kunnen worden ingesteld of gewijzigd. De tweede decoder wordt in dit project dus gewoon niet gebruikt. Als dit programma nu in de FPGA geladen wordt en via hyperterminal een connectie wordt opgezet met de PC dan wordt het volgende zichtbaar: Figuur 28: hyperterminal Met het commando r1 12 wordt register 12 van de decoder uitgelezen. W1 12 3C zorgt er dan weer voor dat de waarde 3C wordt geschreven naar register 12 van de decoder. Dit kan nu gecontroleerd worden door te register 12 nog eens uit te lezen. Dit geeft nu duidelijk het resultaat 3C. Met het commando i1 wordt een restore gedaan van alle originele parameters. Om dit beeld te verkrijgen moet zeker bij de ASCII instellingen de optie: regelinvoer aan binnenkomende regeleinden toevoegen worden aangevinkt. 42
50 Figuur 29: instelling hyperterminal In een volgende stap moet nu ook nog wat zelf gemaakte code worden toegevoegd. Deze stelt onder andere de juiste baudrate in voor de UART macro s Extra code In het toplevel van het design moeten nu eerst en vooral al deze componenten geïnstantieerd worden en de verschillende port maps moeten worden uitgeschreven. Omdat dit vrij omvangrijk is en weinig bijbrengt tot de redenering wordt dit in bijlage toegevoegd. De belangrijkste stukken worden hieronder wel beschreven. Het eerste stuk is nodig als ondersteuning van de uart_rx.vhd. Er wordt gekeken naar de 2 minst beduidende bits van de port_id van de kcpsm3. Dit geeft weer welke actie moet worden ondernomen. Het kan zijn dat de uart_status_port of rx_data moet worden ingelezen. Als de port_id 10 heeft als waarde van de twee minst beduidende bits dan worden de SCL en SDA lijn ingelezen. In andere gevallen wordt niets ingelezen. Dit alles wordt hieronder weergegeven. 43
51 Het tweede stuk dient als ondersteuning voor de uart_tx.vhd. Er wordt iets gelijkaardig gedaan als in vorig blok maar hier dan natuurlijk voor outputs. Hier worden eigenlijk enkel de I²C lijnen aangestuurd. Het laatste stuk dat toegevoegd wordt, regelt de baudrate. De UART macro s leiden de timing voor zenden en ontvangen af uit het signaal en_16_x_baud. Zoals de naam doet vermoeden moet dit signaal aan de macro aangeboden worden aan een rate die 16 maal de gewenste bitrate is. Een simpele formule die weergeeft door hoeveel we de interne klok moeten delen is als volgt: clk _ rate delingsfac tor = baud x 16 In deze toepassing is de interne klokfrequentie gelijk aan 50 Mhz en de gewenste baudrate is Dit komt erop neer dat we een delingsfactor van 81 nodig hebben. Dit is duidelijk te zien in onderstaande code. 44
52 6 Debuggen: Chipscope [9] 6.1 Algemeen Met het groeien van de densiteit van moderne FPGA s stijgt ook de moeilijkheid om test probes aan te brengen en dus ook de moeilijkheid om deze designs te debuggen. Metingen doen met een scope wordt dus vaak zo goed als onmogelijk. Daarom introduceerde Xilinx de Chipscope pro tool. Figuur 30: chipscope Figuur 31 toont een blokschema van een Chipscope pro systeem. Gebruikers kunnen een ICON, ILA, VIO en ATC2 core plaatsen in hun design door deze te genereren met gebruik van de Core generator. Deze worden collectief de Chipscope pro cores genoemd en kunnen toegevoegd worden aan het gesynthetiseerde design met behulp van de Core inserter tool. ICON staat voor integrated controller core terwijl ILA staat voor integrated logic analyzer. Dit zijn de twee meest gebruikte cores. VIO staat voor virtual input output en de ATC2 staat voor Agilent trace core 2. In deze toepassing wordt geen gebruik gemaakt van de parallelle kabel maar van een USB kabel. De cores en de analyser voorzien verschillende features die nodig zijn om moderne FPGA designs grondig te testen. De gebruiker kan tot 1024 data kanalen selecteren. De bufferruimte kan evengoed ingesteld worden. Dit in de range van 256 tot samples. Er kan worden gebruik gemaakt van 16 afzonderlijke trigger ports die elk een breedte kunnen hebben van 256 kanalen. Er kunnen ook verschillende trigger settings worden ingesteld. Deze laten toe 45
53 om nauwkeurig in te stellen vanaf welke conditie zal gecaptured moeten worden. De belangrijkste cores worden hieronder kort besproken ICON core Alle cores gebruiken de JTAG boundary scan port om te communiceren met de host computer. De ICON core verzorgt de communicatie tussen de JTAG boundary scan port van de FPGA en de verschillende ILA cores. Dit kunnen er tot 15 worden. Er is telkens maar 1 ICON core nodig ILA core De ILA core is een logic analyzer core die kan gebruikt worden om gelijk welk intern of extern signaal van het design te monitoren. Aangezien de ILA core synchroon werkt met het te onderzoeken design, zijn alle clock constraints die toegepast worden in het design ook toegepast op alle componenten in de ILA core VIO core De VIO core kan interne FPGA signalen in real time bekijken maar ook aansturen. Het grote verschil met vorige twee cores is dat hier geen on- of off-chip RAM nodig is. Iedere VIO core heeft additionele cellen om transities van signalen te detecteren. Deze core kan ook een statische 1 of 0 naar buiten brengen evenals een pulstrein of een reeks opeenvolgende waarden ATC2 core De Agilent trace core 2 is een debug capture core die speciaal ontwikkeld is om samen te werken met de laatste generatie Agilent logic analyzers. De core voorziet acces van externe logic analyzers tot interne FPGA design nets. Figuur 31: ATC2 core 46
54 6.2 Resultaten Hieronder worden nu enkele simulaties uitgevoerd. Alle waarden op deze beelden zijn weergegeven in hexadecimale vorm, tenzij anders vermeld. Om de betekenis van de verschillende signalen duidelijk te maken wordt het algemeen blokschema hieronder nog eens weergegeven. Sig_fifo_out en accumulator1 zijn twee interne signalen van de sommator. Als men deze signalen optelt moet men dezelfde waarde bekomen als data_out. Figuur 32: blokschema ontwerp Om alle signalen te kunnen bekijken, ook tussen de verschillende blokken, moet eerst nog een kleine instelling gebeuren. Bij de synthesis options moet de optie keep hierarchy op yes staan. Indien dit niet gebeurt krijgen alle interne signalen een andere naam en zijn deze niet meer makkelijk terug te vinden om te capturen Field SAV lijn 1 In een eerste simulatie wordt een trigger geplaatst op start_frame. Dit wil zeggen dat als een start frame puls zich voordoet, het samplen begint. Figuur 33: SAV lijn 1 47
55 Het codewoord is hier gelijk aan 80. Dit wil zeggen dat het dus onderdeel is van een start of active video sequentie. Het frame is net gestart. Dit wil zeggen dat nog geen waarden uit de FIFO komen. Dit is ook duidelijk te zien. De waarde van data_out is dus telkens gelijk aan die van accumulator EAV lijn 1 Als nu verder gekeken wordt dan is rond sample 1435 een end of active video sequentie te zien. Figuur 34: EAV lijn 1 Het enable signaal wordt laag. De luminantie wordt nu telkens gelijk aan 10h terwijl de chrominantie gelijk wordt aan 80h. In het sommator gedeelte gebeurt nu eigenlijk niets meer. De waarden veranderen niet meer SAV lijn 2 Figuur 35: SAV lijn 2 Het signaal not_first_line komt hoog. Dit geeft eigenlijk aan dat het gelijk welke videolijn kan zijn behalve de eerste. In deze simulatie zijn de bovenste drie signaal decimaal weergegeven. 48
56 Zo kan duidelijker gecontroleerd worden dat de som van accumulator1 en sig_fifo_out gelijk wordt aan data_out. Ook het feit dat nu pas waarden uit de FIFO komen klopt dus EAV van een andere lijn dan de eerste Hier wordt getriggerd op een EAV sequentie. Het is moeilijk om ervoor te zorgen dat dit net de sequentie is van de tweede lijn, maar dit is feite ook niet nodig omdat de resultaten voor alle andere lijnen gelijkaardig zijn. Het enable signaal wordt 0 en we komen in het blanking interval. In het sommator gedeelte valt alle activiteit weer weg. Figuur 36: EAV van andere lijn dan eerste Field 2 De resultaten voor het tweede field zijn volledig gelijkaardig. Het enige verschil is dat de codewoorden anders zijn. 6.3 Besluit Chipscope is in deze toepassing heel handig gebleken. Dit vooral omdat tijdens het programmeren van de data separator niet goed duidelijk was hoe de eigenlijke videostroom er eigenlijk exact uitzag. Als zo n lijn dan kan gecaptured worden, is er geen twijfel meer mogelijk. Op basis van dit resultaat kan een correcte testbench ontwikkeld worden en zo zijn toch grote fouten uit het design gehaald. In wat volgt zal nu bekeken worden hoe met behulp van chipscope automatisch een testbench kan gegenereerd worden. 49
57 7 Automatisch testbenches genereren [10] 7.1 Motivatie Met behulp van chipscope kan een testbench geëxporteerd worden naar een extern bestand. In een tekstbestand worden dan alle samples opgeslagen. Dit ziet er dan bijvoorbeeld als volgt uit: Figuur 37: geëxporteerde testbench Hierin is duidelijk het sample nummer weergegeven. Een waarde die hier interessant kan zijn is bijvoorbeeld separator_video. Dit is de videostroom die uit de videogenerator komt. Het zou zoals gezegd bijvoorbeeld handig zijn om deze data als input te gebruiken bij een simulatie van de data separator. Dit systeem kan ook gebruikt worden wanneer bijvoorbeeld een design bestaat uit twee logische blokken die data van elkaar gebruiken. Als een eerste blok ontwikkeld is, kan de output daarvan geëxporteerd worden om dan onmiddellijk als input gebruikt te worden bij het tweede blok. Dit kan het simulatieproces een heel stuk versnellen aangezien het schrijven van testbenches vaak een tijdrovende klus is. Daarom zal in wat volgt bekeken worden hoe een tekstbestand kan uitgelezen worden in VHDL. Er zal ook bekeken worden hoe data kan weggeschreven worden naar een tekstbestand. Daarvoor wordt grotendeels gebruik gemaakt van standaard code die beschikbaar is via de site: 50
58 7.2 Lezen uit een bestand In een eerste simpel voorbeeld worden enkele 8 bit waarden uitgelezen. Deze staan in het bestand sim.dat. Dit bestand moet opgeslagen zijn in de map met de VHDL bestanden. Deze waarden zijn hier links afgebeeld. Met Chipscope kunnen binaire waarden worden geëxporteerd dus dit bestand zou realistische waarden kunnen voorstellen VHDL beschrijving 51
59 7.2.2 Bespreking Er wordt bij elke stijgende klokflank gelezen uit het bestand sim.dat en dit wordt dan geschreven naar de output vector Y. Onder de architecture wordt de declaratie gedaan van de input file. Deze is van het type text en wordt geopend in read mode. Een file read wordt gedaan in twee stappen. In een eerste stap wordt een lijn opgehaald van de file met het readline commando en wordt deze opgeslagen in variabele. Deze wordt vervolgens in een tweede stap gelezen met het read commando. Met de conversie functie to_std_logic_vector(s) wordt dit gelinkt aan de vector Y Beschrijving testbench 52
60 Deze beschrijving is vrij simpel. Het enige wat eigenlijk gebeurt is de generatie van een klok en een reset puls Simulatie Figuur 38: simulatie 1 lezen uit bestand Na 40 ns komt de reset puls hoog en 50 ns later wordt deze weer laag. Vanaf dan kunnen waarden ingelezen worden. Het is duidelijk dat de eerste vier waarden al correct worden ingelezen. Hieronder worden de rest van de waarden weergegeven. Figuur 39: simulatie 2 lezen uit bestand Het is duidelijk dat alle waarden correct worden ingelezen. Dit is dus een heel krachtig middel om heel vlug testbenches te laten genereren met een minimum aan extra VHDL code. 53
61 7.3 Schrijven naar een bestand De output van een simulatie kan ook naar een bestand geschreven worden. Dit kan dan bijvoorbeeld ook weer in een volgend blok gebruikt worden VHDL beschrijving In dit voorbeeld worden de twee signalen x1 en x2 gelogd in een file bij elke stijgende klokflank. Onder de architecture wordt weer de declaratie gedaan van de file waarnaar geschreven wordt. De txt_util package bevat een heel simpele manier om te schrijven naar files. Dit gebeurt aan de hand van een print functie. Daarin wordt eerst de file gespecificeerd 54
62 waarnaar geschreven wordt. De functie str() converteert x1 naar een string. De functie hstr() converteert x2 naar een hexadecimaal formaat. In een tweede VHDL beschrijving wordt nu beschreven wat precies naar het bestand wordt gestuurd. In deze beschrijving zijn nu alle ports als output gezet. Er wordt een kloksignaal aangemaakt. De variabele slv wordt bij elke klokpuls met 1 opgeteld. Deze wordt toegekend aan X2. De vijfde bit van slv wordt toegekend aan X1. 55
63 7.3.2 Beschrijving testbench In deze beschrijving worden enkel de twee componenten toegevoegd en de nodige port maps worden uitgevoerd. 56
64 7.3.3 Simulatie en resultaat In de simulatie is het volgende te zien: Figuur 40: simulatie schrijven naar bestand Het bestand waarnaar geschreven werd ziet er nu als volgt uit: Deze tabel loopt nog door tot de waarde 3E. 57
65 8 Controleprogramma 8.1 Doel Wanneer een bestand geëxporteerd wordt met chipscope is het vaak moeilijk op het zicht te zien of de output nu wel degelijk correct is. Daarom wordt een programma in C geschreven dat deze output nu zal gaan controleren. De tabel wordt eerst ingelezen. Vervolgens wordt gecontroleerd op de specifieke sequenties van getallen die een nieuwe lijn of een nieuw field aangeven. Op basis daarvan wordt dan de integral image uitgerekend in software. Het programma is geschreven op basis van een geëxporteerd bestand dat bestaat uit twee videolijnen met daartussen een horizontaal blanking interval. Er is getriggerd in chipscope op basis van een nieuw frame. Het is belangrijk voor de correcte werking van het programma dat altijd getriggerd wordt op basis van een nieuw frame. 8.2 Uitwerking 58
66 59
67 8.3 Bespreking In een eerste stap wordt het tekstbestand ingelezen en in een array geplaatst. Het bestand wordt lijn per lijn uitgelezen. Als een tab teken voorkomt wordt het getal in de volgende kolom van de array geplaatst. Bij een new line teken wordt naar een volgende rij van de array gesprongen. Om te testen of het bestand correct is ingelezen, wordt de array weggeschreven naar het bestand: result.txt. Als dit nu correct is, kan verder gerekend worden met deze waarden. Het is geweten dat getriggerd wordt op een nieuw frame. Er kan dus met zekerheid gezegd worden dat, met 2048 samples, bijna twee volledige videolijnen ingelezen zijn. Er moeten dus drie timing sequenties voorkomen: Een SAV bij de start van de eerste lijn Een EAV sequentie bij het einde van deze lijn, gevolgd door een blanking interval Een SAV sequentie bij de start van de tweede lijn Deze sequenties kunnen nu gedetecteerd worden. De positie van deze sequenties in de array kan berekend worden. Als deze bekend zijn kan de integral image berekend worden in software. Als controle wordt nu bekeken of de laatst berekende integral image waarde, berekend in hardware, overeenkomt met de laatst berekende waarde in software. Als dit zo is, verschijnt op het scherm: The result is correct. Indien dit niet het geval is, verschijnt: The result is not correct. Figuur 41: resultaat controleprogramma 60
Departement industriële wetenschappen en technologie
Departement industriële wetenschappen en technologie Universitaire Campus, gebouw B B-3590 DIEPENBEEK Tel.: 011-23 07 90 Fax: 011-23 07 99 Aansturen en testen van een hybride infrarood beeldopnemer Abstract
Tinyserir-RC5. Datasheet. Tinyserir-RC5 Page: 1 of 8
9600 bps RS-232 interface voor uitlezing van Ontvangen RC5 codes Led aanduiding bij ontvangst van Infrarood pulsen Led aanduiding goede werking Interne firmware Inwendige oscillator Weinig externe componenten
Opgave Tussentijdse Oefeningen Jaarproject I Reeks 4: Lcd Interface & Files
Opgave Tussentijdse Oefeningen Jaarproject I Reeks 4: Lcd Interface & Files 1 Introductie In deze oefening zal je je LCD display leren aansturen. Je controleert deze display door er instructies naar te
PCI Ontwikkelplatformen
PCI Ontwikkelplatformen Jan Genoe KHLim In dit deel bespreken we de verschillende ontwikkelplatformen die ter beschikking staan om een PCI kaart te ontwikkelen. 1 Ontwikkelplatformen van PCI kaarten Gebruik
Klasse B output buffer voor een Flat Panel Display Kolom aansturing
Gevalstudie 1 Klasse B output buffer voor een Flat Panel Display Kolom aansturing IEEE Journal of Solid-state circuits, Vol 34, No 1, Januari 1999, pp 116-119 Jan Genoe KHLim Flat Panel display kolom driver
Specificatie van de I²C bus.
Specificatie van de I²C bus. Het I²C-concept De I²C-bus ondersteunt IC's van de logische families. Twee leidingen, SDA (Serial DAta) en SCL (Serial CLock), verzorgen de uitwisseling van informatie. Iedere
Scan-pad technieken. Zet elk register om in een scan-pad register (twee opeenvolgende D-latches: master-slave):
Zet elk register om in een scan-pad register (twee opeenvolgende D-latches: master-slave): D is de normale data ingang C is de normale fase 1 klok I is de data ingang van het shift-regiester A is de klok
ES1 Project 1: Microcontrollers
ES1 Project 1: Microcontrollers Les 5: Timers/counters & Interrupts Timers/counters Hardware timers/counters worden in microcontrollers gebruikt om onafhankelijk van de CPU te tellen. Hierdoor kunnen andere
Combinatorische schakelingen
Practicum 1: Combinatorische schakelingen Groep A.6: Lennert Acke Pieter Schuddinck Kristof Vandoorne Steven Werbrouck Inhoudstabel 1. Doelstellingen... 2 2. Voorbereiding... 3 3. Hardware-practicum...
S88XPressNetLI v1.0. Installatie- en gebruikershandleiding en naslagwerk KDesign Electronics, PCB ontwerp door RoSoft
S88XPressNetLI v1.0 Installatie- en gebruikershandleiding en naslagwerk. 2008 KDesign Electronics, PCB ontwerp door RoSoft 3.3 De S88XpressNetLI verbinden met de ROCO versterker Aangezien de S88XpressNetLI
Accelerometer project 2010 Microcontroller printje op basis van de NXP-LPC2368
Accelerometer project 2010 Microcontroller printje op basis van de NXP-LPC2368 Handleiding bij het gebruik van een microcontroller in het Accelerometerproject (Project II) Er zijn speciaal voor het Accelerometerproject
TECHNISCHE UNIVERSITEIT EINDHOVEN FACULTEIT DER TECHNISCHE NATUURKUNDE
TECHNISCHE UNIVERSITEIT EINDHOVEN FACULTEIT DER TECHNISCHE NATUURKUNDE Tentamen Computers bij fysische experimenten (3BB20) op dinsdag 25 oktober 2005 Het tentamen duurt 90 minuten en wordt gemaakt zonder
AVR-DOPER MINI ASSEMBLAGE HANDLEIDING + LAYOUT. Geschreven door: Tom Vocke
AVR-DOPER MINI ASSEMBLAGE HANDLEIDING + LAYOUT Geschreven door: Tom Vocke Datum: 28-09-2010 Inleiding: Dit document bevat alle hardware informatie betreffende de AVR-Doper mini. Het eerste deel zal zich
De Arduino-microcontroller in de motorvoertuigentechniek (4)
De Arduino-microcontroller in de motorvoertuigentechniek () E. Gernaat (ISBN 978-90-7930--6) De Atmel ATmega38/P microcontroller. Uitvoering De ATmega38 is een microprocessor van de Amerikaanse firma ATMEL
RAM geheugens. Jan Genoe KHLim. Situering RAM-geheugens. Geheugens. Halfgeleider Geheugens. Willekeurig toegankelijk geheugen
Jan Genoe KHLim Situering RAM-geheugens Geheugens Halfgeleider Geheugens Serieel toegankelijk geheugen Willekeurig toegankelijk geheugen Read Only Memory ROM Random Access Memory RAM Statische RAM SRAM
De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (4)
De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (4) Timloto o.s. / E. Gernaat / ISBN 978-90-79302-06-2 Op dit werk is de Creative Commens Licentie van toepassing. Uitgave: september 2012
18 Embedded systemen 1
18 Embedded systemen 1 r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15(pc) NZCV CPSR Figuur 18.1 ARM-programmeermodel Byte 0 Byte 1 Byte 2 Byte 3 Byte 3 Byte 2 Byte 1 Byte 0 Figuur 18.2 Endian conversie
De Arduino-microcontroller in de motorvoertuigentechniek (2)
De Arduino-microcontroller in de motorvoertuigentechniek (2) E. Gernaat (ISBN 978-90-79302-11-6) 1 Procescomputer 1.1 Microprocessoren algemeen De informatie-verwerking zoals is behandeld, is vrijwel geheel
Visietechnologie. Deel 3: De camera
Visietechnologie Deel 3: De camera CCD vs CMOS Analoog vs digitaal Kleurencamera s Nieuwe technologien Johan Baeten 3.1 Werelwijde Cameramarkt in 2002 Total Market 630 Mio. Smart Camera 11% Digital Line
Inhoud vandaag. Interrupts. Algemeen ARM7 AIC
Inhoud vandaag Interrupts Algemeen ARM7 AIC Interrupts Wat is een interrupt? Een interrupt is een onderbreking van de huidige bezigheden ten gevolge van een externe gebeurtenis, zodanig dat de bezigheden
PIC Callgever Door PA1RUM
PIC Callgever Door PA1RUM Aanleiding Tijdens de radiokampweek 2008 is deze callgever met veel enthousiasme gebouwd. Niet alleen omdat het een zeer eenvoudig en veelzijdig ontwerp is, maar ook omdat het
Arduino CURSUS. door Willy - 09-juni-2017
Arduino CURSUS door Willy - w2@skynet.be, 09-juni-2017 OVERZICHT (1) OVERZICHT (2) Historiek Microcontroller (1) Microcontroller (2) Specificaties - Arduino UNO bord Specificaties - ATmega328P chip LET
Handleiding ISaGRAF. Wil men het programma bewaren, dan is het verstandig een back-up te maken: C9 Back-up / Restore
Handleiding ISaGRAF C Handleiding ISaGRAF Deze handleiding beoogt een korte samenvatting te geven van handelingen die verricht moeten worden om met behulp van ISaGRAF een PLC-programma te schrijven en
MiniPlex-41 NMEA-0184 multiplexer Handleiding
MiniPlex-41 NMEA-0184 multiplexer Handleiding MiniPlex-41, V1.0 Firmware V1.10 CustomWare, 2002 Inleiding De MiniPlex-41 is een vierkanaals datamultiplexer, waarmee u meerdere NMEA-0183 instrumenten op
De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (2)
De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (2) Timloto o.s. / E. Gernaat / ISBN 978-90-79302-06-2 Op dit werk is de Creative Commens Licentie van toepassing. Uitgave: september 2012
EDK Walkthrough: Hardwareontwerp met GPIO en UART Deel 1
EDK Walkthrough: Hardwareontwerp met GPIO en UART Deel 1 1. Doel Kennismaking met de EDK van Xilinx: - begrijpen van de ontwerpomgeving en design flow - aanmaken van een Xilinx Platform Studio project
Alflex Products B.V. LRN-010-x-C. Payload specificatie
Alflex Products B.V. LRN-010-x-C Payload specificatie Versie: 1.0.0 Datum vrijgave: 26-10-2018 Inhoud Introductie... 2 1 Bericht types... 3 1.1 Report bericht... 3 1.2 Configuratie berichten... 3 2 Report
Hoofdstuk 6: Digitale signalen
Hoofdstuk 6: Digitale signalen 6. Algemeenheden Het decimale talstelsel is het meest gebruikte talstelsel om getallen voor te stellen. Hierin worden symbolen gebruikt ( t.e.m. 9 ) die ondubbelzinning de
Bouwbeschrijving UniSAI
Bouwbeschrijving UniSAI Print maken De layout heeft hele fijne sporen en daarom is fotografisch afdrukken de enige mogelijkheid. Voor het bewerken van de layout gebruik ik het programma Adobe Photoshop
DDS chips. DDS = Direct Digital (frequency) Synthesis. Output = sinusvormig signaal. Maximum frequentie = ½ klokfrequentie
www.arduino.cc Arduino en DDS DDS chips DDS = Direct Digital (frequency) Synthesis Output = sinusvormig signaal Maximum frequentie = ½ klokfrequentie Frequentie bepaald door tuning word Grootste fabrikant:
Lab6: Implementatie video timing generator
Het Micro-elektronica Trainings- Centrum Het MTC is een initiatief binnen de INVOMEC divisie. Industrialisatie & Vorming in Micro-elektronica Inleiding In de vorige modules werd een systeem opgebouwd en
Hoofdstuk 4. Digitale techniek
Hoofdstuk 4 Digitale techniek 1 A C & =1 F Figuur 4.1: Combinatorische schakeling. A C & & F A = & F C Figuur 4.2: Drie-input AND. A C _ >1 & F Figuur 4.3: Don t care voorbeeld A? F Figuur 4.4: Onbekende
IEEE 1394 firewire. Jan Genoe KHLim. I-link DV (digital video)
IEEE 1394 firewire I-link DV (digital video) Jan Genoe KHLim 1 Traditionele video bewerkingswerkwijze In draagbare video camera's worden beelden reeds lang aan de hand van CCD opgenomen, dit wil zeggen
In deze mannual zal ik het voorbeeld van de Led cube gebruiken maar de principes zijn op alles toepasbaar.
Parallelle poort interface met Visual basic Waarom dit naslagwerk: Ik was zelf een beginner op dit vlak en heb dagen lopen zoeken naar correcte en up to date info inzake de aansturing van pc naar elektronica
2 Algemene opbouw van een computersysteem
Procescomputer E. Gernaat 1 Microprocessoren algemeen Informatie-verwerking zoals behandeld is momenteel vrijwel geheel overgenomen door microprocessoren. Wanneer we voortborduren op het idee van combinatorische
Locobuffer Handleiding
Locobuffer Handleiding HDM09 Disclaimer van Aansprakelijkheid: Het gebruik van alle items die kunnen worden gekocht en alle installatie-instructies die kunnen worden gevonden op deze site is op eigen risico.
Oefeningen Interpretatie I Reeks 6 : Registermachines
Oefeningen Interpretatie I Reeks 6 : Registermachines Deze oefeningenreeks behandelt het beschrijven van computationele processen aan de hand van registermachineprogrammaʼs. Registermachines manipuleren
Hoofdstuk 19. Embedded systemen
Hoofdstuk 19 Embedded systemen 1 r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15(pc) NZCV CPSR Figuur 19.1: ARM-programmeermodel. Byte 0 Byte 1 Byte 2 Byte 3 Byte 3 Byte 2 Byte 1 Byte 0 Figuur 19.2:
Woord vooraf. Ik bedank ook de firma Trycom om mijn eindwerk te financiëren en mij alle nodige apparatuur ter beschikking te stellen.
Woord vooraf Op de eerste plaats wil Dhr. Trypsteen bedanken voor de goede begeleiding die ik van hem gekregen heb tijdens het voorbije jaar. Hij heeft mij op een vlotte manier heel wat bijgeleerd over
Figuur 1 voorbeeld opstart scherm
1 1 Handleiding 1.1 Opstarten van de applicatie Bij het opstarten van de applicatie gaat deze een overzicht geven van waar de applicatie bij het opstarten met bezig is. In eerste instantie zijn dat controles,
Vraag 1 (2 punten) (iii) Een lees-opdracht van virtueel adres 2148 seg 0, offset 2148 - idem
Tentamen A2 (deel b) 24-06-2004 Geef (liefst beknopte en heldere) motivatie bij je antwoorden; dus niet enkel ja of nee antwoorden, maar ook waarom. Geef van berekeningen niet alleen het eindresultaat,
ES1 Project 1: Microcontrollers
ES1 Project 1: Microcontrollers Les 3: Eenvoudige externe hardware & hardware programmeren in C Hardware programmeren in C Inmiddels ben je al aardig op gang gekomen met het programmeren van microcontrollers.
Tweede workshop Arduino
Tweede workshop Arduino In deze workshop zal veel gewerkt worden met voorbeelden die meegeleverd worden met de Arduino IDE. Deze zijn te vinden onder het menu File >Examples. Oefening 1 - Seriële communicatie
Stappenmotor Interface. Controller
Besturing In deze moderne tijd zal de besturing geheel elektrisch worden uitgevoerd. De bedoeling is dat er voor ieder afgaand spoor een wisseladres gebruikt worden. Dit betekend dan een reeks van 24 aansluitende
Klas : 5 Industriële ICT Herhalingsvragen reeks 1 PC-techniek
Klas : 5 Industriële ICT Herhalingsvragen reeks 1 PC-techniek VTI St.- Laurentius Neem eerst de tekst in het boek door, doe dit enkele keren en probeer uiteraard te onthouden wat je leest. Los nadien de
Wat is een busverbinding?
Wat is een busverbinding? gemeenschappelijke verbinding tussen CPU, geheugen en I/O-schakelingen onderscheid tussen: databus/adresbus/controlbus intern/extern serieel/parallel unidirectioneel/bidirectioneel
Sequentiële schakelingen
Gebaseerd op geheugen elementen Worden opgedeeld in synchrone systemen» scheiding tussen wat er wordt opgeslagen (data) wanneer het wordt opgeslagen (klok) asynchrone systemen» Puls om geheugen op te zetten
Foutdetectie. Toenemend belang van foutdetectie
Toenemend belang van foutdetectie We verwachten steeds meer van digitale systemen Steeds meer signalen steeds meer storingen Steeds hogere frequentie steeds hogere gevoeligheid aan storingen en foutcorrectie
API...1 Identificatie...1 Opties...2 Acties...3 Webserver...6 Heartbeat...6 Buffer groottes...8
API API...1 Identificatie...1 Opties...2 Acties...3 Webserver...6 Heartbeat...6 Buffer groottes...8 Identificatie Alle programma's communiceren met elkaar door gebruik te maken van JSON objecten. Het normale
GEÏNTEGREERDE PROEF. VTI Sint-Laurentius. Pakketweegschaal. Industriële informatie & communicatietechnologie SCHOOLJAAR 2010-2011.
VTI Sint-Laurentius De school voor Wetenschap, Techniek en Technologie Pr. Thuysbaertlaan 1 9160 Lokeren www.vti-lokeren.be info@vti-lokeren.be GEÏNTEGREERDE PROEF Pakketweegschaal Industriële informatie
IO-Link: de industriële communicatiestandaard. De basis van IO-Link
IO-Link: de industriële communicatiestandaard De basis van IO-Link IO-Link IO-Link = eenvoudig en geldbesparend IO-Link = bekabelings- en communicatieconcept IO-Link IO-Link: enkele technische
Netwerk Interfacing Data Logging.
Handleiding Netwerk Interfacing Data Logging. EduTechSoft.nl 2009-2010 H.O.Boorsma. Pagina - 2 - Netwerk Interfacing Data Logging Pagina - 3 - Inhoud Inleiding.... 4 Beschrijving van het programma....
IDAgeChecker BDX118T11xx Manual V02.00
XLN-t bvba Hoogstraat 52 B 2580 Putte-Beerzel Belgie - Belgium tel +32 (0) 15 24 92 43 fax +32 (0) 15 25 10 58 RPR Mechelen BTW BE 423 212 087 Bank 733-2011497-38 IDAgeChecker BDX118T11xx Manual V02.00
Jan Genoe KHLim. Reken schakelingen. Jan Genoe KHLim
Jan Genoe KHLim Meestal aangewend in digitale computers optellers optellers-aftrekkers Vermenigvuldigers ingebed in een grotere rekeneenheid ALU (Arithmetic and logical unit) 2 Talstelsels definitie Tiendelig
Het Versacom systeem is gedefinieerd in DIN 43861, deel 301 als "transfer protocol A".
Versacom Het Versacom protocol (Versatile Communication) wordt gebruikt voor het op afstand programmeren van intelligente ontvangers. Dit protocol verstuurt schakelprogramma's, agenda- en vakantie periodes
versie: 1.0 status: vrijgegeven door: J.Eberson datum: 15 augustus 2005 aangepast: 19 februari 2006 concept beschrijving
versie: 1. status: vrijgegeven door: J.Eberson datum: 15 augustus 25 aangepast: 19 februari 26 concept beschrijving DOLLYsms SMS server conceptbeschrijving V1. I N H O U D Inleiding... 3 DOLLYsms... 3
Foundation Fieldbus. Er zijn 2 soorten Foundation Fieldbus: FF HSE FF-H1
Foundation Fieldbus Deze paragraaf zal gaan over de opdracht die betrekking had tot de Foundation Fieldbus. Hierin zal worden beschreven hoe de informatie van deze bus in de PLC komt. Bij deze bus zijn
Xelion ESPA koppeling Handleiding Beheer V1.6
Xelion ESPA koppeling Handleiding Beheer V1.6 van de Xelion ESPA koppeling. Dit document is bedoeld voor beheerders en operators Inhoud 1 Overzicht... 1 2... 2 2.1 Espa apparaat toevoegen... 4 2.1.1 ESPA
Inductiemeter via de parallelle poort
K.T.A.1-Gent "De Lindenlei" Lindenlei 38 9000 Gent Tel: 09.225.33.04 en 09.225.43.42 Fax: 09.225.52.88 Geïntegreerde proef Inductiemeter via de parallelle poort Naam: Michaël Clinckspoor Richting: Industriële
Oefeningen Digitale Elektronica (I), deel 4
Oefeningen Digitale Elektronica (I), deel 4 Oefeningen op min en maxtermen, decoders, demultiplexers en multiplexers (hoofdstuk 3, 3.6 3.7) Wat moet ik kunnen na deze oefeningen? Ik kan de minterm en maxtermrealisatie
Basisconcept VHDL. Digitaal Ontwerpen Tweede studiejaar. Wim Dolman. Engineering, leerroute Elektrotechniek Faculteit Techniek
Basisconcept VHDL Tweede studiejaar Wim Dolman Engineering, leerroute Elektrotechniek Faculteit Techniek 1 Deze presentatie toont de stappen voor het ontwerpen van een digitale combinatorische schakeling
IDGetter BDX118 T1121 Manual V00.00.024
XLN-t bvba Hoogstraat 52 B 2580 Putte-Beerzel Belgie - Belgium tel +32 (0) 15 24 92 43 fax +32 (0) 15 25 10 58 RPR Mechelen BTW BE 423 212 087 Bank 733-2011497-38 IDGetter BDX118 T1121 Manual V00.00.024
digitale meettechniek J.P.GOEMAERE
Vak: docent: digitale meettechniek J.P.GOEMAERE Opleidingsonderdeel : Digitale meetinstrumenten en DSP O.O.V: J.P.GOEMAERE 1 Opleidingsonderdeel : digitale meettechnieken en DSP Vak: digitale meettechniek
Het koppelen van de Wago aan de AC500-eco via Modbus RTU. A quick start guide. Jaap Ruiten
Het koppelen van de Wago 750-315 aan de AC500-eco via Modbus RTU. A quick start guide Jaap Ruiten Het koppelen van de Wago 750-315 aan een AC500-eco plc. Solar TPS 1 dinsdag 4 februari 2014 Inhoudsopgave
B3C 70cm converter besturing. v1.0 2010 PE5PVB www.het bar.net pe5pvb@het bar.net
B3C 70cm converter besturing v1.0 2010 PE5PVB www.het bar.net pe5pvb@het bar.net Deze schakeling en de bijbehorende software mag niet worden gedupliceerd voor commerciële verkoop zonder uitdrukkelijke
De CB channel controller TMS1022NL/NLL en TMS1023NL/NLL. ( Dit is een maskrom-programmed version van de Texas Instruments TMS1000 family)
De CB channel controller TMS1022NL/NLL en TMS1023NL/NLL ( Dit is een maskrom-programmed version van de Texas Instruments TMS1000 family) Ik begin even met een korte inleiding over de TMS1000. ( Wil je
Sequentiële Logica. Processoren 24 november 2014
Sequentiële Logica Processoren 24 november 2014 Inhoud Eindige automaten Schakelingen met geheugen Realisatie van eindige automaten Registers, schuifregisters, tellers, etc. Geheugen Herinnering van week
12.1 Input/output-kaart IOK. Informatieblad 12 input/output-kaart versie 1.0. Beperking aansprakelijkheid
Beperking aansprakelijkheid De aansprakelijkheid van het bestuur van de HCCM is beperkt als omschreven in informatieblad 1 12 Input/output-kaarten De uitgangen van de input/output-kaart (IOK) hebben dezelfde
De Arduino-microcontroller in de motorvoertuigentechniek (3)
De Arduino-microcontroller in de motorvoertuigentechniek (3) E. Gernaat (ISBN 978-90-79302-11-6) 1 In- en uitgangssignalen van microprocessoren 1.1 Overzicht signalen Informatie van en naar een microprocessor
7. Gegevens opslag/ overdracht. Inhoudsopgave:
7. Inhoudsopgave: 7.0 Algemeen... 2 7.1 Gegevensopslag... 3 7.1.1 SOFTLOK gegevens => Diskette... 3 7.2 SOFTLOK programma => Diskette... 3 7.1.3 SOFTLOK programma
Hoofdstuk 7. Computerarchitectuur
Hoofdstuk 7 Computerarchitectuur 1 controlebus CPU MEMORY I/O databus adresbus Figuur 71 Schematische opbouw van een computersysteem 8 Figuur 72 Een busverbinding Buslijn Out E A In Out E B In Out E C
INHOUD SPI : SERIAL PERIPHERAL INTERFACE ALGEMEEN. Videolessen Deel 3 DATACOMMUNICATIE SPI
INHOUD SPI : Serial Peripheral Interface... 1 Algemeen... 1 SPI protocol... 2 Klokpolariteit... 3 CASE 1. MAX5385 DAC... 4 CASE 2: FM25640 FRAM Memory... 5 SPI Praktisch... 7 Uitdagingen:... 7 Datacom-fiche...
In- en uitgangssignalen van microprocessoren
In- en uitgangssignalen van microprocessoren E. Gernaat 1 Overzicht signalen Informatie van en naar een microprocessor kan parallel of seriëel gebeuren. Bij parallel-overdracht zal elke lijn (draad) een
DEC SDR DSP project 2017 (2)
DEC SDR DSP project 2017 (2) Inhoud: DSP software en rekenen Effect van type getallen (integer, float) Fundamenten onder DSP Lezen van eenvoudige DSP formules x[n] Lineariteit ( x functie y dus k maal
Datacommunicatie ov. Seriële bussystemen SERIËLE VERBINDINGEN
Datacommunicatie ov THEORIE SERIËLE VERBINDINGEN Seriële bussystemen Prof. Dr. Bernd vom Berg en Dipl.-Ing. Peter Groppe Synchrone seriële datacommunicatie tussen microcontroller en periferie is de laatste
Herconfigureerbare Hardware in Ieders Bereik
Herconfigureerbare Hardware in Ieders Bereik Prof. Dirk Stroobandt Universiteit Gent Vakgroep ELIS Onderzoeksgroep PARIS http://www.elis.ugent.be/~dstr/ Overzicht Nood aan digitale verwerking van gegevens
EE1410: Digitale Systemen BSc. EE, 1e jaar, , 8e hoorcollege
EE4: Digitale Systemen BSc. EE, e jaar, 22-23, 8e hoorcollege rjan van Genderen, Stephan Wong, Computer Engineering 3-5-23 Delft University of Technology Challenge the future Hoorcollege 8 Combinatorische
Uitgebreid eindwerkvoorstel Lokaliseren van personen en objecten met behulp van camera s
Uitgebreid eindwerkvoorstel Lokaliseren van personen en objecten met behulp van camera s Sofie De Cooman 21 December 2006 Stagebedrijf: Interne begeleider: Externe begeleider: BarcoView Koen Van De Wiele
Labo digitale technieken
.. Het gebied "elektronica" is reeds geruime tijd onderverdeeld in twee specialiteiten, namelijk de analoge en de digitale technieken. Binnen analoge schakelingen gebeurt de signaalverwerking met lineaire
n-queens minimale dominantie verzamelingen Chessboard Domination on Programmable Graphics Hardware door Nathan Cournik
n-queens minimale dominantie verzamelingen Chessboard Domination on Programmable Graphics Hardware door Nathan Cournik Rick van der Zwet 4 augustus 2010 Samenvatting Dit schrijven zal
Net2 kaarten bedrukken
kaarten bedrukken kaarten bedrukken - Welke methode? Er bevinden zich twee pakketen om kaarten te bedrukken in de software. Een basis vast formaat dat al aanwezig is in de software sinds 2003 (V3.16) en
Cloud handleiding Versie: 1.0 Datum: 23-7-2014
Cloud handleiding Versie: 1.0 Datum: 23-7-2014 2 Inhoud Inleiding... 5 Inrichting SequreBox Cloud... 5 1. Inloggen... 6 2. Abonnementen voeg camera toe... 8 3. Controleer beelden... 9 4. Camera Stel Alarm
Module nummer Elke speciale module krijgt een eigen module nummer om de betreffende module in te stellen en uit te lezen. Ethernet module FX3u-ENET
Datum : 3 november 2009 Aangemaakt door : Matthias FAQ 3 : Instellen van analoge module FX2n-5A Input 4x Analoog in Output 1x Analoog uit Bedrading Let op! Bij stroom-input de ingang V+ en I+ doorverbinden
Camera Link. Samenvatting van de Camera Link standard Voor het aansluiten van Digitale cameras op Frame Grabbers. Opmerkingen
Camera Link Samenvatting van de Camera Link standard Voor het aansluiten van Digitale cameras op Frame Grabbers Opmerkingen Dit document is slechts een samenvatting en heeft geen enkele officiële waarde.
Een intelligent DMX netwerk
WORKSHOP STEPP Een intelligent DMX netwerk WORKSHOP STEPP Wat is DMX? Een intelligent DMX netwerk Demo opstelling Probleem oplossing Wat is DMX? Hoe is het DMX signaal ontstaan DMX in de praktijk Hoe
Hoofdstuk 18. Embedded systemen
Hoofdstuk 18 Embedded systemen 1 r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15(pc) NZCV CPSR Figuur 18.1 ARM-programmeermodel Byte 0 Byte 1 Byte 2 Byte 3 Byte 3 Byte 2 Byte 1 Byte 0 Figuur 18.2
Jan Genoe KHLim. VHDL Inleiding. In dit hoofdstuk situeren we het steeds toenemende belang van VHDL in het elektronisch ontwerp.
inleiding Inleiding Jan Genoe KHLim In dit hoofdstuk situeren we het steeds toenemende belang van in het elektronisch ontwerp. 1 inleiding Doelstellingen en behandelde topics doelstelling: de voornaamste
Hardware-software Co-design
Jan Genoe KHLim Versie: maandag 10 juli 2000 Pagina 1 Wat is HW/SW Co-design Traditioneel design: De verdeling tussen de HW en de SW gebeurt bij het begin en beiden worden onafhankelijk ontwikkeld Verweven
RIOT Remote Internet Operated Terminal. Gebruikers handleiding v1.0 6) De intelligente I/O-controller IOsys.
6) De intelligente I/O-controller IOsys. Om de I/O mogelijkheden van het RIOT bord aanzienlijk te vergroten werd een, als intelligente I/O-controller geprogrammeerde, AVRmega 128 microcontroller op het
Antwoorden vragen en opgaven Basismodule
Antwoorden vragen en opgaven Basismodule Antwoorden van vragen en opgaven van hoofdstuk 1 1. Is elke combinatorische schakeling een digitale schakeling? Zo nee, waarom niet? Antwoord: Elke combinatorische
Microcontrollers Week 1 Introductie microcontroller Jesse op den Brouw INLMIC/2014-2015
Microcontrollers Week 1 Introductie microcontroller Jesse op den Brouw INLMIC/2014-2015 Computersysteem Een systeem dat rekenkundige operaties, data manipulaties en beslissingen kan uitvoeren, aan de hand
Handleiding HCS VB5248
Handleiding HCS VB5248 Analoge Uitgangsmodule met 8 uitgangen HCS Building Automation Kompasstraat 7a, 2901AM Capelle a/d IJssel Postbus 182, 2900AD Capelle a/d IJssel Tel. +31(0)10 458 00 00 Fax +31(0)10
MODBUS remote I/O-unit type MODBUS4S110
MODBUS remote I/O-unit type MODBUS4S110 Opvragen en aansturen van I/O via MODBUS RTU over RS232 of MODBUS IP of directe TCP/IP-socket. De MODBUS4S110 is een unit die als slave via MODBUS RTU (RS232) of
Technisch ontwerp positiebepaling Smart Blocks
Technisch ontwerp positiebepaling Smart Blocks Inhoudsopgave 1 Inleiding......3 2 Hardware......4 2.1 Blok....4 Contactpunten......4 Voeding......4 Datapinnen......5 2.2 Basisplaat......5 3 Positiebepaling......6
Wireless PC Interface installatie handleiding
Wireless PC Interface installatie handleiding Alphatronics bv * Watergoorweg 71* 3861MA Nijkerk * Tel.: 033-2459944 * Fax.: 033-2453149 * info@alphatronics.nl SPECIFICATIES Artikel nummer: 007077 Geschikt
Les D-04 Foutdetectie en correctie
Les D-04 Foutdetectie en correctie In deze les staan we stil bij het ontdekken (detectie) van fouten bij datacommunicatie en bij het herstellen (correctie) van fouten bij datacommunicatie. We bespreken
AFO 139 Automatische export
AFO 139 Automatische export 139.1 Inleiding Vubis Smart beschikt over de mogelijkheid om volledig automatisch beschrijvingen te exporteren naar bestanden op de server. Andere bibliotheken (ongeacht of
Programmeren A. Genetisch Programma voor het Partitie Probleem. begeleiding:
Programmeren A Genetisch Programma voor het Partitie Probleem begeleiding: Inleiding Het Partitie Probleem luidt als volgt: Gegeven een verzameling van n positieve integers, vindt twee disjuncte deelverzamelingen
Software Test Plan. Yannick Verschueren
Software Test Plan Yannick Verschueren Maart 2015 Document geschiedenis Versie Datum Auteur/co-auteur Beschrijving 1 November 2014 Yannick Verschueren Eerste versie 2 December 2014 Yannick Verschueren
HANDLEIDING MEMOKEY 100C
1 HANDLEIDING MEMOKEY 100C 1 lksdj WOORD VOORAF BIJ PROGRAMMATIE! Het aangeraden, eens het systeem is geïnstalleerd, de code lengte te bepalen en de MASTER en TRADE code te wijzigen. Nadien kunnen andere