generated from maddiebusig/vivado-template-hog
Compare commits
5 Commits
6418f366b3
...
b32ab40b0f
| Author | SHA1 | Date | |
|---|---|---|---|
| b32ab40b0f | |||
| 64f63e41b7 | |||
| 002d2c0c06 | |||
| a352ed794c | |||
| 2695b69b21 |
@ -1,2 +1,3 @@
|
||||
pwm_block/src/top.v top=top
|
||||
pwm_block/src/pwm_core.v
|
||||
|
||||
|
||||
12
Top/pwm_block/list/pwm_core_tb.sim
Normal file
12
Top/pwm_block/list/pwm_core_tb.sim
Normal file
@ -0,0 +1,12 @@
|
||||
# Simulator xsim
|
||||
|
||||
[generics]
|
||||
VCD_DUMPFILE=pwm_core_tb.vcd
|
||||
|
||||
[properties]
|
||||
ACTIVE=1
|
||||
TOP=pwm_core_tb
|
||||
|
||||
[files]
|
||||
pwm_block/src/pwm_core.v
|
||||
pwm_block/sim/pwm_core_tb.v
|
||||
72
pwm_block/sim/pwm_core_tb.v
Normal file
72
pwm_block/sim/pwm_core_tb.v
Normal file
@ -0,0 +1,72 @@
|
||||
`timescale 1ns/1ps
|
||||
|
||||
module pwm_core_tb #(
|
||||
VCD_DUMPFILE = ""
|
||||
);
|
||||
|
||||
reg clk = 0;
|
||||
reg rst = 1;
|
||||
reg [15:0] duty;
|
||||
reg [15:0] window_width;
|
||||
reg oen = 1;
|
||||
|
||||
wire pulse;
|
||||
|
||||
pwm_core#(
|
||||
.WINDOW_REG_SIZE(16)
|
||||
) cut (
|
||||
.clk(clk),
|
||||
.rst(rst),
|
||||
.duty(duty),
|
||||
.window_width(window_width),
|
||||
.oen(oen),
|
||||
.pulse(pulse)
|
||||
);
|
||||
|
||||
integer k;
|
||||
|
||||
initial begin
|
||||
rst = 1;
|
||||
clk = 0;
|
||||
|
||||
#10
|
||||
|
||||
rst = 0;
|
||||
oen = 1;
|
||||
duty = 3;
|
||||
window_width = 7;
|
||||
|
||||
for (k=0; k<13; k=k+1) begin
|
||||
#5 clk = 1;
|
||||
#5 clk = 0;
|
||||
end
|
||||
|
||||
duty = 1;
|
||||
|
||||
for (k=0; k<13; k=k+1) begin
|
||||
#5 clk = 1;
|
||||
#5 clk = 0;
|
||||
end
|
||||
|
||||
duty = 1;
|
||||
window_width = 2;
|
||||
|
||||
for (k=0; k<8; k=k+1) begin
|
||||
#5 clk = 1;
|
||||
#5 clk = 0;
|
||||
end
|
||||
|
||||
oen = 0;
|
||||
|
||||
for (k=0; k<5; k=k+1) begin
|
||||
#5 clk = 1;
|
||||
#5 clk = 0;
|
||||
end
|
||||
|
||||
|
||||
$dumpvars;
|
||||
$finish;
|
||||
end
|
||||
|
||||
endmodule
|
||||
|
||||
@ -25,10 +25,8 @@ module pwm_core #(
|
||||
|
||||
reg [WINDOW_REG_SIZE-1:0] duty_counter;
|
||||
|
||||
always @ (posedge(clk), rst) begin
|
||||
if (rst)
|
||||
duty_counter <= 0;
|
||||
else if (duty_counter == window_width)
|
||||
always @ (posedge(clk), posedge(rst)) begin
|
||||
if (rst || duty_counter >= window_width - 1)
|
||||
duty_counter <= 0;
|
||||
else
|
||||
duty_counter <= duty_counter + 1;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user