Lógica Reconfigurável

Documentos relacionados
Lógica Reconfigurável

SIMULAÇÃO DE CIRCUITOS

Introdução à Simulação em VHDL. Ney Laert Vilar Calazans

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP. 10/03/2017 Prof. Alexandre - ELP1DLP1 / DEE

Tipos enumerados definem uma lista de valores, e são especialmente úteis na

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

Introdução VHDL Parte 4 - Testbench

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

Exercícios de Laboratório 3

VHDL. Descrição e Projeto de Circuitos Utilizando VHDL

Fundamentos de Sistemas Digitais. Lógica Sequencial. Prof. Dr. Alexandre M. Amory Prof. Dr Edson I. Moreno

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

AULA 5 Aplicação com divisor de freqüência com o CI Livro Texto pág.197 a 200.

Prof. Leonardo Augusto Casillo

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)

Módulo 4 Introdução ao VHDL

Passos Iniciais para simulação de um projeto utilizando portas lógicas

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

VHDL Circuitos Combinacionais

Introdução à Linguagem VHDL

EPUSP PCS 2355 Laboratório Digital. Contadores em VHDL

Fundamentos de sistemas digitais. Test-bench. prof. Dr. Edson Ifarraguirre Moreno

Descrição por fluxo de dados (Data-Flow): Descreve o que o sistema deve fazer utilizando expressões lógicas.

Introdução à Linguagem VHDL

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

CIRCUITOS SEQUENCIAIS parte 1

IMPLEMENTAÇÕES POR EQUAÇÃO DE ESTADOS E DE SAÍDA DOS MODELOS DE MEALY E DE MOORE 1 BIT POR ESTADO.

Aula 2 Semântica de VHDL

Exercícios de Fixação

VHDL - VHSIC Hardware Description Language. Exemplo prático. Raiz Quadrada

FSM em VHDL e Verificação Funcional. CMP de junho de 2006

PSI-3451 Projeto de CI Lógicos Integrados. Aula 9- Atividade de Aula com Memória e FIFO

ELETRÔNICA DIGITAL I

VHDL. Projeto de Iniciação Científica Biblioteca Aritmética

EPUSP PCS 3335/3635 Laboratório Digital. Circuito em VHDL

Arquitetura de Computadores

Tutorial para criação de circuitos digitais em VHDL no Quartus Prime 16.1

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

FPGA & VHDL. Tutorial

Organização e Arquitetura de Computadores II

Projeto de Circuito Combinacional

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

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

Departamento de Engenharia Elétrica e de Computação EESC-USP. Guia de Projetos VHDL utilizando o QUARTUIS II. Profa. Luiza Maria Romeiro Codá

Eletrônica Digital para Instrumentação. Herman Lima Jr.

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

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I. Introdução ao VHDL. César A. M. Marcon

Tutorial para criação de circuitos digitais utilizando diagrama esquemático no Quartus Prime 16.1

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

Os sistemas combinacionais a saída depende exclusivamente das condições das entradas, portanto o sistema não possui memória interna.

Projeto de Somador com e sem Sinal. Qualificadores

Laboratório de Eletrônica Digital Tutorial Quartus II (Procedimentos para Criação e Simulação de Projetos Digitais)

Funções de Lógica Combinacional

VHDL é uma linguagem bastante complexa!

Sistemas Digitais (SD) Lógica Programável

Introdução. VHDL: VHSIC Hardware Description Language. Origem: VHSIC: Very High Speed Integrated Circuits. Departamento de Defesa EUA

ROTEIRO 1 INTRODUÇÃO AO QUARTUS II

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

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

Uma Introdução às Linguagens de Descrição de Hardware

Descrição e Projeto de Circuitos Utilizando VHDL

ALTERA Quartus II. Manual

SIMULAÇÃO DE CIRCUITOS

Projeto com Linguagens de Descrição de Hardware

PCS3515 Sistemas Digitais. Blocos Básicos

Criando e Simulando Circuitos Digitais no Quartus II

Registradores. Circuitos Lógicos. DCC-IM/UFRJ Prof. Gabriel P. Silva

Revisão: Projeto de Processadores em VHDL

CIRCUITOS COMBINACIONAIS

Sistemas Digitais (SD) Lógica Programável

PASSO A PASSO COMO CRIAR UM NOVO PROJETO EM SCHEMATIC NO SOFTWARE QUARTUS II CYCLONE IV

Eletrônica Digital Moderna e VHDL Volnei A. Pedroni, Elsevier, Soluções dos Exercícios Ímpares dos Capítulos 19 23

Transcrição:

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 paginapessoal.utfpr.edu.br/amauriassef 1

Conversão de códigos VHDL em blocos no Quartus II: Tem a função de facilitar a visualização bem como a documentação do projeto Todos as funções são simbolizadas através de blocos em um ou mais arquivos bdf São utilizados arquivos HDL (Linguagem de Descrição de Hardware) e blocos do MegaWizard VHDL Verilog AHDL 2

Exemplo: Conversor DC/AC com alinhamento central 3

Código MATLAB (disponível no página pessoal): clc; clear all; close all; f = 60; % Frequência 60Hz T = 1/f; % Período N_ref = 32; % Número de amostras da senoide Normalizacao = 2^15-1; % Valor máximo de normalização n_ref = 0:1:N_ref-1; N_triangular = 16; % N. pontos da port. triangular Modulacao_amplitude = 0.9; % índice entre 0 (0%) a 1 (100%) N_pontos = N_ref * N_triangular;% Numero total de amostras 4

%Calculo dos vetores da senoide e onda dente de serra for j=1:n_ref for i=1:n_triangular senoide(i+(j-1)*n_triangular) = sin(2*pi*(j-1)/n_ref); if i < (N_triangular+4)/2 % subida vetor_contador(i+(j-1)*n_triangular) = (i-1); else % descida vetor_contador(i+(j-1)*n_triangular) = (N_triangular+1-i); end; vetor_contador(i+(j-1)*n_triangular) = vetor_contador(i+(j-1)*n_triangular)/(n_triangular/2); end; end; 5

% Ajusta o índice de modulação em amplitude, normaliza os valores e soma offset senoide_norm = (senoide * (Normalizacao/2)* Modulacao_amplitude) + (Normalizacao/2); vetor_cnt_norm = vetor_contador * Normalizacao; %Calculo da tabela com a senoide para incluir na projeto do Quartus II indice = 0; for i=1:n_triangular:(n_pontos-n_triangular+1) indice = indice + 1; tabela_senoide(indice)=senoide_norm(i); end; 6

% Comparação para geração dos sinais PWM for i=1:n_pontos if senoide_norm(i) > vetor_cnt_norm(i) sinal_pwm(i) = 1;sinal_pwm_negado(i) = 0; else sinal_pwm(i) = 0;sinal_pwm_negado(i) = 1; end; end; indice = 1:1:N_pontos; % índice para os gráficos 7

% Gráficos subplot(2,1,1); stairs(indice,vetor_cnt_norm,'r'); hold on; stairs(indice,senoide_norm,'linewidth',2'); title(['índice de modulação em Amplitude = ',num2str(modulacao_amplitude*100),'%']); axis tight;xlabel('índice de amostras');ylabel('amplitude Normalizada'); legend(['n Triangular=',num2str(N_triangular)],['Ref Nref=',num2str(N_ref)]); subplot(2,1,2); stairs(indice,sinal_pwm); xlabel('índice de amostras');ylabel('pwm'); axis ([0 N_pontos 0 1.15]); legend('sinal PWM'); 8

Passo-a-passo: Criar um projeto no Quartus II 9

Selecionar o arquivo [nome_do_aquivo].bdf principal Salvar o arquivo com o mesmo nome do projeto (aula6_blocos.bdf) 10

1) Criar um arquivo VHDL com o código da portadora triangular (portadora_triangular.vhd) LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.numeric_std.all ; ENTITY portadora_triangular IS -- ENTITY GENERIC (N: INTEGER := 15); PORT ( clk,rst: IN STD_LOGIC; q, q_norm: OUT STD_LOGIC_VECTOR (N-1 DOWNTO 0)); END portadora_triangular; ARCHITECTURE behavior OF portadora_triangular IS -- ARCHITECTURE SIGNAL q_temp: INTEGER RANGE 0 TO 2**N-1 :=0; SIGNAL sentido: STD_LOGIC :='0'; CONSTANT MODULO : INTEGER := 16/2; CONSTANT NORMALIZACAO : INTEGER := (2**N-1)/MODULO; 11

BEGIN PROCESS(clk,rst,q_temp,sentido) BEGIN IF (rst='1') THEN -- ASSÍNCRONO q_temp <= 0; sentido <= '0'; ELSIF (rising_edge(clk)) THEN IF sentido = '0' THEN -- contador crescente IF (q_temp = MODULO) THEN q_temp <= q_temp - 1; sentido <= '1'; ELSE q_temp <= q_temp + 1;sentido <= '0'; END IF; END IF; END PROCESS; ELSE END IF; -- contador decrescente IF (q_temp = 0) THEN q_temp <= q_temp + 1; sentido <= '0'; ELSE q_temp <= q_temp - 1; sentido <= '1'; END IF; 12

-- Conversao de INTEGER para SLV q_norm <= std_logic_vector( to_unsigned( q_temp * NORMALIZACAO, N )); q <= std_logic_vector( to_unsigned( q_temp, N )); END behavior; 13

Na janela Project Navigator, menu inferior Files, selecionar o arquivo VHD gerado (portadora_triangular.vhd) com o botão direito do mouse Selecionar a opção Create Symbol Files for Current File 2 1 3 Caso a compilação aponte algum erro, fazer a correção e repetir o procedimento 14

Caso o arquivo não apareça no diretório na área da tela: Pressionar a pasta Files com o botão direito do mouse para adicionar o arquivo Na tela Settings, procurar o arquivo através da caixa... 15

Selecionar o arquivo desejado e os botões Abrir e depois Add e OK na janela anterior (obs: verificar se o diretório está correto) 16

2) Criar um arquivo VHDL com o código para leitura do vetor com a senoide de referência (senoide_referencia.vhd) --------------------------- LIBRARY ieee; USE ieee.std_logic_1164.all; use ieee.numeric_std.all; --------------------------- ENTITY senoide_referencia IS GENERIC (N : INTEGER := 15; TAMANHO_VETOR: INTEGER := 32); PORT (clk,rst: IN STD_LOGIC; q: OUT STD_LOGIC_VECTOR (N-1 DOWNTO 0)); END senoide_referencia; --------------------------- 17

ARCHITECTURE behavior OF senoide_referencia IS SIGNAL endereco : INTEGER RANGE 0 TO 2**N-1; SIGNAL contador : INTEGER RANGE 0 TO 2**N-1; TYPE vetor IS ARRAY (0 TO TAMANHO_VETOR-1 ) of INTEGER RANGE 0 TO 2**N-1; CONSTANT N_TRIANGULAR : INTEGER := 16; CONSTANT N_REF : INTEGER := 32; -- valores copiados do Matlab para índice de modulação 0.9 CONSTANT senoide_ref: vetor := ( 16384, 19260, 22026, 24575, 26810, 28644, 30006, 30845,... 13507 ); 18

BEGIN PROCESS (rst,clk,contador,endereco) BEGIN IF (rst = '1') THEN endereco <= 0; contador <= 0; ELSIF (RISING_EDGE (clk)) THEN IF (contador < N_TRIANGULAR-1) THEN contador <= contador + 1; -- incrementa contador de referencia ELSE contador <= 0; IF (endereco < N_REF-1) THEN endereco <= endereco + 1; ELSE endereco <= 0; END IF; END IF; END IF; END PROCESS; q <= STD_LOGIC_VECTOR(to_unsigned(senoide_ref(endereco),N)); END behavior; ---------------------------------------------------------- 19

Dados da senoide de referência para índice de modulação 0,9 Tabela_senoide = [16384; 19260; 22026; 24575; 26810; 28644; 30006; 30845; 31129; 30845; 30006; 28644; 26810; 24575; 22026; 19260; 16384; 13507; 10741; 8192; 5957; 4123; 2761; 1922; 1638; 1922; 2761; 4123; 5957; 8192; 10741; 13507] 20

Repetir o processo para criar o bloco do novo código Caso a compilação aponte algum erro, fazer a correção e repetir o procedimento 21

3) Incluir os dois blocos e completar o desenho Dois cliques na área do desenho 22

23

4) Incluir um bloco comparador de 15 bits via MegaWizard 24

Obs: Na última tela de configuração, selecionar a caixa Quartus II symbol file 25

Completar o desenho com os pinos de saída PWM 26

Resultados de simulação 27

Matlab 28

Referências: Notas de aula do professor Volnei A. Pedroni PEDRONI, Volnei A. Circuit design and simulation with VHDL. MIT press, 2010. HAMBLEN, James O.; HALL, Tyson S.; FURMAN, Michael D. Rapid prototyping of digital systems: SOPC edition. Springer Science & Business Media, 2007. TOCCI, Ronald J.; WIDMER, Neal S.; MOSS, Gregory L. Sistemas digitais: princípios e aplicações. Prentice Hall, 2003. 29