DE2-115分秒計數器

一、模塊設計

如若不清楚怎么模塊化,請看https://blog.csdn.net/szyugly/article/details/146379170?spm=1001.2014.3001.5501

1.1頂層模塊

module top_counter(input  wire       CLOCK_50,    // 50MHz時鐘input  wire       KEY0,        // 暫停/繼續按鍵output wire [6:0] HEX3, HEX2, HEX1, HEX0,  // 4位七段數碼管output wire [3:0] DIGIT_EN     // 數碼管位選
);wire clk_1hz;        // 1Hz時鐘
wire clk_scan;       // 掃描時鐘(1kHz)
wire pause_pulse;    // 消抖后的暫停信號// 模塊實例化
clk_div u_clk_div(.clk_50m(CLOCK_50),.clk_1hz(clk_1hz),.clk_1k(clk_scan)
);debounce u_debounce(.clk(CLOCK_50),.key_in(KEY0),.key_out(pause_pulse)
);time_counter u_time_counter(.clk(clk_1hz),.pause(pause_pulse),.min_ten(min_ten),.min_unit(min_unit),.sec_ten(sec_ten),.sec_unit(sec_unit)
);display u_display(.clk(clk_scan),.min_ten(min_ten),.min_unit(min_unit),.sec_ten(sec_ten),.sec_unit(sec_unit),.seg_data({HEX3, HEX2, HEX1, HEX0}),.digit_en(DIGIT_EN)
);endmodule

1.2計數器模塊

module time_counter(input  wire clk,      // 1Hz時鐘input  wire pause,    // 暫停信號output reg [3:0] min_ten,  // 分鐘十位output reg [3:0] min_unit, // 分鐘個位output reg [3:0] sec_ten,  // 秒鐘十位output reg [3:0] sec_unit  // 秒鐘個位
);reg pause_state;  // 暫停狀態寄存器always @(posedge clk) beginif(pause) pause_state <= ~pause_state; // 切換暫停狀態
endalways @(posedge clk) beginif(!pause_state) begin  // 非暫停狀態// 秒個位計數if(sec_unit == 4'd9) beginsec_unit <= 0;// 秒十位計數if(sec_ten == 4'd5) beginsec_ten <= 0;// 分鐘個位計數if(min_unit == 4'd9) beginmin_unit <= 0;// 分鐘十位計數if(min_ten == 4'd5) beginmin_ten <= 0;end else beginmin_ten <= min_ten + 1;endend else beginmin_unit <= min_unit + 1;endend else beginsec_ten <= sec_ten + 1;endend else beginsec_unit <= sec_unit + 1;endend
endendmodule

1.3按鍵消抖模塊

module debounce(input  wire clk,      // 50MHz時鐘input  wire key_in,   // 原始按鍵輸入output reg  key_out   // 消抖后輸出
);reg [19:0] counter;      // 20ms計數器 (50MHz * 0.02s = 1,000,000)
reg key_reg;always @(posedge clk) beginkey_reg <= key_in;    // 同步輸入if(key_reg != key_out) begin       // 狀態變化counter <= 20'd0;end else if(counter < 20'd1_000_000) begincounter <= counter + 1;end else beginkey_out <= key_reg;           // 穩定后更新輸出end
endendmodule

1.4顯示驅動模塊

module display(input  wire clk,          // 掃描時鐘(1kHz)input  wire [3:0] min_ten,input  wire [3:0] min_unit,input  wire [3:0] sec_ten,input  wire [3:0] sec_unit,output reg  [6:0] seg_data,  // 段選信號output reg  [3:0] digit_en    // 位選使能
);reg [1:0] scan_cnt;        // 掃描計數器
reg [3:0] data_temp;       // 當前顯示數據// 七段譯碼表(共陽極)
parameter [6:0] SEG_BCD [0:9] = {7'b1000000, // 07'b1111001, // 17'b0100100, // 27'b0110000, // 37'b0011001, // 47'b0010010, // 57'b0000010, // 67'b1111000, // 77'b0000000, // 87'b0010000  // 9
};always @(posedge clk) beginscan_cnt <= scan_cnt + 1;case(scan_cnt)2'b00: begindigit_en <= 4'b1110;  // 最低位data_temp <= sec_unit;end2'b01: begindigit_en <= 4'b1101;data_temp <= sec_ten;end2'b10: begindigit_en <= 4'b1011;data_temp <= min_unit;end2'b11: begindigit_en <= 4'b0111;  // 最高位data_temp <= min_ten;endendcaseseg_data <= SEG_BCD[data_temp]; // 查表輸出
endendmodule

1.5分頻模塊

module clk_div(input  wire clk_50m,  // 50MHz輸入output reg  clk_1hz,  // 1Hz輸出output reg  clk_1k    // 1kHz掃描時鐘
);// 1Hz分頻計數器 (50,000,000分頻)
reg [25:0] cnt_1hz;
always @(posedge clk_50m) beginif(cnt_1hz == 26'd49_999_999) begincnt_1hz <= 0;clk_1hz <= ~clk_1hz;end else begincnt_1hz <= cnt_1hz + 1;end
end// 1kHz分頻計數器 (50,000分頻)
reg [15:0] cnt_1k;
always @(posedge clk_50m) beginif(cnt_1k == 16'd49_999) begincnt_1k <= 0;clk_1k <= ~clk_1k;end else begincnt_1k <= cnt_1k + 1;end
endendmodule

二、效果展示

計數器

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/76961.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/76961.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/76961.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ubuntu git cola gui

直接的方法&#xff0c; samba&#xff0c; win 里用 tortoiseSVN 需要先在命令行&#xff0c;運行 git 命令&#xff0c;看到操作提示&#xff0c; 按照提示做 然后右鍵看 git diff 其它的方法 linux下可視化git工具git-cola安裝與使用&#xff08;HTTP方式&#xff09;_git…

每日一題(小白)回溯篇4

深度優先搜索題&#xff1a;找到最長的路徑&#xff0c;計算這樣的路徑有多少條&#xff08;使用回溯&#xff09; 分析題意可以得知&#xff0c;每次向前后左右走一步&#xff0c;直至走完16步就算一條走通路徑。要求條件是不能超出4*4的范圍&#xff0c;不能重復之前的路徑。…

【數據分享】2000—2020年我國250m精度灌溉農田柵格數據(免費獲取)

灌溉農田是指通過水利灌溉為農作物提供必要水分&#xff0c;以維持其生長需求的農田類型。灌溉農田占全球農田的20%&#xff0c;占全球糧食產量的40%。但其消耗了60%-70%的淡水和80%-90%的消耗性用水量。中國是世界上灌溉面積最大的農業大國&#xff0c;但中國僅占世界上8%的農…

MySQL-SQL-DML語句、INSER添加數據、UPDATE更新數據、DELETE刪除數據

一. DML 1. DML的英文全稱是Data Manipulation Language(數據操作語言)&#xff0c;用來對數據庫中表的數據記錄進行增、刪、改操作。 2. 添加數據(INSERT)&#xff1b;修改數據(UPDATE)&#xff1b;刪除數據(DELETE) 二. DML-INSER添加數據 -- DML insert -- 指定字段添加數…

使用SymPy求解矩陣微分方程

引言 在數學、物理、工程等領域,微分方程常常被用來描述系統的變化和動態過程。對于多變量系統或者多方程系統,矩陣微分方程是非常常見的,它可以用來描述如電路、控制系統、振動系統等復雜的動態行為。今天,我們將通過Python 中的 SymPy 庫來求解矩陣微分方程,幫助大家輕…

Sentinel實戰(五)、系統保護規則、限流后統一處理及sentinel持久化配置

Spring Cloud Alibaba-Sentinel實戰(五)、系統保護規則、限流后統一處理及sentinel持久化配置 一、系統保護規則一)、系統規則支持的模式二)、新增系統規則界面三)、demo測試二、限流后統一處理實操demo三、sentinel持久化配一、系統保護規則 系統保護規則是從應用級別的…

【百日精通JAVA | SQL篇 | 第四篇】約束

SQL這一塊沒什么難度&#xff0c;主要是一個熟練度&#xff0c;稍微上點難度的地方&#xff0c;其實在于查&#xff0c;比較復雜&#xff0c;涉及到很多問題。 指定列插入 使用指定列插入的時候&#xff0c;未被指定的列使用默認值進行存儲&#xff0c;默認值為空。 默認值設置…

http協議版本的區別 -- 2和3

目錄 http2和http3的區別 傳輸層協議 QUIC協議 介紹 連接建立與握手 建立安全連接的過程 RTT 建連為什么需要兩個過程 原因 解決 QUIC協議的1-RTT 建連 必要性 連接過程 第一次握手(Client Hello) 版本號 key_share 其他 第二次握手 介紹 Server Hello 身…

21 天 Python 計劃:MySQL 庫相關操作

文章目錄 前言一、系統數據庫1. information_schema2. performance_schema3. mysql4. test 二、創建數據庫1. 語法2. 數據庫命名規則 三、數據庫相關操作1. 查看數據庫2. 選擇數據庫3. 刪除數據庫4. 修改數據庫 總結 前言 Python是一種強大且易于學習的編程語言。通過這個21天的…

手撕LLM(二):從源碼出發,探索LoRA加載、推理全流程

接上回接著說&#xff0c;前面我們通過分析源碼&#xff0c;了解了大模型推理的詳細流程&#xff0c;包括提示詞從輸入&#xff0c;到對話模版包裝&#xff0c;到tokenID轉換&#xff0c;到Embedding詞向量轉換&#xff1b;通過大模型推理&#xff0c;再將大模型輸出進行最后一…

WPS宏開發手冊——常見問題

目錄 系列文章6、常見問題 系列文章 使用、工程、模塊介紹 JSA語法 JSA語法練習題 Excel常用Api Excel實戰 常見問題 附錄 6、常見問題 6.1、編輯完宏后會自動保存&#xff0c;下次打開文件會提醒是否啟用宏&#xff0c;點擊啟用會自動加載上次編輯的…

【Android安卓移動計算】實現項目一[模擬器啟動項目]

文章目錄 新建項目項目結構介紹說明程序自動生成&#xff1a;圖片和樣式文件夾&#xff1a;Training1\app\src\main\res\drawable布局文件文件夾&#xff1a;Training1\app\src\main\res\layoutJava文件夾&#xff1a;Training1\app\src\main\java\com\example\training1Androi…

快 速 冪

暴力肯定會超時 3^10 9^5 9*9^4 9*81^2 9*18^2^1 先對b判斷奇偶 偶數&#xff1a;對b/2,對a平方 奇數&#xff1a;先*a,再對a平方&#xff0c;b/2 取余注意&#xff1a;(3^10)%k( 9 * 18^2^1)%k(( 9%k )%k * (18^2^1)%k)%k

網絡釣魚攻擊的威脅和執法部門的作用(第二部分)

執法部門在打擊網絡釣魚中的作用 雖然網絡釣魚可能始于一封欺騙性的電子郵件或短信&#xff0c;但其后果可能遠遠超出個人收件箱的范圍&#xff0c;影響企業、經濟甚至國家安全。隨著網絡釣魚攻擊的規模和復雜性不斷增加&#xff0c;執法機構站在前線&#xff0c;努力預防、調…

Data_Socket和UDP_Socket

Data_Socket 和 UDP_Socket 是兩種不同類型的網絡套接字&#xff0c;它們用于不同的協議和應用場景。以下是它們的主要區別&#xff1a; 協議類型&#xff1a; UDP_Socket&#xff1a;使用的是 UDP&#xff08;User Datagram Protocol&#xff09; 協議&#xff0c;這是一種無連…

2025高頻面試算法總結篇【排序】

文章目錄 直接刷題鏈接直達把數組排成最小的數刪除有序數組中的重復項求兩個排序數組的中位數求一個循環遞增數組的最小值數組中的逆序對如何找到一個無序數組的中位數鏈表排序從一大段文本中找出TOP K 的高頻詞匯 直接刷題鏈接直達 把一個數組排成最大的數 劍指 Offer 45. 把…

模型壓縮技術從零到一

模型壓縮是深度學習中的重要技術&#xff0c;旨在減小模型尺寸和計算需求&#xff0c;特別適合在移動設備或嵌入式系統上部署。 要點 模型壓縮技術可以顯著減小模型尺寸和計算需求&#xff0c;適合資源受限設備。主要技術包括剪枝、量化、知識蒸餾、低秩分解和輕量級模型設計…

浮點數精度問題

目錄 ieee754標準解決方法 和c語言一樣&#xff0c;所有以ieee754標準的語言都有浮點數精度問題&#xff0c;js也有浮點數精度問題&#xff0c;并且因為是弱類型語言這個問題更嚴重&#xff0c;js的Number類型的數據都被視為浮點數 ieee754標準 js的數字類型就相當于c語言doub…

超大規模數據場景(思路)——面試高頻算法題目

目錄 用4KB內存尋找重復元素 從40個億中產生不存在的整數【位】 如果只讓用10MB空間存儲&#xff1f; 初次遍歷 二次遍歷 用2GB內存在20億個整數中查找出現次數最多的數【分塊】 從億萬個URL中查找問題【分塊 堆】 40億個非負整數中找出現兩次的數【位 不過多個位哈】 …

開源身份和訪問管理方案之keycloak(三)keycloak健康檢查(k8s)

文章目錄 開源身份和訪問管理方案之keycloak&#xff08;三&#xff09;keycloak健康檢查啟用運行狀況檢查 健康檢查使用Kubernetes下健康檢查Dockerfile 中 HEALTHCHECK 指令 健康檢查Docker HEALTHCHECK 和 Kubernetes 探針 開源身份和訪問管理方案之keycloak&#xff08;三&…