1 / 25

Computação Reconfigurável

Computação Reconfigurável. Aula teórica 7. Objetivos. Análise dos resultados da primeira avaliação. Notas importantes para futuro. Comunicação de placas baseadas em FPGAs com computador. Projetos hierárquicos baseados em blocos. Sincronização de componentes de projetos.

blair-gibbs
Download Presentation

Computação Reconfigurável

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Computação Reconfigurável Aula teórica 7

  2. Objetivos • Análise dos resultados da primeira avaliação. Notas importantes para futuro. • Comunicação de placas baseadas em FPGAs com computador. • Projetos hierárquicos baseados em blocos. • Sincronização de componentes de projetos. • Paralelismo e concorrência em projetos hierárquicos.

  3. Regras para avaliação. No início da aula (primeiros 10-20 minutos) vou explicar tarefas e vou demostrar o funcionamento do projeto pretendido na placa Nexys-2. 2. O tempo para avaliação é 1h30m. 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. 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ção Numeração de componentes da placa: (MSB downto LSB). MSB - o componente mais esquerdo da placa, LSB - o componente mais direito da placa • E-mail deve ser enviado para skl@ua.pt com indicaçãodaturma 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, 43576 • Na primeira linha da sua mensagem deve escrever os nomes. Exemplo: • Miguel Rodrigues, André Ventura • 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 Avaliação 1: 20%. Avaliação 2: 25%. 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 Porto externo Placa com FPGA Computador Exemplo: USB Barramento de sistema Placa com FPGA Computador Software de uso geral Paralelismo Hardware de FPGA Memória partilhada

  7. Comunicação de placas baseadas em FPGAs com computador Interação direta Interação direta Placa com FPGA Placa com FPGA Computador Computador projeto - software projeto - software com fios sem fios FPGA Software de uso geral Memória da placa

  8. Comunicação de placas baseadas em FPGAs com computador SAT - covering Comunicação entre 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

  12. Comunicação de placas baseadas em FPGAs com computador

  13. Comunicação de placas baseadas em FPGAs com computador Divisor de PC Placabaseadaem FPGA Resto Exemplo 1: Utilização de dispositivos periféricos virtuais 7 0 DIP switches Quociente Dividendo de PC Exemplo 2: Execução e verificação de algoritmos Dividendo e divisor Adept dialog window USB Quociente e resto

  14. Comunicação de placas baseadas em FPGAs com computador componentIOExpansionis port( -- Epp bus signals EppAstb: instd_logic; -- Address strobe EppDstb: instd_logic; -- Data strobe EppWr : instd_logic; -- Port write signal EppDB : inoutstd_logic_vector(7 downto 0); -- port data bus EppWait: outstd_logic; -- Port wait signal -- user signals Led : instd_logic_vector(7 downto 0); -- 8 virtual LEDs on the PC LBar : instd_logic_vector(23 downto 0); -- 24 lights on the PC Sw : outstd_logic_vector(15 downto 0); -- 16 switches, bottom row on the PC Btn : outstd_logic_vector(15 downto 0); -- 16 Buttons, bottom row on the PC dwOut: outstd_logic_vector(31 downto 0); -- 32 Bits user output dwIn : instd_logic_vector(31 downto 0) -- 32 Bits user input ); endcomponent;

  15. Comunicação de placas baseadas em FPGAs com computador componentMyDivideris generic( size_of_operands : integer := size_of_operands ); port (clk: instd_logic; rst: instd_logic; Divident : instd_logic_vector(size_of_operands-1 downto 0); Divisor: instd_logic_vector(size_of_operands-1 downto 0); Quotient: outstd_logic_vector(size_of_operands-1 downto 0); Remainder: outstd_logic_vector(size_of_operands-1 downto 0); divide_by_zero : outstd_logic); endcomponent; entity BinToBCD12 is generic( 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 controller NET "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; entityTest_Divideris generic ( size_of_operands : integer := 32 ); Port( clk: instd_logic; EppAstb: instd_logic; -- Address strobe EppDstb: instd_logic; -- Data strobe EppWr: instd_logic; -- Port write signal EppDB: inoutstd_logic_vector(7 downto 0); -- port data bus EppWait: outstd_logic; -- Port wait signal BoardLed0 : outstd_logic; BoardButton0: instd_logic; BoardDip0 : instd_logic; BoardDip7 : instd_logic ); endTest_Divider;

  18. Comunicação de placas baseadas em FPGAs com computador architecture Behavioral of Test_Divider is signalMyLed : std_logic_vector(7 downto 0); signalMyLBar : std_logic_vector(23 downto 0); signalMySw : std_logic_vector(15 downto 0); signalMyBtn : std_logic_vector(15 downto 0); signaldata_to_PC : std_logic_vector(31 downto 0); signaldata_from_PC : std_logic_vector(31 downto 0); signalQ: std_logic_vector(size_of_operands-1 downto 0); signalR : std_logic_vector(size_of_operands-1 downto 0); signaldivide_by_zero : std_logic; signalDivident, 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) begin ifrising_edge(clk) then if BoardDip7 = '0' thenDivident <= data_from_PC; else Divisor <= data_from_PC; endif; if BoardDip0 = '0' thendata_to_PC <= Q; elsedata_to_PC <= R; endif; endif; endprocess; IO_interface : entitywork.IOExpansion portmap(EppAstb,EppDstb,EppWr,EppDB,EppWait, MyLed,MyLBar,MySw,MyBtn,data_from_PC,data_to_PC); Divider : entitywork.MyDivider genericmap(size_of_operands=>size_of_operands) portmap (clk, BoardButton0,Divident,Divisor,Q,R,divide_by_zero); end Behavioral;

  20. Tarefas para aulas práticas Implementar tarefas de avaliação utilizando componentes do computador: interruptores, botões, LEDs e light bars em vez de displays da placa. 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áticas architecture Behavioral ofRecursiveSortingWithOnBoardDisplaysis signalready,rst: std_logic; signal C_S,N_S : std_logic := '0'; begin BinToBCD: entitywork.BinToBCD12 -- max value of data item is 9999 and max size is 14 genericmap ( size_of_data_to_convert => size_of_data ) port map ( clk,rst,ready,memory,BCD3,BCD2,BCD1,BCD0); C_S<= N_Swhenrising_edge(clk); process (clk) begin iffalling_edge(clk) then rst<= '0'; if reset = '1' then N_S<= '0'; rst <= '1'; elsecaseC_S is when '0' => rst<= '1'; ifready = '0' then N_S <= '1'; else N_S <= '0'; endif; when '1' => if ready = '1' then N_S <= '0'; left <= BCD3; near_left <= BCD2; near_right<= BCD1; right <= BCD0; elseN_S <= '1'; endif; whenothers => N_S <= '0'; endcase; endif; endif; endprocess; endBehavioral;

  22. Projectos hierárquicos baseados em blocos descodificador de segmentos Utilização dum botão (clock) Binário  BCD divisor de frequência Divisão Controlo de displays a b

  23. Sincronização de componentes de projetos Binário  BCD Divisão Fornecer dados Receber o resultado

  24. Sincronização de componentes de projetos Divisor de PC Placabaseadaem FPGA Resto 7 0 DIP switches Sincronização Quociente Dividendo de PC Dividendo e divisor Adept dialog window USB Quociente e resto

  25. Paralelismo e concorrência em projetos hierárquicos Divisor de PC Placabaseadaem FPGA Todos os blocos dum projeto funcionam em paralelo Os blocos podem funcionar em tempos diferentes Resto 7 0 DIP switches Sincronização Binário  BCD Divisão Quociente Dividendo e divisor Dividendo de PC Ordenação de dados Controlo de displays Adept dialog window USB Quociente e resto

More Related