![電子科技大學(xué)數(shù)字式秒表設(shè)計與實現(xiàn)實驗報告_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/1/5350968c-c875-47aa-b9bd-5af2a8ef890b/5350968c-c875-47aa-b9bd-5af2a8ef890b1.gif)
![電子科技大學(xué)數(shù)字式秒表設(shè)計與實現(xiàn)實驗報告_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/1/5350968c-c875-47aa-b9bd-5af2a8ef890b/5350968c-c875-47aa-b9bd-5af2a8ef890b2.gif)
![電子科技大學(xué)數(shù)字式秒表設(shè)計與實現(xiàn)實驗報告_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/1/5350968c-c875-47aa-b9bd-5af2a8ef890b/5350968c-c875-47aa-b9bd-5af2a8ef890b3.gif)
![電子科技大學(xué)數(shù)字式秒表設(shè)計與實現(xiàn)實驗報告_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/1/5350968c-c875-47aa-b9bd-5af2a8ef890b/5350968c-c875-47aa-b9bd-5af2a8ef890b4.gif)
![電子科技大學(xué)數(shù)字式秒表設(shè)計與實現(xiàn)實驗報告_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/1/5350968c-c875-47aa-b9bd-5af2a8ef890b/5350968c-c875-47aa-b9bd-5af2a8ef890b5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、摘要數(shù)字式秒表設(shè)計與實現(xiàn) 指導(dǎo)老師: 姓名:學(xué)號:摘 要 本文主要介紹了基于FPGA使用VHDL語言的數(shù)字式秒表的設(shè)計開發(fā)流程。該設(shè)計以VHDL作為硬件開發(fā)語言,以ISE作為軟件開發(fā)平臺,成功的實現(xiàn)了數(shù)字式秒表的計數(shù)、清零、暫停等功能。并使用了ModelSim仿真軟件對各個單元電路模塊進行了仿真,且完成了綜合布局布線,最終下載到電路板上,實際測試結(jié)果良好。關(guān)鍵字:FPGA,VHDL,數(shù)字目錄數(shù)字式秒表設(shè)計與實現(xiàn)1第一章引言41.1 選題背景41.2 實驗方式41.3 技能培養(yǎng)4第二章基于FPGA的VHDL設(shè)計流程52.1概述52.2VHDL語言介紹52.2.1VHDL的特點52.2.2VHDL
2、開發(fā)流程62.3FPGA開發(fā)介紹82.3.1FPGA簡介82.3.2FPGA開發(fā)流程8第三章 數(shù)字式秒表的軟件開發(fā)環(huán)境103.1開發(fā)環(huán)境103.2ModelSim介紹103.3 ISE介紹11第四章數(shù)字式秒表的設(shè)計與實現(xiàn)124.1任務(wù)要求124.2實驗條件124.3原理框圖134.4各模塊的實現(xiàn)134.4.1分頻器134.4.2輸入控制電路144.4.3計時模塊164.4.4顯示模塊184.5分配引腳和下載實現(xiàn)194.6測試結(jié)果20第五章 結(jié)論21參考文獻22致謝23附錄24附錄1.電子秒表的頂文件24附錄2分頻器28附錄3消抖電路28附錄4 控制電路29附錄5 十進制計數(shù)器30附錄9 鎖存器
3、30附錄10 顯示電路31第一章引言1.1 選題背景電子技術(shù)綜合實驗課程通過引入模擬電子技術(shù)和數(shù)字邏輯設(shè)計的綜合應(yīng)用、基于MCU/FPGA/EDA技術(shù)的系統(tǒng)設(shè)計等綜合型設(shè)計型實驗,對學(xué)生進行電子系統(tǒng)綜合設(shè)計與實踐能力的訓(xùn)練與培養(yǎng)。 通過電子技術(shù)綜合實驗課程的學(xué)習(xí),使學(xué)生對系統(tǒng)設(shè)計原理、主要性能參數(shù)的選擇原則、單元電路和系統(tǒng)電路設(shè)計方法及仿真技術(shù)、測試方法擬定及調(diào)測技術(shù)有所了解;使學(xué)生初步掌握電子技術(shù)中應(yīng)用開發(fā)的一般流程,初步建立起有關(guān)系統(tǒng)設(shè)計的基本概念,掌握其基本設(shè)計方法,為將來從事電子技術(shù)應(yīng)用和研究工作打下基礎(chǔ)。1.2 實驗方式n 教師引導(dǎo)下的自主實驗n 設(shè)計的全過程:方案、電路設(shè)計與仿真、
4、設(shè)計與實現(xiàn)、測試與調(diào)整、總結(jié)報告1.3 技能培養(yǎng)n 數(shù)字電路的綜合設(shè)計應(yīng)用n HDL語言 n FPGA應(yīng)用 n EDA軟件:ISE、Modelsimn 硬件電路制作或設(shè)計,調(diào)整與實現(xiàn)n 設(shè)計文檔撰寫 n 資料查閱第三章 電子秒表的軟件開發(fā)環(huán)境 第二章基于FPGA的VHDL設(shè)計流程第2章2.1 概述數(shù)字秒表是數(shù)字電路中的一個典型應(yīng)用,實際的硬件設(shè)計用到的器件較多,連線比較復(fù)雜,而且會產(chǎn)生比較大的延時,造成測量誤差、可靠性差。秒表的設(shè)計有傳統(tǒng)方法和現(xiàn)代方法,傳統(tǒng)的設(shè)計方法耗時耗功,設(shè)計強度大,且容易出錯,設(shè)計的質(zhì)量不一定是最好的。自然我們考慮到現(xiàn)代方法,即EDA。在EDA設(shè)計工具中,用的最廣泛的是
5、VHDL和VERILOG,當(dāng)然還有其它的。比較VHDL和VERILOG,在頂層設(shè)計方面VHDL優(yōu)于VERILOG,在門級電路設(shè)計方面VERILOG優(yōu)于VHDL。隨著復(fù)雜可編程邏輯器件(CPLD)的廣泛應(yīng)用,以EDA工具作為開發(fā)手段,運用VHDL語言,將使整個系統(tǒng)大大簡化,提高整體的性能和可靠性。本次的數(shù)字式秒表設(shè)計主要是先頂層設(shè)計,將秒表的除了外部輸入部分以外,其余全部在一片F(xiàn)PGA芯片上實現(xiàn),整個系統(tǒng)非常精簡,而且具有靈活的現(xiàn)場可更改性。在不更改硬件電路的基礎(chǔ)上,對系統(tǒng)進行各種改進還可以進一步提高系統(tǒng)的性能。該數(shù)字式秒表具有高速、精確、可靠、抗干擾性強和現(xiàn)場可編程等優(yōu)點。2.2 VHDL語言
6、介紹VHDL語言是一種硬件描述語言(Hardware DescriptionLanguage,HDL),主要用在可編程邏輯器件(CPLDFPGA)和專用集成電路(ASIC)兩個領(lǐng)域。寫好的VHDL程序既可以下載到可編程邏輯器件中實現(xiàn)電路功能,又可以提交到工廠用于ASIC芯片的流片。VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口。VHDL程序結(jié)構(gòu)的特點是將一項工程設(shè)計或設(shè)計實體(可以是元件、電路模塊或系統(tǒng))分成外部和內(nèi)部兩部分,外部即可視部分,對設(shè)計實體和端口引腳進行聲明;內(nèi)部即不可視部分,描述模塊的功能和算法。VHDL從實體與外部的接口以及實體內(nèi)部的功能與結(jié)構(gòu)這兩個方面來描述實體,設(shè)計實
7、體定義成功后就可生成共享功能模塊。在頂層綜合或其他設(shè)計中就可以直接調(diào)用這個實體模塊。這種將設(shè)計實體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計的基本點。2.2.1 VHDL的特點VHDL的特點:具有更強的行為描述能力VHDL的硬件描述能力很強,可以用于從門級、電路級直至系統(tǒng)級的描述、仿真、綜合和調(diào)試,從邏輯功能和行為上描述和設(shè)計大規(guī)模系統(tǒng),避開了具體器件內(nèi)部結(jié)構(gòu)。支持層次化和模塊化設(shè)計這是運用EDA工具進行電路和系統(tǒng)設(shè)計區(qū)別于傳統(tǒng)設(shè)計方法的重要方面,簡化了系統(tǒng)設(shè)計,優(yōu)化了系統(tǒng)結(jié)構(gòu),提高了系統(tǒng)可靠性??煞抡媾c可綜合仿真是指代碼模擬硬件的行為,綜合是指將代碼轉(zhuǎn)化成可物理實現(xiàn)的電路結(jié)構(gòu)。所有的VHDL語句都
8、能用于仿真,但有一部分VHDL語句不能進行綜合、翻譯成與之對應(yīng)的硬件電路,并在邏輯器件上實現(xiàn)。VHDL強大的仿真建模功能使設(shè)計者能在系統(tǒng)設(shè)計的各個階段都能十分方便地對數(shù)字系統(tǒng)進行仿真驗證。系統(tǒng)設(shè)計與硬件結(jié)構(gòu)無關(guān)VHDL語言對設(shè)計的描述具有相對獨立性,設(shè)計者可以進行獨立的設(shè)計,可以不懂硬件的結(jié)構(gòu),也不必了解最終設(shè)計實現(xiàn)的目標(biāo)器件是什么。具有很強的移植能力VHDL語言描述的設(shè)計通用性好,可以被支持VHDL標(biāo)準(zhǔn)的不同工具所支持,具有很強的移植能力。VHDL本身的生命周期長。VHDL的硬件描述與工藝無關(guān),不會因工藝變化而過時,而且與工藝技術(shù)有關(guān)的參數(shù)可以用VHDL提供的屬性加以描述,當(dāng)生產(chǎn)工藝改變時,
9、只需修改程序中相應(yīng)屬性參數(shù)即可。VHDL語言具有強大的語言功能、硬件描述能力和移植能力及設(shè)計與器件無關(guān)的特性,并且VHDL語言程序易于共享和復(fù)用,因此得到了十分廣泛的應(yīng)用。2.2.2 VHDL開發(fā)流程采用VHDL語言對硬件電路進行描述的過程應(yīng)該遵循一定的流程,通常情況下,其流程如圖2.2.2-1所示。圖2.2.2-1 VHDL設(shè)計電路從流程圖可以看出,采用VHDL語言進行硬件電路設(shè)計的開發(fā)步驟主要包括以下幾步:接受電路設(shè)計任務(wù)在進行硬件電路系統(tǒng)設(shè)計之前,首先作出總體設(shè)計方案,然后給出相應(yīng)的硬件電路系統(tǒng)設(shè)計指標(biāo),最后將總體方案中各部分電路設(shè)計任務(wù)和要求下達給相應(yīng)的設(shè)計部門。確定電路具體功能設(shè)計人
10、員要具體分析電路的設(shè)計要求,確定其要實現(xiàn)的具體功能。劃分模塊、編寫程序利用VHDL語言設(shè)計硬件電路通常采用自頂向下的設(shè)計方法,從電路設(shè)計的總體要求出發(fā),先確定頂層模塊并進行頂層模塊的設(shè)計,然后將頂層模塊劃分為不同的完成一定邏輯功能的子功能模塊,最后再詳細設(shè)計子功能模塊。模塊劃分的好壞將會直接影響到最終的電路設(shè)計,設(shè)計人員在這一步應(yīng)該花費一定的時間,保證模塊劃分的最優(yōu)化。VHDL語言程序模擬VHDL語言程序模擬即功能仿真,是利用仿真軟件對設(shè)計的邏輯功能進行驗證,可以在設(shè)計的早期發(fā)現(xiàn)電路設(shè)計上的缺陷和錯誤,節(jié)省設(shè)計時間、縮短開發(fā)周期。綜合、優(yōu)化和布局布線綜合的作用簡單的說就將電路設(shè)計的較高級抽象層
11、次的VHDL語言描述轉(zhuǎn)化成底層電路表示。優(yōu)化的作用是將電路設(shè)計的時延縮到最小和有效利用資源。布局布線的作用是將通過綜合和優(yōu)化所得到的邏輯規(guī)劃到一個邏輯器件的邏輯結(jié)構(gòu)中,然后將各邏輯單元放置到相應(yīng)優(yōu)化的位置,最后再進行邏輯單元之間、邏輯單元和IO之間的布線,以消除布線延遲。布局布線后的程序模擬布局布線后的程序模擬又稱后仿真,既驗證設(shè)計的邏輯功能,又驗證時序。如果時序不能滿足要求,就需要回到前面的步驟重新進行操作。生成器件編程文件和進行器件編程顧名思義,器件編程是針對可編程邏輯器件進行的操作,具體過程是:將設(shè)計描述經(jīng)過編譯、綜合、優(yōu)化和布局布線的結(jié)果,經(jīng)過一定的映射轉(zhuǎn)化成一個器件編程所用的數(shù)據(jù)文件
12、格式,然后通過燒片器或者下載電纜將數(shù)據(jù)文件下載到指定的可編程邏輯器件中去的過程。2.3 FPGA開發(fā)介紹2.3.1 FPGA簡介FPGA是20世紀(jì)90年代發(fā)展起來的,其密度已超過25X 104 f-JA平,內(nèi)部門延時小于3ns。這種器件完成某種特定的功能是完全由用戶通過軟件進行配置和編程來實現(xiàn)的,而且可以反復(fù)擦寫,它具有芯片邏輯資源豐富、成本低、功耗小等優(yōu)勢。此外,它的另一個突出特點是現(xiàn)場編程,在FPGA工作的現(xiàn)場,可以不通過計算機把存于FPGA外的ROM中的編程數(shù)據(jù)加載給FPGA,通過簡單的設(shè)備就能改變FPGA中的編程數(shù)據(jù),從而改變FPGA執(zhí)行的邏輯功能。這種方法也叫做ICR(ha Circ
13、uit Reconfiguration,在電路上直接配置)編程。FPGA的這個特點為工程技術(shù)人員維修、改進、更新電路邏輯功能提供了方便。大部分FPGA采用基于SRAM的查找表(LUT,LookUpTable)結(jié)構(gòu)。查找表本質(zhì)上就是一個RAM。若邏輯函數(shù)具有11個輸入項的話,就需要由輸入個數(shù)為n、容量為2n個位的RAM單元存放函數(shù)值,RAM的地址線起輸入線的作用,地址即輸入變量,RAM輸出為邏輯函數(shù)值。每輸入一個信號進行邏輯運算就等于輸入一個地址進行查表,地址所對應(yīng)的內(nèi)容就是輸出。2.3.2 FPGA開發(fā)流程圖2.3.2-1 FPGA開發(fā)流程對于目標(biāo)器件為FPGA和CPLD的HDL設(shè)計,其工程設(shè)
14、計的基本流程如圖圖2.3.2-1所示?,F(xiàn)具體說明如下:1、文本編輯:用任何文本編輯器都可以進行,也可以用專用的HDL編輯環(huán)境。通常VHDL文件保存為.vhd文件2、功能仿真:將文件調(diào)入HDL仿真軟件進行功能仿真,檢查邏輯功能是否正確(也叫前仿真,對簡單的設(shè)計可以跳過這一步,只在布線完成以后,進行時序仿真)3、邏輯綜合:將源文件調(diào)入邏輯綜合軟件進行綜合,即把語言綜合成最簡的布爾表達式。邏輯綜合軟件會生成.edf(edif)的EDA工業(yè)標(biāo)準(zhǔn)文件。4、布局布線:將.edf文件調(diào)入PLD廠家提供的軟件中進行布線,即把設(shè)計好的邏輯安放到PLD/FPGA內(nèi)。5、時序仿真:需要利用在布局布線中獲得的精確參數(shù)
15、,用仿真軟件驗證電路的時序。(也叫后仿真)6、編程下載:確認仿真無誤后,將文件下載到芯片中7、硬件測試:硬件測試的目的是為了在更真實的環(huán)境中檢驗HDL設(shè)計的運行情況,特別是對于HDL程序設(shè)計上不是十分規(guī)范,語義上含有一定歧義的程序。第三章 數(shù)字式秒表的軟件開發(fā)環(huán)境本章主要介紹項目中將要用到了一系列軟件,包括用于VHDL語言編寫和編譯的ISE軟件和用于程序仿真的仿真軟件ModelSim。3.1開發(fā)環(huán)境在考慮各種情況后,在本次設(shè)計中,由于選擇的FPGA芯片是由Xilinx公司生產(chǎn)的,所以我們主要使用ModelSim和ISE軟件進行仿真和綜合。3.2ModelSim介紹ModelSim是業(yè)界最優(yōu)秀的
16、HDL語言仿真器,它提供最友好的調(diào)試環(huán)境,是唯一的單內(nèi)核支持VHDL和Verilog混合仿真的仿真器。是作FPGAASIC設(shè)計的RTL級和門級電路仿真的首選,它采用直接優(yōu)化的編譯技術(shù)、TcFTk技術(shù)、單一內(nèi)核仿真技術(shù),編譯仿真速度快,編譯的代碼與平臺無關(guān),便于保護IP核,個性化的圖形界面和用戶接口,為用戶加快調(diào)錯提供強有力的手段。全面支持VHDL和Verilog語言的IEEE標(biāo)準(zhǔn),支持CC+功能調(diào)用和調(diào)試。ModelSim專業(yè)版,具有快速的仿真性能和最先進的調(diào)試能力,全面支持UNIX(包括64位)、Linux和Windows平臺。主要特點:RTL和門級優(yōu)化,本地編譯結(jié)構(gòu),編譯仿真速度快;單內(nèi)核
17、VHDL和Verilog混合仿真;源代碼模版和助手,項目管理;集成了性能分析、波形比較、代碼覆蓋等功能;數(shù)據(jù)流ChaseX;Signal Spy;C和TclTk接121,C調(diào)試。是業(yè)界唯一單一內(nèi)核支持VHDL、Verilog HDL和SystemC混合仿真的仿真器。同時也支持業(yè)界最廣泛的標(biāo)準(zhǔn)如Verilog 2001、SystemVerilog等,內(nèi)部集成了用于CC+,PLIFLI和SystemC的集成C調(diào)試器。支持眾多的ASIC和FPGA廠家?guī)?,可以用于FPGA和ASIC設(shè)計的RTL級和門級電路仿真。ModelSiml8J最大的特點是其強大的調(diào)試功能:先進的數(shù)據(jù)流窗121,可以迅速追蹤到產(chǎn)生
18、不定或者錯誤狀態(tài)的原因;性能分析工具幫助分析性能瓶頸,加速仿真;代碼覆蓋率檢查確保測試的完備;多種模式的波形比較功能;先進的Signal Spy功能,可以方便地訪問VHDL或者VHDL和Verilog混合設(shè)計中的底層信號;支持加密IP;可以實現(xiàn)與Matlab的Simulink的聯(lián)合仿真。ModelSim分幾種不同的版本:SE、PE、LE和OEM,其中SE是最高級的版本而集成在Actel、Atmel、Altera、Xilinx以及Lattice等FPGA廠商設(shè)計工具中的均是其OEM版本。SE版和OEM版在功能和性能方面有較大差別,比如對于大家都關(guān)心的仿真速度問題,以Xilinx公司提供的OEM版
19、本ModelSim XE為例,對于代碼少于40000行的設(shè)計,ModelSim SE比ModelSim XE要快10倍;對于代碼超過40000行的設(shè)計,ModelSim SE要比ModelSimXE快近40倍。3.3 ISE介紹ISEt是Xilinx公司提供的集成化FPGA開發(fā)軟件,它的主要功能包括設(shè)計輸入、綜合、仿真、實現(xiàn)和下載。(1)設(shè)計輸入ISE軟件提供的設(shè)計輸入工具包括用于HDL代碼輸入和報告查看的ISE文本編輯器(TextEditor),用于原理圖編輯的工具ECS(Engineering CaptureSystem),用于P CORE的COREGenerator,用于狀態(tài)機設(shè)計的St
20、ateCAD,以及用于約束文件編輯的Constraint Editor等。(2)綜合ISE的綜合工具不但包括了Xilinx自身提供的綜合工具xsr,同時還可以集成MentorGraphics公司的LeonardoSpectrum和Synplicity公司的Synplify。(3)仿真ISE本身自帶了圖形化波形編輯功能的仿真工具HDL Bencher,同時又提供了使用ModelTechnology公司的ModelSim進行仿真的接口。(4)實現(xiàn)ISE的實現(xiàn)功能包括了翻譯(Translate)、映射(Map)、布局布線(Place andRoute)等。(5)下載下載功能包括了BitGen,用于將
21、布局布線后的設(shè)計文件轉(zhuǎn)換為比特流(Bitstream)文件。還包括了iMPACT功能,用于進行設(shè)備配置和通信,控制將程序燒寫到FPGA芯片中去。使用ISE進行FPGA開發(fā)大致可以分為3個步驟。(1)設(shè)計輸入和仿真設(shè)計輸入(Design Entry)是指以HDL代碼、原理圖、波形圖以及狀態(tài)機的形式輸入設(shè)汁源文件,而設(shè)計仿真(Simdmion)是指通過仿真工具對設(shè)計的整體模塊或局部模塊進行仿真來檢驗設(shè)計的功能和性能。(2)用戶約束條件、綜合和實現(xiàn)用戶約束條件(User Constraints)的作用是對綜合、實現(xiàn)過程進行控制,滿足速度、面積、引腳位置等需求。編輯約束條件又包括了4個子項,意義分別為
22、:創(chuàng)建時間約束、配置引腳、創(chuàng)建面積約束、以文本方式編輯約束。綜合(Synthesize)是FPGA設(shè)計流程中的重要環(huán)節(jié),綜合結(jié)果的優(yōu)劣直接影響到設(shè)計的最終性能。ISE自帶的綜合工具是XST,同時它也支持SynplifySynplify Pro等第三方綜合工具,但是由于Xilinx對于其器件的底層最為了解,所以使用XST綜合往往會得到比較滿意的結(jié)果。綜合包含了3個子項,意義分別為:查看綜合報告、查看綜合器件的RTL級原理圖和檢查語法。實現(xiàn)(Implementation)過程也包含了3個子項,ImplementDesign項所對應(yīng)的子項,意義分別是:翻譯、映射和布局布線。需要注意,進行實現(xiàn)步驟之前
23、必須進行約束條件的編輯,否則實現(xiàn)可能會出錯。(3)硬件編程硬件編程(Programming)是指生成編輯比特流文件bit,并將其下載到FPGA芯片內(nèi)部的過程。硬件編程對應(yīng)圖2-5所示的Generate Programming File項。第四章 電子秒表的設(shè)計與實現(xiàn) 第四章數(shù)字式秒表的設(shè)計與實現(xiàn)344.1 任務(wù)要求4.2 實驗條件4.3 原理框圖按照以上需求,整個電路的原理圖如圖4.3-1所示:圖4.3-1 電路原理圖從原理圖可知,系統(tǒng)需要以下模塊:1.分頻器:對晶體振蕩器產(chǎn)生的時鐘進行分頻,產(chǎn)生時間基準(zhǔn)信號。2.計數(shù)器:對時間基準(zhǔn)脈沖進行計數(shù),完成計時功能。3.數(shù)據(jù)鎖存器:鎖存數(shù)據(jù),使顯示保
24、持暫停。4.控制器:控制計數(shù)器的運行、停止以及復(fù)位,產(chǎn)生鎖存器的使能信號。5.掃描顯示的控制電路:包括掃描計數(shù)器、數(shù)據(jù)選擇器和七段譯碼器,控制8個數(shù)碼管以掃描方式,顯示結(jié)果。6.按鍵消抖電路:消除按鍵輸入信號,輸出單脈沖。4.4 各模塊的實現(xiàn)4.4.1 分頻器XC3S200A芯片的外部有源晶振頻率為48MHz,考慮到系統(tǒng)的穩(wěn)定性,本設(shè)計選擇了1KHz的信號作為各模塊的時鐘信號,即對晶振信號進行1/480000分頻。 對晶振時鐘信號進行計數(shù),對每個上升沿,計數(shù)器加1;當(dāng)計數(shù)達到47999時,計數(shù)清零,從頭開始計數(shù),最后獲取計數(shù)的第15位為計數(shù)的輸出信號仿真結(jié)果如圖4.4.1.2-1所示,時鐘周期
25、為48000。圖4.4.1.2-1 1KHZ信號仿真圖4.4.2 輸入控制電路輸入控制模塊的功能是識別有效地按鍵輸入和實現(xiàn)輸入的按鍵信號對電子秒表不同狀態(tài)的控制。,秒表的狀態(tài)可分為計數(shù)開/關(guān),顯示鎖定開/關(guān)和清零??嫉接袃蓚€輸入按鍵,所以必須有輸入控制電路,同時考慮到按下按鍵以及松開按鍵會出現(xiàn)抖動,所以必須設(shè)計防抖動電路。即按鍵輸入信號,必須先經(jīng)過防抖電路,然后進入控制電路。4.4.2.1 消抖電路由于按鍵輸入,在按下過程中電平可能會有一個不確定的抖動狀態(tài)。由于識別的有效按鍵電平為持續(xù)的低電平,因此設(shè)計一消抖電路,頂層設(shè)計框圖如下:消抖電路的仿真結(jié)果如下所示:由圖可見在1khz的驅(qū)動下,消抖電
26、路能夠做到每按一次按鍵只輸出一個時鐘周期,達到了按鍵消抖的目的。在實際板子上應(yīng)用的時候,也還要根據(jù)按鍵實際情況來調(diào)整一下計數(shù)的周期,從而達到最佳的效果。4.4.2.2 控制電路圖4.4.2.2-1 控制電路狀態(tài)圖兩個去抖動電路傳入兩個信號,將其組合成一個2bit輸入(Start/Stop為高位,Split/Reset為低位),分別代表4個狀態(tài):“00”狀態(tài):鎖定關(guān),計數(shù)關(guān),清零關(guān),輸出“111”;“10”狀態(tài):鎖定關(guān),計數(shù)開,清零關(guān),輸出“101”;“11”狀態(tài):鎖定開,計數(shù)開,清零關(guān),輸出“001”;“01”狀態(tài):鎖定關(guān),計數(shù)關(guān),清零開,輸出“110”;處在“01”狀態(tài)時,過一個時鐘周期自動
27、回到“00”狀態(tài)。狀態(tài)圖如圖4.4.2.2-1所示。源程序為見附錄。仿真結(jié)果如圖4.4.2.2-2所示,圖4.4.2.2-2 控制電路仿真4.4.3 計時模塊由設(shè)計指標(biāo)可知,秒表由六位顯示最大計時為59min59s99,所以需要4個10進制計數(shù)器,還有兩個6進制計數(shù)器。其中有暫定,清零的功能。整個計時模塊的頂層設(shè)計電路圖如下:4.4.3.1 十進制計數(shù)器計數(shù)器輸入端每識別一個上升沿,就依次從“0000”計數(shù)到“1001”。當(dāng)計數(shù)變?yōu)椤?001”時,進位端從1變?yōu)?,在下個輸入的上升沿“1001”變?yōu)椤?000”,進位端恢復(fù)1。如此,將進位端連入下一級的輸入端時,可以實現(xiàn)低位由9變?yōu)?時高位進1
28、。當(dāng)清零信號有效時,計數(shù)器強制將計數(shù)值變?yōu)椤?000”。源程序為見附錄. 圖4.4.3.1-1 十進制計數(shù)器仿真圖如圖4.4.3.1-1所示,計數(shù)周期為10。4.4.3.2 六進制計數(shù)器 六進制計數(shù)范圍是“0000”到“0110”,在“0110”時進位端發(fā)生變低,之后計數(shù)變?yōu)椤?000”,進位端恢復(fù)高電平。對于六進制來說,三個二進制位就能夠滿足計數(shù)需要,但是考慮到后面譯碼器的輸入均為四個二進制位,所以計數(shù)用4bit,方便譯碼。源程序為見附錄。圖4.4.3.2-1 六進制計數(shù)器仿真圖 如圖4.4.3.2-1所示,計數(shù)周期為6。4.4.3.3 計數(shù)器組合 由于顯示的最大計數(shù)為59min59s99,
29、所以需要四位十進制計數(shù)器,以及二位六進制計數(shù)器。所以需要將六個計數(shù)器組合起來,由低位計數(shù)達到最大值,向前一位進1;由于輸入的是1khz信號,這里用另外用了一個模10計數(shù)器將1khz信號分頻到100hz,最后組合的電路模塊連接圖如下:圖4.4.3.3-1 計數(shù)器組合仿真圖4.4.3.4 鎖存器鎖存器實現(xiàn)電子秒表的顯示鎖定功能。其輸入時鐘為外部時鐘(1kHz)。當(dāng)鎖定信號無效時,在每個時鐘上升沿將輸入的數(shù)據(jù)信號輸出;當(dāng)鎖定信號有效時,輸出的數(shù)據(jù)信號保持當(dāng)前值,無視輸入數(shù)據(jù)的改變,源程序見附錄。圖4.4.3.4-1 鎖存器仿真圖放著結(jié)果如圖4.4.3.4-1所示,當(dāng)輸入信號為高電平時,輸出和輸入信號
30、相同;當(dāng)輸入信號為低電平時,輸出信號保持當(dāng)前值。4.4.4 顯示模塊顯示模塊主要完成顯示掃描和編碼翻譯的功能。其中需要用到掃描器,多路選擇器和譯碼器, 時鐘信號連接一個掃描器,用計數(shù)原理輸出3bit掃描信號。利用3-8譯碼器的原理,實現(xiàn)對八位數(shù)碼管的掃描,輸出位選信號;另一方面根據(jù)相應(yīng)的位選信號,將要現(xiàn)實的bacd碼轉(zhuǎn)換成數(shù)碼管的七段顯示碼輸出,整個顯示模塊的頂層電路圖如下:4.4.4.1 掃描器掃描器實現(xiàn)了八位數(shù)碼管共用一組輸入數(shù)據(jù)的可能性。其通過一個計數(shù)器,在每個時鐘信號的上升沿,其輸出的三位二進制信號加一,從“000”計數(shù)到“111”。當(dāng)輸出為“111”時,下一個時鐘上升沿輸出變?yōu)椤?0
31、0”,關(guān)鍵的程序代碼如下:weixuan_code <= weixuan_code+1 when clk'event and clk='1'圖4.4.4.1-1 掃描器仿真圖 掃描器仿真圖如圖4.4.4.1-1所示,掃描器根據(jù)時鐘信號從“000” 計數(shù)到“111”。4.4.4.2 多路選擇器多路選擇器輸入八組四位數(shù)據(jù)信號和一組三位掃描信號,通過掃描信號的狀態(tài)選擇相應(yīng)的數(shù)據(jù)信號進行輸出源程序,源程序見附錄。圖4.4.4.2-1 多路選擇器仿真圖多路選擇器放著結(jié)果如圖4.4.4.2-1所示,多路選擇器根據(jù)掃描信號的輸入選擇相應(yīng)的信號輸出。4.5 分配引腳和下載實現(xiàn) 全
32、部仿真通過后,就運行ISE的設(shè)計實現(xiàn),然后再打開XILINX PACE,在里面分配引腳,即實現(xiàn)設(shè)計的輸入輸出端口與實際芯片的輸入輸出端口的對應(yīng)連接。比如七段LED管的控制信號就連接到實際電路的七個引腳。需要注意的是一些端口是固定的,不能胡亂的連接。比如時基信號即石英振蕩器所提供的信號就只能由T8輸入。一切都準(zhǔn)備就緒后就,便可開始下載了.分配引腳的源文件如下:NET "clk_raw" LOC = N9;NET "duanxuan<7>" LOC = B12;NET "duanxuan<6>" LOC = A11
33、;NET "duanxuan<5>" LOC = C11;NET "duanxuan<4>" LOC = C10;NET "duanxuan<3>" LOC = A10;NET "duanxuan<2>" LOC = B10;NET "duanxuan<1>" LOC = A9;NET "duanxuan<0>" LOC = C9;NET "split_reset" LOC = F4;
34、NET "start_stop" LOC = G5;NET "weixuan<0>" LOC = N13;NET "weixuan<1>" LOC = M13;NET "weixuan<2>" LOC = L13;NET "weixuan<3>" LOC = K13;NET "weixuan<4>" LOC = J13;NET "weixuan<5>" LOC = J12;NET &q
35、uot;weixuan<6>" LOC = H13;NET "weixuan<7>" LOC = G13;4.6 測試結(jié)果這個電路完成后的最頂層模塊電路圖如下:在成功下載并運行后,進行了各按鈕功能的檢測(包括計數(shù)、暫停、復(fù)位、清零等功能的檢查),以及與標(biāo)準(zhǔn)時間進行了對比,符合實驗預(yù)估的各項指標(biāo),成功完成了數(shù)字式秒表的設(shè)計與實現(xiàn)。第五章 結(jié)論 第五章 結(jié)論本文主要介紹了利用VHDL語言完成基于FPGA的數(shù)字秒表的設(shè)計與實現(xiàn)。詳細介紹了設(shè)計原理,設(shè)計方案以及各模塊的設(shè)計過程及其實現(xiàn)的功能,并利用ISE和ModelSim對設(shè)計進行了仿真,分析,綜
36、合,并最終下載實際電路板中,成功實現(xiàn)了數(shù)字式秒表的所有功能。致謝 參考文獻1 朱正偉EDA技術(shù)及應(yīng)用清華大學(xué)出版社20092 ISE開發(fā)流程3 Modelsim仿真流程致謝首先必須感謝的是劉曦老師對我的教導(dǎo),在實驗過程中對我的幫助,在此對劉曦老師致于最衷心的感謝。其次感謝我的同學(xué)們,在我遇到問題時,能給我分析以及解決。最后感謝電子技術(shù)綜合實驗這門課程,讓我從中學(xué)到了很多的東西。附錄 附錄附錄1.電子秒表的頂文件- Company: - Engineer: - - Create Date: 11:03:09 11/18/2015 - Design Name: - Module Name: my_
37、watch - Behavioral - Project Name: - Target Devices: - Tool versions: - Description: - Dependencies: - Revision: - Revision 0.01 - File Created- Additional Comments: -# OBUF : 16-=-Device utilization summary:-Selected Device : 3s200aft256-5 - Number of Slices: 61 out of 1792 3% - Number of Slice Fli
38、p Flops: 79 out of 3584 2% - Number of 4 input LUTs: 109 out of 3584 3% - Number of IOs: 19- Number of bonded IOBs: 19 out of 195 9% - Number of GCLKs: 3 out of 24 12% -library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following lib
39、rary declaration if instantiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity my_watch isport(clk_raw,start_stop,split_reset:in std_logic;weixuan:out std_logic_vector(7 downto 0);duanxuan:out std_logic_vector(7 downto 0);end my_watch;architecture Behavioral
40、 of my_watch isCOMPONENT fenpin PORT(clk_raw : IN std_logic; clk_1kh : OUT std_logic);END COMPONENT;COMPONENT douxiaoPORT(clk : IN std_logic;key_in : IN std_logic; key_out : OUT std_logic);END COMPONENT;COMPONENT counterPORT(clk : IN std_logic;rst : IN std_logic;count_en : IN std_logic; seg1 : OUT s
41、td_logic_vector(3 downto 0);seg2 : OUT std_logic_vector(3 downto 0);seg3 : OUT std_logic_vector(3 downto 0);seg4 : OUT std_logic_vector(3 downto 0);seg5 : OUT std_logic_vector(3 downto 0);seg6 : OUT std_logic_vector(3 downto 0);END COMPONENT;COMPONENT controlPORT(clk : IN std_logic;start_stop : IN s
42、td_logic;reset_split : IN std_logic; reset : OUT std_logic;counter_en : OUT std_logic;latch_en : OUT std_logic);END COMPONENT;COMPONENT latchPORT(latch_en : IN std_logic;cin1 : IN std_logic_vector(3 downto 0);cin2 : IN std_logic_vector(3 downto 0);cin3 : IN std_logic_vector(3 downto 0);cin4 : IN std
43、_logic_vector(3 downto 0);cin5 : IN std_logic_vector(3 downto 0);cin6 : IN std_logic_vector(3 downto 0); cout1 : OUT std_logic_vector(3 downto 0);cout2 : OUT std_logic_vector(3 downto 0);cout3 : OUT std_logic_vector(3 downto 0);cout4 : OUT std_logic_vector(3 downto 0);cout5 : OUT std_logic_vector(3
44、downto 0);cout6 : OUT std_logic_vector(3 downto 0);END COMPONENT;COMPONENT displayPORT(clk : IN std_logic;cin1 : IN std_logic_vector(3 downto 0);cin2 : IN std_logic_vector(3 downto 0);cin3 : IN std_logic_vector(3 downto 0);cin4 : IN std_logic_vector(3 downto 0);cin5 : IN std_logic_vector(3 downto 0)
45、;cin6 : IN std_logic_vector(3 downto 0); seg : OUT std_logic_vector(7 downto 0);weixuan : OUT std_logic_vector(7 downto 0);END COMPONENT;signal clk_1kh,net_start,net_split,net_reset,net_counter_en,net_latch_en :std_logic;signal net_seg1,net_seg2,net_seg3,net_seg4,net_seg5,net_seg6:std_logic_vector(3
46、 downto 0);signal net_out1,net_out2,net_out3,net_out4,net_out5,net_out6:std_logic_vector(3 downto 0);beginu0: fenpin PORT MAP(clk_raw =>clk_raw ,clk_1kh =>clk_1kh );u2: douxiao PORT MAP(clk =>clk_1kh,key_in =>start_stop ,key_out =>net_start );u3: douxiao PORT MAP(clk =>clk_1kh ,key
47、_in =>split_reset ,key_out =>net_split );u4_control: control PORT MAP(clk =>clk_1kh,start_stop =>net_start ,reset_split => net_split,reset => net_reset,counter_en =>net_counter_en ,latch_en =>net_latch_en );u5: counter PORT MAP(clk => clk_1kh,rst =>net_reset ,count_en =
48、>net_counter_en ,seg1 =>net_seg1,seg2 =>net_seg2,seg3 =>net_seg3,seg4 =>net_seg4,seg5 =>net_seg5,seg6 =>net_seg6 );u6: latch PORT MAP(latch_en => net_latch_en,cin1 => net_seg1,cin2 => net_seg2,cin3 => net_seg3,cin4 => net_seg4,cin5 => net_seg5,cin6 => net_se
49、g6,cout1 => net_out1,cout2 => net_out2,cout3 => net_out3,cout4 => net_out4,cout5 => net_out5,cout6 => net_out6);u7: display PORT MAP(clk => clk_1kh,cin1 => net_out1,cin2 => net_out2,cin3 => net_out3,cin4 => net_out4,cin5 => net_out5,cin6 => net_out6,seg => d
50、uanxuan,weixuan =>weixuan );附錄2分頻器 signal a1: std_logic_vector(15 downto 0):= ( others =>'0');beginprocess(clk_raw) is begin if rising_edge(clk_raw) then if a1=47999 thena1<=(others=>'0'); elsea1<=a1+1; end if; end if;end process;clk_1kh<=a1(15);附錄3消抖電路signal cnt:st
51、d_logic_vector(2 downto 0):=(others=>'0');signal k1,k2:std_logic;beginp1:process(key_in,clk)beginif key_in='1' thencnt<="000"elsif falling_edge(clk) thenif cnt /=7 thencnt<=cnt+1;end if;end if;end process;p2:process(clk)beginif falling_edge(clk) thenif cnt /=7 then
52、k1<='0'elsek1<='1'end if;k2<=k1;end if;end process;p3:key_out<=(not k1)and k2;附錄4 控制電路process(c_state,condition)begincase c_state iswhen "101"=> case condition is when "10" => n_state<="011" when others=>n_state<="101"
53、; end case;when "011"=> case condition is when "01" => n_state<="010" when "10" => n_state<="001"when others=> n_state<="011" end case;when "010"=> case condition is when "01" => n_state<=&q
54、uot;011" when others=> n_state<="010" end case;when "001"=> case condition is when "10" => n_state<="011" when "01" => n_state<="101"when others=> n_state<="001" end case;when others=>n_state<
55、="101"end case;end process;process(clk)beginif rising_edge(clk) thenc_state<=n_state;end if;附錄5 十進制計數(shù)器process(rst,clk)isbeginif rst='1' thencount<="0000"elsif rising_edge(clk) thenif carry_in='1' thenif count="1001" thencount<="0000"elsecount<=count
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 紡織服裝檢測檢驗中心項目可行性研究報告建議書
- 中國挖掘機行業(yè)發(fā)展?jié)摿Ψ治黾巴顿Y方向研究報告
- 2024-2028年中國數(shù)據(jù)庫一體機行業(yè)市場全景評估及投資前景展望報告
- 要錢申請書模板
- 2025年工業(yè)合成明礬項目可行性研究報告
- 村監(jiān)會申請書
- 2024建筑材料生產(chǎn)專用機械制造市場前景及投資研究報告
- 調(diào)換專業(yè)申請書
- 中國電壓探針行業(yè)競爭格局及投資戰(zhàn)略研究報告
- 面點師申請書
- 《初三畢業(yè)班開學(xué)第一課:收心及中考沖刺》班會課件
- 2024年山東司法警官職業(yè)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 新生兒轉(zhuǎn)運護理安全管理課件
- 華為公司煤礦智能化遠景培訓(xùn)課件2024
- 制造業(yè)面臨的挑戰(zhàn)與發(fā)展對策
- 醫(yī)院智慧病房信息化建設(shè)
- 中考語文一輪專題復(fù)習(xí):《現(xiàn)代文閱讀的命題特點及教學(xué)策略》課件
- 《抗生素培訓(xùn)》課件
- 十個數(shù)字故事圖文
- 帶電作業(yè)流程及安全注意事項
- 城市規(guī)劃與建筑學(xué)專業(yè)英語
評論
0/150
提交評論