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=fclkDIVIDER+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.mzph.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…