国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

key_beep按鍵控制蜂鳴器程序及流程圖

這篇具有很好參考價(jià)值的文章主要介紹了key_beep按鍵控制蜂鳴器程序及流程圖。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1.試驗(yàn)任務(wù):

使用按鍵控制蜂鳴器發(fā)聲。 初始狀態(tài)為蜂鳴器鳴叫,按下開關(guān)后蜂鳴器停
止鳴叫,再次按下開關(guān),蜂鳴器重新鳴叫。

2. 按鍵消抖

蜂鳴器流程圖,# verilog,FPGA開發(fā),流程圖,fpga開發(fā),單片機(jī)

3.程序設(shè)計(jì)

蜂鳴器流程圖,# verilog,FPGA開發(fā),流程圖,fpga開發(fā),單片機(jī)

3.1消抖模塊

// An highlighted block
module key_debounce(             //消抖模塊 
    input sys_clk,               //時(shí)鐘信號,50Mhz
	input sys_rst_n,             //復(fù)位信號         
	
	input key,                   //按鍵
	output reg key_flag,             //按鍵有效的標(biāo)志 
	output reg key_value             //按鍵有效的值
);

reg key_reg;                     //key的寄存器,比對兩個(gè)時(shí)鐘時(shí)將值放在寄存器內(nèi)
reg [19:0]delay_cnt;             //延時(shí)20ns的寄存器,20ms=20000000ns,20000000ns/20=1000000個(gè)時(shí)鐘周期,位寬為20位

always @(posedge sys_clk or negedge sys_rst_n)begin
    if(!sys_rst_n)begin          //按下復(fù)位按鍵
	key_reg <= 1'b1;             //key_reg按鍵為低電平有效,所以拉高
	delay_cnt <= 20'd0;          //計(jì)數(shù)器清零
	end
	else begin
		key_reg <= key;          //將key的值存入寄存器中(注,key的值等到下一個(gè)邊沿過來時(shí),才會(huì)傳遞給key_reg,既key_reg的值和key的值相差一個(gè)時(shí)鐘周期)
		if(key_reg!=key)               //上一個(gè)值是否和當(dāng)前值相同,若按下按鍵則當(dāng)前值和上一值不同,則進(jìn)入該語句
			delay_cnt <= 32'd100_0000;      //把delay_cnt寄存器充滿20ms     
		else if(key_reg==key)begin     //上一個(gè)值是否和當(dāng)前值相同,若沒有按按鍵則當(dāng)前值和上一值相同,則進(jìn)入該語句
			if(delay_cnt > 32'd0)
				delay_cnt <=delay_cnt-1'b1; //
			else
				delay_cnt <=delay_cnt;
		end
	end
end

always @(posedge sys_clk or negedge sys_rst_n)begin
    if(!sys_rst_n)begin 
		key_flag <= 1'b0;       //如果復(fù)位將flag清零
		key_value <= 1'b1;      //為低時(shí)才判定按鍵按下
	end
	else begin
		if(delay_cnt == 32'd1)begin
			key_flag <= 1'b1;
			key_value <= key; 
		end
		else begin
			key_flag <= 1'b0;
			key_value <= key_value;
		end
	end
end

endmodule

3.2消抖模塊流程圖

蜂鳴器流程圖,# verilog,FPGA開發(fā),流程圖,fpga開發(fā),單片機(jī)
蜂鳴器流程圖,# verilog,FPGA開發(fā),流程圖,fpga開發(fā),單片機(jī)文章來源地址http://www.zghlxwxcb.cn/news/detail-520481.html

3.3 蜂鳴器驅(qū)動(dòng)模塊程序

// An highlighted block
module beep_control(             //消抖模塊 
    input sys_clk,               //時(shí)鐘信號,50Mhz
	input sys_rst_n,             //復(fù)位信號         
	
	input key_flag,             //按鍵有效的標(biāo)志 
	input key_value,             //按鍵有效的值
	output reg beep
);

always @(posedge sys_clk or negedge sys_rst_n)begin
    if(!sys_rst_n)
		beep <= 1'b1;
	else if(key_flag&&(~key_value))
		beep <=~beep;
end

endmodule

3.4 頂層例化模塊程序

// An highlighted block
module top_key_beep(              
    input sys_clk,               //時(shí)鐘信號,50Mhz
	input sys_rst_n,             //復(fù)位信號         
	input key,        
	output beep
);

wire key_flag;
wire key_value;

key_debounce key_debounce_u(
	.sys_clk (sys_clk),
	.sys_rst_n (sys_rst_n),
	.key (key),
	.key_flag (key_flag),
    .key_value (key_value)
);

beep_control beep_control_u(
	.sys_clk (sys_clk),
	.sys_rst_n (sys_rst_n),
	.key_flag (key_flag),
	.key_value (key_value),
	.beep (beep)
);
endmodule

3.5 ucf模塊

// An highlighted block
NET sys_clk             TNM_NET = sys_clk_pin;
TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 20ns HIGH 50%;

#------------------------------系統(tǒng)時(shí)鐘和復(fù)位----------------------------------- 
NET sys_clk          LOC = N8  | IOSTANDARD = "LVCMOS33";   
NET sys_rst_n        LOC = G16 | IOSTANDARD = "LVCMOS33"; 

NET "key"            LOC = P5  | IOSTANDARD = "LVCMOS33";
NET beep             LOC = P4  | IOSTANDARD = "LVCMOS33";

到了這里,關(guān)于key_beep按鍵控制蜂鳴器程序及流程圖的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包