FPGA學習-基于 DE2-115 板的 Verilog 分秒計數器設計與按鍵功能實現

一、核心功能設計

按鍵暫停/繼續:通過KEY1控制計時狀態

按鍵消抖處理:20ms消抖周期消除機械抖動

硬件資源分配:符合DE2-115開發板引腳規范

二、核心模塊實現詳解

1. 頂層模塊(counter)

module counter(input  CLOCK_50,     // 50MHz時鐘(PIN_Y2)input  KEY0,         // 復位按鍵(低有效,PIN_M23)input  KEY1,         // 暫停按鍵(低有效,PIN_M21)output [6:0] hex0,   // 秒個位(PIN_AF10~AG16)output [6:0] hex1,   // 秒十位output [6:0] hex2,   // 分個位output [6:0] hex3    // 分十位

2. 時鐘分頻模塊(clock_divider)

module clock_divider #(parameter DIVIDER = 24_999_999 // 50MHz→1Hz
)(input  clk,input  reset,output reg clk_out
);
reg [31:0] counter;  // 32位計數器always @(posedge clk or posedge reset) beginif (reset) begincounter <= 0;clk_out <= 0;end else if (counter == DIVIDER) begincounter <= 0;clk_out <= ~clk_out;  // 輸出翻轉end elsecounter <= counter + 1;
end
endmodule

參數計算
T c y c l e = D I V I D E R + 1 f c l k = 25 , 000 , 000 50 , 000 , 000 = 0.5 s T_{cycle} = \frac{DIVIDER+1}{f_{clk}} = \frac{25,000,000}{50,000,000} = 0.5s Tcycle?=fclk?DIVIDER+1?=50,000,00025,000,000?=0.5s
f o u t = 1 2 × 0.5 s = 1 H z f_{out} = \frac{1}{2 \times 0.5s} = 1Hz fout?=2×0.5s1?=1Hz


3. 優化版按鍵消抖模塊(key_debounce)

module key_debounce #(parameter DEBOUNCE_MS = 20,    // 消抖時間parameter CLK_FREQ = 50_000_000 
)(input  clk,input  key_n,         // 低有效output reg key_pulse  // 輸出脈沖
);

4. 七段譯碼器(seg7_decoder)


module seg7_decoder(input [3:0] num,output reg [6:0] seg
);
always @(*) begincase(num)4'd0: seg = 7'b1000000; // 共陽極編碼// ...其他數字編碼default: seg = 7'b1111111; // 全滅endcase
end
endmodule

顯示優化

  • 十進制拆分邏輯:
seg0(.num(seconds%10),  // 個位
seg1(.num(seconds/10)   // 十位
  • 錯誤狀態自動滅燈

三、關鍵電路設計

1. 復位信號展寬電路

reg [5:0] reset_hold = 0;  // 6位展寬寄存器
always @(posedge CLOCK_50) beginif (reset_pulse) reset_hold <= 6'b111111;  // 64周期展寬else if (reset_hold > 0)reset_hold <= reset_hold - 1;
end

時序特性

  • 展寬時間: t = 64 50 M H z = 1.28 μ s t = \frac{64}{50MHz} = 1.28\mu s t=50MHz64?=1.28μs
  • 確保計數器穩定復位

2. 狀態控制FSM

always @(posedge CLOCK_50) beginif (reset_extended)          // 復位優先running <= 1'b1;else if (pause_pulse)        // 暫停切換running <= ~running;
end

四、工程文件結構

/fpga_counter
├── quartus/
│   ├── counter.qpf       
│   └── DE2_115.qsf       
├── modelsim/
│   ├── tb_counter.v     
│   └── wave.do          
└── src/├── counter.v         └── seg7_decoder.v    

五.實驗結果

fpga3

六.總結

本次實驗在 DE2 - 115 板子上使用 Verilog 完成分秒計數器設計。通過代碼實現精準計數,同時加入按鍵暫停與消抖功能。經多次測試,計數器運行穩定,按鍵操作能有效控制,為后續數字電路設計積累了實踐經驗。

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

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

相關文章

后端開發 SpringBoot 工程模板

概述 本篇文章主要記錄如何開發一個通用的 SpringBoot 工程開發框架的項目模板&#xff0c;這樣后續需要開發項目時就可以直接開箱直用了&#xff0c;省區了很多重復步驟。 項目初始化 創建項目&#xff1a; 按照我的選項來選&#xff0c;然后點擊 create&#xff0c;等待文…

OpenCv(五)——邊緣檢測

目錄 邊緣檢測 一、sobel算子邊緣檢測 &#xff08;1&#xff09;原理 1、X軸方向的邊緣檢測 2、Y軸方向的邊緣檢測 &#xff08;2&#xff09;sobel算子參數 &#xff08;3&#xff09;X軸方向邊緣檢測代碼演示 1、顯示圓的圖像 2、x方向上的邊緣檢測&#xf…

無人機數據鏈技術及運行方式詳解!

一、無人機數據鏈技術要點 1. 通信傳輸技術 頻段選擇&#xff1a; 常用頻段包括 L波段&#xff08;1-2 GHz&#xff09;、C波段&#xff08;4-8 GHz&#xff09;、Ku/K波段&#xff08;12-40 GHz&#xff09;&#xff0c;不同頻段在傳輸距離、帶寬和抗干擾性間權衡。 低…

AI Agent 實戰:搭建個人在線旅游助手

AI Agent 實戰&#xff1a;搭建個人在線旅游助手 本次實驗中&#xff0c;我們將繼續探索 Agent 的提示詞&#xff0c;學習更加規范的提示詞撰寫方法。 本實驗中你將掌握的知識點 使用 Dify 構建 Agent 的方法結構化的提示詞撰寫技巧變量的使用方法 1. 準備 在新建 Agent 之…

檢索增強生成(RAG):強化 AI 智能體的知識 “武裝”

技術點目錄 第一章、智能體(Agent)入門第二章、基于字節Coze 構建智能體(Agent)第三章、基于其他平臺構建智能體&#xff08;Agent&#xff09;第四章、國內外智能體(Agent)經典案例詳解第五章、大語言模型應用開發框架LangChain入門第六章、基于LangChain的大模型API接入第七章…

vscode 打開工程 看不到文件目錄

vscode 打開工程 看不到文件目錄 View->Explorer 快捷鍵&#xff1a;CtrlShiftE

厘米級定位賦能智造升級:品鉑科技UWB技術驅動工廠全流程自動化與效能躍升”

在智能制造中的核心價值體現在?高精度定位、流程優化、安全管理?等多個維度&#xff0c;具體應用如下&#xff1a; 一、?核心技術與定位能力? ?厘米級高精度定位? UWB技術通過?納秒級窄脈沖信號?&#xff08;帶寬超500MHz&#xff09;實現高時間分辨率&#xff0c;結合…

getID3獲取本地或遠程視頻時長

音頻文件也可使用&#xff0c;使用ffmeg安裝太復雜了 附ffmpeg方式&#xff1a;centos下安裝ffmpeg_yum安裝ffmpeg-CSDN博客 使用composer先安裝 composer require james-heinrich/getid3 獲取本地視頻 //獲取本地視頻$video_path $_SERVER[DOCUMENT_ROOT].$params[video];…

10、Linux C 網絡編程(完整版)

1、網絡發展歷史和分層 1.1 Internet 的歷史 起源&#xff1a; 1957 年&#xff1a;蘇聯發射第一顆人造衛星 "Sputnik"。 1958 年&#xff1a;美國總統艾森豪威爾成立 DARPA&#xff08;國防部高級研究計劃署&#xff09;。 1968 年&#xff1a;DARPA 提出 "…

前端:開源軟件鏡像站 / 清華大學開源軟件鏡像站 / 阿里云 / 網易 / 搜狐

一、理解開源軟件鏡像站 開源軟件鏡像是指開源軟件在遠程服務器上的備份副本&#xff0c;允許用戶通過互聯網快速下載和安裝所需的軟件。在國內&#xff0c;有多個知名的開源軟件鏡像站&#xff0c;為開發者提供穩定、快速的開源軟件下載服務。 二、常見開源軟件鏡像站 序號…

Oracle 數據庫中優化 INSERT INTO 操作的性能

在 Oracle 數據庫中優化 INSERT INTO 操作的性能&#xff0c;尤其是在處理大批量數據時&#xff0c;可以通過以下方法顯著提升效率。 使用直接路徑插入&#xff08;Direct-Path Insert&#xff09; 通過 APPEND 提示繞過緩沖區緩存&#xff0c;直接寫入數據文件&#xff0c;減…

嵌入式硬件篇---嘉立創PCB繪制

文章目錄 前言一、PCB繪制簡介1.1繪制步驟1.1.1前期準備1.1.2原理圖設計1.1.3原理圖轉PCB1.1.4PCB布局1.1.5布線1.1.6布線優化和絲印1.1.7制版 1.2原理1.2.1電氣連接原理1.2.2信號傳輸原理1.2.3電源和接地原理 1.3注意事項1.3.1元件封裝1.3.2布局規則1.3.3過孔設計1.3.4DRC檢查…

ideal自動生成類圖的方法

在 IntelliJ IDEA 中&#xff0c;“**在項目資源管理器中選擇以下類**” 是指通過 **項目資源管理器&#xff08;Project Tool Window&#xff09;** 找到并選中你需要生成類圖的類文件&#xff08;如 .java 文件&#xff09;&#xff0c;然后通過右鍵菜單或快捷鍵操作生成類圖…

【零基礎入門unity游戲開發——2D篇】2D物理關節 —— Joint2D相關組件

考慮到每個人基礎可能不一樣,且并不是所有人都有同時做2D、3D開發的需求,所以我把 【零基礎入門unity游戲開發】 分為成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要講解C#的基礎語法,包括變量、數據類型、運算符、流程控制、面向對象等,適合沒有編程基礎的…

在Vue 3 + TypeScript + Vite 項目中安裝和使用 SCSS

在Vue 3 TypeScript Vite 項目中安裝和使用 SCSS 1、安裝 SCSS 的相關依賴 npm install sass --save-dev2、配置 Vite 對于 Vue 3&#xff0c;Vite 已經內置了對 SCSS 的支持&#xff0c;通常不需要額外的配置。但是&#xff0c;如果需要自定義配置&#xff0c;可以在路徑…

【滲透測試】Vulnhub靶機-FSoft Challenges VM: 1-詳細通關教程

下載地址&#xff1a;https://www.vulnhub.com/entry/fsoft-challenges-vm-1,402/ 目錄 前言 信息收集 目錄掃描 wpscan掃描 修改密碼 反彈shell 提權 思路總結 前言 開始前注意靶機簡介&#xff0c;當第一次開機時會報apache錯誤&#xff0c;所以要等一分鐘后重啟才…

Redis 6.2.6 生產環境單機配置詳解redis.conf

文章目錄 Redis 生產環境配置詳解配置文件示例基礎網絡與進程管理RDB 持久化配置復制&#xff08;主從同步&#xff09;設置內存管理AOF 持久化性能優化設置限制與監控其他參數完整配置總結 Redis 生產環境配置詳解 在實際生產環境中&#xff0c;為了保障 Redis 的穩定性和高性…

SpringBoot實戰:Excel文件上傳、數據驗證與存儲全流程解析

一、需求場景與技術選型 在企業管理、數據中臺等系統中&#xff0c;Excel文件處理是常見需求。本文將基于SpringBoot實現以下核心功能&#xff1a; 支持.xls/.xlsx文件上傳數據完整性驗證&#xff08;非空、格式等&#xff09;業務數據驗證&#xff08;關聯數據庫校驗&#x…

使用Java爬蟲按關鍵字搜索淘寶商品?

在電商領域&#xff0c;通過關鍵字搜索商品是獲取商品信息的常見需求。Java爬蟲技術可以幫助我們自動化地獲取這些信息&#xff0c;提高工作效率。本文將詳細介紹如何使用Java爬蟲按關鍵字搜索淘寶商品&#xff0c;并提供完整的代碼示例。 一、準備工作 1. 注冊淘寶開放平臺賬…

【Git】5 個分區的切換方式及示例

目錄 1. **工作區&#xff08;Working Directory&#xff09;**2. **緩存區&#xff08;Stage/Index&#xff09;**3. **本地倉庫&#xff08;Local Repository&#xff09;**4. **遠程倉庫&#xff08;Remote Repository&#xff09;**5. **貯藏區&#xff08;Stash&#xff0…