# Smart_Clock **Repository Path**: tryhardjackma/smart_-clock ## Basic Information - **Project Name**: Smart_Clock - **Description**: 基于 Intel Cyclone IV E EP4CE10F17C8 FPGA 的多功能温湿度电子钟。项目以 50 MHz 系统时钟为基础,实现日期时间显示、闹钟、蜂鸣器音乐报警、DHT11 温湿度采集、数码管动态显示,以及基于 OV5640 + SDRAM + UDP/RMII 的实时视频传输。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-25 - **Last Updated**: 2026-05-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: FPGA, Verilog ## README # Smart Clock 基于 Intel Cyclone IV E EP4CE10F17C8 FPGA 的多功能温湿度电子钟。项目以 50 MHz 系统时钟为基础,实现日期时间显示、闹钟、蜂鸣器音乐报警、DHT11 温湿度采集、数码管动态显示,以及基于 OV5640 + SDRAM + UDP/RMII 的实时视频传输。 ## 展示视频 - [Bilibili](https://www.bilibili.com/video/BV1nrxszQEKP/?spm_id_from=333.1387.homepage.video_card.click&vd_source=dce2b8521f90c5dbbc09257bff242f10) ## 功能特性 - 实时时钟:支持年月日、时分秒显示,默认显示时分秒。 - 时间设置:可通过按键设置当前日期和时间。 - 闹钟功能:支持设置闹钟时间,到点后输出报警信号并驱动蜂鸣器播放音乐。 - 温湿度采集:通过 DHT11 采集环境温度和湿度,并在数码管上动态显示。 - 温度报警:当温度达到预设阈值时触发报警信号。 - 数码管驱动:使用 74HC595 完成段选、位选信号的串并转换输出。 - 实时视频传输:OV5640 采集图像,SDRAM 缓存帧数据,UDP 经以太网发送到 PC 上位机。 - 按键消抖:对机械按键输入进行 20 ms 级软件消抖,输出稳定按键脉冲。 ## 硬件组成 | 模块 | 作用 | | --- | --- | | Intel Cyclone IV E EP4CE10F17C8 | FPGA 主控 | | DHT11 | 温湿度采集 | | 74HC595 | 数码管位选、段选串并转换 | | 无源蜂鸣器 | 闹钟与温度报警提示 | | OV5640 | 图像采集 | | SDRAM | 图像帧缓存 | | 以太网 PHY | UDP/RMII 图像数据发送 | ## 目录结构 ```text . +-- DOC/ # 作品报告、器件手册与转换后的 Markdown 文档 +-- PRJ/output_files/ # Quartus 编译输出文件,包含 main.sof +-- RTL/ # Verilog RTL 源码 | +-- main.v # 工程顶层模块 | +-- key_filter.v # 按键消抖 | +-- buzzer.v # 蜂鸣器音乐报警 | +-- hc595_ctrl.v # 74HC595 数码管驱动 | +-- clock_rtl/ # 日期、时间、闹钟与显示控制 | +-- dht11_rtl/ # DHT11 采集与温湿度显示 | +-- eth_rtl/ # OV5640、SDRAM、UDP/RMII 视频传输 | +-- ip_core/ # PLL、FIFO 等 Quartus IP +-- SIM/ # ModelSim 仿真文件 +-- LICENSE +-- README.md ``` ## 核心模块 - `RTL/main.v`:系统顶层,连接时钟、按键、数码管、DHT11、蜂鸣器、OV5640、SDRAM 和以太网发送链路。 - `RTL/clock_rtl/clock_top.v`:基础电子钟顶层,整合时间计数、显示控制和闹钟设置。 - `RTL/dht11_rtl/dht11.v`:DHT11 顶层,完成温湿度采集、报警判断和数码管显示输出。 - `RTL/eth_rtl/eth.v`:视频传输顶层,整合 PLL、OV5640 初始化与采集、SDRAM 缓存、图像打包和 UDP 发送。 - `RTL/key_filter.v`:按键消抖模块,输出 `press` 按键脉冲。 - `RTL/buzzer.v`:根据报警信号输出蜂鸣器 PWM 音乐。 ## 顶层参数 `RTL/main.v` 中提供了主要可配置参数: | 参数 | 说明 | 默认值 | | --- | --- | --- | | `BOARD_MAC` | FPGA 板卡 MAC 地址 | `48'h12_34_56_78_9A_BC` | | `BOARD_IP` | FPGA 板卡 IP 地址 | `169.254.1.23` | | `BOARD_PORT` | FPGA UDP 端口 | `1234` | | `DES_MAC` | PC 端 MAC 地址 | `48'h00_E0_39_00_20_C9` | | `DES_IP` | PC 端 IP 地址 | `192.168.0.108` | | `DES_PORT` | PC 端 UDP 端口 | `1234` | | `H_PIXEL` / `V_PIXEL` | 图像分辨率 | `640 x 480` | | `ALARM_T` | 温度报警阈值,单位为温度值的 10 倍 | `200` | | `INIT_*` | 初始时间日期 | 12:00:00, 08/31, year 02 | 使用以太网视频传输前,需要根据 PC 网卡实际信息修改 `DES_MAC`、`DES_IP` 和端口配置,并保证上位机接收参数与 FPGA 端一致。 ## 构建与下载 本仓库保留了 RTL 源码、Quartus IP 文件和部分编译输出,但未包含完整的 `.qpf/.qsf` 工程文件。可按以下方式重新建立工程: 1. 使用 Quartus II,新建 Cyclone IV E 工程,顶层实体设置为 `main`。 2. 将 `RTL/` 下所有 Verilog 源文件加入工程。 3. 将 `RTL/ip_core/` 下的 `.qip` IP 文件加入工程。 4. 按报告或 `DOC/FPGA菁英挑战赛作品报告.md` 中的引脚分配设置管脚约束。 5. 根据硬件环境修改 `RTL/main.v` 顶层参数中的网络地址、报警阈值和初始时间。 6. 编译工程并下载生成的 `.sof` 文件到 FPGA。 如果只需要查看已有编译结果,可参考 `PRJ/output_files/main.sof` 及同目录下的 Quartus 报告文件。 ## 仿真 `SIM/` 目录提供了若干 ModelSim 测试文件: | 文件 | 覆盖模块 | | --- | --- | | `tb_clock_top.v` | 基础时钟、日期切换与闹钟显示 | | `tb_alarm.v` | 闹钟时间设置 | | `tb_buzzer.v` | 蜂鸣器音乐输出 | | `tb_key_filter.v` | 按键消抖 | | `tb_send.v` | 以太网发送链路相关逻辑 | 仿真时可将对应 RTL 文件和测试文件加入 ModelSim 工程。部分测试文件为了加快仿真,将计数参数缩小到较小值。 ## 文档 - `DOC/FPGA菁英挑战赛作品报告.docx`:原始作品报告。 - `DOC/FPGA菁英挑战赛作品报告.md`:由 Word 转换得到的 Markdown 版本。 - `DOC/*.pdf`:DHT11、SDRAM、OV5640/SCCB 等外设参考资料。 ## 许可证 本项目使用 Apache License 2.0,详见 `LICENSE`。