闞子楊 劉蕭鳴 趙鶴煜 涂振華 孫赫陽(yáng) 姜紹君
關(guān)鍵詞:FPGA;Verilog HDL;Quartus II;計(jì)時(shí)器
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1009-3044(2023)12-0089-03
可控計(jì)時(shí)器在日常生活中有著廣泛的應(yīng)用,例如交通燈信號(hào)控制,競(jìng)賽倒計(jì)時(shí),考試計(jì)時(shí)器等各個(gè)方面,如何快速準(zhǔn)確計(jì)時(shí),且不出現(xiàn)誤差,就需要通過(guò)精確的儀器來(lái)計(jì)時(shí)?;贔PGA的硬件邏輯編程語(yǔ)言實(shí)現(xiàn)計(jì)時(shí)器設(shè)計(jì),可以準(zhǔn)確地進(jìn)行30秒的計(jì)時(shí)功能并顯示,減少人類短時(shí)計(jì)時(shí)的時(shí)間誤差。
1 設(shè)計(jì)
1.1 實(shí)現(xiàn)功能
1) 具有30秒計(jì)時(shí),顯示功能,計(jì)時(shí)間隔為1秒。
2) 調(diào)整外部開關(guān),控制計(jì)時(shí)器直接清零,裝數(shù),啟動(dòng)和保持(暫停)功能。
3) 計(jì)時(shí)器遞減到0時(shí)候顯示器不能滅燈,同時(shí)發(fā)出報(bào)警信號(hào)(報(bào)警燈亮起)。
4) 能夠解除警報(bào)。
5) 引腳說(shuō)明:
輸入信號(hào):時(shí)鐘CPA、直接清零CR、預(yù)置LD及減計(jì)數(shù)使能S。
輸出信號(hào):QH[3..0]、QL[3..0](余3碼)和報(bào)警信號(hào)L。
1.2 原理
1.2.1 設(shè)計(jì)基礎(chǔ)
FPGA(Field Programmable Gate Array) ,完整形式是現(xiàn)場(chǎng)可編程邏輯門陣列,是一種電子設(shè)備,用于執(zhí)行任何(數(shù)字)邏輯功能或數(shù)字電路的硬件實(shí)現(xiàn);是在傳統(tǒng)邏輯電路和門陣列PAL、GAL,CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物[1]。FPGA最大的特點(diǎn)是它們是現(xiàn)場(chǎng)可編程的,這意味著它們?cè)谥圃斐鰜?lái)后,可以由客戶根據(jù)自己的要求在現(xiàn)場(chǎng)重新編程,優(yōu)點(diǎn)是可重復(fù)編程且低功耗。
Verilog HDL 是一種硬件描述語(yǔ)言,語(yǔ)法與C 接近,但Verilog語(yǔ)言是硬件設(shè)計(jì)語(yǔ)言,與C實(shí)質(zhì)不同,用于多層次的數(shù)字系統(tǒng)建模,代碼對(duì)應(yīng)硬件實(shí)體[2]。數(shù)字系統(tǒng)能夠按層次描述,并可在相同描述中顯式地進(jìn)行時(shí)序建模。
Quartus,是Altera公司推出的綜合性CPLD/FPGA開發(fā)設(shè)計(jì)軟件,一種可編程邏輯的開發(fā)設(shè)計(jì)環(huán)境,軟件支持原理圖、VHDL、Verilong HDL等多種輸入形式,以及自帶仿真器,可以進(jìn)行波形,原理圖以及頂層文件等設(shè)計(jì)繪制和仿真,可以完成從設(shè)計(jì)輸入到硬件配置的完整PLD設(shè)計(jì)流程。(——引用于百度百科詞條)
DE2_115開發(fā)板,核心是FPGA芯片,存儲(chǔ)芯片3 種,IO口配置分別為4個(gè)按鈕,18個(gè)開關(guān),18個(gè)RED- LED,9個(gè)GREEN-LED,8個(gè)七段數(shù)碼管,32字符液晶顯示屏;且含有標(biāo)準(zhǔn)接口:通用串行總線USB控制模塊以及A、B型接口,2個(gè)以太網(wǎng)絡(luò)適配器,RS-232標(biāo)準(zhǔn)串口,PS/2鍵盤接口;其他:50M晶振,支持外部時(shí)鐘,外接IO,1個(gè)連接器[3]。
1.2.2 設(shè)計(jì)原理
系統(tǒng)的核心部分是30秒可控遞減計(jì)時(shí)器,由外部開關(guān)按鍵進(jìn)行清零(CR) ,直接控制遞減計(jì)時(shí)器的復(fù)位以及解除報(bào)警;預(yù)置鍵LD=0有效,當(dāng)可控計(jì)時(shí)器調(diào)至30秒時(shí),輸出信號(hào)高四位QH[3..0]和低四位QL[3..0]分別為0110、0011(余3碼),說(shuō)明可控計(jì)時(shí)器實(shí)現(xiàn)了置數(shù)功能;S為啟動(dòng)和保持(暫停)按鍵,當(dāng)S=1時(shí)用于遞減計(jì)時(shí)器啟動(dòng)時(shí),當(dāng)S=0時(shí)用于保持(暫停)[4]。
2 總體設(shè)計(jì)
總體設(shè)計(jì)框圖,如圖1所示。
框圖包括10分頻器,30秒可控遞減計(jì)時(shí)器及報(bào)警電路。30秒可控遞減計(jì)時(shí)器是整個(gè)系統(tǒng)的核心部分,S=0時(shí)候用于暫停或者保持,S=1時(shí)候正常使用;當(dāng)輸入清零信號(hào)(CR) =1,可以直接控制遞減計(jì)時(shí)器的復(fù)位和接觸報(bào)警(L=0) 功能;一個(gè)數(shù)字系統(tǒng)中往往需要多種頻率的時(shí)鐘脈沖作為驅(qū)動(dòng)源,這樣就需要對(duì)FPGA的系統(tǒng)時(shí)鐘(頻率較高)進(jìn)行分頻,框圖中的分頻器的功能是為了對(duì)多種頻率進(jìn)行分頻,提高控制精度,減小時(shí)間計(jì)時(shí)誤差。
3 硬件設(shè)計(jì)
3.1 框圖頂層文件
設(shè)計(jì)遵循最優(yōu)解原則,將代碼極簡(jiǎn),輸入,分頻,顯示,控制函數(shù)都編程在一個(gè)工程文件下,再建立頂層文件放在一個(gè)目錄下,畫圖編輯,建立Vector Wave? form file進(jìn)行實(shí)驗(yàn)仿真[5]??驁D頂層文件,如圖2所示。
3.2 模塊設(shè)計(jì)
分頻器和30可控遞減計(jì)時(shí)器模塊主要實(shí)現(xiàn)的是數(shù)字從30秒開始每秒進(jìn)行減一的功能,首先撥動(dòng)CR 清零后,就可以直接啟動(dòng)分頻已經(jīng)計(jì)時(shí)功能,數(shù)字將會(huì)在30秒遞減,也可以時(shí)間暫停和開始等功能。
顯示器模塊主要是顯示30秒的遞減的實(shí)現(xiàn)結(jié)果,當(dāng)與之相對(duì)應(yīng)的快關(guān)撥動(dòng)時(shí),可以在顯示器上看到數(shù)字的跳動(dòng)、停止和重置等功能。
筆者在這里選擇使用DE2_115 開發(fā)板進(jìn)行仿真。在DE2_115 開發(fā)板上進(jìn)行仿真,可以更加直觀地觀測(cè)實(shí)物。其中分頻器使用的是開發(fā)板自帶的晶振分頻,數(shù)字顯示模塊使用的是兩位八段譯碼管,控制模塊則使用觸發(fā)開關(guān),其余功能使用發(fā)光二極管表示。
4 仿真
CPA為時(shí)鐘定時(shí)50MHz,S為啟動(dòng)暫停,CR為清零,S設(shè)置為高電平代表為啟動(dòng),整個(gè)電路繼續(xù)進(jìn)行CR為高電平跳變觸發(fā),CPA、CPB設(shè)置時(shí)鐘頻率[5],當(dāng)暫停、清零以及數(shù)字30秒時(shí)L為報(bào)警電路跳變?yōu)楦唠娖?,?duì)應(yīng)的發(fā)光二極管開始工作。
為了測(cè)試計(jì)時(shí)器的功能是否正常,我們可以控制S=0或者1,來(lái)觀察可控計(jì)時(shí)器能否正常遞減計(jì)數(shù),當(dāng)計(jì)數(shù)器遞減至0的時(shí)候能否發(fā)出報(bào)警信號(hào)L是否為1。當(dāng)輸入清零(CR)低電平信號(hào)時(shí),直接復(fù)位并解除報(bào)警,實(shí)現(xiàn)功能。
其仿真圖如圖3所示。
通過(guò)仿真波形圖可以看出,當(dāng)30秒可控計(jì)時(shí)器正常運(yùn)行時(shí),預(yù)置按鍵LD=0有效,當(dāng)計(jì)時(shí)器調(diào)為30秒時(shí),輸出信號(hào)高四位QH[3..0]和低四位QL[3..0]分別為0110、0011(余3碼),即實(shí)現(xiàn)置數(shù)功能;啟動(dòng)和保持(暫停)按鍵為S,當(dāng)S=1高電平的時(shí),用于遞減計(jì)(啟動(dòng))時(shí),當(dāng)S=0低電平時(shí)用于保持(暫停)[6]。
5 下載驗(yàn)證
本次使用DE2_115開發(fā)板進(jìn)行下載仿真驗(yàn)證,各位讀者可以進(jìn)行參考本次驗(yàn)證,由于實(shí)驗(yàn)的偶然性,本次實(shí)驗(yàn)不排除有錯(cuò)誤的情況。
首先使用Quartus||軟件中的Assignments—pins功能為工程圖分配管腳,此處附上管腳分配圖如圖4~圖7所示。
CPA分配表D.4.1時(shí)鐘輸入的引腳分配CLOCK_50;S、CP、LD分配表D.1.1觸發(fā)丌關(guān)引腳分配SW[0]、SW[1]、SW[2];L、CPB分配表D.1.3LED的引腳分配LEDR[0]、LEDR[1];QL[6..0]分配表D.1.9七段數(shù)據(jù)管的引腳HEX[0-6]; QH[6..0]分配表HEX1[0-6],如圖8所示。
使用USB數(shù)據(jù)線和電源線連接開發(fā)板,再使用軟件的Programmer功能Hardware Setup,將Currently se? lected hardware 搜索USB數(shù)據(jù)線配置,最后點(diǎn)擊start 進(jìn)行下載,最后在開發(fā)板上進(jìn)行驗(yàn)證操作。
演示驗(yàn)證狀態(tài)如下所示:實(shí)現(xiàn)了以下功能:
1)具有30秒計(jì)時(shí),顯示功能,計(jì)時(shí)間隔為1秒,如圖9所示。
2)計(jì)時(shí)器遞減到0時(shí)候顯示器不能滅燈,同時(shí)發(fā)出報(bào)警信號(hào)(報(bào)警燈亮起),如圖10 所示。
3)調(diào)整外部開關(guān),控制計(jì)時(shí)器直接清零,裝數(shù),啟動(dòng)和保持(暫停)功能,如圖11所示。
6 總結(jié)
本文采用了分塊設(shè)計(jì)的思想設(shè)計(jì)了簡(jiǎn)單計(jì)時(shí)器,通過(guò)對(duì)FPGA的了解學(xué)習(xí),進(jìn)一步熟悉和掌握了Quartus II軟件的使用方法,現(xiàn)能夠利用Verilog HDL 語(yǔ)言設(shè)計(jì)簡(jiǎn)單數(shù)字電路系統(tǒng),本文分別設(shè)計(jì)了分頻模塊,遞減計(jì)時(shí)模塊,報(bào)警模塊,且通過(guò)軟件進(jìn)行波形仿真對(duì)比,對(duì)結(jié)果進(jìn)行驗(yàn)證。經(jīng)過(guò)反復(fù)修改與驗(yàn)證后,最終實(shí)現(xiàn)了所需功能,使30秒可控計(jì)時(shí)器能夠正常使用。