Teach Urruneko laborategidun ikasgaiak

Teach ikasgaia

Logika digitala DE1-SoC plakan VHDL erabiliz (1/6): zure lehen ateak benetako hardwarean

Oinarrizko ate logikoak deskribatuko dituzu VHDL bidez, diseinua sintetizatu eta DE1-SoC plakara kargatuko duzu, eta egia-taulak benetako etengailu eta LEDekin egiaztatuko dituzu.

  • DE1-SoC
  • 50 min
  • Batxilergo teknologikoa, hasierako lanbide-heziketa edo lehen ikasturte teknikoak
  • eu
  • Digital systems & FPGA

Hasi saioa irakasle-kontu batekin klase-saioa prestatzeko. Ikasleak klase-kode batekin sartzen dira.

DE1-SoC plakako VHDL lan-prozesua: editatu blink.vhd; Sintetizatu botoiak Quartus zerbitzarian abiarazten du; FPGAra igo botoiak benetako plaka programatzen du; azkenik, erabili pantailako etengailuak eta behatu zuzeneko kamera.
DE1-SoC

Ikaskuntza-emaitzak

  • VHDL lengoaiak hardwarea deskribatzen duela azaltzea, eta ez lerroz lerro exekutatzen den programa bat.

  • LabsLandeko DE1-SoC lan-prozesua erabiltzea: editatu, Sintetizatu, FPGAra igo eta behatu.

  • Oinarrizko sei ate logikoak eraikitzea eta haien egia-taula benetako hardwarean egiaztatzea.

  • DE1-SoC plakako LEDen aktibazio-maila altua eta sakagailuen aktibazio-maila baxua ezagutzea.

Ikaslearen jardueraren aurrebista

Jardueraren edukia

Aurrebista soilik. Klase-saio batean, ikasleek erantzunak bete eta lana irakasleari bidal diezaiokete.

1

Zer egingo duzu?

12 min

Ezagutzen dituzun programa gehienak prozesadore batean exekutatzen dira: instrukzioak bata bestearen ondoren egiten dira. Ikastaro honetan, zirkuitu digital bat deskribatuko duzu VHDL izeneko lengoaian. Benetako txip bat zirkuitu hori gauzatzeko konfiguratuko da. Diseinu honetan ez dago zure lerroak banan-banan exekutatzen dituen prozesadorerik: deskribatutako konexioek eta ate logikoek aldi berean funtzionatzen dute.

Txipa FPGA bat da (Field-Programmable Gate Array): berriz konfigura daitezkeen bloke logiko eta konexio ugari dituen zirkuitu integratua. Plaka Terasic DE1-SoC bat da, Intel/Altera-ren Cyclone V FPGA batekin; diseinu digitaleko unibertsitate-ikastaroetan asko erabiltzen da. LabsLand bidez, nabigatzailetik sartuko zara benetako plaka batera. Zerbitzari batek Intel Quartus erabiltzen du zure VHDL deskribapena konfigurazio-fitxategi bihurtzeko; ondoren, plaka fisikoa programatzen da. Zuzeneko kameran ikusiko duzu nola erantzuten duten benetako LEDek.

Ikastaro honetan erabiliko dituzun plakaren osagaiak:

  • SW(9 downto 0): pantailatik kontrolatzen dituzun 10 etengailu lerragarri. Etengailua goian dagoenean, 1 logikoa ematen du.
  • KEY(3 downto 0): 4 sakagailu. Maila baxuan aktibatzen dira: sakatuta, 0 irakurtzen da; askatuta, 1.
  • CLOCK_50: 50 MHz-eko erloju-seinalea; 3. ikasgaitik aurrera erabiliko duzu.
  • LEDR(9 downto 0): 10 LED gorri. LEDR0 lerroaren eskuineko muturrean dago, eta LEDR9, ezkerrekoan. Maila altuan aktibatzen dira: LED bat pizteko, haren seinalea 1 jarri behar da.
  • HEX0–HEX5: 7 segmentuko sei bistaratzaile. Maila baxuan aktibatzen dira: segmentu bat pizten da dagokion bitak 0 balio duenean.

Lan-prozesu bera erabiliko duzu ikasgai guztietan. LabsLandeko VHDL editorea blink.vhd fitxategiarekin irekitzen da. Fitxategiak blink izeneko goi-mailako entitatea (top-level) dauka: diseinu osoaren sarrera eta irteerak definitzen dituen entitatea. Ordeztu fitxategiaren eduki osoa ariketako diseinuarekin, entitatearen blink izena mantenduz. Sakatu Sintetizatu, itxaron amaitu arte, sakatu FPGAra igo eta erabili pantailako etengailuak kamera behatzen duzun bitartean. Gida batek edo laguntza-leiho batek editoreko botoiak estaltzen baditu, itxi edo saltatu aurrera egin aurretik.

DE1-SoC plakako VHDL lan-prozesua: editatu blink.vhd; Sintetizatu botoiak Quartus zerbitzarian abiarazten du; FPGAra igo botoiak benetako plaka programatzen du; azkenik, erabili pantailako etengailuak eta behatu zuzeneko kamera.

Editatu blink.vhd, sakatu Sintetizatu (Quartus zerbitzarian), sakatu FPGAra igo, eta probatu zirkuitua pantailako etengailuekin, zuzeneko kamera behatuz. Zure VHDL entitatea zuzenean goi-mailako diseinu gisa sintetizatzen da; fitxategi hau bakarrik editatuko duzu.

Zein esaldik azaltzen du hobekien zure VHDL deskribapenak laborategi honetan egiten duena?

Plaka honetan, zer balio jarri behar da LED bat pizteko? Eta zer balio irakurtzen da KEY sakagailu bat sakatuta dagoenean? Erantzun esaldi batean.

2

Oinarrizko sei ateak

12 min

Ate logiko batek sarrera bitar bat edo gehiago hartzen ditu, eta irteera bitar bat ematen du. Sei ate hauekin egingo duzu ikastaroko lanaren zatirik handiena. A eta B sarrerak erabilita:

A eta B sarreren egia-taula:

  • A=0, B=0 → AND 0, OR 0, NOT A 1, NAND 1, NOR 1, XOR 0
  • A=0, B=1 → AND 0, OR 1, NOT A 1, NAND 1, NOR 0, XOR 1
  • A=1, B=0 → AND 0, OR 1, NOT A 0, NAND 1, NOR 0, XOR 1
  • A=1, B=1 → AND 1, OR 1, NOT A 0, NAND 0, NOR 0, XOR 0

VHDL lengoaian, ate horiek and, or, not eta xor eragile logikoekin idazten dira. Beheko diseinuak SW(0) etengailua A seinaleari lotzen dio, eta SW(1), B seinaleari. Ate bakoitzaren emaitza LED batera bidaltzen du. LEDR(0) <= A and B; bezalako esleipen konkurrente batek adierazten du irteerak une oro adierazpen horri jarraitzen diola. entity blink zatiak sarrerak eta irteerak deklaratzen ditu; architecture rtl of blink zatiak haien arteko logika deskribatzen du.

-- Ikaslearen txantiloia: osatu TODO lerroak sintetizatu aurretik.
-- 1. ikasgaia: oinarrizko ateak. Ordeztu blink.vhd fitxategiko eduki OSOA diseinu honekin.
library ieee;
use ieee.std_logic_1164.all;

entity blink is
    port (
        SW   : in  std_logic_vector(9 downto 0);  -- SW(0)=A, SW(1)=B
        LEDR : out std_logic_vector(9 downto 0)
    );
end entity blink;

architecture rtl of blink is
    signal A, B : std_logic;
begin
    A <= SW(0);
    B <= SW(1);

    LEDR(0) <= TODO_AND;          -- TODO: AND adierazpena
    LEDR(1) <= TODO_OR;           -- TODO: OR adierazpena
    LEDR(2) <= TODO_NOT_A;      -- TODO: NOT A adierazpena
    LEDR(3) <= TODO_NAND;        -- TODO: NAND adierazpena
    LEDR(4) <= TODO_NOR;         -- TODO: NOR adierazpena
    LEDR(5) <= TODO_XOR;         -- TODO: XOR adierazpena
    LEDR(9 downto 6) <= (others => '0');  -- Erabili gabeko LEDak itzalita
end architecture rtl;

Diseinua plakan probatu aurretik, egin hasierako iragarpena. Bi etengailuak behean badaude, A=0 eta B=0: bilatu errenkada hori egia-taulan, eta erabaki sei ateetako bakoitzaren irteera 1 den ala ez. Hurrengo urratsean, iragarpena benetako plakarekin alderatuko duzu.

Bi etengailuak behean daudela (A=0, B=0), LEDR(0)–LEDR(5) bitarteko zein LED egongo dira piztuta, zure ustez? Idatzi diseinua plakan probatu aurretik, eta justifikatu egia-taulan oinarrituta.

3

Sintetizatu, kargatu eta egiaztatu

16 min

Eraiki orain zirkuitua benetako plakan, eta egiaztatu egia-taularen arabera funtzionatzen duela.

  1. Ireki DE1-SoC plakako VHDL laborategia. Editoreak blink.vhd fitxategia erakusten du.

  2. Hautatu blink.vhd fitxategiaren eduki osoa eta ordeztu goiko oinarrizko ateen txantiloiarekin. Mantendu blink izena. Ordeztu TODO guztiak dagozkien adierazpenekin.

  3. Sakatu Sintetizatu. Gida batek botoia estaltzen badu, itxi edo saltatu lehenik. Itxaron amaitu arte (1–3 minutu inguru). Errore bat agertzen bada, begiratu puntu eta komarik falta den edo parentesiak parekatuta dauden, zuzendu eta sakatu berriro Sintetizatu. Abisu asko ager daitezke; jarraitu soilik azken egoerak konpilazioa 0 errorerekin amaitu dela dioenean.

  4. Sakatu FPGAra igo, eta itxaron plakaren saioa eta zuzeneko kamera agertu arte.

  5. Pantailako SW(0) eta SW(1) etengailuak behean daudela (A=0, B=0), behatu kameran zein LED dauden piztuta eta alderatu zure iragarpenarekin.

  6. Jarri SW(1) goian eta SW(0) behean (A=0, B=1). Ondoren, jaitsi SW(1) eta igo SW(0) (A=1, B=0). Azkenik, jarri biak goian (A=1, B=1). Irakurri sei LEDen egoera konbinazio bakoitzean.

Klase-saio batean erabilgarri

Errenkada bakoitzean, jarri etengailuak adierazitako egoeran eta jaso kameran sei LEDek erakusten dutena (1 = piztuta, 0 = itzalita). Alderatu aurreko urratseko egia-taularekin.

A = SW(0) B = SW(1) LEDR0 AND LEDR1 OR LEDR2 NOT A LEDR3 NAND LEDR4 NOR LEDR5 XOR

Erantsi zure ebidentzia. Hartu kameraren pantaila-argazki bat bi etengailuak goian daudela (SW = 11): LEDR0 (AND) eta LEDR1 (OR) piztuta agertu behar dira, eta gainerakoak itzalita. Erantsi irudiaren erreferentzia edo esteka erantzunean.

Zein atek ematen du 1 sarreren konbinazio bakar batean, zehazki A=1, B=1 errenkadan?

Zein atek ematen du 1 sarreren konbinazio bakar batean, zehazki A=0, B=0 errenkadan?

Azaldu zure hitzekin zer erlazio duten NAND eta NOR ateek AND/OR ateekin eta NOT eragiketarekin. Erabili jasotako datuak erantzuna justifikatzeko.

4

Lan-prozesuaren egiaztapena

10 min

Zein sekuentzia dator bat egin berri duzunarekin?

Hiru esalditan, azaldu zer egin duen Sintetizatu urratsak, zer egin duen FPGAra igo urratsak eta nola jakin duzun ateek funtzionatzen zutela. Aipatu noiz izan den garrantzitsua seinale bat maila altuan edo baxuan aktibatzea.

Bihurtu aurrebista hau klase-saio batean

Jarraitu LabsLand Teach-era ikasgai hau ikasleekin erabiltzeko eta kontuaren sarbidea berrikusteko.