基于FPGA的電子萬年歷系統開發,包含各模塊testbench

目錄

1.課題概述

2.系統仿真結果

3.核心程序與模型

4.系統原理簡介

5.完整工程文件


1.課題概述

基于FPGA的電子萬年歷系統開發,包含各模塊testbench。主要包含以下核心模塊:

時鐘控制模塊:提供系統基準時鐘和計時功能。

日歷計算模塊:處理年月日的計算和閏年判斷。

秒表模塊:實現精確到 0.01 秒的計時功能。

2.系統仿真結果

FPGA仿真測試

? ? ? ?當輸入的i_run信號為1的時候,秒表開始運行,從上面我們可以看到最高位Num6的計數結果,其余幾位由于速度很快,所以被縮小了,看不清楚,當i_set為1的時候,秒表暫停。

???????這個模塊主要是一個以秒為計數單位的計數器,秒計數滿60,分累加1,分計數滿60的時候,小時累加1,小時計數滿24的時候,產生一個時鐘信號,用來確定日期加1。

????????這個模塊主要是一個計數器,當計數器計數到24小時的時候,年月日模塊計數器會自動加1,表示日期往前累積1日。

???????這里我們分兩個小模塊來設計,一個是日月模塊,一個是年模塊,當計數器計數到12月31日的時候,那么年模塊則進一。即年份增加一。

3.核心程序與模型

版本:vivado2022.2

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date:    14:45:46 04/09/2014 
// Design Name: 
// Module Name:    tops 
// Project Name: 
// Target Devices: 
// Tool versions: 
// Description: 
//
// Dependencies: 
//
// Revision: 
// Revision 0.01 - File Created
// Additional Comments: 
//
//
module tops(i_clk,i_rst,i_Function_Controller,i_sel,i_set,i_run,o_Num1,o_Num2,o_Num3,o_Num4,o_Num5,o_Num6,o_Num7,o_Num8);input      i_clk;
input      i_rst;
input[1:0] i_Function_Controller;
input      i_sel;
input      i_set;
input      i_run;
output[3:0]o_Num1;
output[3:0]o_Num2;
output[3:0]o_Num3;
output[3:0]o_Num4;	
output[3:0]o_Num5;
output[3:0]o_Num6;
output[3:0]o_Num7;
output[3:0]o_Num8;	wire Clock_mb;
wire Clock;clock_div clock_div_u(.i_clk    (i_clk), .i_rst    (i_rst), .i_sel    (1'b0), .o_clock1 (Clock_mb), .o_clock2 (Clock));//======================================================================
wire CLK_Year;
wire[3:0]ym_Num1;
wire[3:0]ym_Num2;
wire[3:0]ym_Num3;
wire[3:0]ym_Num4;	
wire[3:0]ym_Num5;
wire[3:0]ym_Num6;
wire[3:0]ym_Num7;
wire[3:0]ym_Num8;
year_month year_month_u(.i_clk  (CLK_Year), .i_rst  (i_rst), .i_sel  (i_sel), .i_set  (i_set), .o_Num1 (ym_Num1), .o_Num2 (ym_Num2), .o_Num3 (ym_Num3), .o_Num4 (ym_Num4), .o_Num5 (ym_Num5), .o_Num6 (ym_Num6), .o_Num7 (ym_Num7), .o_Num8 (ym_Num8));//======================================================================
wire[3:0]tm_Num1;
wire[3:0]tm_Num2;
wire[3:0]tm_Num3;
wire[3:0]tm_Num4;	
wire[3:0]tm_Num5;
wire[3:0]tm_Num6;
wire[3:0]tm_Num7;
wire[3:0]tm_Num8;
times times_u(.i_clk      (Clock), .i_rst      (i_rst), .i_run      (i_run), .i_sel      (i_sel), .i_set      (i_set), .o_Num1     (tm_Num1), .o_Num2     (tm_Num2), .o_Num3     (tm_Num3), .o_Num4     (tm_Num4), .o_Num5     (tm_Num5), .o_Num6     (tm_Num6), .o_CLK_Year (CLK_Year), .CNT        ());assign tm_Num7 = 4'd0;
assign tm_Num8 = 4'd0;//======================================================================
wire[3:0]mb_Num1;
wire[3:0]mb_Num2;
wire[3:0]mb_Num3;
wire[3:0]mb_Num4;	
wire[3:0]mb_Num5;
wire[3:0]mb_Num6;
wire[3:0]mb_Num7;
wire[3:0]mb_Num8;
miaobiao miaobiao_u(.i_clk   (Clock_mb), .i_rst   (i_rst), .i_run   (i_run), .i_pause (i_set), .i_clear (i_sel), .o_Num1  (mb_Num1), .o_Num2  (mb_Num2), .o_Num3  (mb_Num3), .o_Num4  (mb_Num4), .o_Num5  (mb_Num5), .o_Num6  (mb_Num6));
assign mb_Num7 = 4'd0;
assign mb_Num8 = 4'd0;//=====================================================================
reg[3:0]o_Num1;
reg[3:0]o_Num2;
reg[3:0]o_Num3;
reg[3:0]o_Num4;	
reg[3:0]o_Num5;
reg[3:0]o_Num6;
reg[3:0]o_Num7;
reg[3:0]o_Num8;	
always @(posedge i_clk or posedge i_rst)
beginif(i_rst)begino_Num1 <= 4'd0;o_Num2 <= 4'd0;o_Num3 <= 4'd0;o_Num4 <= 4'd0;o_Num5 <= 4'd0;o_Num6 <= 4'd0;o_Num7 <= 4'd0;o_Num8 <= 4'd0;end
else beginif(i_Function_Controller == 2'b00)begino_Num1 <= ym_Num1;o_Num2 <= ym_Num2;o_Num3 <= ym_Num3;o_Num4 <= ym_Num4;o_Num5 <= ym_Num5;o_Num6 <= ym_Num6;o_Num7 <= ym_Num7;o_Num8 <= ym_Num8;endif(i_Function_Controller == 2'b01)begino_Num1 <= tm_Num1;o_Num2 <= tm_Num2;o_Num3 <= tm_Num3;o_Num4 <= tm_Num4;o_Num5 <= tm_Num5;o_Num6 <= tm_Num6;o_Num7 <= tm_Num7;o_Num8 <= tm_Num8;			 endif(i_Function_Controller == 2'b11)begino_Num1 <= mb_Num1;o_Num2 <= mb_Num2;o_Num3 <= mb_Num3;o_Num4 <= mb_Num4;o_Num5 <= mb_Num5;o_Num6 <= mb_Num6;o_Num7 <= mb_Num7;o_Num8 <= mb_Num8;				 end				 end
endendmodule
00X6_004m

4.系統原理簡介

系統頂層框圖如下:

1.該系統的基本功能

時鐘顯示:時、分(24 小時制)

日歷顯示:年、月、日

秒表功能:精確到 0.01 秒,支持開始 / 暫停 / 復位

2.模式切換功能

我們的控制輸入有5個腳,分析功能如下所示:

i_Function_Controller=0;顯示年月日

i_sel:選擇需要調整的某位數字。

i_set:計數器,調整需要調整的位置的數字。

具體調整的時候,首先選擇i_sel,按鍵按一下,需要調整的位置會移動一次,然后移動到需要調整的位置上,然后松開i_sel,然后按下i_set,調整顯示的數字。

i_run:不使用

i_Function_Controller=1;顯示時間,小時,分,秒

i_sel:

i_set:

i_run:

正常工作的時候,上面三個設置分別輸入0,0,1

當需要調整時間的時候,設置i_run=0,然后設置i_sel,選擇對應的需要調整的數字位,然后設置i_set,設置具體的值,其中秒位置,如果設置i_set。那么秒直接清零。

注意,因為時間部分計數到24小時的時候,年月日才被加1,所以在年月日這里i_run不使用,他是靠日期模塊來驅動的。

i_Function_Controller=3;秒表的控制

i_sel:清零

i_set:暫停

i_run:開始秒表計時

5.完整工程文件

v

v

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

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

相關文章

C++ 的 out_ptr 和 inout_ptr

1 問題的起因 1.1 T** 或 T&* ? C 的智能指針可以通過 get() 和 * 的重載得到原始指針 T*&#xff0c;遇到這樣的 C 風格的函數的時候&#xff1a; void Process(Foo *ptr);std::unique_ptr<Foo> sp ...;Process(sp.get()); //調用 Process 函數Process() 函數以…

取消 Conda 默認進入 Base 環境

在安裝 Conda 后&#xff0c;每次打開終端時默認會進入 base 環境。可以通過以下方法取消這一默認設置。 方法一&#xff1a;使用命令行修改配置 在終端中輸入以下命令&#xff0c;將 auto_activate_base 參數設置為 false&#xff1a; conda config --set auto_activate_ba…

數字計數--數位dp

1.不考慮前導零 2.每一位計數&#xff0c;就是有點“數頁碼”的意思 P2602 [ZJOI2010] 數字計數 - 洛谷 相關題目&#xff1a;記得加上前導零 數頁碼--數位dp-CSDN博客 https://blog.csdn.net/2301_80422662/article/details/148160086?spm1011.2124.3001.6209 #include…

Redis學習打卡-Day5-Redis 持久化

單點 Redis 的一些問題 數據丟失&#xff1a;Redis 是內存存儲&#xff0c;服務重啟可能會丟失數據。solution&#xff1a;實現 Redis 數據持久化。并發能力&#xff1a;單節點 Redis 并發能力雖然不錯&#xff0c;但也無法滿足如618這樣的高并發場景。solution&#xff1a;搭…

飛書知識問答深度體驗:企業AI應用落地的典范產品

飛書知識問答深度體驗&#xff1a;企業AI應用落地的典范產品 產品介紹-飛書知識問答是什么與常規通用大模型相比有何優點&#xff1f;大模型橫行的時代&#xff0c;飛書知識問答對普通人和企業有何影響呢&#xff1f; 場景示例-不同角色可以用飛書知識問答做什么&#xff1f;對…

Python打卡訓練營學習記錄Day34

知識點回歸&#xff1a; CPU性能的查看&#xff1a;看架構代際、核心數、線程數 GPU性能的查看&#xff1a;看顯存、看級別、看架構代際 GPU訓練的方法&#xff1a;數據和模型移動到GPU device上 類的call方法&#xff1a;為什么定義前向傳播時可以直接寫作self.fc1(x) CPU性…

Django的請求和響應+template模板

&#x1f31f; 如果這篇文章觸動了你的心弦&#xff0c;請不要吝嗇你的支持&#xff01; 親愛的讀者&#xff0c; 感謝你花時間閱讀這篇分享。希望這里的每一個字都能為你帶來啟發或是讓你會心一笑。如果你覺得這篇文章有價值&#xff0c;或者它解決了你一直以來的一個疑問&a…

Python |GIF 解析與構建(2):狀態機解析

Python &#xff5c;GIF 解析與構建&#xff08;2&#xff09;&#xff1a;狀態機解析 目錄 Python &#xff5c;GIF 解析與構建&#xff08;2&#xff09;&#xff1a;狀態機解析 引言 一、狀態機概述 狀態機的優勢與改進方向 總結 引言 在《Python &#xff5c;GIF 解…

PCB設計實踐(二十六)貼片電容與插件電容的全面解析:差異、演進與應用場景

一、核心差異&#xff1a;結構與性能對比 物理結構與封裝形式 貼片電容&#xff08;Surface Mount Device, SMD&#xff09;采用扁平化設計&#xff0c;外形多為長方體或圓柱體&#xff0c;直接通過焊盤固定在電路板表面。其封裝材料通常為陶瓷、聚合物或鋁電解層&#xff0c;外…

XC7A200T-2FFG1156I FPGA AMD Xilinx Artix-7

XC7A200T-2FFG1156I 是 AMD Xilinx Artix-7 系列的一款高性能低功耗 FPGA&#xff0c;采用 28 nm 高性能低功耗&#xff08;HPL&#xff09;工藝制造&#xff0c;核心電壓在 0.95 V–1.05 V 之間&#xff0c;可在 –40 C 至 100 C 工業溫度范圍內穩定工作 。 邏輯資源&#xff…

LVS + Keepalived + Nginx 高可用負載均衡系統實驗

1. 項目背景 在現代 Web 應用中&#xff0c;高可用性和負載均衡是至關重要的需求。本項目旨在通過 LVS&#xff08;Linux Virtual Server&#xff09;實現流量分發&#xff0c;通過 Keepalived 實現高可用性&#xff0c;通過 Nginx 提供后端服務。該架構能夠確保在單點故障的情…

window 顯示驅動開發-視頻內存供應和回收(一)

Windows 顯示驅動程序模型 (WDDM) 1.2 及更高版本用戶模式顯示驅動程序必須使用內存套餐和回收功能&#xff08;從Windows 8開始提供&#xff09;&#xff0c;以減少本地內存和系統內存中臨時表面所需的內存開銷。 最低 WDDM 版本&#xff1a;1.2 最低 Windows 版本&#xff…

什么是VR場景?VR與3D漫游到底有什么區別

在數字化時代&#xff0c;虛擬現實&#xff08;Virtual Reality, 簡稱VR&#xff09;場景與3D漫游作為兩種前沿技術&#xff0c;改變著人們的生活方式和體驗模式。通過計算機模擬真實或假想的場景&#xff0c;讓用戶仿佛身臨其境&#xff0c;并能與虛擬環境進行互動。盡管VR場景…

JAVA查漏補缺(2)

AJAX 什么是Ajax Ajax&#xff08;Asynchronous Javascript And XML&#xff09;&#xff0c;即是異步的JavaScript和XML&#xff0c;Ajax其實就是瀏覽器與服務器之間的一種異步通信方式 異步的JavaScript 它可以異步地向服務器發送請求&#xff0c;在等待響應的過程中&…

客服中心大模型應用演進路線:從傳統服務到超級智能助手的轉型

客服中心作為企業與客戶溝通的重要橋梁&#xff0c;近年來經歷了從人工服務到人工智能驅動的深刻變革。本文基于"客服中心大模型應用演進路線圖"&#xff0c;詳細解析客服中心從傳統模式向AI驅動智能服務的轉型歷程&#xff0c;剖析每個發展階段的特點、應用場景及關…

使用 OpenCV 實現“隨機鏡面墻”——多鏡片密鋪的哈哈鏡效果

1. 引言 “哈哈鏡”是一種典型的圖像變形效果&#xff0c;通過局部鏡面反射產生扭曲的視覺趣味。在計算機視覺和圖像處理領域&#xff0c;這類效果不僅有趣&#xff0c;還能用于藝術創作、交互裝置、視覺特效等場景。 傳統的“哈哈鏡”往往是針對整張圖像做某種鏡像或扭曲變換…

Python訓練營打卡——DAY33(2025.5.22)

目錄 簡單的神經網絡 一、PyTorch的安裝 二、準備工作 三、數據的準備 四、模型架構定義 五、模型訓練&#xff08;CPU版本&#xff09; 1. 定義損失函數和優化器 2. 開始循環訓練 3. 可視化結果 六、通俗解釋 1. 環境安裝&#xff08;相當于買鍋碗瓢盆&#xff09;…

目標檢測 Lite-DETR(2023)詳細解讀

文章目錄 迭代高級特征跨尺度融合高效的低層次特征跨尺度融合KDA&#xff1a;Key-aware Deformable Attention 論文翻譯&#xff1a; CVPR 2023 | Lite DETR&#xff1a;計算量減少60%&#xff01;高效交錯多尺度編碼器-CSDN博客 DINO團隊的 &#xff08;Lightweight Transfo…

ES(Elasticsearch) 基本概念(一)

Elasticsearch作為當前最流行的開源搜索和分析引擎&#xff0c;廣泛應用于日志分析、全文搜索、業務智能等領域。Elasticsearch是一個基于 Apache Lucene 構建的分布式搜索和分析引擎、可擴展數據存儲和矢量數據庫。它針對生產級工作負載的速度和相關性進行了優化。使用 Elasti…

當物聯網“芯”闖入納米世界:ESP32-S3驅動的原子力顯微鏡能走多遠?

上次咱們把OV2640攝像頭“盤”得明明白白&#xff0c;是不是感覺ESP32-S3這小東西潛力無限&#xff1f;今天&#xff0c;咱們玩個更刺激的&#xff0c;一個聽起來就讓人腎上腺素飆升的挑戰——嘗試用ESP32-S3這顆“智慧芯”&#xff0c;去捅一捅科學界的“馬蜂窩”&#xff0c;…