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

北郵22級(jí)信通院數(shù)電:Verilog-FPGA(10)第十周實(shí)驗(yàn) 實(shí)現(xiàn)移位寄存器74LS595

這篇具有很好參考價(jià)值的文章主要介紹了北郵22級(jí)信通院數(shù)電:Verilog-FPGA(10)第十周實(shí)驗(yàn) 實(shí)現(xiàn)移位寄存器74LS595。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

北郵22信通一枚~

跟隨課程進(jìn)度更新北郵信通院數(shù)字系統(tǒng)設(shè)計(jì)的筆記、代碼和文章

持續(xù)關(guān)注作者 迎接數(shù)電實(shí)驗(yàn)學(xué)習(xí)~

獲取更多文章,請(qǐng)?jiān)L問專欄:

北郵22級(jí)信通院數(shù)電實(shí)驗(yàn)_青山如墨雨如畫的博客-CSDN博客

北郵22級(jí)信通院數(shù)電:Verilog-FPGA(10)第十周實(shí)驗(yàn) 實(shí)現(xiàn)移位寄存器74LS595,北郵22級(jí)信通院數(shù)電實(shí)驗(yàn),fpga開發(fā)

目錄

一.代碼部分

?二.管腳分配

三.實(shí)現(xiàn)過程講解及效果


一.代碼部分

shift_register.v

module shift_register
(
	input clk,DS,OE,MR,
	input wire ST_CP,
	output reg [7:0] out = 8'b1111_1111,
	output reg Q7 = 1'b1
);

	always @ (posedge clk)
		begin 
			if(!MR)
				begin 
					out = 8'b1111_1111;
					Q7 = 1'b1;
				end
			else if(OE)
				begin 
					out <= 8'bzzzz_zzzz;
					Q7 <= 1'bz;
				end
			else if(SH_CP)
				begin 
					out[0] <= !DS;
					out[7:1] <= out[6:0];
					Q7 <= out[7];
				end
		end
	debounce debounce_1
	(
		.clk(clk),
		.rst(MR),
		.key(ST_CP),
		.key_pulse(SH_CP)
	);
				

endmodule

debounce.v

module debounce (clk,rst,key,key_pulse);
 
        parameter       N  =  1;         //要消除的按鍵的數(shù)量
 
	input             clk;
        input             rst;
        input 	[N-1:0]   key;          //輸入的按鍵					
	output  [N-1:0]   key_pulse;        //按鍵動(dòng)作產(chǎn)生的脈沖	
 
        reg     [N-1:0]   key_rst_pre;  //定義一個(gè)寄存器型變量存儲(chǔ)上一個(gè)觸發(fā)時(shí)的按鍵值
        reg     [N-1:0]   key_rst;      //定義一個(gè)寄存器變量?jī)?chǔ)存儲(chǔ)當(dāng)前時(shí)刻觸發(fā)的按鍵值
 
        wire    [N-1:0]   key_edge;      //檢測(cè)到按鍵由高到低變化是產(chǎn)生一個(gè)高脈沖
 
        //利用非阻塞賦值特點(diǎn),將兩個(gè)時(shí)鐘觸發(fā)時(shí)按鍵狀態(tài)存儲(chǔ)在兩個(gè)寄存器變量中
        always @(posedge clk  or  negedge rst)
          begin
             if (!rst) begin
                 key_rst <= {N{1'b1}}; //初始化時(shí)給key_rst賦值全為1,{}中表示N個(gè)1
                 key_rst_pre <= {N{1'b1}};
             end
             else begin
                 key_rst <= key;       //第一個(gè)時(shí)鐘上升沿觸發(fā)之后key的值賦給key_rst,
                                       //同時(shí)key_rst的值賦給key_rst_pre
                 key_rst_pre <= key_rst;    //非阻塞賦值。
                                            //相當(dāng)于經(jīng)過兩個(gè)時(shí)鐘觸發(fā),
                                            //key_rst存儲(chǔ)的是當(dāng)前時(shí)刻key的值,
                                            //key_rst_pre存儲(chǔ)的是前一個(gè)時(shí)鐘的key的值
             end    
           end
 
        assign  key_edge = key_rst_pre & (~key_rst);//脈沖邊沿檢測(cè)。
                                                    //當(dāng)key檢測(cè)到下降沿時(shí),
                                                    //key_edge產(chǎn)生一個(gè)時(shí)鐘周期的高電平
 
        reg	[17:0]	  cnt;                       //產(chǎn)生延時(shí)所用的計(jì)數(shù)器,系統(tǒng)時(shí)鐘12MHz,
                                                 //要延時(shí)20ms左右時(shí)間,至少需要18位計(jì)數(shù)器     
 
        //產(chǎn)生20ms延時(shí),當(dāng)檢測(cè)到key_edge有效是計(jì)數(shù)器清零開始計(jì)數(shù)
        always @(posedge clk or negedge rst)
           begin
             if(!rst)
                cnt <= 18'h0;
             else if(key_edge)
                cnt <= 18'h0;
             else
                cnt <= cnt + 1'h1;
             end  
 
        reg     [N-1:0]   key_sec_pre;                //延時(shí)后檢測(cè)電平寄存器變量
        reg     [N-1:0]   key_sec;                    
 
 
        //延時(shí)后檢測(cè)key,如果按鍵狀態(tài)變低產(chǎn)生一個(gè)時(shí)鐘的高脈沖。如果按鍵狀態(tài)是高的話說明按鍵無效
        always @(posedge clk  or  negedge rst)
          begin
             if (!rst) 
                 key_sec <= {N{1'b1}};                
             else if (cnt==18'h3ffff)
                 key_sec <= key;  
          end
       always @(posedge clk  or  negedge rst)
          begin
             if (!rst)
                 key_sec_pre <= {N{1'b1}};
             else                   
                 key_sec_pre <= key_sec;             
         end      
       assign  key_pulse = key_sec_pre & (~key_sec);     
 
endmodule

?二.管腳分配

北郵22級(jí)信通院數(shù)電:Verilog-FPGA(10)第十周實(shí)驗(yàn) 實(shí)現(xiàn)移位寄存器74LS595,北郵22級(jí)信通院數(shù)電實(shí)驗(yàn),fpga開發(fā)

三.實(shí)現(xiàn)過程講解及效果

北郵22級(jí)信通院數(shù)電:Verilog-FPGA(10)第十周實(shí)驗(yàn) 實(shí)現(xiàn)移位寄存器74LS595,北郵22級(jí)信通院數(shù)電實(shí)驗(yàn),fpga開發(fā)?北郵22級(jí)信通院數(shù)電:Verilog-FPGA(10)第十周實(shí)驗(yàn) 實(shí)現(xiàn)移位寄存器74LS595,北郵22級(jí)信通院數(shù)電實(shí)驗(yàn),fpga開發(fā)北郵22級(jí)信通院數(shù)電:Verilog-FPGA(10)第十周實(shí)驗(yàn) 實(shí)現(xiàn)移位寄存器74LS595,北郵22級(jí)信通院數(shù)電實(shí)驗(yàn),fpga開發(fā)北郵22級(jí)信通院數(shù)電:Verilog-FPGA(10)第十周實(shí)驗(yàn) 實(shí)現(xiàn)移位寄存器74LS595,北郵22級(jí)信通院數(shù)電實(shí)驗(yàn),fpga開發(fā)北郵22級(jí)信通院數(shù)電:Verilog-FPGA(10)第十周實(shí)驗(yàn) 實(shí)現(xiàn)移位寄存器74LS595,北郵22級(jí)信通院數(shù)電實(shí)驗(yàn),fpga開發(fā)北郵22級(jí)信通院數(shù)電:Verilog-FPGA(10)第十周實(shí)驗(yàn) 實(shí)現(xiàn)移位寄存器74LS595,北郵22級(jí)信通院數(shù)電實(shí)驗(yàn),fpga開發(fā)北郵22級(jí)信通院數(shù)電:Verilog-FPGA(10)第十周實(shí)驗(yàn) 實(shí)現(xiàn)移位寄存器74LS595,北郵22級(jí)信通院數(shù)電實(shí)驗(yàn),fpga開發(fā)北郵22級(jí)信通院數(shù)電:Verilog-FPGA(10)第十周實(shí)驗(yàn) 實(shí)現(xiàn)移位寄存器74LS595,北郵22級(jí)信通院數(shù)電實(shí)驗(yàn),fpga開發(fā)北郵22級(jí)信通院數(shù)電:Verilog-FPGA(10)第十周實(shí)驗(yàn) 實(shí)現(xiàn)移位寄存器74LS595,北郵22級(jí)信通院數(shù)電實(shí)驗(yàn),fpga開發(fā)文章來源地址http://www.zghlxwxcb.cn/news/detail-751887.html

到了這里,關(guān)于北郵22級(jí)信通院數(shù)電:Verilog-FPGA(10)第十周實(shí)驗(yàn) 實(shí)現(xiàn)移位寄存器74LS595的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包