集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1251|回复: 1

蜂鸣器循环响1毫秒代码

[复制链接]
lihongkun16 发表于 2021-4-15 14:49:00 | 显示全部楼层 |阅读模式
module buzzer (clk, rst_n, s);

    input clk;
         input rst_n;
         
         output reg s;
         
         //定参
    `define Fclk 50_000_000
         `define Fout 10000
         `define CNT_NUM (`Fclk/`Fout)
   
          reg [32:0] cnt;
          
         //行为建模:计数器计数1ms
         always @ (posedge clk, negedge rst_n) begin
                
                         if(rst_n ==1'b0)                 //计数器清零                         
                            cnt <= 16'd0;                 //计数器没有计数到1ms
                         else if (cnt <`CNT_NUM - 1'd1)   //计数器自加一
                            cnt <= cnt + 16'd1;           //计数器计数到1ms
                         else         
                            cnt <= 16'd0;                 //计数器清零
         end
         
    //1ms周期中: 第一个0.5ms输出时钟位高电平, 第二个0.5ms输出时钟为低电平
         always @ (posedge clk, negedge rst_n) begin
            if (rst_n == 1'b0)
          s <= 1'b1;                    //初始输出时钟为点平
                 else if(cnt < (`CNT_NUM / 2 -1'd1))    //计数器没有计数到0.5ms
                    s <= 1'b1;                    //拉高输出时钟
                 else  
                    s <= 1'b0;                    //拉低输出时钟
        end
        endmodule

/*测试文件*/
`timescale 1ns/1ps
module buzzer_tb;

    reg clk;
         reg rst_n;
         
         wire s;
   
   
    buzzer  buzzer_inst(
         .clk(clk),
         .rst_n(rst_n),
         .s(s)
         );
   
         initial clk = 1'b1;
         always #10 clk =~clk;
         
         initial begin
            rst_n = 1'b0;
                 #200.1
                 rst_n = 1'b1;
         end

endmodule

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
雷磊 发表于 2021-4-15 16:18:23 | 显示全部楼层
蜂鸣器循环响1毫秒代码
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-5-13 00:42 , Processed in 0.070337 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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