Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Práctica4 VLSI
Práctica4 VLSI
Facultad de Ingeniería
Grupo: 3
1
Contenido
Parte básica. ........................................................................................................................................................................ 3
Código del divisor: ......................................................................................................................................................... 3
Código de PWM: ............................................................................................................................................................ 3
Código de Servomotor: ................................................................................................................................................... 4
Parte complementaria. ........................................................................................................................................................ 6
Primera actividad complementaria: ................................................................................................................................ 6
Código de Divisor:.......................................................................................................................................................... 6
Código de PWM: ............................................................................................................................................................ 6
Código de Servomotor: ................................................................................................................................................... 7
Conclusión. ......................................................................................................................................................................... 9
2
Parte básica.
Al principio se nos muestran tres códigos que corresponden al servomotor, PWM y el ya
visto divisor. Los dos últimos códigos se implementan en el código del servomotor
portándolos. En el divisor observamos el tiempo de respuesta, en este caso a N le damos el
valor de 11 que en tiempo es 81.9 us, se utiliza este número porque al multiplicarlo por 28 se
tiene aproximadamente 20 ms.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity Divisor is
Port (clk : in std_logic;
div_clk : out std_logic);
end Divisor;
Código de PWM:
3
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity PWM is
Port ( Reloj : in STD_LOGIC;
D : in STD_LOGIC_VECTOR (7 downto 0);
S : out STD_LOGIC);
end PWM;
Código de Servomotor:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity Servomotor is
Port ( clk : in STD_LOGIC;
Pini : in STD_LOGIC;
Pfin : in STD_LOGIC;
Inc : in STD_LOGIC;
Dec : in STD_LOGIC;
control: out STD_LOGIC);
end Servomotor;
4
architecture Behavioral of Servomotor is
component divisor is
Port ( clk : in STD_LOGIC;
div_clk : out STD_LOGIC);
end component;
component PWM is
Port ( Reloj : in STD_LOGIC;
D : in STD_LOGIC_VECTOR (7 downto 0);
S : out STD_LOGIC);
end component;
signal reloj : STD_LOGIC;
signal ancho : STD_LOGIC_VECTOR (7 downto 0) := X"0F";
begin
U1: divisor port map (clk, reloj);
U2: PWM port map (reloj, ancho, control);
5
Parte complementaria.
En este primer caso se nos pide la modificación de 8 a 16 bits. Para ello se tuvo que calcular
el contador pasa de ser de 28 a 216 = 65536, la N que se utiliza en el divisor también va
asociado a ello y el valor es 3 ya que 0.320 us por 65536 son aproximadamente 20 ms. Donde
también hubo cambios fue en el control que tiene la parte de “Servomotor” para el 5% se
obtuvo, en hexadecimal, X”0CC5” y para el 10% X”199A”.
Código de Divisor:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity Divisor is
Port (clk : in std_logic;
div_clk : out std_logic);
end Divisor;
Código de PWM:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
6
--Trabaja a partir de un contador de 16 bits (2^16 = 65536 valores)
entity PWM is
Port ( Reloj : in STD_LOGIC;
D : in STD_LOGIC_VECTOR (15 downto 0);
S : out STD_LOGIC);
end PWM;
Código de Servomotor:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity Servomotor is
Port ( clk : in STD_LOGIC;
Pini : in STD_LOGIC;
Pfin : in STD_LOGIC;
Inc : in STD_LOGIC;
Dec : in STD_LOGIC;
control: out STD_LOGIC);
end Servomotor;
component PWM is
Port ( Reloj : in STD_LOGIC;
D : in STD_LOGIC_VECTOR (15 downto
0);
S : out STD_LOGIC);
end component;
signal reloj : STD_LOGIC;
signal ancho : STD_LOGIC_VECTOR (15 downto 0) := X"000F";
begin
U1: divisor port map (clk, reloj);
U2: PWM port map (reloj, ancho, control);
cuenta := 1023;
ancho <= valor;
end if;
end if;
end process;
end Behavioral;
8
Conclusión.
Es la primera vez que utilizo algo de manera externa a la tarjeta DE10 Lite y también la
primera vez que hago funcionar un motor con las señales mandadas desde la tarjeta, fue una
práctica en la que se recordó el uso, la obtención y la implementación del tiempo, el ancho en
el cual está en 1 durante el ciclo de trabajo, etc. Recordó el uso de la división de frecuencia,
pero esta vez para hacer funcionar el servomotor. Al ser la primera vez utilizándolo con estos
dispositivos externos se me dificultó la obtención de las actividades complementarias.