340 likes | 431 Views
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:
E N D
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: • 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
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
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
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
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)
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
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
Circuito Sequencial • Exemplo da chamada de avião • Criação da Tabela de Estados
Circuito Sequencial • Exemplo da chamada de avião • Criação da Tabela de Estados
Circuito Sequencial • Exemplo da chamada de avião • Criação da Tabela de Estados • Implementação • Lógica Combinacional: • n0 = s0xorpb • led = s0
Circuito Sequencial • Exemplo da chamada de avião • Implementação • Lógica Combinacional: • n0 = s0xorpb • led = s0
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)
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
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
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
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 ...
Registrando 1 bit (VHDL) Sinal Controle NÍVEL Alto C
Flip-Flop X Latch (VHDL) Comparação BORDA de Subida CLK síncrono D?
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
Reset (VHDL) ASSÍNCRONO x SÍNCRONO ASSÍNCRONO Q <= ‘0’ imediatamente SÍNCRONO Q <= ‘0’ após síncrono assíncrono RST?
ClockEnable (CE) ASSÍNCRONO Q <= ‘0’ imediatamente SÍNCRONO Q <= ‘0’ após
Sinais de Controle (RST e CE) • RESET • Definição de um estado inicial da FSM • ClockEnable • Simplificação do Circuito
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
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
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
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
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’
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
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
Debouncer VHDL • ISE Edit LenguageTemplates... VHDL SynthesisConstructs CodingExamples Misc DebounceCircuit • VHDL:
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 =>;
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”;