Vaasan yliopisto Sivu: 1/9 VHDL-piirikuvaus ja simulointi Quartus II ja ModelSim Altera Edition -ohjelmilla Tässä dokumentissa opastetaan, miten -kurssin VHDLtehtävissä tarvittavia ohjelmia käytetään. Melkein kaikki toiminnot tehdään Quartus II -ohjelmassa, johon luodaan projekti. Projekti on tavallaan säiliö, joka sisältää organisoidusti tarvittavat piirikuvaukset, testipenkit, asetukset ja muut tiedostot. Seuraavassa esimerkissä kuvataan kahden sisääntulon ja yhden ulostulon piiri VHDL:llä. Piiri toteuttaa XOR-funktion. Simuloidaan piiriä tekemällä sille testipenkki VHDL:llä ja ajamalla simulaatio ModelSim Altera Edition -ohjelmalla. Lopuksi toteutetaan piiri FPGA-piirillä käyttäen DE2-kehitysalustaa. FPGA:lla sisääntuloja ohjataan valintakytkimillä ja ulostulo esitetään punaisella valodiodilla. 1. Käynnistä Quartus II -ohjelma (versio 9). 1.1. Jos ohjelma kysyy lisenssiä, hae lisenssitiedosto (license.dat) kansiosta: C:\altera\ 2. Luo uusi projekti: File -> New Project Wizard. 2.1. Luo omaan kansioosi uusi hakemistomy2xor ja valitse se working directoryksi. Quartus osaa myös itse luoda kansion, jos kirjoitat uuden kansionimen working directory-kohtaan. Opiskelijoiden verkkokansiot eivät välttämättä toimi (osalla toimii osalla ei), koska ilmeisesti verkkolevy ei anna Quartuksen tai ModelSimin kirjoittaa niihin uusia tiedostoja. Käytä tällöin muistitikkua (voi olla hidas) tai C:\altera -kansiota. Jälkimmäisessä tapauksessa ota lopuksi kopio tiedostoista itsellesi ja poista tiedostot koneelta. 2.2. Aseta projektin ja top-levelin nimiksi myösmy2xor, jolloin myöhemmin on helppo löytää oikea projekti, kun kansion ja projektin nimet ovat samat. Jos sinulla on jokin aiempi projekti, voit hakea sieltä asetukset (Use existing project settings ), jolloin osa myöhemmistä vaiheista jää pois. 2.3. Valitse DE2-kehitysalustalla käytettävä piiri: Cyclone II: EP2C35F672C6. 3. Kirjoita VHDL-kuvaus piiristä: 3.1. Luo uusi VHDL-tiedosto: File -> New -> Design Files -> VHDL File 3.2. Kirjoita VHDL-koodi, esim: library IEEE; use IEEE.std_logic_1164.all; entity my2xor is port(x : in std_logic_vector(1 downto 0); z : out std_logic);
Vaasan yliopisto Sivu: 2/9 end my2xor; architecture my2xor_arch of my2xor is begin z <= x(1) xor x(0); end my2xor_arch; 3.3. Tallenna kirjoittamasi tekstitiedosto: File -> Save As, nimeä my2xor.vhd 4. Tarkistetaan asetukset: Assignments -> Settings: -Files: Tässä näkyvät projektissa mukana olevat tiedostot. Ainakin pitäisi my2xor.vhd olla. - Device: FPGA-piirin malli ja asetukset. Asetetaan käyttämättömät pinnit korkearesistanssiseen tilaan: Device and Pin Options -> Unused Pins -> As input tri-stated. - EDA Tool Settings à Simulation à Toolname: ModelSim-Altera, Format for output netlist: VHDL, output directory: simulation/modelsim. - OK 5. Käännä VHDL-kuvaus: Start Analysis & Synthesis. (Ks. Kuva 1.) Korjaa tarvittaessa virheet. Kuva 1. VHDL-kuvauksen kääntäminen ja vastaava pikavalintapainike (ympyröity). 6. Tutkitaan käännösraporttia. - VHDL-kuvauksen toteuttaminen vie yhden logiikkaelementin ja kolme liitintä.
Vaasan yliopisto Sivu: 3/9 - Tutkitaan piirikaaviota (Kuva 2): Tools -> Netlist Viewers -> RTL Viewer. Tämä ei välttämättä ole lopullinen, optimointien jälkeinen toteutus, mutta mahdollistaa visuaalisen tarkistuksen, että piiri oikeanlainen. x[1..0] z~0 z Kuva 2. Quartus II:n luoma piirikaavio. - Optimoidun tuloksen näkee toisesta kuvaajast: Tools -> Netlist Viewers -> Technology Map Viewer (Post-Mapping). 7. Kerrotaan Quartukselle, missä simulaattoriohjelma on. 7.1. Etsi ModelSim-Altera-ohjelman käynnistyskuvake. Avaa siitä hiiren oikealla painikkeella valikko ja avaa Properties. Kopioi Target-kohdasta.exe -tiedoston hakemistopolku kuvan 3 mukaisesti. Kuva 3. Exe-tiedoston hakemistopolun kopioiminen.
Vaasan yliopisto Sivu: 4/9 7.2. Avaa Quartuksesta Tools à Opions. 7.3. Mene välilehdelle EDA Tool Options. 7.4. Liitä ModelSim-Alteran osoite oikeaan kohtaan (ks. Kuva 4). Kuva 4. ModelSim-Alteran hakemistopolun lisääminen. 8. Simuloidaan piiri: 8.1. Luodaan ensin ModelSimiä varten hakemistorakenne. Valitse Tools à Run EDA Simulation Tool à EDA RTL Simulation. Quartus käynnistää ModelSimin automaattisesti. Tällä kertaa voit sulkea ModelSimin välittömästi.
Vaasan yliopisto Sivu: 5/9 Kuva 5. ModelSimin käynnistys Quartuksesta. 8.2. Kirjoitetaan VHDL-testipenkki. 8.3. Luo uusi VHDL-tiedosto: File -> New -> Design Files -> VHDL File 8.4. Kirjoita VHDL-koodi, esim: library ieee; use ieee.std_logic_1164.all; entity my2xor_tb is end my2xor_tb; architecture arch of my2xor_tb is component my2xor is port( x : in std_logic_vector(1 downto 0); z : out std_logic); end component; signal x_test : std_logic_vector(1 downto 0); signal z_test : std_logic; constant period : time := 10 ns; begin u1 : my2xor port map(x_test, z_test); testi: process
Vaasan yliopisto Sivu: 6/9 begin x_test <= "00"; wait for period; x_test <= "01"; wait for period; x_test <= "10"; wait for period; x_test <= "11"; wait for period; wait; end process; end arch; 8.5. Tallenna testipenkki kansioon./simulation/modelsim nimellä my2xor_tb.vhd. 8.6. Muuta asetuksiin, mikä testipenkki on käytössä (Kuva 6): Assignments à Settings à EDA Tool Settings à Simulation: NativeLink setting: Compile test bench. Hae oikea testipenkkitiedosto: Test Benches à New. Anna testipenkin nimeksi: my2xor_tb. Anna top levelin nimeksi:my2xor_tb. Design instance name in test bench: u1. Hae testipenkkitiedostomy2xor_tb.vhd ja paina Add (Katso Kuva 7).. Paina kolmesti OK. Kuva 6. Testipenkin asettaminen asetuksiin.
Vaasan yliopisto Sivu: 7/9 Kuva 7. Testipenkin tietojen syöttäminen 8.7. Käynnistetään simulointi (ModelSim ei saa olla auki): Tools à Run EDA Simulation Tool à EDA RTL Simulation. Jos testipenkissä on syntaksivirheitä, niitä voi korjata joko ModelSimissä tai Quartuksessa. 8.8. Paina -merkkiä (zoom out), kunnes kuva on sopiva (Kuva 8). Tarkista simulaation tulos. 8.9. Sulje ModelSim.
Vaasan yliopisto Sivu: 8/9 Kuva 8. Simulaation tulos.
Vaasan yliopisto Sivu: 9/9 Simulointi on nyt valmis. Seuraavat vaiheet liittyvät FPGA-syntetisointiin. 9. Konfiguroidaan VHDL-kuvauksen porttien ja FPGA-piirin liittimien (nastojen) välinen vastaavuus: 9.1. Assignments -> Pin Planner: (Node name, Location): - (x(0), PIN_N25), - (x(1), PIN_N26), - (z, PIN_AE23). On myös kaksi muuta tapaa määritellä porttien ja FPGA-liittimien vastaavuus, kuin määritellä ne Pin Plannerissä (tapa 1). Tapa 2: VHDL-attribuutit Kirjoitetaan arkkitehtuuriin esim. seuraavasti: attribute chip_pin : string; attribute chip_pin of x : signal is "N26, N25"; attribute chip_pin of z : signal is "AE23"; Tapa 3: csv-tiedosto (comma separated values) csv-tiedosto, jossa määritellään tietyn kehitysalustan FPGA-liittimien nimet löytyy esimerkiksi kehitysalustan mukana tulevalta CD:ltä. Tiedoston voi ladata Quartus-projektiin kohdasta: Assignments à Import Assignments. Tiedostossa annetaan kullekin nastalle VHDL-nimi sekä FPGA-nastan nimi. Jos siis käyttää csvtiedoston mukaisia nimiä Top Level VHDL -entiteetissä, porttien ja nastojen yhteyttä ei tarvitse enää erikseen määrittää. Nyt porttix:n tilalle pitäisi määritelläsw : in std_logic_vector(1 downto 0); ja porttiz:n tilalle pitäisi määritelläledr : in std_logic_vector(0 downto 0); Eli yksittäinen bittikin pitää käsitellä vektorina. 10. Tehdään syntetisoitava käännös: Processing -> Start Compilation. 11. Ohjelmoidaan kuvaus FPGA-piirille: Tools -> Programmer. Valitse Hardware-valikosta USBblaster ja paina Start. 12. Testaa DE2-pöydällä piirin toiminta.