Intermedio > Circuitos integrados > Diseño jerarquico II

Diseño jerarquico II

Diseño jerarquico

1. Realice el diseño para la sincronización de movimiento de dos fajas que transportan cajas en función de dos sensores colocados como se muestra en la figura

Los motores tienen como mando las líneas de Start/Stop y de Cambio de sentido de Giro

La condición es que por criterios de ahorro de nergía las fajas no deben de moverse si no estan transportando cajas.

  • Realizar el diagrama de bloques
  • Indicar la función lógica realizada por cada bloque
  • Diseñar cada bloque, implementar mediante el Max Plus. Depurar simular cada bloque
  • integrar todo en un diseño jerárquico
  • Definir las entradas y salidas y la configuración de pines en el integrado

usaremos dos bloques, uno llamado faja 1, el otro llamado faja2. Ambos tendrán el mismo activador, sin embargo solo el primero tendrá la salida de cambio de giro.

  1. library IEEE;
  2. use IEEE.STD_LOGIC_1164.ALL;
  3. entity faja1 is
  4. port(s1: in std_logic;--sensores
  5. startstop: in std_logic;--0_Stop; 1:Start
  6. Bgiro: in std_logic;--0:Giro horario; 1:Giro antihorario
  7. giroH,giroAH,motor: out std_logic);
  8. end faja1;
  9. arquitecture faja0 of faja1 is
  10. begin
  11. process (s1,startstop,Bgiro)
  12. begin
  13. if(startstop='1' and s1='1' and Bgiro='0') then
  14. motor<='1';
  15. giroH<='1';
  16. giroAH<='0';
  17. elseif (startstop='1' and s1='1' and Bgiro='1') then
  18. motor<='1';
  19. giroH<='0';
  20. giroAH<='1';
  21. else
  22. motor<='0'
  23. giroH<='0'
  24. giroAH<='0'
  25. end if;
  26. End process;
  27. end faja0;

Código en VHDL

  1. library IEEE;
  2. use IEEE.STD_LOGIC_1164.ALL;
  3. entity faja2 is
  4. port (s2: in std_logic;--sensor
  5. onoff: in std_logic; --activador
  6. motor: out std_logic);
  7. end faja2;
  8. architecture fajita of faja2 is
  9. begin
  10. process (s2,onoff)
  11. begin
  12. if (onoff='1' and s2='1') then
  13. motor<='1';
  14. else
  15. motor<='0';
  16. end if;
  17. end process;
  18. end fajita;

  1. LIBRARY IEEE;
  2. Use ieee.std_logic_1164.ALL;
  3. USE ieee.numeric_std-ALL;
  4. LIBRARY UNISIM;
  5. USE UNISIM.Vcomponents.ALL;
  6. entity lab15_lab_sch_tb is
  7. END lab15_lab_sch_tb;
  8. architectur behavioral of homework is
  9. COMPONENT lab15
  10. PORT( OnnOff : IN STD_LOGIC;
  11. Cambiogiro : IN STD_LOGIC;
  12. sensor1 : IN STD_LOGIC;
  13. sensor2 : In STD_LOGIC;
  14. girohorario : OUT STD_LOGIC
  15. giroantihorario : OUT STD_LOGIC;
  16. MotorOn : OUT STD_LOGIC);
  17. EN COMPONENT;
  18. SIGNAL OnOff : STD_LOGIC;
  19. SIGNAL Cambiogiro : STD_LOGIC;
  20. SIGNAL sensor1: STD_LOGIC;
  21. SIGNAL sensor2: STD_LOGIC
  22. SIGNAL girohorario : STD_LOGIC
  23. SIGNAL giroantihorario : STD_LOGIC
  24. SIGNAL MotorOn : STD_LOGIC
  25. Begin
  26. UUT: lab15 PORT MAP(
  27. OnOff => OnOff,
  28. Cambiogiro => Cambiogiro,
  29. sensor1 => sensor1,
  30. sensor2 => sensor2,
  31. girohorario=>girohorario,
  32. giroantihorario=>giroantihorario,
  33. MotorOn=>MotorOn,
  34. );
  35. -- *** Test Bench - User DEfine Section****
  36. tb:Process
  37. BEGIN
  38. onoff<='1';
  39. cambiogiro<='1';
  40. sensor1<='1';
  41. sensor2<='1';
  42. wair for 10ns;
  43. onoff<='1';
  44. cambiogiro<='0';
  45. sensor1<='1';
  46. sensor2<='1';
  47. wait for 10ns;
  48. onoff<='1';
  49. cambiogiro<='1';
  50. sensor1<='1';
  51. sensor2<='1';
  52. wait for 10ns;
  53. onoff<='1';
  54. cambiogiro<='1';
  55. sensor1<='0';
  56. sensor2<='1';
  57. wait for 10ns;
  58. onoff<='1';
  59. cambiogiro<='1';
  60. sensor1<='1';
  61. sensor2<='0';
  62. wait for 10ns;
  63. onoff<='0';
  64. cambiogiro<='1';
  65. sensor1<='1';
  66. sensor2<='1';
  67. wait for 10ns;
  68. WAIT; -- will wait forever
  69. END PROCESS;
  70. --***End Test Bench - User Defined Section ***
  71. END;

Pueden descargar los archivos de ISE desde el siguiente enlace:https://github.com/mokuzaru/vhdl_labs