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

从F到0 - From F to 0

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

Quartus Verilog HDL/FPGA 驱动无源蜂鸣器(扬声器) 扫频输出 20Hz~20Khz 方波信号

[复制链接]
发表于 2021-12-24 23:09:23 | 显示全部楼层 |阅读模式
main.png
晶振频率:50Mhz 无源蜂鸣器:低电平响
上电后蜂鸣器从20Hz开始扫频,每隔1mS加1Hz,加到20Khz再减回去,以此类推。
  1. module main(
  2.         input clk,                //50Mhz 时钟输入 Pin17
  3.         output reg beep        //无源蜂鸣器 Pin8
  4. );
  5. parameter fosc = 50000000; //晶振频率
  6. parameter minHZ = 20;                //起始频率
  7. parameter maxHZ = 20000;        //截止频率
  8. reg [31:0] i;
  9. reg [15:0] hz = minHZ;
  10. reg [15:0] j;
  11. reg k = 1;
  12. always @(posedge clk) begin
  13.         i = i + 1;
  14.         if(|hz) begin
  15.                 if(i >= fosc/2/hz) begin
  16.                         i = 0;
  17.                         beep <= !beep;
  18.                 end
  19.         end else begin                //0Hz关闭蜂鸣器
  20.                 beep <= 1;
  21.         end
  22.         j = j + 1;
  23.         if(j == fosc/1000) begin
  24.                 j = 0;
  25.                 if(k) begin
  26.                         hz = hz + 1;
  27.                 end else begin
  28.                         hz = hz - 1;
  29.                 end
  30.                 if(hz <= minHZ || hz >= maxHZ) begin
  31.                         k = !k;
  32.                 end
  33.         end
  34. end
  35. endmodule
复制代码

相关帖子

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

本版积分规则

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

腾讯云安全认证

GMT+8, 2024-4-27 02:10 , Processed in 2.065118 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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