Title: Sistema de riego
1Sistema de riego
- Autores
- Lorena Domínguez Carrera
- Emilio Aguilera Montoto
- Curso 2004-2005.
- Asignatura SDP2.
- Dpto. de Tecnología Electrónica.
- Universidad de Vigo.
2Índice
- Especificaciones.
- Descripción de la aplicación.
- Análisis previo.
- Diseño del sistema digital.
- Descripción.
- Simulación funcional.
- Compilación e implementación.
- Simulación temporal.
- Conclusiones.
3Especificaciones (I)
- Se desea realizar un sistema digital que realice
el control de un sistema de riego.
4Especificaciones (II)
- La máquina de riego presenta las siguientes
características - Puede abrir el agua (regar) o cerrarla (no
regar). - Comienza y para de regar automáticamente a
determinadas horas. - Las horas de comienzo y fin son diferentes para
cada estación.
5Especificaciones (III)
- La máquina posee un reloj y un sistema de fecha.
- Las horas de comienzo y fin de riego, así como
los cambios de estación, se establecen al
configurar el dispositivo.
6Descripción de la aplicación (I)
- Se supone que el sistema de riego posee los
siguientes elementos en su interior, de los que
sólo se debe diseñar el sistema de control.
7Descripción de la aplicación (II)
- La máquina debe activar la señal del controlador
de riego desde la hora de comienzo hasta que deba
terminar de regar. - La máquina debe tener en cuenta la estación en la
que está y cambiar de estación cuando sea
oportuno.
8Descripción de la aplicación (III)
- Diagrama de secuencia de operaciones del sistema
de riego.
9Descripción de la aplicación (IV)
- Diagrama de secuencia de operaciones del control
de estación.
10Análisis previo
- Esta aplicación responde a un circuito de CONTROL
de complejidad baja o media, que requiere al
menos los siguientes circuitos - Un Sistema Secuencial Síncrono de control
principal. - 2 comparadores de 11 y 9 bits, uno para hora del
día y otro para fecha del año. - 2 memorias para almacenar horas de
activación/desactivación y días de cambio de
estación. - Un temporizador para esperar por los datos de la
memoria. - Dada la necesidad de 2 memorias para el circuito,
en principio parece que una FPGA es el Circuito
Digital Configurable más adecuado para la
implementación de este sistema digital.
11Diseño del sistema digital
- Se necesitan los siguientes componentes
- Comparador para fecha
- Comparador para hora
- Memoria de fechas
- Memoria de horas
- Circuíto de control
12Comparador para fechas (I)
- El comparador para fechas compara dos fechas, en
formato 5 bits para el día y 4 para el mes, ambos
en binario, siendo el mes los 4 bits de menor
peso
13Comparador para fechas (II)
- library IEEE
- use IEEE.STD_LOGIC_1164.ALL
- use IEEE.STD_LOGIC_ARITH.ALL
- use IEEE.STD_LOGIC_UNSIGNED.ALL
- -- Uncomment the following lines to use the
declarations that are - -- provided for instantiating Xilinx primitive
components. - --library UNISIM
- --use UNISIM.VComponents.all
- entity comp_fecha is
- Port ( clk in std_logic
- dia1 in std_logic_vector(4 downto 0)
- mes1 in std_logic_vector(3 downto
0) - fecha in std_logic_vector(8 downto 0)
- eq out std_logic)
- end comp_fecha
- architecture Behavioral of comp_fecha is
- signal fecha2 std_logic_vector(8 downto 0)
- begin
- fecha2(8 downto 4) lt dia1
- fecha2(3 downto 0) lt mes1
- comparacion process(clk, fecha, fecha2)
- begin
- if (clk'event and clk '0') then
- if (fecha2 fecha) then
- eq lt '1'
- else
- eq lt '0'
- end if
- end if
- end process
14Comparador para fechas (III)
- Testbench
- LIBRARY ieee
- USE ieee.std_logic_1164.ALL
- USE ieee.numeric_std.ALL
- ENTITY comp_fecha_comp_fecha_testbench_vhd_tb IS
- END comp_fecha_comp_fecha_testbench_vhd_tb
- ARCHITECTURE behavior OF comp_fecha_comp_fecha_tes
tbench_vhd_tb IS - COMPONENT comp_fecha
- PORT(
- clk IN std_logic
- dia1 IN std_logic_vector(4 downto 0)
- mes1 IN std_logic_vector(3 downto 0)
- fecha IN std_logic_vector(8 downto 0)
- eq OUT std_logic
- uut comp_fecha PORT MAP(
- clk gt clk,
- dia1 gt dia1,
- mes1 gt mes1,
- fecha gt fecha,
- eq gt eq
- )
-
- reloj process
- begin
- clk lt '1'
- wait for 10 ns
- clk lt '0'
- wait for 10 ns
- end process
- -- Test Bench - User Defined Section
- tb PROCESS
- BEGIN
15Simulación funcional (I)
- Resultado de la simulación del comparador para
fechas
16Comparador para horas (I)
- El comparador para horas compara dos horas, en
formato 5 bits para la hora y 6 para los minutos,
ambos en binario, siendo los minutos los 6 bits
de menor peso
17Comparador para horas (II)
- library IEEE
- use IEEE.STD_LOGIC_1164.ALL
- use IEEE.STD_LOGIC_ARITH.ALL
- use IEEE.STD_LOGIC_UNSIGNED.ALL
- -- Uncomment the following lines to use the
declarations that are - -- provided for instantiating Xilinx primitive
components. - --library UNISIM
- --use UNISIM.VComponents.all
- entity comp_hora is
- Port ( clk in std_logic
- hora1 in std_logic_vector(4 downto 0)
- mins1 in std_logic_vector(5 downto
0) - hora in std_logic_vector(10 downto 0)
- eq out std_logic)
- end comp_hora
- architecture Behavioral of comp_hora is
- signal hora2 std_logic_vector(10 downto 0)
- begin
- hora2(10 downto 6) lt hora1
- hora2(5 downto 0) lt mins1
- comparacion process(clk, hora, hora2)
- begin
- if (clk'event and clk '0') then
- if (hora2 hora) then
- eq lt '1'
- else
- eq lt '0'
- end if
- end if
- end process
18Comparador para horas (III)
- Testbench
- LIBRARY ieee
- USE ieee.std_logic_1164.ALL
- USE ieee.numeric_std.ALL
- ENTITY comp_hora_comp_hora_testbench_vhd_tb IS
- END comp_hora_comp_hora_testbench_vhd_tb
- ARCHITECTURE behavior OF comp_hora_comp_hora_testb
ench_vhd_tb IS - COMPONENT comp_hora
- PORT(
- clk IN std_logic
- hora1 IN std_logic_vector(4 downto 0)
- mins1 IN std_logic_vector(5 downto 0)
- hora IN std_logic_vector(10 downto 0)
- eq OUT std_logic
- uut comp_hora PORT MAP(
- clk gt clk,
- hora1 gt hora1,
- mins1 gt mins1,
- hora gt hora,
- eq gt eq
- )
- reloj process
- begin
- clk lt '1'
- wait for 10 ns
- clk lt '0'
- wait for 10 ns
- end process
- -- Test Bench - User Defined Section
- tb PROCESS
19Simulación funcional (II)
- Resultado de la simulación del comparador para
horas
20Memorias (I)
- Las memorias han sido tomadas de la librería de
Xilinx
21Memorias (II)
- Los contenidos de la memoria de horas son
-
- memory_initialization_radix 2
- memory_initialization_vector
- 01000000000
- 01000100000
- 01000000000
- 01001000000
- 00111000000
- 01011000000
- 01000000000
- 01001000000
- fin
- Los contenidos de la memoria de días son
-
- memory_initialization_radix 16
- memory_initialization_vector
- 163
- 166
- 169
- 16C
- fin
22Sistema de control (I)
- El sistema de control recibe las salidas de los 2
comparadores y la señal de reset. Genera como
salidas las señales riego, dirigida al
controlador de riego, y periodo y hora, dirigidas
a la memoria de días y a la de horas,
respectivamente.
23Sistema de control (II)
- El sistema de control utiliza, además, una señal
interna (cambiado), a modo de temporizador, para
aguardar a que el nuevo valor de salida de las
memorias llegue a los comparadores y se
actualicen las salidas de éstos sin cambiar el
estado mientras. - Las señales heqc y feqc nunca se activan al mismo
tiempo si el reloj no hace saltos bruscos. De
todos modos, en caso de activarse ambas a la vez,
el sistema evoluciona hacia el estado que se
alcanzaría si se hubiesen recibido ambas de
manera consecutiva.
24Sistema de control (III).
- Grafo de estados de la unidad de control.
25Sistema de control (IV).
- Descripción en VHDL de la unidad de control.
- library IEEE
- use IEEE.STD_LOGIC_1164.ALL
- use IEEE.STD_LOGIC_ARITH.ALL
- use IEEE.STD_LOGIC_UNSIGNED.ALL
- -- Uncomment the following lines to use the
declarations that are - -- provided for instantiating Xilinx primitive
components. - --library UNISIM
- --use UNISIM.VComponents.all
- entity control is
- Port ( heqc in std_logic
- feqc in std_logic
- clk in std_logic
- reset in std_logic
- riego out std_logic
- periodo out std_logic_vector(1
downto 0)
- architecture Behavioral of control is
- signal activo std_logic
- signal estacion std_logic_vector(1 downto 0)
- signal cambiado std_logic
- begin
- principal process (clk, reset, heqc, feqc)
- begin
- if (reset '1') then
- estacion lt "00"
- activo lt '0'
- cambiado lt '0'
- elsif (clk'event and clk '1') then
- if (heqc '1') and (cambiado '0') then
- activo lt not activo
- end if
- if (feqc '1') and (cambiado '0') then
26Sistema de control (V).
- Testbench.
- LIBRARY ieee
- USE ieee.std_logic_1164.ALL
- USE ieee.numeric_std.ALL
- ENTITY control_control_testbench_vhd_tb IS
- END control_control_testbench_vhd_tb
- ARCHITECTURE behavior OF control_control_testbench
_vhd_tb IS - COMPONENT control
- PORT(
- heqc IN std_logic
- feqc IN std_logic
- clk IN std_logic
- reset IN std_logic
- riego OUT std_logic
- periodo OUT std_logic_vector(1 downto 0)
- hora OUT std_logic_vector(2 downto 0)
- relojprocess
- begin
- clk lt '1'
- wait for 10 ns
- clk lt '0'
- wait for 10 ns
- end process
- -- Test Bench - User Defined Section
- tb PROCESS
- BEGIN
- reset lt '1'
- heqc lt '0'
- feqc lt '0'
- wait for 30 ns
- reset lt '0'
- wait for 20 ns
- heqc lt '1'
- wait for 40 ns
27Simulación funcional (III).
Cambio con hora
Cambio con fecha
28Descripción del sistema completo (I).
29Descripción del sistema completo (II).
- Unidad de control unidad operativa.
30Simulación funcional (IV).
- Sistema completo, puesta en marcha.
31Simulación funcional (V).
- Sistema completo, funcionamiento normal.
32Compilación e implementación.
- Estimación de los recursos lógicos necesarios.
- Selección del circuito (PLD o FPGA) más adecuado.
- Compilación y la implementación.
- Análisis de los resultados obtenidos.
33Estimación de los recursos lógicos (I).
- Estimación de los recursos lógicos necesarios
- 5 registros
- 2 de un bit y uno de 2 bits para el sistema
secuencial de control. - 1 de un bit para cada uno de los dos
comparadores. - Al menos 2 macroceldas de varios bits (una por
comparador) para la Unidad Operativa - 2 memorias RAM para la Unidad Operativa
- Al menos 3 slices para la Unidad de Control
34Estimación de los recursos lógicos (II).
- Estimación del número mínimo de terminales
necesarios. - 1 terminal de salida
- Salida al controlador de riego.
- 20 terminales de entrada genéricos
- 9 entradas para la fecha (4 para el mes, 5 para
el día). - 11 entradas para la hora (6 para los minutos, 5
para la hora) - 2 terminales de entrada específicos
- 1 para la señal de reloj externa CLK.
- 1 para la señal de puesta en estado inicial
(RESET).
35Estimación de los recursos lógicos (III).
- Otras características necesarias
- Se han utilizado memorias específicas de Xilinx,
para mejorar el rendimiento. - La velocidad de proceso puede ser de hasta 66 MHz
con el sistema simple (solo hay que esperar un
período para tener la nueva salida de la memoria
en este caso la generación de cambiado no
requiere contador) pueden obtenerse velocidades
mayores de hasta 227 MHz esperando más períodos. - El sistema funciona para velocidades de reloj
bastante superiores al ciclo por minuto.
36Elección del circuito.
- De lo expuesto se deduce que necesitaremos un
Circuíto con memorias RAM y un mínimo de 30
macroceldas si éstas poseen un único biestable, y
23 terminales. - Una FPGA con memorias RAM puede resultar
adecuado. - Analizando los circuitos de la familia Spartan2E
de Xilinx XILINX, se deduce que el más adecuado
puede ser el XC2S50E-FT256, con encapsulado de
182 terminales y 8 memorias RAM, que contiene 768
Slices.
37Compilación e Implementación.
- Análisis de los resultados de la implementación
del sistema digital. - Conclusiones
- El sistema completo utiliza 11 de los 768 Slices
(1), 6 de los 1536 Slice biestables (0), 19 de
los 1536 LUTs (1), 22 de los 182 terminales
(12), 2 de las 8 RAMs (25) y una señal especial
(CLK) de las 4 (25) de la FPGA elegida, teniendo
espacio suficiente en el mismo para implementar
además el reloj y la fecha, y un sistema de
escritura en las memorias RAM para permitir la
programación del mismo.
38Simulación temporal (I).
- Sistema completo ya implementado, puesta en
marcha.
39Simulación temporal (II).
- Sistema completo ya implementado, funcionamiento
normal.
40Conclusiones finales
- El sistema de control de riego se ha implementado
de acuerdo con las especificaciones. - Su funcionamiento es totalmente correcto.
- El sistema completo utiliza un 1 de las celdas y
un 25 de los recursos adicionales de la
XC2S50E-7FT256. - La máxima frecuencia de reloj a la que el sistema
funciona correctamente es de aproximadamente 66
MHz (15 ns).