![電子科技大學(xué)電子技術(shù)綜合實驗秒表實驗報告_第1頁](http://file4.renrendoc.com/view/c3b59202494879767371214cb331845b/c3b59202494879767371214cb331845b1.gif)
![電子科技大學(xué)電子技術(shù)綜合實驗秒表實驗報告_第2頁](http://file4.renrendoc.com/view/c3b59202494879767371214cb331845b/c3b59202494879767371214cb331845b2.gif)
![電子科技大學(xué)電子技術(shù)綜合實驗秒表實驗報告_第3頁](http://file4.renrendoc.com/view/c3b59202494879767371214cb331845b/c3b59202494879767371214cb331845b3.gif)
![電子科技大學(xué)電子技術(shù)綜合實驗秒表實驗報告_第4頁](http://file4.renrendoc.com/view/c3b59202494879767371214cb331845b/c3b59202494879767371214cb331845b4.gif)
![電子科技大學(xué)電子技術(shù)綜合實驗秒表實驗報告_第5頁](http://file4.renrendoc.com/view/c3b59202494879767371214cb331845b/c3b59202494879767371214cb331845b5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
19/30現(xiàn)代電子技術(shù)綜合實驗電子秒表設(shè)計學(xué)生姓名:xxx學(xué)號:xxxxxxxxx指導(dǎo)老師:劉曦學(xué)院:xxxxxxxx提交時間:2015年5月摘要 本文介紹了使用VHDL開發(fā)FPGA的一般流程,重點介紹了電子秒表的設(shè)計。該設(shè)計以VHDL作為硬件開發(fā)語言,以ISE作為軟件開發(fā)平臺,準確地實現(xiàn)了秒表計數(shù)、清零、暫停等功能,并使用ModelSim仿真軟件對VHDL程序?qū)崿F(xiàn)了仿真,完成了綜合布局布線,最終將程序下載到芯片Spartan-3A,測試結(jié)果良好。關(guān)鍵字:FPGAVHDLISEModelSim電子秒表
目錄第一章引言————————————————————————————4第二章基于FPGA的VHDL設(shè)計流程——————————————————4 2.1時間的概念及計時方法————————————————————42.2VHDL語言簡介———————————————————————4 2.2.1VHDL語言特點————————————————————-4 2.2.2VHDL語言優(yōu)勢————————————————————-6 2.3FPGA簡介—————————————————————————6 2.3.1FPGA的主要特點———————————————————-62.3.2FPGA的開發(fā)流程————————————————————6第三章電子秒表的軟件開發(fā)環(huán)境———————————————————63.1ModelSim簡介————————————————————————73.1.1ModelSim的特點————————————————————-7 3.2ISE簡介——————————————————————————-7第四章電子秒表的設(shè)計與實現(xiàn)————————————————————-74.1實驗任務(wù)——————————————————————————94.2實驗條件——————————————————————————94.3系統(tǒng)需求和解決方案—————————————————————94.4各模塊的實現(xiàn)————————————————————————94.4.1分頻器————————————————————————分頻得到1KHz的時鐘信號—————————————分頻得到100Hz的時鐘信號————————————104.4.2輸入控制電路—————————————————————11 防抖電路————————————————————11 控制電路————————————————————114.4.3計數(shù)模塊———————————————————————十進制計數(shù)器——————————————————六進制計數(shù)器——————————————————134.4.4鎖存器————————————————————————134.4.5顯示模塊———————————————————————掃描器—————————————————————數(shù)據(jù)選擇器———————————————————七段譯碼器———————————————————144.5分配引腳和下載實現(xiàn)————————————————————-144.6實驗結(jié)果及仿真——————————————————————-15第五章結(jié)論———————————————————————————155.1實驗結(jié)論—————————————————————————155.2心得體會—————————————————————————15參考文獻———————————————————————————16致謝—————————————————————————————16附錄————————————————————————————17引言隨著現(xiàn)代電子科技的發(fā)展,各種新型的電子產(chǎn)品層出不窮,而高精度的電子秒表作為電子產(chǎn)品的一部分,在人們的日常生產(chǎn)、生活中發(fā)揮著極其重要的作用。本文主要任務(wù)是針對設(shè)計的要求,基于FPGA利用硬件描述語言VHDL完成秒表的設(shè)計,并且通過仿真、分析、綜合從而實現(xiàn)計數(shù)、清零、暫停等功能。該系統(tǒng)具有高速、精確、可靠、抗干擾性強和現(xiàn)場可編程等優(yōu)點,且系統(tǒng)成本非常低廉,適用于大規(guī)模地生產(chǎn)和應(yīng)用。基于FPGA的VHDL設(shè)計流程2.1時間的概念及計時方法時間是物理學(xué)中的七個基本量綱之一,符號t。在國際單位制(SI)中,時間的額吉本單位是秒,符號s,在1967年召開的第13屆國際度量衡大會對秒的定義是:銫133原子基態(tài)的兩個超精細能階間跳躍對應(yīng)輻射的9,192,631,770個周期的持續(xù)時間。這個定義提到的銫原子必須在絕對零度是靜止的,而且在地面上的環(huán)境是零磁場。在這樣的情況下被定義的秒,在天文學(xué)上的歷書時所定義的秒是等效的。中國古代的計時器有太陽鐘和機械鐘兩種。太陽鐘是以太陽的投影和方位來計時的。代表有土圭、圭表、日晷等。而由于地球軌道偏心率以及地球傾角的影響,真太陽時和平太陽時是不一致的,機械鐘應(yīng)運而生,代表有水鐘、沙漏等。時間已經(jīng)走到21世紀,為了更加精確的測量時間,現(xiàn)代人使用了很多方法。最常用的包括有機械時鐘和電子時鐘。本文介紹的電子秒表便是電子時鐘的一種。我們將基于FPGA和EDA軟件來制作一款秒表,已達到計時的目的。2.2VHDL語言簡介 VHDL語言是一種用于電路設(shè)計的高級語言。它在80年代的后期出現(xiàn)。最初是由美國國防部開發(fā)出來供美軍用來提高設(shè)計的可靠性和縮減開發(fā)周期的一種使用范圍較小的設(shè)計語言。VHDL翻譯成中文就是超高速集成電路硬件描述語言,主要是應(yīng)用在數(shù)字電路的設(shè)計中。它在中國的應(yīng)用多數(shù)是用在FPGA/CPLD/EPLD的設(shè)計中。當然在一些實力較為雄厚的單位,它也被用來設(shè)計ASIC。VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式、描述風格以及語法是十分類似于一般的計算機高級語言。VHDL的程序結(jié)構(gòu)特點是將一項工程設(shè)計,或稱設(shè)計實體(可以是一個元件,一個電路模塊或一個系統(tǒng))分成外部(或稱可視部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實體的內(nèi)部功能和算法完成部分。在對一個設(shè)計實體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計就可以直接調(diào)用這個實體。這種將設(shè)計實體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計的基本點。2.2.1VHDL語言特點與其他硬件描述語言相比,VHDL具有以下特點:功能強大、設(shè)計靈活VHDL具有功能強大的語言結(jié)構(gòu),可以用簡潔明確的源代碼來描述復(fù)雜的邏輯控制。它具有多層次的設(shè)計描述功能,層層細化,最后可直接生成電路級描述。VHDL支持同步電路、異步電路和隨機電路的設(shè)計,這是其他硬件描述語言所不能比擬的。VHDL還支持各種設(shè)計方法,既支持自底向上的設(shè)計,又支持自頂向下的設(shè)計;既支持模塊化設(shè)計,又支持層次化設(shè)計。支持廣泛、易于修改由于VHDL已經(jīng)成為IEEE標準所規(guī)范的硬件描述語言,大多數(shù)EDA工幾乎都支持VHDL,這為VHDL的進一步推廣和廣泛應(yīng)用奠定了基礎(chǔ)。在硬件電路設(shè)計過程中,主要的設(shè)計文件是用VHDL編寫的源代碼,因為VHDL易讀和結(jié)構(gòu)化,所以易于修改設(shè)計。強大的系統(tǒng)硬件描述能力VHDL具有多層次的設(shè)計描述功能,既可以描述系統(tǒng)級電路,又可以描述門級電路。而描述既可以采用行為描述、寄存器傳輸描述或結(jié)構(gòu)描述,也可以采用三者混合的混合級描述。另外,VHDL支持慣性延遲和傳輸延遲,還可以準確地建立硬件電路模型。VHDL支持預(yù)定義的和自定義的數(shù)據(jù)類型,給硬件描述帶來較大的自由度,使設(shè)計人員能夠方便地創(chuàng)建高層次的系統(tǒng)模型。獨立于器件的設(shè)計、與工藝無關(guān)設(shè)計人員用VHDL進行設(shè)計時,不需要首先考慮選擇完成設(shè)計的器件,就可以集中精力進行設(shè)計的優(yōu)化。當設(shè)計描述完成后,可以用多種不同的器件結(jié)構(gòu)來實現(xiàn)其功能。很強的移植能力VHDL是一種標準化的硬件描述語言,同一個設(shè)計描述可以被不同的工具所支持,使得設(shè)計描述的移植成為可能。易于共享和復(fù)用VHDL采用基于庫(Library)的設(shè)計方法,可以建立各種可再次利用的模塊。這些模塊可以預(yù)先設(shè)計或使用以前設(shè)計中的存檔模塊,將這些模塊存放到庫中,就可以在以后的設(shè)計中進行復(fù)用,可以使設(shè)計成果在設(shè)計人員之間進行交流和共享,減少硬件電路設(shè)計。2.2.2VHDL語言優(yōu)勢 (1)與其他的硬件描述語言相比,VHDL具有更強的行為描述能力,從而決定了他成為系統(tǒng)設(shè)計領(lǐng)域最佳的硬件描述語言。強大的行為描述能力是避開具體的器件結(jié)構(gòu),從邏輯行為上描述和設(shè)計大規(guī)模電子系統(tǒng)的重要保證。(2)VHDL豐富的仿真語句和庫函數(shù),使得在任何大系統(tǒng)的設(shè)計早期就能查驗設(shè)計系統(tǒng)的功能可行性,隨時可對設(shè)計進行仿真模擬。(3)VHDL語句的行為描述能力和程序結(jié)構(gòu)決定了他具有支持大規(guī)模設(shè)計的分解和已有設(shè)計的再利用功能。符合市場需求的大規(guī)模系統(tǒng)高效,高速的完成必須有多人甚至多個代發(fā)組共同并行工作才能實現(xiàn)。(4)對于用VHDL完成的一個確定的設(shè)計,可以利用EDA工具進行邏輯綜合和優(yōu)化,并自動的把VHDL描述設(shè)計轉(zhuǎn)變成門級網(wǎng)表。(5)VHDL對設(shè)計的描述具有相對獨立性,設(shè)計者可以不懂硬件的結(jié)構(gòu),也不必管理最終設(shè)計實現(xiàn)的目標器件是什么,而進行獨立的設(shè)計。2.3FPGA簡介 FPGA是英文FieldProgrammableGateArray的縮寫,即現(xiàn)場可編程門陣列,它是在PAL、GAL、EPLD等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物。它是作為專門集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。 FPGA采用了邏輯單元陣列LCA(LogicCellArray)這樣一個新概念,內(nèi)部包括可配置邏輯模塊CLB(ConfigurableLogicBlock)、輸出輸入模塊IOB(InputOutputBlock)和內(nèi)部連線(Interconnect)三個部分。2.3.1FPGA的主要特點 (1)采用FPGA設(shè)計ASIC電路,用戶不需要投片生產(chǎn),就能得到合用的芯片。 (2)FPGA可做其它全定制或半定制ASIC電路的中試樣片。 (3)FPGA內(nèi)部有豐富的觸發(fā)器和I/O引腳。 (4)FPGA是ASIC電路中設(shè)計周期最短、開發(fā)費用最低、風險最小的器件之一。 (5)FPGA采用高速CHMOS工藝,功耗低,可以與CMOS、TTL電平兼容。 可以說,F(xiàn)PGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。2.3.2FPGA的開發(fā)流程 FPGA開發(fā)一般可分為以下七部分:1、文本編輯:用任何文本編輯器都可以進行,也可以用專用的HDL編輯環(huán)境。通常VHDL文件保存為.vhd文件2、功能仿真:將文件調(diào)入HDL仿真軟件進行功能仿真,檢查邏輯功能是否正確(也叫前仿真,對簡單的設(shè)計可以跳過這一步,只在布線完成以后,進行時序仿真)3、邏輯綜合:將源文件調(diào)入邏輯綜合軟件進行綜合,即把語言綜合成最簡的布爾表達式。邏輯綜合軟件會生成.edf(edif)的EDA工業(yè)標準文件。4、布局布線:將.edf文件調(diào)入PLD廠家提供的軟件中進行布線,即把設(shè)計好的邏輯安放到PLD/FPGA內(nèi)。5、時序仿真:需要利用在布局布線中獲得的精確參數(shù),用仿真軟件驗證電路的時序。(也叫后仿真)6、編程下載:確認仿真無誤后,將文件下載到芯片中7、硬件測試:硬件測試的目的是為了在更真實的環(huán)境中檢驗HDL設(shè)計的運行情況,特別是對于HDL程序設(shè)計上不是十分規(guī)范,語義上含有一定歧義的程序。電子秒表的軟件開發(fā)環(huán)境本章主要介紹項目中將要用到了一系列軟件,包括用于VHDL語言編寫和編譯的ISE軟件和用于程序仿真的仿真軟件ModelSim。3.1ModelSim簡介 Mentor公司的ModelSim是業(yè)界最優(yōu)秀的HDL語言仿真軟件,它能提供友好的仿真環(huán)境,是業(yè)界唯一的單內(nèi)核支持VHDL和Verilog混合仿真的仿真器。它采用直接優(yōu)化的編譯技術(shù)、Tcl/Tk技術(shù)、和單一內(nèi)核仿真技術(shù),編譯仿真速度快,編譯的代碼與平臺無關(guān),便于保護IP核,個性化的圖形界面和用戶接口,為用戶加快調(diào)錯提供強有力的手段,是FPGA/ASIC設(shè)計的首選仿真軟件。3.1.1ModelSim的特點·RTL和門級優(yōu)化,本地編譯結(jié)構(gòu),編譯仿真速度快,跨平臺跨版本仿真;·單內(nèi)核VHDL和Verilog混合仿真;·源代碼模版和助手,項目管理;·集成了性能分析、波形比較、代碼覆蓋、數(shù)據(jù)流ChaseX、SignalSpy、虛擬對象VirtualObject、Memory窗口、Assertion窗口、源碼窗口顯示信號值、信號條件斷點等眾多調(diào)試功能;·C和Tcl/Tk接口,C調(diào)試;·對SystemC的直接支持,和HDL任意混合;·支持SystemVerilog的設(shè)計功能;·對系統(tǒng)級描述語言的最全面支持,SystemVerilog,SystemC,PSL;·ASICSignoff。·可以單獨或同時進行行為(behavioral)、RTL級、和門級(gate-level)的代碼。3.2ISE簡介 ISEt是Xilinx公司提供的集成化FPGA開發(fā)軟件,它的主要功能包括設(shè)計輸入、綜合、仿真、實現(xiàn)和下載。(1)設(shè)計輸入ISE軟件提供的設(shè)計輸入工具包括用于HDL代碼輸入和報告查看的ISE文本編輯器(TextEditor),用于原理圖編輯的工具ECS(EngineeringCaptureSystem),用于PCORE的COREGenerator,用于狀態(tài)機設(shè)計的StateCAD,以及用于約束文件編輯的ConstraintEditor等。(2)綜合ISE的綜合工具不但包括了Xilinx自身提供的綜合工具xsr,同時還可以集成MentorGraphics公司的LeonardoSpectrum和Synplicity公司的Synplify。(3)仿真ISE本身自帶了圖形化波形編輯功能的仿真工具HDLBencher,同時又提供了使用ModelTechnology公司的ModelSim進行仿真的接口。(4)實現(xiàn)ISE的實現(xiàn)功能包括了翻譯(Translate)、映射(Map)、布局布線(PlaceandRoute)等。(5)下載下載功能包括了BitGen,用于將布局布線后的設(shè)計文件轉(zhuǎn)換為比特流(Bitstream)文件。還包括了iMPACT功能,用于進行設(shè)備配置和通信,控制將程序燒寫到FPGA芯片中去。使用ISE進行FPGA開發(fā)大致可以分為3個步驟。(1)設(shè)計輸入和仿真設(shè)計輸入(DesignEntry)是指以HDL代碼、原理圖、波形圖以及狀態(tài)機的形式輸入設(shè)汁源文件,而設(shè)計仿真(Simdmion)是指通過仿真工具對設(shè)計的整體模塊或局部模塊進行仿真來檢驗設(shè)計的功能和性能。(2)用戶約束條件、綜合和實現(xiàn)用戶約束條件(UserConstraints)的作用是對綜合、實現(xiàn)過程進行控制,滿足速度、面積、引腳位置等需求。編輯約束條件又包括了4個子項,意義分別為:創(chuàng)建時間約束、配置引腳、創(chuàng)建面積約束、以文本方式編輯約束。綜合(Synthesize)是FPGA設(shè)計流程中的重要環(huán)節(jié),綜合結(jié)果的優(yōu)劣直接影響到設(shè)計的最終性能。ISE自帶的綜合工具是XST,同時它也支持Synplify/SynplifyPro等第三方綜合工具,但是由于Xilinx對于其器件的底層最為了解,所以使用XST綜合往往會得到比較滿意的結(jié)果。綜合包含了3個子項,意義分別為:查看綜合報告、查看綜合器件的RTL級原理圖和檢查語法。實現(xiàn)(Implementation)過程也包含了3個子項,ImplementDesign項所對應(yīng)的子項,意義分別是:翻譯、映射和布局布線。需要注意,進行實現(xiàn)步驟之前必須進行約束條件的編輯,否則實現(xiàn)可能會出錯。(3)硬件編程硬件編程(Programming)是指生成編輯比特流文件bit,并將其下載到FPGA芯片內(nèi)部的過程。硬件編程對應(yīng)圖2--5所示的GenerateProgrammingFile項。電子表秒的設(shè)計與實現(xiàn)4.1實驗任務(wù)設(shè)計一個秒表,秒表的計時范圍為00’00”00~59’59”99。有兩個按鈕開關(guān)Start/Stop和Split/Reset,控制秒表的啟動、停止、分段和復(fù)位:在秒表已經(jīng)被復(fù)位的情況下,按下“Start/Stop”鍵,秒表開始計時。在秒表正常運行的情況下,如果按下“Start/Stop”鍵,則秒表暫停計時。再次按下該鍵,秒表繼續(xù)計時。在秒表正常運行的情況下,如果按下“Split/Reset”鍵,顯示停止在按鍵時的時間,但秒表仍然在計時。再次按下該鍵,秒表恢復(fù)正常顯示。在秒表暫停計時的情況下,按下“Split/Reset”鍵,秒表復(fù)位歸零。4.2實驗條件 我們將利用EDA軟件和HDL語言在EEC-FPGA實驗板上完成秒表的設(shè)計與實現(xiàn),實驗板原理如圖1所示。在項目開始設(shè)計時,首先要確定系統(tǒng)的需求并發(fā)展出一個針對這些需求的計劃。設(shè)計方案以及系統(tǒng)需求必須按照設(shè)計要求并根據(jù)客觀條件來確定。
圖1實驗板原理圖4.3系統(tǒng)需求和解決方案 根據(jù)實驗板原理圖可以發(fā)現(xiàn),數(shù)碼管為共陽極輸出,因此,為了能夠使八盞數(shù)碼管同時顯示時間,我們需要設(shè)置一個掃描顯示控制模塊以進行掃頻。由于計時精度精確到0.01秒,因此根據(jù)數(shù)據(jù)采集定理,分頻后的頻率應(yīng)至少為計時精度的兩倍,即200赫茲。由于實驗板僅具備48MHz晶振,因此需要設(shè)計一個分頻器對時鐘信號進行分頻。根據(jù)設(shè)計要求,需要具備可以暫停計時的功能,因此秒表系統(tǒng)中需要加入一個鎖存器模塊以對數(shù)據(jù)進行鎖存??紤]到實際按鍵過程中經(jīng)常出現(xiàn)按鍵抖動的情況,這對精確計時造成了極大的危害,因此,在計時系統(tǒng)中需要具備按鍵消抖模塊。此外,由于秒表工作時具備4種不同的狀態(tài),因此,狀態(tài)控制模塊也是必不可少的。按照以上需求,可以得到整個電路的原理圖如下圖所示:圖2系統(tǒng)模塊圖從原理圖可知,系統(tǒng)需要以下模塊:1.分頻器:對晶體振蕩器產(chǎn)生的時鐘進行分頻,產(chǎn)生時間基準信號。2.計數(shù)器:對時間基準脈沖進行計數(shù),完成計時功能。3.數(shù)據(jù)鎖存器:鎖存數(shù)據(jù),使顯示保持暫停。4.控制器:控制計數(shù)器的運行、停止以及復(fù)位,產(chǎn)生鎖存器的使能信號。5.掃描顯示的控制電路:包括掃描計數(shù)器、數(shù)據(jù)選擇器和七段譯碼器,控制8個數(shù)碼管以掃描方式,顯示結(jié)果。6.按鍵消抖電路:消除按鍵輸入信號,輸出單脈沖。4.4各模塊的實現(xiàn)4.4.1分頻器 XC3S200A芯片的外部有源晶振頻率為48MHz,而計時器的最小單位為0.01s,即100Hz??紤]到系統(tǒng)的穩(wěn)定性,本設(shè)計選擇了1KHz的信號作為各模塊的時鐘信號,即對晶振信號進行1/48000、1/480000分頻。分頻得到1KHz的時鐘信號對晶振時鐘信號進行計數(shù),標志位選擇信號的上升沿:對每個上升沿,計數(shù)器加1;當計數(shù)達到23999時,下個上升沿計數(shù)器,當前電平取反,此時獲得即為1KHZ的信號,源程序見附錄2.仿真結(jié)果如下圖所示,時鐘周期為48000。圖31KHz信號仿真圖分頻得到100Hz的時鐘信號對晶振時鐘信號進行計數(shù),標志位選擇信號的上升沿:對每個上升沿,計數(shù)器加1;當計數(shù)達到239999時,下個上升沿計數(shù)器,當前電平取反,此時獲得即為100HZ的信號,獲得100HZ的源程序見附錄3。仿真結(jié)果如圖4所示,時鐘周期剛好為480000。圖4100Hz信號仿真圖輸入控制電路輸入控制模塊的功能是識別有效地按鍵輸入和實現(xiàn)輸入的按鍵信號對電子秒表不同狀態(tài)的控制。,秒表的狀態(tài)可分為計數(shù)開/關(guān),顯示鎖定開/關(guān)和清零。考到有兩個輸入按鍵,所以必須有輸入控制電路,同時考慮到按下按鍵以及松開按鍵會出現(xiàn)抖動,所以必須設(shè)計防抖動電路。即按鍵輸入信號,必須先經(jīng)過防抖電路,然后進入控制電路。防抖電路由于按鍵輸入,在按下過程中電平可能會有一個不確定的抖動狀態(tài)。由于識別的有效按鍵電平為持續(xù)的低電平,在此設(shè)計一個計數(shù)器,具體思路為:當輸入為低電平時候開始計數(shù);當輸入轉(zhuǎn)為高電平時計數(shù)清零;初始輸出值為‘0’;當?shù)碗娖匠掷m(xù)三個時鐘周期,即計數(shù)為“10”時,停止計數(shù),改變輸出的狀態(tài)(即‘0’變‘1’,‘1’變‘0’)。這種設(shè)計把一個瞬時信號變?yōu)槌掷m(xù)信號,簡化了之后的模塊對信號的處理。去抖電路程序見附錄4。控制電路圖5控制電路狀態(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)時,過一個時鐘周期自動回到“00”狀態(tài)。狀態(tài)圖如圖5所示。源程序為見附錄5。4.4.3計數(shù)模塊由設(shè)計指標可知,秒表由六位顯示最大計時為59min59s99,所以需要4個10進制計數(shù)器,還有兩個6進制計數(shù)器。其中有暫定,以及鎖存的功能,所以需要每個計數(shù)器還需對應(yīng)一個鎖存器才能完成暫定以及鎖存的功能。十進制計數(shù)器計數(shù)器遷入端每識別一個上升沿,就依次從“0000”計數(shù)到“1001”。當計數(shù)變?yōu)椤?001”時,進位端從‘1’變?yōu)椤?’,在下個遷入的上升沿“1001”變?yōu)椤?000”,進位端恢復(fù)‘1’。如此,將進位端連入下一級的遷入端時,可以實現(xiàn)低位由9變?yōu)?時高位進1。當清零信號有效時,計數(shù)器強制將計數(shù)值變?yōu)椤?000”。源程序為見附錄.2六進制計數(shù)器六進制計數(shù)范圍是“0000”到“0110”,在“0110”時進位端發(fā)生變低,之后計數(shù)變?yōu)椤?000”,進位端恢復(fù)高電平。對于六進制來說,三個二進制位就能夠滿足計數(shù)需要,但是考慮到后面譯碼器的輸入均為四個二進制位,所以計數(shù)用4bit,方便譯碼。源程序為見附錄7。4.4.4鎖存器鎖存器實現(xiàn)電子秒表的顯示鎖定功能。其輸入時鐘為外部時鐘(1kHz)。當鎖定信號無效時,在每個時鐘上升沿將輸入的數(shù)據(jù)信號輸出;當鎖定信號有效時,輸出的數(shù)據(jù)信號保持當前值,無視輸入數(shù)據(jù)的改變,源程序見附錄8。4.4.5顯示模塊顯示模塊主要完成顯示掃描和編碼翻譯的功能。其中需要用到掃描器,多路選擇器和譯碼器,時鐘信號連接一個掃描器,用計數(shù)原理輸出3bit掃描信號。該信號一方面接到外部的3-8譯碼器中,實現(xiàn)對八位數(shù)碼管的掃描;另一方面選擇信號接入一個4bit8輸入1輸出的多路選擇器中,把數(shù)碼管和相應(yīng)位的數(shù)字信號聯(lián)系起來。多路選擇器的信號輸出接譯碼器,把二進制信號編譯成數(shù)碼管上顯示的十進制數(shù)。掃描器掃描器實現(xiàn)了八位數(shù)碼管共用一組輸入數(shù)據(jù)的可能性,其原理圖如圖6所示。其通過一個計數(shù)器,在每個時鐘信號的上升沿,其輸出的三位二進制信號加一,從“000”計數(shù)到“111”。當輸出為“111”時,下一個時鐘上升沿輸出變?yōu)椤?00”,源程序見附錄9。圖6掃描電路原理圖數(shù)據(jù)選擇器多路選擇器輸入八組四位數(shù)據(jù)信號和一組三位掃描信號,通過掃描信號的狀態(tài)選擇相應(yīng)的數(shù)據(jù)信號進行輸出源程序,源程序見附錄10。七段譯碼器譯碼器對四位二進制輸入數(shù)據(jù)進行處理,將其轉(zhuǎn)化成適合于數(shù)碼管顯示的八位二進制數(shù)據(jù),如圖7所示。源程序見附錄11。圖7七段譯碼器電路圖分配引腳和下載實現(xiàn)全部仿真通過后,就運行ISE的設(shè)計實現(xiàn),然后再打開XILINXPACE,在里面分配引腳,即實現(xiàn)設(shè)計的輸入輸出端口與實際芯片的輸入輸出端口的對應(yīng)連接。比如七段LED管的控制信號就連接到實際電路的七個引腳。 總的電路圖如圖8所示圖8電子秒表總電路圖實驗結(jié)果在成功下載并運行后,進行了各按鈕功能的檢測(包括計數(shù)、暫停、復(fù)位、清零等功能的檢查),以及與標準時間進行了對比,符合實驗預(yù)估的各項指標,如圖9所示。圖9實驗結(jié)果第五章結(jié)論5.1實驗結(jié)論本文主要介紹了利用VHDL語言完成基于FPGA的數(shù)字秒表的設(shè)計與實現(xiàn)。詳細介紹了測量原理,設(shè)計方案以及各模塊的設(shè)計過程及其實現(xiàn)的功能,并對設(shè)計中遇到的問題作了分析和處理;利用ISE和ModelSim對設(shè)計進行了仿真,分析,綜合,并最終下載到芯片中,實現(xiàn)了預(yù)計的各項指標。5.2心得體會經(jīng)過這次的課程設(shè)計,我對課題設(shè)計的基本流程有了一定的認識。原本以為VHDL是無法掌握的語言,剛開始的時候不知道從何下手,所以進度會非常慢人也比較著急。但是后來靜下心一個模塊的設(shè)計,自己的自信心也開始建立了,經(jīng)過一周的努力和實踐發(fā)現(xiàn)掌握XILINXISE軟件的基本語言和操作時可以實現(xiàn)的。在老師給的指導(dǎo)下,我學(xué)習了軟件的操作、基本的語句、正規(guī)的編程方法,把原來所學(xué)的書本知識和實踐相聯(lián)系。將秒表這個看似很大的工程,分成若干個小塊各擊破,最終通過了老師的驗收。所以做這個秒表最重要的就是耐心和毅力,只一步堅持就一定會得到自己滿意的結(jié)果。而在通過時序邏輯編寫電路的各個模塊過程中建立起了學(xué)習編程語言的濃厚興趣。在設(shè)計中也深刻體會到了清晰編程思路和適當注釋的重要性。為以后更好的學(xué)習VHDL打下了基礎(chǔ),通過這次課程設(shè)計,我意識到了對這門課程掌握還有一定的不足,比如經(jīng)常嵌套多層if,導(dǎo)致電路過于復(fù)雜,邏輯混亂軟件最終無法達到最終目的。因為個人能力和知識的限制,還有許多的知識我不了解。參考文獻[1].閻石.數(shù)字電子技術(shù)基礎(chǔ).北京:高等教育出版社,1998.[2].JohnF.Wakerly數(shù)字設(shè)計原理與實踐第四版機械工業(yè)出版社[3].徐文波/田耘XillinxFPGA開發(fā)使用教程清華大學(xué)出版社[4]..致謝首先必須感謝的是劉曦老師對我的教導(dǎo),在實驗過程中對我的幫助,在此對劉曦老師致于最衷心的感謝。其次感謝我的同學(xué)們,在我遇到問題時,能給我分析以及解決。附錄附錄1電子秒表的頂層文件--Deviceutilizationsummary:SelectedDevice:3s200aft256-4NumberofSlices:57outof17923%--NumberofSliceFlipFlops:81outof35842%--Numberof4inputLUTs:108outof35843%--NumberofIOs:14--NumberofbondedIOBs:14outof1957%--NumberofGCLKs:3outof2412%libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entitytop4isport(clk_in:instd_logic:='0';clr_in,start_in:instd_logic:='0'; shuma:outstd_logic_vector(6downto0); xuan:outstd_logic_vector(3downto0));endtop4;architectureBehavioraloftop4issignala,b,c,d,e,f,a1,b1,c1,d1,e1,f1:std_logic_vector(3downto0);signalclk_in_1k:std_logic;signalclr_out,start_out:std_logic;signalkong0,kong1,kong2:std_logic;COMPONENTfenpin PORT( clk:INstd_logic; clk_1k:OUTstd_logic ); ENDCOMPONENT; COMPONENTxiaodou PORT( clk:INstd_logic; key_in1:INstd_logic; key_in2:INstd_logic; key_out_start:OUTstd_logic; key_out_reset:OUTstd_logic ); ENDCOMPONENT; COMPONENTsuocun PORT( msec0:INstd_logic_vector(3downto0); msec1:INstd_logic_vector(3downto0); second0:INstd_logic_vector(3downto0); second1:INstd_logic_vector(3downto0); minute0:INstd_logic_vector(3downto0); minute1:INstd_logic_vector(3downto0); con:INstd_logic; omsec0:OUTstd_logic_vector(3downto0); omsec1:OUTstd_logic_vector(3downto0); osecond0:OUTstd_logic_vector(3downto0); osecond1:OUTstd_logic_vector(3downto0); ominute0:OUTstd_logic_vector(3downto0); ominute1:OUTstd_logic_vector(3downto0) ); ENDCOMPONENT;COMPONENTxianshikongzhi PORT( clk_1k:INstd_logic; msec0:INstd_logic_vector(3downto0); msec1:INstd_logic_vector(3downto0); second0:INstd_logic_vector(3downto0); second1:INstd_logic_vector(3downto0); minute0:INstd_logic_vector(3downto0); minute1:INstd_logic_vector(3downto0); shumaguan:OUTstd_logic_vector(6downto0); n:OUTstd_logic_vector(3downto0) ); ENDCOMPONENT; COMPONENTkongzhi PORT( clk_1k:INstd_logic; rst:INstd_logic; state:INstd_logic; kongclr:OUTstd_logic; kongen:OUTstd_logic; kongnormal:OUTstd_logic ); ENDCOMPONENT;COMPONENTjishu PORT( clk_1k:INstd_logic; clr:INstd_logic; cou:INstd_logic; msec0:OUTstd_logic_vector(3downto0); msec1:OUTstd_logic_vector(3downto0); second0:OUTstd_logic_vector(3downto0); second1:OUTstd_logic_vector(3downto0); minute0:OUTstd_logic_vector(3downto0); minute1:OUTstd_logic_vector(3downto0) ); ENDCOMPONENT; beginInst_fenpin:fenpinPORTMAP( clk=>clk_in, clk_1k=>clk_in_1k ); Inst_xiaodou:xiaodouPORTMAP( clk=>clk_in_1k, key_in1=>start_in, key_in2=>clr_in, key_out_start=>start_out, key_out_reset=>clr_out );Inst_suocun:suocunPORTMAP( msec0=>a, msec1=>b, second0=>c, second1=>d, minute0=>e, minute1=>f, con=>kong2, omsec0=>a1, omsec1=>b1, osecond0=>c1, osecond1=>d1, ominute0=>e1, ominute1=>f1 ); Inst_xianshikongzhi:xianshikongzhiPORTMAP( clk_1k=>clk_in_1k, msec0=>a1, msec1=>b1, second0=>c1, second1=>d1, minute0=>e1, minute1=>f1, shumaguan=>shuma, n=>xuan );Inst_kongzhi:kongzhiPORTMAP( clk_1k=>clk_in_1k, rst=>clr_out, state=>start_out, kongclr=>kong0, kongen=>kong1, kongnormal=>kong2 );Inst_jishu:jishuPORTMAP( clk_1k=>clk_in_1k, clr=>kong0, cou=>kong1, msec0=>a, msec1=>b, second0=>c, second1=>d, minute0=>e, minute1=>f );endBehavioral;附錄2分頻得到1KHZ時鐘信號libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entityfenpinisport(clk:instd_logic;clk_1k:outstd_logic);endfenpin;architectureBehavioraloffenpinis --signalcount:integerrange0to47999:=0; signalcount:std_logic_vector(15downto0):=(others=>'0');signalcl:std_logic:='1';begin process(clk) begin ifrising_edge(clk)then ifcount=47999then count<=(others=>'0'); else count<=count+1; endif; else count<=count; endif; endprocess; --cl<='1'whencount=47999else'0'; clk_1k<=count(15);endBehavioral;附錄3消抖電路libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entityxiaodouisport(clk,key_in1,key_in2:instd_logic;key_out_start,key_out_reset:outstd_logic);endxiaodou;architectureBehavioralofxiaodouissignalcnt,cnt1:std_logic_vector(1downto0);signalk1,k2,k3,k4:std_logic;beginprocess(key_in1,clk)beginifclk'eventandclk='0'thenifcnt=3then k1<='1'; elsek1<='0'; cnt<=cnt+1; endif; k2<=k1;endif;ifkey_in2='0'thencnt<="00";endif;endprocess;process(key_in2,clk)beginifclk'eventandclk='0'thenifcnt1=3then k3<='1'; elsek3<='0'; cnt1<=cnt1+1; endif; k4<=k3;endif;ifkey_in1='0'thencnt1<="00";endif;endprocess;key_out_start<=(notk1)andk2;key_out_reset<=(notk3)andk4;endBehavioral;附錄4鎖存程序libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entitysuocunisport(msec0,msec1,second0,second1,minute0,minute1:instd_logic_vector(3downto0);con:instd_logic; omsec0,omsec1,osecond0,osecond1,ominute0,ominute1:outstd_logic_vector(3downto0));endsuocun;architectureBehavioralofsuocunissignala,b,c,d,e,f:std_logic_vector(3downto0);beginprocess(con,msec0,msec1,second0,second1,minute0,minute1)beginifcon='1'thena<=msec0; b<=msec1; c<=second0; d<=second1; e<=minute0; f<=minute1;endif;endprocess;omsec0<=a;omsec1<=b;osecond0<=c;osecond1<=d;ominute0<=e;ominute1<=f; endBehavioral;附錄5顯示控制程序libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entityxianshikongzhiisport(clk_1k:instd_logic;msec0,msec1,second0,second1,minute0,minute1:instd_logic_vector(3downto0);shumaguan:outstd_logic_vector(6downto0):="1000000"; n:outstd_logic_vector(3downto0));endxianshikongzhi;architectureBehavioralofxianshikongzhiissignalweixuan:std_logic_vector(3downto0):="0000";signalnumber:std_logic_vector(2downto0):="000";signalxianshi:std_logic_vector(6downto0):="1000000";signalshu:std_logic_vector(3downto0):="0000";beginp1:process(clk_1k,number)beginifrising_edge(clk_1k)then number<=number+1; endif; endprocess;process(number,msec0,msec1,second0,second1,minute0,minute1)begincasenumberiswhen"000"=>weixuan<="0000"; when"001"=>weixuan<="0001"; when"010"=>weixuan<="0010"; when"011"=>weixuan<="0011"; when"100"=>weixuan<="0100"; when"101"=>weixuan<="0101"; when"110"=>weixuan<="0110"; when"111"=>weixuan<="0111"; whenothers=>weixuan<="1111";endcase;endprocess;n<=weixuan;process(weixuan)begincaseweixuaniswhen"0000"=>shu<=msec0;when"0001"=>shu<=msec1;when"0010"=>shu<="1111";when"0011"=>shu<=second0;when"0100"=>shu<=second1;when"0101"=>shu<="1111";when"0110"=>shu<=minute0;when"0111"=>shu<=minute1;whenothers=>shu<="0000";endcase;endprocess;p2:process(shu)begincaseshuiswhen"0000"=>xianshi<="1000000"; when"0001"=>xianshi<="1111001"; when"0010"=>xianshi<="0100100"; when"0011"=>xianshi<="0110000"; when"0100"=>xianshi<="0011001"; when"0101"=>xianshi<="0010010"; when"0110"=>xianshi<="0000010"; when"0111"=>xianshi<="1111000"; when"1000"=>xianshi<="0000000"; when"1001"=>xianshi<="0010000"; whenothers=>xianshi<="0111111";endcase;endprocess;shumaguan<=xianshi;endBehavioral;附錄6控制程序libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entitykongzhiisport(clk_1k,rst,state:instd_logic;kongclr,kongen,kongnormal:outstd_logic);endkongzhi;architectureBehavioralofkongzhiissignalc_com:std_logic_vector(2downto0):="111";signaln_com:std_logic_vector(2downto0);signalc:std_logic_vect
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 防治老鼠服務(wù)合同協(xié)議書
- 建筑樁基工程施工合同
- 電熱水器維修合同
- 法律行業(yè)智能訴訟輔助工具研發(fā)方案
- 地暖承包合同
- 教育行業(yè)管理與教學(xué)實踐指南
- 農(nóng)業(yè)環(huán)境保護與管理指導(dǎo)書
- DeepSeek簡單版使用指南
- 店面承包合作協(xié)議合同
- 集裝箱活動房租賃合同樣本
- 機動車商業(yè)保險條款(2020版)
- 2024-2025學(xué)年福建省龍巖市五縣第一次中考科目教學(xué)質(zhì)量檢測試題化學(xué)試題含解析
- 《大小比較》(說課課件)二年級下冊數(shù)學(xué)西師大版
- 張五常子女和婚姻合約中的產(chǎn)權(quán)執(zhí)行問題
- 2024年廣東深圳高三二模英語讀后續(xù)寫試題講評課件
- 校園安全派出所
- 餐廳值班管理培訓(xùn)
- XXXX無線維護崗位認證教材故障處理思路及案例分析
- 2024年浙江省自然資源集團有限公司招聘筆試參考題庫附帶答案詳解
- 酒店春節(jié)營銷方案
- 營銷管理方案中的定價策略與盈利模式
評論
0/150
提交評論