電子科技大學(xué)數(shù)字式秒表設(shè)計(jì)與實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告_第1頁(yè)
電子科技大學(xué)數(shù)字式秒表設(shè)計(jì)與實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告_第2頁(yè)
電子科技大學(xué)數(shù)字式秒表設(shè)計(jì)與實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告_第3頁(yè)
電子科技大學(xué)數(shù)字式秒表設(shè)計(jì)與實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告_第4頁(yè)
電子科技大學(xué)數(shù)字式秒表設(shè)計(jì)與實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

摘要數(shù)字式秒表設(shè)計(jì)與實(shí)現(xiàn)指導(dǎo)老師:姓名:學(xué)號(hào):

摘要本文主要介紹了基于FPGA使用VHDL語(yǔ)言的數(shù)字式秒表的設(shè)計(jì)開(kāi)發(fā)流程。該設(shè)計(jì)以VHDL作為硬件開(kāi)發(fā)語(yǔ)言,以ISE作為軟件開(kāi)發(fā)平臺(tái),成功的實(shí)現(xiàn)了數(shù)字式秒表的計(jì)數(shù)、清零、暫停等功能。并使用了ModelSim仿真軟件對(duì)各個(gè)單元電路模塊進(jìn)行了仿真,且完成了綜合布局布線,最終下載到電路板上,實(shí)際測(cè)試結(jié)果良好。關(guān)鍵字:FPGA,VHDL,數(shù)字目錄目錄數(shù)字式秒表設(shè)計(jì)與實(shí)現(xiàn) 1第一章引言 41.1選題背景 41.2實(shí)驗(yàn)方式 41.3技能培養(yǎng) 4第二章基于FPGA的VHDL設(shè)計(jì)流程 52.1 概述 52.2 VHDL語(yǔ)言介紹 52.2.1 VHDL的特點(diǎn) 52.2.2 VHDL開(kāi)發(fā)流程 62.3 FPGA開(kāi)發(fā)介紹 82.3.1 FPGA簡(jiǎn)介 82.3.2 FPGA開(kāi)發(fā)流程 8第三章數(shù)字式秒表的軟件開(kāi)發(fā)環(huán)境 103.1開(kāi)發(fā)環(huán)境 103.2ModelSim介紹 103.3ISE介紹 11第四章數(shù)字式秒表的設(shè)計(jì)與實(shí)現(xiàn) 124.1 任務(wù)要求 124.2 實(shí)驗(yàn)條件 124.3 原理框圖 134.4 各模塊的實(shí)現(xiàn) 134.4.1 分頻器 134.4.2 輸入控制電路 144.4.3 計(jì)時(shí)模塊 164.4.4 顯示模塊 184.5 分配引腳和下載實(shí)現(xiàn) 194.6 測(cè)試結(jié)果 20第五章結(jié)論 21參考文獻(xiàn) 22致謝 23附錄 24附錄1.電子秒表的頂文件 24附錄2分頻器 28附錄3消抖電路 28附錄4控制電路 29附錄5十進(jìn)制計(jì)數(shù)器 30附錄9鎖存器 30附錄10顯示電路 31第一章引言第一章引言選題背景《電子技術(shù)綜合實(shí)驗(yàn)》課程通過(guò)引入模擬電子技術(shù)和數(shù)字邏輯設(shè)計(jì)的綜合應(yīng)用、基于MCU/FPGA/EDA技術(shù)的系統(tǒng)設(shè)計(jì)等綜合型設(shè)計(jì)型實(shí)驗(yàn),對(duì)學(xué)生進(jìn)行電子系統(tǒng)綜合設(shè)計(jì)與實(shí)踐能力的訓(xùn)練與培養(yǎng)。通過(guò)《電子技術(shù)綜合實(shí)驗(yàn)》課程的學(xué)習(xí),使學(xué)生對(duì)系統(tǒng)設(shè)計(jì)原理、主要性能參數(shù)的選擇原則、單元電路和系統(tǒng)電路設(shè)計(jì)方法及仿真技術(shù)、測(cè)試方法擬定及調(diào)測(cè)技術(shù)有所了解;使學(xué)生初步掌握電子技術(shù)中應(yīng)用開(kāi)發(fā)的一般流程,初步建立起有關(guān)系統(tǒng)設(shè)計(jì)的基本概念,掌握其基本設(shè)計(jì)方法,為將來(lái)從事電子技術(shù)應(yīng)用和研究工作打下基礎(chǔ)。實(shí)驗(yàn)方式教師引導(dǎo)下的自主實(shí)驗(yàn)設(shè)計(jì)的全過(guò)程:方案、電路設(shè)計(jì)與仿真、設(shè)計(jì)與實(shí)現(xiàn)、測(cè)試與調(diào)整、總結(jié)報(bào)告技能培養(yǎng)數(shù)字電路的綜合設(shè)計(jì)應(yīng)用HDL語(yǔ)言FPGA應(yīng)用EDA軟件:ISE、Modelsim硬件電路制作或設(shè)計(jì),調(diào)整與實(shí)現(xiàn)設(shè)計(jì)文檔撰寫(xiě)資料查閱第三章電子秒表的軟件開(kāi)發(fā)環(huán)境第二章基于FPGA的VHDL設(shè)計(jì)流程概述數(shù)字秒表是數(shù)字電路中的一個(gè)典型應(yīng)用,實(shí)際的硬件設(shè)計(jì)用到的器件較多,連線比較復(fù)雜,而且會(huì)產(chǎn)生比較大的延時(shí),造成測(cè)量誤差、可靠性差。秒表的設(shè)計(jì)有傳統(tǒng)方法和現(xiàn)代方法,傳統(tǒng)的設(shè)計(jì)方法耗時(shí)耗功,設(shè)計(jì)強(qiáng)度大,且容易出錯(cuò),設(shè)計(jì)的質(zhì)量不一定是最好的。自然我們考慮到現(xiàn)代方法,即EDA。在EDA設(shè)計(jì)工具中,用的最廣泛的是VHDL和VERILOG,當(dāng)然還有其它的。比較VHDL和VERILOG,在頂層設(shè)計(jì)方面VHDL優(yōu)于VERILOG,在門級(jí)電路設(shè)計(jì)方面VERILOG優(yōu)于VHDL。隨著復(fù)雜可編程邏輯器件(CPLD)的廣泛應(yīng)用,以EDA工具作為開(kāi)發(fā)手段,運(yùn)用VHDL語(yǔ)言,將使整個(gè)系統(tǒng)大大簡(jiǎn)化,提高整體的性能和可靠性。本次的數(shù)字式秒表設(shè)計(jì)主要是先頂層設(shè)計(jì),將秒表的除了外部輸入部分以外,其余全部在一片F(xiàn)PGA芯片上實(shí)現(xiàn),整個(gè)系統(tǒng)非常精簡(jiǎn),而且具有靈活的現(xiàn)場(chǎng)可更改性。在不更改硬件電路的基礎(chǔ)上,對(duì)系統(tǒng)進(jìn)行各種改進(jìn)還可以進(jìn)一步提高系統(tǒng)的性能。該數(shù)字式秒表具有高速、精確、可靠、抗干擾性強(qiáng)和現(xiàn)場(chǎng)可編程等優(yōu)點(diǎn)。VHDL語(yǔ)言介紹VHDL語(yǔ)言是一種硬件描述語(yǔ)言(HardwareDescriptionLanguage,HDL),主要用在可編程邏輯器件(CPLD/FPGA)和專用集成電路(ASIC)兩個(gè)領(lǐng)域。寫(xiě)好的VHDL程序既可以下載到可編程邏輯器件中實(shí)現(xiàn)電路功能,又可以提交到工廠用于ASIC芯片的流片。VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口。VHDL程序結(jié)構(gòu)的特點(diǎn)是將一項(xiàng)工程設(shè)計(jì)或設(shè)計(jì)實(shí)體(可以是元件、電路模塊或系統(tǒng))分成外部和內(nèi)部?jī)刹糠?,外部即可視部分,?duì)設(shè)計(jì)實(shí)體和端口引腳進(jìn)行聲明;內(nèi)部即不可視部分,描述模塊的功能和算法。VHDL從實(shí)體與外部的接口以及實(shí)體內(nèi)部的功能與結(jié)構(gòu)這兩個(gè)方面來(lái)描述實(shí)體,設(shè)計(jì)實(shí)體定義成功后就可生成共享功能模塊。在頂層綜合或其他設(shè)計(jì)中就可以直接調(diào)用這個(gè)實(shí)體模塊。這種將設(shè)計(jì)實(shí)體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本點(diǎn)。VHDL的特點(diǎn)VHDL的特點(diǎn):①具有更強(qiáng)的行為描述能力VHDL的硬件描述能力很強(qiáng),可以用于從門級(jí)、電路級(jí)直至系統(tǒng)級(jí)的描述、仿真、綜合和調(diào)試,從邏輯功能和行為上描述和設(shè)計(jì)大規(guī)模系統(tǒng),避開(kāi)了具體器件內(nèi)部結(jié)構(gòu)。②支持層次化和模塊化設(shè)計(jì)這是運(yùn)用EDA工具進(jìn)行電路和系統(tǒng)設(shè)計(jì)區(qū)別于傳統(tǒng)設(shè)計(jì)方法的重要方面,簡(jiǎn)化了系統(tǒng)設(shè)計(jì),優(yōu)化了系統(tǒng)結(jié)構(gòu),提高了系統(tǒng)可靠性。③可仿真與可綜合仿真是指代碼模擬硬件的行為,綜合是指將代碼轉(zhuǎn)化成可物理實(shí)現(xiàn)的電路結(jié)構(gòu)。所有的VHDL語(yǔ)句都能用于仿真,但有一部分VHDL語(yǔ)句不能進(jìn)行綜合、翻譯成與之對(duì)應(yīng)的硬件電路,并在邏輯器件上實(shí)現(xiàn)。VHDL強(qiáng)大的仿真建模功能使設(shè)計(jì)者能在系統(tǒng)設(shè)計(jì)的各個(gè)階段都能十分方便地對(duì)數(shù)字系統(tǒng)進(jìn)行仿真驗(yàn)證。④系統(tǒng)設(shè)計(jì)與硬件結(jié)構(gòu)無(wú)關(guān)VHDL語(yǔ)言對(duì)設(shè)計(jì)的描述具有相對(duì)獨(dú)立性,設(shè)計(jì)者可以進(jìn)行獨(dú)立的設(shè)計(jì),可以不懂硬件的結(jié)構(gòu),也不必了解最終設(shè)計(jì)實(shí)現(xiàn)的目標(biāo)器件是什么。⑤具有很強(qiáng)的移植能力VHDL語(yǔ)言描述的設(shè)計(jì)通用性好,可以被支持VHDL標(biāo)準(zhǔn)的不同工具所支持,具有很強(qiáng)的移植能力。⑥VHDL本身的生命周期長(zhǎng)。VHDL的硬件描述與工藝無(wú)關(guān),不會(huì)因工藝變化而過(guò)時(shí),而且與工藝技術(shù)有關(guān)的參數(shù)可以用VHDL提供的屬性加以描述,當(dāng)生產(chǎn)工藝改變時(shí),只需修改程序中相應(yīng)屬性參數(shù)即可。VHDL語(yǔ)言具有強(qiáng)大的語(yǔ)言功能、硬件描述能力和移植能力及設(shè)計(jì)與器件無(wú)關(guān)的特性,并且VHDL語(yǔ)言程序易于共享和復(fù)用,因此得到了十分廣泛的應(yīng)用。VHDL開(kāi)發(fā)流程采用VHDL語(yǔ)言對(duì)硬件電路進(jìn)行描述的過(guò)程應(yīng)該遵循一定的流程,通常情況下,其流程如圖2.2.2-1所示。圖2.2.2-1VHDL設(shè)計(jì)電路從流程圖可以看出,采用VHDL語(yǔ)言進(jìn)行硬件電路設(shè)計(jì)的開(kāi)發(fā)步驟主要包括以下幾步:①接受電路設(shè)計(jì)任務(wù)在進(jìn)行硬件電路系統(tǒng)設(shè)計(jì)之前,首先作出總體設(shè)計(jì)方案,然后給出相應(yīng)的硬件電路系統(tǒng)設(shè)計(jì)指標(biāo),最后將總體方案中各部分電路設(shè)計(jì)任務(wù)和要求下達(dá)給相應(yīng)的設(shè)計(jì)部門。②確定電路具體功能設(shè)計(jì)人員要具體分析電路的設(shè)計(jì)要求,確定其要實(shí)現(xiàn)的具體功能。③劃分模塊、編寫(xiě)程序利用VHDL語(yǔ)言設(shè)計(jì)硬件電路通常采用自頂向下的設(shè)計(jì)方法,從電路設(shè)計(jì)的總體要求出發(fā),先確定頂層模塊并進(jìn)行頂層模塊的設(shè)計(jì),然后將頂層模塊劃分為不同的完成一定邏輯功能的子功能模塊,最后再詳細(xì)設(shè)計(jì)子功能模塊。模塊劃分的好壞將會(huì)直接影響到最終的電路設(shè)計(jì),設(shè)計(jì)人員在這一步應(yīng)該花費(fèi)一定的時(shí)間,保證模塊劃分的最優(yōu)化。@VHDL語(yǔ)言程序模擬VHDL語(yǔ)言程序模擬即功能仿真,是利用仿真軟件對(duì)設(shè)計(jì)的邏輯功能進(jìn)行驗(yàn)證,可以在設(shè)計(jì)的早期發(fā)現(xiàn)電路設(shè)計(jì)上的缺陷和錯(cuò)誤,節(jié)省設(shè)計(jì)時(shí)間、縮短開(kāi)發(fā)周期。⑤綜合、優(yōu)化和布局布線綜合的作用簡(jiǎn)單的說(shuō)就將電路設(shè)計(jì)的較高級(jí)抽象層次的VHDL語(yǔ)言描述轉(zhuǎn)化成底層電路表示。優(yōu)化的作用是將電路設(shè)計(jì)的時(shí)延縮到最小和有效利用資源。布局布線的作用是將通過(guò)綜合和優(yōu)化所得到的邏輯規(guī)劃到一個(gè)邏輯器件的邏輯結(jié)構(gòu)中,然后將各邏輯單元放置到相應(yīng)優(yōu)化的位置,最后再進(jìn)行邏輯單元之間、邏輯單元和I/O之間的布線,以消除布線延遲。⑥布局布線后的程序模擬布局布線后的程序模擬又稱后仿真,既驗(yàn)證設(shè)計(jì)的邏輯功能,又驗(yàn)證時(shí)序。如果時(shí)序不能滿足要求,就需要回到前面的步驟重新進(jìn)行操作。⑦生成器件編程文件和進(jìn)行器件編程顧名思義,器件編程是針對(duì)可編程邏輯器件進(jìn)行的操作,具體過(guò)程是:將設(shè)計(jì)描述經(jīng)過(guò)編譯、綜合、優(yōu)化和布局布線的結(jié)果,經(jīng)過(guò)一定的映射轉(zhuǎn)化成一個(gè)器件編程所用的數(shù)據(jù)文件格式,然后通過(guò)燒片器或者下載電纜將數(shù)據(jù)文件下載到指定的可編程邏輯器件中去的過(guò)程。FPGA開(kāi)發(fā)介紹FPGA簡(jiǎn)介FPGA是20世紀(jì)90年代發(fā)展起來(lái)的,其密度已超過(guò)25X104f-JA平,內(nèi)部門延時(shí)小于3ns。這種器件完成某種特定的功能是完全由用戶通過(guò)軟件進(jìn)行配置和編程來(lái)實(shí)現(xiàn)的,而且可以反復(fù)擦寫(xiě),它具有芯片邏輯資源豐富、成本低、功耗小等優(yōu)勢(shì)。此外,它的另一個(gè)突出特點(diǎn)是現(xiàn)場(chǎng)編程,在FPGA工作的現(xiàn)場(chǎng),可以不通過(guò)計(jì)算機(jī)把存于FPGA外的ROM中的編程數(shù)據(jù)加載給FPGA,通過(guò)簡(jiǎn)單的設(shè)備就能改變FPGA中的編程數(shù)據(jù),從而改變FPGA執(zhí)行的邏輯功能。這種方法也叫做ICR(haCircuitReconfiguration,在電路上直接配置)編程。FPGA的這個(gè)特點(diǎn)為工程技術(shù)人員維修、改進(jìn)、更新電路邏輯功能提供了方便。大部分FPGA采用基于SRAM的查找表(LUT,Look.Up.Table)結(jié)構(gòu)。查找表本質(zhì)上就是一個(gè)RAM。若邏輯函數(shù)具有11個(gè)輸入項(xiàng)的話,就需要由輸入個(gè)數(shù)為n、容量為2n個(gè)位的RAM單元存放函數(shù)值,RAM的地址線起輸入線的作用,地址即輸入變量,RAM輸出為邏輯函數(shù)值。每輸入一個(gè)信號(hào)進(jìn)行邏輯運(yùn)算就等于輸入一個(gè)地址進(jìn)行查表,地址所對(duì)應(yīng)的內(nèi)容就是輸出。FPGA開(kāi)發(fā)流程圖2.3.2-1FPGA開(kāi)發(fā)流程對(duì)于目標(biāo)器件為FPGA和CPLD的HDL設(shè)計(jì),其工程設(shè)計(jì)的基本流程如圖圖2.3.2-1所示。現(xiàn)具體說(shuō)明如下:1、文本編輯:用任何文本編輯器都可以進(jìn)行,也可以用專用的HDL編輯環(huán)境。通常VHDL文件保存為.vhd文件2、功能仿真:將文件調(diào)入HDL仿真軟件進(jìn)行功能仿真,檢查邏輯功能是否正確(也叫前仿真,對(duì)簡(jiǎn)單的設(shè)計(jì)可以跳過(guò)這一步,只在布線完成以后,進(jìn)行時(shí)序仿真)3、邏輯綜合:將源文件調(diào)入邏輯綜合軟件進(jìn)行綜合,即把語(yǔ)言綜合成最簡(jiǎn)的布爾表達(dá)式。邏輯綜合軟件會(huì)生成.edf(edif)的EDA工業(yè)標(biāo)準(zhǔn)文件。4、布局布線:將.edf文件調(diào)入PLD廠家提供的軟件中進(jìn)行布線,即把設(shè)計(jì)好的邏輯安放到PLD/FPGA內(nèi)。5、時(shí)序仿真:需要利用在布局布線中獲得的精確參數(shù),用仿真軟件驗(yàn)證電路的時(shí)序。(也叫后仿真)6、編程下載:確認(rèn)仿真無(wú)誤后,將文件下載到芯片中7、硬件測(cè)試:硬件測(cè)試的目的是為了在更真實(shí)的環(huán)境中檢驗(yàn)HDL設(shè)計(jì)的運(yùn)行情況,特別是對(duì)于HDL程序設(shè)計(jì)上不是十分規(guī)范,語(yǔ)義上含有一定歧義的程序。第三章數(shù)字式秒表的軟件開(kāi)發(fā)環(huán)境本章主要介紹項(xiàng)目中將要用到了一系列軟件,包括用于VHDL語(yǔ)言編寫(xiě)和編譯的ISE軟件和用于程序仿真的仿真軟件ModelSim。3.1開(kāi)發(fā)環(huán)境在考慮各種情況后,在本次設(shè)計(jì)中,由于選擇的FPGA芯片是由Xilinx公司生產(chǎn)的,所以我們主要使用ModelSim和ISE軟件進(jìn)行仿真和綜合。3.2ModelSim介紹ModelSim是業(yè)界最優(yōu)秀的HDL語(yǔ)言仿真器,它提供最友好的調(diào)試環(huán)境,是唯一的單內(nèi)核支持VHDL和Verilog混合仿真的仿真器。是作FPGA/ASIC設(shè)計(jì)的RTL級(jí)和門級(jí)電路仿真的首選,它采用直接優(yōu)化的編譯技術(shù)、TcFTk技術(shù)、單一內(nèi)核仿真技術(shù),編譯仿真速度快,編譯的代碼與平臺(tái)無(wú)關(guān),便于保護(hù)IP核,個(gè)性化的圖形界面和用戶接口,為用戶加快調(diào)錯(cuò)提供強(qiáng)有力的手段。全面支持VHDL和Verilog語(yǔ)言的IEEE標(biāo)準(zhǔn),支持C/C++功能調(diào)用和調(diào)試。ModelSim專業(yè)版,具有快速的仿真性能和最先進(jìn)的調(diào)試能力,全面支持UNIX(包括64位)、Linux和Windows平臺(tái)。主要特點(diǎn):RTL和門級(jí)優(yōu)化,本地編譯結(jié)構(gòu),編譯仿真速度快;單內(nèi)核VHDL和Verilog混合仿真;源代碼模版和助手,項(xiàng)目管理;集成了性能分析、波形比較、代碼覆蓋等功能;數(shù)據(jù)流ChaseX;SignalSpy;C和Tcl/Tk接121,C調(diào)試。是業(yè)界唯一單一內(nèi)核支持VHDL、VerilogHDL和SystemC混合仿真的仿真器。同時(shí)也支持業(yè)界最廣泛的標(biāo)準(zhǔn)如Verilog2001、SystemVerilog等,內(nèi)部集成了用于C/C++,PLI/FLI和SystemC的集成C調(diào)試器。支持眾多的ASIC和FPGA廠家?guī)欤梢杂糜贔PGA和ASIC設(shè)計(jì)的RTL級(jí)和門級(jí)電路仿真。ModelSiml8J最大的特點(diǎn)是其強(qiáng)大的調(diào)試功能:先進(jìn)的數(shù)據(jù)流窗121,可以迅速追蹤到產(chǎn)生不定或者錯(cuò)誤狀態(tài)的原因;性能分析工具幫助分析性能瓶頸,加速仿真;代碼覆蓋率檢查確保測(cè)試的完備;多種模式的波形比較功能;先進(jìn)的SignalSpy功能,可以方便地訪問(wèn)VHDL或者VHDL和Verilog混合設(shè)計(jì)中的底層信號(hào);支持加密IP;可以實(shí)現(xiàn)與Matlab的Simulink的聯(lián)合仿真。ModelSim分幾種不同的版本:SE、PE、LE和OEM,其中SE是最高級(jí)的版本而集成在Actel、Atmel、Altera、Xilinx以及Lattice等FPGA廠商設(shè)計(jì)工具中的均是其OEM版本。SE版和OEM版在功能和性能方面有較大差別,比如對(duì)于大家都關(guān)心的仿真速度問(wèn)題,以Xilinx公司提供的OEM版本ModelSimXE為例,對(duì)于代碼少于40000行的設(shè)計(jì),ModelSimSE比ModelSimXE要快10倍;對(duì)于代碼超過(guò)40000行的設(shè)計(jì),ModelSimSE要比ModelSimXE快近40倍。3.3ISE介紹ISEt是Xilinx公司提供的集成化FPGA開(kāi)發(fā)軟件,它的主要功能包括設(shè)計(jì)輸入、綜合、仿真、實(shí)現(xiàn)和下載。(1)設(shè)計(jì)輸入ISE軟件提供的設(shè)計(jì)輸入工具包括用于HDL代碼輸入和報(bào)告查看的ISE文本編輯器(TextEditor),用于原理圖編輯的工具ECS(EngineeringCaptureSystem),用于PCORE的COREGenerator,用于狀態(tài)機(jī)設(shè)計(jì)的StateCAD,以及用于約束文件編輯的ConstraintEditor等。(2)綜合ISE的綜合工具不但包括了Xilinx自身提供的綜合工具xsr,同時(shí)還可以集成MentorGraphics公司的LeonardoSpectrum和Synplicity公司的Synplify。(3)仿真ISE本身自帶了圖形化波形編輯功能的仿真工具HDLBencher,同時(shí)又提供了使用ModelTechnology公司的ModelSim進(jìn)行仿真的接口。(4)實(shí)現(xiàn)ISE的實(shí)現(xiàn)功能包括了翻譯(Translate)、映射(Map)、布局布線(PlaceandRoute)等。(5)下載下載功能包括了BitGen,用于將布局布線后的設(shè)計(jì)文件轉(zhuǎn)換為比特流(Bitstream)文件。還包括了iMPACT功能,用于進(jìn)行設(shè)備配置和通信,控制將程序燒寫(xiě)到FPGA芯片中去。使用ISE進(jìn)行FPGA開(kāi)發(fā)大致可以分為3個(gè)步驟。(1)設(shè)計(jì)輸入和仿真設(shè)計(jì)輸入(DesignEntry)是指以HDL代碼、原理圖、波形圖以及狀態(tài)機(jī)的形式輸入設(shè)汁源文件,而設(shè)計(jì)仿真(Simdmion)是指通過(guò)仿真工具對(duì)設(shè)計(jì)的整體模塊或局部模塊進(jìn)行仿真來(lái)檢驗(yàn)設(shè)計(jì)的功能和性能。(2)用戶約束條件、綜合和實(shí)現(xiàn)用戶約束條件(UserConstraints)的作用是對(duì)綜合、實(shí)現(xiàn)過(guò)程進(jìn)行控制,滿足速度、面積、引腳位置等需求。編輯約束條件又包括了4個(gè)子項(xiàng),意義分別為:創(chuàng)建時(shí)間約束、配置引腳、創(chuàng)建面積約束、以文本方式編輯約束。綜合(Synthesize)是FPGA設(shè)計(jì)流程中的重要環(huán)節(jié),綜合結(jié)果的優(yōu)劣直接影響到設(shè)計(jì)的最終性能。ISE自帶的綜合工具是XST,同時(shí)它也支持Synplify/SynplifyPro等第三方綜合工具,但是由于Xilinx對(duì)于其器件的底層最為了解,所以使用XST綜合往往會(huì)得到比較滿意的結(jié)果。綜合包含了3個(gè)子項(xiàng),意義分別為:查看綜合報(bào)告、查看綜合器件的RTL級(jí)原理圖和檢查語(yǔ)法。實(shí)現(xiàn)(Implementation)過(guò)程也包含了3個(gè)子項(xiàng),.ImplementDesign項(xiàng)所對(duì)應(yīng)的子項(xiàng),意義分別是:翻譯、映射和布局布線。需要注意,進(jìn)行實(shí)現(xiàn)步驟之前必須進(jìn)行約束條件的編輯,否則實(shí)現(xiàn)可能會(huì)出錯(cuò)。(3)硬件編程硬件編程(Programming)是指生成編輯比特流文件bit,并將其下載到FPGA芯片內(nèi)部的過(guò)程。硬件編程對(duì)應(yīng)圖2--5所示的GenerateProgrammingFile項(xiàng)。第四章電子秒表的設(shè)計(jì)與實(shí)現(xiàn)第四章數(shù)字式秒表的設(shè)計(jì)與實(shí)現(xiàn)任務(wù)要求實(shí)驗(yàn)條件原理框圖按照以上需求,整個(gè)電路的原理圖如圖4.3-1所示:圖4.3-1電路原理圖從原理圖可知,系統(tǒng)需要以下模塊:1.分頻器:對(duì)晶體振蕩器產(chǎn)生的時(shí)鐘進(jìn)行分頻,產(chǎn)生時(shí)間基準(zhǔn)信號(hào)。2.計(jì)數(shù)器:對(duì)時(shí)間基準(zhǔn)脈沖進(jìn)行計(jì)數(shù),完成計(jì)時(shí)功能。3.數(shù)據(jù)鎖存器:鎖存數(shù)據(jù),使顯示保持暫停。4.控制器:控制計(jì)數(shù)器的運(yùn)行、停止以及復(fù)位,產(chǎn)生鎖存器的使能信號(hào)。5.掃描顯示的控制電路:包括掃描計(jì)數(shù)器、數(shù)據(jù)選擇器和七段譯碼器,控制8個(gè)數(shù)碼管以掃描方式,顯示結(jié)果。6.按鍵消抖電路:消除按鍵輸入信號(hào),輸出單脈沖。各模塊的實(shí)現(xiàn)分頻器XC3S200A芯片的外部有源晶振頻率為48MHz,考慮到系統(tǒng)的穩(wěn)定性,本設(shè)計(jì)選擇了1KHz的信號(hào)作為各模塊的時(shí)鐘信號(hào),即對(duì)晶振信號(hào)進(jìn)行1/480000分頻。對(duì)晶振時(shí)鐘信號(hào)進(jìn)行計(jì)數(shù),對(duì)每個(gè)上升沿,計(jì)數(shù)器加1;當(dāng)計(jì)數(shù)達(dá)到47999時(shí),計(jì)數(shù)清零,從頭開(kāi)始計(jì)數(shù),最后獲取計(jì)數(shù)的第15位為計(jì)數(shù)的輸出信號(hào)仿真結(jié)果如圖4.4.1.2-1所示,時(shí)鐘周期為48000。圖4.4.1.2-11KHZ信號(hào)仿真圖輸入控制電路輸入控制模塊的功能是識(shí)別有效地按鍵輸入和實(shí)現(xiàn)輸入的按鍵信號(hào)對(duì)電子秒表不同狀態(tài)的控制。,秒表的狀態(tài)可分為計(jì)數(shù)開(kāi)/關(guān),顯示鎖定開(kāi)/關(guān)和清零??嫉接袃蓚€(gè)輸入按鍵,所以必須有輸入控制電路,同時(shí)考慮到按下按鍵以及松開(kāi)按鍵會(huì)出現(xiàn)抖動(dòng),所以必須設(shè)計(jì)防抖動(dòng)電路。即按鍵輸入信號(hào),必須先經(jīng)過(guò)防抖電路,然后進(jìn)入控制電路。消抖電路由于按鍵輸入,在按下過(guò)程中電平可能會(huì)有一個(gè)不確定的抖動(dòng)狀態(tài)。由于識(shí)別的有效按鍵電平為持續(xù)的低電平,因此設(shè)計(jì)一消抖電路,頂層設(shè)計(jì)框圖如下:消抖電路的仿真結(jié)果如下所示:由圖可見(jiàn)在1khz的驅(qū)動(dòng)下,消抖電路能夠做到每按一次按鍵只輸出一個(gè)時(shí)鐘周期,達(dá)到了按鍵消抖的目的。在實(shí)際板子上應(yīng)用的時(shí)候,也還要根據(jù)按鍵實(shí)際情況來(lái)調(diào)整一下計(jì)數(shù)的周期,從而達(dá)到最佳的效果??刂齐娐穲D4.4.2.2-1控制電路狀態(tài)圖兩個(gè)去抖動(dòng)電路傳入兩個(gè)信號(hào),將其組合成一個(gè)2bit輸入(Start/Stop為高位,Split/Reset為低位),分別代表4個(gè)狀態(tài):=1\*GB3①“00”狀態(tài):鎖定關(guān),計(jì)數(shù)關(guān),清零關(guān),輸出“111”;=2\*GB3②“10”狀態(tài):鎖定關(guān),計(jì)數(shù)開(kāi),清零關(guān),輸出“101”;=3\*GB3③“11”狀態(tài):鎖定開(kāi),計(jì)數(shù)開(kāi),清零關(guān),輸出“001”;=4\*GB3④“01”狀態(tài):鎖定關(guān),計(jì)數(shù)關(guān),清零開(kāi),輸出“110”;處在“01”狀態(tài)時(shí),過(guò)一個(gè)時(shí)鐘周期自動(dòng)回到“00”狀態(tài)。狀態(tài)圖如圖4.4.2.2-1所示。源程序?yàn)橐?jiàn)附錄。仿真結(jié)果如圖4.4.2.2-2所示,圖4.4.2.2-2控制電路仿真計(jì)時(shí)模塊由設(shè)計(jì)指標(biāo)可知,秒表由六位顯示最大計(jì)時(shí)為59min59s99,所以需要4個(gè)10進(jìn)制計(jì)數(shù)器,還有兩個(gè)6進(jìn)制計(jì)數(shù)器。其中有暫定,清零的功能。整個(gè)計(jì)時(shí)模塊的頂層設(shè)計(jì)電路圖如下:十進(jìn)制計(jì)數(shù)器計(jì)數(shù)器輸入端每識(shí)別一個(gè)上升沿,就依次從“0000”計(jì)數(shù)到“1001”。當(dāng)計(jì)數(shù)變?yōu)椤?001”時(shí),進(jìn)位端從‘1’變?yōu)椤?’,在下個(gè)輸入的上升沿“1001”變?yōu)椤?000”,進(jìn)位端恢復(fù)‘1’。如此,將進(jìn)位端連入下一級(jí)的輸入端時(shí),可以實(shí)現(xiàn)低位由9變?yōu)?時(shí)高位進(jìn)1。當(dāng)清零信號(hào)有效時(shí),計(jì)數(shù)器強(qiáng)制將計(jì)數(shù)值變?yōu)椤?000”。源程序?yàn)橐?jiàn)附錄.圖4.4.3.1-1十進(jìn)制計(jì)數(shù)器仿真圖如圖4.4.3.1-1所示,計(jì)數(shù)周期為10。六進(jìn)制計(jì)數(shù)器六進(jìn)制計(jì)數(shù)范圍是“0000”到“0110”,在“0110”時(shí)進(jìn)位端發(fā)生變低,之后計(jì)數(shù)變?yōu)椤?000”,進(jìn)位端恢復(fù)高電平。對(duì)于六進(jìn)制來(lái)說(shuō),三個(gè)二進(jìn)制位就能夠滿足計(jì)數(shù)需要,但是考慮到后面譯碼器的輸入均為四個(gè)二進(jìn)制位,所以計(jì)數(shù)用4bit,方便譯碼。源程序?yàn)橐?jiàn)附錄。圖4.4.3.2-1六進(jìn)制計(jì)數(shù)器仿真圖如圖4.4.3.2-1所示,計(jì)數(shù)周期為6。計(jì)數(shù)器組合由于顯示的最大計(jì)數(shù)為59min59s99,所以需要四位十進(jìn)制計(jì)數(shù)器,以及二位六進(jìn)制計(jì)數(shù)器。所以需要將六個(gè)計(jì)數(shù)器組合起來(lái),由低位計(jì)數(shù)達(dá)到最大值,向前一位進(jìn)1;由于輸入的是1khz信號(hào),這里用另外用了一個(gè)模10計(jì)數(shù)器將1khz信號(hào)分頻到100hz,最后組合的電路模塊連接圖如下:圖4.4.3.3-1計(jì)數(shù)器組合仿真圖鎖存器鎖存器實(shí)現(xiàn)電子秒表的顯示鎖定功能。其輸入時(shí)鐘為外部時(shí)鐘(1kHz)。當(dāng)鎖定信號(hào)無(wú)效時(shí),在每個(gè)時(shí)鐘上升沿將輸入的數(shù)據(jù)信號(hào)輸出;當(dāng)鎖定信號(hào)有效時(shí),輸出的數(shù)據(jù)信號(hào)保持當(dāng)前值,無(wú)視輸入數(shù)據(jù)的改變,源程序見(jiàn)附錄。圖4.4.3.4-1鎖存器仿真圖放著結(jié)果如圖4.4.3.4-1所示,當(dāng)輸入信號(hào)為高電平時(shí),輸出和輸入信號(hào)相同;當(dāng)輸入信號(hào)為低電平時(shí),輸出信號(hào)保持當(dāng)前值。顯示模塊顯示模塊主要完成顯示掃描和編碼翻譯的功能。其中需要用到掃描器,多路選擇器和譯碼器,時(shí)鐘信號(hào)連接一個(gè)掃描器,用計(jì)數(shù)原理輸出3bit掃描信號(hào)。利用3-8譯碼器的原理,實(shí)現(xiàn)對(duì)八位數(shù)碼管的掃描,輸出位選信號(hào);另一方面根據(jù)相應(yīng)的位選信號(hào),將要現(xiàn)實(shí)的bacd碼轉(zhuǎn)換成數(shù)碼管的七段顯示碼輸出,整個(gè)顯示模塊的頂層電路圖如下:掃描器掃描器實(shí)現(xiàn)了八位數(shù)碼管共用一組輸入數(shù)據(jù)的可能性。其通過(guò)一個(gè)計(jì)數(shù)器,在每個(gè)時(shí)鐘信號(hào)的上升沿,其輸出的三位二進(jìn)制信號(hào)加一,從“000”計(jì)數(shù)到“111”。當(dāng)輸出為“111”時(shí),下一個(gè)時(shí)鐘上升沿輸出變?yōu)椤?00”,關(guān)鍵的程序代碼如下:weixuan_code<=weixuan_code+1whenclk'eventandclk='1';圖4.4.4.1-1掃描器仿真圖掃描器仿真圖如圖4.4.4.1-1所示,掃描器根據(jù)時(shí)鐘信號(hào)從“000”計(jì)數(shù)到“111”。多路選擇器多路選擇器輸入八組四位數(shù)據(jù)信號(hào)和一組三位掃描信號(hào),通過(guò)掃描信號(hào)的狀態(tài)選擇相應(yīng)的數(shù)據(jù)信號(hào)進(jìn)行輸出源程序,源程序見(jiàn)附錄。圖4.4.4.2-1多路選擇器仿真圖多路選擇器放著結(jié)果如圖4.4.4.2-1所示,多路選擇器根據(jù)掃描信號(hào)的輸入選擇相應(yīng)的信號(hào)輸出。分配引腳和下載實(shí)現(xiàn)全部仿真通過(guò)后,就運(yùn)行ISE的設(shè)計(jì)實(shí)現(xiàn),然后再打開(kāi)XILINXPACE,在里面分配引腳,即實(shí)現(xiàn)設(shè)計(jì)的輸入輸出端口與實(shí)際芯片的輸入輸出端口的對(duì)應(yīng)連接。比如七段LED管的控制信號(hào)就連接到實(shí)際電路的七個(gè)引腳。需要注意的是一些端口是固定的,不能胡亂的連接。比如時(shí)基信號(hào)即石英振蕩器所提供的信號(hào)就只能由T8輸入。一切都準(zhǔn)備就緒后就,便可開(kāi)始下載了.分配引腳的源文件如下:NET"clk_raw"LOC=N9;NET"duanxuan<7>"LOC=B12;NET"duanxuan<6>"LOC=A11;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;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"weixuan<6>"LOC=H13;NET"weixuan<7>"LOC=G13;測(cè)試結(jié)果這個(gè)電路完成后的最頂層模塊電路圖如下:在成功下載并運(yùn)行后,進(jìn)行了各按鈕功能的檢測(cè)(包括計(jì)數(shù)、暫停、復(fù)位、清零等功能的檢查),以及與標(biāo)準(zhǔn)時(shí)間進(jìn)行了對(duì)比,符合實(shí)驗(yàn)預(yù)估的各項(xiàng)指標(biāo),成功完成了數(shù)字式秒表的設(shè)計(jì)與實(shí)現(xiàn)。第五章結(jié)論第五章結(jié)論本文主要介紹了利用VHDL語(yǔ)言完成基于FPGA的數(shù)字秒表的設(shè)計(jì)與實(shí)現(xiàn)。詳細(xì)介紹了設(shè)計(jì)原理,設(shè)計(jì)方案以及各模塊的設(shè)計(jì)過(guò)程及其實(shí)現(xiàn)的功能,并利用ISE和ModelSim對(duì)設(shè)計(jì)進(jìn)行了仿真,分析,綜合,并最終下載實(shí)際電路板中,成功實(shí)現(xiàn)了數(shù)字式秒表的所有功能。致謝參考文獻(xiàn)[1]朱正偉.EDA技術(shù)及應(yīng)用.清華大學(xué)出版社.2009[2]ISE開(kāi)發(fā)流程[3]Modelsim仿真流程致謝首先必須感謝的是劉曦老師對(duì)我的教導(dǎo),在實(shí)驗(yàn)過(guò)程中對(duì)我的幫助,在此對(duì)劉曦老師致于最衷心的感謝。其次感謝我的同學(xué)們,在我遇到問(wèn)題時(shí),能給我分析以及解決。最后感謝電子技術(shù)綜合實(shí)驗(yàn)這門課程,讓我從中學(xué)到了很多的東西。附錄附錄附錄1.電子秒表的頂文件--Company:--Engineer:----CreateDate:11:03:0911/18/2015--DesignName:--ModuleName:my_watch-Behavioral--ProjectName:--TargetDevices:--Toolversions:--Description:Dependencies:Revision:Revision0.01-FileCreatedAdditionalComments:--#OBUF:16--=========================================================================Deviceutilizationsummary:SelectedDevice:3s200aft256-5NumberofSlices:61outof17923%--NumberofSliceFlipFlops:79outof35842%--Numberof4inputLUTs:109outof35843%--NumberofIOs:19--NumberofbondedIOBs:19outof1959%--NumberofGCLKs:3outof2412%libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entitymy_watchisport(clk_raw,start_stop,split_reset:instd_logic; weixuan:outstd_logic_vector(7downto0); duanxuan:outstd_logic_vector(7downto0)); endmy_watch;architectureBehavioralofmy_watchis COMPONENTfenpin PORT( clk_raw:INstd_logic; clk_1kh:OUTstd_logic ); ENDCOMPONENT; COMPONENTdouxiao PORT( clk:INstd_logic; key_in:INstd_logic; key_out:OUTstd_logic ); ENDCOMPONENT; COMPONENTcounter PORT( clk:INstd_logic; rst:INstd_logic; count_en:INstd_logic; seg1:OUTstd_logic_vector(3downto0); seg2:OUTstd_logic_vector(3downto0); seg3:OUTstd_logic_vector(3downto0); seg4:OUTstd_logic_vector(3downto0); seg5:OUTstd_logic_vector(3downto0); seg6:OUTstd_logic_vector(3downto0) ); ENDCOMPONENT; COMPONENTcontrol PORT( clk:INstd_logic; start_stop:INstd_logic; reset_split:INstd_logic; reset:OUTstd_logic; counter_en:OUTstd_logic; latch_en:OUTstd_logic ); ENDCOMPONENT; COMPONENTlatch PORT( latch_en:INstd_logic; cin1:INstd_logic_vector(3downto0); cin2:INstd_logic_vector(3downto0); cin3:INstd_logic_vector(3downto0); cin4:INstd_logic_vector(3downto0); cin5:INstd_logic_vector(3downto0); cin6:INstd_logic_vector(3downto0); cout1:OUTstd_logic_vector(3downto0); cout2:OUTstd_logic_vector(3downto0); cout3:OUTstd_logic_vector(3downto0); cout4:OUTstd_logic_vector(3downto0); cout5:OUTstd_logic_vector(3downto0); cout6:OUTstd_logic_vector(3downto0) ); ENDCOMPONENT; COMPONENTdisplay PORT( clk:INstd_logic; cin1:INstd_logic_vector(3downto0); cin2:INstd_logic_vector(3downto0); cin3:INstd_logic_vector(3downto0); cin4:INstd_logic_vector(3downto0); cin5:INstd_logic_vector(3downto0); cin6:INstd_logic_vector(3downto0); seg:OUTstd_logic_vector(7downto0); weixuan:OUTstd_logic_vector(7downto0) ); ENDCOMPONENT;signalclk_1kh,net_start,net_split,net_reset,net_counter_en,net_latch_en:std_logic;signalnet_seg1,net_seg2,net_seg3,net_seg4,net_seg5,net_seg6:std_logic_vector(3downto0);signalnet_out1,net_out2,net_out3,net_out4,net_out5,net_out6:std_logic_vector(3downto0);begin u0:fenpinPORTMAP( clk_raw=>clk_raw, clk_1kh=>clk_1kh ); u2:douxiaoPORTMAP( clk=>clk_1kh, key_in=>start_stop, key_out=>net_start ); u3:douxiaoPORTMAP( clk=>clk_1kh, key_in=>split_reset, key_out=>net_split ); u4_control:controlPORTMAP( 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:counterPORTMAP( clk=>clk_1kh, rst=>net_reset, count_en=>net_counter_en, seg1=>net_seg1, seg2=>net_seg2, seg3=>net_seg3, seg4=>net_seg4, seg5=>net_seg5, seg6=>net_seg6 ); u6:latchPORTMAP( latch_en=>net_latch_en, cin1=>net_seg1, cin2=>net_seg2, cin3=>net_seg3, cin4=>net_seg4, cin5=>net_seg5, cin6=>net_seg6, cout1=>net_out1, cout2=>net_out2, cout3=>net_out3, cout4=>net_out4, cout5=>net_out5, cout6=>net_out6 ); u7:displayPORTMAP( clk=>clk_1kh, cin1=>net_out1, cin2=>net_out2, cin3=>net_out3, cin4=>net_out4, cin5=>net_out5, cin6=>net_out6, seg=>duanxuan, weixuan=>weixuan );附錄2分頻器signala1:std_logic_vector(15downto0):=(others=>'0');beginprocess(clk_raw)isbeginifrising_edge(clk_raw)thenifa1=47999then a1<=(others=>'0'); else a1<=a1+1; endif; endif;endprocess;clk_1kh<=a1(15);附錄3消抖電路signalcnt:std_logic_vector(2downto0):=(others=>'0');signalk1,k2:std_logic;begin p1:process(key_in,clk) begin ifkey_in='1'then cnt<="000"; elsiffalling_edge(clk)then ifcnt/=7then cnt<=cnt+1; endif; endif; endprocess; p2:process(clk) begin iffalling_edge(clk)then ifcnt/=7then k1<='0'; else k1<='1'; endif; k2<=k1; endif; endprocess; p3:key_out<=(notk1)andk2; 附錄4控制電路process(c_state,condition)begin casec_stateis when"101"=> caseconditionis when"10"=>n_state<="011"; whenothers=>n_state<="101"; endcase; when"011"=> caseconditionis when"01"=>n_state<="010"; wh

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論