歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

電子科技大學(xué)數(shù)字式秒表設(shè)計(jì)與實(shí)現(xiàn) 實(shí)驗(yàn)報(bào)告材料

  • 資源ID:85763581       資源大?。?span id="f0lpxdo" class="font-tahoma">1.43MB        全文頁數(shù):32頁
  • 資源格式: DOC        下載積分:10積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要10積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號:
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

電子科技大學(xué)數(shù)字式秒表設(shè)計(jì)與實(shí)現(xiàn) 實(shí)驗(yàn)報(bào)告材料

word數(shù)字式秒表設(shè)計(jì)與實(shí)現(xiàn) 指導(dǎo)老師: :學(xué)號:摘 要 本文主要介紹了基于FPGA使用VHDL語言的數(shù)字式秒表的設(shè)計(jì)開發(fā)流程。該設(shè)計(jì)以VHDL作為硬件開發(fā)語言,以ISE作為軟件開發(fā)平臺,成功的實(shí)現(xiàn)了數(shù)字式秒表的計(jì)數(shù)、清零、暫停等功能。并使用了ModelSim仿真軟件對各個單元電路模塊進(jìn)行了仿真,且完成了綜合布局布線,最終下載到電路板上,實(shí)際測試結(jié)果良好。關(guān)鍵字:FPGA,VHDL,數(shù)字32 / 32目錄數(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.2VHDL語言介紹52.2.1VHDL的特點(diǎn)52.2.2VHDL開發(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è)計(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ì)時模塊164.4.4顯示模塊184.5分配引腳和下載實(shí)現(xiàn)194.6測試結(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第一章引言1.1 選題背景電子技術(shù)綜合實(shí)驗(yàn)課程通過引入模擬電子技術(shù)和數(shù)字邏輯設(shè)計(jì)的綜合應(yīng)用、基于MCU/FPGA/EDA技術(shù)的系統(tǒng)設(shè)計(jì)等綜合型設(shè)計(jì)型實(shí)驗(yàn),對學(xué)生進(jìn)行電子系統(tǒng)綜合設(shè)計(jì)與實(shí)踐能力的訓(xùn)練與培養(yǎng)。通過電子技術(shù)綜合實(shí)驗(yàn)課程的學(xué)習(xí),使學(xué)生對系統(tǒng)設(shè)計(jì)原理、主要性能參數(shù)的選擇原則、單元電路和系統(tǒng)電路設(shè)計(jì)方法及仿真技術(shù)、測試方法擬定及調(diào)測技術(shù)有所了解;使學(xué)生初步掌握電子技術(shù)中應(yīng)用開發(fā)的一般流程,初步建立起有關(guān)系統(tǒng)設(shè)計(jì)的基本概念,掌握其基本設(shè)計(jì)方法,為將來從事電子技術(shù)應(yīng)用和研究工作打下基礎(chǔ)。1.2 實(shí)驗(yàn)方式n 教師引導(dǎo)下的自主實(shí)驗(yàn)n 設(shè)計(jì)的全過程:方案、電路設(shè)計(jì)與仿真、設(shè)計(jì)與實(shí)現(xiàn)、測試與調(diào)整、總結(jié)報(bào)告1.3 技能培養(yǎng)n 數(shù)字電路的綜合設(shè)計(jì)應(yīng)用n HDL語言 n FPGA應(yīng)用 n EDA軟件:ISE、Modelsimn 硬件電路制作或設(shè)計(jì),調(diào)整與實(shí)現(xiàn)n 設(shè)計(jì)文檔撰寫 n 資料查閱第二章基于FPGA的VHDL設(shè)計(jì)流程第2章2.1 概述數(shù)字秒表是數(shù)字電路中的一個典型應(yīng)用,實(shí)際的硬件設(shè)計(jì)用到的器件較多,連線比較復(fù)雜,而且會產(chǎn)生比較大的延時,造成測量誤差、可靠性差。秒表的設(shè)計(jì)有傳統(tǒng)方法和現(xiàn)代方法,傳統(tǒng)的設(shè)計(jì)方法耗時耗功,設(shè)計(jì)強(qiáng)度大,且容易出錯,設(shè)計(jì)的質(zhì)量不一定是最好的。自然我們考慮到現(xiàn)代方法,即EDA。在EDA設(shè)計(jì)工具中,用的最廣泛的是VHDL和VERILOG,當(dāng)然還有其它的。比較VHDL和VERILOG,在頂層設(shè)計(jì)方面VHDL優(yōu)于VERILOG,在門級電路設(shè)計(jì)方面VERILOG優(yōu)于VHDL。隨著復(fù)雜可編程邏輯器件(CPLD)的廣泛應(yīng)用,以EDA工具作為開發(fā)手段,運(yùn)用VHDL語言,將使整個系統(tǒng)大大簡化,提高整體的性能和可靠性。本次的數(shù)字式秒表設(shè)計(jì)主要是先頂層設(shè)計(jì),將秒表的除了外部輸入部分以外,其余全部在一片F(xiàn)PGA芯片上實(shí)現(xiàn),整個系統(tǒng)非常精簡,而且具有靈活的現(xiàn)場可更改性。在不更改硬件電路的基礎(chǔ)上,對系統(tǒng)進(jìn)行各種改進(jìn)還可以進(jìn)一步提高系統(tǒng)的性能。該數(shù)字式秒表具有高速、精確、可靠、抗干擾性強(qiáng)和現(xiàn)場可編程等優(yōu)點(diǎn)。2.2 VHDL語言介紹VHDL語言是一種硬件描述語言(Hardware DescriptionLanguage,HDL),主要用在可編程邏輯器件(CPLDFPGA)和專用集成電路(ASIC)兩個領(lǐng)域。寫好的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))分成外部和部兩部分,外部即可視部分,對設(shè)計(jì)實(shí)體和端口引腳進(jìn)行聲明;部即不可視部分,描述模塊的功能和算法。VHDL從實(shí)體與外部的接口以及實(shí)體部的功能與結(jié)構(gòu)這兩個方面來描述實(shí)體,設(shè)計(jì)實(shí)體定義成功后就可生成共享功能模塊。在頂層綜合或其他設(shè)計(jì)中就可以直接調(diào)用這個實(shí)體模塊。這種將設(shè)計(jì)實(shí)體分成外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本點(diǎn)。2.2.1 VHDL的特點(diǎn)VHDL的特點(diǎn):具有更強(qiáng)的行為描述能力VHDL的硬件描述能力很強(qiáng),可以用于從門級、電路級直至系統(tǒng)級的描述、仿真、綜合和調(diào)試,從邏輯功能和行為上描述和設(shè)計(jì)大規(guī)模系統(tǒng),避開了具體器件部結(jié)構(gòu)。支持層次化和模塊化設(shè)計(jì)這是運(yùn)用EDA工具進(jìn)行電路和系統(tǒng)設(shè)計(jì)區(qū)別于傳統(tǒng)設(shè)計(jì)方法的重要方面,簡化了系統(tǒng)設(shè)計(jì),優(yōu)化了系統(tǒng)結(jié)構(gòu),提高了系統(tǒng)可靠性。可仿真與可綜合仿真是指代碼模擬硬件的行為,綜合是指將代碼轉(zhuǎn)化成可物理實(shí)現(xiàn)的電路結(jié)構(gòu)。所有的VHDL語句都能用于仿真,但有一部分VHDL語句不能進(jìn)行綜合、翻譯成與之對應(yīng)的硬件電路,并在邏輯器件上實(shí)現(xiàn)。VHDL強(qiáng)大的仿真建模功能使設(shè)計(jì)者能在系統(tǒng)設(shè)計(jì)的各個階段都能十分方便地對數(shù)字系統(tǒng)進(jìn)行仿真驗(yàn)證。系統(tǒng)設(shè)計(jì)與硬件結(jié)構(gòu)無關(guān)VHDL語言對設(shè)計(jì)的描述具有相對獨(dú)立性,設(shè)計(jì)者可以進(jìn)行獨(dú)立的設(shè)計(jì),可以不懂硬件的結(jié)構(gòu),也不必了解最終設(shè)計(jì)實(shí)現(xiàn)的目標(biāo)器件是什么。具有很強(qiáng)的移植能力VHDL語言描述的設(shè)計(jì)通用性好,可以被支持VHDL標(biāo)準(zhǔn)的不同工具所支持,具有很強(qiáng)的移植能力。VHDL本身的生命周期長。VHDL的硬件描述與工藝無關(guān),不會因工藝變化而過時,而且與工藝技術(shù)有關(guān)的參數(shù)可以用VHDL提供的屬性加以描述,當(dāng)生產(chǎn)工藝改變時,只需修改程序中相應(yīng)屬性參數(shù)即可。VHDL語言具有強(qiáng)大的語言功能、硬件描述能力和移植能力及設(shè)計(jì)與器件無關(guān)的特性,并且VHDL語言程序易于共享和復(fù)用,因此得到了十分廣泛的應(yīng)用。2.2.2 VHDL開發(fā)流程采用VHDL語言對硬件電路進(jìn)行描述的過程應(yīng)該遵循一定的流程,通常情況下,其流程如圖2.2.2-1所示。圖2.2.2-1 VHDL設(shè)計(jì)電路從流程圖可以看出,采用VHDL語言進(jìn)行硬件電路設(shè)計(jì)的開發(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)的具體功能。劃分模塊、編寫程序利用VHDL語言設(shè)計(jì)硬件電路通常采用自頂向下的設(shè)計(jì)方法,從電路設(shè)計(jì)的總體要求出發(fā),先確定頂層模塊并進(jìn)行頂層模塊的設(shè)計(jì),然后將頂層模塊劃分為不同的完成一定邏輯功能的子功能模塊,最后再詳細(xì)設(shè)計(jì)子功能模塊。模塊劃分的好壞將會直接影響到最終的電路設(shè)計(jì),設(shè)計(jì)人員在這一步應(yīng)該花費(fèi)一定的時間,保證模塊劃分的最優(yōu)化。VHDL語言程序模擬VHDL語言程序模擬即功能仿真,是利用仿真軟件對設(shè)計(jì)的邏輯功能進(jìn)行驗(yàn)證,可以在設(shè)計(jì)的早期發(fā)現(xiàn)電路設(shè)計(jì)上的缺陷和錯誤,節(jié)省設(shè)計(jì)時間、縮短開發(fā)周期。綜合、優(yōu)化和布局布線綜合的作用簡單的說就將電路設(shè)計(jì)的較高級抽象層次的VHDL語言描述轉(zhuǎn)化成底層電路表示。優(yōu)化的作用是將電路設(shè)計(jì)的時延縮到最小和有效利用資源。布局布線的作用是將通過綜合和優(yōu)化所得到的邏輯規(guī)劃到一個邏輯器件的邏輯結(jié)構(gòu)中,然后將各邏輯單元放置到相應(yīng)優(yōu)化的位置,最后再進(jìn)行邏輯單元之間、邏輯單元和IO之間的布線,以消除布線延遲。布局布線后的程序模擬布局布線后的程序模擬又稱后仿真,既驗(yàn)證設(shè)計(jì)的邏輯功能,又驗(yàn)證時序。如果時序不能滿足要求,就需要回到前面的步驟重新進(jìn)行操作。生成器件編程文件和進(jìn)行器件編程顧名思義,器件編程是針對可編程邏輯器件進(jìn)行的操作,具體過程是:將設(shè)計(jì)描述經(jīng)過編譯、綜合、優(yōu)化和布局布線的結(jié)果,經(jīng)過一定的映射轉(zhuǎn)化成一個器件編程所用的數(shù)據(jù)文件格式,然后通過燒片器或者下載電纜將數(shù)據(jù)文件下載到指定的可編程邏輯器件中去的過程。2.3 FPGA開發(fā)介紹2.3.1 FPGA簡介FPGA是20世紀(jì)90年代發(fā)展起來的,其密度已超過25X 104 f-JA平,部門延時小于3ns。這種器件完成某種特定的功能是完全由用戶通過軟件進(jìn)行配置和編程來實(shí)現(xiàn)的,而且可以反復(fù)擦寫,它具有芯片邏輯資源豐富、成本低、功耗小等優(yōu)勢。此外,它的另一個突出特點(diǎn)是現(xiàn)場編程,在FPGA工作的現(xiàn)場,可以不通過計(jì)算機(jī)把存于FPGA外的ROM中的編程數(shù)據(jù)加載給FPGA,通過簡單的設(shè)備就能改變FPGA中的編程數(shù)據(jù),從而改變FPGA執(zhí)行的邏輯功能。這種方法也叫做ICR(ha Circuit Reconfiguration,在電路上直接配置)編程。FPGA的這個特點(diǎn)為工程技術(shù)人員維修、改進(jìn)、更新電路邏輯功能提供了方便。大部分FPGA采用基于SRAM的查找表(LUT,LookUpTable)結(jié)構(gòu)。查找表本質(zhì)上就是一個RAM。若邏輯函數(shù)具有11個輸入項(xiàng)的話,就需要由輸入個數(shù)為n、容量為2n個位的RAM單元存放函數(shù)值,RAM的地址線起輸入線的作用,地址即輸入變量,RAM輸出為邏輯函數(shù)值。每輸入一個信號進(jìn)行邏輯運(yùn)算就等于輸入一個地址進(jìn)行查表,地址所對應(yīng)的容就是輸出。2.3.2 FPGA開發(fā)流程圖2.3.2-1 FPGA開發(fā)流程對于目標(biāo)器件為FPGA和CPLD的HDL設(shè)計(jì),其工程設(shè)計(jì)的基本流程如圖圖2.3.2-1所示。現(xiàn)具體說明如下:1、文本編輯:用任何文本編輯器都可以進(jìn)行,也可以用專用的HDL編輯環(huán)境。通常VHDL文件保存為.vhd文件2、功能仿真:將文件調(diào)入HDL仿真軟件進(jìn)行功能仿真,檢查邏輯功能是否正確(也叫前仿真,對簡單的設(shè)計(jì)可以跳過這一步,只在布線完成以后,進(jìn)行時序仿真)3、邏輯綜合:將源文件調(diào)入邏輯綜合軟件進(jìn)行綜合,即把語言綜合成最簡的布爾表達(dá)式。邏輯綜合軟件會生成.edf(edif)的EDA工業(yè)標(biāo)準(zhǔn)文件。4、布局布線:將.edf文件調(diào)入PLD廠家提供的軟件中進(jìn)行布線,即把設(shè)計(jì)好的邏輯安放到PLD/FPGA。5、時序仿真:需要利用在布局布線中獲得的精確參數(shù),用仿真軟件驗(yàn)證電路的時序。(也叫后仿真)6、編程下載:確認(rèn)仿真無誤后,將文件下載到芯片中7、硬件測試:硬件測試的目的是為了在更真實(shí)的環(huán)境中檢驗(yàn)HDL設(shè)計(jì)的運(yùn)行情況,特別是對于HDL程序設(shè)計(jì)上不是十分規(guī),語義上含有一定歧義的程序。第三章 數(shù)字式秒表的軟件開發(fā)環(huán)境本章主要介紹項(xiàng)目中將要用到了一系列軟件,包括用于VHDL語言編寫和編譯的ISE軟件和用于程序仿真的仿真軟件ModelSim。3.1開發(fā)環(huán)境在考慮各種情況后,在本次設(shè)計(jì)中,由于選擇的FPGA芯片是由Xilinx公司生產(chǎn)的,所以我們主要使用ModelSim和ISE軟件進(jìn)行仿真和綜合。3.2ModelSim介紹ModelSim是業(yè)界最優(yōu)秀的HDL語言仿真器,它提供最友好的調(diào)試環(huán)境,是唯一的單核支持VHDL和Verilog混合仿真的仿真器。是作FPGAASIC設(shè)計(jì)的RTL級和門級電路仿真的首選,它采用直接優(yōu)化的編譯技術(shù)、TcFTk技術(shù)、單一核仿真技術(shù),編譯仿真速度快,編譯的代碼與平臺無關(guān),便于保護(hù)IP核,個性化的圖形界面和用戶接口,為用戶加快調(diào)錯提供強(qiáng)有力的手段。全面支持VHDL和Verilog語言的IEEE標(biāo)準(zhǔn),支持CC+功能調(diào)用和調(diào)試。ModelSim專業(yè)版,具有快速的仿真性能和最先進(jìn)的調(diào)試能力,全面支持UNIX(包括64位)、Linux和Windows平臺。主要特點(diǎn):RTL和門級優(yōu)化,本地編譯結(jié)構(gòu),編譯仿真速度快;單核VHDL和Verilog混合仿真;源代碼模版和助手,項(xiàng)目管理;集成了性能分析、波形比較、代碼覆蓋等功能;數(shù)據(jù)流ChaseX;Signal Spy;C和TclTk接121,C調(diào)試。是業(yè)界唯一單一核支持VHDL、Verilog HDL和SystemC混合仿真的仿真器。同時也支持業(yè)界最廣泛的標(biāo)準(zhǔn)如Verilog 2001、SystemVerilog等,部集成了用于CC+,PLIFLI和SystemC的集成C調(diào)試器。支持眾多的ASIC和FPGA廠家?guī)?,可以用于FPGA和ASIC設(shè)計(jì)的RTL級和門級電路仿真。ModelSiml8J最大的特點(diǎn)是其強(qiáng)大的調(diào)試功能:先進(jìn)的數(shù)據(jù)流窗121,可以迅速追蹤到產(chǎn)生不定或者錯誤狀態(tài)的原因;性能分析工具幫助分析性能瓶頸,加速仿真;代碼覆蓋率檢查確保測試的完備;多種模式的波形比較功能;先進(jìn)的Signal Spy功能,可以方便地訪問VHDL或者VHDL和Verilog混合設(shè)計(jì)中的底層信號;支持加密IP;可以實(shí)現(xiàn)與Matlab的Simulink的聯(lián)合仿真。ModelSim分幾種不同的版本:SE、PE、LE和OEM,其中SE是最高級的版本而集成在Actel、Atmel、Altera、Xilinx以及Lattice等FPGA廠商設(shè)計(jì)工具中的均是其OEM版本。SE版和OEM版在功能和性能方面有較大差別,比如對于大家都關(guān)心的仿真速度問題,以Xilinx公司提供的OEM版本ModelSim XE為例,對于代碼少于40000行的設(shè)計(jì),ModelSim SE比ModelSim XE要快10倍;對于代碼超過40000行的設(shè)計(jì),ModelSim SE要比ModelSimXE快近40倍。3.3 ISE介紹ISEt是Xilinx公司提供的集成化FPGA開發(fā)軟件,它的主要功能包括設(shè)計(jì)輸入、綜合、仿真、實(shí)現(xiàn)和下載。(1)設(shè)計(jì)輸入ISE軟件提供的設(shè)計(jì)輸入工具包括用于HDL代碼輸入和報(bào)告查看的ISE文本編輯器(TextEditor),用于原理圖編輯的工具ECS(Engineering CaptureSystem),用于P CORE的COREGenerator,用于狀態(tài)機(jī)設(shè)計(jì)的StateCAD,以及用于約束文件編輯的Constraint Editor等。(2)綜合ISE的綜合工具不但包括了Xilinx自身提供的綜合工具xsr,同時還可以集成MentorGraphics公司的LeonardoSpectrum和Synplicity公司的Synplify。(3)仿真ISE本身自帶了圖形化波形編輯功能的仿真工具HDL Bencher,同時又提供了使用ModelTechnology公司的ModelSim進(jìn)行仿真的接口。(4)實(shí)現(xiàn)ISE的實(shí)現(xiàn)功能包括了翻譯(Translate)、映射(Map)、布局布線(Place andRoute)等。(5)下載下載功能包括了BitGen,用于將布局布線后的設(shè)計(jì)文件轉(zhuǎn)換為比特流(Bitstream)文件。還包括了iMPACT功能,用于進(jìn)行設(shè)備配置和通信,控制將程序燒寫到FPGA芯片中去。使用ISE進(jìn)行FPGA開發(fā)大致可以分為3個步驟。(1)設(shè)計(jì)輸入和仿真設(shè)計(jì)輸入(Design Entry)是指以HDL代碼、原理圖、波形圖以及狀態(tài)機(jī)的形式輸入設(shè)汁源文件,而設(shè)計(jì)仿真(Simdmion)是指通過仿真工具對設(shè)計(jì)的整體模塊或局部模塊進(jìn)行仿真來檢驗(yàn)設(shè)計(jì)的功能和性能。(2)用戶約束條件、綜合和實(shí)現(xiàn)用戶約束條件(User Constraints)的作用是對綜合、實(shí)現(xiàn)過程進(jìn)行控制,滿足速度、面積、引腳位置等需求。編輯約束條件又包括了4個子項(xiàng),意義分別為:創(chuàng)建時間約束、配置引腳、創(chuàng)建面積約束、以文本方式編輯約束。綜合(Synthesize)是FPGA設(shè)計(jì)流程中的重要環(huán)節(jié),綜合結(jié)果的優(yōu)劣直接影響到設(shè)計(jì)的最終性能。ISE自帶的綜合工具是XST,同時它也支持SynplifySynplify Pro等第三方綜合工具,但是由于Xilinx對于其器件的底層最為了解,所以使用XST綜合往往會得到比較滿意的結(jié)果。綜合包含了3個子項(xiàng),意義分別為:查看綜合報(bào)告、查看綜合器件的RTL級原理圖和檢查語法。實(shí)現(xiàn)(Implementation)過程也包含了3個子項(xiàng),ImplementDesign項(xiàng)所對應(yīng)的子項(xiàng),意義分別是:翻譯、映射和布局布線。需要注意,進(jìn)行實(shí)現(xiàn)步驟之前必須進(jìn)行約束條件的編輯,否則實(shí)現(xiàn)可能會出錯。(3)硬件編程硬件編程(Programming)是指生成編輯比特流文件bit,并將其下載到FPGA芯片部的過程。硬件編程對應(yīng)圖2-5所示的Generate Programming File項(xiàng)。第四章數(shù)字式秒表的設(shè)計(jì)與實(shí)現(xiàn)344.1 任務(wù)要求4.2 實(shí)驗(yàn)條件4.3 原理框圖按照以上需求,整個電路的原理圖如圖4.3-1所示:圖4.3-1 電路原理圖從原理圖可知,系統(tǒng)需要以下模塊:1.分頻器:對晶體振蕩器產(chǎn)生的時鐘進(jìn)行分頻,產(chǎn)生時間基準(zhǔn)信號。2.計(jì)數(shù)器:對時間基準(zhǔn)脈沖進(jìn)行計(jì)數(shù),完成計(jì)時功能。3.數(shù)據(jù)鎖存器:鎖存數(shù)據(jù),使顯示保持暫停。4.控制器:控制計(jì)數(shù)器的運(yùn)行、停止以及復(fù)位,產(chǎn)生鎖存器的使能信號。5.掃描顯示的控制電路:包括掃描計(jì)數(shù)器、數(shù)據(jù)選擇器和七段譯碼器,控制8個數(shù)碼管以掃描方式,顯示結(jié)果。6.按鍵消抖電路:消除按鍵輸入信號,輸出單脈沖。4.4 各模塊的實(shí)現(xiàn)4.4.1 分頻器XC3S200A芯片的外部有源晶振頻率為48MHz,考慮到系統(tǒng)的穩(wěn)定性,本設(shè)計(jì)選擇了1KHz的信號作為各模塊的時鐘信號,即對晶振信號進(jìn)行1/480000分頻。對晶振時鐘信號進(jìn)行計(jì)數(shù),對每個上升沿,計(jì)數(shù)器加1;當(dāng)計(jì)數(shù)達(dá)到47999時,計(jì)數(shù)清零,從頭開始計(jì)數(shù),最后獲取計(jì)數(shù)的第15位為計(jì)數(shù)的輸出信號仿真結(jié)果如圖4.4.1.2-1所示,時鐘周期為48000。圖4.4.1.2-1 1KHZ信號仿真圖4.4.2 輸入控制電路輸入控制模塊的功能是識別有效地按鍵輸入和實(shí)現(xiàn)輸入的按鍵信號對電子秒表不同狀態(tài)的控制。,秒表的狀態(tài)可分為計(jì)數(shù)開/關(guān),顯示鎖定開/關(guān)和清零??嫉接袃蓚€輸入按鍵,所以必須有輸入控制電路,同時考慮到按下按鍵以及松開按鍵會出現(xiàn)抖動,所以必須設(shè)計(jì)防抖動電路。即按鍵輸入信號,必須先經(jīng)過防抖電路,然后進(jìn)入控制電路。4.4.2.1 消抖電路由于按鍵輸入,在按下過程中電平可能會有一個不確定的抖動狀態(tài)。由于識別的有效按鍵電平為持續(xù)的低電平,因此設(shè)計(jì)一消抖電路,頂層設(shè)計(jì)框圖如下:消抖電路的仿真結(jié)果如下所示:由圖可見在1khz的驅(qū)動下,消抖電路能夠做到每按一次按鍵只輸出一個時鐘周期,達(dá)到了按鍵消抖的目的。在實(shí)際板子上應(yīng)用的時候,也還要根據(jù)按鍵實(shí)際情況來調(diào)整一下計(jì)數(shù)的周期,從而達(dá)到最佳的效果。4.4.2.2 控制電路圖4.4.2.2-1 控制電路狀態(tài)圖兩個去抖動電路傳入兩個信號,將其組合成一個2bit輸入(Start/Stop為高位,Split/Reset為低位),分別代表4個狀態(tài):“00”狀態(tài):鎖定關(guān),計(jì)數(shù)關(guān),清零關(guān),輸出“111”;“10”狀態(tài):鎖定關(guān),計(jì)數(shù)開,清零關(guān),輸出“101”;“11”狀態(tài):鎖定開,計(jì)數(shù)開,清零關(guān),輸出“001”;“01”狀態(tài):鎖定關(guān),計(jì)數(shù)關(guān),清零開,輸出“110”;處在“01”狀態(tài)時,過一個時鐘周期自動回到“00”狀態(tài)。狀態(tài)圖如圖4.4.2.2-1所示。源程序?yàn)橐姼戒?。仿真結(jié)果如圖4.4.2.2-2所示,圖4.4.2.2-2 控制電路仿真4.4.3 計(jì)時模塊由設(shè)計(jì)指標(biāo)可知,秒表由六位顯示最大計(jì)時為59min59s99,所以需要4個10進(jìn)制計(jì)數(shù)器,還有兩個6進(jìn)制計(jì)數(shù)器。其中有暫定,清零的功能。整個計(jì)時模塊的頂層設(shè)計(jì)電路圖如下:4.4.3.1 十進(jìn)制計(jì)數(shù)器計(jì)數(shù)器輸入端每識別一個上升沿,就依次從“0000”計(jì)數(shù)到“1001”。當(dāng)計(jì)數(shù)變?yōu)椤?001”時,進(jìn)位端從1變?yōu)?,在下個輸入的上升沿“1001”變?yōu)椤?000”,進(jìn)位端恢復(fù)1。如此,將進(jìn)位端連入下一級的輸入端時,可以實(shí)現(xiàn)低位由9變?yōu)?時高位進(jìn)1。當(dāng)清零信號有效時,計(jì)數(shù)器強(qiáng)制將計(jì)數(shù)值變?yōu)椤?000”。源程序?yàn)橐姼戒? 圖4.4.3.1-1 十進(jìn)制計(jì)數(shù)器仿真圖如圖4.4.3.1-1所示,計(jì)數(shù)周期為10。4.4.3.2 六進(jìn)制計(jì)數(shù)器六進(jìn)制計(jì)數(shù)圍是“0000”到“0110”,在“0110”時進(jìn)位端發(fā)生變低,之后計(jì)數(shù)變?yōu)椤?000”,進(jìn)位端恢復(fù)高電平。對于六進(jìn)制來說,三個二進(jìn)制位就能夠滿足計(jì)數(shù)需要,但是考慮到后面譯碼器的輸入均為四個二進(jìn)制位,所以計(jì)數(shù)用4bit,方便譯碼。源程序?yàn)橐姼戒?。圖4.4.3.2-1 六進(jìn)制計(jì)數(shù)器仿真圖 如圖4.4.3.2-1所示,計(jì)數(shù)周期為6。4.4.3.3 計(jì)數(shù)器組合 由于顯示的最大計(jì)數(shù)為59min59s99,所以需要四位十進(jìn)制計(jì)數(shù)器,以及二位六進(jìn)制計(jì)數(shù)器。所以需要將六個計(jì)數(shù)器組合起來,由低位計(jì)數(shù)達(dá)到最大值,向前一位進(jìn)1;由于輸入的是1khz信號,這里用另外用了一個模10計(jì)數(shù)器將1khz信號分頻到100hz,最后組合的電路模塊連接圖如下:圖4.4.3.3-1 計(jì)數(shù)器組合仿真圖4.4.3.4 鎖存器鎖存器實(shí)現(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)輸入信號為高電平時,輸出和輸入信號相同;當(dāng)輸入信號為低電平時,輸出信號保持當(dāng)前值。4.4.4 顯示模塊顯示模塊主要完成顯示掃描和編碼翻譯的功能。其中需要用到掃描器,多路選擇器和譯碼器, 時鐘信號連接一個掃描器,用計(jì)數(shù)原理輸出3bit掃描信號。利用3-8譯碼器的原理,實(shí)現(xiàn)對八位數(shù)碼管的掃描,輸出位選信號;另一方面根據(jù)相應(yīng)的位選信號,將要現(xiàn)實(shí)的bacd碼轉(zhuǎn)換成數(shù)碼管的七段顯示碼輸出,整個顯示模塊的頂層電路圖如下:4.4.4.1 掃描器掃描器實(shí)現(xiàn)了八位數(shù)碼管共用一組輸入數(shù)據(jù)的可能性。其通過一個計(jì)數(shù)器,在每個時鐘信號的上升沿,其輸出的三位二進(jìn)制信號加一,從“000”計(jì)數(shù)到“111”。當(dāng)輸出為“111”時,下一個時鐘上升沿輸出變?yōu)椤?00”,關(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” 計(jì)數(shù)到“111”。4.4.4.2 多路選擇器多路選擇器輸入八組四位數(shù)據(jù)信號和一組三位掃描信號,通過掃描信號的狀態(tài)選擇相應(yīng)的數(shù)據(jù)信號進(jìn)行輸出源程序,源程序見附錄。圖4.4.4.2-1 多路選擇器仿真圖多路選擇器放著結(jié)果如圖4.4.4.2-1所示,多路選擇器根據(jù)掃描信號的輸入選擇相應(yīng)的信號輸出。4.5 分配引腳和下載實(shí)現(xiàn)全部仿真通過后,就運(yùn)行ISE的設(shè)計(jì)實(shí)現(xiàn),然后再打開XILINX PACE,在里面分配引腳,即實(shí)現(xiàn)設(shè)計(jì)的輸入輸出端口與實(shí)際芯片的輸入輸出端口的對應(yīng)連接。比如七段LED管的控制信號就連接到實(shí)際電路的七個引腳。需要注意的是一些端口是固定的,不能亂的連接。比如時基信號即石英振蕩器所提供的信號就只能由T8輸入。一切都準(zhǔn)備就緒后就,便可開始下載了.分配引腳的源文件如下: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;4.6 測試結(jié)果這個電路完成后的最頂層模塊電路圖如下:在成功下載并運(yùn)行后,進(jìn)行了各按鈕功能的檢測(包括計(jì)數(shù)、暫停、復(fù)位、清零等功能的檢查),以及與標(biāo)準(zhǔn)時間進(jìn)行了對比,符合實(shí)驗(yàn)預(yù)估的各項(xiàng)指標(biāo),成功完成了數(shù)字式秒表的設(shè)計(jì)與實(shí)現(xiàn)。第五章 結(jié)論本文主要介紹了利用VHDL語言完成基于FPGA的數(shù)字秒表的設(shè)計(jì)與實(shí)現(xiàn)。詳細(xì)介紹了設(shè)計(jì)原理,設(shè)計(jì)方案以及各模塊的設(shè)計(jì)過程及其實(shí)現(xiàn)的功能,并利用ISE和ModelSim對設(shè)計(jì)進(jìn)行了仿真,分析,綜合,并最終下載實(shí)際電路板中,成功實(shí)現(xiàn)了數(shù)字式秒表的所有功能。參考文獻(xiàn)1 朱正偉EDA技術(shù)及應(yīng)用清華大學(xué)20092 ISE開發(fā)流程3 Modelsim仿真流程致謝首先必須感謝的是曦老師對我的教導(dǎo),在實(shí)驗(yàn)過程中對我的幫助,在此對曦老師致于最衷心的感謝。其次感謝我的同學(xué)們,在我遇到問題時,能給我分析以及解決。最后感謝電子技術(shù)綜合實(shí)驗(yàn)這門課程,讓我從中學(xué)到了很多的東西。附錄附錄1.電子秒表的頂文件- pany: - Engineer: - - Create Date: 11:03:09 11/18/2015 - Design Name: - Module Name: my_watch - Behavioral - Project Name: - Target Devices: - Tool versions: - Description: - Dependencies: - Revision: - Revision 0.01 - File Created- Additional ments: -# OBUF : 16-=-Device utilization summary:-Selected Device : 3s200aft256-5 - Number of Slices: 61 out of 1792 3% - Number of Slice Flip 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 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;- Unment the following library declaration if instantiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.Vponents.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 of my_watch isPONENT fenpin PORT(clk_raw : IN std_logic; clk_1kh : OUT std_logic);END PONENT;PONENT douxiaoPORT(clk : IN std_logic;key_in : IN std_logic; key_out : OUT std_logic);END PONENT;PONENT counterPORT(clk : IN std_logic;rst : IN std_logic;count_en : IN std_logic; seg1 : OUT std_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 PONENT;PONENT controlPORT(clk : IN std_logic;start_stop : IN std_logic;reset_split : IN std_logic; reset : OUT std_logic;counter_en : OUT std_logic;latch_en : OUT std_logic);END PONENT;PONENT 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_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 downto 0);cout6 : OUT std_logic_vector(3 downto 0);END PONENT;PONENT 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);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 PONENT;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 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_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 =>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_seg6,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 => duanxuan,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 t:std_logic_vector(2 downto 0):=(others=>'0');signal k1,k2:std_logic;beginp1:process(key_in,clk)beginif key_in='1' thent<="000"elsif falling_edge(clk) thenif t /=7 thent<=t+1;end if;end if;end process;p2:process(clk)beginif falling_edge(clk) thenif t /=7 thenk1<='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" end case;when "011"=> case condition is when "01" => n_state<="" when "10" => n_state<="001"when others=> n_state<="011" end case;when ""=> case condition is when "01" => n_state<="011" when others=> n_state<="" 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<="101"end case;end process;process(clk)beginif rising_edge(clk) thenc_state<=n_state;end if;附錄5 十進(jìn)制計(jì)數(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;end if;end if;else null;end if;end process;附錄9 鎖存器process(latch_en)begindata1<=cin1;data2<=cin2;data3<=cin3;data4<=cin4;data5<=cin5;data6<=cin6;if latch_en='1' thencout1<=data1;cout2<=data2;cout3<=data3;cout4<=data4;cout5<=data5;cout6<=data6;end if;end process;附錄10 顯示電路architecture Behavioral of display issignal weixuan_code:std_logic_vector(2 downto 0):=(others=>'0');signal bcd:std_logic_vector(3 downto 0):=(others=>'0');beginweixuan_code <= weixuan_code+1 when clk'event and clk='1'with weixuan_code select weixuan<="11111110" when "000","11111101" when "001","11111011" when "","11110111" when "011","11101111" when "100","11011111" when "101","10111111" when "110","01111111" when "111","11111111" when others;with weixuan_code selectbcd<=cin1 when "000", cin2 when "001", "1111" when "", cin3 when "011", cin4 when "100", "1111" when "101", cin5 when "110", cin6 when "111", "1111" when others;with bcd select seg<="00000011" when "0000", "10011111" when "0001", "00100101" when "0010", "00001101" when "0011", "10011001" when "0100", "01001001" when "0101", "01000001" when "0110", "00011111" when "0111", "00000001" when "1000", "00001001" when "1001", "11111101" when "1111", "00000011" when others;end Behavioral;

注意事項(xiàng)

本文(電子科技大學(xué)數(shù)字式秒表設(shè)計(jì)與實(shí)現(xiàn) 實(shí)驗(yàn)報(bào)告材料)為本站會員(痛***)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!