EDA 數字時鐘

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔

文章目錄

  • 前言
  • 一、數字時鐘是什么?
  • 二、EDA里面數碼管的顯示
    • 1.元件模型
    • 2.參考程序
    • 3. 實驗仿真波形
    • 4.實驗現象
    • 5. 仿真問題
  • 三、顯示時鐘
    • 1. 時鐘電路模塊
    • 2.參考程序
    • 3.仿真波形
    • 4.實驗效果
  • 總結


前言

提示:這里可以添加本文要記錄的大概內容:

前面學習了基本的數字芯片邏輯編程,學會了計數器等,這次來一個做一個綜合應用。數字時鐘,采用數碼管顯示時分秒。


提示:以下是本篇文章正文內容,下面案例可供參考

一、數字時鐘是什么?

數字時鐘是一種以數字顯示取代模擬表盤的鐘表,它能夠以數字的形式顯示當前的時間,并且可以同時顯示時、分、秒。此外,它通常具有對時、分、秒進行準確校準的功能。
示例:能用數碼管顯示 時分秒的時鐘
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

二、EDA里面數碼管的顯示

目標:動態數碼管顯示: 12345678
時間顯示的狀態效:”12.20.30 12-20.30 12-20-30

1.元件模型

代碼如下(示例):

在這里插入圖片描述

2.參考程序

代碼如下(示例):

module seg(clk,seg7,ledcom); 
input clk; // 假設系統提供的時鐘 50Mhz
output[7:0] seg7; //段
output[7:0] ledcom; //位選
reg[7:0] seg7;  //alway 里面賦值要用reg數據
reg[20:0] cnt; 
reg[7:0] ledcom;
always@(posedge clk) 
begin if(cnt==21'b1 1111 1111 1111 1111 1111) // 2的22減一cnt<=0; else cnt<=cnt+1; 
end 
always@(cnt) //給位選
begin case(cnt[16:14])    // 14  15  16   000 ->111   前面13為 滿進位3'b000:ledcom<=8'b00000001;//0   只有一個位選為1 只有第一位數碼管選中并顯示3'b001:ledcom<=8'b00000010;//1 3'b010:ledcom<=8'b00000100;//2 3'b011:ledcom<=8'b00001000;//3 3'b100:ledcom<=8'b00010000;//0 3'b101:ledcom<=8'b00100000;//1 3'b110:ledcom<=8'b01000000;//2 3'b111:ledcom<=8'b10000000;//3 endcase 
end 
always@(cnt) //段碼
begin case(cnt[16:14]) 3'b000:seg7<=8'b00000111;//0  同時給到段碼 ,保證只有 第一個數碼管亮 3'b001:seg7<=8'b11011011;//1 3'b010:seg7<=8'b11001111;//23'b011:seg7<=8'b10100111;//3 3'b100:seg7<=8'b11101101;//0 3'b101:seg7<=8'b11111101;//1 3'b110:seg7<=8'b01000111;//2 3'b111:seg7<=8'b11111111;//3 endcase 
end 
endmodule

為了仿真改小了參數

module seg(clk,seg7,ledcom,cnt,en); 
input en;
input clk; // 假設系統提供的時鐘 50Mhz
output[7:0] seg7; //段
output[7:0] ledcom; //位選
reg[7:0] seg7;  //alway 里面賦值要用reg數據
output reg[8:0] cnt; 
reg[7:0] ledcom;
always@(posedge clk) 
begin if(!en)cnt<=0;elseif(cnt==8'b111111111) // 2的22減一cnt<=0; else cnt<=cnt+1; 
end 
always@(cnt) //給位選
begin case(cnt[7:5])    // 14  15  16   000 ->111   前面13為 滿進位3'b000:ledcom<=8'b00000001;//0   只有一個位選為1 只有第一位數碼管選中并顯示3'b001:ledcom<=8'b00000010;//1 3'b010:ledcom<=8'b00000100;//2 3'b011:ledcom<=8'b00001000;//3 3'b100:ledcom<=8'b00010000;//0 3'b101:ledcom<=8'b00100000;//1 3'b110:ledcom<=8'b01000000;//2 3'b111:ledcom<=8'b10000000;//3 default:ledcom<=8'b10000000;endcase 
end 
always@(cnt) //段碼
begin case(cnt[7:5]) 3'b000:seg7<=8'b00000111;//0  同時給到段碼 ,保證只有 第一個數碼管亮 3'b001:seg7<=8'b11011011;//1 3'b010:seg7<=8'b11001111;//23'b011:seg7<=8'b10100111;//3 3'b100:seg7<=8'b11101101;//0 3'b101:seg7<=8'b11111101;//1 3'b110:seg7<=8'b01000111;//2 3'b111:seg7<=8'b11111111;//3 default:seg7<=8'b11111111;endcase 
end 
endmodule

測試文件


`timescale 1 ps/ 1 ps
module seg_tb3();
// constants                                           
// general purpose registers
reg eachvec;
// test vector input registers
reg clk;
reg en;
// wires                                               
wire [8:0]  cnt;
wire [7:0]  ledcom;
wire [7:0]  seg7;// assign statements (if any)                          
seg i1 (
// port map - connection between master ports and signals/registers   .clk(clk),.cnt(cnt),.en(en),.ledcom(ledcom),.seg7(seg7)
);
initial                                                
begin                                                  
// code that executes only once                        
// insert code here --> begin                          // --> end 
#10 clk= 0;
#100 en=0;
#10 en=1;                                           
$display("Running testbench");                       
end always #10 clk=~clk;                                                   
always                                                 
// optional sensitivity list                           
// @(event1 or event2 or .... eventn)                  
begin                                                  
// code executes for every event on sensitivity list   
// insert code here --> begin                          @eachvec;                                              
// --> end                                             
end                                                    
endmodule

實際仿真測試元件圖

在這里插入圖片描述

3. 實驗仿真波形

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

4.實驗現象

5. 仿真問題

在這里插入圖片描述
在這里插入圖片描述

三、顯示時鐘

1. 時鐘電路模塊

在這里插入圖片描述

2.參考程序

module watch(clk,reset,seg_r,dig_r); 
input clk; 
input reset; 
output[7:0] seg_r; 
output[7:0] dig_r; 
reg[25:0] count; 
reg[15:0] hour; 
reg sec; 
reg[4:0] disp_dat; 
reg[7:0] seg_r; 
reg[7:0] dig_r; 
always @(posedge clk) 
begin count = count + 1'b1; if(count == 26'd25000000)begin count = 26'd0; sec = ~sec; end 
end 
always @(posedge sec) 
begin 
if(reset==0) hour[15:0]=0; else begin hour[3:0] = hour[3:0]+1'b1; if(hour[3:0] == 4'ha) begin hour[3:0] = 4'h0; hour[7:4] = hour[7:4]+1'b1; if(hour[7:4] == 4'h6) begin hour[7:4] = 4'h0; hour[11:8] = hour[11:8] + 1'b1; if(hour[11:8] ==4'ha) begin hour[11:8] = 4'h0; hour[15:12] = hour[15:12] + 1'b1; if(hour[15:12] == 4'h6) hour[15:12] =4'h0; end end end endend 
always @(posedge clk) 
begin case(count[17:15]) 3'd0:disp_dat = hour[3:0]; 3'd1:disp_dat = hour[7:4]; 3'd3:disp_dat = hour[11:8]; 3'd4:disp_dat = hour[15:12]; endcase case(count[17:15]) 3'd0:dig_r = 8'b10000000; 3'd1:dig_r = 8'b01000000; 3'd2:dig_r = 8'b00000000; 3'd3:dig_r = 8'b00010000; 3'd4:dig_r = 8'b00001000; 3'd5:dig_r = 8'b00000000; 3'd6:dig_r = 8'b00000000; 3'd7:dig_r = 8'b00000000; endcase 
end 
always @(posedge clk) 
begin case(disp_dat) 
0:seg_r=8'b01111111; 1:seg_r=8'b00000111; 2:seg_r=8'b11011011; 3:seg_r=8'b11001111; 4:seg_r=8'b10100111; 5:seg_r=8'b11101101;6:seg_r=8'b11111101; 7:seg_r=8'b01000111; 8:seg_r=8'b11111111; 9:seg_r=8'b11101111; 
default:seg_r = 8'hff; endcase 
end 
endmodule

3.仿真波形

4.實驗效果

總結

提示:這里對文章進行總結:

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

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

相關文章

gRPC .net學習

學習helloworld server用.net client有.net的控制臺 和 unity server端 直接使用vs2022創建(需自行看有無裝asp.net哦),搜索gPRC,使用6.0吧&#xff0c;創建工程后直接F5跑起來,服務端到此完成 .net控制臺client,創建新的控制臺,使用NuGet,然后導入server端的Protos文件夾 學…

基于Jedis來探討池化技術

為什么需要池化技術 系統運行時必然是需要數據庫連接、線程等一些重量級對象&#xff0c;頻繁的創建這種對象對性能有著不小的開銷&#xff0c;所以為了減少沒必要的創建和開銷&#xff0c;我們就用到了池化技術。 通過創建一個資源池來保存這些資源便于后續的復用&#xff0c…

【C++初階】七、內存管理(C/C++內存分布、C++內存管理方式、operator new / delete 函數、定位new表達式)

相關代碼gitee自取&#xff1a; C語言學習日記: 加油努力 (gitee.com) 接上期&#xff1a; 【C初階】六、類和對象&#xff08;初始化列表、static成員、友元、內部類&#xff09;-CSDN博客 目錄 一 . C/C內存分布 C/C中程序內存區域劃分&#xff1a; 二 . C內存管理方式 …

16.Java程序設計-基于SSM框架的android餐廳在線點單系統App設計與實現

摘要&#xff1a; 本研究旨在設計并實現一款基于SSM框架的Android餐廳在線點單系統&#xff0c;致力于提升餐廳點餐流程的效率和用戶體驗。通過整合Android移動應用和SSM框架的優勢&#xff0c;該系統涵蓋了用戶管理、菜單瀏覽與點單、訂單管理、支付與結算等多個功能模塊&…

用戶登錄權限

文章目錄 [TOC](文章目錄) 前言一、 Cookie與session1.HTTP無狀態2.cookie 和 session 的生命周期2.1 cookie 生命周期影響因素2.2 session 生命周期影響因素 3.cookie 和 session 的區別4.工作原理3 用戶登錄Node.js和Express驗證session 二、JSON Web Token1. JWT 介紹2. JWT…

C#使用Matrix類對Dicom圖像的放縮

C#使用Matrix類對Dicom圖像的放縮&#xff0c;使用Matrix 1.同時操作水平、垂直同時放縮 // 創建一個 Matrix 對象 Matrix m_Matrix new Matrix();//放縮參數 float inputZoom1.2f; m_Matrix.Scale(inputZoom, inputZoom, MatrixOrder.Append); 2.操作水平&#xff08;X軸…

前端使用插件預覽pdf、docx、xlsx、pptx格式文件

PDF預覽 H5頁面pdf預覽 插件&#xff1a;pdfh5 版本&#xff1a;“pdfh5”: “^1.4.7” npm install pdfh5 import PdfH5 from "pdfh5"; import "pdfh5/css/pdfh5.css";// methods this.$nextTick(() > {this.pdfH5 new PdfH5("#pdf", {pd…

【算法系列篇】遞歸、搜索和回溯(二)

文章目錄 前言1. 兩兩交換鏈表中的節點1.1 題目要求1.2 做題思路1.3 代碼實現 2. Pow(X,N)2.1 題目要求2.2 做題思路2.3 代碼實現 3. 計算布爾二叉樹的值3.1 題目要求3.2 做題思路3.3 代碼實現 4. 求根節點到葉結點數字之和4.1 題目要求4.2 做題思路4.3 代碼實現 前言 前面為大…

計算機畢業設計springboot+ssm停車場車位預約系統java

管理員不可以注冊賬號 停車位包括車位所在樓層、車位編號、車位類型(全時間開放/高峰期開放)、預定狀態等 用戶預約時要求支付預約時間段的停車費用 違規行為&#xff1a;1.停車超過預約時間段 2.預約未使用 于系統的基本要求 &#xff08;1&#xff09;功能要求&am…

6G來襲,真的有必要嗎?

6G來襲&#xff0c;6G標準將在2025年完成制定&#xff0c;2030年商用。當5G都還沒玩明白的時候&#xff0c;6G又來了。 這次6G又提出了三個全新高大上場景&#xff0c;感知通信、人工智能通信、天地一體泛在物聯&#xff0c;精英們還說&#xff0c;未來要連接很多機器人、元宇宙…

PHP基礎 - 循環與條件語句

循環語句 1)for循環: 重復執行一個代碼塊指定的次數。 for ($i = 0; $i < 5; $i++) { // 初始化 $i 為 0,每次循環后將 $i 值增加 1,當 $i 小于 5 時執行循環echo "The number is: $i \n"; // 輸出當前 $i 的值并換行 }// 循環輸出結果為: // The number …

mysql字段設計規范:使用unsigned(無符號的)存儲非負值

如果一個字段存儲的是數值&#xff0c;并且是非負數&#xff0c;要設置為unsigned&#xff08;無符號的&#xff09;。 例如&#xff1a; 備注&#xff1a;對于類型是 FLOAT、 DOUBLE和 DECIMAL的&#xff0c;UNSIGNED屬性已經廢棄了&#xff0c;可能在mysql的未來某個版本去…

mysql分別在windows和linux下的備份策略

嗟乎&#xff01; 一、概述 mysql數據庫該怎么備份呢&#xff1f; 數據庫備份有幾個概念&#xff1a;全量備份、增量備份、差異備份。當然啦&#xff0c;數據庫備份又有冷備份和熱備份&#xff0c;即物理備份和邏輯備份之分。冷備份就是將mysql停了&#xff0c;然后直接拷貝…

Python入門第2篇

pip包管理器 包管理器類似.NET下的nuget&#xff0c;主要用于管理引用依賴項。 安裝Python的時候&#xff0c;已經默認安裝了pip包管理器&#xff0c;因此無需單獨安裝 cmd&#xff0c;輸入&#xff1a;pip --version 顯示pip版本號信息&#xff0c;即代表pip安裝成功&…

前端知識筆記(四十二)———http和https詳細解析

HTTP&#xff08;Hypertext Transfer Protocol&#xff09;是一種用于在計算機網絡中傳輸超文本的協議。它是一個客戶端-服務器協議&#xff0c;用于從 Web 服務器傳輸超文本到本地瀏覽器。HTTP 使用 TCP/IP 協議作為底層傳輸協議&#xff0c;并使用默認端口號80。 HTTPS&…

8-tornado中模板的使用(通過字符串返回、通過模板Template返回、通過模板render返回)、模板案例

1 Template 1.1 通過字符串返回 import tornado class IndexHandler(web.RequestHandler):def get(self):arg Templateself.finish(f<h1>Hello {arg}!!</h1>)1.2 通過模板Template返回 tornado.template 一個簡單的模板系統&#xff0c;將模板編譯為Python代碼。…

c 一,二,三維數組的定義和賦值

1. 定義數組必須指定數組的大小&#xff0c;也就是用多少存儲空間來存儲此數組 2.定義數組必須用數組的標準格式定義&#xff1a;數組名下標的形式 3.只有字符串可以用指針來定義 4.可以把c 中一切數和struct 理解為char 數組 比如int 就是4字節的char數組 #include <…

編程語言的演進歷程與未來發展趨勢

第一代 編程語言的發展歷程起源于早期的機器語言階段&#xff0c;這是一種由二進制代碼構成的計算機能夠直接解讀并執行的語言。然而&#xff0c;鑒于其過于復雜且難以理解&#xff0c;故這一時代的語言并不常為人類所采納。 第二代 緊接著產生的第二代語言旨在簡化編程過程…

1001 害死人不償命的(3n+1)猜想

卡拉茲(Callatz)猜想&#xff1a; 對任何一個正整數 n&#xff0c;如果它是偶數&#xff0c;那么把它砍掉一半&#xff1b;如果它是奇數&#xff0c;那么把 (3n1) 砍掉一半。這樣一直反復砍下去&#xff0c;最后一定在某一步得到 n1。卡拉茲在 1950 年的世界數學家大會上公布了…

C++ //習題2.5 請寫出下列表達式的值。

C程序設計 &#xff08;第三版&#xff09; 譚浩強 習題2.5 習題2.5 請寫出下列表達式的值。 (1) 3.5 * 3 2 * 7 - ‘a’ (2) 26 / 3 34 % 3 2.5 (3) 45 / 2 (int)3.14159 / 2 (4) a b (c a 6) 設a的初值為3 (5) a 3 * 5, a b 3 * 2 (6) (int)(a 6.5) % 2 …