Projekt 5: Multiplexer, avkodare, kodare och Växelreglage (3 / 10 steg)
Steg 3: Sätt att koda Mux
Det första sättet att koda en mux behaviorally är att använda den "?:" Val av operatör. Denna metod motsvarar mest if uttalande. Det sätt jag läst det är, tilldela Y I0 om uttalandet i parentesen är sant, annars göra saker efter kolon, och så vidare.
1 tilldela Y = (Sel == 2' d0)? I0:)
2 (Sel == 2' d1)? I1:)
3 (Sel == 2' d2)? I2: I3
4)
5).
Det andra sättet att koda en mux är med hjälp av en alltid blockera tillsammans med uttrycket "om". Dock som Y tilldelas i en alltid blockera, Y måste deklareras som skriver reg.
1 reg [1:0] Y;
2
3 alltid @ (Sel, I0, I1, I2, I3)
4 börja
5 if (Sel == 2' d0) 6 Y = I0;
7 annars om (Sel == 2' d1)
8 Y = I1;
9 annars om (Sel == 2' d2)
10 Y = I2;
11 annat 12 Y = I3;
13 slutet
Det tredje sättet att koda en mux är med hjälp av en alltid blockera jämte uppgift om "fallet".
1 reg [1:0] Y;
2
3 alltid @ (Sel, I0, I1, I2, I3)
4 börja
5 fall (Sel)
6 2' d0:
7 Y = I0;
8 2' d1:
9 Y = I1;
10 2' d2:
11 Y = I2;
12 2' d3:
13 Y = I3;
14 standard: 15 Y = 2' d0;
16 endcase
17 slutet
Slutligen skapa en XDC fil och mappa följande:
-I0 [0] till SW0, I0 [1] till SW1
-I1 [0] till SW2, I1 [1] till SW3
-I2 [0] till SW4, I2 [1] till SW5
-I3 [1] till SW6, I3 [2] till SW7
-Sel [0] BTN0, Sel [1] Knp1
-Y [0] till LED0, Y [1] att LED1