Editor : Vivado 2020.2
FPGA Board : Cmod A7-35t (xc7a35tcpg236-1)
AVR Board : ATmega128A
[ 요구사항 ]
1. 분주비를 Memory 에 저장하고 저장된 분주비에 따른 Buzzer 출력
2. 분주비 : 16bit , Memory Address : 0 (8bit), 1 (8bit)
3. PWM duty rate = 50%
1. 구조 다이어그램
2. Timing Chart (Prescaler Memory)
cs(chip select) : Low 일때 동작
Addr : register 의 주소값
Pres_val [7:0] : 분주비 Data 값
clk : Addr 와 Pres_val 동기화 clock
3. Vivado Top Code
1) PWM_MEM_Gen.v
`timescale 1ns / 1ps
module PWM_MEM_Gen(
input sysclk,
input i_en,
input i_addr,
input i_cs,
input [7:0] i_pres_value,
input i_clk,
output o_pwm_clk
);
prescaler(
.sysclk(sysclk),
.o_100khz_clk(w_100khz_clk)
);
wire w_100khz_clk;
pwm_gen(
.i_en(i_en),
.i_clk(w_100khz_clk),
.i_value(w_value),
.o_pwm_clk(o_pwm_clk)
);
wire [15:0] w_value;
PWM_Reg(
.i_cs(i_cs),
.i_addr(i_addr),
.i_pres_value(i_pres_value),
.i_clk(i_clk),
.o_pres_reg(w_value)
);
endmodule
4) 측정값 ( OSCILLOSCOPE)
분주비 : 1kHz 로 설정
5) 동작영상
'FPGA' 카테고리의 다른 글
[FPGA] AVR+FPGA+LCD Shift register 설계 (0) | 2021.11.12 |
---|---|
[FPGA] FPGA+AVR Buzzer_Motor 동작 구현 (0) | 2021.11.10 |
[FPGA] FPGA + AVR 연동 UpCounter (0) | 2021.11.09 |
[FPGA] IP Package 하기 (0) | 2021.11.09 |
[FPGA] Watch + Fan (0) | 2021.11.06 |