LED emisor de Luz
Editado el 2022.07.13
Este tutorial le guiará a través de los fundamentos del IDE Gowin que usaremos para
crear un programa simple para mostrar los LEDs de a bordo.
1. Crear Proyecto
Crear proyecto:File----NEW---Proyecto de diseño de la FPGA--OK
Establezca el nombre del proyecto y la ruta del proyecto (el nombre de archivo y la
ruta del proyecto deben ser en inglés, no necesariamente)
Elija el dispositivo correcto:
2. Prepare el código
Después de crear el proyecto, podemos empezar a editar el código.
Para crear un nuevo archivo, podemos hacer clic en el icono marcado (arriba a la izquierda
de la ventana) o utilizar Ctrl-N. Elija Verilog File en la ventana emergente.
Nombre el archivo (lo mejor es usar inglés para esto, no necesariamente)
Haga doble haga clic en el archivo creado para abrirlo, luego editarlo en la ventana derecha.
Aquí está todo el código que estamos usando para este ejemplo, ya sea copiarlo/buscar
en su archivo o introducirlo manualmente.
1 module led (
2 input sys_clk, // clk input
3 input sys_rst_n, // reset input
4 output reg [5:0] led // 6 LEDS pin
5 );
6
7 reg [23:0] counter;
8
9 always @(posedge sys_clk or negedge sys_rst_n)
10 begin
11 if (!sys_rst_n)
12 counter <= 24'd0;
13 else if (counter < 24'd1349_9999) //
14 0.5s delay
15 counter <= counter + 1'b1;
16 else
17 counter <= 24'd0;
18 end
19
20 always @(posedge sys_clk or negedge sys_rst_n)
21 begin
22 if (!sys_rst_n)
23 led <= 6'b111110;
else if (counter == 24'd1349_9999) //
0.5s delay
led[5:0] <= {led[4:0],led[5]};
else
led <= led;
end
endmodule
Una vez que terminemos con el código, tenemos que marcar Use DONE como IO regular
en Project--Configuration-----Place--Dual-Purpose Pin que se encuentra en la barra
de menús superior para evitar un error.
3. Sintesis, limitación, place&route
3.1. Sintetizar
Después de terminar los pasos anteriores, vaya a la interfaz "Proceso" y haga clic doble
en "Synthesize" para sintetizar nuestro código. También puede hacer clic derecho
"Synthesize" para ver su otra función
Si el resultado es el mismo que se muestra a continuación, entonces podemos pasar
a establecer nuestras restricciones.
Si su síntesis falla, entonces compruebe la consola - debe indicarle dónde está el error.
3.2. Constrain.
Limitación de reloj no está involucrada aquí
Para que nuestro código haga realmente cualquier cosa, debemos unir los puertos que
definimos a los pines reales del chip FPGA.
Haz doble clic en el FloorPlanner en la interfaz Proceso para establecer restricciones de
pin (Si la síntesis falla no podemos hacer este paso).
La primera vez que abrimos FloorPlanner provocará falta de un archivo ".cst", sólo
haremos clic en ok.
Puedes descargar el esquema completo aquí
Aquí está la parte de esquema sobre los LEDs en el nano 9k:
.
En esta interfaz GUI tenemos dos maneras de limitar los pines:
• Arrastre el puerto correspondiente al pin del chip
• Introduzca el número de pin correspondiente al puerto en restricciones de IO
Consulte esta guía para obtener más información sobre
FloorPlanner: SUG935-1.3E-Gowin Diseño Physical Constraints
Customs User [Link]
No olvides atar el puerto de reloj y reiniciar el puerto a sus alfileres marcados en el
esquema
La siguiente figura muestra la restricción de los pines de este proyecto
3.3. Place&Route
Si muestra error, asegúrese de que ha habilitado Use DONE as
regular IO (ver preparar el código )
Haga doble clic en Place&Route para ejecutarlo, se mostrará lo siguiente:
4. Descargar en el dispositivo
Visite aquí para ver documentos sobre programador si lo necesita.
4.1. Empieza a
Conecte su tablero a su PC y seleccione el dispositivo como se muestra en la imagen:
Usaremos la descarga a SRAM como ejemplo.
Siga los pasos en la figura siguiente para seleccionar esa operación:
Haz clic en el botón mostrado en la figura para iniciar el proceso de descarga de firmware:
4.2. Resultado
Una vez que se complete, los LED empiezan a parpadear así:
5. Otros
Si necesita almacenar firmware sin energía, simplemente cambie el modo Acceso y elija
su destino archivo .fs .
Visita Preguntas&respuestas si tienes problemas
6. Termina.
Has llegado al final del tutorial. Si tiene alguna sugerencia, deje su mensaje.