Teach Urruneko laborategidun ikasgaiak

Teach ikasgaia

Logika digitala DE1-SoC plakan VHDLrekin (2/6): egia-taulak, SOP, Karnaughen mapak eta aukerako ariketak

Funtzio boolear bat SOP kanoniko gisa gauzatuko duzu VHDLn, Karnaughen mapa batekin minimizatuko duzu eta, astirik badago, POS/MUX aukerako ariketak probatuko dituzu.

  • DE1-SoC
  • 45 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.

F(C,B,A) funtzioaren Karnaughen mapa: 1., 3., 4. eta 6. minterminoek 1 balioa dute. Talde batek C=0 errenkadako bi 1ak lotzen ditu; besteak C=1 errenkadakoak, maparen ertza zeharkatuz. Ez dira adierazpen laburtuak erakusten.
DE1-SoC

Ikaskuntza-emaitzak

  • Egia-taula batetik biderkaduren batura (SOP) kanonikoa eratortzea.

  • Funtzio boolear bat Karnaughen mapa batekin minimizatzea eta adierazpen sinplifikatua irakurtzea.

  • Forma kanonikoa eta forma minimoa benetako hardwarean konparatzea eta emaitza bera ematen dutela egiaztatzea.

  • Astirik badago, POS, multiplexadoreak eta bi digituko bistaratzea aukerako ariketetan aztertzea.

Ikaslearen jardueraren aurrebista

Jardueraren edukia

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

1

Egia-taulatik zirkuitura

8 min

Lehenengo ikasgaian, ateak banan-banan etengailuei konektatu zenizkien. Diseinu errealetan, zirkuituak zer egin behar duen erabakitzen da lehenik, normalean egia-taula baten bidez. Ondoren, portaera hori emango duen ate-sarea bilatzen da. Ikasgai honetan, funtzio bera hainbat modutan adieraziko duzu eta adierazpena sinplifikatuko duzu.

Lehenengo bi ariketetako funtzioa F(C,B,A) da, hiru sarrerakoa. SW(0)=A, SW(1)=B eta SW(2)=C konektatuko dituzu, eta emaitza LEDR(0) LEDarekin erakutsiko duzu. Hona hemen egia-taula; errenkadak C B A zenbaketa bitarraren ordenan daude, 000-tik 111-ra:

  • 0. errenkada: C B A = 0 0 0 → F=0
  • 1. errenkada: C B A = 0 0 1 → F=1
  • 2. errenkada: C B A = 0 1 0 → F=0
  • 3. errenkada: C B A = 0 1 1 → F=1
  • 4. errenkada: C B A = 1 0 0 → F=1
  • 5. errenkada: C B A = 1 0 1 → F=0
  • 6. errenkada: C B A = 1 1 0 → F=1
  • 7. errenkada: C B A = 1 1 1 → F=0

F funtzioak 1 balioa du zortzi errenkadetatik lautan, eta 0 beste lautan. Egiaztatu taulan erantzun aurretik. Bereizketa horretan oinarrituko gara: F=1 duten errenkadetatik biderkaduren batura lortzen da; F=0 dutenetatik, baturen biderkadura. Eduki taula eskura: behin eta berriz erabiliko duzu.

Gogoratu plakaren konbentzioak: etengailua gora dagoenean 1 logikoa ematen du, eta LEDR goi-mailan aktiboa da; beraz, LEDa pizten da irteerak 1 balioa duenean. Ariketa hauek konbinazional hutsak dira: irteera une horretako etengailuen posizioen araberakoa da. Ez da erlojurik deklaratu behar.

Zortzi errenkadetatik zenbatetan du 1 balioa F funtzioak? Zein dira?

2

Biderkaduren batura eta Karnaughen mapa

14 min

Minterminoa. Minterminoa sarrera guztiak erabiliz eraikitako AND termino bakarra da, hau da, biderkadura bat. Sarrera bakoitza behin agertzen da, ukatuta edo ukatu gabe, eta terminoak 1 balioa du egia-taulako errenkada bakarrean. Hiru sarrerarentzat zortzi mintermino daude, errenkada bakoitzeko bat. 1. errenkadan C=0, B=0, A=1 da; beraz, minterminoa (not C and not B and A) da. Biderkadura horrek 1 ematen du hiru baldintza horiek betetzen direnean soilik, eta 0 gainerako errenkadetan.

Biderkaduren batura kanonikoa (SOP). F eraikitzeko, elkartu OR bidez F=1 duten errenkadetako mintermino guztiak. Mintermino bakoitzak bere errenkadan soilik ematen du 1; beraz, OR eragiketaren emaitza 1 da zehazki F=1 duten errenkadetan, eta 0 gainerakoetan. Hori da F funtzioa. F=1 duten lau errenkadetatik (1, 3, 4 eta 6) honakoak lortzen dira:

  • 1. errenkada, C=0,B=0,A=1 → (not C and not B and A)
  • 3. errenkada, C=0,B=1,A=1 → (not C and B and A)
  • 4. errenkada, C=1,B=0,A=0 → (C and not B and not A)
  • 6. errenkada, C=1,B=1,A=0 → (C and B and not A)

SOP kanonikoa, beraz, F = (not C and not B and A) or (not C and B and A) or (C and not B and not A) or (C and B and not A) da. Adierazpena zuzena da, baina luzea: hiru sarrerako lau AND termino, lau sarrerako OR batean elkartuta. Sintetizatzaileak adierazpena optimiza dezake; idatzitako terminoen kopurua ez da nahitaez erabilitako hardwarearen kopurua.

Karnaughen maparekin minimizatzea. Karnaughen mapa egia-taula beste era batera antolatuta da: elkarren ondoko gelaxkek sarrera bakarrean dute aldea. Ondoko bi 1 elkartzean, bien artean aldatzen den aldagaiak ez du bikote horren emaitza aldatzen, eta terminotik ken daiteke.

Bildu F=1 duten lau minterminoak bi bikotetan:

  • 1. eta 3. minterminoen taldea. 1. errenkadan C=0, B=0, A=1 da; 3.ean, C=0, B=1, A=1. Idatzi zein aldagai mantentzen diren eta zein aldatzen den. Aldatzen dena kentzen da.
  • 4. eta 6. minterminoen taldea. 4. errenkadan C=1, B=0, A=0 da; 6.ean, C=1, B=1, A=0. Egin konparazio bera. Talde horrek maparen ertza zeharkatzen du: 00 eta 10 zutabeak ere elkarren ondokoak dira Gray kodean.

Idatzi talde bakoitzaren termino laburtua, eta elkartu biak or bidez. Ate ezagun bat identifikatzen baduzu, idatzi haren bidezko adierazpen baliokidea; bestela, gorde bi biderkaduren batura. Begiratu zer sarrera desagertzen den bi taldeetatik eta horrek zer esan nahi duen F funtzioarentzat.

F(C,B,A) funtzioaren Karnaughen mapa: 1., 3., 4. eta 6. minterminoek 1 balioa dute. Talde batek C=0 errenkadako bi 1ak lotzen ditu; besteak C=1 errenkadakoak, maparen ertza zeharkatuz. Ez dira adierazpen laburtuak erakusten.

F funtzioaren Karnaughen mapa. Talde bakoitzean, begiratu zein aldagai mantentzen diren eta kendu aldatzen dena.

Aplikatu minterminoen metodo bera beste funtzio bati. G(C,B,A) funtzioak 1 balioa du 0., 2., 5. eta 7. errenkadetan soilik (eta 0 balioa 1., 3., 4. eta 6.ean). Idatzi G funtzioaren biderkaduren batura kanoniko osoa: G=1 duen errenkada bakoitzeko mintermino bat, guztiak OR bidez elkartuta. Erabili VHDLko not, and eta or eragileak.

Zer aldagai desagertzen da bi taldeetatik F funtzioaren zure adierazpen minimoan? Azaldu zer adierazten duen horrek F funtzioak hiru sarrerekin duen mendekotasunaz. Ondoren, bilatu zure kabuz aldagai horretan soilik desberdinak diren bi errenkada; idatzi haien zenbakiak eta F balioak, azalpena egiaztatzeko.

3

Eraiki: SOP kanonikoa eta forma minimoa

14 min

Orain, eraman funtzioa benetako plakara. Lehenik SOP kanonikoa exekutatuko duzu eta zortzi errenkadak egiaztatuko dituzu. Ondoren, zure forma minimoa erabiliko duzu irteera berak ematen dituela egiaztatzeko.

Beheko txantiloiak LEDR(0) irteeraren adierazpenak TODO gisa uzten ditu. Lehen proban, osatu SOP kanonikoaren lerro aktiboa lau minterminoekin. Bigarrenean, ordeztu Karnaughen mapatik lortutako adierazpen minimoarekin, sintetizatu berriro eta konparatu.

-- Ikaslearen txantiloia: osatu TODO lerroak sintetizatu aurretik.
-- 2. ikasgaia - 1-B ariketa: biderkaduren batura.
-- F(C,B,A): 1,3,4,6 minterminoak. SW(0)=A, SW(1)=B, SW(2)=C. Irteera: LEDR(0).
library ieee;
use ieee.std_logic_1164.all;

entity blink is
    port (
        SW   : in  std_logic_vector(9 downto 0);
        LEDR : out std_logic_vector(9 downto 0)
    );
end entity blink;

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

    -- Lehen proba: osatu SOP kanonikoa lau minterminoekin.
    LEDR(0) <= TODO_CANONICAL_SOP;

    -- Bigarren proba: ordeztu aurreko lerroa mapako adierazpen minimoarekin.
    -- LEDR(0) <= TODO_MINIMIZED_EXPRESSION;
    LEDR(9 downto 1) <= (others => '0');
end architecture rtl;
  1. Ireki DE1-SoC plakaren VHDL laborategia. Editoreak blink.vhd fitxategia erakusten du.

  2. Ordeztu blink.vhd fitxategiaren eduki osoa goiko SOP txantiloiarekin. Osatu dagokion probako TODO esleipena eta mantendu blink entitate-izena.

  3. Lehen proban, osatu TODO_CANONICAL_SOP lerro aktiboa lau minterminoekin. Lerro bakarrak kontrolatu behar du LEDR(0).

  4. Sakatu Sintetizatu. Gida batek botoia estaltzen badu, itxi edo saltatu lehenik. Itxaron amaitu arte (1–3 minutu inguru). Errorea badago, berrikusi TODOak, puntu eta komak eta parentesiak; zuzendu eta sintetizatu berriro. Jarraitu soilik azken egoerak 0 errore adierazten dituenean.

  5. Sakatu FPGAra igo eta itxaron plaka eta zuzeneko kamera agertu arte.

  6. Jarri SW(2 downto 0) (C B A) zortzi konbinazioetan: 000, 001, 010, 011, 100, 101, 110, 111. Irakurri kamerako LEDR(0) eta idatzi emaitza bakoitza taulan. Aldatu SW(1)=B ere zenbaketan, eraginik ez izatea espero baduzu ere.

  7. Bigarren proban, ordeztu esleipen kanonikoa mapatik lortutako adierazpen minimoarekin. Sintetizatu eta igo berriro. Egiaztatu errenkada batzuk, adibidez 001, 100 eta 111, eta konparatu LEDR(0) bertsio kanonikoaren emaitzarekin.

Klase-saio batean erabilgarri

Jarri SW(2 downto 0) = C B A errenkada bakoitzean, eta idatzi kameran irakurritako LEDR(0): 1 = piztuta; 0 = itzalita. Konparatu hasierako egia-taularekin. Forma minimoarekin berriro probatzen dituzun errenkadetan, idatzi bi irakurketak gelaxka berean: kanonikoa: …; minimoa: ….

C = SW(2) B = SW(1) A = SW(0) LEDR(0): SOP kanonikoa / berriro probatutako minimoa

Lau terminoko SOP kanonikoak eta zure forma minimoak LEDR(0) emaitza bera eman al dute probatutako errenkadetan? Esaldi batean, azaldu zer berresten duen horrek bi adierazpenei buruz.

Erantsi zure froga. Hartu kameraren pantaila-argazki bat, forma minimoa exekutatzen ari dela eta F=1 duen errenkada bat erakusten duela. Adibidez, C B A = 100: SW(2) gora, SW(1) eta SW(0) behera; LEDR(0) piztuta egon behar da. Erantsi irudiaren erreferentzia edo esteka.

Aukerako sakontzea (ez da entregatu behar). Saioan Quartusen baliabide-txostena eskuragarri badago, konparatu SOP kanonikoak eta forma minimoak erabilitako elementu logikoen kopurua. Sintetizatzaileak bi adierazpenak hardware berera optimiza ditzake; adierazpen laburragoak ez du nahitaez baliabide gutxiago erabiltzen. Txostena ez dago beti ikusgai, eta ez da derrigorrezko froga.
4

Aukerako ariketa: funtzio bera baturen biderkadura gisa

10 min

Astirik badago, aztertu beste forma hau. SOPek F eraiki du 1 duten errenkadetatik. Baturen biderkadurak (POS) F bera eraikitzen du 0 duten errenkadetatik.

Maxterminoa. Maxterminoa sarrera guztiak erabiliz eraikitako OR termino bakarra da, hau da, batura bat. Sarrerak ukatuta edo ukatu gabe agertzen dira, eta terminoak 0 balioa du errenkada bakarrean. Minterminoaren ideia alderantziz erabiltzen du. 0. errenkadan (C=0, B=0, A=0), maxterminoa (A or B or C) da: OR horrek 0 ematen du hiru sarrerak 0 direnean soilik, eta 1 gainerakoetan.

Baturen biderkadura kanonikoa. Elkartu AND bidez F=0 duten errenkadetako maxterminoak. Maxtermino bakoitzak 0 ematen du bere errenkadan eta 1 gainerakoetan; beraz, haien AND eragiketak 0 ematen du zehazki F=0 duten errenkadetan. F funtzio bera da berriro. Lau errenkada horiek 0., 2., 5. eta 7.a dira:

  • 0. errenkada, C=0,B=0,A=0 → (A or B or C)
  • 2. errenkada, C=0,B=1,A=0 → (A or not B or C)
  • 5. errenkada, C=1,B=0,A=1 → (not A or B or not C)
  • 7. errenkada, C=1,B=1,A=1 → (not A or not B or not C)

Maxtermino bakoitzean, aldagaia ukatuta agertzen da F=0 errenkada horretan 1 balioa badu; horrela, terminoak 0 ematen du han. Osatu beheko txantiloia lau maxterminoak and bidez elkartuz. Funtzio bera denez, zortzi irteerek aurrekoekin bat etorri behar dute: 0..7 errenkadetan, 0, 1, 0, 1, 1, 0, 1, 0.

-- Ikaslearen txantiloia: osatu TODO lerroak sintetizatu aurretik.
-- 2. ikasgaia - 1-C ariketa: baturen biderkadura (POS).
-- F(C,B,A) bera. Maxterminoak (F=0 errenkadak): 0, 2, 5, 7. SW(0)=A, SW(1)=B, SW(2)=C.
library ieee;
use ieee.std_logic_1164.all;

entity blink is
    port (
        SW   : in  std_logic_vector(9 downto 0);
        LEDR : out std_logic_vector(9 downto 0)
    );
end entity blink;

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

    LEDR(0) <= TODO_POS_EXPRESSION; -- TODO: maxterminoen biderkadura
    LEDR(9 downto 1) <= (others => '0');
end architecture rtl;
  1. DE1-SoC plakaren VHDL laborategian, ordeztu blink.vhd fitxategiaren eduki osoa goiko POS txantiloiarekin. Mantendu blink izena eta osatu TODO_POS_EXPRESSION lau maxterminoen AND eragiketarekin.

  2. Sakatu Sintetizatu eta itxaron amaitu arte. Zuzendu sintaxi-erroreak eta sintetizatu berriro.

  3. Sakatu FPGAra igo eta itxaron zuzeneko kamera agertu arte.

  4. Jarri SW(2 downto 0) (C B A) 000 ... 111 arteko zortzi konbinazioetan eta irakurri LEDR(0). Egiaztatu irteeren segida 0, 1, 0, 1, 1, 0, 1, 0 dela, SOPen bezala.

  5. Errenkadaren batek bat egiten ez badu, berrikusi etengailuen posizioak (C, B, A) eta kodeko ukapenak, parentesiak eta eragileak. Zuzendu eta errepikatu proba.

Klase-saio batean erabilgarri

F funtzio zehatz honetarako, nolakoak dira POS eta SOP kanonikoen adierazpenak tamainari dagokionez?

5

Aukerako ariketa: 4:1 multiplexadorea

10 min

Irakasleak hautatzaile bat aztertzea proposatzen badu, egin ariketa hau. Multiplexadoreak (MUX) hainbat datu-sarreretako bat irteera bakarrera bideratzen du, hautaketa-lineen arabera. 4:1 MUX batek lau datu-sarrera eta bi hautaketa-linea ditu: bi bitekin 2^2 = 4 sarreren artean aukera daiteke. Etengailu birakari baten antzera, hautaketa-balioak erabakitzen du zer datu-linea konektatzen den irteerara.

Ariketa honetako pin-esleipena:

  • Datu-sarrerak: SW(3)=D3, SW(2)=D2, SW(1)=D1, SW(0)=D0.
  • Hautaketa-lineak: SW(5)=S1, SW(4)=S0.
  • Irteera: LEDR(0) = Y.

sel <= S1 & S0 esleipenean, & eragileak bi bitak kateatzen ditu; ez du AND eragiketa egiten. Hautaketa honela doa: 00 → D0, 01 → D1, 10 → D2, 11 → D3.

with sel select esleipen hautatuak sel seinalearen balio posible guztiak estali behar ditu. std_logic motak 0 eta 1 ez ezik, X bezalako simulazio-balioak ere baditu. Amaierako '0' when others aukerak gainerako kasu guztiak estaltzen ditu. Aukera hori kenduta, hautaketa osatugabea litzateke: zuzentzeko diagnostikoa jasoko zenuke. Horrek ez du berez latch bat sortzen dela esan nahi. Beste egoera batean, prozesu konbinazional batek irteera bide guztietan esleitzen ez badu, sintetizatzaileak aurreko balioa gordetzeko latch bat sor dezake. Bereizi bi arazoak.

-- Ikaslearen txantiloia: osatu TODO lerroak sintetizatu aurretik.
-- 2. ikasgaia - 1-D ariketa: 4:1 multiplexadorea, esleipen hautatuarekin.
-- Datuak: SW(3)=D3, SW(2)=D2, SW(1)=D1, SW(0)=D0. Hautaketa: SW(5)=S1, SW(4)=S0.
library ieee;
use ieee.std_logic_1164.all;

entity blink is
    port (
        SW   : in  std_logic_vector(9 downto 0);
        LEDR : out std_logic_vector(9 downto 0)
    );
end entity blink;

architecture rtl of blink is
    signal D0, D1, D2, D3 : std_logic;
    signal S0, S1, Y      : std_logic;
    signal sel            : std_logic_vector(1 downto 0);
begin
    D0 <= SW(0); D1 <= SW(1); D2 <= SW(2); D3 <= SW(3);
    S0 <= SW(4); S1 <= SW(5);
    sel <= S1 & S0;

    with sel select
        Y <= TODO_FOR_00 when "00",
             TODO_FOR_01 when "01",
             TODO_FOR_10 when "10",
             TODO_FOR_11 when "11",
             '0' when others;

    LEDR(0) <= Y;
    LEDR(9 downto 1) <= (others => '0');
end architecture rtl;
  1. DE1-SoC plakaren VHDL laborategian, ordeztu blink.vhd fitxategi osoa multiplexadorearen txantiloiarekin. Mantendu blink izena eta osatu lau TODOak dagokien datu-sarrerarekin.

  2. Sakatu Sintetizatu eta itxaron amaitu arte. Zuzendu erroreak eta sintetizatu berriro.

  3. Sakatu FPGAra igo eta itxaron kamera agertu arte.

  4. Jarri datu-etengailuak SW(3 downto 0) = 1010 patroian: D3=1 (SW(3) gora), D2=0 (SW(2) behera), D1=1 (SW(1) gora), D0=0 (SW(0) behera).

  5. Kamerari begiratu aurretik, aurreikusi zer datu-sarrera eta zer Y balio aukeratuko dituen hautaketa bakoitzak. Ondoren, probatu S1:S0 = 00, 01, 10, 11, SW(5) (S1) eta SW(4) (S0) erabiliz. Irakurri LEDR(0) (Y) eta idatzi aurreikuspena eta behaketa taulan.

  6. Azkar egiaztatzeko, aukeratu hautaketa-balio bat, aldatu dagokion datu-etengailua eta egiaztatu Y irteerak linea horri bakarrik jarraitzen diola; gainerako datu-lineek ez diote eragiten.

Klase-saio batean erabilgarri

Mantendu SW(3 downto 0) = 1010 (D3 D2 D1 D0 = 1 0 1 0). Hautaketa bakoitzean, jarri SW(5)=S1 eta SW(4)=S0, aurreikusi zer sarrera aukeratuko den eta zer Y balio emango duen, eta idatzi ondoren behatutako LEDR(0).

S1 = SW(5) S0 = SW(4) Hautatutako sarrera (D0..D3) Y: kamerari begiratu aurreko aurreikuspena Y = LEDR(0), behatua

Erantsi zure froga. Hartu multiplexadorearen probako kameraren irudi bat. Adierazi oharretan zer taula-errenkadari dagokion, irakasleak aurreikusitako eta behatutako Y konpara ditzan.

Zertarako da '0' when others adarra with sel select esleipen honetan? Bereizi aukera guztiak estaltzen ez dituen esleipen hautatuaren arazoa eta prozesu konbinazional batek Y bide guztietan esleitzen ez duenean sor daitekeen latch-a. Zergatik litzateke azken hori nahi gabeko memoria?

6

Aukerako sakontzea: bi digituko zazpi segmentuko deskodetzaile hamartarra

4 min

Ariketa hau aukerakoa da. Astirik badago, LED bakarretik zazpi segmentuko pantailetan zenbaki bat erakustera igaroko zara.

Zazpi segmentuko pantailak a-tik g-ra izendatutako zazpi barra ditu. Barrak konbinatuz digituak osatzen dira. DE1-SoC plakako HEX pantailak behe-mailan aktiboak dira, eta biten ordena g, f, e, d, c, b, a da: 0 bitak segmentua pizten du. Beraz, 0 digitua erakusteko (a,b,c,d,e,f piztuta eta g itzalita), patroia "1000000" da: sei 0 piztutako segmentuentzat eta 1 bat itzalitako g segmentuarentzat.

Zazpi segmentuen kokapena: a goian, b eskuinean goian, c eskuinean behean, d behean, e ezkerrean behean, f ezkerrean goian eta g erdian. Biten ordena g f e d c b a da; 0 bitak segmentua pizten du. 0 digituak a-tik f-ra pizten ditu eta g itzaltzen du.

DE1-SoC plakako HEX pantailen segmentuak eta g,f,e,d,c,b,a bit-ordena. 0 bitak segmentua pizten du; 1 bitak, itzali. 0 digitua: "1000000".

Diseinuak SW(3 downto 0) sarrera 0..15 arteko balio gisa irakurriko du. Batekoen zifra HEX0 pantailan erakutsiko du; hamarrekoena (0 edo 1), HEX1 pantailan. HEX1 kontrolatzeko, HEX1 : out std_logic_vector(6 downto 0) gehitu behar da entitatearen portu-zerrendan. Hasierako blink proiektuak HEX0 soilik dauka; beheko txantiloiak biak deklaratzen ditu.

Osatu TODOak: 1., 2. eta 3. digituen segmentu-patroiak, hamarrekoen zifra eta batekoena. Gainera, gehitu 4tik 9ra bitarteko digituen when adarrak, when others baino lehen; bestela, digitu horiek hutsik agertuko dira. v gutxienez 10 denean, hamarrekoen zifra 1 da eta batekoena v-10; bestela, 0 eta v dira, hurrenez hurren. Egokitu unsigned bektoreen zabalera resize erabiliz.

-- Ikaslearen txantiloia: osatu TODO lerroak sintetizatu aurretik.
-- 2. ikasgaia - 1-E ariketa (aukerakoa): bi digituko deskodetzaile hamartarra.
-- SW(3 downto 0): 0..15. HEX0: batekoen zifra; HEX1: hamarrekoen zifra.
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity blink is
    port (
        SW   : in  std_logic_vector(9 downto 0);
        HEX0 : out std_logic_vector(6 downto 0);
        HEX1 : out std_logic_vector(6 downto 0)
    );
end entity blink;

architecture rtl of blink is
    signal v    : unsigned(4 downto 0);
    signal tens : unsigned(3 downto 0);
    signal ones : unsigned(3 downto 0);

    function seg(d : unsigned(3 downto 0)) return std_logic_vector is
    begin
        case d is
            when "0000" => return "1000000"; -- 0
            when "0001" => return TODO_SEG_1;
            when "0010" => return TODO_SEG_2;
            when "0011" => return TODO_SEG_3;
            when others => return "1111111";
        end case;
    end function;
begin
    v <= resize(unsigned(SW(3 downto 0)), 5);
    tens <= TODO_TENS;
    ones <= TODO_ONES;

    HEX0 <= seg(ones);
    HEX1 <= seg(tens);
end architecture rtl;
  1. Aukerakoa. Ordeztu blink.vhd fitxategi osoa deskodetzailearen txantiloiarekin eta osatu goian adierazitako TODOak eta falta diren digitu-adarrak. Mantendu blink izena. Egiaztatu portu-zerrendak HEX1 : out std_logic_vector(6 downto 0) duela: irteera horrek hamarrekoen pantaila kontrolatzen du.

  2. Sakatu Sintetizatu, zuzendu erroreak eta sintetizatu berriro.

  3. Sakatu FPGAra igo eta itxaron kamera agertu arte.

  4. Probatu SW(3 downto 0) sarrerako balio batzuk eta irakurri bi pantailak: 0000 balioak 0 erakutsi behar du bai HEX0n bai HEX1en; 1001 balioak (9 hamartarra), 9 eta 0; 1111 balioak (15 hamartarra), 5 HEX0n eta 1 HEX1en.

Klase-saio batean erabilgarri

Zer aldaketa behar izan da entitatearen portu-zerrendan HEX1 kontrolatzeko? Zergatik zen beharrezkoa?

7

Zer eraiki duzu?

4 min

Laburbildu paragrafo labur batean F(C,B,A) funtzioarekin egindakoa: nola eratorri duzun SOP kanonikoa egia-taulatik, nola laburtu duzun Karnaughen maparekin eta zer esanahi duen B desagertzeak. Azaldu zer errenkadatan egiaztatu duzun plakan forma kanonikoak eta minimoak emaitza bera ematen dutela. POS, MUX edo zazpi segmentuko aukerako ariketak probatu badituzu, gehitu esaldi bat.

(MUX aukerako ariketa) Datuak SW(3 downto 0) = 1010 izanda, zer Y balio-segida behatu duzu S1:S0 = 00, 01, 10, 11 probatzean? Bat al dator zure aurreikuspenarekin?

Bihurtu aurrebista hau klase-saio batean

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