EDA (Quartus II) -Diseño de decodificador de pantalla digital

Tabla de contenido

Objetivo:

Requisitos de vista previa:

Explicaciones y ejercicios experimentales:

1. El programa fuente del multiplexor que elige 1 de 4:

2. Conocimientos gramaticales:

Contenido del experimento: diseño de decodificador de pantalla digital

Programa fuente del decodificador de pantalla digital de 7 segmentos:

Forma de onda de simulación del decodificador de pantalla digital de 7 segmentos:

Verificación de hardware del decodificador de pantalla digital de 7 segmentos:

Resumen del experimento


Objetivo:

1. Familiarizarse con el uso del software QuartusⅡ y dominar el proceso EDA;

2. Dominar los métodos de diseño de circuitos lógicos combinacionales básicos;

3. Aprenda el diseño de decodificadores de pantallas digitales para sentar las bases para el diseño de sistemas digitales complejos.

Requisitos de vista previa:

1. Dominar el proceso de diseño de FPGA EDA (entrada de texto);

2. Dominar la estructura básica de los programas VerilogHDL, el uso de declaraciones de procedimiento always @ y declaraciones de casos;

3. Dominar los principios de diseño de los decodificadores de pantallas digitales.

Explicaciones y ejercicios experimentales:

1. El programa fuente del multiplexor que elige 1 de 4:

module mux41_a(a,b,c,d,s0,s1,y);
input a,b,c,d,s0,s1;
 
output y;
reg y;
always@ (*)
begin                                        
	case ({s0,s1})
	2'b00:y<=a;
	2'b01:y<=b;
	2'b10:y<=c;
	2'b11:y<=d;
	default y<=a;
	endcase 
	
end 
endmodule
Figura 1 4 elija 1 forma de onda de simulación de multiplexor (1)
Figura 2 Forma de onda simulada de 4 Elija 1 multiplexor (2)

 

2. Conocimientos gramaticales:

(1) Estructura básica del programa VerilogHDL:

La estructura del programa guiada por la palabra clave module_endmodule del lenguaje Verilog puede expresar completamente un módulo de circuito o la estructura y función del puerto de un ASIC de circuito integrado específico de la aplicación, es decir, si es un 74LS138 o una CPU, debe incluirse en la declaración de descripción del módulo module_endmodule.

Identificador: una cadena utilizada para nombrar objetos (como nombres de módulos, puertos de entrada y salida de circuitos, variables, etc.). El nombre solo puede contener los cuatro símbolos de letras, números, guiones bajos y $ en inglés ; tenga en cuenta que debe comenzar con letras o guiones bajos en inglés. Por ejemplo, clk, counter8, _net, bus_A. Los identificadores distinguen entre mayúsculas y minúsculas, es decir, el sistema distingue entre mayúsculas y minúsculas.

Se recomienda que el nombre del archivo del programa sea coherente con el nombre del módulo del programa en la medida de lo posible (para QuartusII , este requisito debe cumplirse), el nombre del archivo debe distinguir entre mayúsculas y minúsculas, el nombre del archivo no debe ser nombrado en chino o en números, y el programa Verilog debe almacenarse en la carpeta de archivos (requiere un nombre de carpeta que no sea chino), no existe en el directorio raíz o en el escritorio.

(2) siempre declaración de procedimiento

Punto de sintaxis 1: La estructura de oraciones de procedimiento guiada por always @ es una de las estructuras de oraciones más utilizadas e importantes en el lenguaje Verilog.

Punto de sintaxis 2: ¿Enunciado secuencial y enunciado paralelo en Verilog?

Declaraciones paralelas: no importa cuántas líneas de declaraciones se ejecuten al mismo tiempo, no tiene nada que ver con el orden de las declaraciones;

Sentencia secuencial: similar al método de ejecución de programa del software ordinario, se ejecuta en secuencia de acuerdo con la secuencia de las sentencias.

Punto de sintaxis 3: La instrucción de procedimiento always es una instrucción paralela, y cualquier instrucción secuencial debe colocarse en la estructura de instrucción de procedimiento.

Punto de sintaxis 4: siempre formato de declaración de procedimiento:

always @ ( expresión de señal sensible )

comenzar

// Declaración de asignación de procedimiento ;

// sentencia if , sentencia case ;

// para instrucción, while instrucción, repetir instrucción ;

fin

Punto de sintaxis 5: cuando cambia cualquier señal en la expresión de la señal sensible, la instrucción en el bloque se ejecutará una vez.

Punto gramatical 6: La expresión de señales sensibles:

(a) Conecte todas las señales sensibles con texto o, expresado como siempre @ (a o b o c o d o s0 o s1);

(b) Utilice comas para distinguir y conectar todas las señales sensibles, expresadas como siempre @ (a, b, c, d, s0, s1);

(c) La forma omitida se expresa como siempre @ (*). Los sintetizadores Verilog de corriente principal enumeran todas las señales que deben incluirse en la declaración de procedimiento predeterminada. always @ (*) cumple con la especificación verilog HDL2001, por lo que no es válido intentar cambiar el diseño lógico mediante la inclusión selectiva de señales sensibles.

(3) Declaración de bloque begin_end

La instrucción de bloque begin_end en sí misma no tiene función y su uso está limitado en la estructura de instrucción secuencial. Por lo general, se usa para combinar instrucciones secuenciales, por lo que se denomina bloque secuencial. La instrucción de bloque begin_end solo es equivalente a un paréntesis, y se considera que las declaraciones entre "corchetes" pertenecen al mismo módulo de operación.

Verilog estipula que si una estructura de declaración contiene solo una declaración y no es necesario definir variables locales, la declaración de bloque se usa por defecto y no hay necesidad de definir explícitamente el bloque; si contiene múltiples declaraciones, debe usar la instrucción explícita estructura de begin_end para combinarlos. "Adjunto".

Formato de inicio de sentencia de bloque:

        comenzar [: nombre del bloque ]

           Declaración 1 ; Declaración 2 ; ... Declaración n ;

        fin

Entre ellos, se puede omitir [: nombre del bloque].

(4) declaración de caso

Punto de sintaxis 1: Es una declaración de selección condicional de múltiples ramas, que es una declaración secuencial y debe usarse en una declaración de procedimiento.

Punto de gramática 2: Hay tres formas. Su forma general es la siguiente:

    caso (caso_expr)

          item_expr1: comenzar sentencia1; fin

          item_expr2: comenzar sentencia2; fin

          ……

          predeterminado: comenzar default_statement; fin

   caso final

Punto de sintaxis 3: ¿Qué significa la declaración predeterminada?

A menos que el valor de selección en todos los enunciados condicionales pueda cubrir completamente el valor de la expresión en el enunciado del caso, el enunciado predeterminado debe agregarse a la selección en el último enunciado condicional.

Se recomienda agregar una declaración predeterminada, porque en Verilog, cualquier variable tiene 4 valores de estado lógico diferentes: 0, 1, zyx, por lo que el valor de {S1, S0} no es solo 00, 01, 10 y 11, si no se agregan, algunos sintetizadores agregarán módulos de temporización innecesarios.

(5) Operador de empalme de bits {}

La función es empalmar algunos bits de dos o más señales en un nuevo operando para realizar operaciones aritméticas. Establecer A = 1'b1, B = 2'b10, C = 2'b00

Entonces {B, C} = 4'b1000

{A, B [1], C [0]} = 3'b110

{A, B, C, 3'b101} = 8'b11000101。

El empalme repetido del mismo operando también puede usar el operador formado por llaves dobles { {}}

Por ejemplo, {4 {A}} = 4'b1111, {2 {A}, 2 {B}, C} = 8'b11101000.

(6) Expresión digital en Verilog

Representa el formato general de un número binario.

<ancho de bit> '<base> <número>

Ancho de bit: el número de bits en el sistema binario de los datos;

Base: representa la base de los datos, donde B representa binario, O representa octal, D representa decimal, H representa hexadecimal y no distingue entre mayúsculas y minúsculas.

Ejemplo: 2'b10 4'b1011 4'hA 3'D7

Contenido del experimento: diseño de decodificador de pantalla digital

El procesamiento de datos y la operación en el sistema digital son binarios, por lo que las expresiones de salida son todas hexadecimales; para cumplir con la decodificación y visualización de números hexadecimales, la forma más conveniente es utilizar el programa de decodificación para implementar en FPGA / CPLD.

El circuito de decodificación general se describe mediante sentencias de casos .

Requisitos de diseño: la entrada es un número binario de 4 dígitos (es decir, 0-15) y la salida es un número binario de 7 dígitos, que se utiliza para iluminar la luz LED y mostrar la fuente de 0 a 15. Por supuesto, del 10 al 15 están representados por las letras de la A a la F.

 

 Figura 3 Diagrama lógico del decodificador de pantalla digital de 7 segmentos
Figura 4 Pantalla LED de siete segmentos

 

Programa fuente del decodificador de pantalla digital de 7 segmentos:

module decode_1(A, LEDS);
input[3:0] A;
output reg[6:0] LEDS;
always@ (A)
begin 
	case (A)
	4'b0000:LEDS<=7'b0111111;	//"0"
	4'b0001:LEDS<=7'b0000110;	//"1"
	4'b0010:LEDS<=7'b1011011;	//"2"
	4'b0011:LEDS<=7'b1001111;	//"3”
	4'b0100:LEDS<=7'b1100110;	//"4"
	4'b0101:LEDS<=7'b1101101;	//"5"
	4'b0110:LEDS<=7'b1111101;	//"6"
	4'b0111:LEDS<=7'b0000111;	//"7"
	4'b1000:LEDS<=7'b1111111;	//"8"
	4'b1001:LEDS<=7'b1101111;	//"9"
	4'b1010:LEDS<=7'b1110111;	//"A"
	4'b1011:LEDS<=7'b1111100;	//"b"
	4'b1100:LEDS<=7'b0111001;	//"c"
	4'b1101:LEDS<=7'b1011110;	//"d"
	4'b1110:LEDS<=7'b1111001;	//"E"
	4'b1111:LEDS<=7'b1110001;	//"F"
	
	default:LEDS<=7'b0111111;	//"0"
	endcase

end
endmodule
 

Forma de onda de simulación del decodificador de pantalla digital de 7 segmentos:

Verificación de hardware del decodificador de pantalla digital de 7 segmentos:

  1. Se recomienda elegir el modo experimental 6; [En cuanto al método de selección del modo, según las necesidades del circuito y la función del modo]
  2. Diagrama esquemático de asignación de pines [bloqueo de acuerdo con el manual de pines correspondiente del modo] , donde A [3: 0] es la entrada clave y LEDS [6: 0] es la salida de tubo digital de siete segmentos.

Resumen del experimento

 

Supongo que te gusta

Origin blog.csdn.net/XZ_ROU/article/details/113368174
Recomendado
Clasificación