The second part is exposed at http://www.scribd.com/doc/42382949 . The experiment describes how the gravity force can be modified in a limited spacial region. Document updated.Descripción completa
VIBRACIONES MECANICASDescripción completa
Descripción completa
Primera parte del libro de Paul Lowe
Experimento de los tenedores equilibristas.Descripción completa
EXPERIMENTODescripción completa
b
Fisica 1, Laboratorio 1 EXP2
Descripción completa
EXPERIMENTO 5
Descripción completa
Descripción: triptico
Descripción completa
Descripción completa
Linterna Casera
SSADescripción completa
Descripción: FISICA
Experiência 01 Decodificador Alarme André Luis Gomes Magalhães 09/0106016 Faculdade UnB Gama Universidade de Brasília - UnB Brasília, Brasil Sistemas Digitais 02
I.
OBJETIVOS Implementar em FPGA um circuito codificador e um decodificador para ser usado com um alarme residencial que possua sensores em diversas zonas da residência a fim intro introdu duzi zir-s r-see as técn técnic icas as e proc proces esso soss envo envolv lvid idos os na elaboração de projetos usando a ferramenta Xilinx. II. INTRODUÇÃO TEÓRICA VHDL-Very Hight Speed Integrated Circuit Hardware Description Language (Linguagem de Descrição de Hardware com ênfase em Circuitos Integrados de altíssima velocidade. É uma linguagem de descrição de hardware que descreve modelos de sistemas hardwares, que executados em um software chamado simulador e pode ser implementado em um dispositivo programável (FPGA Field Program Gate Array), permitindo assim o uso em campo do seu sistema, tendo a grande vantagem da alteração do código a qualquer momento.
COMPONENTES DE UM PROJETO VHDL A estrutura de um programa VHDL, baseia-se em 4 blocos: PACKAGE são declarados as constantes, tipos de dados, sub-programas; ENTITY declaração dos pinos de entrada e saída; ARCHITECTURE define as implementações do projeto; CONFIGURATION define as arquiteturas que serão utilizadas. III. ESPECIFICAÇÃO DO PROJETO O sistema é recebe sinais de oito sensores e mostram no display do FPGA a zona referente ao setor violado e um sinal “valid” que informa que houve violação. IV. IMPLEMENTAÇÃO O circuito divide-se em dois blocos:
Possuem várias vantagens tais como: Intercâmbio de projetos entre grupos de pesquisa sem a necessidade de alteração; Permite ao projetista considerar no seu projeto os delays comuns aos circuitos digitais; O custo de produção de um circuito dedicado é elevado, enquanto que usando VHDL e Dispositivos Programáveis o custo é muito menor; Quanto as desvantagens, apenas uma é relevante: • VHDL não gera um hardware otimizado;
CODIFICADOR: (“decodificador”) Possui oito entradas que sinalizam com sinal ‘1’(HIGH) a zona violada e codifica para um número de base 2 enviado para seu barramento barramento de saída de 3 bits, e a saída “valid” que indica com ‘1’(HIGH) quando algum sensor é acionado desligando um led ponto no display. DECODIFICADOR: (“alarme”) Possui barramento de entrada de 3 bits proveniente do Bloco “decodificador” e mostra no display do FPGA o número referente à zona invadida. Recebe o número de base dois e converte em
pulsos ‘0’(LOW) no barramento de saída de 7 bits referentes a posição do segmento a ser ligado do display de sete segmentos. TEST BENCH Simulou-se os sinais de entradas a fim verificar-se as respostas das entradas referentes às zonas de 0 a 8 nas no barramento de saída do bloco “decodificador”.
V. PROTOTIPAÇÃO Criou-se o arquivo UCF para definição dos pinos do FPGA que seriam usados pelo projeto. Saidas: Barramento de 6 Bits em Display 7 seg FPGA: NET zof<0> LOC="E14"; NET zof<1> LOC="G13"; NET zof<2> LOC="N15"; NET zof<3> LOC="P15"; NET zof<4> LOC="R16"; NET zof<5> LOC="F13"; NET zof<6> LOC="N16"; Saida “validf” para o LED ponto do display: NET validf LOC="P16"; Entradas: Barramento de 8 bits do sensores em chaves da FPGA: NET zonaf<0> LOC="F12"; NET zonaf<1> LOC="G12"; NET zonaf<2> LOC="H14"; NET zonaf<3> LOC="H13"; NET zonaf<4> LOC="J14"; NET zonaf<5> LOC="J13"; NET zonaf<6> LOC="K14"; NET zonaf<7> LOC="K13"; Após realizar-se a síntese do projeto através da ferramenta Xilinx, implementou-se o projeto no FPGA. Com o FPGA carregado com o circuito testou-se as combinações de entrada acionando cada uma das 8 chaves que simulam os sensores verificando as respostas no display. Após os testes práticos na FPGA verificou-se que o sistema funcionou como previsto em projeto.
VI. CONCLUSÃO O uso de FPGA pra implementar circuitos lógicos mostrou-se muito eficaz para a aplicação do problema proposto em roteiro. Por ser uma linguagem com nível de abstração alto, projetar circuitos lógicos por VHDL é consideravelmente mais eficiente e prático que a nível de portas lógicas. O circuito respondeu aos estímulos de entradas conforme o esperado.
ANEXOS Código VHDL:
DECODIFICADOR
entity decodificador is Port ( zona : in STD_LOGIC_VECTOR (7 downto 0); zo : out STD_LOGIC_VECTOR (2 downto 0); valid : out STD_LOGIC); end decodificador; architecture Behavioral of decodificador is begin zo <= "000" when zona(0) = '1' else "001" when zona(1) = '1' else "010" when zona(2) = '1' else "011" when zona(3) = '1' else "100" when zona(4) = '1' else "101" when zona(5) = '1' else "110" when zona(6) = '1' else "111" when zona(7) = '1' else "000"; valid <= not(zona(0) or
zona(1) or zona(2) or zona(3) or zona(4) or zona(5) or zona(6) or zona(7));
end Behavioral; ALARME
entity alarme is Port ( zin : in STD_LOGIC_VECTOR (2 downto 0); display : out STD_LOGIC_VECTOR (6 downto 0)); end alarme;
architecture Behavioral of alarme is
begin
display <= "1111001" when zin = "000" else "0100100" when zin = "001" else "0110000" when zin = "010" else "1111001" when zin = "011" else "0010010" when zin = "100" else "0000010" when zin = "101" else "1011000" when zin = "110" else "0000000" when zin = "111" else "1111111";
end Behavioral;
TOP MODULE
entity alarmefinal is Port ( zonaf : in STD_LOGIC_VECTOR (7 downto 0); zof : out STD_LOGIC_VECTOR (6 downto 0); validf : out STD_LOGIC); end alarmefinal;
architecture Behavioral of alarmefinal is
signal sinin : STD_LOGIC_VECTOR (2 downto 0);
component decodificador is Port ( zona : in STD_LOGIC_VECTOR (7 downto 0); zo : out STD_LOGIC_VECTOR (2 downto 0); valid : out STD_LOGIC); end component;
component alarme is Port ( zin : in STD_LOGIC_VECTOR (2 downto 0); display : out STD_LOGIC_VECTOR (6 downto 0));
end component;
begin
u1: decodificador port map (zonaf, sinin, validf); u2: alarme port map ( sinin, zof);