?

基于硬件邏輯語言的簡單計時器設計

2023-06-10 09:25闞子楊劉蕭鳴趙鶴煜涂振華孫赫陽姜紹君
電腦知識與技術 2023年12期
關鍵詞:計時器

闞子楊 劉蕭鳴 趙鶴煜 涂振華 孫赫陽 姜紹君

關鍵詞:FPGA;Verilog HDL;Quartus II;計時器

中圖分類號:TP311 文獻標識碼:B

文章編號:1009-3044(2023)12-0089-03

可控計時器在日常生活中有著廣泛的應用,例如交通燈信號控制,競賽倒計時,考試計時器等各個方面,如何快速準確計時,且不出現誤差,就需要通過精確的儀器來計時?;贔PGA的硬件邏輯編程語言實現計時器設計,可以準確地進行30秒的計時功能并顯示,減少人類短時計時的時間誤差。

1 設計

1.1 實現功能

1) 具有30秒計時,顯示功能,計時間隔為1秒。

2) 調整外部開關,控制計時器直接清零,裝數,啟動和保持(暫停)功能。

3) 計時器遞減到0時候顯示器不能滅燈,同時發出報警信號(報警燈亮起)。

4) 能夠解除警報。

5) 引腳說明:

輸入信號:時鐘CPA、直接清零CR、預置LD及減計數使能S。

輸出信號:QH[3..0]、QL[3..0](余3碼)和報警信號L。

1.2 原理

1.2.1 設計基礎

FPGA(Field Programmable Gate Array) ,完整形式是現場可編程邏輯門陣列,是一種電子設備,用于執行任何(數字)邏輯功能或數字電路的硬件實現;是在傳統邏輯電路和門陣列PAL、GAL,CPLD等可編程器件的基礎上進一步發展的產物[1]。FPGA最大的特點是它們是現場可編程的,這意味著它們在制造出來后,可以由客戶根據自己的要求在現場重新編程,優點是可重復編程且低功耗。

Verilog HDL 是一種硬件描述語言,語法與C 接近,但Verilog語言是硬件設計語言,與C實質不同,用于多層次的數字系統建模,代碼對應硬件實體[2]。數字系統能夠按層次描述,并可在相同描述中顯式地進行時序建模。

Quartus,是Altera公司推出的綜合性CPLD/FPGA開發設計軟件,一種可編程邏輯的開發設計環境,軟件支持原理圖、VHDL、Verilong HDL等多種輸入形式,以及自帶仿真器,可以進行波形,原理圖以及頂層文件等設計繪制和仿真,可以完成從設計輸入到硬件配置的完整PLD設計流程。(——引用于百度百科詞條)

DE2_115開發板,核心是FPGA芯片,存儲芯片3 種,IO口配置分別為4個按鈕,18個開關,18個RED- LED,9個GREEN-LED,8個七段數碼管,32字符液晶顯示屏;且含有標準接口:通用串行總線USB控制模塊以及A、B型接口,2個以太網絡適配器,RS-232標準串口,PS/2鍵盤接口;其他:50M晶振,支持外部時鐘,外接IO,1個連接器[3]。

1.2.2 設計原理

系統的核心部分是30秒可控遞減計時器,由外部開關按鍵進行清零(CR) ,直接控制遞減計時器的復位以及解除報警;預置鍵LD=0有效,當可控計時器調至30秒時,輸出信號高四位QH[3..0]和低四位QL[3..0]分別為0110、0011(余3碼),說明可控計時器實現了置數功能;S為啟動和保持(暫停)按鍵,當S=1時用于遞減計時器啟動時,當S=0時用于保持(暫停)[4]。

2 總體設計

總體設計框圖,如圖1所示。

框圖包括10分頻器,30秒可控遞減計時器及報警電路。30秒可控遞減計時器是整個系統的核心部分,S=0時候用于暫?;蛘弑3?,S=1時候正常使用;當輸入清零信號(CR) =1,可以直接控制遞減計時器的復位和接觸報警(L=0) 功能;一個數字系統中往往需要多種頻率的時鐘脈沖作為驅動源,這樣就需要對FPGA的系統時鐘(頻率較高)進行分頻,框圖中的分頻器的功能是為了對多種頻率進行分頻,提高控制精度,減小時間計時誤差。

3 硬件設計

3.1 框圖頂層文件

設計遵循最優解原則,將代碼極簡,輸入,分頻,顯示,控制函數都編程在一個工程文件下,再建立頂層文件放在一個目錄下,畫圖編輯,建立Vector Wave? form file進行實驗仿真[5]??驁D頂層文件,如圖2所示。

3.2 模塊設計

分頻器和30可控遞減計時器模塊主要實現的是數字從30秒開始每秒進行減一的功能,首先撥動CR 清零后,就可以直接啟動分頻已經計時功能,數字將會在30秒遞減,也可以時間暫停和開始等功能。

顯示器模塊主要是顯示30秒的遞減的實現結果,當與之相對應的快關撥動時,可以在顯示器上看到數字的跳動、停止和重置等功能。

筆者在這里選擇使用DE2_115 開發板進行仿真。在DE2_115 開發板上進行仿真,可以更加直觀地觀測實物。其中分頻器使用的是開發板自帶的晶振分頻,數字顯示模塊使用的是兩位八段譯碼管,控制模塊則使用觸發開關,其余功能使用發光二極管表示。

4 仿真

CPA為時鐘定時50MHz,S為啟動暫停,CR為清零,S設置為高電平代表為啟動,整個電路繼續進行CR為高電平跳變觸發,CPA、CPB設置時鐘頻率[5],當暫停、清零以及數字30秒時L為報警電路跳變為高電平,對應的發光二極管開始工作。

為了測試計時器的功能是否正常,我們可以控制S=0或者1,來觀察可控計時器能否正常遞減計數,當計數器遞減至0的時候能否發出報警信號L是否為1。當輸入清零(CR)低電平信號時,直接復位并解除報警,實現功能。

其仿真圖如圖3所示。

通過仿真波形圖可以看出,當30秒可控計時器正常運行時,預置按鍵LD=0有效,當計時器調為30秒時,輸出信號高四位QH[3..0]和低四位QL[3..0]分別為0110、0011(余3碼),即實現置數功能;啟動和保持(暫停)按鍵為S,當S=1高電平的時,用于遞減計(啟動)時,當S=0低電平時用于保持(暫停)[6]。

5 下載驗證

本次使用DE2_115開發板進行下載仿真驗證,各位讀者可以進行參考本次驗證,由于實驗的偶然性,本次實驗不排除有錯誤的情況。

首先使用Quartus||軟件中的Assignments—pins功能為工程圖分配管腳,此處附上管腳分配圖如圖4~圖7所示。

CPA分配表D.4.1時鐘輸入的引腳分配CLOCK_50;S、CP、LD分配表D.1.1觸發丌關引腳分配SW[0]、SW[1]、SW[2];L、CPB分配表D.1.3LED的引腳分配LEDR[0]、LEDR[1];QL[6..0]分配表D.1.9七段數據管的引腳HEX[0-6]; QH[6..0]分配表HEX1[0-6],如圖8所示。

使用USB數據線和電源線連接開發板,再使用軟件的Programmer功能Hardware Setup,將Currently se? lected hardware 搜索USB數據線配置,最后點擊start 進行下載,最后在開發板上進行驗證操作。

演示驗證狀態如下所示:實現了以下功能:

1)具有30秒計時,顯示功能,計時間隔為1秒,如圖9所示。

2)計時器遞減到0時候顯示器不能滅燈,同時發出報警信號(報警燈亮起),如圖10 所示。

3)調整外部開關,控制計時器直接清零,裝數,啟動和保持(暫停)功能,如圖11所示。

6 總結

本文采用了分塊設計的思想設計了簡單計時器,通過對FPGA的了解學習,進一步熟悉和掌握了Quartus II軟件的使用方法,現能夠利用Verilog HDL 語言設計簡單數字電路系統,本文分別設計了分頻模塊,遞減計時模塊,報警模塊,且通過軟件進行波形仿真對比,對結果進行驗證。經過反復修改與驗證后,最終實現了所需功能,使30秒可控計時器能夠正常使用。

猜你喜歡
計時器
松鼠的計時器
基于ARM內核的計時器設計
抗繆勒氏管激素:卵巢功能的計時器!
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合