设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 254|回复: 0
收起左侧

Quartus Verilog HDL/FPGA 使用8位PWM驱动无源蜂鸣器或耳机扬声器发出1Khz锯齿波声音

[复制链接]
发表于 2023-3-25 08:43:23 | 显示全部楼层 |阅读模式
main.png
  1. module pwm_8bit(                //8位PWM发生器模块
  2.         input clk,                        //时钟输入
  3.         input [7:0] pwm,        //占空比 0:低电平 255:高电平
  4.         output out                        //PWM波输出 PWM频率:时钟频率/256
  5. );
  6. reg [7:0] spwm;
  7. reg [7:0] i;
  8. assign out = (i < spwm) ? 1'b1 : 1'b0;
  9. always @(posedge clk) begin
  10.         if(!i) begin
  11.                 spwm <= pwm;
  12.         end
  13.         i = i + 8'd1;
  14.         if(&i) begin
  15.                 i = 8'd0;
  16.         end
  17. end
  18. endmodule

  19. module sawtooth_8bit(                //8位锯齿波发生器模块
  20.         input clk,                                        //时钟输入
  21.         output reg [7:0] pwm                        //PWM值输出 锯齿波频率:时钟频率/256
  22. );
  23. always @(posedge clk) begin
  24.         pwm <= pwm + 8'd1;
  25. end
  26. endmodule

  27. module main(
  28.         input clk,
  29.         output out
  30. );
  31. wire [7:0] pwm;
  32. integer i;
  33. reg j;
  34. always @(posedge clk) begin
  35.         i = i + 1;
  36.         if(i >= 50000000/256/2/1000) begin
  37.                 i = 0;
  38.                 j <= !j;
  39.         end
  40. end

  41. sawtooth_8bit m1(
  42.         .clk(j),
  43.         .pwm(pwm)
  44. );

  45. pwm_8bit m2(
  46.         .clk(clk),
  47.         .pwm(pwm),
  48.         .out(out)
  49. );
  50. endmodule
复制代码

相关帖子

您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-4-27 12:45 , Processed in 1.072061 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表