FaMAF - Leccion Clase VHDL 07

1,557 views

Published on

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,557
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
50
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

FaMAF - Leccion Clase VHDL 07

  1. 1. CURSO VHDL LECCIÓN 07 <ul><li>Lección 7: SEÑALES Y VARIABLES </li></ul><ul><ul><li>7_1 – CONSTANT </li></ul></ul><ul><ul><li>7_2 – SIGNAL </li></ul></ul><ul><ul><li>7_3 – VARIABLE </li></ul></ul><ul><ul><li>7_4 – SIGNAL VERSUS VARIABLE </li></ul></ul><ul><ul><li>7_5 – NÚMERO DE REGISTROS </li></ul></ul>
  2. 2. SEÑALES Y VARIABLES 1/3 <ul><li>DATOS ESTÁTICOS: </li></ul><ul><ul><li>CONSTANT Y GENERIC </li></ul></ul><ul><li>DATOS NO ESTÁTICOS: </li></ul><ul><ul><li>SIGNAL Y VARIABLE </li></ul></ul>
  3. 3. SEÑALES Y VARIABLES 2/3 <ul><li>CONSTANT Y SIGNAL: </li></ul><ul><ul><li>PUEDEN SER GLOBALES Y PUEDEN SER USADAS EN EL CÓDIGO SECUENCIAL Y EN EL CÓDIGO CONCURRENTE </li></ul></ul>
  4. 4. SEÑALES Y VARIABLES 3/3 <ul><li>VARIABLE: </li></ul><ul><ul><li>SON LOCALES A LOS CÓDIGOS SECUENCIALES: PROCEDURES, FUNCTIONS Y PROCESS </li></ul></ul>
  5. 5. Curso VHDL Lección 07 <ul><li>Lección 7: SEÑALES Y VARIABLES </li></ul><ul><ul><li>7_1 – CONSTANT </li></ul></ul><ul><ul><li>7_2 – SIGNAL </li></ul></ul><ul><ul><li>7_3 – VARIABLE </li></ul></ul><ul><ul><li>7_4 – SIGNAL VERSUS VARIABLE </li></ul></ul><ul><ul><li>7_5 – NÚMERO DE REGISTROS </li></ul></ul>
  6. 6. 7_1 CONSTANT 1 /2 <ul><li>CONSTANT NOMBRE: TIPO :=VALOR; </li></ul><ul><li>EJEMPLOS: </li></ul><ul><li>constant set_bit: bit := ‘1’; </li></ul><ul><li>constant data_memory: memory </li></ul><ul><li>:= ((‘0’, ‘0’, ‘0’, ‘0’), </li></ul><ul><li>(‘0’, ‘0’, ‘0’, ‘0’), </li></ul><ul><li>(‘0’, ‘0’, ‘0’, ‘0’)); </li></ul>
  7. 7. 7_1 CONSTANT 2 /2 <ul><li>Pueden ser declarados dentro de: PACKAGES, </li></ul><ul><li>ENTITY, </li></ul><ul><li>ARCHITECTURES </li></ul>
  8. 8. Curso VHDL Lección 07 <ul><li>Lección 7: SEÑALES Y VARIABLES </li></ul><ul><ul><li>7_1 – CONSTANT </li></ul></ul><ul><ul><li>7_2 – SIGNAL </li></ul></ul><ul><ul><li>7_3 – VARIABLE </li></ul></ul><ul><ul><li>7_4 – SIGNAL VERSUS VARIABLE </li></ul></ul><ul><ul><li>7_5 – NÚMERO DE REGISTROS </li></ul></ul>
  9. 9. 7_2 SIGNAL 1 /4 <ul><li>SIRVEN PARA PASAR VALORES HACIA DENTRO O FUERA DEL SISTEMA O BIEN ENTRE MÓDULOS INTERNOS. </li></ul><ul><li>SON LOS “CABLES” </li></ul><ul><li>LOS PORTS SON SIGNALS </li></ul>
  10. 10. 7_2 SIGNAL 2 /4 <ul><li>SIGNAL NOMBRE: </li></ul><ul><li>TYPE [RANGE] [:= INITIAL VALUE]; </li></ul><ul><li>signal control: bit := ‘0’; </li></ul><ul><li>signal count: integer range 0 to 100 :=14; </li></ul><ul><li>signal y: std_logic_vector (7 downto 0) </li></ul><ul><li>:= “10001001”; </li></ul>
  11. 11. 7_2 SIGNALS 3/4 .
  12. 12. 7_2 SIGNALS 4/4 .
  13. 13. Curso VHDL Lección 07 <ul><li>Lección 7: SEÑALES Y VARIABLES </li></ul><ul><ul><li>7_1 – CONSTANT </li></ul></ul><ul><ul><li>7_2 – SIGNAL </li></ul></ul><ul><ul><li>7_3 – VARIABLE </li></ul></ul><ul><ul><li>7_4 – SIGNAL VERSUS VARIABLE </li></ul></ul><ul><ul><li>7_5 – NÚMERO DE REGISTROS </li></ul></ul>
  14. 14. 7_3 VARIABLE 1 /4 <ul><li>SON LOCALES A LOS FUNCTIONS, PROCESS O PROCEDUREES Y SOLO PUEDEN DECLARARSE DENTRO DE LOS MIMOS, (DENTRO DE CÓDIGO SECUENCIAL) </li></ul><ul><li>NO SE PUEDEN USAR PARA PASAR VALORES HACIA EL EXTERIOR DIRECTAMENTE </li></ul>
  15. 15. 7_2 VARIABLE 2 /4 <ul><li>VARIABLE NOMBRE: </li></ul><ul><li>TYPE [RANGE] [:= INITIAL VALUE]; </li></ul><ul><li>variable control: bit := ‘0’; </li></ul><ul><li>variable count: integer range 0 to 100 :=14; </li></ul><ul><li>variable y: std_logic_vector (7 downto 0) </li></ul><ul><li>:= “10001001”; </li></ul>
  16. 16. 7_2 VARIABLE 3/4 <ul><li>--------------------------------------------------------------- </li></ul><ul><li>LIBRARY IEEE; </li></ul><ul><li>USE IEEE.STD_LOGIC_1164.ALL; </li></ul><ul><li>--------------------------------------------------------------- </li></ul><ul><li>ENTITY COUNT_ONES IS </li></ul><ul><li>PORT( </li></ul><ul><li>DIN: IN STD_LOGIC_VECTOR(7 DOWNTO 0)); </li></ul><ul><li>ONES: OUT INTEGER RANGE 0 TO 8); </li></ul><ul><li>END COUNT_ONES; </li></ul>.
  17. 17. 7_2 VARIABLES 4/4 .
  18. 18. Curso VHDL Lección 07 <ul><li>Lección 7: SEÑALES Y VARIABLES </li></ul><ul><ul><li>7_1 – CONSTANT </li></ul></ul><ul><ul><li>7_2 – SIGNAL </li></ul></ul><ul><ul><li>7_3 – VARIABLE </li></ul></ul><ul><ul><li>7_4 – SIGNAL VERSUS VARIABLE </li></ul></ul><ul><ul><li>7_5 – NÚMERO DE REGISTROS </li></ul></ul>
  19. 19. 7_4: Singal Versus Variable 1/15
  20. 20. 7_4: Singal Versus Variable 2/15 <ul><li>--Ejemplo de mal uso de signal y buen uso de variable: </li></ul><ul><li>--------------------------------------------------- </li></ul><ul><li>Library ieee; </li></ul><ul><li>Use ieee.std_logic_1164.all; </li></ul>
  21. 21. 7_4: Singal Versus Variable 3/15 <ul><li>Entity mux is </li></ul><ul><li>Port(a,b,c,d,s1,s0: in std_logic; y: out std_logic); </li></ul><ul><li>End mux; </li></ul><ul><li>Architecture not_ok of mux is </li></ul><ul><li>signal sel: integer range 0 t0 3; </li></ul><ul><li>Begin </li></ul><ul><li>Process(a,b,c,d,s0,s1) </li></ul><ul><li>begin </li></ul><ul><li>…… .. </li></ul><ul><li>end process; </li></ul><ul><li>end not_ok; </li></ul>
  22. 22. 7_4: Signal Versus Variable 4/15 <ul><li>Architecture not_ok of mux is </li></ul><ul><li>signal sel: integer range 0 t0 3; </li></ul><ul><li>Begin </li></ul><ul><li>Process(a,b,c,d,s0,s1) </li></ul><ul><li>begin </li></ul><ul><li>sel<=0; </li></ul><ul><li>if(s0=‘1’) then sel<=sel+1; end if; </li></ul><ul><li>if (s1=‘1’) then sel<=sel+2; end if; </li></ul><ul><li>case sel is </li></ul><ul><li>when 0 => y<=a; </li></ul><ul><li>when 1 => y<=b; </li></ul><ul><li>when 2 => y<=c; </li></ul><ul><li>when 3 => y<=d; </li></ul><ul><li>end case; </li></ul><ul><li>end process; </li></ul><ul><li>end not_ok; </li></ul>
  23. 23. 7_4: Singal Versus Variable 5/15 <ul><li>Entity mux is </li></ul><ul><li>Port(a,b,c,d,s1,s0: in std_logic; y: out std_logic); </li></ul><ul><li>End mux; </li></ul><ul><li>Architecture ok of mux is </li></ul><ul><li>Begin </li></ul><ul><li>Process(a,b,c,d,s0,s1) </li></ul><ul><li>variable sel: integer range 0 to 3; </li></ul><ul><li>begin </li></ul><ul><li>…… .. </li></ul><ul><li>end process; </li></ul><ul><li>end ok; </li></ul>
  24. 24. 7_4: Signal Versus Variable 6/15 <ul><li>Architecture ok of mux is </li></ul><ul><li>Begin </li></ul><ul><li>Process(a,b,c,d,s0,s1) </li></ul><ul><li>variable sel: integer range 0 to 3; </li></ul><ul><li>begin </li></ul><ul><li>sel:=0; </li></ul><ul><li>if(s0=‘1’) then sel<=sel+1; end if; </li></ul><ul><li>if (s1=‘1’) then sel<=sel+2; end if; </li></ul><ul><li>case sel is </li></ul><ul><li>when 0 => y<=a; </li></ul><ul><li>when 1 => y<=b; </li></ul><ul><li>when 2 => y<=c; </li></ul><ul><li>when 3 => y<=d; </li></ul><ul><li>end case; </li></ul><ul><li>end process; </li></ul><ul><li>end ok; </li></ul>
  25. 25. 7_4: Singal Versus Variable 7/15 <ul><li>--Otro Ejemplo comparando el uso de signal y de variable: </li></ul><ul><li>--------------------------------------------------- </li></ul><ul><li>Library ieee; </li></ul><ul><li>Use ieee.std_logic_1164.all; </li></ul>
  26. 26. 7_4: Singal Versus Variable 8/15
  27. 27. 7_4: Singal Versus Variable 9/15
  28. 28. 7_4: Singal Versus Variable 10/15
  29. 29. 7_4: Singal Versus Variable 11/15
  30. 30. 7_4: Singal Versus Variable 12/15 <ul><li>Otro Ejemplo: Explicar porqué funciona bien el código siguiente: </li></ul>
  31. 31. 7_4: Singal Versus Variable 13/15
  32. 32. 7_4: Singal Versus Variable 14/15
  33. 33. 7_4: Singal Versus Variable 15/15
  34. 34. 7_4: Singal Versus Variable 14/7
  35. 35. 7_4: Singal Versus Variable 14/7

×