MINICURSO: TÓPICOS EM VHDL. Prof. Leonardo Augusto Casillo

Tamanho: px
Começar a partir da página:

Download "MINICURSO: TÓPICOS EM VHDL. Prof. Leonardo Augusto Casillo"

Transcrição

1 MINICURSO: TÓPICOS EM VHDL Prof. Leonardo Augusto Casillo

2 O que significa VHDL? Very High Speed Integrated Circuit Hardware Description Language Linguagem de Descrição de Hardware com ênfase em Circuitos Integrados de altíssima velocidade.

3 O que significa Linguagem de Descrição de Hardware (HDL)? Uma linguagem de descrição de hardware descreve o que um sistema faz e como; Um sistema descrito em linguagem de hardware pode ser implementado em um dispositivo programável FPGA (Field Programmable Gate Array) ou um dispositivo ASIC (Aplication Specific Integrated Circuit), permitindo o uso em campo do sistema; Existem dezenas de HDLs: AHDL, VERILOG, Handel-C, SDL, ISP, ABEL

4 Características do VHDL Linguagem concorrente. Todos os comandos ocorrem simultaneamente (com exceção de processos) Permite, através de simulação, verificar o comportamento do sistema digital; Permite descrever hardware em diversos níveis de abstração, por exemplo: Algorítmico ou comportamental. Transferência entre registradores (RTL). Hoje utilizada para SIMULAÇÃO e SÍNTESE

5 Características do VHDL VHDL é análogo a uma linguagem de programação VHDL provê mecanismos para modelar a concorrência e sincronização que ocorrem a nível físico no hardware Projetar um sistema em VHDL é geralmente mais difícil que escrever um programa para fazer a mesma coisa utilizando uma linguagem de programação como C O código VHDL é executado em um simulador Não há um executável

6 Características do VHDL

7 Considerações importantes 1. VHDL NÃO É uma linguagem de programação 2. O VHDL deve ser descrito após a arquitetura, e não a arquitetura após o VHDL.

8 Vantagens e Desvantagens do VHDL Vantagens time-to-market: Se há dez anos atrás um produto demorava 6 meses para ser desenvolvido, mas permanecia no mercado por 2 anos, hoje um produto não permanece mais de 18 meses, logo o seu desenvolvimento deve levar bem menos tempo. menor ciclo e custo de desenvolvimento: devido à eliminação de geração, manutenção de esquemáticos e pela diminuição de erros de desenvolvimento pelo uso de simulação nos ciclos iniciais do projeto; aumento de qualidade no desenvolvimento: VHDL facilita o rápido experimento com diferentes arquiteturas e técnicas de implementação, e pela capacidade das ferramentas de síntese otimizarem um projeto tanto para área mínima quanto para velocidade máxima; evolução da tecnologia Novos dispositivos surgem com mais capacidade e mais recursos internos; gerenciamento do projeto Projetos em VHDL facilitam a estruturação de componentes (topdown), facilitam a documentação e são necessárias menos pessoas para desenvolver e verificar, sendo também mais simples modificar o projeto; independente de tecnologia e fabricante: porém sabe-se que na prática não é independente de ferramenta de síntese e de simulação.

9 Vantagens e Desvantagens do VHDL Desvantagens Mudança de cultura; Aprendizado e treinamento; Escolha de uma ferramenta de desenvolvimento; Circuito é menos otimizado que esquemático; Ferramentas de síntese ineficientes.

10 Conceitos necessários Algoritmos; Conceitos de linguagem de programação (para descrição comportamental); Circuitos Digitais; Arquitetura de computadores; Para descrições mais complexas: Linguagem Assembly; Microprocessadores; Sistemas embarcados.

11 Breve Histórico - final de 1960: primeiras Linguagem de Hardware; : projeto CONLAN (CONsensus LANguage); : relatório final do CONLAN e a Linguagem ADA; : DoD inicia programa VHSIC (participação da IBM, Intermetrics e Texas Instruments; : a Intermetrics desenvolve compilador e simulador, criado um grupo de padronização da IEEE para VHDL; : primeiros softwares são comercializados; : recomeçou-se um novo processo de padronização; : modificações propostas foram avaliadas e votadas; : um novo padrão é publicado, chamado VHDL-93; : publicado o manual de referência da linguagem.

12 Ciclo de Projeto: Especificação: determinar requisitos e funcionalidade do projeto. Codificação: descrever em VHDL todo o projeto, segundo padrões de sintaxe. Simulação do Código-Fonte: simular o código em ferramenta confiável a fim de verificar preliminarmente cumprimento da especificação;

13 Ciclo de Projeto: Síntese, otimização e Fitting: Síntese: compilação de um código VHDL para uma descrição abstrata. Otimização: seleção da melhor solução de implementação para uma dada tecnologia. Fitting: lógica sintetizada e otimizada mapeada nos recursos oferecidos pela tecnologia.

14 Ciclo de Projeto: Simulação do modelo: resultados mais apurados de comportamento e timing. Geração: configuração das lógicas programáveis ou de fabricação de ASICs.

15 Etapas de Projeto:

16 Etapas de Projeto:

17 Tipos de circuitos: Circuitos Combinacionais: circuitos que dependem apenas da combinação das variáveis de entrada Circuitos Sequenciais: circuitos que dependem da variável tempo (sincronização, realimentação, etc) Circuitos Hardwired: circuito projetado para realizar uma tarefa específica, sem a necessidade de programação Processadores: sistemas de uso geral, compostos por unidades operativas e de controle, com conjunto de instruções específico. Sistemas embarcados: sistemas para uso específico com restrições de potência e aplicações de tempo real.

18 PARTE I : ELEMENTOS BÁSICOS

19 Componentes de um projeto PACKAGE ENTITY ARCHITECTURE CONFIGURATION Package (Pacote): constantes, bibliotecas; Entity (Entidade): pinos de entrada e saída; Architecture (Arquitetura): implementações do projeto; Configuration (Configuração): define as arquiteturas que serão utilizadas.

20 Componentes de um projeto LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.all; USE IEEE.STD_LOGIC_UNSIGNED.all; PACKAGE (BIBLIOTECAS) ENTITY exemplo IS PORT ( <descrição dos pinos de I/O> ); END exemplo; ARCHITECTURE teste OF exemplo IS BEGIN... END teste; ENTITY (PINOS DE I/O) ARCHITECTURE (ARQUITETURA)

21 Entity (Entidade) Abstração que descreve um sistema, uma placa, um chip, uma função ou uma porta lógica. Etapa caixa preta, onde é necessário apenas descrever quem são as entradas e saídas do circuito (interface com meio externo) Entity <nome_da_entidade> is port ( entrada_1: in <tipo>; entrada_2: in <tipo>; saída_1 : out <tipo>;... ); end <nome_da_entidade>;

22 Entity (Entidade) Parâmetros: - GENERIC: passagem de informações estáticas - PORT: correspondem ao pinos de entrada e saída. Modos de operação: IN: porta de entrada; OUT: porta de saída (não podem ser usados como entradas, nem seus valores utilizados na lógica interna); INOUT: porta de entrada e saída; BUFFER: saída com possibilidade de realimentação.

23 ARCHITECTURE (ARQUITETURA) PROCESSOS N ENTITY (ENTIDADE) PINOS DE I/O

24 Entity (Entidade) Tipos mais utilizados: bit Assume valores 0 ou 1. x: in bit; bit_vector Vetor de bits. x: in bit_vector(7 downto 0); x: in bit_vector(0 to 7); std_logic* x: in std_logic; std_logic_vector x: in std_logic_vector(7 downto 0); x: in std_logic_vector(0 to 7); boolean Assume valores TRUE ou FALSE

25 Entity (Entidade) STD_LOGIC: Definida pela biblioteca IEEE: use ieee.std_logic_1164.all; Pode assumir nove valores: U : não inicializada Z : alta impedância X : desconhecida W : desconhecida fraca 0 : valor 0 L : 0 fraca (Low) 1 : valor 1 H : 1 fraca (High) - : Don t care.

26 Entity (Entidade) Circuito exemplo: A extensão de um arquivo em VHDL é.vhd. O nome do arquivo DEVE ser o mesmo nome da entidade. No caso acima, o arquivo deve ser salvo com o nome exemplo1.vhd.

27 Architecture (Arquitetura) Especificação do funcionamento do circuito Formada por: Declarações: sinais, constantes, componentes, subprogramas Comandos: blocos, atribuições a sinais, chamadas a subprogramas, instanciação de componentes, processos Uma entidade pode ter várias arquiteturas: VHDL provê meios de especificar qual arquitetura se deseja utilizar

28 Architecture (Arquitetura)

29 Architecture (Arquitetura) Arquitetura do circuito exemplo:

30 Architecture (Arquitetura) Circuito exemplo completo em VHDL:

31 Package (Pacotes) Os pacotes (bibliotecas) contém uma coleção de elementos incluindo descrição do tipos de dados Analogia com C/C++: #include <library.h>. Para incluir uma biblioteca no código VHDL (início do código): LIBRARY <nome_da_biblioteca> e/ou USE <nome_da_biblioteca>.all

32 Package (Pacotes) Permite a reutilização de um código já escrito. Armazena: Declaração de tipos Declaração de constantes Declaração de subprogramas Declaração de mnemônicos Pode ser dividido em parte de declaração e parte de corpo (opcional).

33 Package (Pacotes) É necessário o uso de packages quando se deseja utilizar algo não definido pela biblioteca VHDL padrão. A área de packages deve vir antes da área de entidade. library IEEE; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; Biblioteca do usuário (default): work.

34 Package (Pacotes) Exemplo de Packages: package <biblioteca> is function soma(a,b: bit) return bit; subtype dado is bit_vector(32 downto 0); constant mascara : bit_vector(3 donwto 0) := 1100 ; alias terceiro_bit: bit is dado(3) ); end <biblioteca>.

35 PARTE II : SEMÂNTICA

36 Usados como referência a todos os objetos declarados Regras Primeiro caractere deve ser uma LETRA Não é CASE-SENSITIVE Ex: Teste = teste = TESTE Existem palavras reservadas Ex: and, mux 36

37 São permitidos apenas letras, números e underscore ( _ ) Último caractere não pode ser underscore; o Ex: Teste_ Não são permitidos 2 underscores em seqüência; o Ex: Teste projeto Nomes com underscore são diferentes de nome sem underscore. o Ex: teste_projeto testeprojeto

38 Valores de dados específicos usados como parâmetros de objetos ou dentro de expressões. Não representam tipos específicos: Ex: '1' pode representar um bit ou um caractere. São válidos dependendo do tipo: Ex: '$' é válido como um caractere mas não como bit.

39 Podem ser representados pelas seguintes categorias: Character Literals: um caracter ASCII ( a, z ). String Literals: seqüência de caracteres ASCII ( texto ) Bit String Literals: formas especiais de string literals para representar valores das bases binária, octal e hexadecimal. B O 446 X A0F4B51 Válidos para bit_vector e std_logic_vector

40 Numeric Literals: Integer Literals (Ex: 1) e Real Literals (Ex: 1.1) Números reais não são sintetizáveis. Based Literals: idêntico a numeric literals, mas utilizando bases binária, octal e hexadecimal. Ex: 2#101#, 16#FC9#, 2#1.0#E10# Physical Literals: grandeza física. Contém parte numérica e unidade. Podem representar tempo, velocidade, distância etc Não são sintetizáveis (tempo é simulável) Ex: 300 s, 40 m

41 VHDL é uma linguagem fortemente tipada; Pouca conversão é feita automaticamente; Cada tipo tem um conjunto de operações válidas; Cada tipo tem um conjunto de valores definidos; Os tipos podem ser estendidos pelo usuário. 41

42 São divididos em 4 classes: Tipos escalares (representam um único valor); Tipos compostos (representam uma coleção de valores); *Tipos de acessos (similares a ponteiros); *Tipos de arquivo (referencia objetos que contém uma seqüência de valores). * Não são sintetizáveis

43 TIPOS discretos Scalar escalar numéricos Composite composto Enumerated enumerado Integer Floating point Physical físico Array vetor bit boolean character integer real time bit_vector string booleano caracter inteiro tempo

44 Tipos enumerados: tipos já definidos pela norma Bit Boolean Integer Real Physical STD_LOGIC

45 TIPO PREDEFINIDO VALOR EXEMPLO BIT um, zero 1, 0 BOOLEAN Verdadeiro, falso TRUE, FALSE CHARACTER Caracteres ASCII a, b, c, A, B, C,?, ( INTEGER x , 8#173#, 16#7B#, 2#11_11_011# NATURAL 0 X , 8#173#, 16#7B#, POSITIVE 1 X #11_11_011# REAL -3.65*10 47 x +3.65* , 1.23E+2, 16#7.B#E+1 TIME ps=10 3 fs ns=10 3 ps us=10 3 ns ms=10 3 us sec=10 3 ms min=60sec hr=60min 1 us, 100 ps, 1 fs NATURAL e POSITIVE são subtipos de INTEGER 45

46 Tipos enumerados: permite criar novos tipos. Útil para máquina de estados (FSM) Ex: type estado is (inicio, espera, calculo, final); Os tipos criados podem ser declarados Ex: signal estado_atual : estado Outros Exemplos (user defined types): type dedos is range 0 to 10; type pos_neg is range -1 to 1;

47 ARRAY: Coleção de elementos do mesmo tipo Ordem crescente ou decrescente type word is array (7 downto 0) of bit; type word is array (0 to 7) of bit; Indexação por parêntesis signal palavra: word := ; signal aux: bit; aux <= palavra(0);

48 TIPO PREDEFINIDO VALOR EXEMPLO BIT_VECTOR 1, , B 10_10, O 12, X A STRING Tipo character texto, incluindo_aspas Signal a: Bit_Vector (0 TO 7) := a(0) a(1) a(2) a(3) a(4) a(5) a(6) a(7) Constant c: String (1 TO 9) := Alo mundo A l o m u n d o c(1) c(2) c(3) c(4) c(5) c(6) c(7) c(8) c(9) 48

49 a(4) <= b(4); -- 1 elemento <= 1 elemento a(0 to 3) <= b(2 DOWNTO 0); -- parte do vetor <= parte do vetor b(4) <= 0 ; -- 1 elemento <= 1 valor b(2 DOWNTO 0) <= 0010 ; -- parte do vetor <= valor c <= ( 0, 0, 0, 1, 0 ); -- valor agregado notação -- posicional d <= (1 => 1, OTHERS => 0 ); -- valor agregado notação -- posicional OTHERS: forma genérica de se atribuir valores aos demais bits não especificados anteriormente 49

50 Records: coleção de elementos de tipos diferentes. Semelhante a struct em C Exemplos: type instruction is record Mnemonico: string; Codigo: bit_vector(3 downto 0); Ciclos: integer; end record; signal instrucao : instruction; instrucao.mnemonico : registrador instrucao.codigo : 0001 Instrucao.ciclos : 3

51 Realizam operações sobre objetos do mesmo tipo; Operações lógicas: and, or, nand, nor, xor, xnor e not; Para vetores, são efetuados bit a bit; Operações relacionais: igual (=), diferente (/=), menor que (<), menor ou igual (<=), maior que (>), maior ou igual (>=) o resultado é sempre do tipo boolean; Operações numéricas: soma (+), subtração (-), negação (- unário), multiplicação (*), divisão (/), módulo (mod), remanescente (rem), expoente (**) e valor absoluto (abs) são aplicados somente para integer e real e para o tipo time, embora existam bibliotecas específicas para aritmética;

52 Operações de concatenação: Cria um novo vetor a partir de dois vetores já existentes. Ex: Dado1: bit_vector(7 downto 0); Dado2: bit_vector(7 downto 0); Dado_Resultante: bit_vector(7 downto 0) Dado1 := ; Dado2 := ; Dado_Resultante := (Dado1(7 downto 6) & Dado2(5 downto 2) & Dado1(1 downto 0)); Dado_Resultante =

53

54 Usados para representar e armazenar dados; Três tipos básicos: constantes, sinais e variáveis; Cada objeto possui um tipo de dados específico e um conjunto de possíveis valores; Objetos de dados de tipos diferentes não podem ser atribuídos um ao outro. Ex: somar 101(Bit) e 011(Std_logic).

55 Assumem apenas um valor em todo o código. Declaração: constant <identificador>: <tipo> := <valor> Ex: constant errado : boolean := False; Ex: constant parte_ram : bit_vector(3 downto 0) := 1110; Podem ser declaradas em qualquer parte do código Constante com valor global: Package (uso mais freqüente) Somente no contexto em que foi declarada: entity, architecture, process, function

56 Representam ligações entre elementos; Comunicação de módulos em uma estrutura Temporizados. Declaração: signal <identificador>: <tipo> [:= valor]; Podem ser declaradas: Globalmente: Package Internamente: architecture (mais utilizado)

57 Utilizados para armazenar valores intermediários entre expressões; Atribuição imediata; Declaração: variable <identificador>: <tipo> [:= valor]; Podem ser declaradas apenas em processos (variáveis locais); Podem corresponder a registradores (processos sem temporização) ou não (processos com temporização);

58 Quando utiliza-se sinal, a atribuição ocorre no final do processo, enquanto que a atribuição na variável ocorre simultaneamente. Diferença entre as atribuições: <= (atribuição de sinal) := (atribuição de variável) Dentro de um processo (atribuições sequenciais) um sinal só pode ter atribuído um valor de cada vez.

59 D <= 2; process (C, D) begin A <= 2; B <= A + C; A <= D +1; E <= A * 2; end process; process (C, D) begin A <= 2; B <= A + C; A <= D +1; E <= A * 2; end process; process (C, D) begin A <= 2; B <= A + C; A <= D +1; E <= A * 2; end process; process (C, D) begin A <= 2; B <= A + C A <= D +1; E <= A * 2; end process; A = 1 B = 1 C = 1 D = 1 E = 1 process (C, D) begin A <= 2; B <= A + C; A <= D +1; E <= A * 2; end process; A = 1 B = 1 C = 1 D = 2 E = 1 process (C, D) begin A <= 2; B <= A + C; A <= D +1; E <= A * 2; end process; A = 1 A <= 2 B = 1 C = 1 D = 2 E = 1 process (C, D) begin A <= 2; B <= A + C; A <= D +1; E <= A * 2; end process; A = 1 A <= 2 B = 1 B <= A + C C = 1 D = 2 E = 1 process (C, D) begin A <= 2; B <= A + C; A <= D +1; E <= A * 2; end process; Não atualiza A = 1 A <= D + 1 B = 1 B <= A + C C = 1 D = 2 E = 1 A = 1 A <= D + 1 B = 1 B <= A + C C = 1 D = 2 E = 1 E <= A * 2; A = 1 A <= 3 B = 1 B <= 2 C = 1 D = 2 E = 1 E <= 2; A = 3 B = 2 e não 3 C = 1 D = 2 E = 2 e não 6 A diferença entre os valores deve-se a forma de atribuição

60 D <= 2; process (C, D) variable Av, Bv, Ev : integer := 0; begin Av := 2; Bv := Av + C; Av := D +1; Ev := Av * 2; A <= Av; B <= Bv; E <= Ev; end process; A = 1 B = 1 C = 1 D = 2 E = 1 process (C, D) variable Av, Bv, Ev : integer := 0; begin Av := 2; Bv := Av + C; Av := D +1; Ev := Av * 2; A <= Av; B <= Bv; E <= Ev; end process; A = 1 Av = 2 B = 1 Bv = 3 C = 1 D = 2 E = 1 Ev = 0 process (C, D) variable Av, Bv, Ev : integer :=0; begin Av := 2; Bv := Av + C; Av := D +1; Ev := Av * 2; A <= Av; B <= Bv; E <= Ev; end process; A = 1 Av = 0 B = 1 Bv = 0 C = 1 D = 2 E = 1 Ev = 0 process (C, D) variable Av, Bv, Ev : integer := 0; begin Av := 2; Bv := Av + C; Av := D +1; Ev := Av * 2; A <= Av; B <= Bv; E <= Ev; end process; A = 1 Av = 3 B = 1 Bv = 3 C = 1 D = 2 E = 1 Ev = 0 process (C, D) variable Av, Bv, Ev : integer := 0; begin Av := 2; Bv := Av + C; Av := D +1; Ev := Av * 2; A <= Av; B <= Bv; E <= Ev; end process; A = 1 Av = 2 B = 1 Bv = 0 C = 1 D = 2 E = 1 Ev = 0 process (C, D) variable Av, Bv, Ev : integer := 0; begin Av := 2; Bv := Av + C; Av := D +1; Ev := Av * 2; A <= Av; B <= Bv; E <= Ev; end process; A = 1 Av = 3 B = 1 Bv = 3 C = 1 D = 2 E = 1 Ev = 6

61

62 PARTE III : CIRCUITOS COMBINACIONAIS

63 Architecture (Arquitetura) Descrição comportamental: descreve o que o sistema deve fazer de forma abstrata Descrição por fluxo de dados (data-flow): descreve o que o sistema deve fazer utilizando expressões lógicas Descrição estrutural: descreve como é o hardware em termos de interconexão de componentes

64 Comandos paralelos: operam simultaneamente, geralmente, sem comunicação entre si Comandos concorrentes: operam ao mesmo tempo com uma cooperação implícita na comunicação entre eles 64

65 Usados para imitar a natureza concorrente e paralela do hardware Um comando do tipo: a <= b XOR c Será executado apenas quando os sinais da direita mudam o valor e não por ordem de aparecimento na descrição ou no fluxo de controle 65

66 Exemplo: ou-exclusivo (XOR) LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY xor2 IS PORT ( a, b : IN STD_LOGIC; s : OUT STD_LOGIC); END xor2; ARCHITECTURE behavior OF xor2 IS SIGNAL int1, int2 : STD_LOGIC; BEGIN int1 <= NOT a AND b; int2 <= a AND NOT b; s <= int1 OR int2; END behavior; s <= int1 OR int2 só será executado se alguma modificação de a ou b provocarem alguma modificação em um ou ambos os sinais int1 e int2. A ordem de aparecimento na descrição em nada modifica o resultado. 66

67 WHEN-ELSE Atribuição condicional de sinais. WITH-SELECT Atribuição de sinal com escolha. PROCESS 67

68 Atribuição de sinal condicional LABEL: <sinal> <= <expressão> WHEN <expressão_booleana> ELSE <expressão> WHEN <expressão_booleana> ELSE <expressão> 68

69 ENTITY teste IS PORT (a, b, c : IN integer; z : OUT integer); END teste; ARCHITECTURE behavior OF teste IS SIGNAL x : integer; BEGIN x <= 3; z <= a WHEN (x > 3) ELSE b WHEN (x < 3) ELSE c; END behavior; 69

70 As opções de escolha são definidas por expressões que retornam um valor booleano. Como WHEN-ELSE define uma prioridade na ordem das opções, o circuito equivalente corresponde a uma cadeia de seletores. s0 <= i0 OR i1 WHEN na = 8 OR nb = 2 ELSE i1 WHEN na = 3 OR nb = 5 ELSE i0 AND i1 WHEN na = 7 ELSE i0; 70

71 Exemplo: Multiplexador de 1 bit D0 D1 D 0 S MUX A D 1 S A D0, D1 = Entradas A = Sinal S = Saída

72 LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY Mux_1b IS PORT ( D0, D1, Sinal : IN std_logic; Saida : OUT std_logic ); END Mux_1b; ARCHITECTURE behavior_we OF Mux_1b IS BEGIN Saida <= D0 WHEN Sinal = 0 ELSE D1 WHEN Sinal = 1 ; END behavior;

73 LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY decod3to8 IS PORT ( endereco : IN STD_LOGIC_VECTOR(2 DOWNTO 0); Saida : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END decod3to8; ARCHITECTURE behav OF decod3to8 IS BEGIN Saida <= WHEN endereco = 000 ELSE WHEN endereco = 001 ELSE WHEN endereco = 010 ELSE WHEN endereco = 011 ELSE WHEN endereco = 100 ELSE WHEN endereco = 101 ELSE WHEN endereco = 110 ELSE WHEN endereco = 111 ; END behav;

74 Atribuição de sinal selecionada WITH <expressão> SELECT <sinal> <= <expressão_a> WHEN <condicao_1>, <expressão_b> WHEN <condicao_2>, <expressão_c> WHEN <condicao_3> [ <condicao_4>], <expressão_d> WHEN OTHERS; 74

75 As condições são mutuamente exclusivas Não contém uma prioridade como WHEN-ELSE As condições podem ser agrupas através do delimitador, equivalente a OU TO e DOWNTO podem ser empregadas para faixa de valores OTHERS é válida, como última alternativa 75

76 Exemplos WITH s0 SELECT -- s0 tipo CHARACTER x0 <= i0 AND i1 WHEN a, i0 OR i1 WHEN b c, i0 XOR i1 WHEN d TO g, i0 WHEN x DOWNTO k, i1 WHEN OTHERS; WITH b1 AND b0 SELECT -- b1 e b0 tipo BIT x1 <= i0 WHEN 0, i1 WHEN 1 ; 76

77 Exemplo: Multiplexador de 8 bits com 4 entradas D0 8 D1 8 D2 8 D3 8 Sinal MUX 2 Saída 8

78 LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY Mux_8b IS PORT ( D0, D1, D2, D3 : IN STD_LOGIC_VECTOR(7 DOWNTO 0); Sinal : IN STD_LOGIC_VECTOR (1 DOWNTO 0); Saida : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END Mux_8b; ARCHITECTURE behavior OF Mux_8b IS BEGIN WITH Sinal SELECT Saida <= D0 WHEN 00, D1 WHEN 01, D2 WHEN 10, D3 WHEN OTHERS; END behavior;

79 LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY decod3to8 IS PORT ( endereco : IN BIT_VECTOR(2 DOWNTO 0); Saida : OUT BIT_VECTOR(7 DOWNTO 0) ); END decod3to8; ARCHITECTURE behavior OF decod3to8 IS BEGIN WITH endereco SELECT Saida <= WHEN 000, WHEN 001, END behavior; WHEN 010, WHEN 011, WHEN 100, WHEN 101, WHEN 110, WHEN 111 ;

80 Compostos de: Parte declarativa Parte de comandos seqüenciais Estrutura nome: PROCESS (lista de sensibilidade) -- declarações de tipos, constantes,variáveis -- não é permitido declaração de sinais BEGIN -- comandos seqüenciais END PROCESS nome; 80

81 Processos são concorrentes entre si Dentro de um processo, a execução é sequencial O processo é executado até o último comando e suspenso até que ocorra um evento em sua lista de sensibilidade A lista de sensibilidade é composta por sinais e entradas Um evento em qualquer desses sinais dispara o processo 81

82 Seguem a ordem de aparecimento no código Comandos seqüências só podem ser usados dentro de processos (process) Processos podem ser usados para modelar os diferentes componentes de um sistema Processos são concorrentes entre si 82

83 IF-THEN-ELSE CASE NULL FOR WHILE (* não sintetizável) 83

84 IF <condição1> THEN <comandos>; ELSIF <condição2> THEN <comandos>; ELSE IF <condição3> THEN <comandos>; END IF; END IF; 84

85 Exemplo IF na = 3 THEN s0 <= i0 OR i1; s1 <= i3; ELSIF na = 8 OR y = 1 THEN s0 <= i1; s1 <= i4; ELSE s0 <= i0 AND i1; s1 <= i5; END IF; 85

86 Exemplo 2: Multiplexador LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY mux2to1 IS PORT (D0, D1, X : IN STD_LOGIC; S: OUT STD_LOGIC ); END mux2to1; ARCHITECTURE behavior OF mux2to1 IS BEGIN; PROCESS (D0, D1, X) BEGIN IF X = 0 THEN S <= D0; ELSE S <= D1; END IF; END PROCESS; END behavior; 86

87 Seleciona a execução que ocorrerá de uma lista de alternativas Equivale ao comando WITH-SELECT CASE <seleção> IS WHEN <condicao1> => <comandos>; WHEN <condicao2> TO <condicao3> => <comandos>; WHEN <condicao4> <condicao5> => <comandos>; WHEN others => <comandos>; END CASE; 87

88 Exemplo CASE na IS WHEN 3 => s0 <= i0 OR i1; s1 <= i3; WHEN 7 TO 12 => s0 <= i1; s1 <= i4; WHEN OTHERS => s0 <= i0 AND i1; s1 <= i5; END CASE; 88

89 ... PROCESS (sel, en) BEGIN y <= ; IF (en = 1 ) THEN CASE sel IS WHEN 000 => y(0) <= 0 ; WHEN 001 => y(1) <= 0 ; WHEN 010 => y(2) <= 0 ; WHEN 011 => y(3) <= 0 ; WHEN 100 => y(4) <= 0 ; WHEN 101 => y(5) <= 0 ; WHEN 110 => y(6) <= 0 ; WHEN 111 => y(7) <= 0 ; END CASE; END IF; END PROCESS; Ao utilizar processos, um erro comum é esquecer de atribuir a uma saída um valor default. Todas as saídas devem ter valores defaults. Neste exemplo, se não fosse atribuído a y o valor default , nenhum valor seria atribuído a y caso en = 0.

90 Não realiza nenhuma operação A execução é passada para o próximo comando Especialmente útil na construção CASE WHEN que precisa cobrir todos os valores da expressão de escolha mas para alguns valores não deve ser feito nada em um dado projeto 90

91 FOR FOR <parâmetro> IN <intervalo> LOOP <comandos>; END LOOP; O parâmetro é tratado internamente como uma constante e não pode ser alterado durante a execução do loop; Existe o loop WHILE, mas não é sintetizável.

92 Exemplo: Comparador de 4 bits a(3 downto 0) b(3 downto 0) Architecture equals se a = b então Equals = 1 senão Equals = 0

93 Descrição por Data-Flow -- comparador de 4 bits entity comp4 is port ( a, b: in bit_vector (3 downto 0); equals: out bit ); end comp4; architecture fluxo of comp4 is begin equals = 1 when (a=b) else O ; end fluxo;

94 Descrição Comportamental -- comparador de 4 bits entity comp4 is port ( a, b: in bit_vector (3 downto 0); equals: out bit ); end comp4; architecture comport of comp4 is begin comp: process (a,b) -- lista de sensibilidade begin if a = b then equals = 1 ; else equals = O ; end if; end process comp; end comport;

95 Descrição Estrutural -- comparador de 4 bits entity comp4 is port ( a, b: in bit_vector (3 downto 0); equals: out bit ); end comp4; architecture estrut of comp4 is signal x: bit_vector (3 downto 0); component xnor is port (a, b: in bit; equals: out bit ); end component; begin U0: xnor port map (a(0), b(0), x(0)); U1: xnor port map (a(1), b(1), x(1)); U2: xnor port map (a(2), b(2), x(2)); U3: xnor port map (a(3), b(3), x(3)); U4: and4 port map (x(0), x(1), x(2), x(3), equals); end estrut;

96 É uma entidade de projeto empregada na arquitetura de uma outra entidade A utilização desses elementos permite a interligação de múltiplas entidades de projeto, de modo a formar uma entidade mais complexa em um projeto hierárquico 96

97 Para a utilização é necessária a declaração do componente Empregando a palavra COMPONENT no lugar de ENTITY COMPONENT nome_componente_x GENERIC (n : tipo_n := valor; -- lista de genéricos PORT ( sinal_a : modo_a tipo_sinal_a;-- lista de portas sinal_b : modo_b tipo_sinal_b; sinal_c : modo_c tipo_sinal_c); END COMPONENT; 97

98 A solicitação é um comando concorrente que consiste em um rótulo, o nome do componente e o mapa de portas (PORT MAP) -- rotulo nome mapa lista x1: componente_x PORT MAP( a(1), b(1), c(1) ); -- posicional x2: componente_x PORT MAP( sianl_b => b(1), sinal_a => a(1), sinal_c => c(1) ); -- nomeada x3: componente_y PORT MAP( sinal_x => x(1), sinal_y => OPEN ) -- nomeada 98

99 Posicional A lista de sinais no mapa deve seguir a mesma ordem estabelecida na declaração do componente Nomeada Uma novaseqüência definida no mapa A palavra OPEN indica que o sinal do componente não é conectado a nenhum sinal da arquitetura 99

100 Especificando a Estrutura de um Sistema O component é exatamente a descrição de um componente O port map é um mapeamento deste componente em um sistema maior.

101 Programa 1 Programa Arquivo componente_inv.vhd -- Modelo do inversor Arquivo componente_and.vhd -- Modelo da porta AND library IEEE; use IEEE.std_logic_1164.all; entity componente_inv is port( x : in std_logic; y : out std_logic ); end componente_inv; architecture arquitetura_inv of componente_inv is begin y <= not x; end arquitetura_inv; library IEEE; use IEEE.std_logic_1164.all; entity componente_and is port( a : in std_logic; b : in std_logic; c : out std_logic ); end componente_and; architecture arquitetura_and of componente_and is begin c <= a and b; end arquitetura_and;

102 Programa Arquivo componente_sistema.vhd library IEEE; use IEEE.std_logic_1164.all; entity componente_sistema is port( in1 : in std_logic; in2 : in std_logic; in3 : in std_logic; in4 : in std_logic; out1 : out std_logic ); end componente_sistema; architecture arquitetura_sistema of componente_sistema is component componente_and port( a: in std_logic; b : in std_logicbit; c : out std_logic); end component; component componente_inv port( x: in std_logic; y : out std_logic); end component; signal s1, s2, s3, s4 : std_logic; begin and1 : componente_and port map (a => in1, b => in2, c => s1); and2 : componente_and port map (a => in3, b => in4, c => s2); and3 : componente_and port map (a => s3, b => s4, c => ut1); inv1 : componente_inv port map (x => s1, y => s3); inv2 : componente_inv port map (x => s2, y => s4); end arquitetura_sistema;

103 Somador Completo de 1 bit sum = a XOR b XOR cin cout = (a AND b) OR (a AND cin) OR (b AND cin) A B CIN SUM COUT

104 LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY full_adder IS PORT ( cin: IN std_logic; a: IN std_logic; b: IN std_logic; sum: OUT std_logic; cout: OUT std_logic ); END full_adder; ARCHITECTURE behavior OF full_adder IS BEGIN sum <= a XOR b XOR cin; cout <= (a AND b) OR (cin AND (a OR b)); END behavior;

105 Somador de 4 bits COUT CIN ADDER A(3 downto 0) SUM(3 downto 0) B(3 downto 0) COUT ADDER 7 CIN COUT A(7) ADDER 1 A(1) COUT ADDER 0 CIN A(0) S(3) B(2) S(1) B(1) S(0) B(0)

106 Somador de 4 bits LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY adder_4bits IS PORT ( cin: IN std_logic; a: IN std_logic_vector(3 DOWNTO 0); b: IN std_logic_vector(3 DOWNTO 0); sum: OUT std_logic_vector(3 DOWNTO 0); cout: OUT std_logic ); END adder_4bits;

107 ARCHITECTURE structure OF adder_4bits IS SIGNAL c: std_logic_vector(0 TO 2); COMPONENT full_adder IS PORT ( cin : IN std_logic; a : IN std_logic; b : IN std_logic; sum : OUT std_logic; cout : OUT std_logic ); END COMPONENT;

108 BEGIN FULL_ADDER_0: full_adder PORT MAP (cin => cin, a => a(0), b => b(0), sum => sum(0), cout => c(0)); FULL_ADDER_1: full_adder PORT MAP (cin => c(0), a => a(1), b => b(1), sum => sum(1), cout => c(1)); FULL_ADDER_2: full_adder PORT MAP (cin => c(1), a => a(2), b => b(2), sum => sum(2), cout => c(2)); FULL_ADDER_3: full_adder PORT MAP (cin => c(2), a => a(3), b => b(3), sum => sum(3), cout => cout); END structure;

109 PARTE IV : CIRCUITOS SEQUENCIAIS

110 Ativado apenas quando clk sofre alterações D não altera o processo 11 0

111 LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY dff_logic IS PORT (d, clk : IN BIT; q : OUT BIT); END dff_logic; ARCHITECTURE behavior OF dff_logic IS BEGIN PROCESS(clk) BEGIN IF (clk event AND clk = 1 ) THEN q <= d; END IF; END PROCESS; END behavior; 11 1

112 A condição clk event é ativada quando ocorre variação no valor de clk; A utilização de clk event em conjunto com a lista de sensibilidade é redundante, mas necessária devido ao fato de que algumas ferramentas de síntese ignoram a lista de sensibilidade; Uma mudança do clock pode ocorrer de 0 para 1 ou de 1 para 0, desse modo é necessária a condição adicional clk = 1 ou clk = 0 ; Em STD_LOGIC, usa-se rising_edge para transição de subida de clock e falling_edge para transição de descida. 11 2

113 ARCHITECTURE behavior OF dff_logic IS BEGIN PROCESS(clk, reset) BEGIN IF reset = 1 THEN q <= (others => 0 ); ELSIF RISING_EDGE(clk) THEN q <= d; END IF; END PROCESS; END behavior; 11 4

114 ARCHITECTURE behavior OF dff_logic IS BEGIN PROCESS(clk, preset) BEGIN IF preset = 1 THEN q <= (others => 1 ); ELSIF RISING_EDGE(clk) THEN q <= d; END IF; END PROCESS; END behavior; 11 5

115 ARCHITECTURE behavior OF reg_logic IS BEGIN PROCESS(clk, reset) BEGIN IF (reset = 1 ) THEN q <= (others => 0 ); ELSIF RISING_EDGE(clk) THEN IF (preset = 1 ) THEN q <= (others => 1 ); ELSE q <= d; END IF; END IF; END PROCESS; END behavior; 11 6

116 ARCHITECTURE behavior OF reg_logic IS BEGIN PROCESS(clk, reset, preset) BEGIN IF (reset = 1 ) THEN q <= (others => 0 ); ELSIF (preset = 1 ) THEN q <= (others => 1 ); ELSIF RISING_EDGE(clk) THEN q <= d; END IF; END PROCESS; END behavior; 11 7

117 São usadas para especificar e implementar unidades de controle Podem ser representadas por meio de um diagrama de estados 11 8

118 Exemplo: entrada = 0 A entrada = 1 C entrada = 1 B entrada = 0 Estado Saída A 0 B 0 C 1 Cada transição ocorre em um evento do relógio, tanto de um estado para outro quanto para o mesmo estado 11 9

119 Seqüência de passos: Cada estado é transcrito utilizando o CASE A transição entre estados é realizada utilizando o IF-THEN-ELSE Para criar os estados é necessário definir um tipo enumerado (enumeration type) contendo o nome dos estados e os sinais para cada tipo: TYPE <tipo_estado> IS (nome_estado, nome_estado); SIGNAL estado : <tipo_estado> São necessários dois processos: um realiza as operações dentro dos estados e o outro atualiza o estado. 12 0

120 Máquina de estados do exemplo anterior: LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY maquina_estados IS PORT ( entrada : IN std_logic; clock : IN std_logic; saida : OUT std_logic ); END maquina_estados; 12 1

121 ARCHITECTURE behavior OF maquina_estados IS TYPE estado IS (A, B, C); SIGNAL estado_atual, proximo_estado : estado; BEGIN PROCESS (clock, entrada) BEGIN CASE estado_atual IS WHEN A => saida <= 0 ; IF (entrada = 1 ) THEN proximo_estado <= B; END IF; 12 2

122 WHEN B => saida <= 0 ; IF (entrada = 0 ) THEN proximo_estado <= C; END IF; WHEN C => saida <= 1 ; proximo_estado <= A; END CASE; END PROCESS; 12 3

123 ATUALIZA_ESTADO : PROCESS (clock) BEGIN IF (clock event AND clock = 1 ) THEN estado_atual <= proximo_estado; END IF; END PROCESS ATUALIZA_ESTADO; END behavior; O primeiro processo realiza as operações dentro dos estados e indica qual será a transição de estado O segundo processo (ATUALIZA_ESTADO) realiza a transição entre estados quando ocorre um evento de subida do relógio (clock) 12 4

124 PARTE V : CIRCUITOS HARDWIRED

125 Descrição de um circuito que realiza a raiz quadrada de um número natural; Obtenção de um modelo de hardware a partir de um algoritmo; Descrição das Partes Operativa e de Controle em VHDL;

126 d <- 2; s <- 4; Fazer d <- d + 2; r <- d / 2; s <- s + d + 1; Enquanto (s < = x);

127 Registradores Multiplexadores d = 2; s = 4; x = DATA_IN d = d + 2 r = d / 2 s = s + d + 1 Somador Divisão por 2 = Deslocador à direita s > x Flag para controle Maior / menor DATA_OUT = r

128 Composta de: 1 Multiplexador para o valor de D 1 Multiplexador para o valor de S 2 Multiplexadores para os valores de entrada do somador 1 Multiplexador para o bit de seleção do somador 4 Registradores (D, S, R e X) 1 Somador para o cálculo de D e S 1 deslocador para o valor de R

129 d <- 2; s <- 4; Fazer d <- d + 2; r <- d / 2; s <- s + d + 1; Enquanto (s < = x);

130 d = 2; s = 4; x = DATA_IN Registradores d = d + 2 r = d / 2 s = s + d + 1 s > x DATA_OUT = r

131 Dados dos registradores utilizados: Tamanho: N bits Possuem write enable Circuitos síncronos WE 1 Entrada N REG Saida N clk

132 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY reg_gen IS GENERIC (N : POSITIVE := 8); -- Default value PORT ( clk : IN BIT; DATA_IN : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0); WE : IN STD_LOGIC; DATA_OUT : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0) ); END reg_gen; ARCHITECTURE behavior OF reg_gen IS BEGIN PROCESS(clk) BEGIN IF (clk'event AND clk = 1') THEN IF ( WE = '1') THEN DATA_OUT <= DATA_IN; END IF; END IF; END PROCESS; END behavior;

133 WED 1 WES 1 D S WER 1 R clk WEX 1 X

134 d = 2; s = 4; x = DATA_IN Multiplexadores d = d + 2 r = d / 2 s = s + d + 1 s > x DATA_OUT = r

135 Dados dos multiplexadores utilizados para D e S: Tamanho: N bits Possuem 2 entradas Circuitos Combinacionais Seleção 1 Entrada_1 N Entrada_2 N M U X Saida N

136 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux_gen IS GENERIC (N : POSITIVE := 8); -- Default value PORT ( DATA_A, DATA_B : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0); SM : IN STD_LOGIC; DATA_OUT : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0) ); END mux_gen; ARCHITECTURE behavior OF mux_gen IS BEGIN PROCESS BEGIN IF (SM = '0') THEN DATA_OUT <= DATA_A; ELSE DATA_OUT <= DATA_B; END IF; END PROCESS; END behavior;

137 SMD M U X D 1 WED 1 D SMS M U X S 1 WES 1 WER 1 S R clk WEX 1 X

138 d = 2; s = 4; x = DATA_IN d = d + 2 Cin = 0 r = d / 2 s = s + d + 1 s > x DATA_OUT = r Somador Cin = 1 S X = S + (-X) + 1 (Complemento de 2)

139 Dados da ULA Tamanho: N bits Circuitos Combinacionais Para d + 2 Entrada_1 = d Entrada_2 = 2 Para s + d + 1 Entrada_1 = d Entrada_2 = s Para s - x Entrada_1 = -x Entrada_2 = s CIN 1 Entrada_1 N Entrada_2 N U L A Saida N

140 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ARCHITECTURE behavior OF ula IS SIGNAL int_carry : STD_LOGIC_VECTOR(N-1 DOWNTO 0); ENTITY ula IS GENERIC (N : POSITIVE := 8); -- Default value SIGNAL sum_t DOWNTO 0); : STD_LOGIC_VECTOR(N-1 PORT ( Cin : IN STD_LOGIC; BEGIN A, B : IN STD_LOGIC_VECTOR(N-1 sum_t <= A(N-1 DOWNTO 0) XOR B(N-1 DOWNTO 0); DOWNTO 0) XOR (int_carry (N-2 DOWNTO 0) &Cin); Sum : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0); Cout END ula; : OUT STD_LOGIC); int_carry(0) <= ((A(0) OR B(0)) AND Cin) OR (A(0) AND B(0));

141 CASCADE_CARRY: FOR I in 1 TO N-1 GENERATE int_carry(i) <= ((A(I) OR B(I)) AND int_carry(i-1)) OR (A(I) AND B(I)); END GENERATE CASCADE_CARRY; -- PROCESS BEGIN IF ( (sum_t(n - 1) = '1') OR ( A = NOT B)) THEN ELSE Cout <= '1'; Cout <= '0'; END IF; END PROCESS; Sum <= sum_t; END behavior; Necessário para S X, mas não para X S

142 2 4 SMD SMS M U X D M U X S clk 1 WED 1 WES 1 WER 1 WEX 1 D 1 M CIN= SM3 S R X 2 SM1 SM2 U X A M U X B MUX_UL A U L A N

143 d = 2; s = 4; x = DATA_IN d = d + 2 Divisão por 2 Deslocador à direita r = d / 2 s = s + d + 1 s > x DATA_OUT = r

144 Dados do deslocador Tamanho: N bits Desloca apenas à direita Circuito Combinacional Entrada N D E S L Saida N

145 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY DESLOCADOR IS GENERIC (N : POSITIVE := 8); -- Default value PORT ( DATA_IN : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0); DATA_OUT : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0)); END DESLOCADOR; ARCHITECTURE behavior OF DESLOCADOR IS BEGIN DATA_OUT <= '0' & DATA_IN(N-1 DOWNTO 1); END behavior;

146 clk WES 1 WED 1 WEX 1 WER 1 D S R X M U X D M U X S SMD SMS 1 1 CIN U L A M U X A SM1 M U X B SM MUX_UL A D E S L N SM3

147 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY OP IS PORT ( clk : IN BIT; DATA_IN : IN STD_LOGIC_VECTOR(15 DOWNTO 0); DATA_OUT : OUT STD_LOGIC_VECTOR(15 DOWNTO 0); N : OUT STD_LOGIC; CTR : IN STD_LOGIC_VECTOR(8 DOWNTO 0) ); END OP;

148 ARCHITECTURE estrutural OF OP IS SIGNAL sig_muxd, sig_muxs : STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL sig_d, sig_s, sig_r, sig_x : STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL sig_muxa, sig_muxb : STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL sig_sula, sig_desl : STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL cin : STD_LOGIC; SIGNAL sig_muxd1, sig_muxs1, sig_muxa1, sig_muxb0 : STD_LOGIC_VECTOR(15 DOWNTO 0); ALIAS smd : STD_LOGIC IS CTR(8); ALIAS sms : STD_LOGIC IS CTR(7); ALIAS wed : STD_LOGIC IS CTR(6); ALIAS wes : STD_LOGIC IS CTR(5); ALIAS wer : STD_LOGIC IS CTR(4); ALIAS wex : STD_LOGIC IS CTR(3); ALIAS sm1 : STD_LOGIC IS CTR(2); ALIAS sm2 : STD_LOGIC IS CTR(1); ALIAS sm3 : STD_LOGIC IS CTR(0);

149 COMPONENT mux_gen IS GENERIC (N : POSITIVE); PORT ( DATA_A, DATA_B : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0); SM : IN STD_LOGIC; DATA_OUT : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0)); END COMPONENT; COMPONENT mux_1 IS PORT ( DATA_A, DATA_B : IN STD_LOGIC; SM : IN STD_LOGIC; DATA_OUT : OUT STD_LOGIC); END COMPONENT;

150 COMPONENT reg_gen IS GENERIC (N : POSITIVE); PORT (clk : IN BIT; DATA_IN : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0); WE : IN STD_LOGIC; DATA_OUT : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0)); END COMPONENT; COMPONENT DESLOCADOR IS GENERIC (N : POSITIVE); PORT (DATA_IN : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0); DATA_OUT : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0)); END COMPONENT;

151 COMPONENT ula IS GENERIC (N : POSITIVE); PORT (Cin : IN STD_LOGIC; A, B : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0); Sum : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0); Cout : OUT STD_LOGIC); END COMPONENT; -- BEGIN -- sig_muxd1 <= " "; -- 2 sig_muxs1 <= " "; -- 4 sig_muxb0 <= " "; -- 2 sig_muxa1 <= NOT(sig_x);

152 MUXD : mux_gen GENERIC MAP (N => 16) PORT MAP (sig_sula, sig_muxd1, smd, sig_muxd); -- MUXS : mux_gen GENERIC MAP (N => 16) PORT MAP (sig_sula, sig_muxs1, sms, sig_muxs); -- REGD : reg_gen GENERIC MAP (N => 16) PORT MAP (clk, sig_muxd, wed, sig_d); -- REGS : reg_gen GENERIC MAP (N => 16) PORT MAP (clk, sig_muxs, wes, sig_s);

153 REGR : reg_gen GENERIC MAP (N => 16) PORT MAP (clk, sig_desl, wer, sig_r); -- REGX : reg_gen GENERIC MAP (N => 16) PORT MAP (clk, DATA_IN, wex, sig_x); -- MUXA : mux_gen GENERIC MAP (N => 16) PORT MAP (sig_d, sig_muxa1, sm2, sig_muxa); -- MUXB : mux_gen GENERIC MAP (N => 16) PORT MAP (sig_muxb0, sig_s, sm1, sig_muxb);

154 MUXULA : mux_1 PORT MAP (sm2, sm1, sm3, cin); -- Adder : ula GENERIC MAP (N => 16) PORT MAP (cin, sig_muxa(15 downto 0), sig_muxb(15 downto 0), sig_sula(15 DOWNTO 0), N); -- desl : DESLOCADOR GENERIC MAP (N => 16) PORT MAP (sig_sula, sig_desl); -- DATA_OUT <= sig_r; END estrutural;

155

156 O diagrama de estados terá 4 estados, com o seguinte funcionamento: Estado1 : d = 2; s = 4; x = DATA_IN; Valores de saída dos bits de controle ready/ Estado2: d = d +2; r = d/2; Valores de saída dos bits de controle pronto s1 pronto/ ready s2 Estado3: s = s + d + 1; Valores de saída dos bits de controle s3 Estado4: S > X? Valores de saída dos bits de controle s4

157 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY controle IS PORT ( clk : IN STD_LOGIC; NEG : IN STD_LOGIC; -- bit que verifica se s > x READY : IN STD_LOGIC; -- bit de inicializacao PRONTO : OUT STD_LOGIC; -- bit de parada SAIDA : OUT STD_LOGIC_VECTOR(8 DOWNTO 0) ); END controle;

158 ARCHITECTURE behavior OF controle IS TYPE StateType IS (s1, s2, s3, s4); SIGNAL estado_atual, proximo_estado : StateType; BEGIN outro_estado : PROCESS (estado_atual) BEGIN END PROCESS outro_estado;

159 Organização dos bits de controle: SAIDA(8 DOWNTO 0); BIT FUNÇÃO SMD (8) SMS (7) WED (6) WES (5) WER (4) WEX (3) SM1 (2) SM2 (1) SM3 (0) Bit de controle do componente MUXD Bit de controle do componente MUXS Write Enable do registrador D Write Enable do registrador S Write Enable do registrador R Write Enable do registrador X Bit de controle do componente MUX_B Bit de controle do componente MUX_A Bit de controle do componente MUX_ULA

160 CASE estado_atual IS WHEN s1 => SAIDA <= " "; IF (READY = '1') THEN proximo_estado <= s1; ELSE PRONTO <= '0'; proximo_estado <= s2; END IF; -- WHEN s2 => SAIDA <= " "; proximo_estado <= s3; -- WHEN s3 => -- SAIDA <= " "; proximo_estado <= s4; WHEN s4 => SAIDA <= " "; IF (NEG = '0') THEN proximo_estado <= s1; ELSE PRONTO <= '0'; proximo_estado <= s2; END IF; END CASE; PRONTO <= '1';

161 atualiza_estado : PROCESS (clk) BEGIN IF (clk'event AND clk = '1') THEN Estado_atual <= proximo_estado; END IF; END PROCESS atualiza_estado; END behavior; -- rising_edge(clk)

162 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY raiz IS PORT (clk : IN BIT; ENTRADA : IN STD_LOGIC; DATA_IN : IN STD_LOGIC_VECTOR(15 DOWNTO 0); DATA_OUT : OUT STD_LOGIC_VECTOR(15 DOWNTO 0); PRONTO : OUT STD_LOGIC); END raiz; ARCHITECTURE estrutural OF raiz IS -- SIGNAL CTR : STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL N : STD_LOGIC;

163 COMPONENT OP IS PORT (clk : IN BIT; DATA_IN : IN STD_LOGIC_VECTOR(15 DOWNTO 0); DATA_OUT : OUT STD_LOGIC_VECTOR(15 DOWNTO 0); N : OUT STD_LOGIC; CTR : IN STD_LOGIC_VECTOR(8 DOWNTO 0)); END COMPONENT; COMPONENT controle IS PORT (clk : IN BIT; N : IN STD_LOGIC; ENTRADA : IN STD_LOGIC; DATA_OUT : OUT STD_LOGIC_VECTOR(8 DOWNTO 0); PRONTO : OUT STD_LOGIC); END COMPONENT;

164 BEGIN CONTROL: controle PORT MAP (clk, N, ENTRADA, ctr, PRONTO); -- OPERACIONAL: OP PORT MAP (clk, DATA_IN, DATA_OUT, N, ctr); -- END estrutural;

165 Quartus II Web Edition Compilador e Simulador integrados Licença gratuita para estudantes 16 6

166 @leocasillo 16 7

Modelagem de Sistemas com VHDL

Modelagem de Sistemas com VHDL Modelagem de Sistemas com VHDL A abstração empregada por projetistas de sistemas digitais pode ser expressa em dois domínios: No domínio estrutural, um componente é descrito em termos de um conjunto de

Leia mais

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase Curso Superior de Sistemas de Telecomunicações Unidade São José Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase Bases tecnológicas Dispositivos Lógicos Programáveis. Introdução à Tecnologia

Leia mais

Eletrônica Digital para Instrumentação

Eletrônica Digital para Instrumentação G4 Eletrônica Digital para Instrumentação Prof. Márcio Portes de Albuquerque (mpa@cbpf.br) Prof. Herman P. Lima Jr (hlima@cbpf.br) Centro Brasileiro de Pesquisas Físicas Ministério da Ciência e Tecnologia

Leia mais

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase Curso Superior de Sistemas de Telecomunicações Unidade São José Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase Bases tecnológicas Dispositivos Lógicos Programáveis. Introdução à Tecnologia

Leia mais

VHDL Lógica Síncrona. Sinais de Saída. Sinais de Entrada. barreira. carg. VHDL -Lógica Síncrona

VHDL Lógica Síncrona. Sinais de Saída. Sinais de Entrada. barreira. carg. VHDL -Lógica Síncrona VHDL Lógica Síncrona Circuitos combinacionais respondem a estímulos com um atraso que depende de sua implementação Para sincronizar subsistemas em lógica combinacional utiliza-se barreiras temporais, que

Leia mais

Organização e Arquitetura de Computadores II

Organização e Arquitetura de Computadores II Organização e Arquitetura de Computadores II Rômulo Calado Pantaleão Camara Romulo.camara@univasf.edu.br www.univasf.edu.br/~romulo.camara 60h/02h Disciplinas Correlacionadas Programação Org. e Arq. de

Leia mais

O diagrama ASM contém dois elementos básicos: o bloco de estado e o bloco de decisão.

O diagrama ASM contém dois elementos básicos: o bloco de estado e o bloco de decisão. 14 3.2 Projeto da Unidade de Controle (VHDL) 3.2.1 Diagrama ASM (Algorithmic State Machine) ASM é um fluxograma através do qual se representa a seqüência de ações que a unidade de controle de um sistema

Leia mais

Livro texto: VHDL- Descrição e Síntese de Circuitos Digitais Roberto D Amore Editora LTC

Livro texto: VHDL- Descrição e Síntese de Circuitos Digitais Roberto D Amore Editora LTC Livro texto: VHDL- Descrição e Síntese de Circuitos Digitais Roberto D Amore Editora LTC Linguagem para descrever o funcionamento de um sistema (o que e como o sistema faz). O sistema descrito em HDL

Leia mais

LABORG. Parte 3 - VHDL: Processos, Paralelismo e o Comando process. Fernando Gehm Moraes Ney Laert Vilar Calazans

LABORG. Parte 3 - VHDL: Processos, Paralelismo e o Comando process. Fernando Gehm Moraes Ney Laert Vilar Calazans LABORG Parte 3 - VHDL: Processos, Paralelismo e o Comando process Fernando Gehm Moraes Ney Laert Vilar Calazans 31/março/2014 Sumário Ø Introdução Ø Processos em VHDL Ø TRABALHO A FAZER Ø A ENTREGAR 2

Leia mais

Descreva em VHDL, simule no simulador logico e sintetize usando uma ferramenta de CAD para FPGA :

Descreva em VHDL, simule no simulador logico e sintetize usando uma ferramenta de CAD para FPGA : UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMATICA LISTA DE EXERCÍCIOS DE SISTEMAS DIGITAIS Prof. Fernanda Gusmão de Lima Kastensmidt E Marcelo Porto (aluno mestrado PPGC) Descreva em VHDL,

Leia mais

LABORG. Parte 1 Introdução à Simulação em VHDL. Fernando Moraes e Ney Laert Vilar Calazans

LABORG. Parte 1 Introdução à Simulação em VHDL. Fernando Moraes e Ney Laert Vilar Calazans LABORG Parte 1 Introdução à Simulação em VHDL Fernando Moraes e Ney Laert Vilar Calazans atualização - 05/agosto/2013 Mais informações sobre VHDL Web sites sobre VHDL e assuntos relacionados http://www.asic-world.com/vhdl/links.html

Leia mais

Eletrônica Digital para Instrumentação. Prof: Herman Lima Jr hlima@cbpf.br

Eletrônica Digital para Instrumentação. Prof: Herman Lima Jr hlima@cbpf.br G03 Eletrônica Digital para Instrumentação Prof: hlima@cbpf.br Centro Brasileiro de Pesquisas Físicas Ministério da Ciência, Tecnologia e Inovação (MCTI) Eletrônica Digital para Instrumentação Objetivo

Leia mais

Prototipação de Sistemas Digitais. Metodologia de Projetos Cristiano Araújo

Prototipação de Sistemas Digitais. Metodologia de Projetos Cristiano Araújo Prototipação de Sistemas Digitais Metodologia de Projetos Cristiano Araújo Fluxo de projeto Emulação/Implementação do componente de harwdare VHDL/Verilog Simulação FPGAs, CPLDs Síntese p/emulação ASICs

Leia mais

Descrição e Projeto de Circuitos Utilizando VHDL

Descrição e Projeto de Circuitos Utilizando VHDL Descrição e Projeto de Circuitos Utilizando VHDL O projeto de circuitos digitais de forma automatizada se tornou prática industrial comum. As principais vantagens são : Portabilidade de tecnologia Melhor

Leia mais

low): Descreve o que o sistema deve fazer utilizando expressões lógicas.

low): Descreve o que o sistema deve fazer utilizando expressões lógicas. Descrição por fluxo de dados (Data Data-Flow low): Descreve o que o sistema deve fazer utilizando expressões lógicas. Descrição estrutural: Descreve como é o hardware em termos de interconexão de componentes.

Leia mais

Introdução ao VHDL. Circuitos Lógicos. DCC-IM/UFRJ Prof. Gabriel P. Silva. Original por Ayman Wahba

Introdução ao VHDL. Circuitos Lógicos. DCC-IM/UFRJ Prof. Gabriel P. Silva. Original por Ayman Wahba Introdução ao VHDL Circuitos Lógicos DCC-IM/UFRJ Prof. Gabriel P. Silva Original por Ayman Wahba VHDL É uma linguaguem de descrição de hardware, ou seja, uma forma estruturada para a descrição de circuitos

Leia mais

Introdução à Linguagem VHDL

Introdução à Linguagem VHDL Fundamentos de Sistemas Digitais Introdução à Linguagem VHDL prof. Dr. Alexandre M. Amory Referências Sugiro estudarem nesta ordem de preferência: Vahid, Cap 9 Ignorar verilog e SystemC Bem didático! um

Leia mais

4.a Aula Prática Projeto de um Somador de 16 bits com a Linguagem VHDL

4.a Aula Prática Projeto de um Somador de 16 bits com a Linguagem VHDL 4.a Aula Prática Projeto de um Somador de 16 bits com a Linguagem VHDL Prof. Cesar da Costa VHDL é uma linguagem para descrever sistemas digitais utilizada universalmente. VHDL é proveniente de VHSIC Hardware

Leia mais

Universidade Federal Fluminense - UFF Centro Tecnológico - CTC Escola de Engenharia - TCE Departamento de Engenharia de Telecomunicações TET

Universidade Federal Fluminense - UFF Centro Tecnológico - CTC Escola de Engenharia - TCE Departamento de Engenharia de Telecomunicações TET 1 Universidade Federal Fluminense - UFF Centro Tecnológico - CTC Escola de Engenharia - TCE Departamento de Engenharia de Telecomunicações TET Técnicas Digitais A Laboratório nº 3: Somadores. Data do laboratório:

Leia mais

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP. 18/04/2016 Prof. Alexandre - ELP1DLP1 / DEE

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP. 18/04/2016 Prof. Alexandre - ELP1DLP1 / DEE DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP 1 Objetivos da Aula: Introdução à Linguagem VHDL Plano de Ensino Conteúdo Programático 3. Ferramentas de Desenvolvimento 3.4. Editor de texto (programação VHDL ou

Leia mais

Implementação de um Sistema Digital em VHDL Cronômetro para Jogos de Basquete

Implementação de um Sistema Digital em VHDL Cronômetro para Jogos de Basquete - 1 - V 1.0 - De: 02/maio/2012 por Ney Calazans Laboratório de Organização de Computadores-EC V 3.2 - De: 21/abril/2013 por Fernando Gehm Moraes e Ney Calazans Implementação de um Sistema Digital em VHDL

Leia mais

Lab 3. Timing Timing Constraints Simulação

Lab 3. Timing Timing Constraints Simulação Lab 3 Timing Timing Constraints Simulação A. Mariano - 2014 1 VHDL processes Para um designer, process é um bloco de instruções que funciona de maneira sequencial e que é chaveado quando algum dos sinais

Leia mais

Projeto de Circuito Combinacional

Projeto de Circuito Combinacional ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I Projeto de Circuito Combinacional Unidade Lógica e Aritmética (ULA) prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno 2 / 12 ULA Unidade

Leia mais

- Arquitetura de sistemas digitais- Cap 1 - Introdução

- Arquitetura de sistemas digitais- Cap 1 - Introdução - Arquitetura de sistemas digitais- Cap 1 - Introdução Prof. Alan Petrônio - www.ufsj.edu.br/alan - 2012 Conteúdos/propósitos deste capítulo: 1.1 - Relembrando conceitos 1.2 - Arquitetura de computadores

Leia mais

Conceitos de Linguagens de Descrição de Hardware (Verilog, VHDL) Alex Vidigal Bastos alexvbh@gmail.com

Conceitos de Linguagens de Descrição de Hardware (Verilog, VHDL) Alex Vidigal Bastos alexvbh@gmail.com Conceitos de Linguagens de Descrição de Hardware (Verilog, VHDL) 1 Alex Vidigal Bastos alexvbh@gmail.com Objetivos da Aula Apresentar o conceito gerais de Linguagens de Descrição de Hardware (Verilog /

Leia mais

Gustavo G. Parma. Objetivos: O aluno deverá ser capaz de compreender os conceitos básicos de VHDL.

Gustavo G. Parma. Objetivos: O aluno deverá ser capaz de compreender os conceitos básicos de VHDL. Introdução à VHDL Gustavo G. Parma Assunto: Introdução à VHDL. Objetivos: O aluno deverá ser capaz de compreender os conceitos básicos de VHDL. 1 Introdução Teórica VHDL, VHSIC (Very High Speed Integrated

Leia mais

Para testar seu primeiro código utilizando PHP, abra um editor de texto (bloco de notas no Windows) e digite o código abaixo:

Para testar seu primeiro código utilizando PHP, abra um editor de texto (bloco de notas no Windows) e digite o código abaixo: Disciplina: Tópicos Especiais em TI PHP Este material foi produzido com base nos livros e documentos citados abaixo, que possuem direitos autorais sobre o conteúdo. Favor adquiri-los para dar continuidade

Leia mais

Dispositivos Lógicos Programáveis

Dispositivos Lógicos Programáveis PARTE 1 - TEORIA Dispositivos Lógicos Programáveis Os dispositivos lógicos programáveis (PLD Programmable Logic Device) são circuitos integrados programáveis, que possuem um grande número de portas lógicas,

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Conceitos de Linguagens de Programação Aula 07 Nomes, Vinculações, Escopos e Tipos de Dados Edirlei Soares de Lima Introdução Linguagens de programação imperativas são abstrações

Leia mais

GUIA DE LABORATÓRIO DE SISTEMAS DIGITAIS PARA O CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO

GUIA DE LABORATÓRIO DE SISTEMAS DIGITAIS PARA O CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO GUIA DE LABORATÓRIO DE SISTEMAS DIGITAIS PARA O CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO Agosto/2004 V2 INTRODUÇÃO Este guia foi preparado para auxilio às aulas de laboratório para o curso de Engenharia

Leia mais

PRÁTICAS PARA DESENVOLVIMENTO DE PROTÓTIPOS DE CIRCUITOS DIGITAIS COM O KIT EDUCACIONAL DE2

PRÁTICAS PARA DESENVOLVIMENTO DE PROTÓTIPOS DE CIRCUITOS DIGITAIS COM O KIT EDUCACIONAL DE2 UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO PRÁTICAS PARA DESENVOLVIMENTO DE PROTÓTIPOS DE CIRCUITOS DIGITAIS COM O KIT EDUCACIONAL DE2 P R O F. S Í L V I O F E R N A N D E S CRONOGRAMA DO CURSO ATIVIDADE

Leia mais

Circuitos Seqüenciais

Circuitos Seqüenciais Circuitos Seqüenciais Circuitos Lógicos DCC-IM/UFRJ Prof. Gabriel P. Silva Circuitos Seqüenciais Um circuito seqüencial síncrono consiste de um circuito combinacional e uma rede de memória formada por

Leia mais

Eletrônica Digital para Instrumentação. Prof. Herman P. Lima Jr (hlima@cbpf.br) Monitor: Rafael Gama

Eletrônica Digital para Instrumentação. Prof. Herman P. Lima Jr (hlima@cbpf.br) Monitor: Rafael Gama G15 Eletrônica Digital para Instrumentação Prof. Herman P. Lima Jr (hlima@cbpf.br) Monitor: Rafael Gama Centro Brasileiro de Pesquisas Físicas Ministério da Ciência, Tecnologia e Inovação (MCTI) Eletrônica

Leia mais

Componentes do Computador e. aula 3. Profa. Débora Matos

Componentes do Computador e. aula 3. Profa. Débora Matos Componentes do Computador e modelo de Von Neumann aula 3 Profa. Débora Matos O que difere nos componentes que constituem um computador? Princípios básicos Cada computador tem um conjunto de operações e

Leia mais

IE-344B - Tópicos em Comunicações Leitura Complementar Aula 5: FPGA e Fluxo de Projeto

IE-344B - Tópicos em Comunicações Leitura Complementar Aula 5: FPGA e Fluxo de Projeto IE-344B - Tópicos em Comunicações Leitura Complementar Aula 5: FPGA e Fluxo de Projeto 2º Semestre/2007 Fabbryccio A. C. M. Cardoso Marcelo Augusto Costa Fernandes Prof. Responsável: Dalton S. Arantes

Leia mais

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Tipos de Dados Aula 5 Prof.: Edilberto M. Silva http://www.edilms.eti.br Prof. Edilberto Silva / edilms.eti.br Tipos de Dados Sistema de tipos Tipos de Dados e Domínios Métodos

Leia mais

LABORG. Parte 5 Projeto de um circuito digital de média complexidade Parte 2. Fernando Gehm Moraes Matheus Trevisan

LABORG. Parte 5 Projeto de um circuito digital de média complexidade Parte 2. Fernando Gehm Moraes Matheus Trevisan LABORG Parte 5 Projeto de um circuito digital de média complexidade Parte 2 Fernando Gehm Moraes Matheus Trevisan 0/maio/2015 Relógio de Xadrez 1. Em campeonatos, o xadrez é jogado usando um relógio. A

Leia mais

Instituto Tecnológico de Aeronáutica - ITA Divisão de Engenharia Eletrônica Departamento de Eletrônica Aplicada Laboratório de EEA-21

Instituto Tecnológico de Aeronáutica - ITA Divisão de Engenharia Eletrônica Departamento de Eletrônica Aplicada Laboratório de EEA-21 Instituto Tecnológico de Aeronáutica - ITA Divisão de Engenharia Eletrônica Departamento de Eletrônica Aplicada Laboratório de EEA-21 7ª Experiência Síntese de Circuitos Sequenciais Síncronos 1. Objetivos

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 5 CONJUNTO DE INSTRUÇÕES Prof. Luiz Gustavo A. Martins Introdução O que é um conjunto de instruções? Coleção completa das instruções que a CPU é capaz de executar (entende).

Leia mais

FPGA & VHDL. Tutorial Aula 1. Computação Digital

FPGA & VHDL. Tutorial Aula 1. Computação Digital FPGA & VHDL Tutorial Aula 1 Computação Digital FPGA Field Programmable Gate Array Dispositivo lógico contendo uma matriz de: Células lógicas genéricas Configuráveis ( programáveis ) para desempenhar uma

Leia mais

EA075 Processadores Dedicados

EA075 Processadores Dedicados EA075 Processadores Dedicados Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato Introdução Processador: circuito digital projetado para

Leia mais

ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara Carga Horária: 60h Sumário Unidade Lógica Aritmetrica Registradores Unidade Lógica Operações da ULA Unidade de Ponto Flutuante Representação

Leia mais

Arquitetura de Computadores Circuitos Combinacionais, Circuitos Sequênciais e Organização de Memória

Arquitetura de Computadores Circuitos Combinacionais, Circuitos Sequênciais e Organização de Memória Introdução Arquitetura de Computadores Circuitos Combinacionais, Circuitos Sequênciais e O Nível de lógica digital é o nível mais baixo da Arquitetura. Responsável pela interpretação de instruções do nível

Leia mais

Sumário. Parte I Conceitos Básicos de Criptografia, Software e Hardware...19. Agradecimentos...7 Sobre os Autores...9 Prefácio...

Sumário. Parte I Conceitos Básicos de Criptografia, Software e Hardware...19. Agradecimentos...7 Sobre os Autores...9 Prefácio... 11 Sumário Agradecimentos...7 Sobre os Autores...9 Prefácio... 17 Parte I Conceitos Básicos de Criptografia, Software e Hardware...19 Capítulo 1 Conceitos de Segurança de Dados e Criptografia... 21 1.1

Leia mais

Disciplina: Laboratório de Circuitos Digitais

Disciplina: Laboratório de Circuitos Digitais Universidade Federal de São Carlos Disciplina: Laboratório de Circuitos Digitais Prof. Dr. Emerson Carlos Pedrino 7ª Prática: Introdução à Verilog-HDL e á Lógica Sequencial Data: 22/05/2014 Nome: Adrián

Leia mais

CMP238 Projeto e Teste de Sistemas VLSI

CMP238 Projeto e Teste de Sistemas VLSI CMP238 Projeto e Teste de Sistemas VLSI Uso de banco de registradores e Memorias Projeto Prof. Fernanda Lima Kastensmidt Uso de Memoria em Circuitos Integrados VHDL designs Memory Model Simulador lógico

Leia mais

DISCIPLINA: Sistemas Digitais

DISCIPLINA: Sistemas Digitais DISCIPLINA: Sistemas Digitais Vigência: a partir de 2007/1 Período Letivo: 4º semestre Carga Horária Total: 45h Código: EE.212 Ementa: Implementação Física. Tecnologia de CIs programáveis. FPGA. Atraso

Leia mais

12/11/13. Obje%vos do laboratório. SST20707 Síntese de Sistemas de Telecomunicações. Síntese de máquinas de estado (FSM) Finite State Machine (FSM)

12/11/13. Obje%vos do laboratório. SST20707 Síntese de Sistemas de Telecomunicações. Síntese de máquinas de estado (FSM) Finite State Machine (FSM) Instituto Federal de Santa Catarina Área de Telecomunicações SST20707 Síntese de Sistemas de Telecomunicações Prof. Roberto de Matos Aviso de direitos Autorais: Transparências baseadas no trabalho do Prof.

Leia mais

Arquitetura de Computadores. Ivan Saraiva Silva

Arquitetura de Computadores. Ivan Saraiva Silva Arquitetura de Computadores Introdução Ivan Saraiva Silva Sumário Introdução Bibliografia Recomendada O que é um computador Organização de um Computador Modelo de Von Neumann IAS Máquina de Von Neuman

Leia mais

Oracle PL/SQL Overview

Oracle PL/SQL Overview Faculdades Network Oracle PL/SQL Overview Prof. Edinelson PL/SQL Linguagem de Programação Procedural Language / Structured Query Language Une o estilo modular de linguagens de programação à versatilidade

Leia mais

Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui.

Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui. 3 Tecnologia FPGA Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui. 3.1. FPGA: Histórico, linguagens e blocos Muitos dos

Leia mais

Circuitos Digitais. Tipos de circuitos digitais: Circuitos combinacionais Circuitos sequenciais

Circuitos Digitais. Tipos de circuitos digitais: Circuitos combinacionais Circuitos sequenciais Circuitos Digitais Tipos de circuitos digitais: Circuitos combinacionais Circuitos sequenciais Circuito combinacional: Possui portas lógicas conectadas para produzir valor dos sinais de saída Não possui

Leia mais

Portas lógicas e circuitos digitais. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

Portas lógicas e circuitos digitais. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 Portas lógicas e circuitos digitais Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 Tópicos Portas Circuito somador Circuito subtrator flip-flops (registradores)

Leia mais

Sistemas Digitais I LESI :: 2º ano. Questões Práticas de Sistemas Sequenciais

Sistemas Digitais I LESI :: 2º ano. Questões Práticas de Sistemas Sequenciais Sistemas Digitais I LESI :: 2º ano Questões Práticas de Sistemas Sequenciais António Joaquim Esteves João Miguel Fernandes www.di.uminho.pt/~aje Bibliografia: secções 8.3.1, 8.4 (parte), 8.5 (parte), DDPP,

Leia mais

Máquina Multinível. Um programa pode ser definido como uma seqüência de instruções que descrevem como executar uma determinada tarefa.

Máquina Multinível. Um programa pode ser definido como uma seqüência de instruções que descrevem como executar uma determinada tarefa. Máquina Multinível Um programa pode ser definido como uma seqüência de instruções que descrevem como executar uma determinada tarefa. Uma instrução pode ser definida como um comando para o processador.

Leia mais

Organização de Computadores

Organização de Computadores Organização de Computadores SUMÁRIO Arquitetura e organização de computadores Hardware Software SUMÁRIO Arquitetura e organização de computadores Terminologia básica Hardware Software Arquitetura e organização

Leia mais

Sistemas Digitais. Sistemas Digitais III - Ementa

Sistemas Digitais. Sistemas Digitais III - Ementa Sistemas Digitais Sistemas Digitais I - Sistemas Combinatórios As saídas atuais são determinadas diretamente a partir das entradas atuais. Portas Lógicas. Sistemas Digitais II - Sistemas Seqüenciais As

Leia mais

Objetos em VHDL. * Há quatro tipos de objetos em VHDL: - Constantes - Sinais - Variáveis - Arquivos

Objetos em VHDL. * Há quatro tipos de objetos em VHDL: - Constantes - Sinais - Variáveis - Arquivos VHDL * Objetos de Dados * Tipos de Dados * Tipos e Subtipos * Atributos * Sentenças Concorrentes e Sequenciais * Procedimetos e Funções * Pacotes e Bibliotecas * Generics * Tipos de Atraso Objetos em VHDL

Leia mais

II Escola Regional de Mato Grosso do Sul - II ERI-MS

II Escola Regional de Mato Grosso do Sul - II ERI-MS II Escola Regional de Mato Grosso do Sul - II ERI-MS Ponta Porã - MS - 24 a 26 de agosto de 2011 Minicurso: Implementação de Circuitos Digitais Utilizando Computação Reconfigurável Ricardo Santos, André

Leia mais

Linguagens de programação

Linguagens de programação Prof. André Backes Linguagens de programação Linguagem de Máquina Computador entende apenas pulsos elétricos Presença ou não de pulso 1 ou 0 Tudo no computador deve ser descrito em termos de 1 s ou 0 s

Leia mais

OPERADORES E ESTRUTURAS DE CONTROLE

OPERADORES E ESTRUTURAS DE CONTROLE OPERADORES E ESTRUTURAS DE CONTROLE 3.1 Operadores Os operadores indicam o tipo de operação matemática que será executada gerando novos valores a partir de um ou mais operadores. São muito utilizados em

Leia mais

Circuitos Combinacionais. Sistemas digitais

Circuitos Combinacionais. Sistemas digitais Circuitos Combinacionais Sistemas digitais Agenda } Codificador X Decodificador } Código BCD 8421, código BCH, código 9876543210 } Display de 7 segmentos } Multiplexador X Demultiplexador } Comparadores

Leia mais

Estruturas de controle no nível de sentença

Estruturas de controle no nível de sentença Estruturas de controle no nível de sentença Linguagens de Programação Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional.

Leia mais

TABELA DE EQUIVALÊNCIA FECOMP Curso de Engenharia de Computação

TABELA DE EQUIVALÊNCIA FECOMP Curso de Engenharia de Computação TABELA DE EQUIVALÊNCIA FECOMP Curso de Engenharia de Computação Disciplina A Disciplina B Código Disciplina C/H Curso Disciplina C/H Código Curso Ano do Currículo 66303 ESTRUTURA DE DADOS I 68/0 ENG. DE

Leia mais

Somador e subtrator de 8 bits

Somador e subtrator de 8 bits Somador e subtrator de 8 bits Nota: Para desenvolver o somador e subtrator de 8 bits na Plataforma Windows, utilize preferencialmente Windows XP ou Vista. Você poderá encontrar problemas durante algumas

Leia mais

Programação: Tipos, Variáveis e Expressões

Programação: Tipos, Variáveis e Expressões Programação de Computadores I Aula 05 Programação: Tipos, Variáveis e Expressões José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/56 Valores Valor é uma entidade

Leia mais

Exercício Opcional: FAMILIARIZAÇÃO COM O SOFTWARE CIRCUIT MAKER 2000

Exercício Opcional: FAMILIARIZAÇÃO COM O SOFTWARE CIRCUIT MAKER 2000 Laboratório de Sistemas Digitais /0 Exercício Opcional: FAMILIARIZAÇÃO COM O SOFTWARE CIRCUIT MAKER 000 OBJETIVO Aprender a utilizar o Editor de Esquemáticos e o Simulador Lógico Criar e simular os esquemáticos

Leia mais

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP AGRUPAMENTO DE ESCOLAS DE SANTA COMBA DÃO CURSO PROFISSIONAL DE TÉCNICO DE GESTÃO E PROGRAMAÇÃO DE SISTEMAS INFORMÁTICOS 2012-2015 PROGRAMAÇÃO E SISTEMAS DE INFORMAÇÃO MÓDULO 2 Mecanismos de Controlo de

Leia mais

APOSTILA PHP PARTE 1

APOSTILA PHP PARTE 1 APOSTILA PHP PARTE 1 1. Introdução O que é PHP? PHP significa: PHP Hypertext Preprocessor. Realmente, o produto foi originalmente chamado de Personal Home Page Tools ; mas como se expandiu em escopo, um

Leia mais

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada Programação Estruturada Programação Estruturada Paradigmas de Linguagens de Programação As linguagens desse paradigma são muitas vezes chamadas de linguagens convencionais, procedurais ou imperativas.

Leia mais

Programação Elementar de Computadores Jurandy Soares

Programação Elementar de Computadores Jurandy Soares Programação Elementar de Computadores Jurandy Soares Básico de Computadores Computador: dispositivos físicos + programas Dispositivos físicos: hardware Programas: as instruções que dizem aos dispositivos

Leia mais

Figura 1 - Diagrama de um sistema de controle de temperatura que requer conversão analógico-digital para permitir o uso de técnicas de processamento

Figura 1 - Diagrama de um sistema de controle de temperatura que requer conversão analógico-digital para permitir o uso de técnicas de processamento 1 2 3 Figura 1 - Diagrama de um sistema de controle de temperatura que requer conversão analógico-digital para permitir o uso de técnicas de processamento digital - (Sistemas Digitais: Princípios e Aplicações

Leia mais

Disciplina: Laboratório de Circuitos Digitais

Disciplina: Laboratório de Circuitos Digitais Universidade Federal de São Carlos Disciplina: Laboratório de Circuitos Digitais Prof. Dr. Emerson Carlos Pedrino 3ª Prática: Rotação de uma palavra nos Displays de 7 segmentos Data: 10/04/2014 Nome: Adrián

Leia mais

Introdução. A verificação de tipos pode ser estática e dinâmica

Introdução. A verificação de tipos pode ser estática e dinâmica Análise Semântica Introdução Verifica se as construções sintaticamente corretas possuem significado lógico dentro da linguagem Verifica a consistência da declaração e uso dos identificadores Além disso,

Leia mais

Sistema de Numeração e Conversão entre Sistemas. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

Sistema de Numeração e Conversão entre Sistemas. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h Sistema de Numeração e Conversão entre Sistemas. Prof. Rômulo Calado Pantaleão Camara Carga Horária: 60h Representação da Informação Um dispositivo eletrônico, armazena e movimenta as informações internamente

Leia mais

A Figura 1 mostra uma organização do NEANDER com uma UAL de 6 funções. Figura 1: Organização para o NEANDER.

A Figura 1 mostra uma organização do NEANDER com uma UAL de 6 funções. Figura 1: Organização para o NEANDER. Disciplina: Arquitetura de Computadores Turma: 3CC Data: 18/12/12 Nota: Professor: Renato E. N. de Moraes Semestre: 2012-2 Valor: 2,0 pt Aluno: Trabalho 01 - Projeto Neander O computador NEANDER foi criado

Leia mais

Arquitetura de Computadores. Tipos de Instruções

Arquitetura de Computadores. Tipos de Instruções Arquitetura de Computadores Tipos de Instruções Tipos de instruções Instruções de movimento de dados Operações diádicas Operações monádicas Instruções de comparação e desvio condicional Instruções de chamada

Leia mais

4 Criação de macros e introdução à linguagem VBA

4 Criação de macros e introdução à linguagem VBA 4 Criação de macros e introdução à linguagem VBA Vinicius A. de Souza va.vinicius@gmail.com São José dos Campos, 2011. 1 Sumário Tópicos em Microsoft Excel 2007 Introdução à criação de macros...3 Gravação

Leia mais

Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Engenharia Disciplina de Lógica Computacional Aplicada. Prof. Dr.

Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Engenharia Disciplina de Lógica Computacional Aplicada. Prof. Dr. Índice 1. SISTEMAS NUMÉRICOS 1.1 Caracterização dos Sistemas Numéricos 1.2 Sistemas Numéricos em uma Base B Qualquer 1.2.1 Sistema de Numeração Decimal 1.2.2. Sistema de Numeração Binário 1.2.3 Sistema

Leia mais

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias:

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias: Arquitetura de Computadores Estrutura e Funcionamento da CPU Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Revisão dos conceitos básicos O processador é o componente vital do sistema de

Leia mais

Sintaxe e Semântica. Fases da Compilação. programa fonte

Sintaxe e Semântica. Fases da Compilação. programa fonte Sintaxe e Semântica mleal@inf.puc-rio.br Fases da Compilação programa fonte tokens parse tree árvore anotada ou outra forma intermediária código intermediário código objeto código objeto otimizado scanner

Leia mais

ARQUITETURA DE COMPUTADORES

ARQUITETURA DE COMPUTADORES 01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100

Leia mais

Prof. Manuel A Rendón M

Prof. Manuel A Rendón M Prof. Manuel A Rendón M Tanenbaum Redes de Computadores Cap. 1 e 2 5ª. Edição Pearson Padronização de sistemas abertos à comunicação Modelo de Referência para Interconexão de Sistemas Abertos RM OSI Uma

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Introdução a Linguagem C Construções Básicas Programa em C #include int main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius = 30; farenheit = 9.0/5

Leia mais

INTRODUÇÃO OBJECT PASCAL/DELPHI

INTRODUÇÃO OBJECT PASCAL/DELPHI Introdução Object Pascal/Delphi 1 INTRODUÇÃO OBJECT PASCAL/DELPHI Objetivo Demonstrar a sintaxe e a semântica do Object Pascal e a forma como esse linguagem de programação será aplicada na disciplina de

Leia mais

Disciplina: Sistemas Operacionais - CAFW-UFSM Professor: Roberto Franciscatto

Disciplina: Sistemas Operacionais - CAFW-UFSM Professor: Roberto Franciscatto Disciplina: Sistemas Operacionais - CAFW-UFSM Professor: Roberto Franciscatto Introdução Processo cooperativo é aquele que pode afetar outros processos em execução no sistema Ou ser por eles afetado Processos

Leia mais

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura UFPI CCN DIE Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura O projeto Desenvolver um compilador de um subconjunto básico da linguagem PORTUGOL.

Leia mais

VHDL APOSTILA DE. Ronaldo Hüsemann. Professor das Disciplinas: Técnicas Digitais (2000) Sistemas Digitais (2001) Microprocessadores II (2002)

VHDL APOSTILA DE. Ronaldo Hüsemann. Professor das Disciplinas: Técnicas Digitais (2000) Sistemas Digitais (2001) Microprocessadores II (2002) APOSTILA DE VHDL Ronaldo Hüsemann Professor das Disciplinas: Técnicas Digitais (2000) Sistemas Digitais (2001) Microprocessadores II (2002) Departamento de Engenharia Elétrica Universidade Federal do Rio

Leia mais

Laboratório de Banco de Dados Prof. Luiz Vivacqua. PL/pgSQL A Linguagem de programação do PostgreSQL

Laboratório de Banco de Dados Prof. Luiz Vivacqua. PL/pgSQL A Linguagem de programação do PostgreSQL Laboratório de Banco de Dados Prof. Luiz Vivacqua PL/pgSQL A Linguagem de programação do PostgreSQL 1) Visão Geral A PL/pgSQL é uma linguagem de programação procedural para o Sistema Gerenciador de Banco

Leia mais

AMOSTRAGEM DE SINAIS ANALÓGICOS POR

AMOSTRAGEM DE SINAIS ANALÓGICOS POR Relatório de Sistemas de Aquisição de Dados 2006/2007 Engenharia Física Tecnológica AMOSTRAGEM DE SINAIS ANALÓGICOS POR UM CIRCUITO ADC COM INTERFACE DE COMUNICAÇÃO SÉRIE Laboratório II Trabalho realizado

Leia mais

Disciplina: Laboratório de Circuitos Digitais

Disciplina: Laboratório de Circuitos Digitais Universidade Federal de São Carlos Disciplina: Laboratório de Circuitos Digitais Prof. Dr. Emerson Carlos Pedrino 9ª Pratica: Computador de 16 bits Data:17/07/2014 Nome: Adrián Agüero Faraldo RA: 612227

Leia mais

Edeyson Andrade Gomes

Edeyson Andrade Gomes Sistemas Operacionais Conceitos de Arquitetura Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Máquinas de Níveis Revisão de Conceitos de Arquitetura 2 Máquina de Níveis Máquina de níveis Computador

Leia mais

IMPLEMENTAÇÃO DE CONTROLADOR LÓGICO BASEADO EM LÓGICA PROGRAMÁVEL ESTRUTURADA ( FPGA) Resumo

IMPLEMENTAÇÃO DE CONTROLADOR LÓGICO BASEADO EM LÓGICA PROGRAMÁVEL ESTRUTURADA ( FPGA) Resumo IMPLEMENTAÇÃO DE CONTROLADOR LÓGICO BASEADO EM LÓGICA PROGRAMÁVEL ESTRUTURADA ( FPGA) Cesar da Costa Cost036@attglobal.net UNITAU Universidade de Taubaté Departamento de Engenharia Mecânica Pós-Graduação

Leia mais

Algoritmos e Programação Conceitos e Estruturas básicas (Variáveis, constantes, tipos de dados)

Algoritmos e Programação Conceitos e Estruturas básicas (Variáveis, constantes, tipos de dados) Algoritmos e Programação Conceitos e Estruturas básicas (Variáveis, constantes, tipos de dados) Os algoritmos são descritos em uma linguagem chamada pseudocódigo. Este nome é uma alusão à posterior implementação

Leia mais

Computador, transistores, registradores e circuitos integrados

Computador, transistores, registradores e circuitos integrados Computador, transistores, registradores e circuitos integrados 1 Filosofia da disciplina EA869...1 2 Portas lógicas...3 3 Lógica seqüencial...5 4 Flip-flops: um sumário...6 5 Registradores e o computador...8

Leia mais

LABORG. VHDL Máquina de estados finitos

LABORG. VHDL Máquina de estados finitos LABORG VHDL Máquina de estados finitos Sumário Introdução TRABALHO A FAZER A ENTREGAR 2 Na aula anterior vimos: Introdução VHDL pode ser vista não como uma, mas como várias linguagens modelagem/simulação/síntese

Leia mais

Resumo da Introdução de Prática de Programação com C. A Linguagem C

Resumo da Introdução de Prática de Programação com C. A Linguagem C Resumo da Introdução de Prática de Programação com C A Linguagem C O C nasceu na década de 70. Seu inventor, Dennis Ritchie, implementou-o pela primeira vez usando um DEC PDP-11 rodando o sistema operacional

Leia mais

Centro Universitário da FEI Engenharia Elétrica PROJETO DE SISTEMAS. DIGITAIS UTILIZANDO FPGAs

Centro Universitário da FEI Engenharia Elétrica PROJETO DE SISTEMAS. DIGITAIS UTILIZANDO FPGAs Centro Universitário da FEI Engenharia Elétrica PROJETO DE SISTEMAS DIGITAIS UTILIZANDO FPGAs Prof. Edson Lemos Horta Fevereiro 2008 1 Introdução aos Circuitos Integrados para Aplicações Específicas (Application

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 SISTEMA DE INTERCONEXÃO (BARRAMENTOS) Prof. Luiz Gustavo A. Martins Arquitetura de von Newmann Componentes estruturais: Memória Principal Unidade de Processamento Central

Leia mais

Componentes da linguagem C++

Componentes da linguagem C++ Componentes da linguagem C++ C++ é uma linguagem de programação orientada a objetos (OO) que oferece suporte às características OO, além de permitir você realizar outras tarefas, similarmente a outras

Leia mais