A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Copyright (c) 2003 by Valery Sklyarov and Iouliia Skliarova: DETUA, IEETA, Aveiro University, Portugal.

Apresentações semelhantes


Apresentação em tema: "Copyright (c) 2003 by Valery Sklyarov and Iouliia Skliarova: DETUA, IEETA, Aveiro University, Portugal."— Transcrição da apresentação:

1 Copyright (c) 2003 by Valery Sklyarov and Iouliia Skliarova: DETUA, IEETA, Aveiro University, Portugal

2 CPLD XC9572XL DIP botões LEDs A(2:1) D(7:0) Read/WriteChip select S 1...S 8 L 1 L 2 L 3 L 4 B4B4 B1B1 M10,T10 P16,L16,L13,J14,G15,F14,E15,B16 M16 M15 Exemplo 2. Projecto que demonstra a interacção com os dispositivos externos assim como botões, interruptores e LEDs. O circuito será desenvolvido com base em placa de protótipo TE-XC2Se disponível da Trenz Electronic que contém uma FPGA XC2S300E-6-FT Estado dos interruptores Estado dos botões Dados para LEDs

3 entity led_but_sw is Port (clk : in std_logic; -- relógio 48 MHz rst : in std_logic; -- reset cpld_rw : inout std_logic; -- cpld read/write cpld_cs : out std_logic; -- cpld chip select a : out std_logic_vector(2 downto 1); -- a – endereço d : inoutstd_logic_vector(7 downto 0)); -- d – dados end led_but_sw; architecture Behavioral of led_but_sw is signal state : std_logic_vector(3 downto 0); signal lled : std_logic_vector(7 downto 0); signal lpb : std_logic_vector(7 downto 0); signal dipswitch : std_logic_vector(7 downto 0); begin

4 process(clk, rst) – processo que descreve a sequência dos estados begin if rst= '0' then state '0'); -- state = 00…0 elsif rising_edge(clk) then state<= state + 1; -- incrementar o estado end if; end process; process(clk, rst) – processo que descreve a interacção com o CPLD begin if rst= '0' then cpld_cs <= '1'; elsif (clk='0' and clk'event) then

5 case state is -- endereço 00 – ler o estado dos botões when "0000"=> a<= "00"; cpld_cs <= '1'; --passivo cpld_rw <= '1'; --ler when "0001"=> cpld_cs <= '0'; --activo when "0010"=> lpb <= d;-- dados provenientes dos botões when "0011"=> cpld_cs <= '1'; --passivo -- endereço 10 – escrever os LEDs when "0100"=> a <= "10"; cpld_rw <= '0';--escrever when "0101"=> cpld_cs <= '0'; --activo when "0110"=> cpld_cs <= '1'; --passivo -- endereço 01 – ler o estado dos interruptores when "0111"=> a <= "01"; cpld_cs <= '1'; --passivo cpld_rw <= '1'; --ler when "1000"=> cpld_cs <= '0'; --activo when "1001"=> dipswitch <= d; -- dados dos interruptores when "1010"=> cpld_cs <= '1'; --passivo when others => cpld_cs <= '1'; --passivo end case;

6 lled <= dipswitch; -- copiar o estado dos interruptores para os LEDs if (dipswitch(7)='1') then lled(3 downto 0)<= not lpb(3 downto 0); else null; end if; end if; -- S7=0 - o estado dos interruptores é copiado para os LEDs end process;-- S7=1 - o estado dos botões é copiado para os LEDs process (lled,cpld_rw) -- copiar o sinal lled para o CPLD begin if (cpld_rw='0') then -- se o sinal de escrita for activo d <= lled; else d <= "ZZZZZZZZ"; -- alta impedância end if; end process; end Behavioral;

7 NET "clk" TNM_NET = "clk"; TIMESPEC "TS_clk" = PERIOD "clk" 48 MHz HIGH 50 %; NET "rst" LOC = "P15" ;# LED individual NET "d " LOC = "P16" ; NET "d " LOC = "L16" ; NET "d " LOC = "L13" ; NET "d " LOC = "J14" ; NET "d " LOC = "G15" ; NET "d " LOC = "F14" ; NET "d " LOC = "E15" ; NET "d " LOC = "B16" ; NET "cpld_rw" LOC = "M15" ; NET "cpld_cs" LOC = "M16" ; NET "clk" LOC = "T9" ; NET "a " LOC = "M10" ; NET "a " LOC = "T10" ; CPLD XC9572XL A(2:1) D(7:0) Read/WriteChip select P16,L16, L13,J14, G15,F14, E15,B16 M16 M15 M10,T10 48 MHz

8


Carregar ppt "Copyright (c) 2003 by Valery Sklyarov and Iouliia Skliarova: DETUA, IEETA, Aveiro University, Portugal."

Apresentações semelhantes


Anúncios Google