Académique Documents
Professionnel Documents
Culture Documents
(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