1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| module top( input reset, input clk, output [7:0] ctrcode // 8 位 PWM 输出信号 ); parameter integer slowestFreq = 50000000; // 确保为整数 wire dclk; // 慢速时钟,用于控制滚动 wire bbclk; // 高频时钟,用于 PWM wire [7:0] lighteSwitchResult; // LED 滚动控制信号 wire [7:0] brightnessPattern; // 滚动的亮度模式
// 调用分频器模块 divisor #(.DIV_CLK(slowestFreq / 2)) di1(reset, clk, dclk); // 2s 滚动时钟 divisor #(.DIV_CLK(slowestFreq / 1000000)) di2(reset, clk, bbclk); // 1us PWM 时钟
// 滚动逻辑模块 RollingController rc( .reset(reset), .clk(dclk), .lighteSwitchResult(lighteSwitchResult), // 滚动灯信号 .brightnessPattern(brightnessPattern) // 滚动亮度信号 );
// 实例化 8 个 PWM 模块 pwmIP pwm0(.enable(lighteSwitchResult[0]), .reset(reset), .mode(brightnessPattern[1:0]), .clk2(bbclk), .pwm_out(ctrcode[0])); pwmIP pwm1(.enable(lighteSwitchResult[1]), .reset(reset), .mode(brightnessPattern[3:2]), .clk2(bbclk), .pwm_out(ctrcode[1])); pwmIP pwm2(.enable(lighteSwitchResult[2]), .reset(reset), .mode(brightnessPattern[5:4]), .clk2(bbclk), .pwm_out(ctrcode[2])); pwmIP pwm3(.enable(lighteSwitchResult[3]), .reset(reset), .mode(brightnessPattern[7:6]), .clk2(bbclk), .pwm_out(ctrcode[3])); pwmIP pwm4(.enable(lighteSwitchResult[4]), .reset(reset), .mode(brightnessPattern[1:0]), .clk2(bbclk), .pwm_out(ctrcode[4])); pwmIP pwm5(.enable(lighteSwitchResult[5]), .reset(reset), .mode(brightnessPattern[3:2]), .clk2(bbclk), .pwm_out(ctrcode[5])); pwmIP pwm6(.enable(lighteSwitchResult[6]), .reset(reset), .mode(brightnessPattern[5:4]), .clk2(bbclk), .pwm_out(ctrcode[6])); pwmIP pwm7(.enable(lighteSwitchResult[7]), .reset(reset), .mode(brightnessPattern[7:6]), .clk2(bbclk), .pwm_out(ctrcode[7]));
endmodule
|