ea773 laboratório de circuitos lógicos · simplificações por meio de mapas de karnaugh ou...

19

Click here to load reader

Upload: buikhanh

Post on 29-Oct-2018

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: EA773 Laboratório de Circuitos Lógicos · Simplificações por meio de mapas de Karnaugh ou técnica de minimização de Quine-McCluskey • Especificar estas funções no escopo

1

EA773Laboratório de Circuitos Lógicos

Experiência 3Problemas Típicos e VHDL

Don’t forget to write!

“In order to create great products, logic designers must develop their language and writing skills, especially in the area of logical outlining and organization. The most successful designers (and later, project

leaders, system architects, and entrepreneurs) are the ones who communicate their ideas, proposals, and decisions effectively to

others. Even though it’s a lot of fun to tinker in the digital design lab, don’t use that as an excuse to shortchange your writing and

communications courses and projects!”

Fonte: Digital Design: Principles and Practices, John F. Wakerly

Page 2: EA773 Laboratório de Circuitos Lógicos · Simplificações por meio de mapas de Karnaugh ou técnica de minimização de Quine-McCluskey • Especificar estas funções no escopo

2

Observações x Projetos

Reproduzir procedimentospara observar ocorrência de

um ou mais fenômenosrelacionados a um problema

específico

Adotar um procedimento parabuscar a solução de um

problema específico

Projeto Digital: Combinacional + Sequencial

1−iSiS

Memória

Operações Lógico-Aritméticos

Sincronismo

Page 3: EA773 Laboratório de Circuitos Lógicos · Simplificações por meio de mapas de Karnaugh ou técnica de minimização de Quine-McCluskey • Especificar estas funções no escopo

3

Fluxo de Projeto

http://pt.wikipedia.org/wiki/VHDL

(Especificação Estrutural)

(Especificação Física)

(Especificação Funcional/Comportamental)

Níveis de Especificação de um Semi-Somador

• Funcional/Comportamental

• Estrutural1011

0101

0110

0000

ipix iy ig

011

101

=+=+

110

000

=+=+

(vai-um)

iii

iiiii

yxg

yxyxp

=+=

Tabela-verdadeOperações aritméticas

Métodos de simplificação : Mapa de Karnaugh, minimização de Quine-McCluskey etc

Page 4: EA773 Laboratório de Circuitos Lógicos · Simplificações por meio de mapas de Karnaugh ou técnica de minimização de Quine-McCluskey • Especificar estas funções no escopo

4

Tecnologia

1962

primeiroCI

produzidoem escalacomercial(da famíliada lógica

ECL) Motorola

1964

CI dafamília da

lógicaTTL

Sylvania

1969

CI dafamília

dalógicaCMOS RCA

Fonte: http://en.wikipedia.org/wiki/Logic_family

Dispositivos de função fixa

1968

Matriz de portas

programável (12

portas e 30 pinos) Motorola

PLA (minterm

os, maxterm

os, 17 entradas, 8 saídas,

8 JK) Texas

Fonte: http://en.wikipedia.org/wiki/Programmable_logic_device

Dispositivos de função configurável

1970

PAL (mintermos) Monolithic

Memories Inc

(MMI)

1978

GAL (centenasde portaslógicas)Lattice

Semiconductor

1983

1985

FPGA Xilink

1985

EPLD Altera

CPLD (> milhares

de portaslógi

cas)

1975

FPLA Signetics

CPLD x FPGA

Fonte: http://www2.eletronica.org/artigos/eletronica-digital/dispositivos-programaveis-como-funcionam

• PLDs : dispositivos lógicos programáveis constituídos de macro-células. Estas contém uma certa quantidade de portas lógicas e flip-flops configuráveis para realizar um certo número de operações Booleanasespecíficas.

CPLDIntegração densa de PLDs

Aplicações usuais : grandescircuitos combinacionais

FPGAGrande matriz de macro-células

Aplicações usuais : grandesmáquinas de estados

Page 5: EA773 Laboratório de Circuitos Lógicos · Simplificações por meio de mapas de Karnaugh ou técnica de minimização de Quine-McCluskey • Especificar estas funções no escopo

5

Problemas Típicos

• Pulsos Espúrios• Sincronismo• Derivação de Pulsos

Pulsos Espúrios

pulsos espúrios

Page 6: EA773 Laboratório de Circuitos Lógicos · Simplificações por meio de mapas de Karnaugh ou técnica de minimização de Quine-McCluskey • Especificar estas funções no escopo

6

Sincronismo

Sincronismo

CLK1: T = 40ns; offset = 27nsCLK2: T = 160ns;offset = 0ns

Largura dos pulsos em relação a dos outros.

Page 7: EA773 Laboratório de Circuitos Lógicos · Simplificações por meio de mapas de Karnaugh ou técnica de minimização de Quine-McCluskey • Especificar estas funções no escopo

7

Uma solução

Derivação de Pulsos

~111ns

Page 8: EA773 Laboratório de Circuitos Lógicos · Simplificações por meio de mapas de Karnaugh ou técnica de minimização de Quine-McCluskey • Especificar estas funções no escopo

8

VHDL• VHDL = VHSIC (Very High Speed Integrated

Circuits) Hardware Description Language -1980– Motivação: concisão na documentação em

Departamento de Defesa dos Estados Unidos

• Outras linguagens de descrição: Verilog (1983-1984), AHDL (Altera Hardware Description Language)

• NÃO É UMA LINGUAGEM DE PROGRAMAÇÃO DE PROCESSADOR!!!

Componentes Lógicos

Interface de

entrada

Interface de saída

Interface de

entrada

Interface de saída

Comportamento Comportamento

Page 9: EA773 Laboratório de Circuitos Lógicos · Simplificações por meio de mapas de Karnaugh ou técnica de minimização de Quine-McCluskey • Especificar estas funções no escopo

9

Fluxo de Projeto

http://pt.wikipedia.org/wiki/VHDL

(Especificação Estrutural)

(Especificação Funcional/Comportamental)

(PLDs)

Comportamento: Níveis de Abstração

(Exp. 1)

(Exps. 2 e 3)

Linguagem de descrição orientadaà funcionalidade do circuito �

portabilidade, documentação, manutenção

Page 10: EA773 Laboratório de Circuitos Lógicos · Simplificações por meio de mapas de Karnaugh ou técnica de minimização de Quine-McCluskey • Especificar estas funções no escopo

10

Estrutura Básica de VHDL

COMPONENTE

INTERFACE(ENTITY)

Declaração de portas e objetos locais

PROCEDIMENTO(ARCHITECTURE)

Funcional (Concorrente/Sequencial)Estrutural

http://www.seas.upenn.edu/~ese201/vhdl/vhdl_primer.html

Sintaxe de Especificação

• Interface com mundo externo (pinos de entradae de saída)– Tipos de pinos: entrada, saída, ou entrada/saída?– Correspondência entre pinos e entidades lógicas?

• Definição do seu comportamento lógico (a nívelfuncional ou a nível estrutural)– Tipos de “dados intermediários”?– Tipos de operações lógico-aritméticas?– Como descrever “comportamentos condicionais”?– Como utilizar componentes, procedimentos ou

funções pré-definidos?

Page 11: EA773 Laboratório de Circuitos Lógicos · Simplificações por meio de mapas de Karnaugh ou técnica de minimização de Quine-McCluskey • Especificar estas funções no escopo

11

Descrição da Interfaceentity NAME_OF_ENTITY is

[ generic generic_declarations);]port (signal_names: mode type;

signal_names: mode type;:

signal_names: mode type);

end [NAME_OF_ENTITY] ;

NAME_OF_ENTITY: identificador do componentesignal_names: identificadores dos sinais da interfacemode: uma das palavras reservadas de VHDL para indicar a direção dos sinais

(in , out , buffer , inout )type: tipo de sinal (bit, bit_vector, std_logic, std_ulogic, std_logic_v ector,

std_ulogic_vector, boolean, integer, real, characte r, time )generic : definição de constantes locais

generic (constant_name: type [:=value] ;constant_name: type [:=value] ;:constant_name: type [:=value] );

architecture architecture_name of NAME_OF_ENTITY is[component component_name [ ( formal parameter list ) ] ;][signal signal_names: type [ := initial value] ;][constant constant_names: type [ := initial value] ;][procedure procedure_name [ ( formal parameter list ) ] ;][function function_name [ ( formal parameter list ) ] return type ; ][type type_name is type_definition;]

beginsinal_saida <= função (sinais_entrada):[process begin:end process;]

end architecture_name;

http://www.cs.umbc.edu/portal/help/VHDL/declare.html

Descrição do ComportamentoD

ecla

raçã

ode

dad

os e

pro

cedi

men

tos

a se

rem

utili

zado

s

Des

criç

cão

das

funç

cões

Page 12: EA773 Laboratório de Circuitos Lógicos · Simplificações por meio de mapas de Karnaugh ou técnica de minimização de Quine-McCluskey • Especificar estas funções no escopo

12

component component_nameport ( signal_names: mode type;

signal_names: mode type);end component;

procedure procedure_name ( data_type data_name mode type ) is [declaração de objetos utilizados neste procedimento]begin

linhas de comando;:

end procedure [ procedure_name];

function function_name ( data_type data_name mode type ) return type is[declaração de objetos utilizados neste procedimento] begin

linhas de comando;:

end procedure [ function_name];Exemplos de declaração de type :

type small_int is range 0 to 1024;type reg is array (255 downto 0) of std_logic ;

Declaração de Objetos

data_type: constant ouvariable ou signal

VHDL: Operações Lógico-Aritm éticas

andornandnorxorxnor** exponenciação;abs valor absoluto;not complemento;* multiplicação;/ divisão;mod módulo;rem resto da divisão;+ soma ou identidade;- subtração ou negação;& concatenação de bits

library ieee;useieee.std_logic_1164.all;use ieee.numeric_std.all;

Conversão entre os tipos de dados :1. Unsigned, signed ����std_logic_vector

std_logic_vector(v)2. Std_logic_vector ����unsigned, signed

unsigned(v)signed(v)

3. Unsigned, signed ���� integerto_integer(v)

4. Integer ����unsigned, signedto_unsigned(v,v’length)to_signed(v,v’length)

Alguns exemplos de type:bit � ‘0’, ‘1’binary � ‘ON’, ‘OFF’std_logic � ‘0’, ‘1’, ‘X’, ‘Z’, ‘U’, ‘W’, ‘L’,’H’,’-’unsigned �inteiro sem sinalsigned � complemento 2integer � signed em, no mínimo, 32 bits

Page 13: EA773 Laboratório de Circuitos Lógicos · Simplificações por meio de mapas de Karnaugh ou técnica de minimização de Quine-McCluskey • Especificar estas funções no escopo

13

Observações Gerais sobre Sintaxe

• Não distingue maiúscula e minúscula• Linhas de comando terminadas com “;”• Linha de comentários iniciadas com “--”• Delimitador de elementos de uma lista: “,”• Símbolo de atribuição: “<=”, “:=”• Nomes: letra seguida de sequência de letras,

dígitos e/ou “_”, exceto palavras reservadas de VHDL– Palavras reservadas podem ser utilizadas como nomes

de objetos quando “delimitadas por \ \. Exemplo: \rem\

Modelos

library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all; entity and2_behavioral is

port (in1, in2: in std_logic;out1: out std_logic);

end entity;

architecture behavioral_2 of AND2 isbegin

out1 <= in1 and in2;end behavioral_2;

entity and2_structural_vhdl isport (in1, in2: in std_logic;

out1: out std_logic);end and2_structural_vhdl;

architecture structural of and2_structural_vhdl iscomponent AND2 -- Altera primitive

port (in1, in2: in std_logic;\out\: out std_logic);

end component;begin

U0: AND2 port map (in1, in2, out1);end architecture;

Funcional Estrutural

Page 14: EA773 Laboratório de Circuitos Lógicos · Simplificações por meio de mapas de Karnaugh ou técnica de minimização de Quine-McCluskey • Especificar estas funções no escopo

14

VHDL: Semi-somador

architecture behavior of semi_somador_vhdl isbegin

pi <= xi xor yi;gi <= xi and yi;

end behavior;

-- Semi-Somadorlibrary ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;entity semi_somador_vhdl isport (

xi,yi : in std_logic;pi,gi : out std_logic);

end semi_somador_vhdl;

VHDL: Tarefa 1• Editar e salvar a especificação dada no roteiro (extensão .vhd)

– File > New > VHDL File• Compilar o arquivo

– Setar como “top-level” (Project > Set as Top-level Entity)– MAX+PLUSII > Compiler

• Visualizar o esquemático do circuito sintetizado– Tools > Netlist Viewers > RTL Viewer

• Simular o circuito– Editar formas de onda (MAX+PLUSII > Waveform Editor)– Simular (MAX+PLUSII > Simulator)

• Testar o componente– Criar um símbolo (File > Create/Update > Create Symbol Files for Current File)– Editar o circuito de teste (File > New > Block Diagram/Schematic File)

• Inserir o componente (Insert )• Adicionar os pinos (Clicar o botão esquerdo do mouse em cima do símbolo >

Generate Pins for Symbol Ports)• Adaptar os nomes dos símbolos para as convenções adotadas pelo kit

Altera• Importar o arquivo de correspondência (Assignments > Import Assignments)• Compilar• Programar FPGA

Page 15: EA773 Laboratório de Circuitos Lógicos · Simplificações por meio de mapas de Karnaugh ou técnica de minimização de Quine-McCluskey • Especificar estas funções no escopo

15

-- Registrador de deslocamentolibrary ieee;use ieee.std_logic_1164.all;entity registrador_deslocamento_vhdl is

generic ( NUM_STAGES : natural := 4 );port (

clk, enable : in std_logic;sr_in: in std_logic;sr_out : out std_logic);

end entity;

architectur e behavior of registrador_deslocamento_vhdl istype registrador is array ((NUM_STAGES-1) downto 0)

of std_logic;signal sr: registrador;begin

sr_out <= sr(NUM_STAGES-1);process (clk)begin

if (rising_edge(clk)) thenif (enable = '1') thensr((NUM_STAGES-1) downto 1) <=

sr((NUM_STAGES-2) downto 0);sr(0) <= sr_in;end if;

end if;end process;

end architecture;

VHDL: Registrador Serial-

serial

VHDL: Registrador Serial - Paralelo

• Diferença em relação ao registrador de deslocamentoSerial-serial– Sinal de controle reset .– sr_out (1 bit) � sr_out (16 bits)

• Na forma vetorial: sr_out: out std_logic_vector(15 downto 0);

• Na forma binária: sr_out0, sr_out1, ..., sr_out15: out std_logic;– Atribuição de um sinal de saída (sr_out(0) <= sr_in) �

atribuição de 16 sinais de saída• Na forma vetorial: (sr_out(15 downto 0) <= sr(15 downto 0))• Na forma binária: (sr_out0 <= sr(0) … sr_out15 <= sr(15))

Observações:É possível compactar atribuições:

Ao invés, sr_out(15) <= sr(15); … ; sr_out(0) <= sr(0);pode-se escrever sr_out(15 downto 0) <= sr(15 downto 0);Ao invés, d(3) <= ‘1’; d(2)<=‘1’; d(1)<=‘1’; d(0)<=’0’;pode-se escrever d <= “1110”;

Page 16: EA773 Laboratório de Circuitos Lógicos · Simplificações por meio de mapas de Karnaugh ou técnica de minimização de Quine-McCluskey • Especificar estas funções no escopo

16

VHDL: Tarefa 2• Editar e salvar a especificação do registrador serial-paralelo

– File > New > VHDL File• Compilar o arquivo

– Setar como “top-level” (Project > Set as Top-level Entity)– MAX+PLUSII > Compiler

• Visualizar o esquemático do circuito sintetizado– Tools > Netlist Viewers > RTL Viewer

• Simular o circuito– Editar formas de onda (MAX+PLUSII > Waveform Editor)– Simular (MAX+PLUSII > Simulator)

• Testar o componente

– Criar um símbolo (File > Create/Update > Create Symbol Files for Current File)– Editar o circuito de teste (File > New > Block Diagram/Schematic File)

• Inserir o componente (Insert )• Adicionar os pinos (Clicar o botão esquerdo do mouse em cima do símbolo >

Generate Pins for Symbol Ports)• Adaptar os nomes dos símbolos para as convenções adotadas pelo kit

Altera• Importar o arquivo de correspondência (Assignments > Import Assignments)• Compilar• Programar FPGA

VHDL: Decodificador 7447

Page 17: EA773 Laboratório de Circuitos Lógicos · Simplificações por meio de mapas de Karnaugh ou técnica de minimização de Quine-McCluskey • Especificar estas funções no escopo

17

VHDL: Decodificador• Especificar os sinais de entrada e de saída no escopo de

entity .

• Sintetizar para cada sinal de saída uma função lógica emtermos dos sinais de entrada.Utilizando o procedimento que se aprendeu até agora:

1. Tabela-verdade das variáveis booleanas2. Função binária de cada variável de saída (são 7!) em termos das

quatro variáveis de entrada. Simplificações por meio de mapas de Karnaugh ou técnica de minimização de Quine-McCluskey

• Especificar estas funções no escopo de architecture utilizando as palavras reservadas da linguagem VHDL.

[process_label:] process [ (sensitivity_list) ] [is ][ process_declarations]

beginlist of sequential statements such as:

signal assignments (<=)variable assignments (:=)case statement (is, when, when others, end case )if statement (then, elsif, else, end if )loop statement

next statementexit statement

null statementprocedure call wait statement (wait until, wait for, wait on, wait )

end process [process_label];loop

wait until CLK=’1’;intern_value:=(intern_value + 1) mod 32;COUNT <= intern_value;

end loop;

Descrição de ComportamentosCondicionais

Page 18: EA773 Laboratório de Circuitos Lógicos · Simplificações por meio de mapas de Karnaugh ou técnica de minimização de Quine-McCluskey • Especificar estas funções no escopo

18

library ieee; use ieee.std_logic_1164.all;entity dechexto7seg_if is

port(D, C, B, A : in std_logic; -- entradas BCsa, sb, sc, sd, se, sf, sg : out std_logic); -- Saidas para os 7 segmentos anodo comum

end dechexto7seg_if;architecture comportamento of dechexto7seg_if is

beginprocess (D, C, B, A)

beginif (D = '0' and C = '0' and B = '0' and A = '0') then

sa<=‘0'; sb<=‘0'; sc <=‘0'; sd <= ‘0'; se<=‘0'; sf<=‘0'; sg<=‘1';elsif (D = '0' and C = '0' and B = '0' and A = '1') then

sa<=‘1'; sb<=‘0'; sc <=‘0'; sd <= ‘1'; se<=‘1'; sf<=‘1'; sg<=‘1';elsif (D = '0' and C = '0' and B = '1' and A = '0') then

sa<=‘0'; sb<=‘0'; sc <=‘1'; sd <= ‘0'; se<=‘0'; sf<=‘1'; sg<=‘0';elsif (D = '0' and C = '0' and B = '1' and A = '1') then

sa<=‘0'; sb<=‘0'; sc <=‘0'; sd <= ‘0'; se<=‘1'; sf<=‘1'; sg<=‘0';elsif (D = '0' and C = '1' and B = '0' and A = '0') then

sa<=‘1'; sb<=‘0'; sc <=‘0'; sd <= ‘1'; se<=‘1'; sf<=‘0'; sg<=‘0';elsif (D = '0' and C = '1' and B = '0' and A = '1') then

sa<=‘0'; sb<=‘1'; sc <=‘0'; sd <= ‘0'; se<=‘1'; sf<=‘0'; sg<=‘0';::end if;

end process;end comportamento;

Primeira Alternativa com sequenciascondicionais (sem BI,RBI,LT,RBO)

library ieee;use ieee.std_logic_1164.all;entity dechexto7seg_if_vec is

port(D, C, B, A : in std_logic; -- entradas BCDsa, sb, sc, sd, se, sf, sg : out std_logic); -- Saidas para os 7 segmentos anodo comum

end dechexto7seg_if_vec;

architecture comportamento of dechexto7seg_if_vec issignal segs_out : std_logic_vector (6 downto 0);begin

process (D, C, B, A)variable bcd_in :std_logic_vector (3 downto 0);begin

bcd_in := D & C & B & A;if (bcd_in = "0000") then

segs_out <= “0000001";elsif (bcd_in = "0001") then

segs_out <= “1001111";:

end process;sa<=segs_out(6);sb<=segs_out(5);sc<=segs_out(4);

:sg<=segs_out(0);

end comportamento;

Segunda Alternativa com sequenciascondicionais (sem BI,RBI,LT,RBO)

Page 19: EA773 Laboratório de Circuitos Lógicos · Simplificações por meio de mapas de Karnaugh ou técnica de minimização de Quine-McCluskey • Especificar estas funções no escopo

19

VHDL: Tarefa 3• Editar e salvar a especificação do decidificador 7447 completo com uso de “case ” e

“when ” para descrever o seu comportamento– File > New > VHDL File

• Compilar o arquivo– Setar como “top-level” (Project > Set as Top-level Entity)– MAX+PLUSII > Compiler

• Visualizar o esquemático do circuito sintetizado– Tools > Netlist Viewers > RTL Viewer

• Simular o circuito– Editar formas de onda (MAX+PLUSII > Waveform Editor)– Simular (MAX+PLUSII > Simulator)

• Testar o componente– Criar um símbolo (File > Create/Update > Create Symbol Files for Current File)– Editar o circuito de teste (File > New > Block Diagram/Schematic File)

• Inserir o componente (Insert )• Adicionar os pinos (Clicar o botão esquerdo do mouse em cima do símbolo >

Generate Pins for Symbol Ports)• Adaptar os nomes dos símbolos para as convenções adotadas pelo kit

Altera• Importar o arquivo de correspondência (Assignments > Import Assignments)• Compilar• Programar FPGA