Informe de entrenamiento con lámpara de agua que fluye
Reimpreso en /jpkc/pld/ArticleShow.asp?ArticleID=565&BigClassName=%CA%B5%D1%B5%BD%CC%D1%A7
Espero que sea útil usted
Proyecto de capacitación práctica (1) Lámpara de agua corriente 1. Propósito del experimento: a través de este experimento, los usuarios pueden comprender, familiarizarse y dominar mejor el uso del software de desarrollo CPLD/FPGA y el método de programación de Ver. -ilog HDL; aprenda diseño de circuitos de sincronización simple y pruebas de hardware 2. Contenido experimental El contenido de este experimento es establecer un circuito de hardware simple que pueda usarse y controlarse mediante lámparas LED de agua corriente. Se requiere para realizar la luz LED1-LED8. -Pantalla de lámpara de agua corriente con diodo emisor en la caja de experimento SmartSOPC 3. Principio experimental (1) Salida periódica de los datos de flujo en el pin. Si los datos de salida originales son 11111100, significa que se encienden el LED1 y el LED2. Los datos deben ser 11111000, y en este momento, los tres LED LED1 ~ LED3 deben estar encendidos, para que se puedan realizar lámparas de agua LED. Para facilitar la observación, el caudal de agua es mejor allí. es una fuente de reloj estándar de 48 MHz en la placa central QuickSOPC, y el reloj de pulso CLOCK está conectado al pin 28 del chip. Para generar un pulso de reloj de 2 Hz, aquí se llama a un módulo de división de frecuencia para cambiar la frecuencia de salida modificando la frecuencia. Coeficiente de división. Cuando el coeficiente de división de frecuencia es 24 × 10, la salida es una señal de frecuencia de 2 Hz. (2) Descripción del módulo de división de frecuencia Int_div: El módulo int_div es un divisor entero arbitrario con un ciclo de trabajo del 50%. es el reloj y el reloj de salida es clk_out. F_DIV es el coeficiente de división de frecuencia, y el rango del coeficiente de división de frecuencia es 1 ~ 2N (n = F_DIV_WIDTH). Si desea cambiar el coeficiente de división de frecuencia, simplemente cambie los parámetros F_DIV y F_DIV_WIDTH al correspondiente. En este ejemplo, la frecuencia del reloj de entrada es 48MHz. Para obtener una señal de 2Hz, el coeficiente de división de frecuencia debe ser 48×10/2=24×10. Para un número con un coeficiente de división de frecuencia de 24×10 se requiere un 25. Contador de bits de ancho. Este módulo se utilizará muchas veces en experimentos futuros y los usuarios pueden analizar sus principios básicos. 4. Pasos experimentales (1) Inicie QUARTUSⅡ para crear un proyecto en blanco y luego asígnele un nombre (2) Cree un nuevo VerilogHDL. archivo de programa fuente ledwater.v, ingrese el código del programa y guárdelo, y luego realice una compilación completa. Si se encuentra un error durante el proceso de compilación, busque y corrija el error hasta que la compilación sea exitosa. diseño y use ledwater.v para generar un archivo de símbolo de módulo llamado ledwater.bsf (4) Copie int_div.bsf e int_div.v en el directorio EDA_component en el CD al directorio del proyecto. archivo de diseño gráfico led_wter.bdf. Haga doble clic con el botón izquierdo del mouse en el espacio en blanco en las bibliotecas en la esquina superior izquierda del cuadro de diálogo de símbolos, coloque los módulos ledwater e int_div debajo del proyecto en el archivo gráfico ed_wter. bdf, y agregue pines de entrada y salida, haga doble clic en cada símbolo de pin para nombrar el pin conectado al módulo ledwater led[7..0] como led[7..0] y nombre el pin conectado a. el reloj del módulo int_div como reloj. El clk_out del módulo int_div está conectado al clk del módulo ledwater. Haga doble clic en el cuadro de parámetros de int_div y modifique los parámetros. Cambie el valor de F_DIV a 24000000 y el valor de F_DIV_WIDTH a 25. Haga clic en el botón "Aceptar" para guardar el archivo modificado. Si el cuadro de configuración de parámetros se puede ver en el medio de led_water.bdf, puede hacer clic con el botón derecho del mouse en el espacio en blanco y seleccionar el comando Mostrar asignaciones de parámetros para mostrar el archivo. cuadro de configuración de parámetros. (6) Seleccione el dispositivo de destino y bloquee los pines correspondientes. El dispositivo seleccionado aquí es el chip EP 1C6Q240C8 de la serie Cyclone de Altera. El método de bloqueo de pines se enumera en la Tabla 3.1.
Configure los pines no utilizados como entradas de tres estados (asegúrese de hacer esto, de lo contrario podría dañar el chip). Tabla 3.1 Método de bloqueo de pin Pin de señal Pin de señal 1C61C12EDA1C61C12EDALed[0]505050led[5]474747led[1]535353led[6]484848led[2]545454led[7]494949led[3]555555clock282828led[4]176176176 (7 ) Cambiar led_water .bdf es establecer como entidad de nivel superior. Compile el archivo del proyecto durante todo el proceso. Si se encuentra un error durante el proceso de compilación, busque y corrija el error hasta que la compilación sea exitosa. (8) Finalmente, salte la tapa de cortocircuito del puente a LED0~LED7 de JP6 en la caja de experimentos smartSOPC, de modo que LED1~LED8 estén conectados a los pines 50, 53~55, 176 y 47~49 de FPGAD respectivamente. Conecte ambos extremos del cable de descarga AlteraByteBlasterⅡ al puerto paralelo de la impresora de la PC y al puerto de descarga JTAG en la placa central QuickSOPC. En este momento, ejecute el comando de descarga y descargue el programa al dispositivo FPGA. puedes ejecutar la caja de experimentos smartSOPC. Vi lámparas de agua encendidas en la parte superior. (9 Cambie el coeficiente de división de frecuencia del módulo de división de frecuencia (int_div), vuelva a compilar y descargar, y observe los cambios en la lámpara de agua corriente. 5. Lista de programas del programa de referencia experimental 3.2ledwater.v Módulo ledwater(led,clk); / /Nombre del módulo ledwaterOutput[ 7:0]led; //Definir el puerto de salida del LED Input clk //Definir el puerto de entrada del reloj Reg[8:0] led_r //Definir el registro de salida Assign led=led_r[7:0] ]; //Registrar salida siempre@ (posedge clk) //Activar el proceso en el flanco ascendente del reloj beginled_r<=led_r<<1 //Sí, la salida se desplazará un bit hacia la izquierda if(led_r= =9`d0) // ¿Se completó el ciclo? led_r<=9` b11111111; // En caso afirmativo, reasigne el valor inicial a endendmodule 6. Con el tiempo (1) Pensamiento: Cómo implementar la lámpara de agua de la izquierda u otra fuente de agua ¿Patrones de flujo? Los usuarios pueden probarlo ellos mismos (2) Tipo de datos REG: consta de dos tipos principales de datos, tipo de red de línea y tipo de registro. REG es el tipo de registro más común, con la siguiente forma: REG[msb:lsb]. reg1,reg2,…regN; donde msb y lsb definen el rango y son expresiones de valor constante uniforme. La definición es opcional. Si el rango no está definido, el valor predeterminado es un registro de 1 bit. El tipo de datos es un valor indefinido, al que se le puede asignar un valor positivo o un valor negativo. Cuando se utiliza un operando en una expresión, su valor se trata como un valor sin signo, es decir, se asigna un valor positivo (como 4). el valor -1 al registro, y cuando se realiza la operación en la expresión, se considera que su valor es +15). Es importante comprender que el tipo de registro solo indica que la señal definida se utilizará dentro del bloque siempre. No significa que la señal de tipo reg deba ser la salida de un registro o flip-flop.
Aunque las señales de tipo reg suelen ser la salida de registros o flip-flops, este no es necesariamente siempre el caso. Sólo en lógica secuencial corresponde a un registro, mientras que en lógica combinacional expresa un nodo. (3) Al compilar de acuerdo con el proyecto de tubería anterior, aparecerá la advertencia "advertencia: pines encontrados que funcionan como relojes indefinidos y/o memoria habilitada". Información: Suponiendo que el nodo "reloj" es un reloj indefinido", lo que probablemente significa que el nodo de reloj no está definido en una señal de reloj. El método para eliminar esta advertencia es el siguiente: ① Seleccione el comando asignaciones → configuración de sincronización y seleccione la configuración para el elemento de señales de reloj individuales en el área de opciones de configuración de reloj en el cuadro de diálogo emergente. ② Configure los relojes, haga clic en el botón para agregar nodos en el cuadro de diálogo emergente y configúrelo como se muestra en la figura. En la figura, requeridafmax es la frecuencia de reloj máxima requerida por el sistema. Simplemente complete 50 HZ aquí. ③Después de la configuración, haga clic en el botón Aceptar continuamente para guardar la configuración y, finalmente, compile, se eliminará la advertencia original. La operación anterior consiste en agregar "reloj" al dominio del reloj. Si "reloj" no es una señal de reloj, puede cambiar el atributo de configuración a "no es un reloj" para eliminar la advertencia.