Nos quedamos en la anterior entrada aquí:
Si nos fijamos en el área de la izquierda, más concretamente la superior
llamada Hierarchy, vemos que hay un mensaje que empieza con “Empty View”, que
nos explica que al proyecto hay que añadirle algo más (en nuestro caso un
archivo tipo VHDL).
Para ello hacemos clic en el icono
de “New Source” (hay formas alternativas de hacer esto, como usar el botón
derecho del ratón, de momento lo hacemos así).
En ella seleccionamos VHDL Module,
y le damos nombre como LEDA_blog.
Es importante observar que el
casillero “Add to project” tiene que estar activado. Ahora pulsamos Next.
Cumplimentamos los casilleros que
ahora tenemos como sigue:
Clic en Next y luego Finish.
Vemos que se ha añadido un nuevo
archivo al proyecto, y además este se refleja ahora en la zona derecha con la
pestaña LEDA_blog.vhd.
Si nos fijamos en el nuevo archivo
en la zona derecha vemos que se ha generado código VHDL. Este código nos
serviría como plantilla para implementar nuestro propio código fuente.
Sin embargo, por esta vez lo vamos
a hacer más fácil, seleccionamos todo ese código,
Y le damos la tecla “Supr” de
nuestro teclado (o análoga), eliminando todo ese código generado automáticamente y dejando todo ese espacio en blanco.
Recordamos que anteriormente
copiamos el código de la demo, ahora pegamos ahí ese código. Si has hecho otro
copiar-pegar posterior a ese, puedes volver a repetir el proceso tal y como lo expliqué anteriormente,
o puedes copiar y pegar el código tal y como lo dejé escrito tan sólo haciendo unas
ligeras modificaciones (para diferenciar este código del de la demo) que mostraré a
continuación, dichas modificaciones están marcadas en rojo.
También puedes
copiar y pegar el código VHLD que muestro a continuación:
--???21EDA?? --?????:A-C8V4 --www.21eda.com --??LED???LED??????0??????1??? --????????21EDA???????? LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.std_logic_unsigned.ALL; ENTITY LEDA_blog is PORT( clk:in STD_LOGIC; --System Clk --???? led1:out STD_LOGIC_VECTOR(3 DOWNTO 0); LCD_N : out std_logic; --?????? LCD_P : out std_logic); --LED output???8? END LEDA_blog ; ARCHITECTURE light_blog OF LEDA_blog IS SIGNAL clk1,CLK2:std_logic; BEGIN LCD_N<='0'; LCD_P<='0'; P1:PROCESS (clk) VARIABLE count:INTEGER RANGE 0 TO 9999999; BEGIN IF clk'EVENT AND clk='1' THEN --????????????????? IF count<=4999999 THEN clk1<='0'; --?count<=499999?divls=0??count?1 count:=count+1; ELSIF count>=4999999 AND count<=9999999 THEN --?ount>=499999 ?? count<=999998? clk1<='1'; -- count:=count+1; --clk1=1??count?1 ELSE count:=0; --?count>=499999???count1 END IF; END IF; END PROCESS ; P3:PROCESS(CLK1) begin IF clk1'event AND clk1='1'THEN clk2<=not clk2; END IF; END PROCESS P3; --------------------------------------------------------- P2:PROCESS(clk2) variable count1:INTEGER RANGE 0 TO 16; --???????????? BEGIN -- IF clk2'event AND clk2='1'THEN --????????????????? if count1<=4 then --?COUNT1<=9??????? if count1=4 then --?COUNT1=8??COUNT1?? count1:=0; -- end if; -- CASE count1 IS --CASE?????LED1?? WHEN 0=>led1<="1110"; --????????? WHEN 1=>led1<="1101"; -- WHEN 2=>led1<="1011"; -- WHEN 3=>led1<="0111"; -- WHEN OTHERS=>led1<="1111"; END CASE; count1:=count1+1; end if; end if; end process; END light_blog;
Si en lugar de añadir “_blog”
añades “_mio” o “_ejemplo” o lo que quieras, saldrá igualmente bien, eso va “a
gusto del consumidor”.
dónde pone END LEDA al final de dicho ENTITY , tienes que añadir el “_mio” a la instrucción END LEDA quedando END LEDA_mio.
O sea,
LEDA -> LEDA_mio (o LEDA_ej o lo que sea)
END LEDA; ->
END LEDA_mio;
(o END LEDA_ej; o lo que sea)
Lo mismo se puede decir de la otra parte de este
tipo de códigos (VHDL) llamada ARCHITECTURE, al principio y al final de
esta parte del programa.
O sea,
light OF LEDA -> light_mio OF
LEDA_mio
END light; -> END light_mio;
Ahora pulsamos la combinación de
teclas ctrl y s (ctrl.+s) para guardar el archivo modificado. En la pestaña
LEDA_blog.vhd desaparece el asterisco indicando que el archivo se ha guardado
modificado.
A continuación pulsamos en el
desplegable (un signo +) del área de
procesos tal y como se señala en la siguiente figura:
Una vez hemos desplegado “Síntesis
– XST”, hacemos doble clic en “Check Syntax” señalado en la figura anterior.
Tarda un poco en procesarse la ejecución, y a medida que esta se realiza van
apareciendo mensajes en la consola (parte inferior del interfaz). Finalmente tenemos:
Nos aparece un circulito verde con
un visto blanco en “Check Syntax”, y además dice que el proceso se ha
completado correctamente. ¡Oh!, ¡que sorpresa! :-).
En realidad dado que el código lo
hemos copiado de una demo era de esperar que el resultado sea que test de la
sintaxis esté bien, sin embargo es bueno que nos vayamos acostumbrando a que
una vez escrito nuestro propio código VHDL lo hagamos cada vez. Incluso si
tienes experiencia con el lenguaje VHDL, como en cualquier otra forma de
programar cuando vamos con prisas o estamos cansados después de un día de
trabajo es fácil cometer errores. Errores muy típicos son:
- Olvidar acabar instrucciones con el punto y coma “;”.
- Olvidar finalizar una instrucción if then con un end if;
- Olvidar poner un end process, cuando has iniciado un proceso con el comando process... etc.
En la siguiente publicación veremos como montamos (o armamos) el hardware y lo conectamos al ordenador, computador, computadora o PC (como cada cual guste decir), de esta manera podemos continuar con este tutorial ya trabajando con hardware.
0 comentarios: