


已閱讀5頁(yè),還剩44頁(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)介
基于FPGA的數(shù)字秒表的設(shè)計(jì)第1章 緒 論電子設(shè)計(jì)的必由之路是數(shù)字化已成為共識(shí)。在數(shù)字化的道路上,我國(guó)電子設(shè)計(jì)技術(shù)的發(fā)展經(jīng)歷了,并將繼續(xù)經(jīng)歷許多重大的變革與飛躍、從應(yīng)用SSI通用數(shù)字電路芯片構(gòu)成電路系統(tǒng),到廣泛地應(yīng)用MCU(微控制器或單片機(jī)),在電子系統(tǒng)設(shè)計(jì)上發(fā)生廠具有里程碑意義的飛躍,這一飛躍不但克服了純SSI數(shù)字電路系統(tǒng)許多不可逾越的困難,同時(shí)也為電子設(shè)計(jì)技術(shù)的應(yīng)用開拓了更廣闊的前景。它使得電子系統(tǒng)的智能化水平在廣度和深度上產(chǎn)生了質(zhì)的飛躍。MCU的廣便應(yīng)用并沒有拋棄SSI的應(yīng)用,而是為它們?cè)陔娪谙到y(tǒng)中找到了更合理的地位。隨著社會(huì)經(jīng)濟(jì)發(fā)展的延伸、各類新型電子產(chǎn)品的開發(fā)為我們提出了許多全新的課題和更高的要求。FPGA/CPLD(現(xiàn)場(chǎng)可編程邏輯器件復(fù)雜可編程邏輯器件)在EDA基礎(chǔ)上的廣泛應(yīng)用從某種意義上說(shuō),新的電子系統(tǒng)運(yùn)轉(zhuǎn)的物理機(jī)制又將回到原來(lái)的純數(shù)字電路結(jié)構(gòu),但這是種更高層次的循環(huán),應(yīng)是一次否定之否定的運(yùn)動(dòng),它在更高層次上容納了過(guò)去數(shù)字技術(shù)的優(yōu)秀部分,對(duì)MCU系統(tǒng)將是種揚(yáng)棄,但在電子設(shè)計(jì)的技術(shù)操作和系統(tǒng)構(gòu)成的整體上卻發(fā)生質(zhì)的飛躍。如果說(shuō)MCU在邏輯的實(shí)現(xiàn)上是無(wú)限的話,那么高速發(fā)展的FPGA/CPLD不但包括了MCU這一特點(diǎn),并兼有串、并工作方式和高速、高可靠性以及寬口徑適用等諸多方面的特點(diǎn)、不僅如此,隨著EDA技術(shù)的發(fā)展和FPGACPLD在深亞微米領(lǐng)域的進(jìn)軍、它們與MCU、MPU、DSP、AD、DA、RAM和ROM等獨(dú)立器件問的物理與功能界限正日趨模糊。特別是軟硬IP核產(chǎn)業(yè)的迅猛發(fā)展,嵌入式通用與標(biāo)準(zhǔn)CPLD和FPGA器件的出現(xiàn),片上系統(tǒng)已近在咫尺。以大規(guī)模集成電路為物質(zhì)基礎(chǔ)的EDA技術(shù)終于打破了軟硬件之間最后的屏障,使軟硬件工程師們有了共同的語(yǔ)言1。1.1 課題背景當(dāng)前電子系統(tǒng)的設(shè)計(jì)正朝著速度快,容量大,體積小,質(zhì)量輕,用電省的方向發(fā)展。推動(dòng)該潮流迅速發(fā)展的決定性因素就是使用了現(xiàn)代化的EDA設(shè)計(jì)工具。EDA是電子設(shè)計(jì)自動(dòng)化(Electronic Design Automation)的縮寫,是90年代初,從CAD(計(jì)算機(jī)輔助沒計(jì))、CAM(算機(jī)輔助制造)、CAT(計(jì)算機(jī)輔助測(cè)試)和CAE(計(jì)算機(jī)輔助工程)的概念發(fā)展而來(lái)的。EDA技術(shù)就是以計(jì)算機(jī)為工具,在EDA軟件平臺(tái)上,對(duì)以硬件描述語(yǔ)言HDL為系統(tǒng)邏輯描述手段完成的設(shè)計(jì)文件自動(dòng)地完成邏輯編譯、邏輯化簡(jiǎn)、邏輯分割、邏輯綜合及優(yōu)化、邏輯行局布線、邏輯仿真,直至對(duì)于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。設(shè)計(jì)者的工作僅限于利用軟件的方式,即利用硬件描述語(yǔ)言來(lái)完成對(duì)系統(tǒng)硬件功能的描述,在EDA工具的幫助下就可以得到最后的設(shè)計(jì)結(jié)果。盡管目標(biāo)系統(tǒng)是硬件,但整個(gè)設(shè)計(jì)和修改過(guò)程如同完成軟件設(shè)計(jì)一樣方便和高效2。EDA技術(shù)中最為矚目的功能,即最具現(xiàn)代電子設(shè)計(jì)技術(shù)特征的功能就是日益強(qiáng)大的邏輯設(shè)計(jì)仿真測(cè)試技術(shù)。EDA仿真測(cè)試技術(shù)只需通過(guò)計(jì)算機(jī)就能對(duì)所設(shè)計(jì)的電子系統(tǒng)從各種不同層次的系統(tǒng)性能特點(diǎn)完成一系列準(zhǔn)確的測(cè)試與仿真操作,在完成實(shí)際系統(tǒng)的安裝后還能對(duì)系統(tǒng)上的目標(biāo)器件進(jìn)行所謂邊界掃錨測(cè)試。這一切都極大地提高了大規(guī)模系統(tǒng)電子設(shè)計(jì)的自動(dòng)化程度。另一方面,高速發(fā)展的CPLD/FPGA器件又為EDA技術(shù)的不斷進(jìn)步奠定可堅(jiān)實(shí)的物質(zhì)基礎(chǔ)。CPLD/FPGA器件更廣泛的應(yīng)用及廠商間的競(jìng)爭(zhēng),使得普通的設(shè)計(jì)人員獲得廉價(jià)的器件和EDA軟件成為可能?,F(xiàn)代的EDA工具軟件已突破了早期僅能進(jìn)行PCB版圖設(shè)計(jì),或類似某些僅限于電路功能模擬的、純軟件范圍的局限,以最終實(shí)現(xiàn)可靠的硬件系統(tǒng)為目標(biāo),配備了系統(tǒng)設(shè)計(jì)自動(dòng)化的全部工具。如配置了各種常用的硬件描敘平臺(tái)VHDL、Verilog HDL、ABEL HDL等;配置了多種能兼用和混合使用的邏輯描述輸入工具,如硬件描述語(yǔ)言文本輸入法(其中包括布爾方程描述方式、原理圖描述方式、狀態(tài)圖描述方式等)以及原理圖輸入法、波形輸入法等;同時(shí)還配置了高性能的邏輯綜合、優(yōu)化和仿真模擬工具3。1.2 硬件描述語(yǔ)言硬件描述語(yǔ)言(Hardware Description Language )是硬件設(shè)計(jì)人員和電子設(shè)計(jì)自動(dòng)化(EDA)工具之間的界面。其主要目的是用來(lái)編寫設(shè)計(jì)文件,建立電子系統(tǒng)行為級(jí)的仿真模型。即利用計(jì)算機(jī)的巨大能力對(duì)用Verilog HDL或VHDL 建模的復(fù)雜數(shù)字邏輯進(jìn)行仿真,然后再自動(dòng)綜合以生成符合要求且在電路結(jié)構(gòu)上可以實(shí)現(xiàn)的數(shù)字邏輯網(wǎng)表(Netlist),根據(jù)網(wǎng)表和某種工藝的器件自動(dòng)生成具體電路,然后生成該工藝條件下這種具體電路的延時(shí)模型。仿真驗(yàn)證無(wú)誤后,用于制造ASIC芯片或?qū)懭隒PLD和FPGA器件中。隨著PC平臺(tái)上的EDA工具的發(fā)展,PC平臺(tái)上的Verilog HDL和VHDL仿真綜合性能已相當(dāng)優(yōu)越,這就為大規(guī)模普及這種新技術(shù)鋪平了道路。目前國(guó)內(nèi)只有少數(shù)重點(diǎn)設(shè)計(jì)單位和高校有一些工作站平臺(tái)上的EDA工具,而且大多數(shù)只是做一些線路圖和版圖級(jí)的仿真與設(shè)計(jì),只有個(gè)別單位展開了利用Verilog HDL和VHDL模型(包括可綜合和不可綜合)的進(jìn)行復(fù)雜的數(shù)字邏輯系統(tǒng)的設(shè)計(jì)。隨著電子系統(tǒng)向集成化、大規(guī)模、高速度的方向發(fā)展,HDL語(yǔ)言將成為電子系統(tǒng)硬件設(shè)計(jì)人員必須掌握的語(yǔ)言3。1.2.1 VHDL語(yǔ)言VHDL(Very High Speed Integrated Circuit Hard ware Description Language,超高速集成電路硬件描述語(yǔ)言)誕生于1982年,是由美國(guó)國(guó)防部開發(fā)的一種快速設(shè)計(jì)電路的工具,目前已經(jīng)成為IEEE(The Institute of Electrical and Electronics)的一種工業(yè)標(biāo)準(zhǔn)硬件描敘語(yǔ)言。VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口,非常適合用于可編程邏輯芯片的應(yīng)用設(shè)計(jì)。除了含有許多具有硬件特征的語(yǔ)句外,VHDL的語(yǔ)言形式和描述風(fēng)格與句法十分類似于一般的計(jì)算機(jī)高級(jí)語(yǔ)言。VHDL的程序特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),或稱為設(shè)計(jì)實(shí)體(可以是個(gè)元件、電路模塊或一個(gè)系統(tǒng))分成外部(或稱可示部分,即端口)和內(nèi)部(或稱為不可視部分,即結(jié)構(gòu)體)兩部分,外部負(fù)責(zé)對(duì)設(shè)計(jì)實(shí)體和端口引腳命名和說(shuō)明,內(nèi)部負(fù)責(zé)對(duì)模塊功能和算法進(jìn)行描述。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部結(jié)構(gòu)、功能開發(fā)完成,即可生成共享功能模塊,這就意味著,在頂層綜合或其他設(shè)計(jì)中可以直接調(diào)用這個(gè)實(shí)體模塊。VHDL具有較強(qiáng)的行為描述能力,可避開具體的器件結(jié)構(gòu),從邏輯功能和行為上進(jìn)行描述和設(shè)計(jì)3。1.2.2 Verilog HDL 語(yǔ)言Verilog HDL是在1983年,由GDA(Gate Way Design Automatio)公司的Phil Moorby首創(chuàng)的。Phil Moorby后來(lái)成為Verilog的主要設(shè)計(jì)者和(adence Design System)的第一個(gè)合伙人。在1984-1985年Moorby設(shè)計(jì)出第一個(gè)關(guān)于Verilog的仿真器,1986年他對(duì)Verilog HDL的發(fā)展又作出另一個(gè)巨大貢獻(xiàn),提出了用于快速門級(jí)仿真的算法。隨著Verilog算法的成功,Verilog HDL語(yǔ)言得到迅速發(fā)展。1989年adence公司收購(gòu)了公司,Verilog HDL語(yǔ)言成為Cadence公司的私有財(cái)產(chǎn),1990年,Cadence公司公開了Verilog HDL語(yǔ)言,成立了OVI(Open Verilog Internatiinal)組織來(lái)負(fù)責(zé)Verilog HDL的發(fā)展。IEEE于1995年制定了Verilog HDL的IEEE標(biāo)準(zhǔn),即Verilog HDL 1364-1995。1987年,IEEE接受VHDL(VHSIC Hadeware Description Language)為標(biāo)準(zhǔn)HDL,即IEEE 1076-87標(biāo)準(zhǔn),1993年進(jìn)一步修訂,定為ANSI/IEEE1076-93標(biāo)準(zhǔn)。現(xiàn)在很多EDA供應(yīng)商把Verilog HDL作為其EDA軟件輸入/輸出的標(biāo)準(zhǔn)。例如,Cadence、Synopsys、Viewlogic、Mentor Graphic等廠商都提供了VHDL的支持4。1.2.3 Verilog HDL與VHDL的比較Verilog HDL和VHDL作為描述硬件電路設(shè)計(jì)的語(yǔ)言,其共同的特點(diǎn)在于:能形式化地抽象表示電路的行為和結(jié)構(gòu);支持邏輯設(shè)計(jì)中層次與范圍的描述;可借用高級(jí)語(yǔ)言的精巧結(jié)構(gòu)來(lái)簡(jiǎn)化電路行為的描述;具有電路仿真與驗(yàn)證機(jī)制以保證設(shè)計(jì)的正確性;支持電路描述由高層到低層的綜合轉(zhuǎn)換;硬件描述與實(shí)現(xiàn)工藝無(wú)關(guān);便于文檔管理;易于理解和設(shè)計(jì)重用。目前版本的Verilog HDL與VHDL在行為級(jí)抽象建模的覆蓋范圍方面也有所不同。一般認(rèn)為Verilog HDL在系統(tǒng)抽象方面比VHDL強(qiáng)一些。Verilog HDL較為適合算法級(jí)(Alogrithem)、寄存器傳輸級(jí)(RTL)、邏輯級(jí)(Logic)、門級(jí)(Gate)、設(shè)計(jì)。而VHDL更為適合特大型的系統(tǒng)級(jí)(System)設(shè)計(jì)。1.2.4 VHDL設(shè)計(jì)中電路簡(jiǎn)化問題的探討 隨著集成電路技術(shù)的發(fā)展,用傳統(tǒng)的方法進(jìn)行芯片或系統(tǒng)設(shè)計(jì)已不能滿足要求,迫切需要提高設(shè)計(jì)效率。在這樣的技術(shù)背景下,能大大降低設(shè)計(jì)難度的VHDL設(shè)計(jì)方法正越來(lái)越廣泛地被采用。但是 VHDL設(shè)計(jì)是行為級(jí)的設(shè)計(jì)所帶來(lái)的問題是設(shè)計(jì)者的設(shè)計(jì)思考與電路結(jié)構(gòu)相脫節(jié)。設(shè)計(jì)者主要是根據(jù)VHDL的語(yǔ)法規(guī)則對(duì)系統(tǒng)目標(biāo)的邏輯行為進(jìn)行描述,然后通過(guò)綜合工具進(jìn)行電路結(jié)構(gòu)的綜合、編譯、優(yōu)化,通過(guò)仿真工具進(jìn)行邏輯功能仿真和系統(tǒng)時(shí)延的仿真。用VHDL進(jìn)行集成電路的設(shè)計(jì),牽涉到對(duì)VHDL語(yǔ)言的使用方法和對(duì)設(shè)計(jì)的理解程度。本文討論了以下幾個(gè)簡(jiǎn)化和優(yōu)化電路設(shè)計(jì)的3個(gè)值得注意的方面:(1)在用VHDL進(jìn)行設(shè)計(jì)中要注意避免不必要的寄存器描述。(2)在編寫程序前要先對(duì)整個(gè)設(shè)計(jì)進(jìn)行較深入的了解,科學(xué)的劃分設(shè)計(jì),多設(shè)想幾種方案再進(jìn)行比較,用多個(gè)較少位數(shù)的單元取代較多位數(shù)的單元。(3)在延時(shí)要求不高的情況下,可提取邏輯電路公因子,把它分解成含有中間變量的多級(jí)電路8。 1.2.5 VHDL和MAX+PLUSII在數(shù)字電路設(shè)計(jì)中的應(yīng)用以VHDL為工具的EDA設(shè)計(jì)方法與傳統(tǒng)的人工設(shè)計(jì)方法相比,有以下幾個(gè)優(yōu)點(diǎn):1、縮短了開發(fā)周期;2、提高了效率;3、產(chǎn)品的質(zhì)量得到了提高。用VHDL進(jìn)行數(shù)字系統(tǒng)開發(fā)與設(shè)計(jì),其設(shè)計(jì)的抽象層次有6個(gè),分別是系統(tǒng)級(jí)、芯片級(jí)、寄存器級(jí)、門級(jí)、電路級(jí)和版圖/硅片級(jí),可以在不同的抽象層次級(jí)別上設(shè)計(jì)系統(tǒng)。使用MAX+PLUSII作為開發(fā)環(huán)境時(shí)應(yīng)該根據(jù)軟件支持的芯片資源情況選擇合適的設(shè)計(jì)層次。在VHDL設(shè)計(jì)中,常常采用多進(jìn)程描述的方法來(lái)進(jìn)行程序設(shè)計(jì),通過(guò)使用進(jìn)程可以把整體的功能局部化,分塊設(shè)計(jì),多個(gè)進(jìn)程通過(guò)進(jìn)程間通信機(jī)制互相配合,達(dá)到設(shè)計(jì)要求。當(dāng)進(jìn)程比較多的時(shí)候,它們之間的配合問題就比較復(fù)雜,因此在設(shè)計(jì)之前應(yīng)該合理規(guī)劃安排9。1.2.6用EDA方法設(shè)計(jì)數(shù)字系統(tǒng)的靈活性用EDA方法設(shè)計(jì)數(shù)字系統(tǒng),就是以硬件描述語(yǔ)言為系統(tǒng)邏輯描述的主要手段完成計(jì)數(shù)器設(shè)計(jì)文件,再運(yùn)用EDA開發(fā)軟件,對(duì)設(shè)計(jì)文件自動(dòng)地完成邏輯編譯、化間、分割、綜合及優(yōu)化邏輯仿真。直到對(duì)特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載。在本文中是以EDA技術(shù)中的ISP軟件為開發(fā)平臺(tái),來(lái)說(shuō)明EDA方法設(shè)計(jì)數(shù)字系統(tǒng)的靈活性。1、設(shè)計(jì)輸入方式的靈活性,使用EDA方法設(shè)計(jì)數(shù)字系統(tǒng)可以按照設(shè)計(jì)要求和硬件描述語(yǔ)言的語(yǔ)法規(guī)則編寫輸入文件,而把其余的大部分工作留給計(jì)算機(jī)完成,真正體現(xiàn)了EDA方法的優(yōu)點(diǎn)。尤其是設(shè)計(jì)復(fù)雜的數(shù)字系統(tǒng)或者需要改動(dòng)系統(tǒng)功能時(shí),設(shè)計(jì)效率可成倍提高,EDA方法的優(yōu)越性就會(huì)更加突出;2、功能仿真的靈活性,用EDA方法設(shè)計(jì)數(shù)字系統(tǒng)是同一個(gè)測(cè)試向量可以對(duì)任何一種設(shè)計(jì)輸入方式產(chǎn)生的源文件進(jìn)行仿真,而不許要單獨(dú)編寫測(cè)試文件;3、功能擴(kuò)展的靈活性,在數(shù)字系統(tǒng)設(shè)計(jì)輸入過(guò)程中,用EDA方法實(shí)現(xiàn)了硬件設(shè)計(jì)軟件化,所以改動(dòng)源文件的內(nèi)容即可改變系統(tǒng)功能,使其擴(kuò)展為復(fù)雜度更高的數(shù)字系統(tǒng)10。1.3 設(shè)計(jì)指標(biāo)設(shè)計(jì)一個(gè)基于FPGA的數(shù)字秒表的具體化技術(shù)指標(biāo)如下。1有啟/停開關(guān),用于開始/結(jié)束計(jì)時(shí)操作2 表計(jì)時(shí)長(zhǎng)度為59.分59.99秒,超過(guò)計(jì)時(shí)長(zhǎng)度,有溢出則報(bào)警,計(jì)時(shí)長(zhǎng)度可手動(dòng)設(shè)置。3 置復(fù)位開關(guān),在任何情況下只要按下復(fù)位開關(guān),秒表都要無(wú)條件進(jìn)行復(fù)位清0操作。4 用FPGA器件實(shí)現(xiàn),用VHDL語(yǔ)言編程,并進(jìn)行下載,仿真。1.4 本文工作詳細(xì)分析課題任務(wù),對(duì)數(shù)字系統(tǒng)設(shè)計(jì)的歷史和現(xiàn)狀進(jìn)行分析,并對(duì)數(shù)字秒表的VHDL設(shè)計(jì)原理進(jìn)行了深入的研究,并將其綜合。本文設(shè)計(jì)了一個(gè)基于FPGA的數(shù)字秒表,設(shè)計(jì)選用ALTERA公司的FPGA芯片F(xiàn)LEX10K系列的EPF10K10LC84-4,在開發(fā)軟件MAX+PLUS2進(jìn)行輸入、編譯、綜合、仿真并下載到在系統(tǒng)可編程實(shí)驗(yàn)板中測(cè)試實(shí)現(xiàn)。信號(hào)源是由實(shí)驗(yàn)板上的時(shí)鐘信號(hào)經(jīng)分頻而得到的0.0 1 秒信號(hào)。而我采用了 EDA 技術(shù) ,整個(gè)設(shè)計(jì)僅分兩步:首先,在MAXPLUS開發(fā)工具中 ,先用 VHDL語(yǔ)言分別編寫出以上幾個(gè)模塊的文本文件 (稱為底層文件) ,并將它們分別轉(zhuǎn)換成相應(yīng)的器件 ,然后分別進(jìn)行時(shí)序仿真 ,每個(gè)器件的時(shí)序仿真結(jié)果與設(shè)計(jì)要求一致;然后,再將這幾個(gè)模塊共相關(guān)芯片按電路設(shè)計(jì)圖連接起來(lái),形成頂層文件后進(jìn)行整個(gè)系統(tǒng)的綜合 ,并將整個(gè)數(shù)字秒表作為一個(gè)器件進(jìn)行時(shí)序仿真。仿真完成后,將程序下載到大規(guī)??删幊踢壿嬈骷﨓PM7128SLC84-15中,確定引腳的功能,即可實(shí)現(xiàn)數(shù)字秒表的芯片化。第2章 EDA設(shè)計(jì)方法及其應(yīng)用傳統(tǒng)的電路設(shè)計(jì)方法都是自底向上進(jìn)行設(shè)計(jì)的,也就是首先確定可用的元器件,然后根據(jù)這些器件進(jìn)行邏輯設(shè)計(jì),完成個(gè)模塊后進(jìn)行連接,最后形成系統(tǒng)。而基于EDA技術(shù)的設(shè)計(jì)方法則是自頂向下進(jìn)行設(shè)計(jì)的,也就是首先采用可完全獨(dú)立于目標(biāo)器件芯片物理結(jié)構(gòu)的硬件描述語(yǔ)言,在系統(tǒng)的基本功能或行為級(jí)上對(duì)設(shè)計(jì)的產(chǎn)品進(jìn)行描述和定義,結(jié)合多層次的仿真技術(shù),在確保設(shè)計(jì)的可行性于正確的前提下,完成功能確認(rèn)。然后利用EDA工具的邏輯綜合功能,進(jìn)行邏輯映射及布局布線,在利用產(chǎn)生的仿真文件進(jìn)行包括功能和時(shí)序的驗(yàn)證,以確保實(shí)際系統(tǒng)的性能5。2.1 分析方法在基于EDA技術(shù)的系統(tǒng)設(shè)計(jì)最重要的環(huán)節(jié)在系統(tǒng)的基本功能或行為級(jí)上對(duì)設(shè)計(jì)的產(chǎn)品進(jìn)行描述和定義時(shí),我們是采用自頂向下分析,自底向上設(shè)計(jì)。所謂“自頂向下分析”就是指將數(shù)字系統(tǒng)的整體分解為各個(gè)系統(tǒng)和模塊,若子系統(tǒng)規(guī)模較大,則還需將子系統(tǒng)進(jìn)一步分解為更小的子系統(tǒng)和模塊,層層分解,直至整個(gè)系統(tǒng)中各個(gè)子系統(tǒng)關(guān)系合理、并便于邏輯電路級(jí)的設(shè)計(jì)和實(shí)現(xiàn)為止。圖2.1是一個(gè)自頂向下設(shè)計(jì)的結(jié)構(gòu)分解圖。所謂“自底向上設(shè)計(jì)”,就是在自頂向下分析建立各種設(shè)計(jì)模型的基礎(chǔ)上,先進(jìn)行低層模塊的設(shè)計(jì),完成低層模塊設(shè)計(jì)后再進(jìn)行高一層次的設(shè)計(jì),依次類推,直到完成頂層的設(shè)計(jì)為止。采用該方法進(jìn)行分析和設(shè)計(jì)時(shí),高層設(shè)計(jì)進(jìn)行功能和接口描述,說(shuō)明模塊的功能和接口,模塊功能的更詳細(xì)的描述在下一層次說(shuō)明,最底層的設(shè)計(jì)才涉及具體的寄存器和邏輯門電路等方式的描述6。采用自頂向下的設(shè)計(jì)方法有如下優(yōu)點(diǎn): 自頂向下設(shè)計(jì)方法是一種模塊化設(shè)計(jì)方法。對(duì)設(shè)計(jì)的描述從上到下逐步由粗略到詳細(xì),符合常規(guī)的邏輯思維習(xí)慣。 由于高層設(shè)計(jì)同器件無(wú)關(guān),可以完全獨(dú)立于目標(biāo)器件的結(jié)構(gòu),在設(shè)計(jì)的最初階段,設(shè)計(jì)人員可以不受芯片結(jié)構(gòu)的約束,集中精力對(duì)產(chǎn)品進(jìn)行最適應(yīng)市場(chǎng)需求的設(shè)計(jì),從而避免了傳統(tǒng)設(shè)計(jì)方法的再設(shè)計(jì)風(fēng)險(xiǎn),縮短了產(chǎn)品的上市周期。 由于系統(tǒng)采用硬件描述語(yǔ)言進(jìn)行設(shè)計(jì),可以完全對(duì)立于目標(biāo)器件的結(jié)構(gòu),因此設(shè)計(jì)易于在各種集成電路工藝或可編程器件之間移植。 適合多個(gè)設(shè)計(jì)同時(shí)進(jìn)行設(shè)計(jì)?,F(xiàn)在隨著技術(shù)的不斷進(jìn)步,許多設(shè)計(jì)由一個(gè)設(shè)計(jì)者已無(wú)法完成,必須經(jīng)過(guò)多個(gè)設(shè)計(jì)者分工協(xié)作完成一項(xiàng)設(shè)計(jì)的情況越來(lái)越多,在這種情況下,應(yīng)用自頂向下設(shè)計(jì)方法便于由多個(gè)設(shè)計(jì)者同時(shí)進(jìn)行設(shè)計(jì),對(duì)設(shè)計(jì)任務(wù)進(jìn)行合理分配,用系統(tǒng)工程的方法對(duì)設(shè)計(jì)進(jìn)行管理。針對(duì)具體的設(shè)計(jì),實(shí)施自頂向下設(shè)計(jì)方法的形式會(huì)有所不同,但均需要遵循以下兩條原則:逐步分解功能,分層次進(jìn)行設(shè)計(jì)。在個(gè)設(shè)計(jì)層次上,考慮相應(yīng)的 仿真驗(yàn)證問題。結(jié)構(gòu)分解完整樹設(shè)計(jì)部分樹設(shè)計(jì)行為建模行為建模圖2.1 自頂向下的結(jié)構(gòu)分解圖2.2 表示方法2.2.1文本表示方法在EDA的設(shè)計(jì)中,最一般化、普遍性的設(shè)計(jì)表示方式就是文本表示方式,也就是利用硬件描述語(yǔ)言(HDL)用軟件編程方式來(lái)表達(dá)自己的設(shè)計(jì)。根據(jù)文本表示方式所使用的抽象層次,我們又可將文本表示方式分為:行為描述,結(jié)構(gòu)描述,數(shù)據(jù)流(寄存器傳輸級(jí))描述。行為描述就是設(shè)計(jì)一個(gè)部件是通過(guò)定義它的輸入/輸出響應(yīng)來(lái)描述,也就是說(shuō)對(duì)一個(gè)部件的設(shè)計(jì),只描述了所希望電路的功能/行為,而沒有直接指明或涉及實(shí)現(xiàn)這些行為的硬件結(jié)構(gòu)。結(jié)構(gòu)描述就是設(shè)計(jì)一個(gè)部件是通過(guò)一些基本部件的互連來(lái)描述,也就是說(shuō)對(duì)一個(gè)不見的設(shè)計(jì),是通過(guò)描述該設(shè)計(jì)部件的硬件結(jié)構(gòu)/硬件組成來(lái)表示的。數(shù)據(jù)流描述就是一個(gè)部件通過(guò)一些寄存器部件的互連并在寄存器之間插入組合邏輯來(lái)描述,這類積存器或者顯示地通過(guò)元件具體裝配,或者通過(guò)推論作隱含的描述7。2.2.2 圖形表示方式在EDA的設(shè)計(jì)中,有時(shí)也用圖形表示方式來(lái)表示自己的設(shè)計(jì)。圖形表示方式常用的有原理圖、狀態(tài)圖、波形圖等。圖形表示方式的優(yōu)點(diǎn)是直觀、方便,但是其存在以下缺點(diǎn):設(shè)計(jì)的可讀性差;設(shè)計(jì)的復(fù)用性差;設(shè)計(jì)的移植性差;入檔、交流、交付不方便。2.2.3 文本、圖形混用方式在EDA的設(shè)計(jì)中,根據(jù)自己設(shè)計(jì)所使用的性能及如何使設(shè)計(jì)簡(jiǎn)單易行,有時(shí)也經(jīng)常采用文本、圖形混用的形式。2.3 實(shí)現(xiàn)方法 2.3.1硬件描述語(yǔ)言編程實(shí)現(xiàn)法硬件描述語(yǔ)言編程實(shí)現(xiàn)法,就是用VHDL、Verilog HDL等硬件描述語(yǔ)言來(lái)表達(dá)自己的設(shè)計(jì)思想,并使用EDA工具提供的文本編輯器以文本的方式進(jìn)行設(shè)計(jì)輸入的一種實(shí)現(xiàn)方法。它是EDA的設(shè)計(jì)中最一般化、最具普遍性的實(shí)現(xiàn)方法,根據(jù)設(shè)計(jì)系統(tǒng)的實(shí)際情況,實(shí)際可從行為級(jí)、寄存器級(jí)、門電路級(jí)等不同層次進(jìn)行描述,非常靈活,并且設(shè)計(jì)的移植性非常好。所有EDA工具都支持文本方式的編程和編譯。2.3.2 原理圖設(shè)計(jì)實(shí)現(xiàn)法原理圖設(shè)計(jì)實(shí)現(xiàn)法,就是利用原理圖表示自己的設(shè)計(jì)思想,并使用EDA工具提供的圖形編輯器以原理圖的方式進(jìn)行設(shè)計(jì)輸入的一種實(shí)現(xiàn)方法。原理圖輸入法的實(shí)現(xiàn)方式,簡(jiǎn)單、直觀、方便,并且可利用許多現(xiàn)成的單元器件或根據(jù)需要設(shè)計(jì)的元器件。2.3.3 參數(shù)可設(shè)置兆功能塊實(shí)現(xiàn)法參數(shù)可設(shè)置兆功能塊實(shí)現(xiàn)法,就是設(shè)計(jì)者可以根據(jù)實(shí)際電路的設(shè)計(jì)需要,選擇LPM(Library of Parameterized Modules,參數(shù)可設(shè)置模塊庫(kù),簡(jiǎn)稱LPM)庫(kù)中的適當(dāng)模塊,并為其設(shè)定適當(dāng)?shù)膮?shù)以滿足自己設(shè)計(jì)的需要的一中實(shí)現(xiàn)方法。作為EDIF標(biāo)準(zhǔn)的一部分,LPM形式得到了EDA工具的良好支持,LPM中功能模塊的內(nèi)容豐富。在EDA的設(shè)計(jì)中,以圖形或硬件描述語(yǔ)言模塊形式調(diào)用兆功能塊進(jìn)行設(shè)計(jì),使得基于EDA技術(shù)的電子設(shè)計(jì)能夠有效地利用其他優(yōu)秀電子工程技術(shù)人員的硬件設(shè)計(jì)成果,使得設(shè)計(jì)效率和可靠性有了很大的提高。2.3.4軟的或硬的IP實(shí)現(xiàn)法軟的或硬的IP核實(shí)現(xiàn)法,就是在大型系統(tǒng)的設(shè)計(jì)中,對(duì)于某些功能模塊的設(shè)計(jì),通過(guò)調(diào)用已經(jīng)購(gòu)買的有關(guān)公司或電子工程技術(shù)人員的軟的或硬的IP(知識(shí)產(chǎn)權(quán))核來(lái)實(shí)現(xiàn)自己設(shè)計(jì)的實(shí)現(xiàn)方法。使用該方法,可以快速而高效地實(shí)現(xiàn)大型系統(tǒng)的設(shè)計(jì)或系統(tǒng)集成2。第3章 設(shè)計(jì)思想與方案論證實(shí)現(xiàn)數(shù)字秒表的方法有多種,可以用單片機(jī)作為控制芯片,采用AT89C52單片機(jī),數(shù)字顯示采用共陽(yáng)七段LED顯示器,P0口輸出段碼數(shù)據(jù),P2.0-P2.5口作為列掃描輸出,P1.0、P1.1 、P1.3口接三個(gè)開關(guān)按鈕,用以實(shí)現(xiàn)調(diào)時(shí)及秒表時(shí)鐘功能切換設(shè)置。也可以用FPGA作為控制芯片,采用EDA技術(shù)用VHDL語(yǔ)言實(shí)現(xiàn)硬件電路。當(dāng)然每一種方案都有其各自的優(yōu)點(diǎn)。本章詳細(xì)列舉、說(shuō)明了三種不同實(shí)現(xiàn)數(shù)字秒表的方案,對(duì)三種方案的優(yōu)缺點(diǎn)進(jìn)行了對(duì)比,選出了最佳方案。3.1 設(shè)計(jì)思想1. 方案1:基于單片機(jī)控制的數(shù)字秒表 1.秒表計(jì)時(shí)器采用六位LED數(shù)碼管顯示分、秒,0.1S,0.01S。使用按鍵開關(guān)可實(shí)現(xiàn)計(jì)時(shí)調(diào)整、秒表功能。2.系統(tǒng)硬件電路的設(shè)計(jì)秒表/時(shí)鐘計(jì)時(shí)器的硬件電路設(shè)計(jì)采用AT89C52單片機(jī),數(shù)字顯示采用共陽(yáng)七段LED顯示器,P0口輸出段碼數(shù)據(jù),P2.0-P2.5口作為列掃描輸出,P1.0、P1.1 、P1.3口接三個(gè)開關(guān)按鈕,用以實(shí)現(xiàn)調(diào)時(shí)及秒表功能切換設(shè)置。為了給共陽(yáng)極LED數(shù)碼管提供驅(qū)動(dòng)電壓,采用三極管8550作電源驅(qū)動(dòng)輸出。采用12MHZ晶振,有利于提高系統(tǒng)計(jì)時(shí)的精確性。3. 系統(tǒng)程序的設(shè)計(jì)其中包括以下六方面:(1)主程序設(shè)計(jì):采用定時(shí)器T0完成中斷,其余狀態(tài)循環(huán)調(diào)用顯示子程序,當(dāng)功能開關(guān)按下時(shí),轉(zhuǎn)入相應(yīng)的功能程序。(2)顯示子程序的設(shè)計(jì):數(shù)碼管的數(shù)據(jù)存放在內(nèi)存單元70H-75H中.其中70H71H存放秒數(shù)據(jù),72H73H存放分?jǐn)?shù)據(jù),74H75H存放時(shí)數(shù)據(jù),每一地址單元內(nèi)均為十進(jìn)制BCD碼。由于采用動(dòng)態(tài)掃描實(shí)現(xiàn)數(shù)據(jù)顯示功能,顯示用十進(jìn)制BCD碼數(shù)據(jù)的對(duì)應(yīng)段碼存放在ROM表中。顯示時(shí),先取出70H-75H某一地址中的數(shù)據(jù),然后查得對(duì)應(yīng)的顯示用段碼,并從P0口輸出,P2口將對(duì)應(yīng)的數(shù)碼管選通供電,就能顯示該地址單元的數(shù)據(jù)值。(3)定時(shí)器T0中斷程序設(shè)計(jì):定時(shí)器T0用于時(shí)間計(jì)時(shí)。定時(shí)溢出中斷周期分別設(shè)計(jì)為50ms和10ms。中斷進(jìn)入后,先判斷是時(shí)鐘計(jì)時(shí)還是秒計(jì)時(shí),時(shí)鐘計(jì)時(shí)中斷20次(即1s)時(shí),對(duì)秒計(jì)數(shù)單元進(jìn)行加1操作,秒表計(jì)時(shí)時(shí)每10ms進(jìn)行加1操作。時(shí)鐘技術(shù)單元地址分別在70H71H(秒)、76H77H(分)和78H79H(時(shí)),最大計(jì)時(shí)值為23時(shí)59分59秒,秒表計(jì)數(shù)單元地址也在70H71H(0.01毫秒)、76H77H(秒)和78H79H(分),最大計(jì)時(shí)值為99分59.99秒。7AH單元內(nèi)存放(0AH).在計(jì)數(shù)單元中采用十進(jìn)制BCD碼計(jì)數(shù),滿60(秒表時(shí)100)進(jìn)位(4) T1中斷服務(wù)程序:T1中斷服務(wù)程序用于指示調(diào)整單元數(shù)字亮閃。在時(shí)間調(diào)整狀態(tài)下,每過(guò)0.3秒,將對(duì)應(yīng)單元的顯示數(shù)據(jù)換成(0AH),即熄滅一次,這樣在調(diào)整單元的顯示數(shù)據(jù)會(huì)間隔閃亮。(5) 調(diào)時(shí)功能程序的設(shè)計(jì):按下P1.0口按鍵,若按下時(shí)間小于1s,則進(jìn)入省電狀態(tài)(數(shù)碼管不亮,但時(shí)鐘不停);否則進(jìn)入調(diào)分狀態(tài),等待操作,計(jì)時(shí)器停止工作。當(dāng)再次按下該按鈕時(shí),若按下時(shí)間短于0.5s,則時(shí)間加1分;若按下時(shí)間長(zhǎng)于0.5s,則進(jìn)入小時(shí)調(diào)整狀態(tài)。在小時(shí)調(diào)整狀態(tài)下,當(dāng)按下時(shí)間長(zhǎng)于0.5s時(shí),退出調(diào)整狀態(tài),時(shí)鐘繼續(xù)走動(dòng)。P1.1口按鍵在調(diào)時(shí)狀態(tài)下可實(shí)現(xiàn)減1操作。(6)秒表/時(shí)鐘功能程序:在計(jì)時(shí)狀態(tài)下,若按P1.1口按鍵,則進(jìn)行時(shí)鐘秒表功能的切換,轉(zhuǎn)換后計(jì)時(shí)從零開始。當(dāng)按下P1.3口按鍵時(shí),可實(shí)現(xiàn)清0、計(jì)時(shí)啟動(dòng)、暫停功能。2. 方案2:基于FPGA的數(shù)字秒表的設(shè)計(jì)方案如下其設(shè)計(jì)思路為:通過(guò)分頻器將晶振所提供的信號(hào)分頻成0.01S脈沖作為計(jì)時(shí)信號(hào),經(jīng)計(jì)數(shù)器累加計(jì)數(shù),形成六十進(jìn)制的計(jì)數(shù)器和一百進(jìn)制的計(jì)數(shù)器。經(jīng)譯碼器譯碼后,分位輸出給六個(gè)七段LED數(shù)碼管顯示為。設(shè)計(jì)采用六位LED數(shù)碼管顯示分、秒,0.1s,0.01s計(jì)時(shí)方式。使用按鍵開關(guān)可實(shí)現(xiàn)開始/結(jié)束計(jì)時(shí)操作,及復(fù)位清零操作和計(jì)時(shí)長(zhǎng)度模式選擇。一設(shè)計(jì)要求(秒表的功能描述)(1)要求設(shè)置復(fù)位開關(guān)。當(dāng)按下復(fù)位開關(guān)時(shí),秒表清零并做好計(jì)時(shí)準(zhǔn)備。在任何情況下只要按下復(fù)位開關(guān),秒表都要無(wú)條件地進(jìn)行復(fù)位操作,即使是在計(jì)時(shí)過(guò)程中也要無(wú)條件地進(jìn)行清零操作。(2)要求設(shè)置啟/停開關(guān)。當(dāng)按下啟/停開關(guān)后,將啟動(dòng)秒表并開始計(jì)時(shí),當(dāng)再按一下啟/停開關(guān)時(shí),將終止秒表的計(jì)時(shí)操作。(3)要求計(jì)時(shí)精確度大于0.01秒。要求設(shè)計(jì)的計(jì)時(shí)器能夠顯示分(2位)、秒(2位)、0.1秒(1位),0.01秒的時(shí)間。(4)要求秒表的最長(zhǎng)計(jì)時(shí)時(shí)間為秒表計(jì)時(shí)長(zhǎng)度為59.分59.99秒,超過(guò)計(jì)時(shí)長(zhǎng)度,有溢出則報(bào)警,計(jì)時(shí)長(zhǎng)度可手動(dòng)設(shè)置。二秒表的面板包括:(1) 顯示屏:由6個(gè)7段數(shù)碼管組成,用于顯示當(dāng)前時(shí)間(2) QT(啟/停鍵):用于開始/結(jié)束計(jì)時(shí)操作.(3) CLR(復(fù)位鍵):用于秒表計(jì)時(shí)系統(tǒng)的復(fù)位操作(4) MODE (模式選擇鍵):用于計(jì)時(shí)長(zhǎng)度模式選擇(5) 蜂鳴器:溢出報(bào)警,則發(fā)出蜂鳴聲.3.2 論證分析課題的角度來(lái)說(shuō)可以選用單片機(jī)和FPGA芯片作為系統(tǒng)的MCU,從優(yōu)勢(shì)上講利用單片機(jī)作為控制系統(tǒng)的核心元器件,其最大的優(yōu)勢(shì)是電路簡(jiǎn)單,價(jià)格便宜,實(shí)驗(yàn)所需儀器少。而FPGA是英文Field Programmable Gate Array的縮寫,即現(xiàn)場(chǎng)可編程門陣列,它是在PAL、GAL、EPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)??稍谟鞋F(xiàn)成的條件下,F(xiàn)PGA還是有其具大的優(yōu)勢(shì)比如它的高速性,讓我們更清楚地認(rèn)識(shí)到硬件的性能及硬件描述語(yǔ)言對(duì)硬件的驅(qū)動(dòng)。FPGA是ASIC電路中設(shè)計(jì)周期最短、開發(fā)費(fèi)用最低、風(fēng)險(xiǎn)最小的器件之一。所以本方案選用以FPGA作為核心器件來(lái)設(shè)計(jì)。第4章 系統(tǒng)設(shè)計(jì)整個(gè)系統(tǒng)設(shè)計(jì)是采用自頂向下分析,自底向上設(shè)計(jì)。將數(shù)字秒表系統(tǒng)的整體分解為各個(gè)模塊電路。本章詳細(xì)介紹了數(shù)字秒表系統(tǒng)的各個(gè)模塊的設(shè)計(jì),并對(duì)各個(gè)模塊的每一個(gè)部分進(jìn)行了分析,在后半部分還對(duì)系統(tǒng)模型進(jìn)行了訪真與程序調(diào)試。各模塊之間的每一個(gè)壞節(jié)都是深思熟慮而成,各自完成相應(yīng)的功能并組成一個(gè)統(tǒng)一的整體。4.1系統(tǒng)的總體設(shè)計(jì) 4.1.1頂層電路設(shè)計(jì)數(shù)字秒表的頂層電路圖及時(shí)序分析采用硬件描述語(yǔ)言設(shè)計(jì)一個(gè)復(fù)雜電路系統(tǒng),運(yùn)用自頂向下的設(shè)計(jì)思想,將系統(tǒng)按功能逐層分割的層次化設(shè)計(jì)方法。在頂層設(shè)計(jì)中,要對(duì)內(nèi)部各功能塊的連接關(guān)系和對(duì)外的接口關(guān)系進(jìn)行描述,而功能塊實(shí)際的邏輯功能和具體的實(shí)現(xiàn)形式則由下一層模塊來(lái)描述。 圖4.1 頂層電路圖根據(jù)數(shù)字秒表的系統(tǒng)原理框圖(4.2),設(shè)計(jì)系統(tǒng)的頂層電路圖如圖4.1所示。根據(jù)圖所示的數(shù)字秒表系統(tǒng)頂層電路圖, 按照自頂向下的設(shè)計(jì)思路, 編寫各個(gè)模塊的源程序, 最后再對(duì)各個(gè)模塊進(jìn)行組合, 編寫頂層描述的源程序。FPGACLK輸入七段數(shù)碼管蜂鳴器主控電路七段數(shù)碼管譯碼電路報(bào)警控制按 鍵按鍵消抖處理計(jì) 時(shí) 電 路分頻電路 圖4.2 數(shù)字秒表系統(tǒng)原理框圖 4.1.2數(shù)字秒表的設(shè)計(jì)原理1本設(shè)計(jì)可分為五個(gè)主要模塊:(1) 鍵輸入模塊電路(含消抖電路)(2) 時(shí)鐘分頻電路模塊(3) 調(diào)整控制電路(主控電路模塊)(4) 計(jì)時(shí)電路模塊(5) 顯示控制電路模塊(包括溢出報(bào)警控制)2系統(tǒng)的總體設(shè)計(jì):各個(gè)輸入/輸出端口的作用如下: CLK為外部時(shí)鐘信號(hào),CLR為復(fù)位信號(hào)。 QT為啟/停開關(guān),用于開始/結(jié)束計(jì)時(shí)操作 MODE為模式選擇鍵,用1個(gè)電平信號(hào)A進(jìn)行模式選擇 Q是數(shù)據(jù)掃描顯示的公共七段數(shù)碼顯示驅(qū)動(dòng)端,。它經(jīng)過(guò)外接的譯碼器譯碼后接數(shù)碼管的公共端COM。 SOUND用于控制蜂鳴器發(fā)聲。當(dāng)SOUND=“1”時(shí),揚(yáng)聲器發(fā)出蜂鳴聲,表示計(jì)時(shí)超出計(jì)時(shí)長(zhǎng)度(溢出報(bào)警)4.1.3 鍵輸入模塊電路(含消抖電路)秒表面板上有3個(gè)按鍵:CLR鍵,QT鍵及MODE鍵。因?yàn)樵O(shè)計(jì)采用的是機(jī)械式的按鍵,由于存在機(jī)械觸動(dòng)的彈性作用,一個(gè)按鍵開關(guān)在閉合時(shí)不會(huì)馬上穩(wěn)定地接通,在斷開時(shí)也不會(huì)馬上斷開。因而在閉合及斷開按鍵的瞬間均伴隨有一連串的抖動(dòng)。抖動(dòng)時(shí)間的長(zhǎng)短由按鍵的機(jī)械特性決定,一般為5-10ms 。后沿抖動(dòng)閉合抖動(dòng)前沿抖動(dòng)鍵按下圖4.3按鍵時(shí)的抖動(dòng)按鍵的閉合穩(wěn)定時(shí)間的長(zhǎng)短由操作人員的按鍵動(dòng)作決定,一般為零點(diǎn)幾秒至數(shù)秒。按鍵抖動(dòng)會(huì)引起被誤讀多次。為確保FPGA對(duì)鍵的閉合僅作一次處理,必須去除按鍵抖動(dòng)。 通常在按鍵較少時(shí)可用硬件方法消除抖動(dòng),一般采用RS觸發(fā)器作為常用的消抖電路,如果按鍵較多時(shí),常用軟件消除抖動(dòng)。在EDA的設(shè)計(jì)應(yīng)用中,軟件消抖的方法即可使用RS觸發(fā)器進(jìn)行消抖,也可通過(guò)檢測(cè)按鍵按下的時(shí)間進(jìn)行消抖。消抖模塊的VHDL源程序設(shè)計(jì):LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL; 圖4.4.1消抖電路模塊USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY FDOU IS PORT(CLK,DIN:IN STD_LOGIC; DOUT:OUT STD_LOGIC);END ENTITY FDOU;ARCHITECTURE ARC OF FDOU IS SIGNAL CP:STD_LOGIC; SIGNAL JSQ:INTEGER RANGE 0 TO 3; BEGIN PROCESS(CLK) BEGIN IF (CLK EVENT AND CLK= 1 ) THEN IF DIN=1 THEN IF JSQ=3 THEN JSQ=JSQ; ELSE JSQ=JSQ+1; END IF; IF JSQ=1 THEN CP=1; ELSE CP=0; END IF; ELSE JSQ=0; END IF; END IF; DOUT=CP; END PROCESS; END ARC ;源程序說(shuō)明1 工作原理本模塊描述的防抖動(dòng)電路屬于計(jì)數(shù)器型防抖動(dòng)電路。其工作原理是,設(shè)置一個(gè)模值為4的控制計(jì)數(shù)器,在人工按鍵KEY=1時(shí),執(zhí)行加1計(jì)數(shù);KEY=1時(shí),計(jì)數(shù)器進(jìn)入狀態(tài)0。計(jì)數(shù)器只在狀態(tài)2有輸出。計(jì)數(shù)器進(jìn)入狀態(tài)3,處于保持狀態(tài)。總之,按鍵一次,計(jì)數(shù)器只有一個(gè)單脈沖輸出。2 防抖動(dòng)原理按鍵KEY是產(chǎn)生抖動(dòng)的根源,按照設(shè)計(jì),只有按鍵持續(xù)時(shí)間大于3個(gè)時(shí)鐘周期,計(jì)數(shù)器輸出才可能產(chǎn)生有效的正跳變,輸出一個(gè)單脈沖。由于機(jī)械開關(guān)抖動(dòng)產(chǎn)生的毛刺寬度小于3個(gè)時(shí)鐘周期,因而毛刺作用不可能使計(jì)數(shù)器有輸出,防抖動(dòng)目的得以實(shí)現(xiàn)。4.1.4時(shí)鐘分頻電路模塊在基于EDA技術(shù)的數(shù)字電路系統(tǒng)設(shè)計(jì)中,分頻電路應(yīng)用十分廣泛。常常使用分頻電路來(lái)得到數(shù)字系統(tǒng)中各種不同頻率的控制信號(hào)。所謂分頻電路,就是將一個(gè)給定的頻率較高的數(shù)字輸入信號(hào)經(jīng)過(guò)適當(dāng)處理后,產(chǎn)生一個(gè)或數(shù)個(gè)頻率較低的數(shù)字輸出信號(hào)。分頻電路本質(zhì)上是加法計(jì)數(shù)器的變種,其計(jì)數(shù)值有分頻常數(shù)N=fin/fout決定,其輸出不是一般計(jì)數(shù)器的計(jì)數(shù)結(jié)果,而是根據(jù)分頻常數(shù)對(duì)輸出信號(hào)的高,低電平控制。本設(shè)計(jì)需要一個(gè)計(jì)時(shí)范圍為0.01s59分59.99秒的秒表,首先需要獲得一個(gè)比較精確的計(jì)時(shí)基準(zhǔn)信號(hào),這里時(shí)周期為1/100 s的計(jì)時(shí)脈沖,所以采用一個(gè)標(biāo)準(zhǔn)時(shí)鐘信號(hào)源1KHZ經(jīng)分頻后獲得一個(gè)精確的100HZ的脈沖。 VHDL源程序:1KHZ 100HZ分頻器的源程序clk_div10.vhd LIBRARY IEEE; 圖4.4.2 10分頻模塊USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY clk_div10 IS PORT(clk :IN STD_LOGIC; clk_out :OUT STD_LOGIC);END clk_div10;ARCHITECTURE rtl OF clk_div10 IS SIGNAL clk_temp :STD_LOGIC;BEGIN PROCESS(clk) VARIABLE counter: INTEGER RANGE 0 TO 15;BEGIN IF (clkEVENT AND clk=1) THEN IF (counter = 9) THEN Counter := 0; Clk_out = 1; ELSE Counter :=counter +1 ; Clk_out = 0; END IF; END IF; END PROCESS;END rtl;4.1.5調(diào)整控制電路(主控電路模塊)為了實(shí)現(xiàn)數(shù)字秒表的各種相應(yīng)功能,主控電路對(duì)各種輸入控制信號(hào)進(jìn)行處理。作出相應(yīng)的調(diào)整,發(fā)出一系列的控制輸出信號(hào)。如對(duì)數(shù)字秒表實(shí)現(xiàn)復(fù)位操作,啟、停控制,以及計(jì)時(shí)長(zhǎng)度設(shè)置模式選擇。主控電路的功能1 實(shí)現(xiàn)系統(tǒng)復(fù)位: 設(shè)置一個(gè)CLR信號(hào),當(dāng)CLR信號(hào)0時(shí),整個(gè)系統(tǒng)復(fù)位:當(dāng)CLR1時(shí),系統(tǒng)進(jìn)行計(jì)時(shí)或模式選擇。2 啟/??刂疲河糜陂_始/結(jié)束計(jì)時(shí)操作。數(shù)字秒表的啟/停是通過(guò)控制送給計(jì)數(shù)器的時(shí)鐘來(lái)實(shí)現(xiàn)的。當(dāng)按下QT鍵后,輸出端Q的狀態(tài)發(fā)生反轉(zhuǎn)。Q為“1”時(shí)。時(shí)鐘可通過(guò)與門,秒表處于計(jì)時(shí)狀態(tài)。當(dāng)Q為“0”時(shí),時(shí)鐘被屏蔽,計(jì)數(shù)器得不到時(shí)鐘脈沖,停止計(jì)數(shù)。3 模式選擇功能:通過(guò)MODE鍵進(jìn)行秒表計(jì)時(shí)長(zhǎng)度設(shè)置的選擇。當(dāng)MODE“0”時(shí)為模式0,秒表系統(tǒng)的計(jì)時(shí)長(zhǎng)度為59分59.99秒。當(dāng)MODE“1”時(shí),為模式1,秒表系統(tǒng)的計(jì)時(shí)長(zhǎng)度為59.99秒。主控電路各端口作用:輸入端:(1) CLK為外部時(shí)鐘信號(hào),CLR為復(fù)位信號(hào)輸入端。(2) QT為啟/停信號(hào)輸入端。(3) MODE為計(jì)時(shí)長(zhǎng)度模式選擇信號(hào)輸入端。輸出端:(1)Q:為啟/??刂戚敵鲂盘?hào)。(2)MINEN:分鐘計(jì)時(shí)器的異步并行置數(shù)使能信號(hào)。(3)SECEN:秒計(jì)時(shí)器的異步并行置數(shù)使能信號(hào)。(4)TSECEN:0.01秒計(jì)數(shù)器的異步并行置數(shù)使能信號(hào)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY KZQ IS 圖4.4.3 主控模塊示意圖 PORT(CLK,CLR,A,B:IN STD_LOGIC; Q,MIN_EN,SEC_EN,TSEC_EN:OUT STD_LOGIC);END KZQ;ARCHITECTURE KZQ_ARC OF KZQ ISBEGINPROCESS(CLK,CLR)VARIABLE TMP:STD_LOGIC;BEGIN IF CLR=0 THEN TMP:=0; ELSIF CLKEVENT AND CLK=1 THEN IF A=1 THEN TMP:=NOT TMP; END IF; END IF; Q=TMP;END PROCESS;PROCESS(CLK,CLR)BEGIN IF CLR=0 THEN MIN_EN=0; SEC_EN=0; TSEC_EN=0; ELSIF CLKEVENT AND CLK=1 THEN IF B=1 THEN MIN_EN=0; SEC_EN=1; TSEC_EN=1; ELSE MIN_EN=1; SEC_EN=1; TSEC_EN=1; END IF; END IF;END PROCESS;END KZQ_ARC;4.1.6計(jì)時(shí)電路模塊在數(shù)字秒表系統(tǒng)中要用到各種計(jì)數(shù)器。計(jì)數(shù)器是在數(shù)字系統(tǒng)中使用最多的時(shí)序電路,它不僅能用于對(duì)時(shí)鐘脈沖計(jì)數(shù),還可以用與分頻,定時(shí),產(chǎn)生節(jié)拍脈沖和脈沖序列以及進(jìn)行數(shù)字運(yùn)算等。計(jì)數(shù)器的原理是將幾個(gè)觸發(fā)器按照一定的順序連接起來(lái),然后根據(jù)觸發(fā)器的狀態(tài)按照一定的規(guī)律隨時(shí)鐘的變化來(lái)記憶時(shí)鐘的個(gè)數(shù)。掌握了計(jì)數(shù)器的這個(gè)原理后,就很容易采用VHDL語(yǔ)言來(lái)對(duì)計(jì)數(shù)器進(jìn)行描述了。常用的計(jì)數(shù)方法有:同步計(jì)數(shù)器、可逆計(jì)數(shù)器、異步計(jì)數(shù)器。(1)同步計(jì)數(shù)器就是指在輸入時(shí)鐘信號(hào)脈沖的控制下,構(gòu)成計(jì)數(shù)器的各個(gè)觸發(fā)器的狀態(tài)同時(shí)發(fā)生變化的一類計(jì)數(shù)器。(2)可逆計(jì)數(shù)器就是指在輸入時(shí)鐘信號(hào)脈沖的控制下,即可以進(jìn)行遞增計(jì)數(shù)也可以進(jìn)行遞減計(jì)數(shù)的一類特殊計(jì)數(shù)器。對(duì)于具體的可逆計(jì)數(shù)器來(lái)說(shuō),需要定義一個(gè)用來(lái)控制計(jì)數(shù)器方向的控制端口updown:當(dāng)控制端口updown的值為邏輯1時(shí),可逆計(jì)數(shù)器進(jìn)行加1操作,即遞增計(jì)數(shù);而當(dāng)控制端口updown的值為0時(shí),可逆計(jì)數(shù)器進(jìn)行減1操作,即遞減計(jì)數(shù)。(3)異步計(jì)數(shù)器就是指構(gòu)成計(jì)數(shù)器的低位計(jì)數(shù)觸發(fā)器的輸出作為相鄰計(jì)數(shù)觸發(fā)器的時(shí)鐘,這樣逐級(jí)串行連接起來(lái)的一類計(jì)數(shù)器。也就是說(shuō),每一個(gè)觸發(fā)器的翻轉(zhuǎn)時(shí)刻并不是由時(shí)鐘信號(hào)來(lái)同步的,而是由它的下一位觸發(fā)器的輸出決定,這種時(shí)鐘信號(hào)的連接方法稱為行波時(shí)鐘。因此,設(shè)計(jì)人員有時(shí)將由行波時(shí)鐘驅(qū)動(dòng)的異步計(jì)數(shù)器稱為行波計(jì)數(shù)器。異步計(jì)數(shù)器與同步計(jì)數(shù)器的不同之處在于時(shí)鐘信號(hào)的提供方式不同,而其他方面則是完全相同的。由于異步計(jì)數(shù)器采用行波時(shí)鐘進(jìn)行計(jì)數(shù),因此會(huì)是使異步計(jì)數(shù)器延遲增加,從而影響了該計(jì)數(shù)器的使用范圍8。在本次設(shè)計(jì)中,采用異步計(jì)數(shù)器的方法,用硬件描述語(yǔ)言描述一個(gè)異步計(jì)數(shù)器,將低/高位計(jì)數(shù)器的輸出作為高/低位計(jì)數(shù)器的時(shí)鐘信號(hào),在本設(shè)計(jì)中要用到兩個(gè)60進(jìn)制計(jì)數(shù)器,和一個(gè)100進(jìn)制計(jì)數(shù)器(1) cnt60計(jì)數(shù)模塊:是一個(gè)多用計(jì)時(shí)模塊,既可作計(jì)秒電路又可作計(jì)分電路調(diào)用。用于秒鐘計(jì)時(shí)的CNT60_1的VHDL源程序:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; 圖4.4.4 60進(jìn)制計(jì)數(shù)器(計(jì)秒)USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT60_1 IS PORT(CLK,CLR,EN:IN STD_LOGIC; SEC1,SEC0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CO:OUT STD_LOGIC);END CNT60_1;ARCHITECTURE CNT60_1_ARC OF CNT60_1 ISBEGIN PROCESS(CLK,CLR) VARIABLE CNT0,CNT1:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF CLR=0 THEN CNT0:=0000; CNT1:=0000; ELSIF CLKEVENT AND CLK=1 THEN IF EN=1 THEN IF CNT1=0101 and cnt0= 1000THEN CNT0:=1001; CO=1; elsif cnt01001 then CNT0:=CNT0+1; else cnt0:=0000; IF CNT10101 THEN cnt1:=cnt1+1; else cnt1:=0000; CO=0; END IF; END IF; END IF; END IF; SEC1=CNT1; SEC0=CNT0; END PROCESS;END CNT60_1_ARC用于分鐘計(jì)時(shí)的CNT60_2的VHDL源程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT60_2 IS PORT(CLK,CLR,EN:IN STD_LOGIC; MIN1,MIN0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); 圖4.4.5 60進(jìn)制計(jì)數(shù)器(計(jì)分) CO:OUT STD_LOGIC);END CNT60_2;ARCHITECTURE CNT60_2_ARC OF CNT60_2 ISBEGIN PROCESS(CLK,CLR) VARIABLE CNT0,CNT1:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGI
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025浙江寧波市卓眾人力資源服務(wù)公司銷售業(yè)務(wù)人員專項(xiàng)招募20人筆試參考題庫(kù)附帶答案詳解
- 上海工會(huì)管理職業(yè)學(xué)院《機(jī)器學(xué)習(xí)導(dǎo)論》2023-2024學(xué)年第二學(xué)期期末試卷
- 北京第二外國(guó)語(yǔ)學(xué)院《區(qū)域規(guī)劃方法》2023-2024學(xué)年第二學(xué)期期末試卷
- 柳州鐵道職業(yè)技術(shù)學(xué)院《環(huán)境化學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 天津醫(yī)科大學(xué)臨床醫(yī)學(xué)院《美術(shù)教學(xué)論》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖北體育職業(yè)學(xué)院《網(wǎng)站開發(fā)(PHP)理論》2023-2024學(xué)年第二學(xué)期期末試卷
- 青海師范大學(xué)《數(shù)據(jù)庫(kù)課程設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 福建農(nóng)業(yè)職業(yè)技術(shù)學(xué)院《計(jì)算機(jī)工程數(shù)學(xué)1》2023-2024學(xué)年第二學(xué)期期末試卷
- 重慶資源與環(huán)境保護(hù)職業(yè)學(xué)院《稅收模擬》2023-2024學(xué)年第二學(xué)期期末試卷
- 北京工商大學(xué)《視唱練耳(1)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024中國(guó)電信通信傳輸設(shè)備與線路維護(hù)服務(wù)采購(gòu)協(xié)議3篇
- 空氣源熱泵培訓(xùn)資料
- T∕HGJ 12400-2021 石油化工儀表線纜選型設(shè)計(jì)標(biāo)準(zhǔn)
- T-CBIA 009-2022 飲料濃漿標(biāo)準(zhǔn)
- DB64-266-2018:建筑工程資料管理規(guī)程-201-250
- 2025屆高三地理一輪復(fù)習(xí)課件第二部分+4.2區(qū)域發(fā)展對(duì)交通運(yùn)輸布局的影響
- 2024年無(wú)人機(jī)飛行表演服務(wù)合同
- 2024年普通高等學(xué)校招生全國(guó)統(tǒng)一考試(新高考I卷)
- 《船舶管理》助理船副考試復(fù)習(xí)題庫(kù)(含答案)
- 《快速時(shí)尚品牌》課件
- YAMAHA(雅馬哈)貼片機(jī)編程培訓(xùn)教材
評(píng)論
0/150
提交評(píng)論