完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
|
相关推荐
7个回答
|
|
|
再取反不是又有声音了么,
|
|
|
|
|
|
但是让蜂鸣器发出类似救护车的声音是一直响的,程序里面同样有取反
module jiuhuche(clk,sys_rst,beep); input clk,sys_rst; output reg beep; reg[24:0] count; reg[14:0] delay_cnt; wire[14:0] delay_end; parameter clk_divider0=10000/*56817*/; parameter clk_divider1=50000/*28408*/; assign delay_end=count[24]?clk_divider1:clk_divider0; always@(posedge clk or negedge sys_rst) begin if(sys_rst==0) count<=25'b0; else count<=count+1'b1; end always@(posedge clk or negedge sys_rst) begin if(sys_rst==0) delay_cnt<=delay_end; else if(delay_cnt==15'd0) begin beep<=~beep; //给beep取反是什么意思 delay_cnt<=delay_end; end else delay_cnt<=delay_cnt-15'b1; end endmodule |
|
|
|
|
|
beep自定义变量,=~表示取反
|
|
|
|
|
|
楼主,是不是通过不同的定时,再取反发出不同频率的声音,像单片机一样的原理,Verilog不是看的很懂。。。
|
|
|
|
|
|
蜂鸣器响是因为内部的一个片按一定频率震动发出声音的 取反的话电平按一定频率翻转 然后蜂鸣器就响了
|
|
|
|
|
|
assign delay_end=count[24]?clk_divider1:clk_divider0;这条语句是一个持续赋值语句。它会使delay_end一直保持在clk_divider1和clk_divider0两个数据之间,delay_cnt==15'd0的条件是无法满足的,been始终保持初始值。蜂鸣器会是导通或截止。所以无法实现救护车一样的声音!
|
|
|
|
|
|
蜂鸣器响是因为内部的一个片按一定频率震动发出声音的,为了好听!
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
375 浏览 0 评论
NVMe over Fabrics 国产 IP:高性能网络存储解决方案
363 浏览 0 评论
130 浏览 0 评论
NVMe高速传输之摆脱XDMA设计54:如何测试队列管理功能2
397 浏览 0 评论
NVMe高速传输之摆脱XDMA设计53:如何测试队列管理功能
730 浏览 0 评论
4567 浏览 64 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-13 19:11 , Processed in 0.791098 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3020