




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
基于FPGA的定時(shí)器/計(jì)數(shù)器的設(shè)計(jì)與實(shí)現(xiàn)摘要本課題旨在用EDA工具與硬件描述語言設(shè)計(jì)一個基于Altera公司的FPGA16位計(jì)數(shù)器\定時(shí)器,可對連續(xù)和非連續(xù)脈沖進(jìn)行計(jì)數(shù),并且計(jì)數(shù)器在具有計(jì)數(shù)定時(shí)功能基礎(chǔ)上,實(shí)現(xiàn)簡單脈寬調(diào)制功能和捕獲比較功能。本設(shè)計(jì)采用QuartusII編譯開發(fā)工具使用VerilogHDL設(shè)計(jì)語言進(jìn)行設(shè)計(jì),并采用了由上而下的設(shè)計(jì)方法對計(jì)數(shù)器進(jìn)行設(shè)計(jì),體現(xiàn)了VerilogHDL在系統(tǒng)級設(shè)計(jì)上自上而下設(shè)計(jì)風(fēng)格的優(yōu)點(diǎn)。本設(shè)計(jì)中采用了三總線的設(shè)計(jì)方案,使設(shè)計(jì)更加簡潔與規(guī)范。本設(shè)計(jì)所有模塊與功能均在QuartusII7.0_1.4G_Liwz版本下通過編譯與仿真,實(shí)現(xiàn)了定時(shí)器/計(jì)數(shù)器的設(shè)計(jì)功能。關(guān)鍵詞:VerilogHDL硬件描述語言;QuartusII;FPGA;定時(shí)器/計(jì)數(shù)器
FPGA-basedtimer/counterdesignandimplementationThistopicaimstouseEDAtoolstodesigna16bitcounter\timerbasedonAltera'sFPGAbyhardwaredescripelanguage,whichcancountcontinuousanddiscontinuouspulset,andthecounterwiththefunctionofcaptureandPWM.ThisdesignusesVerilogHDLlanguageandtop-downdesignmethodtodesignthecounteronQuartusIIcompiletool,thedesignreflecttheadvantagesofVerilogHDLtop-downdesigninsystem-leveldesign.Thedesignusesathree-busdesign,whichmakedesignmuchmorespecificationsandconcise.ThedesignandfunctionofallmodulesarecompiledandsimulationedontheQuartusII7.0_1.4G_Liwzversions,andachievethetimer/counter’sfeatures.Keywords:VerilogHDLhardwaredescriptionlanguage;QuartusII;FPGA;timer/counter河北大學(xué)2011屆本科生畢業(yè)論文(設(shè)計(jì))目錄引言 11 計(jì)數(shù)器設(shè)計(jì)方式選擇與論證 41.1 計(jì)數(shù)器實(shí)現(xiàn)方案論證 41.2 設(shè)計(jì)方式選擇認(rèn)證 41.2.1 自下而上的設(shè)計(jì)方法 41.2.2 自上而下的設(shè)計(jì)方法 41.2.3 混合的設(shè)計(jì)方法 52 計(jì)數(shù)器整體設(shè)計(jì)方案 63 計(jì)數(shù)器/定時(shí)器各種工作方式的設(shè)計(jì) 83.1 計(jì)數(shù)模塊 83.1.1 位加計(jì)數(shù)器模塊 83.1.2 位減計(jì)數(shù)器 93.2 頂層模塊設(shè)計(jì) 114 總結(jié) 19謝辭 20參考文獻(xiàn) 21PAGE20引言課題研究意義[1]近年來,隨著FPGA規(guī)模越來越大、速度越來越快,并且成本也不斷降低,在許多應(yīng)用中FPGA已經(jīng)開始取代ASIC,使FPGA的應(yīng)用領(lǐng)域不斷擴(kuò)大。目前FPGA廣泛應(yīng)用于通信、信號處理、嵌入式處理器、圖像處理和工業(yè)控制等領(lǐng)域??删幊踢壿嬈骷?0世紀(jì)70年代發(fā)展至今,其結(jié)構(gòu)、工藝、集成度、功能、速度、性能等方面都在不斷的改進(jìn)和提高;另外,電子設(shè)計(jì)自動化EDA(ElectronicDesignAutomation)技術(shù)的發(fā)展又為可編程邏輯器件的廣泛應(yīng)用提供了有力的工具。因此掌握FPGA的開發(fā)和使用是一項(xiàng)很有實(shí)用性的技術(shù)。而計(jì)數(shù)器/定時(shí)器又是學(xué)習(xí)FPGA和FPGA硬件編程語言VerilogHDL語言和一個比較簡單的入門級程序,同時(shí)計(jì)數(shù)器定時(shí)器也是現(xiàn)在數(shù)字電路中一個非常常用的器件,所以對定時(shí)器/計(jì)數(shù)器的研究,即能更好的學(xué)習(xí)FPGA和VerilogHDL語言,增加對FPGAR的掌握,又可以對計(jì)數(shù)/定時(shí)器這一常用數(shù)字電路器件進(jìn)行一個更加詳細(xì)的研究。國內(nèi)外發(fā)展與應(yīng)用[1-2]自1985年問世以來,F(xiàn)PGA(現(xiàn)場可編程門陣列)從集成電路與系統(tǒng)家族一個不起眼的小角色逐漸成為電子設(shè)計(jì)領(lǐng)域的重要器件。它極大地提高了設(shè)計(jì)靈活性并縮短了產(chǎn)品上市時(shí)間,在通信、工業(yè)控制、航空領(lǐng)域中廣泛應(yīng)用?,F(xiàn)代電氣傳動技術(shù)的發(fā)展得益于電力電子技術(shù)、自動控制技術(shù)和微電子技術(shù)的發(fā)展,現(xiàn)代全控開關(guān)型電力電子器件制造技術(shù)的進(jìn)步和PWM技術(shù)的產(chǎn)生使處于調(diào)速系統(tǒng)中的電機(jī)電流諧波減小、轉(zhuǎn)矩脈動降低、電機(jī)運(yùn)行效率和調(diào)速性能提高;而現(xiàn)代控制理論的發(fā)展為進(jìn)一步改善電機(jī)調(diào)速性能提供了有利條件,出現(xiàn)了標(biāo)志現(xiàn)代交流調(diào)速理論的矢量控制和直接轉(zhuǎn)矩控制,使感應(yīng)電機(jī)的調(diào)速性能可以和直流電機(jī)媲美;然而,10多年的研究經(jīng)驗(yàn)告訴我們,優(yōu)越的調(diào)速性能是需要強(qiáng)有力的微電子技術(shù)(以往主要是高速CPU)發(fā)展來保障的,先進(jìn)的控制算法加上高速的計(jì)算處理能力才能使交流調(diào)速系統(tǒng)性能得到滿足。近年來發(fā)展起來的超大規(guī)??删幊踢壿嬓酒‵PGA/CPLD),由于其靈活的可編程能力、快速的并行信號處理方式、足夠多的內(nèi)部資源、無復(fù)位問題和程序跑飛的困擾等,使其在電氣傳動領(lǐng)域中獲得了廣泛應(yīng)用。本文主要工作及內(nèi)容安排本設(shè)計(jì)主要采用Altera公司的FPGA芯片,通過QuartusII設(shè)計(jì)開發(fā)軟件及VerilogHDL語言設(shè)計(jì)完成一個計(jì)數(shù)器/定時(shí)器的設(shè)計(jì),在前言首先對課題來源及目的、意義進(jìn)行了分析與介紹。第一章則對設(shè)計(jì)方案進(jìn)行了比較與選擇。第二章是對本次設(shè)計(jì)中用到的工具作一些簡要介紹;第三章分模塊對此次設(shè)計(jì)進(jìn)行詳細(xì)介紹;第四章是對本次設(shè)計(jì)的總結(jié),并在本設(shè)計(jì)的基礎(chǔ)上提出改進(jìn)的方法,完善系統(tǒng)的功能以便更方便地應(yīng)用于實(shí)踐當(dāng)中。所用工具簡介QuartersII簡介[3]QuartusII可編程邏輯軟件屬于第四代PLD開發(fā)平臺。它提供了PLD設(shè)計(jì)的綜合開發(fā)環(huán)境,是PLD設(shè)計(jì)的基礎(chǔ)。QuartusII集成環(huán)境支持PLD設(shè)計(jì)的設(shè)計(jì)輸入、編譯、綜合、布局、布線、時(shí)序分析、仿真下載等EDA設(shè)計(jì)過程。QuartusII還提供了完全集成且與電路結(jié)構(gòu)無關(guān)的開發(fā)包環(huán)境,具有數(shù)字邏輯設(shè)計(jì)的全部特性,主要包括以下幾點(diǎn):·能生成第三方EDA軟件使用的VHDL網(wǎng)表文件和Verilog網(wǎng)表文件?!た衫迷韴D、結(jié)構(gòu)框圖、VerilogHDL、AHDL和VHDL完成電路描述,并將其保存為設(shè)計(jì)實(shí)體文件;·芯片(電路)平面布局連線編輯;·LogicLock增量設(shè)計(jì)方法,用戶可建立并優(yōu)化系統(tǒng),然后添加對原始系統(tǒng)的性能影響較小或無影響的后續(xù)模塊;·使用組合編譯方式可一次完成整體設(shè)計(jì)流程;·功能強(qiáng)大的邏輯綜合工具;·完備的電路功能仿真與時(shí)序邏輯仿真工具;·支持軟件源文件的添加和創(chuàng)建,并將它們鏈接起來生成編程文件;·定時(shí)/時(shí)序分析與關(guān)鍵路徑延時(shí)分析;·自動定位編譯錯誤;·高效的期間編程與驗(yàn)證工具;·可使用SignalTapII邏輯分析工具進(jìn)行嵌入式的邏輯分析;·可讀入標(biāo)準(zhǔn)的EDIF網(wǎng)表文件、VHDL網(wǎng)表文件和Verilog網(wǎng)表文件;實(shí)驗(yàn)平臺簡介[5]圖1GX-SOC/SOPC-CIDE實(shí)驗(yàn)平臺本實(shí)驗(yàn)采用GX-SOC/SOPC-CIDE實(shí)驗(yàn)平臺實(shí)驗(yàn),(如右圖2-1),GX-SOC/SOPC-CIDE實(shí)驗(yàn)平臺集眾多功能于一體,采用全新的"核心板+……+核心板+平臺主板"自由疊層結(jié)構(gòu)。根據(jù)研發(fā)需求,可實(shí)現(xiàn)基于ALTERA、XILINX、ACTEL、Lattice、TI/ADI(DSP)、ARM等廠家的軟核/硬核處理器相結(jié)合的嵌入式系統(tǒng)設(shè)計(jì)。靈活的CIDE綜合創(chuàng)新開發(fā)實(shí)驗(yàn)平臺功能強(qiáng)大、硬件接口豐富,平臺嵌入式軟件除支持C、C++語言開發(fā)之外,還支持uC/OSII、uClinux嵌入式操作系統(tǒng)。獨(dú)特的核心板擴(kuò)展接口可完美實(shí)現(xiàn)核心板與核心板、核心板與平臺主板之間無縫連接,實(shí)現(xiàn)復(fù)雜的系統(tǒng)功能。用戶可根據(jù)需求,選擇SOPC和DSP組合、SOPC和ARM組合、ARM和DSP組合、單片機(jī)和SOPC的組合……通過模式轉(zhuǎn)換功能,不同的硬件模塊間,可實(shí)現(xiàn)近20種獨(dú)立的具有特色的綜合模塊組合。CIDE平臺優(yōu)異的綜合性設(shè)計(jì)大大提高了開發(fā)平臺的利用率,是SOPC、EDA、ARM、DSP、SOC、單片機(jī)相互結(jié)合的實(shí)驗(yàn)教學(xué)、電子系統(tǒng)設(shè)計(jì)創(chuàng)新實(shí)驗(yàn)室、嵌入式系統(tǒng)實(shí)驗(yàn)室、科研開發(fā)最理想的平臺。圖1GX-SOC/SOPC-CIDE實(shí)驗(yàn)平臺VerilogHDL硬件描述語言簡介[6-8]VerilogHDL是在應(yīng)用最為廣泛的C語言基礎(chǔ)上發(fā)展起來的一種硬件描述語言,它是由GDA公司的Phil
Moorby于1983年創(chuàng)建的,最初只設(shè)計(jì)了一個仿真與驗(yàn)證工具,之后又陸續(xù)開發(fā)了相關(guān)的故障模擬與時(shí)序分析工具。1985年Moorby推出了它的第三個商用仿真器Verilog-XL,獲得了巨大成功,從而使VerilogHDL得到迅速的推一和應(yīng)用。1989年CADENCE公司收購了GDA公司,使Verilog
HDL成為該公司的獨(dú)家專利。1990年CADENCE公司公開發(fā)表了Verilog
HDL,并成立OVI(0pen
Verilog
International)組織以促進(jìn)Verilog
HDL語言的發(fā)展。1995年Verilog
HDL成為IEEE標(biāo)準(zhǔn),即IEEE
Standard
1364—1995。VerilogHDL的主要特點(diǎn)[9-11]VerilogHDL既是一種行為描述語言,也是一種結(jié)構(gòu)描述語言。如果按照一定的規(guī)則和風(fēng)格編寫代碼,就可以將功能行為模塊通過工具自動轉(zhuǎn)化為門級互連的結(jié)構(gòu)模塊。這意味著利用Verilog語言所提供的功能,就可以構(gòu)造一個模塊間的清晰結(jié)構(gòu)來描述復(fù)雜的大型設(shè)計(jì),并對所需的邏輯電路進(jìn)行嚴(yán)格的設(shè)計(jì)。下面列出的是Verilog語言的主要功能:1、用延遲表示式或事件表達(dá)式來明確地控制過程的啟動時(shí)間;2、通過命名的事件來觸發(fā)其他過程里的激活行為或停止行為;3、提供了條件和循環(huán)等程序結(jié)構(gòu);4、提供了可帶參數(shù)且非零延續(xù)時(shí)間的任務(wù)程序結(jié)構(gòu);5、提供了可定義新的操作符的函數(shù)結(jié)構(gòu);6、提供了用于建立表達(dá)式的算術(shù)運(yùn)算符、邏輯運(yùn)算符和位運(yùn)算符;7、提供了一套完整的表示組合邏輯基本元件的原語;8、提供了雙向通路和電阻器件的描述;9、可建立MOS器件的電荷分享和衰減模型;10、可以通過構(gòu)造性語句精確地建立信號模型;11、可描述順序執(zhí)行或并行執(zhí)行的程序結(jié)構(gòu);此外,VerilogHDL語言還有一個重要特征就是:和C語言風(fēng)格有很多的相似之處,學(xué)習(xí)起來比較容易。
計(jì)數(shù)器設(shè)計(jì)方式選擇與論證計(jì)數(shù)器實(shí)現(xiàn)方案論證 軟件定時(shí)利用通用微處理器(CPU)用匯編語言大進(jìn)行定時(shí)/計(jì)數(shù),定時(shí)計(jì)數(shù)準(zhǔn)確,但這會造CPU資源的浪費(fèi)或者無法滿足實(shí)時(shí)處理的要求。不可編程硬件計(jì)數(shù)/定時(shí)器不易控制,計(jì)數(shù)范圍及定時(shí)值不易改變,功能較單一??删幊逃布?jì)數(shù)/定時(shí)器可編程定時(shí)器的計(jì)數(shù)定時(shí)值可以很容易的由軟件來確定和改變,功能強(qiáng),使用靈活?;谝陨峡紤],可編程硬件計(jì)數(shù)/定時(shí)器具有其它類型計(jì)數(shù)定時(shí)器不可具備的優(yōu)點(diǎn),本設(shè)計(jì)則選用第三種方案,設(shè)計(jì)一個基于FPGA芯片的可編程計(jì)數(shù)器/定時(shí)器。設(shè)計(jì)方式選擇認(rèn)證采用硬件設(shè)計(jì)描述語言設(shè)計(jì)一般由三種設(shè)計(jì)方法,自下而上、自上而上和混合設(shè)計(jì)方法,其優(yōu)缺點(diǎn)主要如下所示:自下而上的設(shè)計(jì)方法自下而上的設(shè)計(jì)是傳統(tǒng)的設(shè)計(jì)方法,是從基本單元出發(fā),對設(shè)計(jì)進(jìn)行逐層劃分的過程。這種設(shè)計(jì)方法與用電子元件在模擬實(shí)現(xiàn)板上建立一個系統(tǒng)的步驟有密切的關(guān)系。優(yōu)、缺點(diǎn)分別如下:優(yōu)點(diǎn):設(shè)計(jì)人員對這種設(shè)計(jì)方法比較熟悉,實(shí)現(xiàn)各個子模塊所需的時(shí)間較短。缺點(diǎn):對系統(tǒng)的整體功能把握不足;由于必須先對多個子模塊進(jìn)行設(shè)計(jì),因此實(shí)現(xiàn)整個系統(tǒng)的功能所需的時(shí)間長;另外,對設(shè)計(jì)人員之間相互協(xié)作也有較高的要求。自上而下的設(shè)計(jì)方法自上而下的設(shè)計(jì)是從系統(tǒng)級開始,把系統(tǒng)劃分為基本單元,然后再把基本單元劃分為下一層次的基本單元,直到可用EDA元件實(shí)現(xiàn)為止。這種方法的優(yōu)、缺點(diǎn)如下。優(yōu)點(diǎn):在設(shè)計(jì)周期開始就做好了系統(tǒng)分析;由于設(shè)計(jì)的主要仿真和調(diào)試過程是在高層完成的,所以能夠早期發(fā)現(xiàn)結(jié)構(gòu)設(shè)計(jì)上的錯誤,避免了設(shè)計(jì)工作的浪費(fèi),方便了系統(tǒng)的劃分和整個項(xiàng)目的管理,可減少設(shè)計(jì)人員勞動,避免了重復(fù)設(shè)計(jì)。缺點(diǎn):得到的最小單元不標(biāo)準(zhǔn),且制造成本高?;旌系脑O(shè)計(jì)方法復(fù)雜數(shù)字邏輯電路和系統(tǒng)設(shè)計(jì)過程,通常是以上兩種設(shè)計(jì)方法的結(jié)合。設(shè)計(jì)時(shí)需要考慮多個目標(biāo)的綜合平衡。在高層系統(tǒng)用自上而下的設(shè)計(jì)方法實(shí)現(xiàn),而使用自下而上的方法從庫元件或以往設(shè)計(jì)庫中調(diào)用已有的設(shè)計(jì)單元?;旌显O(shè)計(jì)方法兼有以上兩種方法的優(yōu)點(diǎn),并且可使用先進(jìn)的矢量測試方法。本次設(shè)計(jì)用VerilogHDL語言設(shè)計(jì)一個計(jì)數(shù)器系統(tǒng),自上而下的設(shè)計(jì)方式本就是VerilogHDL的特點(diǎn),并且由以上分析可以看出自上而下的設(shè)計(jì)方式在系統(tǒng)級結(jié)構(gòu)設(shè)計(jì)的優(yōu)點(diǎn),因此本設(shè)計(jì)采用了自上而下的設(shè)計(jì)方式。
計(jì)數(shù)器整體設(shè)計(jì)方案8位數(shù)據(jù)線3位地址線時(shí)鐘信號控制信號(數(shù)據(jù)讀取信號、捕獲信號、捕獲數(shù)據(jù)數(shù)據(jù)輸出信號)16位輸出數(shù)據(jù)線16位加減/計(jì)數(shù)器輸出數(shù)據(jù)寄存器狀態(tài)寄存器(地址000)捕獲數(shù)據(jù)寄存器脈寬調(diào)制模塊數(shù)據(jù)寄存器a(地址001-010)數(shù)據(jù)寄存器b(地址011-100)地址寄存器(000-100)8位數(shù)據(jù)線3位地址線時(shí)鐘信號控制信號(數(shù)據(jù)讀取信號、捕獲信號、捕獲數(shù)據(jù)數(shù)據(jù)輸出信號)16位輸出數(shù)據(jù)線16位加減/計(jì)數(shù)器輸出數(shù)據(jù)寄存器狀態(tài)寄存器(地址000)捕獲數(shù)據(jù)寄存器脈寬調(diào)制模塊數(shù)據(jù)寄存器a(地址001-010)數(shù)據(jù)寄存器b(地址011-100)地址寄存器(000-100)圖2-1計(jì)數(shù)器整體設(shè)計(jì)框圖圖2-1計(jì)數(shù)器整體設(shè)計(jì)框圖該設(shè)計(jì)整體設(shè)計(jì)方案如圖1-1,主要有地址寄存器、狀態(tài)寄存器、數(shù)據(jù)寄存器、計(jì)數(shù)器、脈寬調(diào)制模塊和捕獲數(shù)據(jù)寄存器等模塊組成。其中地址寄存器主要用于對發(fā)送數(shù)據(jù)的目的寄存器尋址,地址范圍為000-100,各地址對應(yīng)寄存器及作用為:000:狀態(tài)寄存器,用于存放計(jì)數(shù)器工作模式選擇數(shù)據(jù);001:數(shù)據(jù)寄存器jia高8位,加計(jì)數(shù)器最大值高8位數(shù)據(jù);010:數(shù)據(jù)寄存器jia低8位,加計(jì)數(shù)器最大值低8位數(shù)據(jù);011:數(shù)據(jù)寄存器jian高8位,減計(jì)數(shù)器初值高8位數(shù)據(jù);100:數(shù)據(jù)寄存器jian低8位,減計(jì)數(shù)器初值低8位數(shù)據(jù);狀態(tài)寄存器用于計(jì)數(shù)器工作模式選擇,所設(shè)計(jì)計(jì)數(shù)器共有:加計(jì)數(shù)、減計(jì)數(shù)、捕獲模式、脈寬調(diào)制模式四個狀態(tài),與狀態(tài)寄存器所對應(yīng)狀態(tài)為:0000000:加計(jì)數(shù);0000001:減計(jì)數(shù);0000010:捕獲模式;0000011:脈寬調(diào)模式??刂菩盘栍袛?shù)據(jù)讀取信號、捕獲信號、捕獲數(shù)據(jù)輸出信號。數(shù)據(jù)讀取信號作用為:當(dāng)數(shù)據(jù)線數(shù)據(jù)準(zhǔn)備好、地址準(zhǔn)備好時(shí),讀取信號生效時(shí)才能將數(shù)據(jù)線的數(shù)據(jù)讀入各數(shù)據(jù)寄存器中,這樣可以有效保證輸入的數(shù)據(jù)的準(zhǔn)確性。捕獲信號作用為當(dāng)計(jì)數(shù)器工作于捕獲模式時(shí),捕獲信號有效時(shí)將計(jì)數(shù)器中的數(shù)據(jù)捕獲進(jìn)入捕獲數(shù)據(jù)寄存器;捕獲數(shù)據(jù)輸出信號的作用為將捕獲的數(shù)據(jù)由輸出數(shù)據(jù)線輸出,在捕獲、輸出捕獲數(shù)據(jù)過程中,計(jì)數(shù)器保持計(jì)數(shù)。
計(jì)數(shù)器/定時(shí)器各種工作方式的設(shè)計(jì)本設(shè)計(jì)分為加計(jì)數(shù)模塊、減計(jì)數(shù)模塊和頂層模塊,捕獲功能與脈寬調(diào)制功能設(shè)計(jì)在頂層模塊中。本設(shè)計(jì)所有程序均通過QuartusII7.0_1.4G編譯平臺編譯仿真通過。計(jì)數(shù)工作模式計(jì)數(shù)模塊分為加計(jì)數(shù)模塊和減計(jì)數(shù)模塊,計(jì)數(shù)進(jìn)制數(shù)據(jù)可以設(shè)定。16位加計(jì)數(shù)器模塊16位計(jì)數(shù)器只有對脈沖進(jìn)行計(jì)數(shù)功能,有16位進(jìn)制數(shù)據(jù)可以由設(shè)定端口(indate[15-0]),復(fù)位端口,和16位數(shù)據(jù)輸出端口。圖3-116位加計(jì)數(shù)器器件圖程序流程圖:開始開始檢測到脈沖輸入是否到設(shè)定進(jìn)制值NY計(jì)數(shù)器清零,重新開始加計(jì)數(shù)圖3-216位加計(jì)數(shù)流程圖器流程圖進(jìn)制數(shù)值設(shè)定16位加計(jì)數(shù)器源程序:modulejia(clk,q,in,reset);inputclk,reset;output[15:0]q;input[15:0]in; //進(jìn)制數(shù)據(jù)輸入reg[15:0]indate;reg[15:0]q;always@(posedgeclk)begin if(reset) //清零信號 q<=0; else begin if(q<in) q<=q+1; else q<=0; endendendmodule波形圖:設(shè)定為5進(jìn)制計(jì)數(shù)復(fù)位信號有效,計(jì)數(shù)器清零設(shè)定為5進(jìn)制計(jì)數(shù)復(fù)位信號有效,計(jì)數(shù)器清零圖3-316位加計(jì)數(shù)器波形圖16位減計(jì)數(shù)器16位減計(jì)數(shù)器(如圖3-4)只有對脈沖進(jìn)行減計(jì)數(shù)功能,計(jì)數(shù)初值可以由16位進(jìn)制數(shù)據(jù)端口(indate[15-0]),計(jì)數(shù)器還具有復(fù)位端口,和16位數(shù)據(jù)輸出端口。圖3-416位減計(jì)數(shù)器件圖減計(jì)數(shù)器工作流程圖:開始開始檢測到脈沖輸入是否到0NY計(jì)數(shù)器為0,重新開始減計(jì)數(shù)圖3-516位減計(jì)數(shù)器流程圖計(jì)數(shù)初值設(shè)定源程序:modulejian(clk,q,in,reset);inputclk,reset;output[15:0]q;input[15:0]in;reg[15:0]indate;reg[15:0]q;always@(posedgeclk)begin if(reset) q<=0; else begin if(q>0) q<=q-1; else q<=in; endendendmodule波形圖:初始值設(shè)定為10復(fù)位信號有效,計(jì)數(shù)器清零初始值設(shè)定為10復(fù)位信號有效,計(jì)數(shù)器清零圖3-616位減計(jì)數(shù)器波形圖頂層模塊設(shè)計(jì)1)頂層模塊器件圖圖3-7頂層模塊器件圖2)計(jì)數(shù)器工作流程圖開始開始地址輸入地址讀取信號有效寄存器尋址狀態(tài)寄存器數(shù)據(jù)寄存器數(shù)據(jù)寄存器數(shù)據(jù)寄存器數(shù)據(jù)寄存器狀態(tài)寄存器加計(jì)數(shù)模式減計(jì)數(shù)模式捕獲模式脈寬調(diào)制模式結(jié)束Clk時(shí)鐘圖3-8頂層模塊流程圖本次設(shè)計(jì)的脈沖發(fā)生功能模塊、捕獲模塊都集成在頂層模塊case語句中,這個模塊運(yùn)用了兩個case語句分別選用于地址寄存器尋址和功能選擇——5個地址和四個功能模式狀態(tài),其地址狀態(tài)有效狀態(tài)為5個狀態(tài),所以采用了3位地址線來用于寄存器尋址。而模式選擇寄存器由8八數(shù)據(jù)線輸入,但只用到最低四個狀態(tài),其它狀態(tài)全部為無效狀態(tài)。源程序如下:`include"jia.v"`include"jian.v"moduleding(clk,date,out,buhuo,add,shuchu,zs,dq);inputclk;inputbuhuo,shuchu,dq; //各個控制信號input[7:0]date; //數(shù)據(jù)線input[2:0]add; //地址線output[15:0]out; //輸出數(shù)據(jù)線outputzs; //捕獲數(shù)據(jù)標(biāo)志位reg[15:0]out; //輸入出寄存器reg[15:0]p;reg[15:0]q;regzs;reg[7:0]state; //狀態(tài)寄存器reg[15:0]bhuo; //捕獲數(shù)據(jù)寄存器reg[15:0]regjia; //加計(jì)數(shù)進(jìn)制數(shù)據(jù)設(shè)定寄存器reg[15:0]regjian; //減計(jì)數(shù)初值設(shè)定寄存器regreset; //復(fù)位reg[2:0]regadd; //地址寄存器parametershang=8'd0,xia=8'd1,bh=8'd2,mm=8'd3;//常數(shù)設(shè)定always@(posedgeclk) //數(shù)據(jù)輸入模塊begin regadd<=add; //讀取地址 case(regadd) //寄存器尋址 3'd0:begin if(dq) //讀取信號有效時(shí)才能讀取數(shù)據(jù) state<=date; else state<=state; //讀取信號無效時(shí)不能改變寄存器數(shù)據(jù) end 3'd1: begin if(dq) regjia[15:8]<=date; else regjia[15:8]<=regjia[15:8]; end 3'd2: begin if(dq) regjia[7:0]<=date; else regjia[7:0]<=regjia[7:0]; end 3'd3: begin if(dq) regjian[15:8]<=date; else regjian[15:8]<=regjian[15:8]; end 3'd4: begin if(dq) regjian[7:0]<=date; else regjian[7:0]<=regjian[7:0]; end endcaseendalways@(posedgeclk) //計(jì)數(shù)器主模塊begin case(state) //狀態(tài)選擇 shang: //加計(jì)數(shù) begin reset<=0; out<=p; end xia: //減計(jì)數(shù)begin reset<=0; out<=q; end bh: //捕獲模式 begin reset<=0; if(buhuo) begin bhuo<=p; zs<=1; end else begin if(shuchu) begin out<=bhuo; zs<=1; end else begin zs<=0; out<=p; end end end mm:begin //脈寬調(diào)制模式 reset<=0; if(p>regjian) out[0]<=1; else out[0]<=0; end endcaseendjiajia(.clk(clk),.q(p),.in(regjia),.reset(reset));jianjian(.clk(clk),.q(q),.in(regjian),.reset(reset));endmodule最終程序各模式波形圖:1)加計(jì)數(shù)時(shí)的波形圖15進(jìn)制State為0,加計(jì)數(shù)模式15進(jìn)制State為0,加計(jì)數(shù)模式圖3-9add為0時(shí),為加計(jì)數(shù)模式時(shí)波形從圖中可以看出,out輸出對clk計(jì)數(shù),波形與設(shè)計(jì)目標(biāo)相符。設(shè)定為模式1(減計(jì)數(shù)模式)時(shí)波形減計(jì)數(shù)初始值為9減計(jì)數(shù)初始值為9讀取信號生效時(shí)模式才改變時(shí)圖3-10add為1,減計(jì)數(shù)模式時(shí)波形從圖中可以看出,當(dāng)?shù)刂窢顟B(tài)信號更改后開始并未生效,而是等到讀取信號到來時(shí)才開始生效。加上讀取信號后,可以有效防止地址線干擾或不穩(wěn)定所帶來的各種問題。捕獲模式時(shí)波形輸出信號有效時(shí)輸出捕獲寄存器中數(shù)據(jù)捕獲數(shù)據(jù)寄存器輸出信號有效捕獲信號有效輸出信號有效時(shí)輸出捕獲寄存器中數(shù)據(jù)捕獲數(shù)據(jù)寄存器輸出信號有效捕獲信號有效圖3-11add為2時(shí),為捕獲模式時(shí)波形從圖中可以看到,當(dāng)計(jì)數(shù)器處理捕獲模式,當(dāng)捕獲信號有效時(shí),計(jì)數(shù)器當(dāng)時(shí)的數(shù)據(jù)被捕獲到捕獲寄存器中,但此時(shí)計(jì)數(shù)器并沒有停止,輸出也保持輸出計(jì)數(shù)器數(shù)值,但當(dāng)輸出信號有效時(shí),輸出為捕獲寄存器中的數(shù)據(jù),當(dāng)
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國硝酸鉛市場調(diào)查研究報(bào)告
- 2025至2030年中國局部照明變壓器市場分析及競爭策略研究報(bào)告
- 2025至2030年中國4路對絞線接收器數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025━2030年鐵杉原木行業(yè)深度研究報(bào)告
- 2025━2030年中國豬皮高爾夫球手套項(xiàng)目投資可行性研究報(bào)告
- 2025-2035年全球及中國實(shí)驗(yàn)室烤箱和冰箱行業(yè)市場發(fā)展現(xiàn)狀及發(fā)展前景研究報(bào)告
- 2024年中國紅素健列膠囊市場調(diào)查研究報(bào)告
- 2025年紅外線汽車尾氣分析儀合作協(xié)議書
- 拱橋:鋼管混凝土工程現(xiàn)場質(zhì)量檢驗(yàn)報(bào)告單(三)
- 2025年超細(xì)合金粉末項(xiàng)目建議書
- 小學(xué)語文新課標(biāo)學(xué)習(xí)任務(wù)群的基本理解和操作要領(lǐng)
- 《我愛你漢字》課件
- 完整版北師大版二年級數(shù)學(xué)下冊全冊課件
- 2023年江蘇護(hù)理職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試筆試題庫及答案解析
- DB11-Z361-2006應(yīng)急系統(tǒng)信息化技術(shù)要求
- 新高考普通高中數(shù)學(xué)人教A版教材目錄
- 【2022年】金鑰匙科技競賽試題
- 績效評價(jià)師考試-隨機(jī)題庫
- 新版五金公司績效考核表
- 曼昆《經(jīng)濟(jì)學(xué)原理》(微觀經(jīng)濟(jì)學(xué)分冊)第8版 全部答案
- 第八章:微生物的生態(tài)
評論
0/150
提交評論