Professional Documents
Culture Documents
Resumen
En el siguiente documento se presenta un diseño e implementación de un sistema para poder controlar
el nivel de agua en un depósito creando una interfaz máquina humano. El sistema creado emplea un sensor
de presión diferencial MPX2010p junto con una bomba de agua, un amplificador de instrumentación y
convertidor analógico digital.
Palabras clave: VHDL, MPX2010p, Nivel, Agua,
1
tran una reflexión acerca del proyecto realizado así co- tubo de vidrio de un metro de largo con mercurio, cerró
mo las recomendaciones para poder crear un sistema más herméticamente el tubo en un extremo y lo colocó ver-
grande en el futuro. ticalmente con el extremo abierto en un recipiente lleno
. de mercurio. La columna de mercurio cayó a unos 760
mm, dejando un espacio vacío por encima de su nivel.
La unidad de presión, Torr, fue nombrada en honor a este
2. Conceptos preliminares inventor y tiene una proporción de 1 a 760 atmósferas es-
tándar. La presión arterial se mide en Torr (milímetros de
2.1. Convertidor analógico digital mercurio) en la mayor parte del mundo. Las unidades de
presión contemporáneas incluyen el Pa (Pascal) definido
Un convertidor analógico a digital (ADC, A / D o A a por System International (SI) como la unidad de presión
D) es un sistema que convierte una señal analógica, como principal Pa = N . En EE. UU, la presión se mide libras
m2
un sonido captado por un micrófono o una luz que ingresa por pulgada cuadrada (PSI).
a una cámara digital, en una señal digital. Un ADC tam-
bién puede proporcionar una medida aislada, como un dis-
positivo electrónico que convierte una tensión o corriente 2.3.1. Sensor de presión diferencial
analógica de entrada en un número digital que representa
Un sensor de presión diferencial mide la diferencia en-
la magnitud de la tensión o la corriente. Normalmente, la
tre dos o más presiones introducidas como entradas en la
salida digital es un número binario de complemento a dos
unidad de detección. Un ejemplo de aplicación de tal sen-
que es proporcional a la entrada, pero hay otras posibili-
sor es el medidor de flujo de presión diferencial donde el
dades. Hay varias arquitecturas ADC. Debido a la com-
cambio en la velocidad del fluido produce un cambio en
plejidad y la necesidad de componentes emparejados con
la presión y crea una diferencia de presión, de acuerdo a
precisión, todos, excepto los ADC más especializados, se
la ecuación siguiente
implementan como circuitos integrados (IC).
δ P = P1 − P2 (1)
2.3.2. MPX2010DP
El sensor de presión MPX2010DP es un sensor de pre-
sión diferencial que proporciona una señal eléctrica en
mV, es proporcional a la señal de presión de entrada, ade-
más que se puede alimentar con 10 voltios de corriente
directa, su principio de funcionamiento es piezorresistivo.
La presión máxima de operación es de 10 kPa teniendo
2,5mV
entonces una resolución de ∆V∆P = kPa
Figura 1: Primer circuito
2.2. ADC0804
El ADC0804 es un convertidor de analógico a digital
de 8 bits donde sus salidas digitales varían de 0 a un má-
ximo de 255. Que además tiene la cualidad que el tama-
ño del paso del convertidor se puede ajustar ajustando la
tensión de referencia en el pin9. Cuando este pin no está
conectado, el voltaje de referencia predeterminado es el
voltaje de operación, es decir, Vcc. El tamaño del escalón
a 5V es 19.53mV (5V / 255), es decir, por cada aumento
Figura 2: Sensor de presión
de 19.53mV en la entrada analógica, la salida varía en 1
unidad.
2.4. Amplificador de instrumentación
2.3. Medición de presión
Un amplificador de instrumentación es un dispositivo
La medición de la presión moderna fue iniciada por el que permite acoplar sensores a unas entradas que tienen
físico italiano Evangelista Torricelli1 a través de su inven- una alta resistencia en modo diferencial y que además per-
to en 1643, el barómetro de mercurio. Torricelli llenó un mite variar la ganancia por medio de las resistencias.
2
2.4.1. AD620 Se tendrá que el sensor tendrá un rango máximo de 3.67
mV. Esa ganancia se conectó al amplificador de instru-
El AD620 es un amplificador de instrumentación de ba- mentación para que operará en un rango de 0 a 5V y pu-
jo costo y alta precisión que requiere solo una resistencia diera ser convertido a su equivalente digital. Teniendo en-
externa para establecer ganancias de 1 a 10000. Donde la tonces que
ganancia G está dada por
49,4kΩ 5V
49,4kΩ Ganancia = +1 = (5)
G= +1 (2) R g 3,67mV
Rg
49,4kΩ
y donde además Rg es la resistencia externa que se debe 1362,39 = +1 (6)
Rg
de calcular para llegar a la amplificación deseada
49,4kΩ
49,4kΩ 1361,39 = (7)
Rg = (3) Rg
G−1 Quedando entonces que
49,4kΩ
Rg = = 36,28 (8)
1361,39
Para despues arma un circuito de instrumentación como
el siguiente.
Figura 3: AD620
2.5. VGA
La sigla VGA proviene de Video Graphics Array lo
qiue traducido significa arreglo gráfico de video ó adap-
tador gráfico de video. Se trata de un conector semitrape-
zoidal con 15 terminales, que se encarga de enviar las se-
ñales referentes a los gráficos desde la computadora hsata
una pantalla para que sean mostrados al usuario.Por el he- Figura 4: Circuito de instrumentación
cho de permitir la transmisión de datos hacia un disposi-
tivo externo desde la computadora se le denomina puerto. Mientras que para activar el motor se le conectó un sis-
El puerto VGA se encarga de enviar las señales desde la tema relevador transistor para que energízando la base con
computadora hacia la pantalla con soporte de 256 a 16.7 la FPGA se pudiese activar
millones de colores y resoluciones desde 640x480 píxeles
en adelante
3. Desarrollo
Ya que el depósito medía aproximadamente 15 cm.
y considerando que el sensor tenía una resolución de
∆V 2,5mV
∆P = kPa además tomando en cuenta que una columna
de agua de 10,197cm produce 1kPA de presión. Se llega a
la conclusión que 2,5mV = 10,197cm Entonces haciendo Figura 5: Circuito para activar motor
una relación entre la altura y la resolución del sensor
3
el puerto VGA se tiene que enviarle 5 diferentes señales se declaran directamente sobre los PORT MAP.
de 1 bit, La sincronizacion Horizontal (HS), la sincroni-
zacion vertical (VS) y las 3 señales restantes son para los
colores rojo(R), verde (G) y azul (B).Para la sincroniza- 4. Resultados
ción horizontal se tiene un contador de 800 pulsos de reloj
que tiene un total de tiempo de 32uS, y que además duran- Se conectó la pantalla junto con el sensor y la bomba
te la cuenta se tienen 4 zonas distintas Porche delantero, de agua obteniendo el control de nivel
zona visible, Porche trasero y la sincronización, cada una
con su respectivo tiempo en uS. La señal HS durara activa
hasta llegar a la zona de sincronización y cuando llegue a
esa zona se desactivara lo cual le servira a la pantalla para
sincronizarse con su resolucion horizontal.
Para la sincronizacion vertical HS hay varias diferencias,
el tiempo de esta señal cuenta con las mismas 4 zonas e
igual al llegar a la zona de sincronizacion el estado de la
señal VS cambiara a estado bajo, la diferencia entre las se-
ñales HS y VS es el tiempo ya que el contador vertical que
se usa aumenta cada vez que el contador de la cuenta ho-
rizontal termina entonces el tiempo total de la resolucion
vertical es de 16mS tal y como se programó en Anexo 6.1.
Para tener un mejor control, se decidió realizar un mues-
treo como se muestra en el código del Anexo 6.2 donde se Figura 6: Bomba vaciando el agua
tiene un contador que depende del reloj interno de reloj, y
cada vez que llegue a un cierto valor tomara el valor de la
entrada y lo mandara directamente a la salida lo que quie-
re decir que mientras no llegue a ese valor no importara
que el valor en la entrada cambie constantemente mostrar
el que tenga cuando llegue a la cantidad para evitar asi que
la lectura del sensor varie constantemente.
En el código del Anexo 6.3 se reciben las señales del nu-
mero de fila y el numero de columna del componente de
sincronización.Tomando un cierto valor tanto de las filas
como de las columnas y se le indica manualmente que co-
lor se va a necesitar en cada pixel pero si se toman dos
valores, por ejemplo de la columna mayor a 100 y la co-
lumna menor a 200 y se unen con una AND es posible
indicarle a la FPGA que dentro de ese rango se necesita
un cierto valor o color y uniendo ese valor de la columna Figura 7: Interfaz máquina humano y sistema de instru-
en conjunto con las filas igualmente con AND se forma- mentación
rán figuras más definidas.
Además se realizo Anexo 6.4 como un divisor de frecuen-
cia ya que como se pide en los tiempos de sincronizacion 5. Conclusiones
mostrados en las tablas de la tarjeta Spartan3 para cumplir
con la resolucion de 640 X 480 a una frecuencia de trans- La programación se ha convertido en la actualidad en
mision de 60 Hz como stardard para las pantallas fabrica- una herramienta indispensable para manejar cualquier sis-
das en la region de América. La frecuencia de entrada será tema digital ya que estos sistemas tienen cada vez más
entonces la frecuencia del reloj de la tarjeta de 50 MHz y aplicaciones en la vida diaria. Se puede considerar que el
a la salida se tendrá por lo tanto una de 25 MHz. proyecto cumplió su objetivo ya que se pudo controlar el
En este código Anexo 6.5 se declara la entidad principal, nivel de líquido además de que se pudo visualizar en la
aqui se incluye cada uno de los componentes utilizados pantalla la situación del proyecto en tiempo real . Sin em-
para la realización del sensor de nivel. Declarando el ma- bargo la capacidad de la bomba no fue la adecuada ya que
peo de cada puerto con cada uno de los componentes utili- el tiempo de bombeo era demasidao lento, problema que
zados, utilizando señales del mismo tamaño de resolucion se solucionaría con una bomba de más potencia. En lo que
para hacer la conexion entre cada componente, en donde respecta al sensor y a la parte de instrumentación se pu-
si se utilizan las entradas o salidas de la entidad principal diera el proyecto utilizando un sensor de más precisión y
un filtro analógico para tener una resolución mayor.
4
Referencias END I F ;
END PROCESS ;
[1] Mano, Morris: Diseño digital, volumen 4 de 10. Pear- −−−−−−−−−−−−−−−−−−−−−−−−−−SINCRONIZACION
PROCESS (CONH)
son, 2013, ISBN 9786073220408. BEGIN
I F (CONH > " 1 0 1 0 0 0 1 1 1 1 " ) AND (CONH < " 1 0 1 1 1 0 1 1 1 1 " ) THEN
[2] Prado, Daniel: Electrónica del pasado al presente. −− 655 − 751
Universidad de Salamanca, Graficas Lope Laguna −−" 1 0 1 0 0 0 1 1 1 1 " − " 1 0 1 1 1 0 1 1 1 1 "
Grande 79, 2011. −−S i n c r o n i z a c i o n HS
HS <= ’ 0 ’ ;
[3] Ruiz, Gustavo A.: Electrónica básica para ingenie- ELSE HS <= ’ 1 ’ ;
END I F ;
ros, volumen 1. Universidad de Cantabria, Servicio END PROCESS ;
de Repografía Facultad de Ciencias Universidad de
Cantabria Avda. de los Castros S/n 39005-Santander PROCESS (CONV)
España, 2001, ISBN 84-607-1933-2. BEGIN
I F (CONV > " 1 1 1 1 0 1 0 0 0 " )
AND (CONV < " 1 1 1 1 0 1 0 1 0 " ) THEN
[4] Tocci, Ronald J. Neal S. Widmer: Sistemas digitales. −− 488 − 490
Principios y aplicaciones, volumen 4 de 10. Pearson, −−" 1 1 1 1 0 1 0 0 0 " − " 1 1 1 1 0 1 0 1 0 "
53519. Naucalpan de Juárez, Edo.de México, 3a edi- −− S i n c r o n i z a c i o n VS
ción, Julio 2007, ISBN 970-26-0970-4. VS <= ’ 0 ’ ;
ELSE VS <= ’ 1 ’ ;
END I F ;
END PROCESS ;
−−−−−−−−−−−−−−−Zona v i s i b l e
6. Anexos PROCESS (CONH)
BEGIN
I F (CONH > = " 0 0 0 0 0 0 0 0 0 0 " )
6.1. Conexión VGA AND (CONH < " 1 0 0 1 1 1 1 1 1 1 " ) THEN
−−−−−−−−− c o l u m n a s 0 A 639
VISH <= ’ 1 ’ ;
l i b r a r y IEEE ; ELSE VISH <= ’ 0 ’ ;
u s e IEEE . STD_LOGIC_1164 . ALL ; END I F ;
u s e IEEE . STD_LOGIC_ARITH . ALL ; END PROCESS ;
u s e IEEE . STD_LOGIC_UNSIGNED . ALL ;
PROCESS (CONV)
e n t i t y SINCROVGA i s BEGIN
P o r t ( FILA : o u t STD_LOGIC_VECTOR ( 9 downto 0 ) ; I F (CONV >= " 0 0 0 0 0 0 0 0 0 " )
COL : o u t STD_LOGIC_VECTOR ( 9 downto 0 ) ; AND (CONV < " 0 1 1 1 0 1 1 1 1 1 " )
CLK : i n STD_LOGIC ; THEN −−−−−−−−−−−−−−−−−−−−−−−− f i l a s 0 A 479
RST : i n STD_LOGIC ; VISV <= ’ 1 ’ ;
VISIBLE : o u t STD_LOGIC ; ELSE VISV <= ’ 0 ’ ;
HSYNC : o u t STD_LOGIC ; END I F ;
VSYNC : o u t STD_LOGIC ) ; END PROCESS ;
end SINCROVGA ; COL <= CONH;
FILA <= CONV;
a r c h i t e c t u r e B e h a v i o r a l o f SINCROVGA i s HSYNC <= HS ;
VSYNC <= VS ;
SIGNAL CONH , CONV : STD_LOGIC_VECTOR ( 9 DOWNTO 0 ) VISIBLE ; <= VISH AND VISV ;
SIGNAL HS , VS , VISH , VISV : STD_LOGIC ; end B e h a v i o r a l ;
}
begin
−−−−−−−−−−−−−−−−−−−−−−−−− CUENTAS
CONTEO: PROCESS (CLK , RST , CONH , CONV)
BEGIN
6.2. Muestreo
I F RST= ’1 ’ THEN
CONH <= " 0 0 0 0 0 0 0 0 0 0 " ;
CONV <= " 0 0 0 0 0 0 0 0 0 0 " ; l i b r a r y IEEE ;
ELSIF CLK’EVENT AND CLK= ’1 ’ THEN u s e IEEE . STD_LOGIC_1164 . ALL ;
I F CONH = " 1 1 0 0 0 1 1 1 1 1 " THEN u s e IEEE . STD_LOGIC_ARITH . ALL ;
−−−−−− 0 − 799 " 1 1 0 0 0 1 1 1 1 1 " u s e IEEE . STD_LOGIC_UNSIGNED . ALL ;
CONH <= " 0 0 0 0 0 0 0 0 0 0 " ;
I F CONV = " 1 0 0 0 0 0 0 1 1 1 " THEN −−−− Uncomment t h e f o l l o w i n g l i b r a r y
−−−−−− 0 − 520 " 1 0 0 0 0 0 0 1 1 1 " −−− d e c l a r a t i o n i f i n s t a n t i a t i n g
CONV <= " 0 0 0 0 0 0 0 0 0 0 " ; −−−− any X i l i n x p r i m i t i v e s i n t h i s c o d e .
ELSE CONV <= CONV + 1 ; −− l i b r a r y UNISIM ;
END I F ; −−u s e UNISIM . VComponents . a l l ;
ELSE CONH <= CONH + 1 ;
END I F ; e n t i t y MUESTREO i s
5
P o r t ( CLK : i n STD_LOGIC ; AND ( FILA >= " 0 0 0 0 0 0 0 0 0 0 " )
RST : i n STD_LOGIC ; AND ( FILA <= " 0 0 0 0 1 1 0 0 1 0 " ) ) THEN
REF : i n RGBAUX <= " 1 1 1 " ;
STD_LOGIC_VECTOR ( 7 downto 0 ) ; −−−−−−−−SEnAL DE ENTRADA
MUESTRA : o u t ELSIF ( ( COL >= " 0 0 0 1 1 0 0 1 0 0 " )
STD_LOGIC_VECTOR ( 7 downto 0 ) ) ; AND (COL <= " 0 0 0 1 1 1 1 1 1 1 " )
end MUESTREO; AND ( FILA >= " 0 0 0 0 1 1 0 0 1 0 " )
AND ( FILA <= " 0 0 0 1 0 0 1 1 0 1 " ) ) THEN
a r c h i t e c t u r e B e h a v i o r a l o f MUESTREO i s IF NOTREF = NOTSEN THEN
SIGNAL CONT : STD_LOGIC_VECTOR( 2 2 DOWNTO 0 ) ; RGBAUX <= " 1 0 0 " ;
SIGNAL AUXMU: STD_LOGIC_VECTOR ( 7 DOWNTO 0 ) ; ELSIF NOTREF < NOTSEN THEN
begin RGBAUX <= " 0 1 0 " ;
−−−−− p r o c e s o en e l c u a l h a r e m o s una c u e n t a de ELSE RGBAUX <= " 1 0 0 " ;
−−− 0 h a s t a 6 , 2 4 9 , 9 9 9 , y a l l l e g a r a e s e v a l o r END I F ;
−−−−− t o m a r a una n u e v a m u e s t r a de l a e n t r a d a −−−−−−−−ESTRUCTURA PRINCIPAL
−−y l a m o s t r a r a en l a s a l i d a ELSIF ( ( COL >= " 0 0 0 1 1 1 1 1 1 1 " )
PROCESS (CLK, RST ) AND (COL <= " 1 0 0 0 0 0 0 0 0 0 " )
BEGIN AND ( FILA >= " 0 0 0 0 0 0 0 0 0 0 " )
I F RST= ’1 ’ THEN AND ( FILA <= " 0 1 0 0 1 1 0 1 1 0 " ) ) THEN
CONT <= " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " ; −−−−−−−−CONTENIDO DEL TANQUE
MUESTRA < = " 0 0 0 0 0 0 0 0 " ; I F ( ( COL >= " 0 0 1 0 1 1 1 0 1 1 " )
ELSIF CLK’EVENT AND CLK = ’1 ’ THEN AND (COL <= " 0 1 1 1 1 0 0 1 1 1 " )
I F CONT= " 1 0 1 1 1 1 1 0 1 0 1 1 1 1 0 0 0 0 0 1 1 1 1 " THEN AND ( FILA >= " 0 0 0 0 0 0 0 0 0 0 " )
AUXMU <= REF ; AND ( FILA <= " 0 0 1 1 1 1 1 1 1 1 " ) ) THEN
MUESTRA <= AUXMU; −−−−−−− S I LA FILA ES MAYOR
CONT <= " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " ; −−−AL NIVEL DE RESOLUCION DEL SENSOR
ELSE CONT <= CONT + 1 ; −−−−−−LO PINTA COLOR CYAN, S I NO NEGRO
END I F ; I F FILA <= NOTSEN THEN
END I F ; RGBAUX <= " 0 0 0 " ;
END PROCESS ; ELSE RGBAUX <= " 0 1 1 " ;
end B e h a v i o r a l ; END I F ;
−−−−−−−− REFERENCIA
ELSIF ( ( COL >= " 0 0 1 0 0 1 0 1 1 0 " )
AND (COL <= " 0 0 1 0 1 1 1 0 1 1 " )
6.3. Colorear AND ( FILA >= " 0 0 0 0 0 0 0 0 0 0 " )
AND ( FILA <= " 0 0 1 1 1 1 1 1 1 1 " ) ) THEN
6
AND (COL <= " 0 0 0 0 1 1 0 0 1 0 " ) AND (COL <= " 0 1 0 0 0 0 1 0 0 1 " )
AND ( FILA >= " 0 0 0 0 0 0 0 1 0 1 " ) AND ( FILA >= " 0 1 0 1 0 0 1 1 1 0 " )
AND ( FILA <= " 0 0 0 0 1 0 1 1 0 1 " ) ) OR AND ( FILA <= " 0 1 0 1 0 1 1 1 1 0 " ) ) OR
( ( COL >= " 0 0 0 0 1 1 1 1 0 0 " ) ( ( COL >= " 0 1 0 0 0 0 1 0 0 1 " )
AND (COL <= " 0 0 0 1 0 0 0 1 1 0 " ) AND (COL <= " 0 1 0 0 0 1 0 0 1 1 " )
AND ( FILA >= " 0 0 0 0 0 0 0 1 0 1 " ) AND ( FILA >= " 0 1 0 1 0 0 0 0 0 0 " )
AND ( FILA <= " 0 0 0 0 1 0 1 1 0 1 " ) ) OR AND ( FILA <= " 0 1 0 1 1 0 1 0 0 0 " ) ) OR
( ( COL >= " 0 0 0 0 1 1 0 0 1 0 " ) −−−−−−−−−−−I
AND (COL <= " 0 0 0 0 1 1 0 1 1 1 " ) ( ( COL >= " 0 1 0 0 0 1 1 1 0 1 " )
AND ( FILA >= " 0 0 0 0 0 0 1 0 1 0 " ) AND (COL <= " 0 1 0 0 1 0 0 1 1 1 " )
AND ( FILA <= " 0 0 0 0 0 1 1 0 1 1 " ) ) OR AND ( FILA >= " 0 1 0 1 0 0 0 0 0 0 " )
( ( COL >= " 0 0 0 0 1 1 0 1 1 1 " ) AND ( FILA <= " 0 1 0 1 1 0 1 0 0 0 " ) ) OR
AND (COL <= " 0 0 0 0 1 1 1 1 0 0 " ) −−−−−−−−−−−V
AND ( FILA >= " 0 0 0 0 0 1 0 1 1 1 " ) ( ( COL >= " 0 1 0 0 1 1 0 0 0 1 " )
AND ( FILA <= " 0 0 0 0 1 0 1 0 0 0 " ) ) AND (COL <= " 0 1 0 0 1 1 1 0 1 1 " )
THEN AND ( FILA >= " 0 1 0 1 0 0 0 0 0 0 " )
RGBAUX <= " 1 1 0 " ; AND ( FILA <= " 0 1 0 1 0 1 1 1 1 0 " ) ) OR
−−−−−−−−−−OUT−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− ( ( COL >= " 0 1 0 0 1 1 1 0 1 1 " )
ELSIF −−−−−−−O AND (COL <= " 0 1 0 1 0 0 0 1 0 1 " )
( ( COL >= " 1 0 0 0 0 1 1 1 0 0 " ) AND ( FILA >= " 0 1 0 1 0 1 1 1 1 0 " )
AND (COL <= " 1 0 0 0 1 0 0 1 0 0 " ) AND ( FILA <= " 0 1 0 1 1 0 1 0 0 0 " ) ) OR
AND ( FILA >= " 0 0 1 1 0 0 1 1 0 1 " ) ( ( COL >= " 0 1 0 1 0 0 0 1 0 1 " )
AND ( FILA <= " 0 0 1 1 1 1 1 1 1 1 " ) ) OR AND (COL <= " 0 1 0 1 0 0 1 1 1 1 " )
( ( COL >= " 1 0 0 0 1 0 0 1 0 0 " ) AND ( FILA >= " 0 1 0 1 0 0 0 0 0 0 " )
AND (COL <= " 1 0 0 0 1 0 1 1 0 1 " ) AND ( FILA <= " 0 1 0 1 0 1 1 1 1 0 " ) ) OR
AND ( FILA >= " 0 0 1 1 0 0 1 1 0 1 " ) −−−−−−−−−−−E
AND ( FILA <= " 0 0 1 1 0 1 0 1 1 1 " ) ) OR ( ( COL >= " 0 1 0 1 0 1 1 0 0 1 " )
( ( COL >= " 1 0 0 0 1 0 0 1 0 0 " ) AND (COL <= " 0 1 0 1 1 0 0 0 1 1 " )
AND (COL <= " 1 0 0 0 1 0 1 1 0 1 " ) AND ( FILA >= " 0 1 0 1 0 0 0 0 0 0 " )
AND ( FILA >= " 0 0 1 1 1 1 0 1 0 1 " ) AND ( FILA <= " 0 1 0 1 1 0 1 0 0 0 " ) ) OR
AND ( FILA <= " 0 0 1 1 1 1 1 1 1 1 " ) ) OR ( ( COL >= " 0 1 0 1 1 0 0 0 1 1 " )
( ( COL >= " 1 0 0 0 1 0 1 1 0 1 " ) AND (COL <= " 0 1 0 1 1 0 1 1 0 1 " )
AND (COL <= " 1 0 0 0 1 1 0 1 1 0 " ) AND ( FILA >= " 0 1 0 1 0 0 0 0 0 0 " )
AND ( FILA >= " 0 0 1 1 0 0 1 1 0 1 " ) AND ( FILA <= " 0 1 0 1 0 0 1 0 1 0 " ) ) OR
AND ( FILA <= " 0 0 1 1 1 1 1 1 1 1 " ) ) OR ( ( COL >= " 0 1 0 1 1 0 0 0 1 1 " )
−−−−−−−U AND (COL <= " 0 1 0 1 1 0 1 1 0 1 " )
( ( COL >= " 1 0 0 0 1 1 1 1 1 1 " ) AND ( FILA >= " 0 1 0 1 0 0 1 1 1 1 " )
AND (COL <= " 1 0 0 1 0 0 1 0 0 0 " ) AND ( FILA <= " 0 1 0 1 0 1 1 0 0 1 " ) ) OR
AND ( FILA >= " 0 0 1 1 0 0 1 1 0 1 " ( ( COL >= " 0 1 0 1 1 0 0 0 1 1 " )
) AND ( FILA <= " 0 0 1 1 1 1 1 1 1 1 " ) ) OR AND (COL <= " 0 1 0 1 1 0 1 1 0 1 " )
( ( COL >= " 1 0 0 1 0 0 1 0 0 0 " ) AND ( FILA >= " 0 1 0 1 0 1 1 1 1 0 " )
AND (COL <= " 1 0 0 1 0 1 0 0 0 1 " ) AND ( FILA <= " 0 1 0 1 1 0 1 0 0 0 " ) ) OR
AND ( FILA >= " 0 0 1 1 1 1 0 1 0 1 " ) −−−−−−−−−−−−L
AND ( FILA <= " 0 0 1 1 1 1 1 1 1 1 " ) ) OR ( ( COL >= " 0 1 0 1 1 1 0 1 1 1 " )
( ( COL >= " 1 0 0 1 0 1 0 0 0 1 " ) AND (COL <= " 0 1 1 0 0 0 0 0 0 1 " )
AND (COL <= " 1 0 0 1 0 1 1 1 0 0 " ) AND ( FILA >= " 0 1 0 1 0 0 0 0 0 0 " )
AND ( FILA >= " 0 0 1 1 0 0 1 1 0 1 " ) AND ( FILA <= " 0 1 0 1 1 0 1 0 0 0 " ) ) OR
AND ( FILA <= " 0 0 1 1 1 1 1 1 1 1 " ) ) OR ( ( COL >= " 0 1 1 0 0 0 0 0 0 1 " )
−−−−−−−T AND (COL <= " 0 1 1 0 0 0 1 0 1 1 " )
( ( COL >= " 1 0 0 1 1 0 0 0 1 1 " ) AND ( FILA >= " 0 1 0 1 0 1 1 1 1 0 " )
AND (COL <= " 1 0 0 1 1 1 1 1 1 0 " ) AND ( FILA <= " 0 1 0 1 1 0 1 0 0 0 " ) )
AND ( FILA >= " 0 0 1 1 0 0 1 1 0 1 " ) THEN RGBAUX <= " 1 1 0 " ;
AND ( FILA <= " 0 0 1 1 0 1 0 1 1 1 " ) ) OR ELSE RGBAUX <= " 0 0 0 " ;
( ( COL >= " 1 0 0 1 1 0 1 1 0 0 " ) END I F ;
AND (COL <= " 1 0 0 1 1 1 0 1 0 1 " ) END PROCESS ;
AND ( FILA >= " 0 0 1 1 0 0 1 1 0 1 " ) DOU <= SEN ;
AND ( FILA <= " 0 0 1 1 1 1 1 1 1 1 " ) ) RGB <= RGBAUX;
THEN RGBAUX <= " 1 1 0 " ; end B e h a v i o r a l ;
−−−−−−−−−−NIVEL−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
ELSIF
−−−−−−−−−−N
( ( COL >= " 0 0 1 1 1 1 0 1 0 1 " )
6.4. Divisor de frecuencia
AND (COL <= " 0 0 1 1 1 1 1 1 1 1 " )
AND ( FILA >= " 0 1 0 1 0 0 0 0 0 0 " )
AND ( FILA <= " 0 1 0 1 1 0 1 0 0 0 " ) ) OR l i b r a r y IEEE ;
( ( COL >= " 0 0 1 1 1 1 1 1 1 1 " ) u s e IEEE . STD_LOGIC_1164 . ALL ;
AND (COL <= " 0 1 0 0 0 0 0 1 0 0 " ) u s e IEEE . STD_LOGIC_ARITH . ALL ;
AND ( FILA >= " 0 1 0 1 0 0 0 1 0 1 " ) entity digital_clock_top is
AND ( FILA <= " 0 1 0 1 0 1 1 0 0 1 " ) ) OR port (
( ( COL >= " 0 1 0 0 0 0 0 1 0 0 " ) CLK : IN STD_LOGIC ;
7
RST : IN STD_LOGIC ; COMPONENT PINTAPANTALLA
CLK25MHZ : o u t STD_LOGIC P o r t ( VIS : i n STD_LOGIC ;
); RST : IN STD_LOGIC ;
end d i g i t a l _ c l o c k _ t o p ; SEN : IN STD_LOGIC_VECTOR ( 7 DOWNTO 0 ) ;
REF : IN STD_LOGIC_VECTOR ( 7 DOWNTO 0 ) ;
architecture r t l of d i g i t a l _ c l o c k _ t o p i s COL : i n STD_LOGIC_VECTOR ( 9 downto 0 ) ;
c o n s t a n t max_count : INTEGER : = 1 ; FILA : i n
s i g n a l c o u n t : INTEGER r a n g e 0 t o max_count ; STD_LOGIC_VECTOR ( 9 downto 0 ) ;
s i g n a l c l k _ s t a t e : STD_LOGIC : = ’ 0 ’ ; DOU : OUT STD_LOGIC_VECTOR ( 7 DOWNTO 0 ) ;
RGB : o u t
begin STD_LOGIC_VECTOR ( 2 DOWNTO 0 ) ) ;
g e n _ c l o c k : p r o c e s s (CLK, c l k _ s t a t e , c o u n t ) end COMPONENT;
begin −−−−−−Componente que s e e n c a r g a de l a s s e n a l s de
I F RST= ’1 ’ THEN c o u n t <= 0 ; −− s i n c r o n i z a c i o n p a r a l a p a n t a l l a con una
E L S i f CLK’ e v e n t and CLK= ’1 ’ t h e n −−− r e s o l u c i o n de 640 x 480 p i x e l e s
i f c o u n t < max_count t h e n COMPONENT SINCROVGA
c o u n t <= c o u n t + 1 ; P o r t ( FILA : o u t STD_LOGIC_VECTOR ( 9 downto 0 ) ;
else COL : o u t
c l k _ s t a t e <= n o t c l k _ s t a t e ; STD_LOGIC_VECTOR ( 9 downto 0 ) ;
c o u n t <= 0 ; CLK : i n STD_LOGIC ;
end i f ; RST : i n STD_LOGIC ;
end i f ; VISIBLE : o u t STD_LOGIC ;
end p r o c e s s ; HSYNC : o u t STD_LOGIC ;
VSYNC : o u t STD_LOGIC ) ;
persecond : process ( c l k _ s t a t e ) end COMPONENT;
begin −−−−−−Componente que s e e n c a r g a de t o m a r una m u e s t r a
CLK25MHZ <= c l k _ s t a t e ; −− de l a l e c t u r a d e l s e n s o r c a d a 250 mS
end p r o c e s s ; COMPONENT MUESTREO i s
end r t l ; P o r t ( CLK : i n STD_LOGIC ;
RST : i n STD_LOGIC ;
REF : i n STD_LOGIC_VECTOR ( 7 downto 0 ) ;
MUESTRA : o u t STD_LOGIC_VECTOR ( 7 downto 0 ) ) ;
6.5. Principal end COMPONENT;