久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2048|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

FPGA三人搶答器核心代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1087159 發(fā)表于 2023-7-4 12:18 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
module Top_Qiangdaqi(
        input clk,//主頻信號(hào),50MHZ
        input rst_n,//低電平復(fù)位
        //input [2:0]kint,//按鍵輸入
        input PLA_A,PLA_B,PLA_C,//按鍵輸入
        //input key_ctrl,//主持人按鍵
        output led_d0=0,led_d1,led_d2,led_d3,
        output buzzer,//蜂鳴器
        output [5:0]seg_sel,
        output [7:0]seg_data
        );
       
        /*-----------------------按鍵信號(hào)鎖存,消抖,LED顯示-----------------------*/
        /*--------記錄按鍵狀態(tài)--------*/
        reg key_rst;
        always @(posedge clk or negedge rst_n)begin
                if(!rst_n)key_rst <= 1'b1;//低電平復(fù)位,key_rst信號(hào)為1
                else key_rst <= PLA_C&PLA_B&PLA_A;//按鍵按下時(shí),key_rst信號(hào)為0
        end
       
        reg key_rst_r;
        always @(posedge clk or negedge rst_n)begin
                if(!rst_n)key_rst_r <= 1'b1;
                else key_rst_r <= key_rst;//上升沿將key_rst信號(hào)鎖存到key_rst_r里
        end
       
        /*--------添加20MS消抖--------*/
        wire key_clr=key_rst_r &(~key_rst);//key_rst由1變?yōu)?時(shí),key_clr 的值變?yōu)楦?維持一個(gè)時(shí)鐘周期,模擬按鍵情況
        reg [19:0]c;//1KHZ---[15:0]clk_1k+[3:0]counter_delay
        always @(posedge clk or negedge rst_n)begin
                if(!rst_n) c <= 20'd0;
                else if(key_clr) c <= 20'd0;
                else c <= c+1'b1;
        end
       
        reg [2:0] reg_key;
        always @(posedge clk or negedge rst_n)begin
        if(!rst_n) reg_key <= 3'b111;//低電平復(fù)位,三個(gè)按鍵全部賦高電平
                else if(c==20'hffffff)//滿20ms,將按鍵值鎖存到reg_key,20'hffffff=1111_1111_1111_1111_1111
                        reg_key <= {PLA_C,PLA_B,PLA_A};
        end
       
        //時(shí)鐘上升沿時(shí)將reg_key的信號(hào)鎖存到reg_key_r里
        reg [2:0]reg_key_r;
        always @(posedge clk or negedge rst_n)begin
                if(!rst_n) reg_key_r <= 3'b111;
                else reg_key_r <= reg_key;
        end
       
        /*--------控制LED顯示--------*/
        wire [2:0] led_swt=reg_key_r[2:0]&(~reg_key[2:0]);
        reg d0;reg d1;reg d2;reg d3;
        always @(posedge clk or negedge rst_n)begin
                if(!rst_n)begin//全亮
                        d0 <= 1'b0;
                        d1 <= 1'b0;
                        d2 <= 1'b0;
                        d3 <= 1'b0;
                end
                else begin//按鍵控制LED翻轉(zhuǎn)
                        if(led_swt[1]&led_swt[2])d0 <= ~d0;//倒計(jì)時(shí)觸發(fā)燈
                        //兩個(gè)按鍵同時(shí)按下也不會(huì)因?yàn)閕f語(yǔ)句對(duì)LED有干擾
                        if(led_swt[0]&(!led_swt[1])&(!led_swt[2])&led_d2==1'b0&led_d3==1'b0)d1 <= ~d1;
                        if(led_swt[1]&(!led_swt[0])&(!led_swt[2])&led_d1==1'b0&led_d3==1'b0)d2 <= ~d2;
                        if(led_swt[2]&(!led_swt[0])&(!led_swt[1])&led_d1==1'b0&led_d2==1'b0)d3 <= ~d3;
//                        if(led_swt[0]&led_d2==1'b0&led_d3==1'b0)d1 <= ~d1;
//                        if(led_swt[1]&led_d1==1'b0&led_d3==1'b0)d2 <= ~d2;
//                        if(led_swt[2]&led_d1==1'b0&led_d2==1'b0)d3 <= ~d3;
                end
        end
        assign led_d0=d0?1'b1:1'b0;
        assign led_d1=d1?1'b1:1'b0;
        assign led_d2=d2?1'b1:1'b0;
        assign led_d3=d3?1'b1:1'b0;
                       
        /*-----------------------數(shù)碼管顯示-----------------------*/
        reg [31:0]tc;//時(shí)間計(jì)數(shù)器
        reg flag_1HZ;//計(jì)數(shù)使能標(biāo)志位
        always @(posedge clk or negedge rst_n)begin
                if(!rst_n)begin
                        tc <= 32'd0;
                        flag_1HZ <= 1'b0;
                end
                else if(tc>=32'd49_999_999)begin
                        tc <= 32'd0;
                        flag_1HZ <= 1'b1;//上升沿
                end
                else begin
                        tc <= tc+32'd1;
                        flag_1HZ <= 1'b0;
                end
        end
       
        //蜂鳴器節(jié)拍時(shí)鐘信號(hào)
        wire clk_8;
        clk_div U1(
                .clk(clk),
                .f(8),
                .clk_out(clk_8)
                );

        wire [3:0]count_0;
        wire t0;
        wire en;
        count_m10 U2(
                .clk(clk),
                .clk_8(clk_8),
                .rst_n(rst_n),
                .flag_1HZ(flag_1HZ),
                .clr(1'b0),
                .data(count_0),
                .t(t0),
                .buzzer(buzzer),
                .led_d0(led_d0),
                .led_d1(led_d1),
                .led_d2(led_d2),
                .led_d3(led_d3),
                .PLA_A(PLA_A),
                .PLA_B(PLA_B),
                .PLA_C(PLA_C),
                .en(en)
                );
               
//        wire [3:0]count_1;
//        wire t1;
//        count_m10 count10_m1(
//                .clk(clk),
//                .rst_n(rst_n),
//                .flag_1HZ(t0),
//                .clr(1'b0),
//                .data(count_1),
//                .t(t1)
//                );
//               
               
               
        //譯碼模塊
        wire[7:0] seg_data_0;
        seg_decoder U3(
                 .bin_data  (count_0),
                 .seg_data  (seg_data_0)
        );

               
        seg_scan U4(
                .clk(clk),
                .rst_n(rst_n),
                .en(en),
                .seg_sel(seg_sel),
                .seg_data(seg_data),
                .seg_data_0 ({1'b1,seg_data_0}),
                .led_d0 (led_d0),
                .led_d1 (led_d1),
                .led_d2 (led_d2),
                .led_d3 (led_d3)
                );
       
       
               
//        wire clk_1k,clk_1,clk_8;
//        wire [4:0]kout;
//        clk_div U1(
//                .clk(clk),
//                .f(1000),
//                .clk_out(clk_1k)
//                );
//               
//        clk_div U2(
//                .clk(clk),
//                .f(1),
//                .clk_out(clk_1)
//                );
//               

//        key_clr U4(.clk_1k(clk_1k),.kint(kint),.kout(key_out));
//        key_sel U5(.clk_1k(clk_1k),.clk_1(clk_1));
       
endmodule


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久一区二区三区 | 午夜精品久久久久久久久久久久 | www国产亚洲精品 | 日韩成人一区 | 久久久片| 日韩精品在线观看视频 | 国产一区二区三区四区hd | 日本视频中文字幕 | 国产美女福利在线观看 | 91久久| 亚洲国产成人av好男人在线观看 | 黄一区二区三区 | 国产欧美久久一区二区三区 | 欧美激情精品久久久久久 | 欧美成人一区二区三区 | 成人性视频免费网站 | 欧美在线国产精品 | 91视频在线看 | 中文字幕一区二区三区四区五区 | h在线观看| 欧美aaaa视频 | 日韩av网址在线观看 | 欧美成人a∨高清免费观看 欧美日韩中 | 99视频在线播放 | 国产成人免费 | 韩国欧洲一级毛片 | 亚洲精品国产第一综合99久久 | 国外激情av | 欧美日韩激情 | 日韩欧美在线观看视频网站 | 一区二区三区久久久 | 精品久久久网站 | 午夜免费精品视频 | 免费国产精品久久久久久 | 日韩三级在线 | 日韩人体视频 | 国产精品揄拍一区二区 | 九一视频在线观看 | 国产日韩一区二区三区 | 又黑又粗又长的欧美一区 | 视频一区二区在线观看 |