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

Relevanta dokument
VHDL och laborationer i digitalteknik

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

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

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

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

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

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

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

Simulering med ModelSim En kort introduktion

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

VHDL2. Sekvensnätsexemplet

std_logic & std_logic_vector

DIGITALTEKNIK. Laboration D172

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

Digital elektronik CL0090

VHDL2. Sekvensnätsexemplet

Introduktion till Xilinx CPLD och ISE WebPack 6.2 Version NV

VHDL 1. Programmerbara kretsar

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

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll

KALKYLATOR LABORATION4. Laborationens syfte

Konstruktionsmetodik för sekvenskretsar

Tentamen i IE1204/5 Digital Design onsdagen den 5/

Konstruktion av digitala system - VHDL

Tentamen i IE1204/5 Digital Design onsdagen den 5/

LABORATIONSINSTRUKTION LABORATION

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

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

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

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

LAB VHDL-programmering

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

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

KOMBINATORISKA FUNKTIONER...1

Digitalteknik syntes Arne Linde 2012

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...

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

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

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

Tentamen i Digitalteknik 5p

DESIGN AV SEKVENTIELL LOGIK

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

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

Digital elektronik CL0090

Digitala projekt Elektro- och informationsteknik

VHDL3. Angående buffer

L15 Introduktion modern digital design

IE1204/5 Digital Design typtenta

LEJON LABORATION3. Laborationens syfte

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

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

IE1204/5 Digital Design typtenta

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

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

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

Digitala elektroniksystem

Simulering med ModelSim En kort introduktion

Omtentamen IE Digital Design Måndag 14/

VHDL Basics. Component model Code model Entity Architecture Identifiers and objects Operations for relations. Bengt Oelmann -- copyright

Sekvensnät i VHDL del 2

Programmerbar logik och VHDL. Föreläsning 4

Tentamen i IE1204/5 Digital Design Torsdag 29/

Generering av analoga signaler från XSV300

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

Omtentamen med lösningar i IE1204/5 Digital Design Fredag 10/

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

Laboration VHDL introduktion

Simulera med ModelSim

Vetenskapsdagen 2016 SciLab för laborativa inslag i matematik eller fysik

Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering...

Tenta i Digitalteknik

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

LABORATION TSEA22 DIGITALTEKNIK D

Tenta i Digitalteknik

IE1205 Digital Design: F11: Programmerbar Logik, VHDL för Sekvensnät

Digital- och datorteknik

Funktionens deklaration

Du har följande material: 1 Kopplingsdäck 2 LM339 4 komparatorer i vardera kapsel. ( ELFA art.nr datablad finns )

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

Översikt, kursinnehåll

Introduktion till syntesverktyget Altera Max+PlusII

IE1204/IE1205 Digital Design

Tentamen med lösningar för IE1204/5 Digital Design Torsdag 15/

FIFO-kostruktion baserat på ett enkel-ports SRAM Yusuf Duman

Digital elektronik och inbyggda system

Tentamen i IE Digital Design Fredag 21/

IE1205 Digital Design: F7 : Kombinatorik

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

JavaScript Block Editor:

DESIGN AV KOMBINATORISK LOGIK

Tentamen med lösningar IE Digital Design Måndag 23/

Laboration D151. Kombinatoriska kretsar, HCMOS. Namn: Datum: Epostadr: Kurs:

Omtentamen med lösningar IE Digital Design Måndag 14/

Tentamen IE Digital Design Måndag 23/

Digital- och datorteknik

Twincat: PLC Control

RemoteBud. Inlämnas: Patrik Johnsson, e01pjo Viktor Karlsson, e01vk

Sekvensnät. William Sandqvist

Grundläggande programmering med C# 7,5 högskolepoäng

Transkript:

UMEÅ UNIVERSITET Tillämpad fysik och elektronik Lars Wållberg 2005-01-01 ver 1.0 Grundläggande kunskaper om Strukturell VHDL och TESTBÄDD Innehållsförteckning. sid Strukturbeskrivning 2 Digitalkonstruktionen ex_mix 2 Blockschema ex_mix 3 Component-deklaration och Package 5 Strukturbeskrivning/Komponentinstansiering 6 Kodexempel 6 Testbänkar 7 Kodexempel 8-12 1

STRUKTURBESKRIVNING Vid systemkonstruktion är det fördelaktigt att kunna beskriva ingående komponenter med ett språk som liknar vårt eget sätt att förmedla information. Man använder vad som kallas ett högnivåspråk. Komponenter är ett viktigt begrepp, de är de delar som ett system byggs upp av. Varje del i systemet kan då testas med simulering. Hur komponenterna i systemet ska samarbeta kan ofta, speciellt i större system, vara svårare att beskriva med beteenden i ett högnivåspråk. Komponenter kan vara komplicerade att beskriva, hur komponenter ska samarbeta är ännu svårare att språkligtoch skriftligt entydigt beskriva. VHDL erbjuder strukturbeskrivning som ett alternativ. Strukturbeskrivning/Komponentinstansiering är liktydigt med att koppla ihop komponenter. I strukturbeskrivningens ENTITY deklareras konstruktionens ar. De ledningar, SIGNALer, som behövs anges i ARCHITECTURE och där även själva ihopkopplingen beskrivs PORT MAP). Digitalkonstruktionen ex_mix se fig nästa sida) Konstruktionen ex_mix har insignalerna in1, in2, in3, in4 och v samt utsignalen utg. ex_mix är uppbyggd av komponenterna lux, dux och fux,.med ar enligt figuren. Signalerna x, y, z används för att koppla ihop komponenterna. För att ex_mix ska få de egenskaper konstruktören vill måste han naturligtvis känna till de ingående komponenternas egenskaper, men för den formella strukturbeskrivningen är komponentegenskaperna helt ointressanta. Detta gäller även för den hierarkiska toppnivån ex_mix I den följande exempelfilen kommer komponenterna att ges egenskaper i respektive architecture för att ex_mix senare ska gå att simulera i en testbänk. För att kunna använda komponenter i en strukturbeskrivning måste de deklareras som COMPONENT s. Detta görs vanligtvis i ett PACKAGE som sedan hänvisas till i en USE-sats i strukturbeskrivningen. 2

Blockschemat nedan ger en bild av hur konstruktionen är tänkt att fungera. ex_mix in1 in2 u1:lux a0) ut1 a1) x u2:fux b1) b2) h utg u3:dux in3 in4 i j k ut2 y b3) v Observera att varje komponents beteckning skrivs inuti komponentblocket. 3

Här följer nu en VHDL-kod som beskrivs steg för steg. Först komponenternas entity och architecture utan kommentarer). entity lux is a :in std_logic_vector1 downto 0 ut1 :out std_logic architecture b_lux of lux is ut1 <= a0) and a1 entity dux is i,j,k :in std_logic; ut2 :out std_logic architecture b_dux of dux is ut2 <= i xor j) or k; entity fux is b :in std_logic_vector3 downto 1 v :in std_logic; h :out std_logic architecture b_fux of fux is p0: processb,v) if v='0' then h <= b1) xor b2) xor b3 else h <= b1) xnor b2) xnor b3 end if; end process; 4

COMPONENT-deklaration och PACKAGE. En komponent som ska användas i en strukturbeskrivning måste deklareras som COMPONENT. Denna deklaration ska vara en kopia av ENTITY för komponenten. COMPONENT-deklarationerna kan sedan placeras i ett PACKAGE som sedan anropas vid komponentinstansieringen. COMPONENT-deklarationen kan även göras i samma programdel där komponenterna kopplas samman strukturbeskrivningen/komponentinstansieringen). package mix_pkg is component lux a :in std_logic_vector1 downto 0 ut1 :out std_logic component dux i,j,k :in std_logic; ut2 :out std_logic component fux b :in std_logic_vector3 downto 1 v :in std_logic; h :out std_logic end package; 5

STRUKTURBESKRIVNING/KOMPONENTINSTANSIERING Portarna för ex_mix finns i blockschemat tidigare i kompendiet. Här har ingen av dem deklarerats som vektorer. Denna omständighet gör att vi i ARCHITECTURE måste deklarera två temporära signaler a_temp och b_temp. I PORT MAP måste de mappade signalerna vara av samma typ. Det finns skrivsätt i VHDL där enskilda ar kan sammanfogas till vektorer, men vår mjukvara Warp/Galaxy)har svårt med dessa skrivkonstruktioner. Här följer källkoden för strukturbeskrivningen ex_mix med några kommentarer. use work.mix.pkg.all; entity ex_mix is in1,in2,in3,in4 :in std_logic; v :in std_logic; utg :out std_logic architecture b_ex_mix of ex_mix is signal x,y :std_logic;-- signals for wireing COMPONENTS signal a_temp :std_logic_vector1 downto 0 -- signal for typeadapt -- a in lux signal b_temp :std_logic_vector3 downto 1-- signal for typ adapt -- b in fux a_temp1) <= in2;-- elementtilldelning a_temp0) <= in1; -- elementtilldelning b_temp1) <= x; -- elementtilldelning b_temp2) <= in2; -- elementtilldelning b_temp3) <= y; -- elementtilldelning u1: lux mapa_temp,x--position mapping ; u2: dux mapj=>in3,i=>in2, k=>in4, ut2=>y-- name mapping u3: fux mapb_temp,v,utg--position mapping Kommentarer: a i lux är en vektor och i fux är b en vektor u1, u2, u3 är etiketter som måste finnas med. Namnvalet på etiketterna kan väljas godtyckligt. OBServera att komponentnamnet måste finnas med. Två olika typer av mappning kan användas: 1) positionsmappning innebär att toppentitetens ex_mix) ar och deklarerade signaler skrivs in i den position/ordnig somde är deklareradei komponentens entity. 2) namnmappning innebär att ar i komponentens entity kopplas till toppentitetens ex_mix) ar och signaler med operatorn =>. Här spelar ordningen ingen roll. OBSservera att ar och signaler måste vara av samma typ vid mappningen. 6

Testbänkar När en konstruktion har beskrivits med VHDL, behövs en kontroll för att se om specifikatiionen följts. Vid simulering är en vanlig metod att man ger insignalerna olika stimuli och därefter avläser utsignalerna. Nackdelen är mångfalden av simuleringsspråk och sätten att ge insignalerna värden varierar. VHDL erbjuder ett sätt att skriva testmönstergenereringen. Det finns även möjlighet att kontrollera utsignalerna i en VHDL-testbänk. Vid större konstruktioner är det omöjligt att kontrollera utsignalerna för alla insignalskombinationer.under konstruktionsarbetet utsätts ingående komponenter för omfattande simuleringar. I den konstruktion där komponenterna ingår testas därför endast kritska insignaler, det vill säga sådana signaler som man tror kan generera felaktiga utsignaler. En testbänk i VHDL-kod liknar en srtukturbeskrivning. Man deklarerar sin konstruktion som en komponent och ansluter signaler till arna. Stimuli värden)till insignalerna kan på olika sätt ges värden vid olika tidpunkter och utsignalerna kan kontrolleras antigen manuellt eller med en assert-sats i VHDL. I detta kompendium förutsätts att utsignalerna kontrolleras manuellt. Två exempel på testbänkar kommer att exemplifieras där insignalerna ges värden på olika sätt. OBServera!! Simulatorn som vi använder, Aktiv HDL-sim, kräver att all kod finns i simuleringsfilen. Den mjukvaruegenskapen är något besvärande, men med copy-paste i editorn samt att programmet är gratis gör att man kan ha överseende med detta krav. En komplett simuleringsfil redovisas först, sedan med en modifierad kod för insignalstimuli. 7

VHDL-kod för simuleringsfilen sim_ex_mix0 entity lux is a :in std_logic_vector1 downto 0 ut1 :out std_logic architecture b_lux of lux is ut1 <= a0) and a1 entity dux is i,j,k :in std_logic; ut2 :out std_logic architecture b_dux of dux is ut2 <= i xor j) or k; entity fux is b :in std_logic_vector3 downto 1 v :in std_logic; h :out std_logic architecture b_fux of fux is p0: processb,v) if v='0' then h <= b1) xor b2) xnor b3) else h <= b1) xnor b2) and b3) end if; end process; 8

library ieee; package mix_pkg is component lux a :in std_logic_vector1 downto 0 ut1 :out std_logic component dux i,j,k :in std_logic; ut2 :out std_logic component fux b :in std_logic_vector3 downto 1 v :in std_logic; h :out std_logic end package; 9

use work.mix_pkg.all;-- call of COMPONENTs in PACKAGE mix_pkg entity ex_mix is in1,in2,in3,in4 : in std_logic; v : in std_logic; utg : out std_logic architecture b_ex_mix of ex_mix is signal x,y :std_logic;-- signals for wireing COMPONENTS signal a_temp :std_logic_vector1 downto 0 -- signal for type adapt -- a in lux signal b_temp :std_logic_vector3 downto 1 -- signal for type adapt -- b in fux a_temp1) <= in2; a_temp0) <= in1; b_temp1) <= x; b_temp2) <= in2; b_temp3) <= y; u1: lux mapa_temp,x --position mapping u2: dux mapj=>in3,i=>in2, k=>in4, ut2=>y --name mapping u3: fux mapb_temp,v,utg --position mapping package ex_mix_pkg is component ex_mix in1,in2,in3,in4 : in std_logic; v : in std_logic; utg : out std_logic end package; 10

use work.ex_mix_pkg.all; entity sim_ex_mix is -- en entity utan ar!! architecture b_sim_ex_mix of sim_ex_mix is signal in1,in2,in3,in4 : std_logic; signal v : std_logic; signal utg : std_logic; u: ex_mix mapin1,in2,in3,in4,v,utg v <= '0', '1' after 200 ns; in1 in2 <= '0', <= '0', '1' after 300 ns; '1' after 50 ns, '0' after 100 ns, '1' after 200 ns, '0' after 350 ns; in3 <= '1', in4 <= '0', '0' after 150 ns, '1' after 400 ns; '1' after 50 ns, '0' after 100 ns, '1' after 200 ns, '0' after 350 ns; 11

Här visas ett annat sätt att tilldela insignalerna stimuli. Koden som redovisas är bara den som skiljer sig från sim_ex_mix0 OBServera att signalerna måste ges ett startvärde.värdena ges med operatorn := i signaldeklarationen. Utsignaler får aldrig ges några värden. VHDL-kod för simuleringsfilen sim_ex_mix1 use work.ex_mix_pkg.all; entity sim_ex_mix is -- en entity utan ar!! architecture b_sim_ex_mix of sim_ex_mix is signal in1,in2,in3,in4 : std_logic:='0';--ges startvärdena 0 signal v : std_logic:='0'; ;--ges startvärdet 0 signal utg : std_logic; u: ex_mix mapin1,in2,in3,in4,v,utg in1 <= not in1 after 10 ns; in2 <= not in2 after 20 ns; in3 <= not in3 after 40 ns; in4 <= not in4 after 100 ns; v <= not v after 200 ns; 12