1 / 34

Engenharia de Software para Computação Embarcada

Engenharia de Software para Computação Embarcada. Prof. Frederico Ferlini Aula 11. CONTEÚDO. Circuitos Sequenciais Definição Representação Máquina de Estados (FSM) Construção de FSMs Passo a Passo Exemplos VHDL. Circuito Sequencial. Definição:

tamarr
Télécharger la présentation

Engenharia de Software para Computação Embarcada

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. Engenharia de Software para Computação Embarcada Prof. Frederico Ferlini Aula 11

  2. CONTEÚDO • Circuitos Sequenciais • Definição • Representação • Máquina de Estados (FSM) • Construção de FSMs • Passo a Passo • Exemplos • VHDL

  3. Circuito Sequencial • Definição: • Circuito, cujo comportamento das saídas não dependem somente do valor atualdas entradas, mas também do histórico anterior das entradas COMBINACIONAL SEQUENCIAL

  4. Circuito Sequencial • Circuito Sequencial = Combinacional + Memória • Combinacional: • Recebe as entradas do circuito e a saída da memória (estado atual) e gera as saídas e calcula o próximo estado do circuito • Memória: • Armazena o próximo estado • Sinais de controle: • Sinal de sincronismo: clock • Inicialização: set, reset, clear • Habilitador: enable

  5. Circuito Sequencial (Representação) clk ^ x=0 x=1 O ff On clk ^ • Máquina de Estados Finita(FSM) • Estado é toda informação armazenadapelo circuito em um determinado momento, e muda dado certa condição ou evento • Exemplo “Pisca LED” • Inverte o estado a todo pulso de clk DIAGRAMA DE ESTADOS

  6. Circuito Sequencial Outputs: x clk ^ x=0 x=1 O ff On clk ^ • Tipos de FSM • Moore: saídas dependem • somente do estado atual • Mealy: saídas dependem do estado • atual e do valor presente das entradas

  7. Circuito Sequencial • Máquina de Estados Finita(FSM) • Arquitetura Geral • I – Entradas da FSM • O – Saídas da FSM • S – Estado Atual da FSM (state) • N – Próximo Estado da FSM (next-state) • m – tamanho do registrados (bits)

  8. Circuito Sequencial Call button Blue light Bit Storage Blue light Call button Bit Storage 2. Call button released – light stays on Call button Blue light Bit Storage 3. Call button pressed – light turns off • Exemplo da chamada de avião • Especificação da FSM • Estados: On/Off • 2 estados • Registrador de 1bit • Entrada: botão (pb) • Saída: luz (led) • Controle: • Sinal de sincronismo: (clk) • Sinal de inicialização: (rst) 1. Call button pressed – light turns on

  9. FSM (Passo a Passo) • Exemplo da chamada de avião • Definição da FSM • Nome dos estados • Numeração • (‘0’ = Off / ‘1’ = On) • Esboço da Arquitetura • Sinais de I/O da FSM • Tamanho do registrador • Sinais de controle simplificação

  10. Circuito Sequencial • Exemplo da chamada de avião • Criação da Tabela de Estados

  11. Circuito Sequencial • Exemplo da chamada de avião • Criação da Tabela de Estados

  12. Circuito Sequencial • Exemplo da chamada de avião • Criação da Tabela de Estados • Implementação • Lógica Combinacional: • n0 = s0xorpb • led = s0

  13. Circuito Sequencial • Exemplo da chamada de avião • Implementação • Lógica Combinacional: • n0 = s0xorpb • led = s0

  14. Armazenamento do estado • Comparação • Flip-Flop D • Sensível a BORDA do sinal de controle (clock) • Latch D • Sensível a NÍVEL do sinal de controle (lógica)

  15. Armazenamento do estado • Comparação • Flip-Flop D • Sensível a BORDA do sinal de controle (clock) • Latch D • Sensível a NÍVEL do sinal de controle (lógica) timing

  16. Flip-Flop Xilinx (Spartan 3) • Os Flip-Flops encontrados nos FPGAs da Xilinx são do tipo D (FF_D) • Sinais de Controle: • CLOCK (CLK) • Sensível a BORDA de  ou  • CLOCK ENABLE (CE) • Impede que Q altere mesmo na ocorrência de BORDA do clock • SET • Assíncrono: Q recebe 1 instantaneamente • Síncrono: Q recebe 1 na próxima BORDA do clock • RESET (RST) • Assíncrono: Q recebe 0 instantaneamente • Síncrono: Q recebe 0 na próxima BORDA do clock

  17. Sinal de Relógio (clock) • SPARTAN-3 • Sinal de Relógio (Clock): • Frequência: 50 Mhz • Período : 20 ns • Mudar o testbench! (Padrão: 10ns = 100Mhz) BORDA de Subida NÍVEL Alto Período (T) Freq. 1/T 50% Duty Cycle BORDA de Descida NÍVEL Baixo

  18. PROCESS em VHDL • Como dizer para ferramenta de síntese implementar um FF? • R: PROCESS • Ex.: FullAdder(Combinacional) • Sintaxe VHDL • Lista de Sensitividade • Entradas do circuito • Condicional: • if/else , case ...

  19. Registrando 1 bit (VHDL) Sinal Controle NÍVEL Alto C

  20. Flip-Flop X Latch (VHDL) Comparação BORDA de Subida CLK síncrono D?

  21. Flip-Flop Xilinx (Spartan 3) • Os Flip-Flops encontrados nos FPGAs da Xilinx são do tipo D (FF_D) • Sinais de Controle: • CLOCK (CLK) • Sensível a BORDA de  ou  • CLOCK ENABLE (CE) • Impede que Q altere mesmo na ocorrência de BORDA do clock • SET • Assíncrono: Q recebe 1 instantaneamente • Síncrono: Q recebe 1 na próxima BORDA do clock • RESET (RST) • Assíncrono: Q recebe 0 instantaneamente • Síncrono: Q recebe 0 na próxima BORDA do clock

  22. Reset (VHDL) ASSÍNCRONO x SÍNCRONO ASSÍNCRONO Q <= ‘0’ imediatamente SÍNCRONO Q <= ‘0’ após  síncrono assíncrono RST?

  23. ClockEnable (CE) ASSÍNCRONO Q <= ‘0’ imediatamente SÍNCRONO Q <= ‘0’ após 

  24. Sinais de Controle (RST e CE) • RESET • Definição de um estado inicial da FSM • ClockEnable • Simplificação do Circuito

  25. Exemplo: 3-CyclesHigh Laser Timer Inputs: b; Outputs: x x=0 Off b ’ b x=1 x=1 x=1 On1 On2 On3 • Quando b apertado, o laser (x)fica ligado por 3 ciclos • Quatro estados • Sinal de entrada: b • Quando b = 1 e ocorre uma borda de subida do clock então o estado sai de OFF para ON1 • Quando nos estados ON1, ON2 e ON3 a saída (x) é colocada em nível alto • Logo, a saída (x) fica em ‘1’ durante 3 ciclos

  26. Exemplo: 3-CyclesHigh Laser Timer FSM inputs x b FSM outputs Combinational logic n1 n0 s1 s0 State register clk Inputs: b; Outputs: x • Step 1: Capture the FSM • Already done • Encode the States • Step 2: Create architecture • 2-bit state register (for 4 states) • Input b, output x • Next state signals n1, n0 x=0 00 b ’ O ff a b x=1 x=1 x=1 01 On1 10 On2 11 On3 a

  27. Exemplo: 3-CyclesHigh Laser Timer • Step 3: Create state table Inputs: b; Outputs: x x=0 00 b ’ O ff a b x=1 x=1 x=1 01 On1 10 On2 11 On3

  28. Exemplo: 3-CyclesHigh Laser Timer x = s1 + s0(note from the table that x=1 if s1 = 1 or s0 = 1) n1 = s1’s0b’ + s1’s0b + s1s0’b’ + s1s0’b n1 = s1’s0 + s1s0’ n0 = s1’s0’b + s1s0’b’ + s1s0’b n0 = s1’s0’b + s1s0’ • Step 4: Implement combinational logic a

  29. Exemplo: 3-CyclesHigh Laser Timer Combinational Logic b x n1 n0 s0 s1 State register clk • Step 4: Implement combinational logic (cont) a FSM inputs x = s1 + s0 n1 = s1’s0 + s1s0’ n0 = s1’s0’b + s1s0’

  30. Prototipação (Problema) • Frequência do clockmuito alta (50Mhz) • Uso de um pb ao invés do sinal de clock? • Problema: Uso de um sinal indevido aonde deveria ter um clk

  31. Prototipação (Problema) • Frequência do clockmuito alta (50Mhz) • Uso de um pb ao invés do sinal de clock? • Problema: Uso de um sinal indevido na • DEBOUNCE! OK! • Gera um pulso com tamanho de um ciclo de relógio en

  32. Debouncer VHDL • ISE  Edit  LenguageTemplates...  VHDL  SynthesisConstructs  CodingExamples  Misc  DebounceCircuit • VHDL:

  33. FSM (VHDL) • Ex.: Chamada de Avião • FSM: • 3 processos: • Registrador de estado • Lógica próximo estado • Lógica saída • Sempre utilizar: • whenothers =>;

  34. Atividade • Implementem: • 4-CyclesHigh Laser Timer • Entrada: • clk = clk50_i • rst = pb_i(0) • en = pb_i(3) [debounced] • b = sw_i(0) • Saídas: led_o(2 downto 0) • Os leds ascendem de acordo com o número do ciclo de laser_on • Quando b é acionados o laser deve ficar aceso por 4 ciclos e os leds devem acender de acordo com o número do ciclo: • Ex.: no segundo terceiro ciclo em laser estiver ligado: • led_o(2 downto 0) <= “011”;

More Related