Vous êtes sur la page 1sur 27

UNIVERSIDADE FEDERAL DE CAMPINA GRANDE

PR-REITORIA DE PESQUISA E EXTENSO


PROGRAMA INSTITUCIONAL DE BOLSAS DE INICIAO CIENTFICA







SIMULADOR TEMPO REAL BASEADO EM DISPOSITIVO FPGA
APLICADO A AVALIAO DE OPERAO COOPERATIVA DE
FILTROS ATIVOS DE POTNCIA ETAPA 3




Bolsista:
Luciana Joviniano Nbrega

Orientador:
Alexandre Cunha de Oliveira




CAMPINA GRANDE - PB, FEVEREIRO DE 2014
1

UNIVERSIDADE FEDERAL DE CAMPINA GRANDE
PR-REITORIA DE PESQUISA E EXTENSO
PROGRAMA INSTITUCIONAL DE BOLSAS DE INICIAO CIENTFICA





RELATRIO PARCIAL


SIMULADOR TEMPO REAL BASEADO EM DISPOSITIVO FPGA
APLICADO A AVALIAO DE OPERAO COOPERATIVA DE
FILTROS ATIVOS DE POTNCIA ETAPA 3


Relatrio de pesquisa apresentado a Coordenao
de Pesquisa e Extenso do Departamento de
Engenharia Eltrica da Universidade Federal de
Campina Grande, em cumprimento parcial s
exigncias do Programa Institucional de Bolsas de
Iniciao Cientfica - PIBIC.


________________________________________________
Luciana Joviniano Nbrega
Bolsista


_________________________________________________
Alexandre Cunha Oliveira
Orientador
CAMPINA GRANDE - PB, FEVEREIRO DE 2014
2


SUMRIO
1. INTRODUO ................................................................................................................................. 3
2. OBJETIVOS ........................................................................................................................................ 5
3.REVISO BIBLIOGRFICA ...................................................................................................................... 6
3.1 Representao numrica em ponto flutuante ............................................................................. 6
3.2 Integrao numrica .................................................................................................................. 7
4. MATERIAIS E MTODOS ....................................................................................................................... 8
4.1FPGA .......................................................................................................................................... 8
4.2 Verilog ....................................................................................................................................... 9
4.3 ULAPF ................................................................................................................................... 10
4.3.1 ULAPF (Preciso Simples) ........................................................................................................................... 10
4.3.2 ULAPF (Preciso Dupla) .............................................................................................................................. 11
4.4 Segmento de linha ................................................................................................................... 13
4.5 Conversor Digital-Analgico R-2R ......................................................................................... 13
4.6 PLL (Phase-Locked Loops) ..................................................................................................... 14
4.7 Retificador de meia onda ........................................................................................................ 14
4.8 Retificador de onda completa.................................................................................................. 17
5. RESULTADOS PARCIAIS ...................................................................................................................... 20
6. REFERNCIAS BIBLIOGRFICAS ............................................................................................................ 21
ANEXOS ........................................................................................................................................... 22









3


1. Introduo

O Simulador Digital de Tempo Real( Real Time Digital Simulator-RTDS) um completo
sistema de simulao digital para a realizao de testes em Sistemas Eltricos de Potncia com
capacidade de operao continua, em tempo real e em malha fechada com equipamentos de
proteo e controle. Uma planta fsica real pode ter suas entrada/sadas representadas com grande
preciso pelo sistema computacional de um RTDS, permitindo assim substituir a planta real pela
sua simulao.
A utilizao dos RTDS em sistemas de eletrnica de potncia est geralmente voltado para a
simulao de conversores e filtros ativos, facilitando a prototipao de controladores. Para a
correta execuo da simulao so necessrios modelos matemticos e computacionais dos
diversos elementos constituintes do sistema de potncia.
O dispositivo FPGA constitudo por um conjunto de chaves programveis, as quais podem
ser configuradas para simular em tempo real o comportamento de outros circuitos e/ou sistemas. A
simulao de alguns circuitos e/ou projetos exigem um cenrio de aplicao. Para implementao
em laboratrio, tem-se que restringir as dimenses dos mesmos. Os simuladores de tempo real,
como aqueles baseados em dispositivos FPGA, contornam esse problema. Alm disso, eles
permitem a simulao de plantas/processos/circuitos a passos de ordem de microssegundos, o que
para muitas plantas/processos/circuitos considerada uma resposta em tempo real.
Atualmente os dispositivos de eletrnica de potncia (fontes chaveadas, diodos,
transistores, etc.) esto sendo utilizados amplamente em equipamentos como: computadores,
conversores de energia etc. Para o sistema eltrico, esses equipamentos so vistos como cargas
no lineares, que diminuem a qualidade da energia, provocando: perturbaes na amplitude de
tenso, perturbaes na frequncia do sinal, desequilbrios de tenso ou corrente em sistemas
trifsicos, perturbaes na forma de onda. [1]
As perturbaes na forma de onda, causadas por componentes harmnicas, podem causar
aquecimentos excessivos, disparos de dispositivos de proteo, ressonncia, vibraes e reduo
do fator de potncia da instalao, etc.
Devido a essa disseminao de perturbaes, existem normas que estabelecem limites de
distores harmnicas para equipamentos de baixa tenso[2]. De modo a atender a essas normas,
o uso de filtros passivos e/ou ativos de potncia se coloca como uma soluo tecnolgica.
O filtro ativo paralelo um dispositivo instalado em paralelo entre a fonte e a carga
poluidora. a estrutura de filtro mais utilizada no sistema eltrico. A utilizao de um filtro
4

ativo pode ser junto s cargas que geram grandes quantidades de harmnicas, realizando uma
filtragem local, pode ser junto aos quadros de distribuio, realizando uma compensao geral das
correntes harmnicas.[2]
Para a realizao da modelagem dos circuitos/plantas/sistemas que sero simulados
necessrio a realizao de uma discretizao das equaes que descrevem seu comportamento. A
simulao em tempo real realizada por FPGA provm uma liberdade na escolha da preciso
numrica dos parmetros e coeficientes das equaes. Com esta temtica em vista, foi utilizada
duas ULAS, que realizam as operaes aritmticas bsicas em duas representaes em ponto
flutuante distintas, uma em preciso simples e outra em preciso dupla. A primeira foi a mesma
usada no pibic anterior. Como em um simulador de tempo real, a preciso numrica e o controle
na propagao de erros so fatores importantes, pois esto relacionados com o grau de preciso do
modelo, importante uma analise da preciso obtida e do controle de propagao de erro.






















5

2. Objetivos
Este projeto, como indicado no resumo do mesmo, tem como objetivo aprimorar o uso de
unidades aritmticas de ponto flutuante, aplicadas a implementao de simuladores tempo real,
com passo de clculo igual ou inferior a 1microsegundo. Neste sentido, para atingir os propsitos
almejados pretende-se com este projeto:

1. Analisar os erros numricos causado pelo truncamento de valores quando so
utilizadas a preciso simples e preciso dupla para representao de nmeros em ponto
flutuante;

2. Avaliar conjunto de implementaes de Unidades de Ponto Flutuante, descritas em
Verilog/System Verilog, com preciso simples e dupla, usando modelos matemticos de
circuitos eltricos representativos de trechos de linha como elementos de avaliao;

3. Implementar mdulos de segmento de linha e conversor esttico de potncia
utilizando ULAPFu selecionada na etapa 2;

4. Incorporar a simulao do conversor esttico, curvas medidas de tenso x corrente,
nos instantes de ativao/desligamento de chaves de potncia do tipo IGBT, aproximando
a simulao do conversor do comportamento de um conversor real.

Ao fim do projeto espera-se ter disponvel um simulador tempo real com capacidade de operar
com passo de clculo menor ou igual a 1microsegundo.










6

3.Reviso Bibliogrfica
3.1 Representao numrica em ponto flutuante

Para a implementao do projeto foi realizada uma reviso bibliogrfica da representao
numrica em ponto flutuante, tanto para preciso simples como para preciso dupla. A
representao em ponto flutuante permite representar uma ampla faixa de valores com resoluo
varivel, mas seu uso pode levar a acumulao de erros. No entanto, essa representao vem
sendo utilizada por diversas aplicaes que exigem um alto processamento de dados aliado a uma
excelente preciso.
O padro utilizado para a representao em preciso simples e dupla, foi o padro IEE 754 [3],
que contm normas a serem seguidas pelos fabricantes de computadores e construtores de
Softwares. As normas englobam o tratamento da aritmtica binria para nmeros de ponto
flutuante relativo ao armazenamento, mtodos de arredondamento, ocorrncia de underflow e
overflow, e as operaes aritmticas bsicas. Unificando assim, as diversas implementaes em
mquina de registros e operaes em ponto flutuante.
Um nmero binrio em ponto flutuante pode ser representado de acordo com (1).

(1)

em que () representa o sinal, M a mantissa, exp o expoente e B a base .
Para haver uma uniformidade nas representaes os nmeros so normalizados, ou seja, a
vrgula deslocada para a esquerda ou para a direita (ajustando o expoente) at que a mesma
esteja direita do dgito diferente de zero mais esquerda [4]. Os nmeros em ponto flutuante,
normalizados, so representados de acordo com (3.2).

(2)
O formato do nmero em ponto flutuante preciso simples utiliza de um total de 32 bits, um
bit para sinal, 8 bits para o expoente e os 24 restantes para a mantissa. J para a preciso dupla
possui um total de 64 bits,1 bit para sinal, 11 para o expoente e os 52 restantes para a mantissa.

Tabela 1: Representao genrica em preciso simples

Preciso Simples
Sinal
1 bit
Expoente
8 bits
Mantissa
23 bits

7

Tabela 2: Representao genrica em preciso dupla

Preciso Dupla
Sinal
1 bit
Expoente
11 bits
Mantissa
52 bits

3.2 Integrao numrica

Os mtodos de integrao numrica so de grande utilidade quando integrais so difceis ou
at mesmo impossveis de serem resolvidas analiticamente[5]. Estes mtodos podem ser vistos
como uma aproximao da integral por uma soma finita de termos. Em um trecho de uma linha de
distribuio encontramos equaes ordinrias parciais derivadas dos elementos armazenadores de
energia: capacitor e indutor. Para simular no FPGA esses trechos, necessrio fazer uma
modelagem das equaes transformando-as em algbricas, por meio dos mtodos de integrao
numrica.
Existem diversos tipos de mtodos de integrao numrica, dentre eles o mtodo de Euler
Regressivo e o Trapezoidal. Ambos os mtodos produzem solues prximas s analticas, sendo
o erro to menor quanto menor for o passo de integrao [6].
Para uma funo genrica f(t), a rea sob a curva num intervalo numericamente igual ao
valor da integral neste intervalo. Os mtodos numricos utilizam esse conceito e aproximam as
integrais de funes a partir de suas reas. O mtodo usado para o desenvolvimento do projeto foi
o de Euler Regressivo, que pode ser representado de acordo com a figura 1.


Figura 1:Mtodo de Euler Regressivo





8

4. Materiais e mtodos
4.1FPGA
Para a realizao desse trabalho foi utilizado o FPGA, dispositivo programvel em campo
capaz de realizar diversas funes lgicas. Normalmente um FPGA [7] composto de
componentes lgicos configurveis, entrada e sada configurvel e interconexo programvel
(figura 2). Esses elementos em conjunto provm os elementos funcionais capazes de realizar a
lgica definida pelo usurio. Um projeto com FPGA tradicionalmente realizado utilizando-se
entrada via esquemtico ou linguagem de descrio de hardware, como Verilog ou System
Verilog.


Figura 2: Estrutura interna de uma FPGA

Neste trabalho foi utilizado o kit de desenvolvimento DE2, o qual possui uma FPGA Cyclone
II EP2C35F672C6 (figura 3), fabricada pela Altera, que equipada com os seguintes dispositivos:

FPGA Altera Cyclone II 2C35;
Dispositivo de configurao serial Altera EPCS16;
USB Blaster (onboard) usada para a programao da placa;
Memrias: SRAM 512-Kbyte, SDRAM 8-Mbyte, Flash 4-Mbyte;
Interface para SD Card;
8 displays de 7 segmentos;
Display LCD 16x2;
4 botes seletores;
18 chaves bipolares;
18 leds vermelhos;
9leds verdes;
Osciladores de 50 e 27-MHz, que podem ser usados como clock;
9

CODEC de udio de 24-bits, com qualidade de CD;
Entrada e sada de som e microfone;
Interface VGA conversor digital-analgico (10-bit high-speed);
TV Decoder (NTSC/PAL) e entrada para TV;
Interface serial RS-232 (DB-9);
Interface PS/2 para mouse/teclado;
Interface infravermelho IrDA;
Dois barramentos de expanso com 40 pinos.


Figura 3:Placa de desenvolvimento da Altera DE2


4.2 Verilog
O Verilog uma linguagem de descrio de hardware (HDL). O HDL assemelhasse muito a
linguagem de programao, mas so especificamente orientadas descrio da estruturas e do
comportamento do hardware.
O VHDL e o Verilog so exemplos de HDL. Ambas as linguagens so hoje padres aprovados
e referenciados pelo IEEE. A padronizao proporciona uma maior portabilidade no uso do HDL.
Neste projeto foi utilizado como linguagem de hardware o Verilog.
A linguagem Verilog prov ao projetista digital a possibilidade de descrever um sistema
digital em uma grande faixa de nveis de abstrao, e, ao mesmo tempo, suporta ferramentas de
projeto para sntese lgica projeto [8].
A construo Verilog bsica o elemento module (mdulo). Os sinais de entrada e sada de
um mdulo so designados usando ports (portas). Cada sinal de uma porta pode ser declarado
10

como input (entrada), output (sada) ou inout (entrada/sada). Dentro do mdulo est
contido a descrio de sua funcionalidade em linguagem de hardware, no caso Verilog.

4.3 ULAPF
Os recursos para clculo, originalmente disponveis em um dispositivo FPGA, so designados
para a realizao de operaes aritmticas em ponto fixo, como o presente trabalho se prope a
usar a representao numrica em ponto flutuante (preciso simples e dupla), necessria a
utilizao de mdulos que realizem as operaes aritmticas bsicas: soma, subtrao,
multiplicao e diviso . Para esse propsito foram utilizadas duas ULAs, uma para preciso
simples e outra para preciso dupla, ambas obtidas no repositrio de uma biblioteca open-source
no repositrio opencores e as operaes aritmticas realizadas por elas esto de acordo com o
padro IEE 754.

4.3.1 ULAPF (Preciso Simples)

Nessa ULA todas as operaes demoram cinco ciclos de clock. Sendo assim, o resultado final
s poder ser usado aps esses ciclos, sendo importante o conhecimento dessa condio para a sua
utilizao, evitando resultados errneos e propagao de erros. Observando esta restrio, os
resultados aritmticos obtidos com o uso deste mdulo s foram utilizados aps cinco pulsos de
CLOCK. As entradas e sadas so representadas na figura 4.



Figura 4: Representao da ULAPF (Preciso Simples)
.

11



Tabela 3: Descrio das Entradas e Sadas da ULAPF (Preciso Simples)
Nome Entrada/Sada Quantidade de Bits Descrio
opa/opb Entradas 32 bits Operandos
rmode Entrada 3 bits Modo de Arredondamento
fpu_op Entrada 3 bits Operao Aritmtica
out Sada 32 bits Resultado da Operao
Diviso por zero Sada 1 bit Diviso por zero

A determinao da operao a ser efetuada realizada pela entrada fpu_op composta de 3 bits,
a descrio dessa varivel est indicada na Tabela 4.

Tabela 4: Descrio da varivel fpu_op
fpu_op Operao
000 Soma
001 Subtrao
010 Multiplicao
011 Diviso

4.3.2 ULAPF (Preciso Dupla)

Nessa ULA as operaes demoram quantidades de ciclos de clock distintos para produzir o
resultado final. A quantidade de ciclos de clock para cada operao : 20 ciclos para adio, 21
ciclos para a subtrao, 24 para a multiplicao e 71 para a diviso. Como a quantidade de ciclos
de clock alta para cada operao, necessitou-se a utilizao de um clock de frequncia superior
do que 50 MHz. Para isto utilizou-se uma PLL.
Para que a operao seja realizada necessrio que o enable permanea no nvel alto por dois
pulsos de clock e depois troque seu estado para nvel baixo. Aps isso, a operao realizada e
um flag (ready) indica quando o resultado est pronto. A mxima frequncia de operao da ULA
de 185 Mhz, que uma frequncia bem alta e que ajuda na diminuio do passo de calculo. A
representao em bloco da ULAPF (preciso dupla) encontra-se na figura 5. A descrio das
12

entradas e sadas, assim como a descrio dos cdigos das operaes esto presentes nas tabelas 5
e 6 respectivamente.

Figura 5: Representao da ULAPF (Preciso Dupla)

Tabela 5: Descrio das Entradas e Sadas da ULAPF (Preciso Dupla)
Nome Entrada/Sada Quantidade de Bits Descrio
clk Entrada 1bit clock
rst Entrada 1 bits reset
enable Entrada 1 bit Habilitao
rmode Entrada 1 bit Modo de Arredondamento
fpu_op Entrada 1 bit Diviso por zero
opa Entrada 64 bits Operando
opb Entrada 64 bits Operando
out Sada 64 bits Resultado
ready Saida 1 bit Resultado Pronto
underflow Saida 1 bit Underflow
overflow Saida 1 bit Overflow
inexact Saida 1 bit Inexato
exception Saida 1 bit Excesso
invalid Saida 1 bit Invalido

Tabela 6: Descrio da varivel fpu_op
fpu_op Operao
000 Soma
001 Subtrao
010 Multiplicao
011 Diviso

13

4.4 Segmento de linha
Os sistemas de potncia podem ser representados por segmentos de linha. Pode-se fazer uma
anlise desses sistemas em parmetros concentrados ou distribudos. Neste trabalho, os segmentos
de linha so representados em parmetros concentrados no formato . O segmento de linha a ser
utilizado est de acordo com a Figura 6.

Figura 6: Representao de um segmento de linha no formato pi.

Em um trecho de uma linha de distribuio encontramos equaes ordinrias parciais (3) e (4)
derivadas dos elementos armazenadores de energia: capacitor e indutor. Para simular no FPGA
esses trechos, necessrio fazer uma modelagem das equaes transformando-as em algbricas,
por meio dos mtodos de integrao numrica.

(3)

( ) (4)

4.5 Conversor Digital-Analgico R-2R
Para anlise das grandezas geradas pelo simulador tempo real baseado em FPGA
recomendado que o sinal fosse disponibilizado no formato em que o mesmo encontrado
originalmente, em condies reais. Em geral, nas plantas fsicas reais, os sinais so observados em
formas analgicas, sendo assim, no projeto do simulador foi adicionado um conversor D/A
(digital/Analgico). O conversor D/A utilizado foi o R-2R (figura 7), que constitudo por
circuito simples.
O conversor DA usado possui 12 bits de entrada. Cada um dos 12 bits conectado a um n, e
a cada um deles estar associadoum ganho de tenso. A tenso total ser a soma da tenso de
todos os ns. Se todos os bits forem zero, o valor final consequentemente ser zero.
No presente projeto, as representaes numricas utilizadas foram a de ponto flutuante com
preciso simples e dupla, para a utilizao do conversor se fez necessrio uma transformao da
palavra digital de 32 bits e 64 bits para uma de 12 bits. Esta transformao foi realizada por dois
mdulos: module doze_bits_32bits e module doze_bits_64bits, os quais possuem como
14

entradas o clock e a palavra de 32/64bits e como sada uma palavra de 12 bits. As descries em
linguagem de hardware dos mdulos so similares, ambos os cdigos encontram-se em anexo.
Outro aspecto importante a ser destacado que o conversor unipolar, no caso as suas
entradas so positivas, como os sinais usados possuem polaridades positivas e negativas
necessrio para critrio de visualizao que seja atribudo ao sinal um offset, deslocando todo o
sinal para a polaridade positiva. O offset s foi utilizado para visualizao, as operaes internas
do simulador trabalham com dados em seu formato original, em ponto flutuante, apresentando
valores positivos ou negativos.


Figura 7:Conversor D/A R-2R de 12 bits.

4.6 PLL (Phase-Locked Loops)
PLL um circuito presente na FPGA que permite obter mltiplas frequncias a partir de uma
frequncia de entrada. Como no presente trabalho pretende-se obter um simulador com capacidade
de operar com um passo de calculo igual ou inferior a um microssegundo, a PLL apresenta-se
como uma ferramenta til.
Para criar uma PLL necessrio seguir os seguintes passos: ToolMegaWizardPlug em
seguinte, especifica-se a megafuno a ser usada, no caso ALTPLL. Aps isso, s precisa seguir
os passose escolher por qual fator quer multiplicar e/ou dividir a frequncia de entrada.

4.7 Retificador de meia onda
O mdulo retificador de meia onda composto por trs mdulos descritos na figura 8.
Interconectando os mdulos pode-se chegar a topologia do circuito da figura 9.

15


Figura 8: Mdulos do retificador de meia onda



Figura 9: Circuito Retificador de meia onda
Nesse circuito, enquanto a tenso sobre o diodo positiva existe uma corrente circulante no
mesmo, essa corrente desce nos dois ramos: RL e RC, carregando o capacitor. O circuito
equivalente durante esse intervalo est representado na figura 10. Quando a tenso sobre o diodo
torna-se negativa, o mesmo entra em corte e o capacitor passar a descarregar at que a tenso
sobre o diodo seja positiva. O circuito equivalente durante esse intervalo de tempo est
representado na figura 11.

Figura 10: Circuito resultante quando o diodo est conduzindo
16


Figura 11: Circuito equivalente quando o diodo est em corte

O circuito retificador de meia onda foi simulado no FPGA e no PSIM ,os resultados obtidos
esto nas figuras 12 e 13 respectivamente.


Figura 12: Resultado obtido no FPGA (visualizao no osciloscpio)

Figura 13: Resultado obtido no PSIM
Os valores dos parmetros do circuito retificador de meia onda esto na Tabela 7

17

Tabela 7: Parmetros do retificador de meia onda
Parmetro Valor
R1() 150
L1(H) 0.180
R2() 0.01
C2(F) 0.001


4.8 Retificador de onda completa
O mdulo retificador de onda completa composto por trs mdulos descritos na figura 14.
Interconectando os mdulos pode-se chegar a topologia do circuito da figura 15.

Figura 14: Mdulos do retificador de onda completa

Figura 15:Circuito Retificador de meia onda

Nesse circuito as duas fontes de tenso, Vfonte1 e Vfonte2, esto defasadas de 180 graus.
Como estamos trabalhando com elementos ideais, o diodo D1 e o diodo D2 no conduzem ao
mesmo tempo. Enquanto a fonte de tenso Vfonte1 positiva o circuito equivalente est
representado na figura 16. Enquanto a fonte de tenso Vfonte2 positiva o circuito equivalente
est representado na figura 17. O comportamento dos circuitos da figura 16 e 17 so anlogos ao
de meia onda descrito anteriormente.

18


Figura 16: Circuito equivalente enquanto Vfonte1 positiva.

Figura 17: Circuito equivalente enquanto Vfonte2 positiva.


O circuito retificador de onda completa foi simulado no FPGA e no PSIM , os resultados
obtidos esto nas figuras 18 e 19 respectivamente.

Figura 18:Resultado obtido no FPGA (visualizao no osciloscpio)

19


Figura 19:Resultado obtido no PSIM
Os valores dos parmetros do circuito retificador de meia onda esto na Tabela 8


Tabela 8:Parmetros do retificador de onda completa
Parmetro Valor
R1() 150
L1(H) 0.180
R2() 0.01
C2(F) 0.001




























20


5. Resultados Parciais
Nessa primeira etapa, foram realizadas as seguintes atividades:
Reviso bibliogrfica da representao numrica em preciso simples e em preciso
dupla;
Adaptao dos mdulos em preciso simples do PIBIC anterior para preciso dupla,
exceto dos trechos de linha e de carga.
Existe uma dificuldade na adaptao da ULA de preciso dupla, referente ao seu uso em
equaes, pois existe a necessidade de usar uma lgica para o enable, o qual indica o inicio das
operaes, essa dificuldade ser contornada no decorrer do projeto. As diferenas dos resultados
das operaes aritmticas em preciso dupla ao se comparar com preciso simples so bem
pequenas, na ordem da quarta ou quinta casa decimal, ao se utilizar o osciloscpio como forma de
visualizao estas diferenas no so perceptveis. Sendo assim, o formato em preciso simples j
bem satisfatrio para o objetivo deste projeto. Foi realizada tambm a implementao de um
retificador de meia onda e de onda completa que sero utilizados na continuidade do trabalho.




























21

6. Referncias Bibliogrficas

[1]SANTOS, F. (2009). GTD - Gerao, Transmisso e Distribuio de Energia Eltrica. Acesso
em 19 de Novembro de 2012, disponvel em Departamento de Engenharia Eltrica da Escola
Politcnica da Universidade Federal do Rio de Janeiro :
http://monografycas.poli.ufrj.br/monopoli10000459.pdf
[2]"IEC 61000-3-2."IEC-Internationa Electro technical Comission.(2005)
[3] American National Standards Institute / Institute of Electrical and Electronics Engineers: IEEE
Standard for Binary Floating-Point Arithmetic, ANSI/IEEE Std 754-1985, New York, 1985
[4] FIGUEIR,I.(2011)-Arquitetura de uma unidade aritmtica em Ponto Flutuante,Acesso em 19
de Novembro de 2012, disponvel em Engenharia Eltrica da Universidade Federaldo Pampa:
Universidhttp://cursos.unipampa.edu.br/cursos/engenhariaeletrica/files/2011/11/Iuri-Castro-:
Figueir-Arquitetura-de-uma-Unidade-Aritmtica-em-Ponto-Flutuante
[5]SPERANDIO, D,; MENDES,JT:Calculo Numerico Caracteres Matemticos e Computacionais
dos Metodos Numericos, So Paulo : Prentice Hall:2003
[6] ARAJO, Antonio E. A. de; NEVES, Washington. L. A. Clculo de TransitriosEletromagnticos em
Sistemas de Energia. Belo Horizonte: UFMG, 2004
[7]J. ROSE, Architectureoffield-programmablegatearrays, Proc. IEEE, vol. 81, n 7, pg. 1013-
1029, julho, 1993.
[8]SCAICO, Alexandre. Apostila de Projetos de Sistemas Digitais na Atualidade Dezembro de
2000;
[9]ALTERA CORPORATION. The Quartus II TimeQuest Timing Analyzerxa . Acesso em
Dezembro de 2012, disponivel em:http://www.altera.com/support/software/timequest/sof-qts-
timequest.html










22

ANEXOS
Descrio em verilog do mdulo module doze_bits_32bits.
moduledoze_bits(valor_entrada, valor_saida,flag);

input [31:0] valor_entrada;
output flag;
output [31:0]valor_saida;
wire [31:0]valor_saida2;
wire[31:0]Y,Y2,X,X2,Y1,resultado,a,b,S,T,U;
wire[7:0]expoente,exp,deslocamento;
wiresinal;
assign expoente=valor_entrada[30:23];
assign exp= expoente-8'b01111111;
assign deslocamento= 8'b00010111-exp;

assign Y= valor_entrada|(32'b00000000100000000000000000000000);
assign Y1=Y&(32'b00000000111111111111111111111111);
assign Y2=Y1>>deslocamento;
assign X2={{6'b100000}{valor_entrada[31]}};
assign X=X2<<(8'b00011000-deslocamento);
assign S=X|Y2;
assign sinal=S[31];
assign T=S<<(6'b100000-exp-6'b000001);
assign U=T>>(6'b100000-exp-6'b000001);
assign valor_saida2[11:0]=U[11:0];
assign valor_saida=valor_saida2;
assign flag=sinal;


endmodule























23

Descrio em verilog do mdulo module doze_bits_64bits.
module doze_bits(valor_entrada, valor_saida,flag);

input [63:0] valor_entrada;
output flag;
output [63:0]valor_saida;
wire[63:0]valor_saida2;
wire[63:0]Y,Y2,X,X2,Y1,resultado,a,b,S,T,U;
wire[10:0]expoente,exp,deslocamento;
wiresinal;
assign expoente=valor_entrada[62:52];
assign exp= expoente-11'b01111111111;
assign deslocamento= 11'b00000110100-exp;


assign Y= valor_entrada|(64'h0010000000000000);

wire[52:0]value;
assign value={64'h001FFFFFFFFFFFFF};
assign Y1=Y&(value);
assign Y2=Y1>>deslocamento;


assign X2={{7'b1000000}{valor_entrada[63]}};
assign X=X2<<(8'b00110101-deslocamento);
assign S=X|Y2;
assign sinal=S[31];
assign T=S<<(7'b1000000-exp-7'b0000001);
assign U=T>>(7'b1000000-exp-7'b0000001);
assign valor_saida2[11:0]=U[11:0];
assign valor_saida=valor_saida2;
assign flag=sinal;

endmodule





















24

Descrio em verilog do mdulo module retificador_meia_onda

moduleretificador_meia_onda (Vin,CLK,ic,Is2,CLK2,chave,Vcomp);

input CLK,CLK2;
input chave;
input [31:0]Vin,Is2;
output reg [31:0]ic,Vcomp;
reg [31:0]Vcantes;
reg flag;
reg [4:0] CONT;
wire[31:0]Zx,dt_C,R;
assign dt_C=32'h3A1D4952;
assign Zx=32'h42C80000;
assign R= 32'h3C23D70A;
wire[31:0]aux1x,aux2x,aux3x,aux4x,aux5x,icx,Is1x,Vcx,testex;
reg [31:0]aux1,aux2,aux3,aux4,aux5,Is1,Vc,Icantes,ic1x,teste;

//Ic=(Vfonte-Vcantes)/R;
// Zx=1/R;
fpu(.clk(CLK),.rmode(0),.fpu_op(3'b001),.opa(Vin),.opb(Vcantes),.out(aux1x),.inf(),.snam(),.qnam());
fpu(.clk(CLK),.rmode(0),.fpu_op(3'b010),.opa(aux1),.opb(Zx),.out(icx),.inf(),.snam(),.qnam());

//Vc(c+2)=(dt_C*(ic(c+1)))+vcant;
fpu(.clk(CLK),.rmode(0),.fpu_op(3'b010),.opa(dt_C),.opb(ic),.out(aux2x),.inf(),.snam(),.qnam());
fpu(.clk(CLK),.rmode(0),.fpu_op(3'b000),.opa(aux2),.opb(Vcantes),.out(Vcx),.inf(),.snam(),.qnam());
fpu(.clk(CLK),.rmode(0),.fpu_op(3'b010),.opa(R),.opb(Icantes),.out(aux3x),.inf(),.snam(),.qnam());
fpu(.clk(CLK),.rmode(0),.fpu_op(3'b000),.opa(Vcantes),.opb(aux3),.out(aux4x),.inf(),.snam(),.qnam());
fpu(.clk(CLK),.rmode(0),.fpu_op(3'b001),.opa(Vin),.opb(Vcantes),.out(testex),.inf(),.snam(),.qnam());
fpu(.clk(CLK),.rmode(0),.fpu_op(3'b001),.opa(Vcantes),.opb(aux3),.out(aux5x),.inf(),.snam(),.qnam());

always@(posedge CLK2) begin
if(chave==0) begin CONT=5'b0; Vcantes=32'b0; end
elseCONT=CONT+1;
if(CONT==5'b00101) begin
ic1x={Is2[31]^1,Is2[30:0]} ;
aux1=aux1x;
aux3=aux3x;
teste=testex;
end
if(CONT==5'b01010) begin
if(teste[31]==0) begin Vcomp=aux4x;ic=icx; end
else begin ic=ic1x; Vcomp=aux5x; end
aux2=aux2x;
end
if(CONT==5'b01111) begin
Vc=Vcx;
if(chave) begin Vcantes=Vc; ;Icantes=ic;end
if(CONT>5'b01111) CONT=5'b0;
end
end
endmodule










25

Descrio em verilog do mdulo module retificador_onda_completa

modulecarga_capacitiva_completo(V1,CLK,ic,Is2,CLK2,chave,Vcomp,V2);

input CLK,CLK2;
input chave;
input [31:0]V1,Is2;
output reg [31:0]ic,Vcomp,V2;
reg [31:0]Vcantes;
reg flag;
reg [4:0] CONT;
wire [31:0]Zx,dt_C,R;
assign dt_C=32'h3A1D4952;
assign Zx=32'h42C80000;
assign R= 32'h3C23D70A;
wire[31:0]aux1x,aux2x,aux3x,aux4x,aux5x,icx,Vcx,teste1x,teste2x;
reg [31:0]aux1,aux2,aux3,aux4,aux5,Vc,Icantes,ic1x,teste1,teste2,Vin;
//Ic=(Vfonte-Vcantes)/R;
// Zx=1/R;
fpu(.clk(CLK),.rmode(0),.fpu_op(3'b001),.opa(Vin),.opb(Vcantes),.out(aux1x),.inf(),.snam(),.qnam());
fpu(.clk(CLK),.rmode(0),.fpu_op(3'b010),.opa(aux1),.opb(Zx),.out(icx),.inf(),.snam(),.qnam());
//Vc(c+2)=(dt_C*(ic(c+1)))+vcant;
fpu(.clk(CLK),.rmode(0),.fpu_op(3'b010),.opa(dt_C),.opb(ic),.out(aux2x),.inf(),.snam(),.qnam());
fpu(.clk(CLK),.rmode(0),.fpu_op(3'b000),.opa(aux2),.opb(Vcantes),.out(Vcx),.inf(),.snam(),.qnam());
fpu(.clk(CLK),.rmode(0),.fpu_op(3'b010),.opa(R),.opb(Icantes),.out(aux3x),.inf(),.snam(),.qnam());
fpu(.clk(CLK),.rmode(0),.fpu_op(3'b000),.opa(Vcantes),.opb(aux3),.out(aux4x),.inf(),.snam(),.qnam());
fpu(.clk(CLK),.rmode(0),.fpu_op(3'b001),.opa(V1),.opb(Vcantes),.out(teste1x),.inf(),.snam(),.qnam());
fpu(.clk(CLK),.rmode(0),.fpu_op(3'b001),.opa(V2),.opb(Vcantes),.out(teste2x),.inf(),.snam(),.qnam());
fpu(.clk(CLK),.rmode(0),.fpu_op(3'b001),.opa(R),.opb(ic),.out(testex),.inf(),.snam(),.qnam());
fpu(.clk(CLK),.rmode(0),.fpu_op(3'b001),.opa(Vcantes),.opb(aux3),.out(aux5x),.inf(),.snam(),.qnam());
always@(posedgeCLK2) begin
if(chave==0) begin CONT=5'b0; Vcantes=32'b0; end
else begin V2={(V1[31])^1,V1[30:0]} ;
CONT=CONT+1;
if(CONT==5'b00101) begin
ic1x={Is2[31]^1,Is2[30:0]} ;
aux1=aux1x;
aux3=aux3x;
teste1=teste1x;
teste2=teste2x; end
if(CONT==5'b01010) begin
aux2=aux2x;
if(V1[31]==0) begin
Vin=V1;
if(teste1[31]==0) begin Vcomp=aux4x;ic=icx; end
else begin ic=ic1x; Vcomp=aux5x; end
end
if(V2[31]==0) begin
Vin=V2;
if(teste2[31]==0) begin Vcomp=aux4x;ic=icx; end
else begin ic=ic1x; Vcomp=aux5x; end
end end

if(CONT==5'b01111) begin
Vc=Vcx;
if(chave) begin Vcantes=Vc; ;Icantes=ic;end
end
if(CONT>5'b01111) CONT=5'b0;

end
end
endmodule
26

Vous aimerez peut-être aussi