Images

Introducción al kit Open3S250E (5): Abrir la demo LED y obtener el código VHDL


¿Que haremos en esta entrada?

En esta entrada vamos a abrir la demo LED con lenguaje VHDL, con el propósito principal de hacernos con el código VHDL que usaremos para nuestro propio proyecto.
En condiciones normales seriamos nosotros los que tendríamos que diseñar dicho código, pero el objetivo de esta serie de post es aprender el manejo del hardware con apoyo del software de XILINX, y además profundizar en el aprendizaje haría más árido y largo este tutorial.

Si no conoces bien VHDL o tienes unas nociones  muy básicas hay tutoriales gratuitos (o cursos a precio razonable)  en Internet que ya mencioné. Si has programado antes verás que no es para tanto, vayamos paso a paso. Recuerda: "un viaje de 10.000 leguas empieza por un paso".


Pasos:

Tenemos ya el archivo 3S250E-Demo descrompimido en forma de carpeta, en mi caso en el escritorio:



Ahora entramos en dicha carpeta que hemos descomprimido:


Vemos que hay a su vez en ella dos carpetas, verilog y VHDL, entramos en la carpeta VHDL. En dicha carpeta hay carpetas para las diferentes demos:


Entramos en la carpeta LED, que es dónde está la demo que queremos reproducir.


Hacemos doble clic en el archivo que señalo en la siguiente figura:


Ahora se abrirá el ISE Project Navigator, si tarda por favor paciencia, si instalaste correctamente el paquete de XILINX, se abrirá finalmente. Una vez abierto haz clic en yes dentro de la ventana emergente que aparece:



Nos aparece el siguiente interfaz:



En el área de trabajo “Design”, hacemos doble clic en el archivo LEDA-light (LEDA.vhd):


En el área derecha de la interfaz, con la pestaña “LEDA.vhd”, aparece el código VHDL, si tengo tiempo más adelante lo analizaremos.



 Seleccionamos y copiamos todo el código (ojo, en la ventana sólo se visualiza una parte, hay que hacer uso del la barra de desplazamiento vertical de la derecha o scroll o scrollbar):


No obstante dejo el código VHDL a continuación para que se pueda copiar fácilmente:



--???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 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 ; ARCHITECTURE light OF LEDA 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;

Por si el usuario del blog quiere echar un vistazo al código lo dejo a continuación de forma más legible:




Lo que está en verde tras dos guiones medios “--” son sólo comentarios, se podrían eliminar y el programa ejecutaría exactamente lo mismo (hay muchos interrogante porque seguramente que son caracteres que los teclados en español no reconocen).

Para un proyecto 100% nuestro, ese código tendríamos que hacer lo “a mano” nosotros como ya he comentado anteriormente.

En la próxima entrada crearemos nuestro propio proyecto usando este código.


0 comentarios: