Simulering med ModelSim En kort introduktion

Relevanta dokument
Simulering med ModelSim En kort introduktion

Simulera med ModelSim

Programmerbara kretsar och VHDL. Föreläsning 9 Digitalteknik Mattias Krysander Institutionen för systemteknik

-c wc. Pre- Next state Out- Vi ser att tillstånden är redan sorterade i grupper med olika utsignaler,

Programmerbara kretsar och VHDL. Föreläsning 10 Digitalteknik, TSEA22 Mattias Krysander Institutionen för systemteknik

Digitalteknik, fortsättningskurs Föreläsning VHDL Very High Speed Integrated Circuit Hardware Description Language

VHDL och laborationer i digitalteknik

Programmerbara kretsar och VHDL 1. Föreläsning 9 Digitalteknik, TSEA22 Oscar Gustafsson, Mattias Krysander Institutionen för systemteknik

Flödesschema som visar hur man använder Quartus II.

Introduktion till Xilinx CPLD och ISE WebPack 6.2 Version NV

Programmerbara kretsar och VHDL. Föreläsning 9 Digitalteknik Mattias Krysander Institutionen för systemteknik

Konstruktionsmetodik för sekvenskretsar

Konstruktion av digitala system - VHDL

Programmerbara kretsar och VHDL 2. Föreläsning 10 Digitalteknik, TSEA22 Oscar Gustafsson Institutionen för systemteknik

Chalmers ekniska Högskola Institutionen för Data- och Informationsteknik. EDA 321 Digitalteknik syntes Laboration 2 - VHDL

Design av mindre digitala system. Föreläsning Digitalteknik, TSEA52 Mattias Krysander Institutionen för systemteknik

Chalmers Tekniska Högskola Institutionen för Data- och Informationsteknik. EDA 321 Digitalteknik syntes Laboration 1 - VHDL

Konstruktionsmetodik för sekvenskretsar. Föreläsning 7 Digitalteknik, TSEA22 Mattias Krysander Institutionen för systemteknik

KALKYLATOR LABORATION4. Laborationens syfte

Angående buffer. clk clear >=1 =9?

Digital elektronik CL0090

LAB VHDL-programmering

LABORATION TSEA22 DIGITALTEKNIK D TSEA51 DIGITALTEKNIK Y. Konstruktion av sekvenskretsar med CPLD. Version: 2.2

VHDL 1. Programmerbara kretsar

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll

Hjälpmedel: Appendix A. VHDL-syntax. (bifogas detta prov) Appendix B.2. IEEE-package (bifogas detta prov)

Introduktion till syntesverktyget Altera Max+PlusII

std_logic & std_logic_vector

Lösningförslag till Exempel på tentamensfrågor Digitalteknik I.

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

Digital elektronik CL0090

DESIGN AV SEKVENTIELL LOGIK

Strukturell VHDL. Grundläggande kunskaper om. och TESTBÄDD. UMEÅ UNIVERSITET Tillämpad fysik och elektronik Lars Wållberg ver 1.

D2 och E3. EDA321 Digitalteknik-syntes. Fredag den 13 januari 2012, fm i M-salarna

Laboration i digitalteknik Introduktion till digitalteknik

Digital- och datorteknik, , Per Larsson-Edefors Sida 1

Tentamen i IE1204/5 Digital Design onsdagen den 5/

DIGITALTEKNIK. Laboration D172

LABORATIONSINSTRUKTION LABORATION

Programmerbar logik (PLD) Programmeringsspråket VHDL Kombinatoriska funktioner i VHDL för PLD Sekvensfunktioner i VHDL för PLD

VHDL2. Sekvensnätsexemplet

Laboration D184. ELEKTRONIK Digitalteknik. Sekvensnät beskrivna med VHDL och realiserade med PLD

Paneler - VCPXX.2. Programmeringsmanual för VCP-paneler. Revision 2

Tentamen i IE1204/5 Digital Design onsdagen den 5/

Laboration D159. Sekvensnät beskrivna med VHDL och realiserade med PLD. Namn: Datum: Epostadr: Kurs:

VHDL testbänk. Mall-programmets funktion. Låset öppnas när tangenten 1 trycks ned och sedan släpps. William Sandqvist

LABORATION DATORKONSTRUKTION TSEA83 UART. Namn och personnummer. Version: (OS)

VHDL2. Sekvensnätsexemplet

Lösningsföslag till Exempel på tentamensuppgifter i Digitalteknik I

Introduktion till xdigiflex-simulatorn

Sekvensnät. William Sandqvist

Tentamen i IE1204/5 Digital Design måndagen den 15/

IE1205 Digital Design: F8: Minneselement: Latchar och Vippor. Räknare

Försättsblad till skriftlig tentamen vid Linköpings universitet

Tenta i Digitalteknik

Tentamen. TSEA22 Digitalteknik 5 juni, 2015, kl

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

DIGITAL ELEKTRONIK. Laboration DE3 VHDL 1. Namn... Personnummer... Epost-adress... Datum för inlämning...

INTRODUKTION TILL VIVADO

BILAGA 5 Fi2Utrymmen Bilaga till CAD-kravspecifikation med förvaltningsinformation Version 1.0

Tenta i Digitalteknik

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Tentamen i Digitala system - EDI610 15hp varav denna tentamen 4,5hp

FÖRELÄSNING 8 INTRODUKTION TILL DESIGN AV DIGITALA ELEKTRONIKSYSTEM

VHDL3. Angående buffer

NetBeans 5.5. Avsikt. Projektfönster

Digitala projekt Elektro- och informationsteknik

Tentamen i IE1204/5 Digital Design Torsdag 29/

Digitala elektroniksystem

Steg 16 Video Debut video capture Video pad editor Windows 7/8

Digitalteknik syntes Arne Linde 2012

L15 Introduktion modern digital design

Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på:

Lösningsförslag till tentamen i Digitalteknik, TSEA22

DESIGN AV KOMBINATORISK LOGIK

Sekvensnät i VHDL del 2

F5 Introduktion till digitalteknik

Laboration VHDL introduktion

Medicinska Bilder, TSBB31. Lab: Mätvärden på Medicinska Bilder

Monitor Pro V7.x SCADA. Förstå och skapa symboler

LABORATION TSEA22 DIGITALTEKNIK D

Datorlaboration 0, Programmering i C++ (EDA623)

Datorkonstruktion. Datorkonstruktion 2018, 8hp

NetBeans 7. Avsikt. Projektfönster

Introduktion till LTspice

Laboration D181. ELEKTRONIK Digitalteknik. Kombinatoriska kretsar, HCMOS v 2.1

Lunds Universitet LTH Ingenjörshögskolan IDa1, IEa1 Helsingborg. Laboration nr 4 i digitala system ht-15. Ett sekvensnät. grupp. namn.

Tenta i Digitalteknik

En kort introduktion till. FEM-analys

LEJON LABORATION3. Laborationens syfte

Omtentamen IE Digital Design Måndag 14/

LABORATIONSINSTRUKTION LABORATION. Räknare och skiftregister med sekvensiell VHDL. LAB NR Ver KURS. Digitalteknik INNEHÅLL. 1.

Översikt, kursinnehåll

Laboration 1 Introduktion till Visual Basic 6.0

Manual Demoväska RFID. Manual Demoväska. Sara Svensson/Monika Lindgren/Fredrik Karlsson Version BnearIT AB 1(17)

Datorlaboration 0, Programmering i C++ (EDAF30)

ALEPH ver. 16 Introduktion

Medicinska Bilder, TSBB31. Lab: Mätvärden på Medicinska Bilder

Tentamen IE Digital Design Måndag 23/

Laboration: Grunderna i MATLAB

Transkript:

Linköpings universitet Institutionen för systemteknik Laborationer i digitalteknik Datorteknik 2018 Simulering med ModelSim En kort introduktion TSEA22 Digitalteknik D TSEA51 Digitalteknik Y TSEA52 Digitalteknik I Linköpings universitet SE-581 83 Linköping 013-28 10 00, www.liu.se 1

Simulering i ModelSim Följande dokument beskriver steg för steg hur en VHDL-modell simuleras i Modelsim. Sist i dokumentet finns några övningsexempel. 1. Skapa katalogen H:/TSEAXX/ där TSEAXX byts ut mot aktuell kurskod. 2. Kopiera zip-arkivet från kurshemsidan till H:/TSEAXX/ och välj Extract Here. 3. Starta Modelsim Start All Programs ModelsimSE.. Modelsim Close 4. Skapa ett projekt File New Project Project name: XOR_sim Project Location: H:/TSEAXX/VHDL_lektion/XOR OK Add Existing File: H:/TSEAXX/VHDL_lektion/XOR/XOR_gate.vhd OK Close I fliken Library finns en lista på alla tillgängliga bibliotek och dess tillhörande objekt. Konstruktion finns under work. I fliken Project listas alla VHDL-filer som finns i det nuvarande projektet. 5. Kompilering Compile Compile all 6. Simulering För att simulera kretsen måste insignaler specificeras. Detta kan antingen göras med GUI:t, via transcriptfönstret eller genom att skriva in de kommandon som ska köras i ett makro, en.do-fil, som sedan anropas från transcriptfönstret. Börja med att följa stegen i guiden för GUI:t. När ni kör kommandona från GUI:t kommer motsvarande textkommandon att dyka upp i transcriptfönstret. Skapa sedan en fil sim.do där ni klipper in de kommandon ni vill köra. Run Length och run-knapp GUI Library: work/xor_gate Höger klick Simulate Objects: markera alla signaler Höger klick Add Wave Signaler Wave: högerklicka på a, välj Clock : offset= 25ns, Duty= 50, Period= 100ns. OK Wave: högerklicka på b, välj Force : Value= 0, OK Force Value 1, Delay for = 200ns, OK Ändra Run Length till 400 ns Klicka på run 2

Do-fil Prova nu att göra om simuleringen genom att skriva kommandona i en.do-fil. I XOR-katalogen finns en tom sim.do-fil. Öppna den: File Open Välj Do Files (*.do) Välj sim.do Skriv in följande rader kod i sim.do. Dessa svarar mot GUI-inmatningarna gjorda innan. vsim xor_gate add wave sim:/xor_gate/* force -freeze sim:/xor_gate/a 1 25, 0 75 -r 100 force -freeze sim:/xor_gate/b 0 0, 1 200 run 400 Spara sim.do. Kör filen genom att i transcript-fönstret skriva > do sim.do Om man är nöjd med simulerade variabler men vill t ex modifiera insignalerna så behöver inte simuleringen startas om helt. Då räcker det med att använda restart-kommandot enligt följande kod: # vsim xor_gate # add wave sim:/xor_gate/* restart force force -freeze sim:/xor_gate/a 1 25, 0 75 -r 100 force -freeze sim:/xor_gate/b 0 0, 1 200 run 400 Här har rader i koden kommenterats bort med #. Prova att ändra insignalerna genom att modifiera dofilen och simulera xor-grinden med de nya insignalerna. 6. Visa resultat Resultatet av en simulering visas i Figur 1. Med vänster musknapp flyttas markören, en gul vertikal linje. Värdena vid markerad tidpunkt visas till höger om signalnamnen. Figur 2 visar vågfönstrets zoomfunktionalitet. Figur 1. Resultatet av simuleringen. 3

Figur 2. Wave-fönstrets zoom-funktionalitet. Klicka på musens scrollhjul och rör musen i riktning längs pilarna för att få motsvarande funktion. Mäta tid För att mäta tid mellan två tidpunkter behöver man lägga till en markör. Detta görs på följande sätt. Lägga till markör: Add Cursor Dividers I variabellistan kan det vara trevligt att dela in variabler i t ex in- och ut-gångar. Det finns möjlighet att lägga till så kallade dividers, en slags rubrikrader i signallistan, på följande sätt. Högerklicka på signalen a Add New Divider Divider Name= Ingångar Högerklicka på signalen y Add New Divider Divider Name= Utgångar Byta färg för logiska nivåer I Figur 1är hög signalnivå indikerad med guldfärg. Detta erhålls genom att göra följande inställning: ModelSim fönstret: Tools Edit Preferences.. Wave Windows LOGIC_1 Palette Gold 4

7. Modifiera VHDL-filen Antag att ni vill ändra utsignal z så att den inverterar utsignal från XOR-grinden, dvs z = not y. Börja med att beskriva den modifierade utsignalen i vhdl-filen XOR_gate.vhd. Detta kan göras i modelsim genom följande steg Gå till Modelsims huvudfönster och fliken Project Höger klicka på XOR_gate.vhd Edit Ändra så att signalen z <= not y; Filen kompileras genom att klicka på Project Compile Compile Selected Vid kompilering kan det hända att det dyker upp röda felmeddelanden i transcript-fönstret. Dessa går att dubbelklicka på så ges mer information om vad som gått fel. Om koden kompilerat felfritt står det med grön text i transcript-fönstret att Compile of XOR_gate.vhd was successful. Då är det dags att simulera kretsen do sim.do. Det går att inkludera kompileringssteget i do-filen genom att lägga till raden vcom XOR_gate.vhd först. Exempel på kod: vcom XOR_gate.vhd restart -force force -freeze sim:/xor_gate/a 1 25, 0 75 -r 100 force -freeze sim:/xor_gate/b 0 0, 1 200 run 400 8. Kombinera signaler i vågfönstret. Antag att räknetillståndet på en räknare simulerats fram med 4 tillståndsvariabler. I detta fall vore det trevligare om det i vågfönstret istället för de fyra binära signalerna visade motsvarande hexadecimala siffra. Detta är möjligt. Låt oss göra stegen som krävs för att kombinera utsignalerna för XOR-grinden. Markera de signaler i vågfönstret som skall slås ihop till en vektor i detta fall signal y och z. Höger klick på signal Combine Signals Fyll i vektornamn, Result Name= u, OK Nu ska den nya vektorsignalen dyka upp i vågfönstret och värdena indikeras med binära tvåbitsord. För att visa värdet på vektorn som positiva heltal gör: Wave fönstret: Högerklicka på signalnamnet Radix Unsigned 9. Övriga funktionalitet som kan var bra att känna till Byta färg på en signal Wave fönstret: Höger klick på signal Properties Wave Color Spara vågfönster från en simulering Wave fönstret: File Export Image.. 5

Uppgift 1. Konstruera med hjälp av VHDL en BCD-räknare som har samma funktion som 74LS160 och simulera konstruktionen i Modelsim. I den kopierade katalogen finns en underkatalog med namn Counter. I den katalogen finns Counter.vhd och sim.do som kan användas för att skapa räknaren och simuleringen. Använd funktioner som finns i VHDL, tex a <= a + 1 (minimering mha Karnaughdiagram behöver INTE göras). Simulera det beteende som finns uppritat i databladet för räknaren och som exemplifieras nedan. Insignaler: CLR, LOAD, A, B, C, D, CLK, EN_P, EN_T Utsignaler: Q3, Q2, Q1, Q0, RCO Uppgift 2. Börja med att koda och simulera uppgifterna i lab 3. Skapa ett nytt projekt för varje uppgift. 6

Lösningsförslag på uppgift 1. -------------------------------------- -- Counter.vhd -------------------------------------- library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; -------------------------------------- entity counter is port( CLK, CLR, LOAD, A, B, C, D, EN_P, EN_T: in std_logic; RCO : out std_logic; Q: out std_logic_vector(3 downto 0)); end entity; -------------------------------------- architecture rtl of counter is signal Q_int:unsigned(3 downto 0); begin process (CLR,CLK) begin if (CLR='0') then Q_int <= "0000"; elsif rising_edge(clk) then if LOAD = '0' then Q_int <= D & C & B & A; elsif EN_P = '1' and EN_T = '1' then if Q_int = 9 then Q_int <= "0000"; else Q_int <= Q_int + 1; end if; end if; end if; end process; RCO <= '1' when EN_T = '1' and Q_int = 9 else '0'; Q <= std_logic_vector(q_int); end rtl; # ------------------------------------------- # sim.do # ------------------------------------------- vsim Counter add wave sim:/counter/clr add wave sim:/counter/load add wave sim:/counter/a add wave sim:/counter/b add wave sim:/counter/c add wave sim:/counter/d add wave sim:/counter/clk add wave sim:/counter/en_p add wave sim:/counter/en_t add wave sim:/counter/q 7

add wave sim:/counter/rco # restart -force force -freeze sim:/counter/clr 1 0, 0 50, 1 150 force -freeze sim:/counter/load 1 0, 0 170, 1 220 force -freeze sim:/counter/a 1 0, 0 250 force -freeze sim:/counter/b 1 0, 0 250 force -freeze sim:/counter/c 1 0, 0 250 force -freeze sim:/counter/d 0 0, 1 250 force -freeze sim:/counter/clk 1 0, 0 50 -r 100 force -freeze sim:/counter/en_p 0 0, 1 210, 0 850, 1 1150 force -freeze sim:/counter/en_t 0 0, 1 210, 0 1150 run 1300 8