--------------------------------------------------------------- -- PROJETO FPGA PARA TODOS -- -- Comunicação Serial - RS232 (testbench) -- -- O testbench da comunicação serial nada mais e do que atribuir um valor de 8 bits na entrada e -- enviar uma requisição de envio. Como o projeto é síncrono, também é necessário a implementação -- da rotina de clock. -- -- Entradas: dado, Clock, Reset, solicitação do envio de dados. -- Saídas: Palavra de 4 bits correspondente ao caracter pressionado -- -- Autores: Professor Edson Melo -- João Marcos de Aguiar -- -- Setembro de 2011. -- -- Para mais informações, acesse: 200.10.18.52/Portal -- ------------------------------------------------------------------------------ library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity tb_envia_serial is end entity tb_envia_serial; architecture testes of tb_envia_serial is -- Sinais para interfaceamento com a UUT: signal clock, resetn : std_logic; signal dado : std_logic_vector (7 downto 0); signal sendn, txd, busy : std_logic; begin UUT: entity work.envia_serial port map ( clock, resetn, dado, sendn, txd, busy ); Gera_Clock: process begin -- simulação do pressionamento do botão de reset. resetn <= '0' after 0 ms, '1' after 1 ms, '0' after 15 ms; clock <= '0'; wait for 1 ms; -- rotina de geração de clock while resetn = '1' loop clock <= not clock; wait for 20833 ps; end loop; wait; end process; Envia_dados: process begin -- Na partida, coloca-se um dado e faz sendn = '1' dado <= x"AA"; sendn <= '1'; -- Espera um tempo e envia o dado AA (10101010) wait for 2 ms; sendn <= '0'; wait for 500 ns; sendn <= '1'; -- Espera um tempo e envia o dado 55 (01010101) wait for 2 ms; dado <= x"55"; sendn <= '0'; wait for 500 ns; sendn <= '1'; -- Espera um tempo e envia o dado 00 (00000000) wait for 2 ms; dado <= x"00"; sendn <= '0'; wait for 500 ns; sendn <= '1'; -- Espera um tempo e envia o dado FF(11111111) wait for 2 ms; dado <= x"FF"; sendn <= '0'; wait for 500 ns; -- Rotina para o teste do estado espera, com dado AC(10101100). -- Note que a variavel sendn continua em zero. wait for 2 ms; dado <= x"AC"; wait for 500 ns; sendn <= '1'; wait for 5 ms; wait; end process; end architecture testes;