Está en la página 1de 21

ESCUELA POLITECNICA DEL

EJRCITO
DISEO VLSI-Laboratorio 1

ING. VANESSA VARGAS

REALIZADO POR:
Carlos Andrade
Mauricio Huacho

CONTENIDO:
1.
2.

TEMA ................................................................................................................................................................. 1
OBJETIVOS ......................................................................................................................................................... 1
2.1 OBJETIVO GENERAL ......................................................................................................................................... 1
2.2 OBJETIVOS ESPECFICOS .................................................................................................................................. 1
3. PLANTEAMIENTO DEL PROBLEMA .................................................................................................................... 1
4. MARCO TERICO ............................................................................................................................................... 1
4.1 VHDL ................................................................................................................................................................ 1
4.2 CONTADOR ...................................................................................................................................................... 2
4.2.1 Clasificacin de los contadores de circuito secuencial ............................................................................. 2
4.3 COMPARADOR ................................................................................................................................................. 2
4.4 DECODIFICACIN BCD A CDIGO DE 7 SEGMENTOS ...................................................................................... 2
5. DESARROLLO...................................................................................................................................................... 3
5.1 ACTIVIDADES ................................................................................................................................................... 3
5.2 DISEO CONCEPTUAL ...................................................................................................................................... 3
5.3 DISEO BASICO................................................................................................................................................ 6
5.3.1 U0: divisor ................................................................................................................................................ 6
5.3.2 U1:contador ............................................................................................................................................. 6
5.3.3 U2:restador .............................................................................................................................................. 6
5.3.4 U3:DBINBCD ............................................................................................................................................ 7
5.3.5 U4:DECO_DISPLAY ................................................................................................................................... 7
5.3.6 U5:comparador........................................................................................................................................ 7
5.3.7 U9: sensor_sonar ..................................................................................................................................... 8
5.3.8 U6: divisor_sensor ................................................................................................................................... 8
5.3.9 U7: contador_sensor ............................................................................................................................... 9
5.3.10 U8: mux_sensor ..................................................................................................................................... 9
5.3.11 U10: sonar_buff ..................................................................................................................................... 9
6. CONCLUSIONES.................................................................................................................................................. 9
7. RECOMENDACIONES ....................................................................................................................................... 10
8. BIBLIOGRAFA .................................................................................................................................................. 10
ANEXOS:................................................................................................................................................................... 11
9.1 ANEXO A: CODIGOS ....................................................................................................................................... 11
9.2.1 ANEXO A1: TANQUE ............................................................................................................................... 11
9.2.2 ANEXO A2: DIVISOR ................................................................................................................................ 12
9.3.3 ANEXO A3: CONTADOR .......................................................................................................................... 12
9.3.4 ANEXO A4: RESTADOR ............................................................................................................................ 13
9.3.5 ANEXO A5: DBINBCD .............................................................................................................................. 13
9.3.6 ANEXO A6: DECO_DISPLAY ..................................................................................................................... 14
9.3.7 ANEXO A7: COMPARADOR ..................................................................................................................... 14
9.3.8 ANEXO A8: SENSOR_SONAR ................................................................................................................... 14
9.3.9 ANEXO A9: DIVISOR_SENSOR ................................................................................................................. 15
9.3.10 ANEXO A10: CONTADOR_SENSOR ....................................................................................................... 15
9.3.11 ANEXO A11: MUX_SENSOR .................................................................................................................. 16
9.3.12 ANEXO A12: SONAR_BUFF ................................................................................................................... 16
9.3 ANEXO B: SIMULACIONES.............................................................................................................................. 17
9.3.1 ANEXO B1: SIM DIVISOR ......................................................................................................................... 17
9.3.2 ANEXO B2: SIM CONTADOR ................................................................................................................... 17
9.3.3 ANEXO B3: SIM RESTADOR ..................................................................................................................... 17
9.3.4 ANEXO B4: SIM BINBCD .......................................................................................................................... 17
9.3.5 ANEXO B5: SIM 7SEG .............................................................................................................................. 18
9.3.6 ANEXO B6: SIM ALARMA ........................................................................................................................ 18
Solo una cosa convierte en imposible un sueo: el miedo a fracasar.

2
NDICE DE FIGURAS
FIGURA 1 PROBLEMA .................................................................................................................................................................. 1
FIGURA 2 DISPLAY ...................................................................................................................................................................... 3
FIGURA 3 TANQUE ..................................................................................................................................................................... 3
FIGURA 4 COMPONENTES TANQUE ........................................................................................................................................... 5
FIGURA 5 DIVISOR ...................................................................................................................................................................... 6
FIGURA 6 CONTADOR ................................................................................................................................................................ 6
FIGURA 7 RESTADOR................................................................................................................................................................... 6
FIGURA 8 DBINBCD .................................................................................................................................................................... 7
FIGURA 9 DECO_DISPLAY ........................................................................................................................................................... 7
FIGURA 10 COMPARADOR ......................................................................................................................................................... 8
FIGURA 11 SENSOR_SONAR ....................................................................................................................................................... 8
FIGURA 12 SENSOR_COMPONENTES......................................................................................................................................... 8
FIGURA 13 DIVISOR_SENSOR ..................................................................................................................................................... 8
FIGURA 14 CONTADOR_SENSOR ............................................................................................................................................... 9
FIGURA 15 MUX_SENSOR .......................................................................................................................................................... 9
FIGURA 16 SONAR_BUFF ........................................................................................................................................................... 9
FIGURA 17 SIM DIVISOR ........................................................................................................................................................... 17
FIGURA 18 SIM CONTADOR ..................................................................................................................................................... 17
FIGURA 19 SIM RESTADOR....................................................................................................................................................... 17
FIGURA 20 SIM BINBCD ........................................................................................................................................................... 18
FIGURA 21 SIM 7SEG ................................................................................................................................................................ 18
FIGURA 22 SIMALARMA ........................................................................................................................................................... 18

NDICE DE TABLAS
TABLA 1 ....................................................................................................................................................................................... 7

Solo una cosa convierte en imposible un sueo: el miedo a fracasar.

1
1. TEMA
Medidor de lquidos utilizando lenguaje VHDL.

2. OBJETIVOS
2.1 OBJETIVO GENERAL
o

Simular lo ms real posible el comportamiento de un medidor de lquidos que cumpla con las
especificaciones descritas en el problema, simular los posibles resultados a obtener bajo determinadas
condiciones.

2.2 OBJETIVOS ESPECFICOS


o

Cconstruir el diseo planteado utilizando programacin VHDL y comprobndolo lo ms real posible en


una tarjeta que utilice tecnologa FPGA.

Implementar los conocimientos necesarios y adquiridos para disear el circuito as como la


programacin requerida para el funcionamiento de cada uno de los mdulos o componentes que
constituyen el circuito.

Construir los mdulos necesarios que compongan el circuito a utilizarse para resolver el problema, todo
esto nos ayudar a comprender de mejor manera la lgica de programacin VHDL y la utilizacin del
software que emplearemos para la programacin de la tarjeta basada en FPGA.

Hoy en da la utilizacin de lenguaje VHDL y el uso de las tarjetas basadas en tecnologa FPGA
constituyen una parte fundamental de la formacin acadmica y de los conocimientos bsicos de un
ingeniero electrnico es por eso que constituye un objetivo primordial el familiarizarnos con este tipo
de tecnologa diseando ejemplos prcticos y tiles los cuales se utilizan en la vida cotidiana para
satisfacer las necesidades de la sociedad actual.

3. PLANTEAMIENTO DEL PROBLEMA


Disee un circuito electrnico que indique la cantidad de lquido de un gran tanque de almacenamiento en un
despliegue de siete segmentos. El despliegue muestra la cantidad de lquido en el tanque en porcentajes del
10% al 90% con incrementos de 10%. Debe sonar una alarma si el nivel de lquido cae por debajo de 10% o
excede el 90%.
El nivel se mide con un dispositivo de sonar que proporciona pulsos como se muestra en la figura.

FIGURA 1 PROBLEMA

4. MARCO TERICO
4.1 VHDL
Solo una cosa convierte en imposible un sueo: el miedo a fracasar.

2
VHDL es el acrnimo que representa la combinacin de VHSIC y HDL, donde VHSIC es el acrnimo de Very High
Speed Integrated Circuit y HDL es a su vez el acrnimo de Hardware Description Language. Es un lenguaje
definido por la IEEE, el cual es utilizado para describir circuitos digitales. Aunque puede ser usado de forma
general para describir cualquier circuito, se usa principalmente para programar PLD (Programable Logic Device Dispositivo Lgico Programable), FPGA (Field Programmable Gate Array) y ASIC en general. Otros lenguajes para
el mismo propsito son Verilog y ABEL.

4.2 CONTADOR
En electrnica digital, Un contador (counter en ingls) es un circuito secuencial construido a partir de biestables
y puertas lgicas capaz de realizar el cmputo de los impulsos que recibe en la entrada destinada a tal efecto,
almacenar datos o actuar como divisor de frecuencia. Habitualmente, el cmputo se realiza en un cdigo
binario, que con frecuencia ser el binario natural o el BCD natural (contador de dcadas).
4.2.1 Clasificacin de los contadores de circuito secuencial

Segn la forma en que conmutan los biestables, podemos hablar de contadores sncronos (todos los
biestables conmutan a la vez, con una seal de reloj comn) o asncronos (el reloj no es comn y los
biestables conmutan uno tras otro).
Segn el sentido de la cuenta, se distinguen en ascendentes, descendentes y UP-DOWN (ascendentes o
descendentes segn la seal de control).
Segn la cantidad de nmeros que pueden contar, se puede hablar de contadores binarios de n bits
(cuentan todos los nmeros posibles de n bits, desde 0 hasta
), contadores BCD (cuentan del 0 al
9) y contadores Mdulo N (cuentan desde el 0 hasta el N-cuarto.
El nmero mximo de estados por los que pasa un contador se denomina mdulo del contador. Este nmero
viene determinado por la expresin 2^n donde n indica el nmero de bits del contador. Ejemplo, un contador de
mdulo 4 pasa por 4 estados, y contara del 0 al 3. Si necesitamos un contador con un mdulo distinto de 2^n, lo
que haremos es aadir un circuito combinacional.

4.3 COMPARADOR
Un circuito comparador combinatorio compara dos entradas binarias (A y B de n bits) para indicar la relacin de
igualdad o desigualdad entre ellas por medio de "tres banderas lgicas" que corresponden a las relaciones A
igual B, A mayor que B y A menor que B. Cada una de estas banderas se activara solo cuando la relacin a la que
corresponde sea verdadera, es decir, su salida ser 1 y las otras dos producirn una salida igual a cero.

4.4 DECODIFICACIN BCD A CDIGO DE 7 SEGMENTOS


Un dispositivo de salida muy utilizado para visualizar nmeros decimales es el visualizado de 7 segmentos.
Los 7 segmentos se marcan con las letras de la a hasta la g.
Existes varios tipos de visualizadores dentro de los cuales encontramos, el denominado incandescente, que es
similar a una lmpara comn, el de tubo de descarga de gas, que opera a tensiones altas y produce una
iluminacin anaranjada, el de tubo fluorescente, que da una iluminacin verdosa cuando luce y opera con
tensiones bajas, el ms moderno que es el de cristal liquido (LCD), este crea nmeros negros sobre fondos
plateados, y por ltimo el visualizador comn de diodos emisores de luz (LED) que produce un brillo rojo cuando
luce.
Existen visualizadores LED que cuando lucen emiten colores distintos del rojo. Como el visualizador LED es el
ms fcil de utilizar y el ms comn por eso se tratar con ms detalles. En la figura se muestra la forma de
operacin de un visualizador de 7 segmentos.

Solo una cosa convierte en imposible un sueo: el miedo a fracasar.

FIGURA 2 DISPLAY

Cada segmento (de a a g ) contiene un LED. Como la corriente tpica de un LED es de 20 mA, se colocan
resistores de 150 (ohmios) con el fin de limitar dicha corriente. Sin este resistor, el LED podra quemarse debido
a que un LED puede soportar solo 1.7V a travs de sus terminales.
Existen dos tipos de visualizadores LED, el de nodo comn y el de ctodo comn.
o
o

Ctodo comn: cuando todos los ctodos estn unidos entre s y van directo a tierra.
nodo comn: cuando todos los nodos estn conectados entre s y van a la fuente de alimentacin
como el caso del ejemplo del cual estamos hablando.

5. DESARROLLO
5.1 ACTIVIDADES
Se construir un circuito electrnico que indique la cantidad de lquido de un gran tanque de almacenamiento
en un despliegue de siete segmentos. El despliegue muestra la cantidad de lquido en el tanque en porcentajes
del 10% al 90% con incrementos de 10%. Debe sonar una alarma si el nivel de lquido cae por debajo de 10% o
excede el 90%.

5.2 DISEO CONCEPTUAL


A fin de resolver el problema se va a utilizar la tarjeta basada en FPGA, sobre esta se va a implementar el
siguiente diseo que se describe en la fig. 3.

FIGURA 3 TANQUE

La descripcin de IN/OUT es la siguiente:


o
o

CLK_50MHZ: En esta entrada se conectar el reloj de 50 MHZ frecuencia a la cual trabaja la tarjeta
basada en tecnologa FPGA.
RST: En esta entrada se conectar el sensor, en este caso el sonar que emitir un pulso al sensar el
tanque de almacenamiento.
Solo una cosa convierte en imposible un sueo: el miedo a fracasar.

4
o
o
o

D1(0:7): Es una salida de tipo vector, cada bit representa una conexin fsica a un segmento del display
que mostrar las decenas del resultado.
D2(0:7): Es una salida de tipo vector, cada bit representa una conexin fsica a un segmento del display
que mostrar las unidades del resultado.
ALARMA: Es una salida, este resultado se conectar a la alarma, controlar el encendido o apagado de
sta cuando se cumpla con las condiciones establecidas para el funcionamiento de la misma.

NOTA: PARA MAYOR DETALLE,. EL CODIGO EN EL ANEXO A1 Y LA SIMULACION EN EL ANEXO B1.


Internamente se realizar el siguiente procedimiento. En conclusin el sistema se conforma por varios bloques
que se muestran la fig. 3.

Solo una cosa convierte en imposible un sueo: el miedo a fracasar.

FIGURA 4 COMPONENTES TANQUE


Solo una cosa convierte en imposible un sueo: el miedo a fracasar.

6
Dado que la tarjeta basada en tecnologa FPGA trabaja a una frecuencia de 50 Mhz se tendr que construir un
divisor de frecuencia para obtener una frecuencia de 100 hz que es con la cual se trabajar de aqu en adelante,
con esta frecuencia construir un contador, el cual tendr un reset que ser el sonar y una salida cuenta (1-16),
la salida de este contador son 5 bits, los cuales se enviarn a un restador cuya salida (16 - cuenta) de igual
manera de 5 bits se enviarn a un decodificador binario a bcd y tambin a un comparador; en lo que respecta al
decodificador binario a bcd cuya salida ser bcd (4 bits) y se procesarn en un decodificador bcd a 7 segmentos,
mostrando as el resultado en los displays; en lo que respecta al comparador se verificar que no exceda de 9 ni
disminuya de 1, si esto sucede la alarma se encender.

5.3 DISEO BASICO


5.3.1 U0: divisor

FIGURA 5 DIVISOR

Debido a que la tarjeta basada en tecnologa FPGA trabaja a una frecuencia de 50Mhz se procede a realizar un
divisor de frecuencia. Cuando el tanque est lleno el pulso se demora en llegar 60ms y cuando est vaco se
demora 160ms, la diferencia de estos sera 160-60=100ms, este resultado se divide para 10 ya que la lectura se
realizar cada 10%, esto da 10ms lo que indica que tendr un perodo de 10ms, por ende la frecuencia ser de
100hz, este es el divisor que se debe implementar.
NOTA: PARA MAYOR DETALLE, EL CODIGO EN EL ANEXO A2 Y LA SIMULACION EN EL ANEXO B2.
5.3.2 U1:contador

FIGURA 6 CONTADOR

Se trabaja con oscilador de 100hz, el RST ser el pulso recibido del sonar, resetear el contador volviendo a
inicializar su cuenta, la salida "cuenta" mostrar valores comprendidos entre 1 y 16, la salida est formada por 5
bits; este contador alimentar a un restador que acondicionar la seal.
NOTA: PARA MAYOR DETALLE, EL CODIGO EN EL ANEXO A3 Y LA SIMULACION EN EL ANEXO B3.
5.3.3 U2:restador

FIGURA 7 RESTADOR

Solo una cosa convierte en imposible un sueo: el miedo a fracasar.

7
Con la finalidad de obtener valores comprendidos entre 6 y 16 se construir un restador, la entrada "cuenta"
proveniente del contador descrito anteriormente se restar de 16, obteniendo a la salida valores entre 6 y 16
los cuales significarn datos entre 100% y 0% o a su vez tanque lleno o vaco, la salida de este restador estar
conformada por 5 bits.
CUENTA TIEMPO[ms] PORCENTAJE
6
60
100
7
70
90
8
80
80
9
90
70
10
100
60
11
110
50
12
120
40
13
130
30
14
140
20
15
150
10
16
160
0
TABLA 1

NOTA: PARA MAYOR DETALLE, EL CODIGO EN EL ANEXO A4 Y LA SIMULACION EN EL ANEXO B4.


5.3.4 U3:DBINBCD

FIGURA 8 DBINBCD

En este componente se obtendr 4 bits en la salida "bcd" partiendo de 5 bits que se tena en la entrada "resta"
procedente del restador.
NOTA: PARA MAYOR DETALLE, EL CODIGO EN EL ANEXO A5 Y LA SIMULACION EN EL ANEXO B5.
5.3.5 U4:DECO_DISPLAY

FIGURA 9 DECO_DISPLAY

En este componente se obtendr 7 bits en la salida "D1" y 7 bits en la salida "D2" partiendo de 4 bits que se
tena en la entrada "resta" procedente del decodificador binario a bcd. En los displays se mostrarn los
resultados, un display para decenas y otro para unidades, en este caso el display de las decenas siempre se
mostrar con valor cero.
NOTA: PARA MAYOR DETALLE, EL CODIGO EN EL ANEXO A6 Y LA SIMULACION EN EL ANEXO B6.
5.3.6 U5:comparador

Solo una cosa convierte en imposible un sueo: el miedo a fracasar.

FIGURA 10 COMPARADOR

En este bloque se compara la salida procedente de la resta, si el valor es mayor que 9 o menor que 1 la salida
correspondiente de esta operacin ser enviada a la alarma, para que esta pueda activarse o desactivarse segn
el caso.
NOTA: PARA MAYOR DETALLE, EL CODIGO EN EL ANEXO A7 Y LA SIMULACION EN EL ANEXO B7.
5.3.7 U9: sensor_sonar

FIGURA 11 SSENSOR_SONAR

FIGURA 12 COMPONETES_SENSOR

Este bloque simula el sensor, simula el sonar. Como se indico anteriormente cuando el tanque est lleno el
sensor enva un pulso luego de 160 ms, y cuando se encuentra vacio el sensor enva un pulso luego de 60 ms,
simula tambin los retrasos segn la cantidad de liquido en el tanque.
NOTA: PARA MAYOR DETALLE, EL CODIGO EN EL ANEXO A8.
5.3.8 U6: divisor_sensor

FIGURA 13 DIVISOR_SENSOR

Este bloque es un componente del bloque sensor_sonar y realiza un divisor de frecuencia haciendo que el
sensor trabaje a una frecuencia de 100 hz al igual que el todos los componentes descritos hasta ahora.
NOTA: PARA MAYOR DETALLE, EL DIAGRAMA DE FLUJO SE ENCUENTRA EN EL ANEXO A9. EL CODIGO EN EL
ANEXO A9.
Solo una cosa convierte en imposible un sueo: el miedo a fracasar.

5.3.9 U7: contador_sensor

FIGURA 14 CONTADOR_SENSOR

Este bloque es un componente del bloque sensor_sonar y realiza un conteo con el fin de determinar el tiempo
al cual el sensor debe enviar el pulso.
NOTA: PARA MAYOR DETALLE, EL CODIGO EN EL ANEXO A10.
5.3.10 U8: mux_sensor

FIGURA 15 MUX_SENSOR

Este bloque es un componente del bloque sensor_sonar y con ayuda del contador antes descrito envia el pulso
correspondiente a la cuenta con el retraso equivalente.
NOTA: PARA MAYOR DETALLE, EL CODIGO EN EL ANEXO A11.
5.3.11 U10: sonar_buff

FIGURA 16 SONAR_BUFF

El bloque sonar_buff almacena el valor de la cuenta realizada por U1, controla mediante la entrada enable que
proviene del sensor el almacenamiento de la cuenta que a su vez sera procesada en U2.
NOTA: PARA MAYOR DETALLE, EL CODIGO EN EL ANEXO A12 .

6. CONCLUSIONES
-

Para verificar el funcionamiento del programa es fundamental hacer un bloque extra simulando la
recepcin del sensor sonar.
El factor del divisor de frecuencia tiene que tener un valor igual a 500000 para obtener una frecuencia
de 100Hz, ir a anexo A2.
Solo una cosa convierte en imposible un sueo: el miedo a fracasar.

10
-

En el contador U7, componente del bloque U9 se realiza un contador que va desde 0 hasta 99, el
objetivo de esto es simular el pulso de recepcin del sensor sonar cada segundo.
Se dise un bloque U10, un buffer, encargado de guardar el valor de la cuenta de U1, este buffer tiene
un control el cual habilita guardar el valor de la cuenta segn la salida del bloque U7, recepcin del
sensor sonar.
Disear antes de programar.
Asignar seales y vectores auxiliares en la etapa de programacin, ya que el resultado de un
procedimiento conectado directamente a las seales y vectores de salida causa errores.
Utilizamos flanco de subida para los contadores y de bajada para el buffer para guardar el valor justo
cuando se termine de realizar la cuenta.

7. RECOMENDACIONES
-

Usar la herramienta de simulacin que se encuentra disponible en el software.


Simular el resultado de cada bloque por separado.
Verificar las conexiones de los displays para evitar cualquier confusin o errores en el resultado.

8. BIBLIOGRAFA
[1] Sitio web: http://proyectosfie.webcindario.com/documentos/diseno/DAddSub8Bits.pdf
[2] Sitio web: http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_VHDL/Introducci%C3%B3n
[3] Sitio web: http://www.ladelec.com/teoria/electronica-digital/185-decodificacion-bcd-a-codigo-de-7segmentos
[4] Sitio web: http://www.electronica.com.es/content/26-restadores-binarios

Solo una cosa convierte en imposible un sueo: el miedo a fracasar.

11
ANEXOS:
9.1 ANEXO A: CODIGOS
9.2.1 ANEXO A1: TANQUE
entity tanque is
port (CLK:in std_logic;
RST:in std_logic;
D1D0:out std_logic_vector(13 downto 0);
alarma:out std_logic);
end tanque;
architecture Behavioral of tanque is
signal clk_out: std_logic; ---signal cuenta : STD_LOGIC_VECTOR (4 downto 0);
signal resta : std_logic_VECTOR (4 downto 0);
signal bcd : STD_LOGIC_VECTOR (7 downto 0);
signal out_sonar: STD_LOGIC;
signal salida : std_logic_VECTOR (4 downto 0);
component divisor
generic (factor:integer:=500000);
Port ( CLK : in STD_LOGIC;
RS : in STD_LOGIC;
CLK_OUT : out STD_LOGIC);
end component;
component contador
Port ( CLK : in STD_LOGIC;
Cuenta : out STD_LOGIC_VECTOR (4 downto 0);
RST : in STD_LOGIC);
end component;
component sonar_buff
Port ( enable : in STD_LOGIC;
clk_buffer: in STD_LOGIC;
entrada : in STD_LOGIC_VECTOR(4 downto 0);
salida : out STD_LOGIC_VECTOR(4 downto 0));
end component;
component restador
Port ( cuenta : in STD_LOGIC_VECTOR (4 downto 0);
resta : out STD_LOGIC_VECTOR (4 downto 0));
end component;
component DBINBCD
Port ( resta : in STD_LOGIC_VECTOR (4 downto 0);
bcd : out STD_LOGIC_VECTOR (7 downto 0));
end component;
component DECO_DISPLAY
Port ( D_IN : in STD_LOGIC_VECTOR (7 downto 0);
D1D0 : out STD_LOGIC_VECTOR (13 downto 0));
end component;
component comparador
Port ( resta : in STD_LOGIC_VECTOR (4 downto 0);
alarma : out STD_LOGIC);
end component;
component sensor_sonar
Port ( in_sonar : in STD_LOGIC;
RST : in STD_LOGIC;
out_sonar : out STD_LOGIC);
end component;
begin
U0: divisor
Solo una cosa convierte en imposible un sueo: el miedo a fracasar.

12
port map(CLK=>CLK, RS=>RST, CLK_OUT=>CLK_OUT);
U1: contador
port map(CLK=>CLK_OUT, RST=>RST, cuenta=>cuenta);
U2: restador
port map(cuenta=>salida, resta=>resta);
U3: DBINBCD
port map(resta=>resta, bcd=>bcd);
U4: DECO_DISPLAY
port map(D_IN=>bcd, D1D0 => D1D0);-U5: comparador
port map(resta => resta, alarma =>alarma);-U9: sensor_sonar
port map(in_sonar => CLK, RST => RST, out_sonar => out_sonar);-U10: sonar_buff
port map(enable=>out_sonar, entrada=>cuenta, salida=>salida,clk_buffer=>clk);
end Behavioral;

9.2.2 ANEXO A2: DIVISOR


entity divisor is
generic (factor:integer:=500000);
Port ( CLK : in STD_LOGIC;
RS : in STD_LOGIC;
CLK_OUT : out STD_LOGIC);
end divisor;
architecture Behavioral of divisor is
signal c_max:integer;
signal cont:integer;
signal out_aux:std_logic;
--Cuenta : out STD_LOGIC_VECTOR (4 downto 0);
signal Qint: STD_LOGIC_VECTOR(4 downto 0):="00001";
begin
divisor:process(CLK,RS)
begin
if RS='1' then
out_aux<='0';
cont<=0;
elsif CLK' event and CLK = '0' then
if cont < c_max then
cont <= cont + 1;
else
out_aux <= not out_aux;
cont<=0;
end if;
end if;
end process;
c_max <= factor / 2;
CLK_OUT<=out_aux;
end Behavioral;

9.3.3 ANEXO A3: CONTADOR


entity contador is
Port ( CLK : in STD_LOGIC;
Cuenta : out STD_LOGIC_VECTOR (4 downto 0);
RST : in STD_LOGIC);
end contador;
Solo una cosa convierte en imposible un sueo: el miedo a fracasar.

13
architecture Behavioral of contador is
signal Qint: STD_LOGIC_VECTOR(4 downto 0):="00000"; --00000
begin
process(CLK, RST)
begin
if (CLK' event and CLK='1') then
if(RST='1') then
Qint<="00000"; --00001
elsif (Qint<"10000") then
Qint<=Qint+1;
end if;
end if;
end process;
Cuenta<=Qint;
end Behavioral;

9.3.4 ANEXO A4: RESTADOR


entity restador is
Port ( cuenta : in
resta : out
end restador;

STD_LOGIC_VECTOR (4 downto 0);


STD_LOGIC_VECTOR (4 downto 0));

architecture Behavioral of restador is


signal A: STD_LOGIC_VECTOR(4 downto 0) := "10000";
begin
resta<=A-cuenta;
end Behavioral;

9.3.5 ANEXO A5: DBINBCD


entity DBINBCD is
Port ( resta : in STD_LOGIC_VECTOR (4 downto 0);
BCD : out STD_LOGIC_VECTOR (7 downto 0));
end DBINBCD;
architecture Behavioral of DBINBCD is
signal AUX: std_logic_vector(7 DOWNTO 0);
begin
with resta
"00000000"
"00000001"
"00000010"
"00000011"
"00000100"
"00000101"
"00000110"
"00001000"
"00000111"
"00001001"
"00001010"
"00001011"
"00001100"
"00001101"
"00001110"

select AUX<=
when "00000",
when "00001",
when "00010",
when "00011",
when "00100",
when "00101",
when "00110",
when "01000",
when "00111",
when "01001",
when "01010",
when "01011",
when "01100",
when "01101",
when "01110",
Solo una cosa convierte en imposible un sueo: el miedo a fracasar.

14
"00001111" when "01111",
"00010110" when "10000",
"00000000" when others;
bcd<= AUX;
end Behavioral;

9.3.6 ANEXO A6: DECO_DISPLAY


entity DECO_DISPLAY is
Port ( D_IN : in STD_LOGIC_VECTOR (7 downto 0);
D1D0 : out STD_LOGIC_VECTOR (13 downto 0));
end DECO_DISPLAY;
architecture Behavioral of DECO_DISPLAY is
begin
--"gfedcba"
D1D0 <= "10000001111001" when D_IN = "00000001" else
"10000000100100" when D_IN = "00000010" else
"10000000110000" when D_IN = "00000011" else
"10000000011001" when D_IN = "00000100" else
"10000000010010" when D_IN = "00000101" else
"10000000000010" when D_IN = "00000110" else
"10000001111000" when D_IN = "00000111" else
"10000000000000" when D_IN = "00001000" else
"10000000011000" when D_IN = "00001001" else
"11110011000000" when D_IN = "00001010" else
"11101111110111" ; --00

--01
--02
--03
--04
--05
--06
--07
--08
--09
--10

end Behavioral;

9.3.7 ANEXO A7: COMPARADOR


entity comparador is
Port ( resta : in STD_LOGIC_VECTOR (4 downto 0);
alarma : out STD_LOGIC);
end comparador;
architecture Behavioral of comparador is
begin
process (resta)
begin
if resta > "01001" then alarma <= '1';
elsif resta < "00001" then alarma <= '1';
else
alarma <= '0';
end if;
end process;
end Behavioral;

9.3.8 ANEXO A8: SENSOR_SONAR


entity sensor_sonar is
Port ( in_sonar : in STD_LOGIC;
RST : in STD_LOGIC;
out_sonar : out STD_LOGIC);
end sensor_sonar;
architecture Behavioral of sensor_sonar is
signal CLK_out : std_logic;
Solo una cosa convierte en imposible un sueo: el miedo a fracasar.

15
signal cuenta : STD_LOGIC_VECTOR (6 downto 0);
component divisor_sensor
generic (factor:integer:=500000);
Port ( CLK : in STD_LOGIC;
RS : in STD_LOGIC;
CLK_OUT : out STD_LOGIC);
end component;
component contador_sensor
Port ( CLK : in STD_LOGIC;
Cuenta : out STD_LOGIC_VECTOR (6 downto 0);
RST : in STD_LOGIC);
end component;
component mux_sensor
Port ( cuenta : in STD_LOGIC_VECTOR (6 downto 0);
--S : in STD_LOGIC_VECTOR (3 downto 0);
out_sonar : out STD_LOGIC);
end component;
begin
U6: divisor_sensor
port map(CLK => in_sonar,RS => RST, CLK_OUT => CLK_OUT);
U7: contador_sensor
port map(CLK=>CLK_OUT , RST => RST, cuenta => cuenta);
U8: mux_sensor
port map(cuenta => cuenta, out_sonar => out_sonar);
end Behavioral;

9.3.9 ANEXO A9: DIVISOR_SENSOR


entity divisor_sensor is
generic (factor:integer:=500000);
Port ( CLK : in STD_LOGIC;
RS : in STD_LOGIC;
CLK_OUT : out STD_LOGIC);
end divisor_sensor;
architecture Behavioral of divisor_sensor is
signal c_max:integer;
signal cont:integer;
signal out_aux:std_logic;
begin
divisor_sensor:process(CLK,RS)
begin
if RS='1' then
out_aux<='0';
cont<=0;
elsif CLK' event and CLK = '0' then
if cont < c_max then
cont <= cont + 1;
else
out_aux <= not out_aux;
cont<=0;
end if;
end if;
end process;
c_max <= factor / 2;
CLK_OUT<=out_aux;
end Behavioral;

9.3.10 ANEXO A10: CONTADOR_SENSOR


entity contador_sensor is
Port ( CLK : in STD_LOGIC;
Solo una cosa convierte en imposible un sueo: el miedo a fracasar.

16
Cuenta : out STD_LOGIC_VECTOR (6 downto 0);
RST : in STD_LOGIC);
end contador_sensor;
architecture Behavioral of contador_sensor is
signal Qint: STD_LOGIC_VECTOR(6 downto 0):="0000000";
begin
process(CLK, RST)
begin
if (CLK' event and CLK='1') then
if(RST='1') then
Qint<="0000000";
elsif (Qint<"1100011") then
Qint<=Qint+1;
end if;
end if;
Cuenta<=Qint;
end process;
end Behavioral;

9.3.11 ANEXO A11: MUX_SENSOR


entity mux_sensor is
Port ( cuenta : in STD_LOGIC_VECTOR (6 downto 0);
out_sonar : out STD_LOGIC);
end mux_sensor;
architecture Behavioral of mux_sensor is
signal sonar_aux: STD_LOGIC;
begin
process(cuenta)
begin
case cuenta is
-----------

when
when
when
when
when
when
when
when
when
when
when

"0010000"
"0001111"
"0001110"
"0001101"
"0001100"
"0001011"
"0001010"
"0001001"
"0001000"
"0000111"
"0000110"

=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>

sonar_aux<='1';
sonar_aux<='1';
sonar_aux<='1';
sonar_aux<='1';
sonar_aux<='1';
sonar_aux<='1';
sonar_aux<='1';
sonar_aux<='1';
sonar_aux<='1';
sonar_aux<='1';
sonar_aux<='1';

--160 ms
--150 ms
--140 ms
--130 ms
--120 ms
--110 ms
--100 ms
--90 ms
--80 ms
--70 ms
--60 ms

when others => sonar_aux<='0';


end case;
end process;
out_sonar<=sonar_aux;

end Behavioral;

9.3.12 ANEXO A12: SONAR_BUFF


entity sonar_buff is
Port ( entrada : in
salida : out

STD_LOGIC_VECTOR (4 downto 0);


STD_LOGIC_VECTOR (4 downto 0);
Solo una cosa convierte en imposible un sueo: el miedo a fracasar.

17
clk_buffer: in STD_LOGIC;
enable : in STD_LOGIC);
end sonar_buff;
architecture Behavioral of sonar_buff is
signal cont: STD_LOGIC_VECTOR(4 DOWNTO 0);
begin
process(clk_buffer,enable)
begin
if clk_buffer' event and clk_buffer='0' then
if enable='1' then
cont<=entrada;
end if;
end if;
end process;
salida<=cont;
end Behavioral;

9.3 ANEXO B: SIMULACIONES


9.3.1 ANEXO B1: SIM DIVISOR

FIGURA 17 SIM DIVISOR

9.3.2 ANEXO B2: SIM CONTADOR

FIGURA 18 SIM CONTADOR

9.3.3 ANEXO B3: SIM RESTADOR

FIGURA 19 SIM RESTADOR

9.3.4 ANEXO B4: SIM BINBCD

Solo una cosa convierte en imposible un sueo: el miedo a fracasar.

18

FIGURA 20 SIM BINBCD

9.3.5 ANEXO B5: SIM 7SEG

FIGURA 21 SIM 7SEG

9.3.6 ANEXO B6: SIM ALARMA

FIGURA 22 SIM ALARMA

Solo una cosa convierte en imposible un sueo: el miedo a fracasar.

También podría gustarte