Combinatorische logica

Slides:



Advertisements
Verwante presentaties
Vincent Poté Nelis Vandermeiren Simen Akkermans Kevin De Neef
Advertisements

1/1/ / faculty of Electrical Engineering eindhoven university of technology 5JJ20:Computerarchitectuur EIT OGO-1.2 addendum (1): Het ontwerpen van processoren.
Embedded systemen Embedded software.
Stijn Hoppenbrouwers Software Engineering les 1 Algemene inleiding en Requirements Engineering.
Smartphone development Coopman Tom Adforce. Online communicatie en marketing agentschap Gevestigd in Brussel Aanbiedingen : – Online marketing – Juridische.
Inhoudstafel Inleiding De basis van digitaal ontwerp
Digitale Elektronica en Processoren
Arduino project.
Inleiding programmeren in C++ Life Science & Technology 19 januari Universiteit Leiden.
PROS2 Les 11 Programmeren en Software Engineering 2.
Auteursomgeving voor Digitale Componenten
VHDL Taal beschrijvingen
Week 2: Microarchitectuur niveau ALU en datapad
QR Code.
Objecten Hoofdstuk 6 Hoofdstuk 6 Hoofdstuk 6 1.
C programma int main(){ } Compilatie met devc++ in file main.c Gecompileerd programma in file FirstProgram.exe Mov R1, 120 Mov R2, 160 ADD R1, R2.
Leren programmeren door spelletjes te maken
Legacy in een moderne wereld
Computervaardigheden en Programmatie Universiteit AntwerpenDatabank - Basis 4.1 Computervaardigheden en Programmatie 1rste BAC Toegepaste Biologische Wetenschappen.
Cursus VHDL Aansturing van een stappenmotor Peter Slaets KHLim.
VHDL Peter Slaets KHLim Functies en procedures Functies –type conversie functies »bit vector to integer en omgekeerd –verkorte componenten met maar 1 output.
Exploratie van de ontwerpruimte 3. Prototypes, emulatie en simulatie Prof. dr. ir. Dirk Stroobandt Academiejaar
5JJ20: Computerarchitectuur 2M200: Inleiding Computersystemen
Databases I (H. 1) Wiebren de Jonge Vrije Universiteit, Amsterdam Voorlopige versie 2003.
Flow controle Keuzes maken. Het if-statement Soms moet code alleen in bepaalde situaties uit gevoerd worden Hiervoor heeft C de if-else constructie: if(voorwaarde1){
Title VHDL Introductie FirstName LastName – Activity / Group.
Visual Basic.
Webapplicaties: de clientkant in het universitaire onderwijs Sylvia Stuurman – Herman Koppelman Faculteit Informatica.
Algoritmiek Object-georiënteerd Programmeren
Vakgroep Informatietechnologie – SoftwareOntwikkeling 1 SoftwareOntwikkeling 1 Conditionele compilatie in C met de macropreprocessor.
Looking at Code Size and Performance Kevin Muys.  Hoe efficiënt is C++ vergeleken met C  Hoe beïnvloed C++ het benodigde geheugen  Oplossingen voor.
1/1/ /e/e eindhoven university of technology OGO 1.2 project Startbijeenkomst Een microprocessor… …om warm voor te lopen.
The Commons Game. Prinses op de ERT Bespreek de volgende punten in 4-tallen: 1. Het spel Was het gedrag van de spelers succesvol? Is er een winnende.
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 2: IDaSS.
Wordt de materiële wereld beinvloed als veel mensen hun aandacht op hetzelfde richten? Global Consciousness Experiment Is bewustzijn ‘effectief’? An international.
Bewerkingen met splitsbeentjes.
HAN-University Inleiding tot VHDL, 2010 Bron: Fraunhofer for Integrated Circuits.
Het timing model in VHDL
CMOS Technologie.
Ontwerpen van Digitale Systemen
Game Concept Samenvatting hoofdstuk 19. Vijf manieren die designers gebruiken om hun game spaces te organiseren. Lineair (bv: monopoly, super mario bros)
Visual Basic.NET voor studenten De VB- ontwikkelomgeving Hoofdstuk 2.
Programmeerstijl Hoofdstuk 21. Visual Basic.NET voor studenten2 Inleiding Belang van een goede programmeerstijl:  Programma’s worden door meerdere mensen.
Eindproject informatica
Inhoud Analyse van sequentiële netwerken Sequentiële bouwblokken
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  een MIDI track interpreteren, laten zien en afspelen.
tircms02-p les 1 Operating Systems practicum
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 3 redirection,
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 2 - onderwerpen MPLAB.
Spreadsheets. Testen. Met spreadsheets.. |  Spreadsheet, het meest gebruikte (test) tool in de wereld …  Aan de slag: Spreadsheet PRA  Risico’s en.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Maak, uitgaande van een MIDI file, een (klein) programma.
Tircms03-p les 1 C++ voor C-kenners Voor Technische Informatica.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Een embedded systeem: ARM bord.
Datum Task Force Architectuur development in 2008.
Minor Project- en Programmamanagement
1 Software Engineering EINDPROJECT INFORMATICA. SOFTWARE ENGINEERING 2 Managen van grotere softwareprojecten Onstaan uit noodzaak: betrouwbare software.
1 KPN Mobiel – Introductie Repository Object Browser & Designer 10 Designer 10g & Repository Object Browser Maandag 28 februari 2005 Lucas Jellema (AMIS)
Agenda  Lesuur minuten  Wat kun je met programmeren?  Wat is code en hoe werkt het?  Code schrijven: de basis  Lesuur minuten  Zelf.
Turing deel 2 Hoofdstuk 8 Programmeren met Java Objectgeoriënteerd programmeren, klasse Applet, variabelen (primitieve typen en referentie typen), arrays.
7 Databases Gebruikersdag Enigma / Informatica Actief 2016 – Valk Welding Alblasserdam.
Gebruikers- ondersteuning Require- ments man. Educatie Monitoring Data- beheer Management- informatie Operationeel support Tactisch support Strategisch.
Programmeren met Reeksen
Object georiënteerd programmeren
Product Design & Engineering
Strategisch support Management support Strategie Tactisch support
SQL Les February 2019.
Mixed-Signal Design Engineer
Financieel Verantwoordelijke Technisch Verantwoordelijke Commercieel Verantwoordelijke Administratief Verantwoordelijke.
Welkom!.
Transcript van de presentatie:

Combinatorische logica VHDL Synthese Synthese is het geautomatiseerd compileren van VHDL beschrijving van een ontwerp naar poorten en libraries. Technische Specificatie Gedragsbeschrijving in VHDL gedrags synthese RTL beschrijving in VHDL RTL synthese Combinatorische logica in VHDL Implement design

Genereren van een netlist met Synthesize – XST Na design entry en eventuele simulatie kan met Xilinx Synthesis Technology (XST) kan een Xilinx specifieke netlist gegenereerd worden, NGC. The NGC file is een netlist die logische ontwerp data en randvoorwaarden bevat. Deze file is een Xilinx vervanger de algemene EDIF and NCF files.

Wat is wel/niet synthetiseerbaar? • Verschillende producenten hun SW-tool en marktaandeel (2010): Producent/organisatie Naam van het systeem Altera Quartus Xilinx ISE Lattice Semiconductor Lattice Diamond Actel Libero IDE Cypress PSoC designer/creater/programmer 1. Afwijkingen op grensgebieden: bv beschrijving geheugenelement. 2. Producten zijn nog steeds in ontwikkeling → grote verschillen tussen tools. 3. VHDL is geschreven voor documentatie en verificatie.

Wat is wel/niet synthetiseerbaar In het algemeen: Heb je een idee hoe de hardware er uit zou kunnen zien? Ja → dan is het synthetiseerbaar. Nee → valt de code soms onder een van de volgende categorieën: 1. Expliciet opgegeven vertragingstijden 2. initialisatie van variabelen en signalen 3. event-driven simulatiemodel 4. meerdere wait statements 5. datatypen 6. sommige rekenkundige bewerkingen

1 Expliciet opgegeven vertragingstijden: AFTER clausule a <= b AFTER 10ns; wordt a <= b; dus transport en inertial delay wordt in de netlist terug gebracht tot delta delay beschrijvingen. Wat doet synthese met de onderstaande code? ENTITY puls10ns IS PORT (input : in std_logic; output : out std_logic); END ENTITY puls10ns; ARCHITECTURE met_inertial_delay OF puls10ns IS SIGNAL S1, S2: std_logic; BEGIN S1 <= input AFTER 15ns; S2 <= input AFTER 25ns; Output <= S1 XOR S2; END met_inertial_delay; exor OF 1 OF..

2 Initialisatie van signalen en variabelen: Hoe synthetiseren de volgende statements? signal s1 : std_logic := ’0’; signal s4 : std_logic_vector(3 DOWNTO 0) := “0101”; Hoe kunnen we dit oplossen? Toevoegen van een SET of PRESET aan een schakeling:

3 Effecten van het timingmodel: Wat doet synthese met de volgende code? ARCHITECTURE xor_arch OF xor_entity IS SIGNAL s, x, y : bit; BEGIN s <= input; x <= s; PROCESS(input) variable v : bit; v := input; y <= v; END PROCESS; Output <= x XOR y; END xor_entity; ip S V X Y op 1 1 Bij de synthese wordt NIET naar delta delays gekeken

4 Wait statements Wait statement argument Synthetiseerbaar Opmerk. WAIT FOR tijd NEE Tijdsvertraging is niet synthetiseerbaar WAIT UNTIL boolean Beperkt Alleen als Boole-aanse uitdrukking* WAIT ON (a,b) signal NEE/JA Kan wel maar vaak niet toegestaan WAIT - Gebruikt bij initialiseren van signalen PROCESS( a,b) Signal list JA PROCESS BEGIN WAIT UNTIL t = ‘1’; s1 <= ‘0’; WAIT UNTIL t = ‘0’; c2 <= ‘1’; c2 <= ‘0’; s1 <= ‘1’; END PROCESS; Dit is een een process dat op de opgaande en neergaande flank actief zou moeten zijn? *beschrijft een toestandsmachine met flankgevoeligheid. WAIT UNTIL clk =’1’; (IF …. ….)

5 Beschrijvingen die vaak niet synthetiseerbaar zijn: Datatypen: zoals bit en integer zijn synthetiseerbaar in tegenstelling tot std_logic. (U, X, 0, 1, Z, W, L, H, -) Welke waarden zijn synthetiseerbaar? • 0, 1 en Z Welke worden al don’t care opgevat? • U, X, - VHDL is streng getypeerd en kent tussen deze types een groot aantal conversiefuncties: • To_bitvector: Std_logic_vector omzetten naar een bit_vector. • Typen die voor simulatie handig zijn moeten vaak voor synthese geconverteerd worden naar synthetiseerbare typen Bijvoorbeeld: ARCHITECTURE optel_arch OF optel IS SIGNAL s1, s2, s3, s4, s5: bit_vector(7 downto 0); SIGNAL int1, int2, int3, int4: integer; BEGIN s4 <= s1 + s2; -- gebruik de + functie van bitvectoren int4 <= int1 + int2; -- gebruik standaard + functie van integer s5 <= int3 + s3; -- foutmelding END optel_arch;

6 Overzichtslijstje van libs wel/niet synthetiseerbaar: Package standaard std_logic_1164 numeric unsigned Datatype bit bit_vector integer natural boolean std_ulogic std_ulogic_vector std_logic std_logic_vector signed_vector signed Bewerking logische bewerkingen sythetiseerbaar and or nand nor not xor xnor relationele Synthese afh. van type: IF x < “10X-LZ” < <= = /= >= > &

6 Overzichtslijstje van libs wel/niet synthetiseerbaar: Package standaard std_logic_1164 rekenkundige bewerkingen + - * / alleen mod door 2 rem shl shr extend sign_extend / alleen mod door 2 Niet Synthetiseerbaar file io, pointers, recursie

Synthetiseren tot een combinatorisch of sequentieel proces Combinatorisch proces: logica zonder klok en reset. Sequentieel proces: geheugenelementen met klok en reset. Merk op: met sequentieel in VHDL proces statement wordt wat anders bedoeld: toekenningen in een proces worden achtereenvolgens uitgevoerd. Combinatorisch proces. Synthetiseren tot een combinatorisch of sequentieel proces. Sequentiele schakeling met (a)synchrone reset. Sequentiele schakeling en sensetivitylist. Meer conditionele processen. Concurrent signal assignments. ELSE – clausule

Wanneer combinatorisch/sequentieel? Wat is het verschil tussen een combinatorisch of sequentieel proces? • Combinatorisch proces: logica zonder klok en reset • Sequentieel proces: geheugenelementen met klok en reset Merk op: met sequentieel in VHDL proces statement wordt wat anders bedoeld: toekenningen in een proces worden achtereenvolgens uitgevoerd. comb: PROCESS(c,a) BEGIN IF c=’1’ THEN z <= a + ‘1’; ELSE z <= a – ‘1’; END IF; END PROCESS; warning_comb1: PROCESS(c) BEGIN IF c=’1’ THEN z <= a + ‘1’; ELSE z <= a – ‘1’; END IF; END PROCESS warning_comb2: PROCESS(c,a) BEGIN IF c=’1’ THEN z <= a + ‘1’; END IF; END PROCESS; Fout_comb1: process wordt alleen uitgevoerd als c verandert, suggereert dat c een klok is!! Fout_comb2: else clause ontbreekt, z moet bewaard worden. Vuistregel: een combinatorisch proces: 1. moet een sensitivitylist hebben die alle ingangssignalen van het proces bevat. 2. elk signaal/variabele moet een waarde krijgen langs elke mogelijke weg.

Wanneer levert een sequentieel proces een Flipflop of een Latch? seq_2: PROCESS(c) BEGIN IF c’EVENT AND c=’1’ THEN z <= a + ‘1’; END IF; END PROCESS; seq_3: PROCESS(c,a) BEGIN IF c’EVENT AND c=’1’ THEN z <= a + ‘1’; END IF; END PROCESS; seq_4: PROCESS(c,a) BEGIN IF c=’1’ THEN z <= a + ‘1’; END IF; END PROCESS; seq_1: PROCESS(c) BEGIN IF c=’1’ THEN z <= a + ‘1’; END IF; END PROCESS; seq_1: alleen als c veranderd, impliciet opgaande flank seq_2: alleen als c veranderd, expliciet opgaande flank seq_3: alleen als c veranderd, want verandering in a heeft geen effect seq_4: als c en a veranderen wordt het proces doorlopen

OPDRACHT: Geef aan van onderstaande schakelingen wat synthese oplevert: FF/Latch/combinatorisch en reset type: synchroon/asynchroon? opdr_4: PROCESS(c,r,a) BEGIN IF r=’1’ THEN z <= ‘0’; ELSIF c=’1’ THEN z <= a; END IF; END PROCESS; opdr_3: PROCESS(c) BEGIN IF r=’1’ THEN z <= ‘1’; ELSIF c’EVENT AND c=’1’ THEN z <= a; END IF; END PROCESS; opdr_1: PROCESS(c,r) BEGIN IF r=’1’ THEN z <= ‘1’; ELSIF c’EVENT AND c=’1’ THEN z <= a; END IF; END PROCESS; opdr_2: PROCESS(c,r) BEGIN IF r=’1’ THEN z <= ‘1’; ELSIF c=’1’ THEN z <= a; END IF; END PROCESS; opdr_1: Sequentiële schakeling van D flip-flops met asynchrone reset. Correct synthetiseerbaar opdr_2: Sequentiële schakeling die latches suggereert (c=’1’), maar ingang a staat niet in de sensitivity list opdr_3: Sequentiële schakeling die Flipflops suggereert (Event attribute op c) waarvan de asynchrone reset geen effect heeft omdat deze niet in de sensitivitylist staat. opdr_4: Sequentiële schakeling met latches, als c en a veranderen wordt het proces doorlopen. Correct synthetiseerbaar

Geef aan van onderstaande schakelingen wat synthese oplevert: FF/Latch/combinatorisch en reset type: synchroon/asynchroon? opdr_7: PROCESS(c,r) BEGIN IF c’EVENT AND c=’1’ THEN IF r=’1’ THEN z <= “00’’; ELSE z <= a + ‘1’; END IF; END PROCESS; opdr_5: PROCESS(c) BEGIN IF c’EVENT AND c=’1’ THEN IF r=’1’ THEN z <= ‘0’; ELSE z <= a; END IF; END PROCESS; opdr_6: PROCESS(c,r,a) BEGIN IF c=’1’ THEN IF r=’1’ THEN z <= “00’’; ELSE z <= a + ‘1’; END IF; END PROCESS; syn_1: Correct synthetiseerbaar; Levert een sequentiële schakeling van flip-flops met een synchrone reset, waarbij het proces actief word op een verandering in c en dus is de conditie c=’1’ al voldoende. syn_2: Correct synthetiseerbaar; Levert een sequentiële schakeling met latches en geen synchrone reset omdat r en a in de sensitivitylist voorkomen. Syn_3: Correct synthetiseerbaar; Levert een sequentiële schakeling van flip-flops met een synchrone reset, omdat een asyncrone actie van ingang r wordt tegengehouden door de eerste IF statement en zo op c gesynchroniseerd.

wait_1: Correct synthetiseerbaar; Is equivalent met de schakeling(en): OPDRACHT:Met welke van de voorgaande schakelingen zijn onderstaande sequentiële processen zonder sensitivity list vergelijkbaar? wait_2: PROCESS BEGIN WAIT UNTIL c=’1’; IF r=’1’ THEN z <= “00’’; ELSE z <= a + ‘1’; END IF; END PROCESS; Als een proces geen sensitivitylist heeft moet het minimaal een WAIT-statement hebben. Als het ook synthetiseerbaar moet zijn dan mag dit er maar 1 zijn en moet dit het eerste statement in het PROCESS-statement zijn. wait_1: PROCESS BEGIN WAIT UNTIL c=’1’; z <= a + ‘1’; END PROCESS; wait_1: Correct synthetiseerbaar; Is equivalent met de schakeling(en): wait_2: Correct synthetiseerbaar; Is equivalent met de schakeling(en):