Étape 3: Manières de coder le Mux
La première façon de coder un mux comportemental consiste à utiliser la "?:" opérateur de sélection. Cette méthode est plus analogue à la fi déclaration. La façon dont j’ai lu que c’est, assigner Y à I0 si l’instruction dans la parenthèse est true, sinon faire les trucs après le signe deux-points et ainsi de suite.
1 affecter Y = (Sel == 2' d0) ? I0 :)
2 (Sel == 2' d1) ? I1 :)
3 (Sel == 2' d2) ? I2 : I3
4)
5) ;
La deuxième consiste à coder un mux en utilisant un toujours bloquer avec une instruction "if". Cependant, comme Y est assignée à une toujours bloquer, Y doit être déclarée comme type reg.
1 reg [1:0] Y ;
2
3 toujours @ (Sel, I0, I1, I2, I3)
4 commencer
5 if (Sel == 2' d0) 6 O = I0 ;
7 ElseIf (Sel == 2' d1)
8 Y = I1 ;
9 ElseIf (Sel == 2' d2)
10 Y = I2 ;
11 12 d’autre Y = I3 ;
13 fin
La troisième consiste à coder un mux en utilisant un bloquer toujours accompagnés d’une déclaration de « l’affaire ».
1 reg [1:0] Y ;
2
3 toujours @ (Sel, I0, I1, I2, I3)
4 commencer
5 cas (Sel)
6 2' d0 :
7 Y = I0 ;
8 2' d1 :
9 Y = I1 ;
2' J2 : 10
11 Y = I2 ;
12 2' d3 :
13 Y = I3 ;
14 par défaut : 15 Y = 2' d0 ;
endcase 16
fin 17
Enfin, créez un fichier XDC et carte ce qui suit :
-I0 [0] à SW0, I0 [1] à SW1
-I1 [0] à SW2, I1 [1] à SW3
-I2 [0] à SW4, I2 [1] à SW5
-I3 [1] à SW6, I3 [2] à SW7
-Le Sel [0] à BTN0, Sel [1] à BTN1
-Le Y [0] à LED0, Y [1] à LED 1