1. 2 Objetivos 1.Análise dos resultados da primeira avaliação. Notas importantes para futuro....
-
Upload
nathalie-abreu-back -
Category
Documents
-
view
213 -
download
0
Transcript of 1. 2 Objetivos 1.Análise dos resultados da primeira avaliação. Notas importantes para futuro....
1
Computação Reconfigurável
Aula teórica 7
2
Objetivos1. Análise dos resultados da primeira avaliação.
Notas importantes para futuro.2. Comunicação de placas baseadas em FPGAs
com computador.3. Projetos hierárquicos baseados em blocos.4. Sincronização de componentes de projetos.5. Paralelismo e concorrência em projetos
hierárquicos.
3
Regras para avaliação. 1. No início da aula (primeiros 10-20 minutos) vou explicar
tarefas e vou demostrar o funcionamento do projeto pretendido na placa Nexys-2.
3. Regras e tempo para fazer tarefas são iguais para todos. Por isso os tempos de início e de final vão ser explicitamente indicados. Por exemplo: início 11h15m; final 12h45m.
2. O tempo para avaliação é 1h30m.
4. O tempo de início: X; o tempo de final Y;
5 minutos entre Y e Y+5 minutos – entrega de trabalhos através de e-mail.
Cada 10 minutos extra (-1) na avaliação. Este tempo vai ser determinado através do tempo de recepção da sua mensagem (e-mail).
5. No início da aula vão saber como fazer a avaliação: ou individualmente, ou em grupos.
4
Notas importantes para avaliação1. Numeração de componentes da placa: (MSB downto LSB). MSB - o
componente mais esquerdo da placa, LSB - o componente mais direito da placa
2. E-mail deve ser enviado para [email protected] com indicação da turma e números mecanográficos de alunos (2ª feira: turma 1 (11h-13h); 3ª feira: turma 2 (14h-16h); 3ª feira: turma 3 (16h-18h). Exemplo:
Turma 1 (11h-13h) 22953, 435763. Na primeira linha da sua mensagem deve escrever os nomes.
Exemplo:Miguel Rodrigues, André Ventura
4. Anexo: Os projetos 1 e 2 devem ser compactados num só ficheiro rar ou zip. Cada projeto deve incluir só:
todos os códigos VHDL;ficheiro de implementação (user-constraint file – UCF).bitstream (bit file).
5
Os pesos de cada avaliação e os resultados
1. Avaliação 1: 20%.
2. Avaliação 2: 25%.
3. Avaliação 3: 30%.
4. Os resultados da avaliação vão ser publicados na página de Internet: www.ieeta.pt/~skl durante uma semana, i.e. até à próxima 2ª feira.
6
Comunicação de placas baseadas em FPGAs com computador
Placa com FPGA Computador
Porto externo
Exemplo: USB
Placa com FPGA Computador
Barramento de sistema
Memória partilhada
Hardware de FPGA
Software de uso geral
Paralelismo
7
Comunicação de placas baseadas em FPGAs com computador
Placa com FPGA Computador
Interação direta projeto - software
Memória da placa
FPGA Software de uso geral
com fios
Placa com FPGA Computador
Interação direta projeto - software
sem fios
8
Comunicação de placas baseadas em FPGAs com computador
SAT - covering
Comunicaçãoentre
placas
9
Comunicação de placas baseadas em FPGAs com computador
10
Comunicação de placas baseadas em FPGAs com computador
11
Comunicação de placas baseadas em FPGAs com computador
These pins are displayedon the monitor screen andcan be connected to virtualvisual peripheral devicesalso displayed on themonitor screen
Hidden from end users interfacesenable connection of the relevantphysical FPGA pins to virtual(onscreen) devices
Dialog area
Dialog area
12
Comunicação de placas baseadas em FPGAs com computador
13
Comunicação de placas baseadas em FPGAs com computador
Placa baseada em FPGA
7 0DIP switches
Dividendo de PC
Divisor de PC
Quociente
Resto USB
Adept dialog
window
Dividendo e divisor
Quociente e resto
Exemplo 1: Utilização de dispositivos periféricos virtuais
Exemplo 2: Execução e verificação de algoritmos
14
Comunicação de placas baseadas em FPGAs com computador
component IOExpansion is
port (-- Epp bus signals EppAstb: in std_logic; -- Address strobe EppDstb: in std_logic; -- Data strobe EppWr : in std_logic; -- Port write signal EppDB : inout std_logic_vector(7 downto 0); -- port data bus EppWait: out std_logic; -- Port wait signal-- user signals Led : in std_logic_vector(7 downto 0); -- 8 virtual LEDs on the PC LBar : in std_logic_vector(23 downto 0); -- 24 lights on the PC Sw : out std_logic_vector(15 downto 0); -- 16 switches, bottom row on the PC Btn : out std_logic_vector(15 downto 0); -- 16 Buttons, bottom row on the PC dwOut: out std_logic_vector(31 downto 0); -- 32 Bits user output dwIn : in std_logic_vector(31 downto 0) -- 32 Bits user input );
end component;
15
Comunicação de placas baseadas em FPGAs com computador
component MyDivider isgeneric ( size_of_operands : integer := size_of_operands );port ( clk : in std_logic;
rst : in std_logic;Divident : in std_logic_vector(size_of_operands-1 downto 0);Divisor : in std_logic_vector(size_of_operands-1 downto 0);Quotient : out std_logic_vector(size_of_operands-1 downto 0);Remainder : out std_logic_vector(size_of_operands-1 downto 0);divide_by_zero : out std_logic );
end component;
entity BinToBCD12 isgeneric( size_of_data_to_convert : integer := 14 ); -- valor máximo é 9999 (14 bits) port ( clk : in STD_LOGIC; reset : in STD_LOGIC; ready : out STD_LOGIC; in_data : in STD_LOGIC_VECTOR (size_of_data_to_convert-1 downto 0); BCD3 : out STD_LOGIC_VECTOR (3 downto 0); BCD2 : out STD_LOGIC_VECTOR (3 downto 0); BCD1 : out STD_LOGIC_VECTOR (3 downto 0); BCD0 : out STD_LOGIC_VECTOR (3 downto 0));end BinToBCD12;
16
Comunicação de placas baseadas em FPGAs com computador
NET "clk" LOC = "B8“; NET "BoardButton0" LOC = "B18"; # Button 0
NET "BoardLed0" LOC = "J14"; #NET "BoardDip0" LOC = "G18";
# onBoard USB controllerNET "EppAstb" LOC = "V14"; NET "EppAstb" CLOCK_DEDICATED_ROUTE = FALSE;NET "EppDstb" LOC = "U14"; NET "EppDstb" CLOCK_DEDICATED_ROUTE = FALSE;NET "EppWr" LOC = "V16"; NET "EppWr" CLOCK_DEDICATED_ROUTE = FALSE; NET "EppWait" LOC = "N9"; NET "EppDB<0>" LOC = "R14“;NET "EppDB<1>" LOC = "R13"; NET "EppDB<2>" LOC = "P13"; NET "EppDB<3>" LOC = "T12"; NET "EppDB<4>" LOC = "N11"; NET "EppDB<5>" LOC = "R11"; NET "EppDB<6>" LOC = "P10"; NET "EppDB<7>" LOC = "R10";
17
Comunicação de placas baseadas em FPGAs com computador
library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity Test_Divider isgeneric ( size_of_operands : integer := 32 );Port ( clk : in std_logic;
EppAstb : in std_logic; -- Address strobe EppDstb : in std_logic; -- Data strobe EppWr : in std_logic; -- Port write signal EppDB : inout std_logic_vector(7 downto 0); -- port data bus EppWait : out std_logic; -- Port wait signalBoardLed0 : out std_logic;BoardButton0 : in std_logic;BoardDip0 : in std_logic;BoardDip7 : in std_logic );end Test_Divider;
18
Comunicação de placas baseadas em FPGAs com computador
architecture Behavioral of Test_Divider is
signal MyLed : std_logic_vector(7 downto 0); signal MyLBar : std_logic_vector(23 downto 0); signal MySw : std_logic_vector(15 downto 0); signal MyBtn : std_logic_vector(15 downto 0); signal data_to_PC : std_logic_vector(31 downto 0); signal data_from_PC : std_logic_vector(31 downto 0);
signal Q : std_logic_vector(size_of_operands-1 downto 0);signal R : std_logic_vector(size_of_operands-1 downto 0);signal divide_by_zero : std_logic;
signal Divident, Divisor : std_logic_vector(size_of_operands-1 downto 0);
begin
BoardLed0 <= divide_by_zero;MyLBar <= MySw & MyBtn(15 downto 8);MyLed <= MyBtn(7 downto 0);
19
Comunicação de placas baseadas em FPGAs com computador
process (clk)beginif rising_edge(clk) then
if BoardDip7 = '0' then Divident <= data_from_PC;else Divisor <= data_from_PC;end if;if BoardDip0 = '0' then data_to_PC <= Q;else data_to_PC <= R;end if;
end if;end process;
IO_interface : entity work.IOExpansionport map(EppAstb,EppDstb,EppWr,EppDB,EppWait,
MyLed,MyLBar,MySw,MyBtn,data_from_PC,data_to_PC);Divider : entity work.MyDivider
generic map(size_of_operands=>size_of_operands) port map (clk, BoardButton0,Divident,Divisor,Q,R,divide_by_zero);
end Behavioral;
20
Tarefas para aulas práticas
1. Implementar tarefas de avaliação utilizando componentes do computador: interruptores, botões, LEDs e light bars em vez de displays da placa.
2. Entrar valores binários a partir do computador e mostrar os dígitos em sistema décimal (normal) nos displays de segmentos da placa. Utilizar conversor do código binário para BCD.
21
Tarefas para aulas práticasarchitecture Behavioral of RecursiveSortingWithOnBoardDisplays issignal ready,rst : std_logic;signal C_S,N_S : std_logic := '0';beginBinToBCD: entity work.BinToBCD12 -- max value of data item is 9999 and max size is 14
generic map ( size_of_data_to_convert => size_of_data ) port map ( clk,rst,ready,memory,BCD3,BCD2,BCD1,BCD0);
C_S <= N_S when rising_edge(clk);process (clk)beginif falling_edge(clk) then rst <= '0';
if reset = '1' then N_S<= '0'; rst <= '1';else case C_S is
when '0' => rst <= '1'; if ready = '0' then N_S <= '1'; else N_S <= '0'; end if;
when '1' => if ready = '1' then N_S <= '0'; left <= BCD3; near_left <= BCD2;near_right <= BCD1; right <= BCD0;
else N_S <= '1'; end if;
when others => N_S <= '0'; end case;
end if;end if;end process;end Behavioral;
22
Projectos hierárquicos baseados em blocos
Binário BCD Divisão
Controlo de displays
descodificador de segmentos
divisor de frequência Utilização dum botão (clock)
a
b
23
Sincronização de componentes de projetos
Binário BCD
Fornecer dados
Receber o resultadoDivisão
24
Sincronização de componentes de projetos
Placa baseada em FPGA
7 0DIP switches
Dividendo de PC
Divisor de PC
Quociente
Resto USB
Adept dialog
window
Dividendo e divisor
Quociente e resto
Sincronização
25
Paralelismo e concorrência em projetos hierárquicos
Placa baseada em FPGA
7 0DIP switches
Dividendo de PC
Divisor de PC
Quociente
Resto USB
Adept dialog
window
Dividendo e divisor
Quociente e resto
Sincronização
Binário BCD
Divisão
Controlo de displays
Ordenação de dados
Todos os blocos dum projeto funcionam em
paralelo
Os blocos podem funcionar em
tempos diferentes