Paso 7: Diseñar un codificador de prioridad
En esta sección, vamos a diseñar un codificador de prioridad de entrada 4. Cuatro interruptores a bordo se utilizarán como entradas de datos. Otro interruptor actuará como señal de "Habilitar". Dos LED mostrará el valor codificado de entradas y otro dos LEDs acto como la "GS" y la señal de "Eout".
Crear un proyecto en Xilinx Vivado dirigida a la Junta FPGA que utiliza, al igual que en proyectos anteriores.
Crear un Verilog módulo llamado codificador con entradas I, Ein y salidas Eout, GS y Y como sigue:
(1 módulo) decoder_3_8
2 entrada [3:0] I,
3 entrada de Ein,
4 salida Y [1:0],
salida 5 GS,
6 salida Eout
7);
La manera más eficiente para describir el comportamiento de un codificador de prioridad es utilizar si declaración en un bloque de siempre. Como aquí tenemos tres salidas, se Código Descripción conductual para siempre bloquea las salidas de tres en tres.
1 reg [1:0] Y;
2 reg GS;
3 reg Eout;
4
5 siempre @ (I, Ein)
6 comenzar
7 if(Ein == 1)
¿8 Y = ([3] == 1)? 2' d3: ()
¿9 ([2] == 1)? 2' d2: ()
¿10 ([1] == 1)? 2' d1: 2' d0
11)
12);
13 más
14 Y = 2' d0;
15 final
16
17 siempre @ (I, Ein)
comenzar a 18
19 if (Ein == 1 & & I == 0)
20 Eout = 1' b1;
21 más
22 Eout = 1' b0;
23 final
24
25 siempre @ (I, Ein)
26 empezar
27 if (Ein == 1 & & I! = 0)
28 GS = 1' b1;
29 más
30 GS = 1' b0;
final 31
Crear un archivo de XDC y mapa:
-I [3:0] a SW3, SW2, SW1 y SW0
-Ein a SW7
-Y [1:0] LED 1-0
-Eout LED 7
-GS 6 LED