SystemVerilog: Síntese de Lógica combinatória Função lógica combinatória pode ser representada como: logic_output(t) = f(logic_inputs(t)) Regras Evite.

Slides:



Advertisements
Apresentações semelhantes
1 Hardware Description Language (HDL) Para quê precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital Concorrência.
Advertisements

Do DRIP ao DRIP RTR Ivan Saraiva Silva. DRIP - Dynamically Reconfigurable Image Processor Baseado no processador de vizinhança NP9 Processador matricial.
Modelos de Programação matemática
Lógica booleana e implementação de funções booleanas
Capítulo 2 - Introdução aos Circuitos Lógicos
Circuitos Lógicos e Organização de Computadores Capítulo 3 – Tecnologia de Implementação Ricardo Pannain
Circuitos Lógicos e Organização de Computadores Capítulo 4 – Implementações Otimizadas de Funções Lógicas Ricardo Pannain
Lógica Booleana A álgebra booleana é baseada totalmente na lógica. Desta forma, os circuitos lógicos executam expressões booleanas. As expressões booleanas.
PORTAS LÓGICAS Prof. Wanderley.
Sistemas Digitais Projeto RTL – Unidade de Execução
Unidades de Execução e de Controle Sistemas Digitais.
Eletrônica Digital Funções e Portas Lógicas
Verilog AULA - 3.
Portas e Funções Lógicas, Tabelas Verdade e Circuitos Lógicos
PREDIÇÃO DATA MINING AULA 13 SANDRA DE AMO
Introdução à Compilação Prof. Leandro Magno Slides adaptados a partir do material cedido pelos professores Heloise Manica Paris Teixeira, Yandre M. G.
Modelagem Conceitual de Sistemas de Informação
MC542 Organização de Computadores Teoria e Prática
Redução do Consumo de Energia
ANÁLISE DE ÁRVORE DE FALHAS – AAF
Redes de Funções de Base Radial Radial Basis Functions (RBFs)
Fluxo de Síntese Verificadores Síntese Lógica Pré- Posicionamento
Dispositivos de Lógica Programável
Circuitos Sequenciais
Registradores de deslocamento (Shift Register)
VERILOG HDL (HARDWARE DESCRIPTION LANGUAGE)
Hardware Description Language (HDL)
Decodificador 2 para 4 (2 : 4)
O latch RS QN (QN)inv 1 S R QN+1 (QN+1)inv
Máquina de Estados Uma máquina de estados finitos ou autômato finito é uma modelagem de um comportamento composto por estados, transições e ações Um estado.
O Flip-Flop Mestre/Escravo
Eletrônica Digital Circuitos Combinacionais: O seu estado (os valores) de todas as saídas depende apenas dos valores das entradas neste mesmo instante.
Circuitos combinatórios
Projeto de Somador com e sem Sinal
Simplificação de Expressões Booleanas e Circuitos Lógicos
Minimização de Circuitos Lógicos
Engenharia de Software para Computação Embarcada
Vetores no Plano e no Espaço
Prof.Corradi Finite State Machines.
Introdução O que é computação?.
Inteligência Artificial
Antonyus Pyetro Infra-estrutura de Hardware – IF674
Antonyus Pyetro Infra-estrutura de Hardware – IF674
Resoluções de equações Métodos iterativos
Validação de VHDL: técnicas e ferramentas
Controlabilidade e Observabilidade de Equações Dinâmicas Lineares (C. T. Chen, Capítulo 6) Sistemas Lineares.
ADDER Mult SR ADDER SR ADDER SRSR Weights Input Bias w44x4 w34x4 w24x4 w14x4... w41x1 w31x1 w21x1 w11x1 w41x1+w42x2 w31x1+w32x2 w21x1+w22x2 w11x1+w12x2.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
AUTOMAÇÃO INDUSTRIAL.
Seminário 1: Revisão de C
Conceitos de Lógica Digital
BRAZIL IP The BrazilIP Network Verilog Curso do Brazil-IP Elmar Melcher UFCG
Prof. Manoel Eusebio Prof. Abel Guilhermino
Infra-Estrutura de Hardware
Sistemas Microprocessados e Microcontrolados
BRAZIL IP The BrazilIP Network SystemVerilog para Verificação funcional com OVM Curso do Brazil-IP Elmar Melcher UFCG
Hardware Description Language Aula 4 –VHDL (introdução)
Hardware Description Language Aula 9 –Verilog HDL Prof. Afonso Ferreira Miguel, MSc.
Sistemas Digitais Somadores.
Projetando Sistemas Digitais com SystemVerilog
VERILOG.
VERILOG Monitoria Infra-Estrutura de Hardware Álvaro João – ajss Húgaro Bernardino – hbb Fred Rabelo - ferrf Leonardo Leandro – lsl2 Jéssica de.
Introdução a VHDL Monitoria de Digitais.
1 Hardware Description Language (HDL)  Para quê precisamos de uma Linguagem de Descrição de Hardware ?  Modelar, Representar e simular hardware digital.
VERILOG.
Programação Computacional Aula 4: Álgebra Booleana
Linguagens de Programação MÓDULO 1- Introdução à Programação e Algoritmia Pedro Lopes.
Introdução à Engenharia de Computação
Verilog HDL. Introduzida em 1985 pela Gateway Design System Corporation Após 1990, passou a ser de domínio público, e em 1995 passou a ser padrão IEEE.
Sistemas Digitais Aula 10 GRECO-CIN-UFPE.
Transcrição da apresentação:

SystemVerilog: Síntese de Lógica combinatória Função lógica combinatória pode ser representada como: logic_output(t) = f(logic_inputs(t)) Regras Evite modelamento dependente de tecnologia, ou seja, implemente a função, não o timing. Lógica combinatória não pode ter realimentação. Especifique a saída de uma função combinatória para todos os possíveis combinações de entrada. Combinational Logic Combinational Logic logic_inputs(t)logic_outputs(t)

Estilos para Lógica Combinatória Sintetizável Os seguintes estilos são possíveis: Netlist de instâncias de portas e de primitivas Verilog (completamente estrutural). UDP (User Defined Primitive) combinatória (somente algumas ferramentas) Funções Atribuições permanentes Instruções comportamentais Tasks sem controle de atraso ou de eventos Interconexões dos elementos acima

Síntese de Lógica Combinatória – Netlist de Portas Ferramentas de síntese otimizam uma netlist feita a partir de primitivas Verilog Exemplo: module or_nand_1 ( input enable, x1, x2, x3, x4, output logic y); logic w1, w2, w3; or (w1, x1, x2); or (w2, x3, x4); or (w3, x3, x4); // redundant nand (y, w1, w2, w3, enable); endmodule pré-síntese pós-síntese

Síntese de Lógica combinatória – Netlist de Portas (cont.) Passos gerais da síntese: 1)Portas lógicas são traduzidas em equações booleanas. 2)As equações booleanas são otimizadas. 3)Equações booleanas são mapeadas para células de biblioteca. Funções complexas que são modeladas por portas primitivas não podem ser mapeadas para células de biblioteca mais complexas (p.ex. somador, multiplicador). Diretivas de síntese permitam a preservação da estrutura caso células equivalentes existem na biblioteca.

Síntese de Lógica Combinatória – Atribuição permanente Exemplo: module or_nand_2 ( input enable, x1, x2, x3, x4, output logic y); always_comb y = !(enable & (x1 | x2) & (x3 | x4)); endmodule pré-síntesepós-síntese

Síntese de Lógica Combinatória – Estilo comportamental Exemplo: module or_nand_3 ( input enable, x1, x2, x3, x4; output logic y); always_comb if (enable) y <= !((x1 | x2) & (x3 | x4)); else y <= 1; // operand is a constant. endmodule Obs: Todas as entradas para o comportamento precisam ser incluídos na lista de eventos, se não um latch será inferido.

Síntese de Lógica Combinatória – Funções Exemplo: module or_nand_4 ( input enable, x1, x2, x3, x4; output logic y); always_comb y <= or_nand(enable, x1, x2, x3, x4); function or_nand; input enable, x1, x2, x3, x4; begin or_nand = ~(enable & (x1 | x2) & (x3 | x4)); end endfunction endmodule

Síntese de Lógica Combinatória – Tarefas Example ???duvidoso???: module or_nand_5 ( input enable, x1, x2, x3, x4, output logic y); always_comb or_nand (enable, x1, x2, x3c, x4); task or_nand; input enable, x1, x2, x3, x4; output y; begin y = !(enable & (x1 | x2) & (x3 | x4)); end endtask endmodule

Construções a serem evitadas para Síntese combinatória Controle de evento de transição Múltiplos eventos de controle com o mesmo comportamento Eventos derivados (apelidos de eventos) Laços de realimentação Atribuições que contém controle por evento ou controle por atraso Blocos fork... join Instruções wait Instruções externas de disable Laços com controle de tempo Laços que dependem de dados Task que contém controle de tempo UDPs sequenciais

Síntese de Multiplexadores Instrução case module mux_4bits ( input [3:0] a, b, c, d, input [1:0] sel, output logic [3:0] y); always_comb case (sel) 0: y <= a; 1: y <= b; 2: y <= c; default: y <= d; endcase endmodule sel[1:0] a[3:0] y[3:0] b[3:0] c[3:0] d[3:0]

Synthesis of Multiplexors (cont.) Instrução if.. else module mux_4bits ( input [3:0] a, b, c, d, input [1:0] sel, output [3:0] y); always_comb if (sel == 0) y <= a; else if (sel == 1) y <= b; else if (sel == 2) y <= c; else if (sel == 3) y <= d; sel[1:0] a[3:0] y[3:0] b[3:0] c[3:0] d[3:0] Obs.: instruções case e if/else são estilos mais recomendados para multiplexadores grandes

Priority Logic Quando os casos de de uma sequência de condições (if) opu de um case não são mutualmente exclusivos, a ferramenta de síntese cria uma estrutura de prioridade. Exemplo: module mux_4pri ( input a, b, c, d, sel_a, sel_b, sel_c, output logic y); always_comb begin if (sel_a == 1) y <= a; else if (sel_b == 0) y <= b; else if (sel_c == 1) y <= c; else y <= d; end endmodule

VERILOG: Síntese – Lógica Sequencial Regra Geral: Uma variável será sintetizada como flip-flop se o seu valor á atribuída só no momento da transição de um sinal. Exemplo: module D_reg4a ( input [3:0] Data_in, input clock, reset, output logic [3:0] Data_out); (posedge reset or posedge clock) if (reset) Data_out <= 4'b0; else Data_out <= Data_in; endmodule

Registered Combinational Logic Combinational logic that is included in a synchronous behavior will be synthesized with registered output. Example: module mux_reg ( input [7:0] a, b, c, d, output logic [7:0] y, input [1:0] select); (posedge clock) case (select) 0: y <= a; 1: y <= b; 2: y <= c; default: y <= d; endcase endmodule

Verilog Shift Register Shift register can be implemented knowing how the flip-flops are connected (posedge clock) begin if (reset) begin reg_a <= 0; reg_b <= 0; reg_c <= 0; reg_d <= 0; end else begin reg_a <= Shift_in; reg_b <= reg_a; reg_c <= reg_b; reg_d <= reg_c; end

Verilog Shift Register Shift register can be implemented using concatenation operation referencing the register outputs module Shift_reg4 ( input Data_in, clock, reset, output logic Data_out); logic [3:0] Data_reg; always_comb Data_out = Data_reg[0]; (negedge reset or posedge clock) begin if (reset == 0) Data_reg <= 0; else Data_reg <= {Data_in, Data_reg[3:1]}; end endmodule

Verilog Up/Down Counter Load counter with Data_in when load = 1 Counter counts when counter_on = 1 counts-up when count_up = 1 Counts-down when count_up = 0 Functional Specs.

Verilog Up/Down Counter (cont.) module up_down_counter ( input clk, reset, load, count_up, counter_on, input [2:0] Data_in, output logic [2:0] Count); (posedge reset or posedge clk) if (reset) Count = 0; else if (load) Count <= Data_in; else if (counter_on) begin if (count_up) Count <= Count +1; else Count <= Count –1; end endmodule