Escolar Documentos
Profissional Documentos
Cultura Documentos
Objetivos:
• Entender os conceitos de controle PWM.
• Desenvolver algoritmos de controle PWMs em VHDL.
• Implementar e visualizar no osciloscópio a geração dos pulsos PWMs feitos
em VHDL nos kit de FPGAs.
Informações Teóricas:
Para haver a modulação por largura de pulso temos que atender alguns pré-
requisitos básicos. Primeiro, é preciso um circuito modulador (triangular) e um
sinal de referencia (V!"# ) a ser comparado. Os sinais resultantes são pulsos nas
formas quadradas ou retangulares, de largura variável e amplitude constante.
Neste tipo de modulação o ciclo ativo do sinal modulado, ou em outras
palavras a largura do pulso, é modificado de acordo com a amplitude do sinal
modulador. Por ciclo ativo entende-se a porção de tempo em que o sinal
permanece em nível alto durante um período, por exemplo, um sinal com 70%
de ciclo ativo e período de 1𝑠, permanece 0,7𝑠 em nível alto e 0,3𝑠 em nível
baixo, como mostra a figura 2.
Procedimentos:
Bit Localização 1 Localização 2 Localização 3
A[0] PIN_A17 PIN_G21 PIN_J20
A[1] PIN_A16 PIN_F21 PIN_K20
A[2] PIN_A15 PIN_E21 PIN_L18
A[3] PIN_A14 PIN_D21 PIN_L19
A[4] PIN_A13 PIN_C21 PIN_J18
A[5] PIN_B13 PIN_A20 PIN_J19
A[6] PIN_B14 PIN_A19 PIN_K21
A[7] PIN_B15 PIN_A18 PIN_J21
PWM1 PIN_K22 PIN_K22 PIN_K22
PWM2 PIN_J22 PIN_J22 PIN_J22
CLOCK_EXT PIN_L1 PIN_L1 PIN_L1
4. Desenvolva um programa de acionamento do inversor mostrado na
figura abaixo, com modulação PWM senoidal, que contenha:
• Um bloco divisor de frequência, considerando que o clock interno do
FPGA é de 50𝑀𝐻𝑧;
• Um bloco, em VHDL, de uma portadora triangular de 4𝐾ℎ𝑧;
• Um bloco, em VHDL, de construção de três moduladoras senoidais
de 60𝐻𝑧, defasadas entre si de 120 graus elétricos.
• 3 blocos de comparação, cada um com 2 saídas, sendo uma o
oposto da outra.
ANEXOS
BLOCO freq_div2:
ENTITY freq_div2 IS
PORT (clk : IN BIT;
z : OUT BIT);
END freq_div2;
ARCHITECTURE arch2 OF freq_div2 IS
SHARED VARIABLE x : NATURAL RANGE 0 TO 25;
BEGIN
PROCESS(clk)
BEGIN
IF x = 25 THEN
z <= '1';
x := 0;
ELSIF clk 'EVENT AND clk = '1' THEN
z <= '0';
x := x+1;
END IF;
END PROCESS;
END arch2;
BLOCO freq_div:
ENTITY freq_div IS
PORT (clk : IN BIT;
z : OUT BIT);
END freq_div;
ARCHITECTURE arch2 OF freq_div IS
SHARED VARIABLE x : NATURAL RANGE 0 TO 6173;
BEGIN
PROCESS(clk)
BEGIN
IF x = 6173 THEN
z <= '1';
x := 0;
ELSIF clk 'EVENT AND clk = '1' THEN
z <= '0';
x := x+1;
END IF;
END PROCESS;
END arch2;
BLOCO senóide:
ENTITY senoide IS
PORT (clk : IN BIT;
senoA : OUT NATURAL RANGE 0 TO 255);
END senoide;
ARCHITECTURE arch1 OF senoide IS
PROCESS (clk)
BEGIN