Ferramenta de Edição e Tradução de Equações Matemáticas para VHDL
|
|
- Maria do Mar Viveiros Figueira
- 7 Há anos
- Visualizações:
Transcrição
1 UNIVERSIDADE POSITIVO NÚCLEO DE CIÊNCIAS EXATAS E TECNOLÓGICAS CURSO DE ENGENHARIA DA COMPUTAÇÃO ANSELMO FERREIRA BITTENCOURT FLÁVIA HERRMANN MENEZES Ferramenta de Edição e Tradução de Equações Matemáticas para VHDL Trabalho de Conclusão de Curso. Prof. Valfredo Pilla Junior Orientador Curitiba, Novembro de 2011
2
3 Souza UNIVERSIDADE POSITIVO Reitor: José Pio Martins Pró-Reitor de Administração: Arno Antonio Gnoatto Pró-Reitora Acadêmica: Márcia Sebastiani Coordenador do Curso de Engenharia da Computação: Leandro Henrique de iii
4
5 RESUMO A maioria dos sistemas e processos conhecidos pode ser descrita por meio de equações matemáticas e muitas dessas equações podem ser obtidas e aplicadas fisicamente por meio de circuitos eletrônicos. O projeto desenvolvido trata-se de um ambiente para representação de equações matemáticas em hardware digital reconfigurável para aplicações em sistemas embarcados. O sistema assim desenvolvido pode ser utilizado em inúmeras áreas, como processamento de sinais, automação, entre outras. O trabalho consiste em uma ferramenta de Edição e Tradução de equações matemáticas para VHDL, a qual analisa uma equação matemática e obtêm a sua representação em linguagem VHDL, sendo esta representação utilizada para a síntese das equações em circuitos eletrônicos. O resultado alcançado pelo desenvolvimento proporciona rapidez na obtenção de código VHDL. Para a utilização do programa é necessário um computador pessoal, uma interface de comunicação USB e um dispositivo lógico programável. O código gerado deve ser utilizado em um ambiente de descrição de circuitos lógicos com suporte à linguagem VHDL. Neste projeto foi utilizado o ambiente de desenvolvimento Quartus II, da Altera, por meio do qual é gerado o código-objeto que é gravado em CPLD ou FPGA. Os dados são enviados e recebidos do computador por comunicação serial para a interface de comunicação, que envia e recebe dados do kit de lógica programável de forma paralela. O software de tradução recebe uma equação matemática constituída por funções do tipo exponencial, trigonométrica, além de operações básicas como adição, subtração, multiplicação e divisão, que podem ser agrupadas de acordo com as regras e então analisa a expressão, verificando os operadores e as variáveis, quebrando as expressões para depois montar em código, de acordo com a precedência das operações. Após a geração do código, podemos efetuar a gravação na FPGA, para realização dos testes por meio da interface de testes, para poder verificar a eficiência do sistema de acordo com a aplicação a ser desenvolvida. Pretende-se, assim, facilitar o projeto de circuitos digitais utilizando a linguagem VHDL e proporcionando uma forma rápida de se obter circuitos digitais correspondentes a funções matemáticas, automatizar parte do processo de geração de código e ampliar a aplicação da lógica programável nos mais diversos sistemas. Palavras-chave: Tradutor de Equações Matemáticas para VHDL, Sistemas Embarcados, Coprocessadores. v
6
7 ABSTRACT The most of the known systems and process can be described using mathematical equations and many of these equations can be obtained and applied physically using electronic circuits. The developed project is an environment for representation of mathematical equations on reconfigurable digital hardware for embedded systems applications. The system thus developed can be used at numerous areas, as signal processing, automation, and others. The work consists of a tool for editing and translation of mathematical equations to VHDL, which analyzes a mathematical equation and achieve its representation in VHDL language, this representation being used for the synthesis of the equations in electronic circuits. The result reached by the development provides quick obtaining VHDL code. To use the program, a personal computer, an USB communication interface and a programmable logic device are needed. The generated code should be used in an environment of logic circuits description with support for VHDL. In this project, the development environment used was the Quartus II, Altera, through which is generated object code which is written in CPLD or FPGA. The data is sent and received from the computer by serial communication using the communication interface, which sends and receives data from the kit of programmable logic in parallel. The translation software receives a mathematical equation consisting of exponential functions, trigonometry, and basic operations such as addition, subtraction, multiplication and division, which can be grouped according to the rules, and then analyzes the expression and checking operators and variables, and then breaking the expressions, building it in code after that, according to the precedence of operations. After code generation, recording in the FPGA can be made to perform the tests using the testing interface, in order to verify the efficiency of the system according to the application being developed. It is intended, thus facilitating the design of digital circuits using VHDL language and providing a quick way to get digital circuits corresponding mathematical functions, automate part of the code generation to expand the application of programmable logic in various systems. Keywords: Mathematical Equations to VHDL Translator, Embedded Systems, Co-processors. vii
8
9 LISTA DE ABREVIATURAS E SIGLAS CPLD Complex Programmable Logic Device (Dispositivo Lógico Complexo Programável) FPGA Field Programmable Gate Array (Arranjo de Portas Programável em Campo) GB - Gigabyte HD Hard Disk (Disco Rígido) LSB Least Significant Bit (Bit Menos Significativo) MB - Megabyte MSB Most Significant Bit (Bit Mais Significativo) RAM Random Access Memory (Memória de Acesso Aleatório) VHDL VHSIC Hardware Description Language (Linguagem de Descrição de Hardware VHSIC) VHSIC Very High Speed Integrated Circuits (Circuitos Integrados de Velocidade Muito Alta) ix
10
11 LISTA DE FIGURAS Figura 3.1: Arquitetura do Projeto Figura 3.2: Software de tradução... 8 Figura 3.3: Software de testes... 9 Figura 3.4: Diagrama de hardware Figura 3.5: Diagrama de firmware Figura 3.6: Testes do módulo de comunicação Figura 4.1: Tradutor: inserção da equação Figura 4.2: Tradutor: código correspondente à equação inserida Figura 4.3: Software de testes Figura 4.4: Software de testes com resultados Figura 4.5: Módulo de controle Figura 4.6: Módulo de escrita Figura 4.7: Módulo de leitura Figura 4.8: Kit Altera DE xi
12
13 LISTA DE TABELAS Tabela 2.1: Representação de ponto flutuante IEEE Tabela 3.1: Cronograma inicial do projeto Tabela 4.1: Resultados para o cálculo do seno Tabela 4.2: Parte 1 Resultados para o cálculo do cosseno Tabela 4.2: Parte 2 Resultados para o cálculo do cosseno Tabela 4.3: Resultados para o cálculo da tangente Tabela 4.4: Resultados para o cálculo da função exponencial xiii
14
15 SUMÁRIO RESUMO... V ABSTRACT... VII LISTA DE ABREVIATURAS E SIGLAS... IX LISTA DE FIGURAS... XI LISTA DE TABELAS... XIII 1. INTRODUÇÃO AO PROJETO Circuitos de Lógica Programável Objetivos REVISÃO BIBLIOGRÁFICA Funções Trigonométricas e Exponencial Séries de Taylor Representação Numérica PROJETO Requisitos Arquitetura Software Hardware Testes do Sistema Planejamento do Projeto Recursos Cronograma RESULTADOS xv
16 4.1 Software Software de Tradução Software de Testes Hardware CONCLUSÃO REFERÊNCIAS ANEXO A: CÓDIGO VHDL DA FUNÇÃO SENO ANEXO B: CÓDIGO VHDL DA FUNÇÃO COSSENO ANEXO C: CÓDIGO VHDL DA FUNÇÃO TANGENTE ANEXO D: CÓDIGO VHDL DA FUNÇÃO EXPONENCIAL ANEXO E: CÓDIGO VHDL DA OPERAÇÃO DE ADIÇÃO ANEXO F: CÓDIGO VHDL DA OPERAÇÃO DE SUBTRAÇÃO ANEXO G: CÓDIGO VHDL DA OPERAÇÃO DE MULTIPLICAÇÃO ANEXO H: CÓDIGO VHDL DA OPERAÇÃO DE DIVISÃO ANEXO I: CÓDIGO VHDL DA OPERAÇÃO DE POTENCIAÇÃO xvi
17 1 1. INTRODUÇÃO AO PROJETO A aplicação da eletrônica para o controle de processos e sistemas tem se tornado cada vez mais freqüente e necessária em diversas áreas do conhecimento humano. Com a constante evolução tecnológica, é cada vez maior a capacidade de se controlar ações e fenômenos, antes feitos ou produzidos de forma manual ou natural, e agora reproduzíveis e dirigidos de acordo com a necessidade das aplicações. Da mesma forma, a complexidade destes sistemas tem crescido e, muitas vezes, é um obstáculo difícil de ser superado quando se utilizam formas convencionais para projeção dos circuitos eletrônicos necessários. O surgimento da eletrônica digital e, mais tarde, dos circuitos de lógica programável, contribuiu para a melhoria dos processos e da construção dos sistemas de controle, mas ainda assim, projetar estes tipos de sistema continua sendo uma tarefa trabalhosa, exigindo um alto nível de conhecimento técnico, tanto em eletrônica digital quanto em linguagem para descrição dos circuitos de lógica programável. Dessa forma, possuir uma ferramenta capaz de auxiliar o desenvolvimento de sistemas que se utilizem da lógica programável, por meio da automatização de parte do processo de projeto destes circuitos, é de grande utilidade, uma vez que isto contribui para redução de tempo e custos dos projetos, e torna mais prática a execução e manutenção dos mesmos. O objetivo deste trabalho é desenvolver uma ferramenta que, dada uma equação matemática, forneça o código VHDL correspondente a essa equação, a fim de que este código seja compilado e utilizado em CPLDs ou FPGAs, que neste caso podem ser utilizados como coprocessadores matemáticos para diversas aplicações. 1.1 Circuitos de Lógica Programável A aplicação de sistemas que tem por base a lógica digital programável tem se tornado cada vez mais ampla. Podemos encontrá-los em filtros digitais, sistemas de controle, sistemas automotivos, nas telecomunicações, equipamentos de simulação e teste, entre outros. Essa disseminação ocorre por vários fatores (DAMORE, 2005), entre os quais: a) Ausência de um sistema operacional e consequentemente inexistência de processos concorrentes disputando os recursos de um processador; b) Possibilidade de alteração das funcionalidades do circuito sem a necessidade de substituição de componentes; c) Alta velocidade de processamento, que depende apenas da velocidade (clock) do chip e não de uma série de cálculos de um processador;
18 2 d) Proteção da propriedade intelectual, uma vez que não é possível obter o códigofonte gravado no chip; e) Baixo custo e economia de energia com a produção em larga escala (utilização de ASICs). Infelizmente, projetar um circuito digital para tais aplicações nem sempre é uma tarefa fácil, pois exige conhecimento de circuitos e linguagem de descrição de hardware. Além disso, quanto mais complexo um sistema, maior e mais trabalhosa a composição do código equivalente. Por isso, a necessidade de uma ferramenta capaz de automatizar a geração de código em linguagem apropriada, que seja capaz de sintetizar circuitos já conhecidos e compor circuitos complexos por meio da junção de circuitos menores. 1.2 Objetivos Os A seguir são descritos os objetivos do projeto: a) Desenvolver ferramenta de captura de equações matemáticas; b) Gerar código VHDL correspondente à descrição dos circuitos para os seguintes cálculos: (i) Soma e subtração; (ii) Multiplicação e divisão; (iii)potenciação; (iv) Seno, Cosseno e Tangente; (v) Função exponencial; c) Analisar a equação inserida e fazer a tradução para código VHDL, utilizando um ou mais dos circuitos citados no item anterior; d) Utilizar uma ferramenta já existente para compilação do código gerado e gravação no dispositivo de lógica programável; e) Desenvolver uma interface de hardware para testes do código gravado no dispositivo, com as seguintes funções: (i) Receber do computador os valores de entrada das funções; (ii) Transmitir os valores ao dispositivo de lógica programável; (iii)receber os resultados do dispositivo e transmiti-los ao computador; f) Desenvolver uma interface de software para testes, com as seguintes funções: (i) Comunicação de dados com dispositivo de hardware citado no item anterior; (ii) Comparação dos valores recebidos com os valores esperados para as funções utilizadas.
19 3 2. REVISÃO BIBLIOGRÁFICA Existem outros projetos nos quais o objetivo é transformar equações matemáticas em código VHDL. Um deles, chamado FELIX, utiliza diversos recursos para a simplificação das expressões matemáticas, além da reescrita da expressão em linguagem C++ para posterior geração do código VHDL (MORRA, 2005), o que torna a abordagem bastante complexa e difere da utilizada na ferramenta aqui desenvolvida. 2.1 Funções Trigonométricas e Exponencial Funções trigonométricas são utilizadas no estudo de triângulos e na modelagem de fenômenos descritos por sinais periódicos, enquanto a função exponencial é utilizada quando o valor de uma função cresce ou decresce muito rapidamente, sendo a alteração do valor na variável dependente sempre proporcional, em termos percentuais, ao da variável independente. As funções trigonométricas seno, cosseno e tangente, assim como a função exponencial são desenvolvidas neste trabalho por meio da utilização das Séries de Taylor Séries de Taylor A Série de Taylor ou Série de Potências é uma série de funções na forma f(x) = n=0 a n (x a) n, na qual a n = f(n) (a). Nesta função, se a = 0, a série também é chamada de Série de Maclaurin (SWOKOWSKI, 1995; WIKIPEDIA, 2011). As funções desenvolvidas neste trabalho e suas respectivas séries são vistas abaixo. sen(x) = cos(x) = tan(x) = e x = ( 1) n (2n+1)! x2n+1 n=0 Equação 2.1 ( 1) n n=0 Equação 2.2 (2n)! x2n B 2n ( 4) n (1 4 n ) x 2n 1 (2n)! n=1 Equação 2.3 x n n=0 Equação 2.4 n! n!
20 4 Por se tratarem de funções com infinitos termos e, portanto, impossíveis de serem representadas como são descritas, estas foram adaptadas, para que o número de termos pudesse ser minimizado, alcançando resultados satisfatórios. 2.2 Representação Numérica A forma de se representar os números leva em consideração a precisão e a faixa de valores necessários para os cálculos utilizados. As Séries de Taylor exigem a utilização de uma faixa de valores que vai de números fracionários, menores que 1, a valores muito altos, o que impossibilita a utilização da representação por números inteiros. Dessa forma, a representação numérica é feita utilizando-se o conceito da aritmética de ponto flutuante (ROTH JR., 1998). A Tabela 2.1 ilustra a representação dos bits normalmente utilizada para números de ponto flutuante, conhecida como padrão IEEE 754 (TANENBAUM, 2007). Tabela 2.1 Representação de ponto flutuante IEEE 754 Sinal: 1 bit (MSB) Expoente: 8 bits Mantissa: 23 bits (LSB) Neste padrão, o número que se está representando é obtido pela Equação 2.5, vista abaixo. na qual N = ( 1) Sinal 2 Expoente 127 1, Mantissa 2 23 Equação Sinal: 0 ou 1; - Expoente: inteiro variando de 0 a 255; - Mantissa: inteiro variando de 0 a Neste trabalho, porém, optou-se por utilizar uma forma diferente para o cálculo do número representado, mostrada na Equação 2.6, mas que utiliza a mesma estrutura vista na Tabela 2.1. na qual N = ( 1) Sinal 2 Expoente Mantissa 2 23 Equação Sinal: 0 ou 1; - Expoente: inteiro variando de -128 a 127; - Mantissa: inteiro variando de 0 a O número 10, por exemplo, seria representado neste formato da seguinte maneira: [ ] (binário) ou [ ] (decimal). Esta forma de representação torna mais rápido o cálculo dos resultados, por não exigir nenhum tipo de adaptação de expoente e mantissa, como seria necessário no caso anterior. Por exemplo, utilizando a representação IEEE 754, quando a parte fracionária ( Mantissa 2 23 ) é 0,5, o valor de multiplicação é na verdade 1,5. Para utilizar este valor nos
21 5 cálculos, seria necessário utilizar uma variável interna ao sistema, que receberia o valor da mantissa, fazer o deslocamento de bits dessa variável à direita e inserir um bit com valor 1 no bit mais significativo da mantissa. Considerando que o expoente inicial seja 127, este passaria para 128 e teríamos então o valor 0,75, que pode então ser utilizado para o cálculo. Seria necessária também uma variável adicional que receberia o valor do expoente menos 127. Utilizando o formato escolhido para este projeto, não são necessários circuitos de adaptação de expoente e mantissa, o que contribui para redução da utilização dos recursos do dispositivo. No caso de haver necessidade de utilização do padrão IEEE 754, o circuito pode ser adaptado, havendo pequeno comprometimento de desempenho e aumento na utilização de recursos do hardware.
22 6
23 7 3. PROJETO A Ferramenta de Edição e Tradução de equações matemáticas para VHDL destinase à síntese de equações matemáticas em circuitos eletrônicos digitais. Esta ferramenta analisa uma equação matemática e utiliza estruturas correspondentes em linguagem VHDL para descrição dos circuitos necessários ao desempenho da função. O objetivo do projeto é proporcionar uma forma rápida de se obter código VHDL, e assim circuitos digitais, correspondentes a funções matemáticas para aplicação nas diversas áreas que se utilizam de dispositivos de lógica programável. O sistema é composto por: a) Interface para inserção de equações e visualização dos resultados; b) Possibilidade de carregamento da equação e geração de resultado em arquivo de texto; c) Software de testes para envio de valores, recebimento de resultados da FPGA por meio da interface de hardware, e comparação dos valores recebidos com os valores esperados; d) Interface de hardware para recebimento dos valores do computador de forma serial e passagem dos valores à FPGA de forma paralela (32 bits), assim como leitura da resposta de forma paralela e transmissão ao computador de forma serial; 3.1 Requisitos Os requisitos mínimos para o funcionamento do sistema são descritos a seguir: a) Computador com sistema operacional Windows XP, interface USB, 512 MB de RAM, 5 GB de espaço livre em HD; b) Ferramenta de desenvolvimento Quartus-II; c) Kit de lógica programável DE2 da Altera; d) Interface de hardware USB para testes, desenvolvida no projeto. 3.2 Arquitetura A Figura 3.1 dá uma visão geral do projeto, o qual é dividido em software e hardware, explicados em maiores detalhes nas sessões seguintes.
24 8 Figura 3.1 Arquitetura do Projeto Software O tradutor analisa uma equação inserida pelo usuário, verificando os operadores e variáveis. Após isso, faz a quebra da expressão e o código é gerado por meio da combinação de funções em VHDL, correspondentes a cada fragmento da expressão. O ciclo de tradução executado pelo programa é mostrado na Figura 3.2. Figura 3.2 Software de tradução Além do tradutor, é utilizado o software de comunicação, que é responsável pelo envio dos valores das variáveis utilizadas para os testes do código gravado no
25 9 dispositivo de lógica programável e consequente leitura das respostas a esses dados, fazendo a posterior comparação dos valores enviados com os valores esperados para os sistemas analisados. O ciclo executado pelo software de testes é mostrado na Figura 3.3. Figura 3.3 Software de testes Hardware O hardware necessário ao projeto é composto por: a) Computador pessoal, no qual o tradutor é instalado e por meio do qual é feita a comunicação com a interface de hardware para testes; b) Kit de lógica programável, utilizando FPGA ou CPLD, onde o circuito correspondente ao código gerado é gravado; c) Interface de hardware para testes, que recebe os valores das variáveis do computador, envia estes dados ao dispositivo de lógica programável, recebe a resposta do dispositivo e a envia ao computador. Os dados, que correspondem aos valores das variáveis utilizadas na equação, são enviados pelo computador por meio de comunicação serial (USB) para a interface de hardware, a qual faz a aquisição dos valores de forma serial e disponibiliza estes valores de forma paralela, para que possam ser processados pelo dispositivo de lógica programável. As saídas da interface são então ligadas às entradas do kit. As respostas aos dados enviados, ou seja, o cálculo feito pelo dispositivo de lógica programável, são obtidas de forma inversa, coletando os dados paralelamente nas saídas do kit e enviando-os de forma serial ao computador. A Figura 3.4 ilustra a comunicação de dados entre os dispositivos. Na Figura 3.5, temos o princípio de funcionamento do firmware utilizado.
26 10 Figura 3.4 Diagrama de hardware Figura 3.5 Diagrama de firmware 3.3 Testes do Sistema O módulo de comunicação possui três componentes principais: a) Canal de comunicação com o computador (canal A); b) Dispositivo para envio de valores (dispositivo B); c) Dispositivo para leitura de valores (dispositivo C); Os testes do módulo são feitos por meio do envio de valores (32 bits) do computador para o módulo pelo canal A. O dispositivo B é então verificado, e deve exibir o mesmo valor enviado pelo computador. De forma inversa, são inseridos valores no dispositivo C, que são enviados ao computador pelo canal A. Os valores recebidos pelo computador são então verificados, e devem ser os mesmos inseridos no dispositivo C. A descrição do sistema pode ser visualizada na Figura 3.6.
27 11 Figura 3.6 Testes do módulo de comunicação A interface de tradução é testada separadamente, cada módulo recebe valores de entrada e deve fornecer as saídas esperadas de acordo com sua funcionalidade. Após o teste de cada módulo é feita a integração do sistema e novos testes são realizados. Para esta interface são verificadas as seguintes funções: a) Análise da equação: verificação de operadores e variáveis; b) Quebra da expressão: separação em partes; c) Geração de código: análise das partes da equação, geração de código correspondente; d) Junção de código: junção dos trechos de código, correspondência com a equação completa. A interface de testes, software que faz envio, recepção e comparação dos valores, é testada após os testes do módulo de comunicação. Com o módulo funcionando corretamente, também é possível verificar o correto funcionamento da interface. 3.4 Planejamento do Projeto O planejamento do projeto é dividido em cronograma e recursos necessários Recursos Os seguintes recursos são necessários para a execução do projeto: a) Equipamentos: (i) Computador pessoal (PC); (ii) Kit de lógica programável Nios-II; (iii)instrumentos de medição (osciloscópio, voltímetro, etc.); (iv) Gravador para microcontroladores; b) Ambientes de programação: (i) Para desktop (Visual Studio); (ii) Para lógica programável (Quartus-II); (iii)para microcontroladores (CCS); c) Componentes: (i) Microcontrolador; (ii) Componentes eletrônicos diversos para interface de comunicação.
28 Cronograma A seguir temos o cronograma inicial do projeto: Tabela 3.1 Cronograma inicial do projeto Atividade Início Término Proposta inicial 14/2/ /2/2011 Retorno do orientador 17/2/ /2/2011 Especificação 28/2/ /3/2011 Projeto 24/3/ /4/2011 Implementação parcial 18/4/ /6/2011 Qualificação 20/6/ /8/2011 Requalificação 15/8/ /8/2011 Relatório 29/8/2011 5/9/2011 Devolução Banca 5/9/2011 3/10/2011 Monografia 5/9/ /10/2011 Mostra 31/10/2011 7/11/2011 Defesa final 7/11/ /11/2011 Monografia II 7/11/ /11/2011 Entrega final 5/12/2011 5/12/2011
29 13 4. RESULTADOS 4.1 Software O software do projeto é composto pela interface de tradução e pela interface de testes para comunicação com o módulo de hardware Software de Tradução O software de tradução é capaz de traduzir equações que contenham as operações de soma, subtração, multiplicação, divisão e potenciação, além das funções seno, cosseno, tangente e exponencial. A interface do software é mostrada nas figuras 4.1 e 4.2. Figura 4.1 Tradutor: inserção da equação
30 14 Figura Erro! Use a guia Página Inicial para aplicar 0 ao texto que deverá aparecer aqui.4.2 Tradutor: código correspondente à equação inserida A seguir temos o código VHDL gerado para a equação cos(x)+2*x**3/25-0,5*x, utilizada como exemplo. library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; package Teste is component Cosseno port (x: in std_logic_vector (31 downto 0); y: out std_logic_vector (31 downto 0)); end component; component Multiplicacao port (x1: in std_logic_vector (31 downto 0); x2: in std_logic_vector (31 downto 0); y: out std_logic_vector (31 downto 0)); end component; component Divisao port (x1: in std_logic_vector (31 downto 0); x2: in std_logic_vector (31 downto 0); y: out std_logic_vector (31 downto 0)); end component; component Potenciacao port (x1: in std_logic_vector (31 downto 0); x2: in integer range 0 to 7; y: out std_logic_vector (31 downto 0)); end component; component Soma port (x1: in std_logic_vector (31 downto 0); x2: in std_logic_vector (31 downto 0); y: out std_logic_vector (31 downto 0)); end component; component Subtracao port (x1: in std_logic_vector (31 downto 0); x2: in std_logic_vector (31 downto 0); y: out std_logic_vector (31 downto 0)); end component; end Teste;
31 15 library work; use work.teste.all; library ieee; use ieee.std_logic_1164.all; entity TCC is port (x: in std_logic_vector (31 downto 0); y: out std_logic_vector (31 downto 0)); end TCC; architecture Equacao of TCC is signal Cte1: std_logic_vector(31 downto 0); signal Cte2: std_logic_vector(31 downto 0); signal Cte3: std_logic_vector(31 downto 0); signal x1: std_logic_vector (31 downto 0); signal x2: std_logic_vector (31 downto 0); signal x3: std_logic_vector (31 downto 0); signal x4: std_logic_vector (31 downto 0); signal x5: std_logic_vector (31 downto 0); signal x6: std_logic_vector (31 downto 0); signal x7: std_logic_vector (31 downto 0); signal x8: std_logic_vector (31 downto 0); begin Cte1 <= " "; Cte2 <= " "; Cte3 <= " "; x1 <= x; Op2: Cosseno port map (x => x1, y => x2); Op3: Potenciacao port map (x1 => x, x2 => 3, y => x3); Op4: Multiplicacao port map (x1 => Cte1, x2 => x3, y => x4); Op5: Divisao port map (x1 => x4, x2 => Cte2, y => x5); Op6: Multiplicacao port map (x1 => Cte3, x2 => x, y => x6); Op7: Subtracao port map (x1 => x5, x2 => x6, y => x7); Op8: Soma port map (x1 => x2, x2 => x7, y => x8); y <= x8; end Equacao; Os códigos VHDL correspondentes a cada component utilizado neste código podem ser vistos no anexos. As Séries de Taylor utilizadas tiveram o número de termos limitados, sendo n = 3 para as funções trigonométricas e n = 10 para a função exponencial. A precisão é satisfatória para algumas aplicações, e adequada à limitação do hardware, que, por utilizar lógica combinacional tem um número limitado de estruturas, o que impede um número muito grande de iterações nos cálculos. Para a compilação do código gerado, faz-se necessária a utilização de componentes (bibliotecas), gerados em linguagem VHDL, correspondentes a cada função da expressão matemática utilizada. A seguir encontram-se os resultados das simulações das funções desenvolvidas, levando em consideração o primeiro quadrante do círculo trigonométrico (0 a π/2 radianos), a partir do qual é possível mapear os demais, utilizando inversão do sinal na resposta.
32 16 Tabela 4.1 Resultados para o cálculo do seno Seno Ângulo (radianos) Resultado Obtido Resultado Esperado Erro % 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , Tabela 4.2 Parte 1 Resultados para o cálculo do cosseno Cosseno Ângulo (radianos) Resultado Obtido Resultado Esperado Erro % 0, , , ,31241E-05 0, , , , , , , , , , , ,39111E-05 0, , , ,75796E-05 0, , , ,28707E-05 0, , , ,73763E-05 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
33 17 Tabela 4.2 Parte 2 Resultados para o cálculo do cosseno Cosseno Ângulo (radianos) Resultado Obtido Resultado Esperado Erro % 1, , , , , , , , Tabela Resultados para o cálculo da tangente Tangente Ângulo (radianos) Resultado Obtido Resultado Esperado Erro % 0, , , , , , , ,65316E-05 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , Tabela Resultados para o cálculo da função exponencial Exponencial Expoente Resultado Obtido Resultado Esperado Erro % 0,1 1, , , ,2 1, , , ,3 1, , , ,4 1, , , ,5 1, , , ,6 1, , , ,7 2, , , ,8 2, , , ,9 3, , , , , ,
34 Software de Testes Este software envia os valores correspondentes às variáveis para o módulo de hardware, lê a resposta para o valor enviado. Armazena os valores e compara com valores esperados. A interface do software de testes é mostrada nas figuras 4.3 e 4.4. Figura Erro! Use a guia Página Inicial para aplicar 0 ao texto que deverá aparecer aqui.4.3 Software de testes Figura 4.4 Software de testes com resultados 4.2. Hardware A interface de hardware proporciona uma forma rápida de testar combinações de valores de entrada no dispositivo de lógica programável. Apesar de os resultados poderem ser simulados por meio do Quartus II, com a interface de testes é possível
35 19 enviar uma grande quantidade de valores ao dispositivo e verificar se as respostas estão de acordo com o esperado, com variações aceitáveis para a aplicação. Por se tratar de um componente com grande número de entradas e saídas, totalizando 64 pinos, a interface de hardware foi dividida em três partes, sendo uma para controle, uma para escrita e outra para leitura dos dados. As figuras 4.5, 4.6 e 4.7 mostram, respectivamente, os módulos citados. A Figura 4.8 mostra o kit DE2 da Altera, utilizado para os testes. Figura 4.5 Módulo de controle
36 20 Figura 4.6 Módulo de escrita Figura 4.7 Módulo de leitura
37 Figura 4.8 Kit Altera DE2 21
38 22 5. CONCLUSÃO O tradutor funcionou de acordo com as expectativas. As traduções ocorrem corretamente para as funções desenvolvidas, sendo possível combinar essas funções, assim como utilizar as operações básicas de adição, subtração, multiplicação e divisão, além da potenciação. Os métodos utilizados para representação das Séries de Taylor em linguagem VHDL se mostram confiáveis e as variações ocorridas entre os valores obtidos e os valores esperados para as equações já eram esperados, uma vez que as séries foram limitadas levando em consideração o hardware necessário para construção dos circuitos. Observa-se que estes métodos não são recomendados para as funções tangente e exponencial, por apresentarem, exceto para números muito pequenos, erros percentuais muito altos. Havendo a necessidade, é possível customizar as funções e operações para que retornem um resultado mais preciso, o que tem como efeito a utilização de um número maior de unidades lógicas no dispositivo programável e perda no desempenho, aumentando o tempo de resposta para as funções. Os próximos passos para o projeto devem consistir no desenvolvimento de um maior número de funções matemáticas e a possibilidade de se trabalhar com números inteiros e de ponto flutuante paralelamente, além do aprimoramento da interface de testes para que seja possível uma avaliação estatística dos resultados para os circuitos gerados. Além disso, como a utilização de lógica puramente combinacional (por meio da qual foram desenvolvidas todas as funções deste projeto) tem um grande custo em termos de hardware necessário, é interessante que sejam desenvolvidas funções utilizando também a lógica seqüencial, que diminui este custo em troca de uma redução no desempenho, mas que, para algumas aplicações, pode ser uma alternativa mais vantajosa, podendo ser utilizada principalmente nas funções que exigem um maior número de iterações, como no caso das funções tangente e exponencial, reduzindo os erros encontrados com a abordagem atual.
39 23 6. REFERÊNCIAS 1. D AMORE, R., VHDL: Descrição e Síntese de Circuitos Digitais. São Paulo: LTC, Microchip Tecnology Inc.: DS39632E, Altera Corporation: DE2 Development and Education Board User Manual, ROTH JR., Charles H. Digital Systems Design Using VHDL. Boston: PWS Publishing, c TANENBAUM, Andrew S. Organização Estruturada de Computadores. 5. ed. São Paulo: Pearson Prentice Hall, c SWOKOWSKI, Earl William. Cálculo com Geometria Analítica. 2. ed. São Paulo: Makron Books, WIKIPEDIA. Taylor Series. Disponível em: < Acesso em: 09/ C. Morra, J. Becker, M. Ayala-Rincon, and R. Hartenstein. FELIX: Using rewriting-logic for generating functionally equivalent implementations, in Proc. International Conference on Field Programmable Logic and Applications (FPL 2005), vol. 1, Aug. 2005, pp
40 24
41 25 ANEXO A: CÓDIGO VHDL DA FUNÇÃO SENO library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity Seno is port (x: in std_logic_vector (31 downto 0); -- mantissa y: out std_logic_vector (31 downto 0)); end Seno; architecture PtoFte of Seno is type vetor is array (4 downto 0) of std_logic_vector (23 downto 0); type vetor2 is array (4 downto 0) of std_logic_vector (7 downto 0); signal fator: vetor; signal expoente: vetor2; begin fator(0) <= " "; -- [5.040] fator(1) <= " "; -- [-840] fator(2) <= " "; -- [42] fator(3) <= " "; -- [-1] fator(4) <= " "; -- [1/5.040] expoente(0) <= " "; expoente(1) <= " "; expoente(2) <= " "; expoente(3) <= " "; expoente(4) <= " "; process(x) variable mant1: std_logic_vector (23 downto 0); variable exp1: std_logic_vector (7 downto 0); variable mant2: std_logic_vector (47 downto 0); variable exp2: std_logic_vector (15 downto 0); begin exp1 := (others => '0'); mant1 := (others => '0'); for i in 0 to 3 loop exp2(15 downto 8) := x(30 downto 23); mant2(46) := x(31); mant2(45 downto 23) := x(22 downto 0); for j in 2 to ((2 * i) + 1) loop exp2(15 downto 8) := std_logic_vector(signed(exp2(15 downto 8)) + signed(x(30 downto 23))); mant2 := std_logic_vector(signed(mant2(46 downto 23)) * signed(x(31) & x(22 downto 0))); end loop; mant2 := std_logic_vector(signed(mant2(46 downto 23)) * signed(fator(i))); exp2(15 downto 8) := std_logic_vector(signed(exp2(15 downto 8)) + signed(expoente(i))); if signed(exp1) > signed(exp2(15 downto 8)) then for i in 0 to 15 loop mant2 := std_logic_vector(signed(mant2) / 2); exp2(15 downto 8) := std_logic_vector(signed(exp2(15 downto 8)) + 1); exit when exp1 = exp2(15 downto 8); end loop; elsif signed(exp2(15 downto 8)) > signed(exp1) then for i in 0 to 15 loop mant1 := std_logic_vector(signed(mant1) / 2); exp1 := std_logic_vector(signed(exp1) + 1); exit when exp1 = exp2(15 downto 8); end loop; end if; if (signed(mant1) + signed(mant2(46 downto 23))) > or (signed(mant1) + signed(mant2(46 downto 23))) < then mant1 := std_logic_vector(signed(mant1) / 2); mant2 := std_logic_vector(signed(mant2) / 2);
42 26 exp1 := std_logic_vector(signed(exp1) + 1); exp2(15 downto 8) := std_logic_vector(signed(exp2(15 downto 8)) + 1); end if; mant1 := std_logic_vector(signed(mant1) + signed(mant2(46 downto 23))); end loop; mant2 := std_logic_vector(signed(mant1) * signed(fator(4))); exp1 := std_logic_vector(signed(exp1) + signed(expoente(4))); y(31) <= mant2(46); y(30 downto 23) <= exp1; y(22 downto 0) <= mant2(45 downto 23); end process; end PtoFte;
43 27 ANEXO B: CÓDIGO VHDL DA FUNÇÃO COSSENO library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity Cosseno is port (x: in std_logic_vector (31 downto 0); y: out std_logic_vector (31 downto 0)); end Cosseno; architecture PtoFte of Cosseno is type vetor is array (4 downto 1) of std_logic_vector (23 downto 0); type vetor2 is array (4 downto 1) of std_logic_vector (7 downto 0); signal fator: vetor; signal expoente: vetor2; begin fator(1) <= " "; -- [-360] fator(2) <= " "; -- [30] fator(3) <= " "; -- [-1] fator(4) <= " "; -- [1/720] expoente(1) <= " "; expoente(2) <= " "; expoente(3) <= " "; expoente(4) <= " "; process(x) variable mant1: std_logic_vector (23 downto 0); variable exp1: std_logic_vector (7 downto 0); variable mant2: std_logic_vector (47 downto 0); variable exp2: std_logic_vector (15 downto 0); begin exp1 := " "; mant1 := " "; -- [720] for i in 1 to 3 loop exp2(15 downto 8) := x(30 downto 23); mant2(46) := x(31); mant2(45 downto 23) := x(22 downto 0); for j in 2 to (2 * i) loop exp2(15 downto 8) := std_logic_vector(signed(exp2(15 downto 8)) + signed(x(30 downto 23))); mant2 := std_logic_vector(signed(mant2(46 downto 23)) * signed(x(31) & x(22 downto 0))); end loop; mant2 := std_logic_vector(signed(mant2(46 downto 23)) * signed(fator(i))); exp2(15 downto 8) := std_logic_vector(signed(exp2(15 downto 8)) + signed(expoente(i))); if signed(exp1) > signed(exp2(15 downto 8)) then for i in 0 to 15 loop mant2 := std_logic_vector(signed(mant2) / 2); exp2(15 downto 8) := std_logic_vector(signed(exp2(15 downto 8)) + 1); exit when exp1 = exp2(15 downto 8); end loop; elsif signed(exp2(15 downto 8)) > signed(exp1) then for i in 0 to 15 loop mant1 := std_logic_vector(signed(mant1) / 2); exp1 := std_logic_vector(signed(exp1) + 1);
44 28 exit when exp1 = exp2(15 downto 8); end loop; end if; if (signed(mant1) + signed(mant2(46 downto 23))) > or (signed(mant1) + signed(mant2(46 downto 23))) < then mant1 := std_logic_vector(signed(mant1) / 2); mant2 := std_logic_vector(signed(mant2) / 2); exp1 := std_logic_vector(signed(exp1) + 1); exp2(15 downto 8) := std_logic_vector(signed(exp2(15 downto 8)) + 1); end if; mant1 := std_logic_vector(signed(mant1) + signed(mant2(46 downto 23))); end loop; mant2 := std_logic_vector(signed(mant1) * signed(fator(4))); exp1 := std_logic_vector(signed(exp1) + signed(expoente(4))); y(31) <= mant2(46); y(30 downto 23) <= exp1; y(22 downto 0) <= mant2(45 downto 23); end process; end PtoFte;
45 29 ANEXO C: CÓDIGO VHDL DA FUNÇÃO TANGENTE library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity Tangente is port (x: in std_logic_vector (31 downto 0); y: out std_logic_vector (31 downto 0)); end Tangente; architecture PtoFte of Tangente is type vetor is array (3 downto 0) of std_logic_vector (23 downto 0); type vetor2 is array (3 downto 0) of std_logic_vector (7 downto 0); signal fator: vetor; signal expoente: vetor2; begin fator(0) <= " "; -- [1/3] fator(1) <= " "; -- [2/15] fator(2) <= " "; -- [17/315] fator(3) <= " "; -- [79.360/ ] expoente(0) <= " "; expoente(1) <= " "; expoente(2) <= " "; expoente(3) <= " "; process(x) variable mant1: std_logic_vector (23 downto 0); variable exp1: std_logic_vector (7 downto 0); variable mant2: std_logic_vector (47 downto 0); variable exp2: std_logic_vector (15 downto 0); begin exp1 := x(30 downto 23); mant1 := x(31) & x(22 downto 0); for i in 1 to 3 loop exp2(15 downto 8) := x(30 downto 23); mant2(46) := x(31); mant2(45 downto 23) := x(22 downto 0); for j in 2 to ((2 * i) + 1) loop exp2(15 downto 8) := std_logic_vector(signed(exp2(15 downto 8)) + signed(x(30 downto 23))); mant2 := std_logic_vector(signed(mant2(46 downto 23)) * signed(x(31) & x(22 downto 0))); end loop; mant2 := std_logic_vector(signed(mant2(46 downto 23)) * signed(fator(i - 1))); exp2(15 downto 8) := std_logic_vector(signed(exp2(15 downto 8)) + signed(expoente(i - 1))); if signed(exp1) > signed(exp2(15 downto 8)) then for i in 0 to 15 loop mant2 := std_logic_vector(signed(mant2) / 2); exp2(15 downto 8) := std_logic_vector(signed(exp2(15 downto 8)) + 1); exit when exp1 = exp2(15 downto 8); end loop; elsif signed(exp2(15 downto 8)) > signed(exp1) then for i in 0 to 15 loop mant1 := std_logic_vector(signed(mant1) / 2);
46 30 exp1 := std_logic_vector(signed(exp1) + 1); exit when exp1 = exp2(15 downto 8); end loop; end if; if (signed(mant1) + signed(mant2(46 downto 23))) > or (signed(mant1) + signed(mant2(46 downto 23))) < then mant1 := std_logic_vector(signed(mant1) / 2); mant2 := std_logic_vector(signed(mant2) / 2); exp1 := std_logic_vector(signed(exp1) + 1); exp2(15 downto 8) := std_logic_vector(signed(exp2(15 downto 8)) + 1); end if; mant1 := std_logic_vector(signed(mant1) / 2); mant2 := std_logic_vector(signed(mant2) / 2); exp1 := std_logic_vector(signed(exp1) + 1); exp2(15 downto 8) := std_logic_vector(signed(exp2(15 downto 8)) + 1); mant1 := std_logic_vector(signed(mant1) + signed(mant2(46 downto 23))); end loop; y(31) <= mant1(23); y(30 downto 23) <= exp1; y(22 downto 0) <= mant1(22 downto 0); end process; end PtoFte;
47 31 ANEXO D: CÓDIGO VHDL DA FUNÇÃO EXPONENCIAL library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity Exponencial is port (x: in std_logic_vector (31 downto 0); y: out std_logic_vector (31 downto 0)); end Exponencial; architecture PtoFte of Exponencial is type vetor is array (8 downto 0) of std_logic_vector (23 downto 0); type vetor2 is array (8 downto 0) of std_logic_vector (7 downto 0); signal fator: vetor; signal expoente: vetor2; begin fator(8) <= " "; expoente(8) <= " "; fator(7) <= " "; expoente(7) <= " "; fator(6) <= " "; expoente(6) <= " "; fator(5) <= " "; expoente(5) <= " "; fator(4) <= " "; expoente(4) <= " "; fator(3) <= " "; expoente(3) <= " "; fator(2) <= " "; expoente(2) <= " "; fator(1) <= " "; expoente(1) <= " "; fator(0) <= " "; expoente(0) <= " "; process(x) variable mant1: std_logic_vector (47 downto 0); variable exp1: std_logic_vector (7 downto 0); variable mant2: std_logic_vector (23 downto 0); variable exp2: std_logic_vector (7 downto 0); begin exp2 := " "; mant2 := " "; exp1 := x(30 downto 23); mant1(46) := x(31); mant1(45 downto 23) := x(22 downto 0); if signed(exp1) > signed(exp2) then for i in 0 to 15 loop mant2 := std_logic_vector(signed(mant2) / 2); exp2 := std_logic_vector(signed(exp2) + 1); exit when exp1 = exp2; end loop; elsif signed(exp2) > signed(exp1) then for i in 0 to 15 loop mant1(46 downto 23) := std_logic_vector(signed(mant1(46 downto 23)) / 2);
48 32 exp1 := std_logic_vector(signed(exp1) + 1); exit when exp1 = exp2; end loop; end if; if (signed(mant2) + signed(mant1(46 downto 23))) > or (signed(mant2) + signed(mant1(46 downto 23))) < 0 then mant1(46 downto 23) := std_logic_vector(signed(mant1(46 downto 23)) / 2); mant2 := std_logic_vector(signed(mant2) / 2); exp1 := std_logic_vector(signed(exp1) + 1); exp2 := std_logic_vector(signed(exp2) + 1); end if; mant2 := std_logic_vector(signed(mant1(46 downto 23)) + signed(mant2)); for i in 0 to 8 loop exp1 := x(30 downto 23); mant1(46) := x(31); mant1(45 downto 23) := x(22 downto 0); for j in 0 to (i + 1) loop exp1 := std_logic_vector(signed(exp1) + signed(x(30 downto 23))); mant1 := std_logic_vector(signed(mant1(46 downto 23)) * signed(x(31) & x(22 downto 0))); end loop; exp1 := std_logic_vector(signed(exp1) + signed(expoente(i))); mant1 := std_logic_vector(signed(mant1(46 downto 23)) * signed(fator(i))); if signed(exp1) > signed(exp2) then for i in 0 to 15 loop mant2 := std_logic_vector(signed(mant2) / 2); exp2 := std_logic_vector(signed(exp2) + 1); exit when exp1 = exp2; end loop; elsif signed(exp2) > signed(exp1) then for i in 0 to 15 loop mant1(46 downto 23) := std_logic_vector(signed(mant1(46 downto 23)) / 2); exp1 := std_logic_vector(signed(exp1) + 1); exit when exp1 = exp2; end loop; end if; if (signed(mant2) + signed(mant1(46 downto 23))) > or (signed(mant2) + signed(mant1(46 downto 23))) < 0 then mant1(46 downto 23) := std_logic_vector(signed(mant1(46 downto 23)) / 2); mant2 := std_logic_vector(signed(mant2) / 2); exp1 := std_logic_vector(signed(exp1) + 1); exp2 := std_logic_vector(signed(exp2) + 1); end if; mant2 := std_logic_vector(signed(mant1(46 downto 23)) + signed(mant2)); end loop; y(31) <= mant2(23); y(30 downto 23) <= exp2; y(22 downto 0) <= mant2(22 downto 0); end process; end PtoFte;
49 33 ANEXO E: CÓDIGO VHDL DA OPERAÇÃO DE ADIÇÃO library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity Soma is port (x1: in std_logic_vector (31 downto 0); x2: in std_logic_vector (31 downto 0); y: out std_logic_vector (31 downto 0)); end Soma; architecture PtoFte of Soma is begin process(x1, x2) variable mant1: std_logic_vector (23 downto 0); variable exp1: std_logic_vector (7 downto 0); variable mant2: std_logic_vector (23 downto 0); variable exp2: std_logic_vector (7 downto 0); begin exp1 := x1(30 downto 23); mant1 := x1(31) & x1(22 downto 0); exp2 := x2(30 downto 23); mant2 := x2(31) & x2(22 downto 0); if signed(exp1) > signed(exp2) then for i in 0 to 15 loop mant2 := std_logic_vector(signed(mant2) / 2); exp2 := std_logic_vector(signed(exp2) + 1); exit when exp1 = exp2; end loop; elsif signed(exp2) > signed(exp1) then for i in 0 to 15 loop mant1 := std_logic_vector(signed(mant1) / 2); exp1 := std_logic_vector(signed(exp1) + 1); exit when exp1 = exp2; end loop; end if; if ((signed(mant1) + signed(mant2)) > ) or (signed(mant1) < 0 and signed(mant2) < 0 and (signed(mant1) + signed(mant2) ) < 0) then mant1 := std_logic_vector(signed(mant1) / 2); mant2 := std_logic_vector(signed(mant2) / 2); exp1 := std_logic_vector(signed(exp1) + 1); exp2 := std_logic_vector(signed(exp2) + 1); end if; mant2 := std_logic_vector(signed(mant1) + signed(mant2)); y(31) <= mant2(23); y(30 downto 23) <= exp1; y(22 downto 0) <= mant2(22 downto 0); end process; end PtoFte;
50 34
51 35 ANEXO F: CÓDIGO VHDL DA OPERAÇÃO DE SUBTRAÇÃO library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity Subtracao is port (x1: in std_logic_vector (31 downto 0); x2: in std_logic_vector (31 downto 0); y: out std_logic_vector (31 downto 0)); end Subtracao; architecture PtoFte of Subtracao is begin process(x1, x2) variable mant1: std_logic_vector (23 downto 0); variable exp1: std_logic_vector (7 downto 0); variable mant2: std_logic_vector (23 downto 0); variable exp2: std_logic_vector (7 downto 0); begin exp1 := x1(30 downto 23); mant1 := x1(31) & x1(22 downto 0); exp2 := x2(30 downto 23); mant2 := x2(31) & x2(22 downto 0); if signed(exp1) > signed(exp2) then for i in 0 to 15 loop mant2 := std_logic_vector(signed(mant2) / 2); exp2 := std_logic_vector(signed(exp2) + 1); exit when exp1 = exp2; end loop; elsif signed(exp2) > signed(exp1) then for i in 0 to 15 loop mant1 := std_logic_vector(signed(mant1) / 2); exp1 := std_logic_vector(signed(exp1) + 1); exit when exp1 = exp2; end loop; end if; if (signed(mant1) > 0 and (signed(mant1) - signed(mant2)) > ) or (signed(mant1) < 0 and (signed(mant1) - signed(mant2) ) < 0) then mant1 := std_logic_vector(signed(mant1) / 2); mant2 := std_logic_vector(signed(mant2) / 2); exp1 := std_logic_vector(signed(exp1) + 1); exp2 := std_logic_vector(signed(exp2) + 1); end if; mant2 := std_logic_vector(signed(mant1) - signed(mant2)); y(31) <= mant2(23); y(30 downto 23) <= exp1; y(22 downto 0) <= mant2(22 downto 0); end process; end PtoFte;
52 36
53 37 ANEXO G: CÓDIGO VHDL DA OPERAÇÃO DE MULTIPLICAÇÃO library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity Multiplicacao is port (x1: in std_logic_vector (31 downto 0); x2: in std_logic_vector (31 downto 0); y: out std_logic_vector (31 downto 0)); end Multiplicacao; architecture PtoFte of Multiplicacao is begin process(x1, x2) variable mant1: std_logic_vector (23 downto 0); variable exp1: std_logic_vector (7 downto 0); variable mant2: std_logic_vector (47 downto 0); variable exp2: std_logic_vector (7 downto 0); begin exp1 := x1(30 downto 23); mant1 := x1(31) & x1(22 downto 0); exp2 := x2(30 downto 23); mant2(46 downto 23) := x2(31) & x2(22 downto 0); exp2 := std_logic_vector(signed(exp2) + signed(exp1)); mant2 := std_logic_vector(signed(mant2(46 downto 23)) * signed(mant1)); y(31) <= mant2(46); y(30 downto 23) <= exp2; y(22 downto 0) <= mant2(45 downto 23); end process; end PtoFte;
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 maisFPGA & VHDL. Tutorial
FPGA & VHDL Tutorial 2009-2 FPGA FieldProgrammableGateArray Dispositivo lógico contendo uma matriz de: Células lógicas genéricas Configuráveis ( programadas ) para desempenhar uma função simples Chaves
Leia maisIntrodução à Computação
Universidade Federal de Campina Grande Departamento de Sistemas e Computação Introdução à Computação Conceitos Básicos de Eletrônica Digital (Parte IV) Prof. a Joseana Macêdo Fechine Régis de Araújo joseana@computacao.ufcg.edu.br
Leia maisFPGA & 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 maisVHDL. Descrição e Projeto de Circuitos Utilizando VHDL
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
Leia maisGustavo 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 maisProjeto e Implementação de um Fatorial em Hardware para Dispositivos Reconfiguráveis
Projeto e Implementação de um Fatorial em Hardware para Dispositivos Reconfiguráveis Álamo G. Silva, Leonardo A. Casillo Departamento de Ciências Exatas e Naturais Universidade Federal Rural do Semi- Árido
Leia maisUniversidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação
Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação Lógica Programável INE 5348 Aula 1-P Formas de implementação
Leia maisDISPOSITIVOS 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 maisProjeto 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 maisProjeto com Linguagens de Descrição de Hardware
Projeto com Linguagens de Descrição de Hardware Versão 2012 RESUMO Esta experiência consiste no projeto e implementação de um circuito digital simples com o uso de uma linguagem de descrição de hardware.
Leia maisRevisão: Projeto de Processadores em VHDL
Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Revisão: Projeto de Processadores em VHDL DCA0119 Sistemas Digitais Heitor Medeiros Florencio 1 Sumário
Leia maisDISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP. 10/03/2017 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 maisORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I. Introdução ao VHDL. César A. M. Marcon
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I Introdução ao VHDL César A. M. Marcon VHDL Uma Linguagem de Descrição de Hardware 2 Originou como linguagem para descrever hardware, no contexto do programa
Leia maisProf. Leonardo Augusto Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Aula 3 Introdução ao VHDL Prof. Leonardo Augusto Casillo O que significa VHDL? Very High Speed Integrated Circuit Hardware Description
Leia maisIntrodução à Linguagem VHDL
Sistemas Digitais EEL 480 Introdução à Linguagem VHDL Luís Henrique M. K. Costa luish@gta.ufrj.br UFRJ DEL/Poli e PEE/COPPE P.O. Box 68504 - CEP 21941-972 - Rio de Janeiro - RJ Brasil - http://www.gta.ufrj.br
Leia maisAula 11. Dispositivos Lógicos Programáveis. SEL Sistemas Digitais. Prof. Dr. Marcelo Andrade da Costa Vieira
Aula 11 Dispositivos Lógicos Programáveis SEL 0414 - Sistemas Digitais Prof. Dr. Marcelo Andrade da Costa Vieira 1. Características Gerais l PLD Programmable Logical Device; l Agrupa um grande número de
Leia maisIntroduçã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 maisVHDL Circuitos Combinacionais
VHDL Circuitos Combinacionais Neste módulo será feita uma revisão de circuitos combinacionais introduzindose alternativas representações em VHDL Uma descrição VHDL, de forma geral, pode seguir uma das
Leia mais3/14/2012. Programação de Computadores O Computador. Memória Principal representação binária
Programação de Computadores O Computador Memória Principal representação binária Prof. Helton Fábio de Matos hfmatos@dcc.ufmg.br Agenda Memória principal. Memória secundária. O que são bytes e bits. Tecnologias
Leia maisPlano de Aula 26/8/13. VHDL - Visão Geral. Obje%vos: VHDL - Visão Geral. Descrição de circuito digital em VHDL
Instituto Federal de Santa Catarina Área de Telecomunicações SST20707 Síntese de Sistemas de Telecomunicações Prof. Roberto de Matos viso de direitos utorais: Transparências baseadas no trabalho do Prof.
Leia maisTipos enumerados definem uma lista de valores, e são especialmente úteis na
Usando a palavra reservada TYPE é possível definir tipos personalizados. Por exemplo, pode-se definir tipos enumerados (Enumerated) e tipos compostos (Array). Tipos enumerados definem uma lista de valores,
Leia maisIntroduçã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 maisProjeto com Dispositivos Programáveis
Projeto com Dispositivos Programáveis E.T.M./2011 (revisão) RESUMO Nesta experiência será apresentada uma metodologia para projeto de sistemas digitais utilizando FPGAs (dispositivos programáveis) e HDLs
Leia maisEPUSP PCS 2355 Laboratório Digital. Contadores em VHDL
Contadores em VHDL Versão 2012 RESUMO Esta experiência consiste no projeto e implementação de circuitos contadores com o uso da linguagem de descrição de hardware VHDL. São apresentados aspectos básicos
Leia maisELETRÔNICA DIGITAL I
ELETRÔNICA DIGITAL I DE10-LITE Programação Utilizando VHDL Professor Dr. Michael Klug 1 Comparativo Linguagens Linguagem de Programação x HDL Supondo que cada instrução leve 20ns entre 40 e 60ns para conclusão
Leia maisDispositivos de Lógica Programável
Dispositivos de Lógica Programável Evolução Válvula no início de 1940 Transistor em 1947 Não aquece como as válvulas Fisicamente menor 1961 primeiro integrado TTL 74LSXX Década de 1970 surge SPLD Simple
Leia maisArquitetura de Computadores
VHDL - VHSIC Hardware Description Language Arquitetura de Computadores Leonardo Augusto Casillo Referências bibliográficas PELLERIN, David. TAYLOR, Douglas. VHDL Made Easy. Prentice-Hall PTR. 1997. SKANHILL,
Leia maislow): 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 maisProjeto de Somador com e sem Sinal. Qualificadores
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I Projeto de Somador com e sem Sinal Qualificadores César A. M. Marcon Planejando a Descrição de um Somador 2 Como descrever uma soma? S
Leia maisLógica Reconfigurável
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DEPARTAMENTO ACADÊMICO DE ELETROTÉCNICA CURSO DE ENGENHARIA INDUSTRIAL ELÉTRICA MESTRADO EM SISTEMAS DE ENERGIA Lógica Reconfigurável - amauriassef@utfpr.edu.br
Leia maisAula 2 Semântica de VHDL
VHDL - VHSIC Hardware Description Language Aula 2 Semântica de VHDL Leonardo Augusto Casillo Ivan Saraiva Silva 2003-2 Identificadores Usados como referência a todos os objetos declarados no código. Regras:
Leia maisUniversidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação
Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação Aula 3-P Descrição de somadores em VHDL, síntese com o Quartus
Leia maisIntrodução. VHDL: VHSIC Hardware Description Language. Origem: VHSIC: Very High Speed Integrated Circuits. Departamento de Defesa EUA
Introdução VHDL: VHSIC Hardware Description Language VHSIC: Very High Speed Integrated Circuits Origem: Departamento de Defesa EUA desenvolvida entre anos 70 e 80 descrever e modelar circuitos complexos
Leia maisCalculadora Simples em VHDL
Calculadora Simples em VHDL Versão 2014 RESUMO Esta experiência consiste no projeto e implementação de um circuito digital simples com o uso de uma linguagem de descrição de hardware. São apresentados
Leia maisMódulo 4 Introdução ao VHDL
1 Módulo 4 Introdução ao VHDL Conceitos básicos do VHDL Modelação, Simulação e Síntese de Sistemas Digitais entity declara o interface de um componente; architecture descreve a realização de um componente;
Leia maisLógica Reconfigurável
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DEPARTAMENTO ACADÊMICO DE ELETROTÉCNICA CURSO DE ENGENHARIA INDUSTRIAL ELÉTRICA MESTRADO EM SISTEMAS DE ENERGIA Lógica Reconfigurável - amauriassef@utfpr.edu.br
Leia maisSistemas Digitais Unidade Lógica e Aritmética - ULA
Sistemas Digitais Unidade Lógica e Aritmética - ULA Referência Bibliográfica: Contemporary Logic Design Katz & Borriello Logic and Computer Design Fundamentals Mano & Kime Embedded System Design Vahid
Leia maisarquitetura de computadores
arquitetura de computadores UTFPR DAELN Engenharia de Computação prof. Juliano µprocessador 2 Multiplexação, Barramentos, Números: a ULA Multiplexação Um mux é um seletor: ele escolhe uma das entradas
Leia maisFundamentos de sistemas digitais. Test-bench. prof. Dr. Edson Ifarraguirre Moreno
Fundamentos de sistemas digitais Test-bench prof. Dr. Edson Ifarraguirre Moreno 2 / 8 Validação por Simulação Utilizar um circuito de teste: test-bench Contém um circuito gerador de teste e uma instância
Leia maisParte # 2 - Circuitos Combinatórios
CEFET Departamento de Engenharia Elétrica - DEPEL GELE 7163 Eletrônica Digital Parte # 2 - Circuitos Combinatórios 1 GELE 7163 Eletrônica Digital 2 Referências : Notas de Aula. Mendonça, Alexandre e Zelenovsky,
Leia maisHardware Reconfigurável
Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Hardware Reconfigurável DCA0119 Sistemas Digitais Heitor Medeiros Florencio Tópicos Alternativas de projeto
Leia maisDADOS DO COMPONENTE CURRICULAR
PLANO DE ENSINO DADOS DO COMPONENTE CURRICULAR Nome do Componente Curricular: Sistemas Digitais Curso: Técnico Integrado de Nível Médio em Informática Série/Período: 1º ano Carga Horária: 2 a/s - 80 h/a
Leia maisEPUSP PCS 2011 Laboratório Digital I. Uma ULA Simples
Uma ULA Simples Versão 2015 RESUMO Esta experiência tem como objetivo o desenvolvimento do projeto de uma unidade lógica e aritmética simples que realiza quatro operações sobre dados de quatro bits. OBJETIVOS
Leia maisExercícios de Fixação
Exercícios de Fixação Para entregar em 07/02/2013 Exercício I Implemente o circuito de seis portas lógicas abaixo em VHDL; Crie um projeto com o simulador Modelsim que contenha o par entidade-arquitetura
Leia maisPROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar
- Aula 1 - O NÍVEL DA LÓGICA DIGITAL 1. INTRODUÇÃO Na parte inferior da hierarquia da figura abaixo encontramos o nível da lógica digital, o verdadeiro hardware do computador. Este nível situa-se na fronteira
Leia maisPuca Huachi Vaz Penna
BCC201 Introdução à Computação Turmas 61, 62, 63, 64, 65 e 66 Puca Huachi Vaz Penna Departamento de Computação Universidade Federal de Ouro Preto http://www.decom.ufop.br/puca puca@iceb.ufop.br Aula 2
Leia maisTécnicas Digitais para Computação
INF1 118 Técnicas Digitais para Computação Multiplicador Decodificador e Multiplexador Aula 14 Multiplicador Combinacional Técnicas Digitais A x B 1 B = P 3 P 2 P 1 P A1 A B1 B X 2) Equações em SDP, simplificado
Leia maisEnglish version at the end of this document
English version at the end of this document Ano Letivo 2016-17 Unidade Curricular MICROPROCESSADORES Cursos ENGENHARIA ELÉTRICA E ELETRÓNICA (1.º ciclo) - RAMO DE TECNOLOGIAS DE INFORMAÇÃO E TELECOMUNICAÇÕES
Leia maisEPUSP PCS 2011 Laboratório Digital I. Uma ULA Simples
Uma ULA Simples Versão 2013 RESUMO Esta experiência tem como objetivo o desenvolvimento do projeto de uma unidade lógica e aritmética simples que realiza quatro operações sobre dados de quatro bits. OBJETIVOS
Leia maisAnálise empírica de algoritmos de ordenação
Análise empírica de algoritmos de ordenação Mario E. Matiusso Jr. (11028407) Bacharelado em Ciências da Computação Universidade Federal do ABC (UFABC) Santo André, SP Brasil mario3001[a]ig.com.br Resumo:
Leia maisSIMULAÇÃO DE CIRCUITOS
SIMULAÇÃO E CIRCUITOS Versão 2012 RESUMO Nesta experiência será discutido o procedimento de simulação de circuitos digitais, em particular sua importância dentro de uma metodologia para projeto de sistemas
Leia maisRevisão: Projeto e síntese de Circuitos Digitais em FPGA
Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Revisão: Projeto e síntese de Circuitos Digitais em FPGA DCA0119 Sistemas Digitais Heitor Medeiros Florencio
Leia maisELD - Eletrônica Digital Aula 11 Introdução à Lógica Programável. Prof. Antonio Heronaldo de Sousa
ELD - Eletrônica Digital Aula 11 Introdução à Lógica Programável Prof. Antonio Heronaldo de Sousa Agenda - Introdução - Lógica Programável - Dispositivos de Lógica Programável - Arranjos Lógicos Programáveis
Leia maisLógica Reconfigurável
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DEPARTAMENTO ACADÊMICO DE ELETROTÉCNICA CURSO DE ENGENHARIA INDUSTRIAL ELÉTRICA MESTRADO EM SISTEMAS DE ENERGIA Lógica Reconfigurável - amauriassef@utfpr.edu.br
Leia maisDSP Builder - Altera. MO801 - Tópicos em Arquitetura e Hardware. Michele Tamberlini 05/2006
DSP Builder - Altera MO801 - Tópicos em Arquitetura e Hardware Michele Tamberlini 05/2006 DSP Builder Roteiro Introdução Funcionalidades MegaCore MATLAB / SIMULINK SOPC Builder Bibliotecas Introdução Algoritmos
Leia maisTIPO INTEGER. Profa. Luiza Maria Romeiro Codá 2
TIPO INTEGER 2 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY FF3_tipoD_nivel IS PORT(CLK, RST, SET : IN STD_LOGIC; D : IN STD_LOGIC_VECTOR(2 DOWNTO 0); Q : OUT STD_LOGIC_VECTOR(2 DOWNTO 0)); END FF3_tipoD_nivel;
Leia maisLaboratório sobre Implementação de Sistemas Digitais com HDLs Ferramentas de Captura e Validação
Laboratório sobre Implementação de Sistemas Digitais com HDLs Ferramentas de Captura e Validação 1 Laboratório sobre Implementação de Sistemas Digitais com HDLs Ferramentas de Captura e Validação Prática:
Leia maisO 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 maisIntrodução VHDL Parte 4 - Testbench
Introdução VHDL Parte 4 - Testbench Prof. Mário Luiz Rodrigues mario.luiz@ifmg.edu.br Prof. Otávio Gomes otavio.gomes@ifmg.edu.br 1 library IEEE; use IEEE.std_logic_1164.all; entity portae is port( a:
Leia maisEPUSP PCS 3335 Laboratório Digital A. Introdução ao VHDL
Introdução ao VHDL Versão 2016 RESUMO Esta experiência consiste no estudo de descrições VHDL e no projeto e implementação de um circuito digital simples. São apresentados aspectos básicos da linguagem
Leia maisEPUSP PCS 2011/2305/2355 Laboratório Digital SOMADORES DECIMAIS
SOMADORES DECIMAIS Versão 2012 RESUMO Nesta experiência será estudado um circuito aritmético de soma decimal a partir dos somadores binários de 4 bits (por exemplo, o circuito integrado 74283). A parte
Leia maisCircuito de Recepção Serial Assíncrona
Circuito de Recepção Serial Assíncrona Versão 2016 RESUMO O objetivo desta experiência é aplicar a metodologia de projeto de circuitos digitais com dispositivos programáveis adotado no Laboratório Digital
Leia maisSistemas Digitais (SD) Lógica Programável
Sistemas Digitais (SD) Lógica Programável Aula Anterior Na aula anterior: Circuitos de controlo, transferência e processamento de dados Exemplo de uma arquitectura simples de um processador Prof. Nuno
Leia maisExercícios Referentes à Prova P1
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I Referentes à Prova P1 prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno 2 / 11 1. Assinale com V se a sentença estiver correta, caso contrário
Leia maisO Mundo Real é Analógico ou Digital?
Analógico / Digital O Mundo Real é Analógico ou Digital? O que define uma grandeza analógica? Os sinais analógicos podem tomar qualquer valor num intervalo contínuo de tensão, corrente, resistência ou
Leia maisMicroprocessadores. Introdução ao Prof. Henrique
Microprocessadores Introdução ao 8051 Prof. Henrique Roteiro Introdução Aplicações Critérios de escolha Registradores Especiais Definições Microcontroladores x Lógica Fixa Referências... Introdução Um
Leia maisSistemas Digitais INE 5406
Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação Sistemas Digitais INE 5406 Aula 10-P Refinamento das especificações
Leia maisDescrição por fluxo de dados (Data-Flow): Descreve o que o sistema deve fazer utilizando expressões lógicas.
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. Descrição
Leia maisDisciplina: Processamento Digital de Sinais Aula 05 - Implementação de Sistemas de Processamento Digital de Sinais (Parte 01)
Disciplina: Processamento Digital de Sinais Aula 05 - Implementação de Sistemas de Processamento Digital de Sinais (Parte 01) Prof. (eduardo.simas@ufba.br) Programa de Pós-Graduação em Engenharia Elétrica
Leia maisIntrodução à Informática
Introdução à Informática Informática Aplicada Bacharelado em Engenharia de Pesca Flávia Coelho flaviacoelho@ufersa.edu.br 1 Elaborado por Yáskara Menescal e atualizado por Flávia Coelho, em março de 2009
Leia maisUniversidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação
Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação Aula 5-P Processos em VHDL. Comandos de atribuição em VHDL:
Leia maisDesenvolvimento de Modelo HDL otimizado no tempo para Controlador de Acesso Direto à Memória (DMA)
UNIVERSIDADE FEDERAL DE PERNAMBUCO GRADUAÇÃO EM ENGENHARIA DA COMPUTAÇÃO CENTRO DE INFORMÁTICA 2013.1 Desenvolvimento de Modelo HDL otimizado no tempo para Controlador de Acesso Direto à Memória (DMA)
Leia maisEPUSP PCS2355 Laboratório Digital SOMADORES DECIMAIS
SOMADORES DECIMAIS Versão 2015 RESUMO Nesta experiência será estudado um circuito aritmético de soma decimal a partir dos somadores binários de 4 bits (por exemplo, o circuito integrado 74283). A parte
Leia maisCálculo Numérico Conceitos Básicos
Cálculo Numérico Conceitos Básicos Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br MATERIAL ADAPTADO DOS SLIDES DA DISCIPLINA CÁLCULO NUMÉRICO DA UFCG - www.dsc.ufcg.edu.br/~cnum/ 1 Princípios usados
Leia maisEletrônica Digital para Instrumentação. Prof: Herman Lima Jr
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) PACOTES (package) Entidades e Arquiteturas são
Leia maisSistema Computacional
Algoritmos e Lógica de Programação Conceitos Básicos Abstração Reinaldo Gomes reinaldo@cefet-al.br O que é um? Integração de componentes atuando como uma entidade, com o propósito de processar dados, i.e.
Leia maisTópicos Especiais 2 Capítulo 3 Introdução ao VHDL, sintaxe básica, tipo de dados e atribuições
Tópicos Especiais 2 Capítulo 3 Introdução ao VHDL, sintaxe básica, tipo de dados e atribuições Prof. Alan Petrônio Pinheiro - 2011 Introdução VHDL é uma linguagem de descrição de hardware Hardware Description
Leia maisSISTEMAS DIGITAIS (SD)
SISTEMAS DIGITAIS (SD) MEEC Acetatos das Aulas Teóricas Versão 4.0 - Português Aula N o 25: Título: Sumário: Lógica Programável Lógica programável (ROM, PLA, PAL e FPGA); Linguagens de descrição de hardware
Leia maisSistemas Digitais (SD) Lógica Programável
Sistemas Digitais (SD) Lógica Programável Aula Anterior n Na aula anterior: u Circuitos de controlo, transferência e processamento de dados u Exemplo de uma arquitectura simples de um processador 2 Planeamento
Leia maisUniversidade Federal do Rio Grande do Sul Instituto de Informática Programa de Pós-Graduação em Computação
Universidade Federal do Rio Grande do Sul Instituto de Informática Programa de Pós-Graduação em Computação Relatório do Trabalho da Disciplina de Arquitetura e Organização de Processadores CMP- 237 Marcelo
Leia maisIntrodução ao Projeto de Sistemas Digitais com Dispositivos Programáveis
Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis Versão 2013 RESUMO Nesta experiência será desenvolvido um projeto de sistema digital em um dispositivo programável (FPGA) com a
Leia maisPLANEJAMENTO DAS DISCIPLINAS DE SISTEMAS DIGITAIS NA EC3. Workshop de Graduação do PCS Prof. Edson S. Gomi 31 de julho de 2018
PLANEJAMENTO DAS DISCIPLINAS DE SISTEMAS DIGITAIS NA EC3 Workshop de Graduação do PCS Prof. Edson S. Gomi 31 de julho de 2018 Disciplina PréRequisito Semestral Quadrimestral PCS3115 Sistemas Digitais I
Leia mais1. Sistemas de numeração e códigos 23
Sumário 1. Sistemas de numeração e códigos 23 1.1. Conceitos fundamentais 23 1.2. Representações numéricas 24 1.3. Representação de dados numéricos 25 1.4. Sistemas de números e bases numéricas 27 1.4.1.
Leia maisFCA - Editora de Informática xv
Índice Geral Agradecimentos ix Prefácio xi Índice das Simulações xxv 1 - Introdução ao mundo dos computadores 1 1.1 O computador como ferramenta... 2 1.2 A importância dos computadores... 4 1.3 Processamento
Leia maisOs computadores ditigais podem ser classificados em 5 grupos distintos:
Informática A informática engloba toda atividade relacionada ao uso dos computadores, permitindo aprimorar e automatizar tarefas em qualquer área de atuação da sociedade. Informática é a "Ciência do tratamento
Leia maisEXPERIÊNCIA 4: IMPLEMENTAÇÃO DE UM CRONÔMETRO
EXPERIÊNCIA 4: IMPLEMENTAÇÃO DE UM CRONÔMETRO Autores: Prof. Dr. André Riyuiti Hirakawa, Prof. Dr. Carlos Eduardo Cugnasca e Prof. Dr. Paulo Sérgio Cugnasca Versão 1.0-05/2005 1. OBJETIVO Esta experiência
Leia maisAlgoritmos e Lógica de Programação Componentes e Arquitetura
Algoritmos e Lógica de Programação Componentes e Arquitetura Agostinho Brito Departamento de Engenharia da Computação e Automação Universidade Federal do Rio Grande do Norte 21 de fevereiro de 2017 Noções
Leia maisAVALIAÇÃO DE CONVERSORES BOOST OPERANDO EM PARALELO EMPREGANDO A TÉCNICA INTERLEAVED E CONTROLADOS DIGITALMENTE
AVALIAÇÃO DE CONVERSORES BOOST OPERANDO EM PARALELO EMPREGANDO A TÉCNICA INTERLEAVED E CONTROLADOS DIGITALMENTE ANALISYS OF PARALLEL BOOST CONVERTERS THROUGH INTERLEAVED STRATEGY AND CONTROLLED DIGITALLY
Leia maisLógica Reconfigurável
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DEPARTAMENTO ACADÊMICO DE ELETROTÉCNICA CURSO DE ENGENHARIA INDUSTRIAL ELÉTRICA MESTRADO EM SISTEMAS DE ENERGIA Lógica Reconfigurável - amauriassef@utfpr.edu.br
Leia maisIntrodução ao Max+Plus II
Universidade Federal Fluminense Escola de Engenharia Departamento de Engenharia de Telecomunicações Técnicas Digitais A Laboratório no. 02 Objetivo Iniciar o aprendizado do software Max+Plus II utilizado
Leia maisExercícios de Laboratório 3
Tradução do Laboratory Exercise 3 disponível em Exercícios de Laboratório 3 Latches, Flip-Flops e Registradores Este exercício
Leia maisDisciplina de SSC Elementos de Lógica Digital II (Prática)
USP - ICMC - SSC SSC 0113 (Lab ELD II) - 2o. Semestre 2012 Disciplina de SSC0113 - Elementos de Lógica Digital II (Prática) 1 Prof. Fernando Osório Email: fosorio [at] { icmc. usp. br, gmail. com } Estagiário
Leia maisProjetos de Circuitos Digitais em VHDL e FPGA
Projetos de Circuitos Digitais em VHDL e FPGA Cap. 1 - Dispositivos Lógicos Programáveis Prof. Erivelton Geraldo Nepomuceno Engenharia Elétrica UFSJ - Universidade Federal de São João del-rei 19 de fevereiro
Leia maisINTRODUÇÃO À ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Função e Estrutura. Introdução Organização e Arquitetura. Organização e Arquitetura
Introdução Organização e Arquitetura INTRODUÇÃO À ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES Eduardo Max Amaro Amaral Arquitetura são os atributos visíveis ao programador. Conjunto de instruções, número
Leia maisEPUSP PCS 3335/3635 Laboratório Digital. Circuito em VHDL
Circuito em VHDL Versão 2017 RESUMO Esta experiência tem como objetivo um contato inicial com o desenvolvimento do projeto de um circuito digital simples em VHDL e sintetizado para uma placa de desenvolvimento
Leia mais12/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