基于FPGA的定時器計數(shù)器的設(shè)計與實現(xiàn)_第1頁
基于FPGA的定時器計數(shù)器的設(shè)計與實現(xiàn)_第2頁
基于FPGA的定時器計數(shù)器的設(shè)計與實現(xiàn)_第3頁
基于FPGA的定時器計數(shù)器的設(shè)計與實現(xiàn)_第4頁
基于FPGA的定時器計數(shù)器的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

基于FPGA的定時器/計數(shù)器的設(shè)計與實現(xiàn)摘要本課題旨在用EDA工具與硬件描述語言設(shè)計一個基于Altera公司的FPGA16位計數(shù)器\定時器,可對連續(xù)和非連續(xù)脈沖進行計數(shù),并且計數(shù)器在具有計數(shù)定時功能基礎(chǔ)上,實現(xiàn)簡單脈寬調(diào)制功能和捕獲比較功能。本設(shè)計采用QuartusII編譯開發(fā)工具使用VerilogHDL設(shè)計語言進行設(shè)計,并采用了由上而下的設(shè)計方法對計數(shù)器進行設(shè)計,體現(xiàn)了VerilogHDL在系統(tǒng)級設(shè)計上自上而下設(shè)計風格的優(yōu)點。本設(shè)計中采用了三總線的設(shè)計方案,使設(shè)計更加簡潔與規(guī)范。本設(shè)計所有模塊與功能均在QuartusII7.0_1.4G_Liwz版本下通過編譯與仿真,實現(xiàn)了定時器/計數(shù)器的設(shè)計功能。關(guān)鍵詞:VerilogHDL硬件描述語言;QuartusII;FPGA;定時器/計數(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河北大學2011屆本科生畢業(yè)論文(設(shè)計)目錄引言 11 計數(shù)器設(shè)計方式選擇與論證 41.1 計數(shù)器實現(xiàn)方案論證 41.2 設(shè)計方式選擇認證 41.2.1 自下而上的設(shè)計方法 41.2.2 自上而下的設(shè)計方法 41.2.3 混合的設(shè)計方法 52 計數(shù)器整體設(shè)計方案 63 計數(shù)器/定時器各種工作方式的設(shè)計 83.1 計數(shù)模塊 83.1.1 位加計數(shù)器模塊 83.1.2 位減計數(shù)器 93.2 頂層模塊設(shè)計 114 總結(jié) 19謝辭 20參考文獻 21PAGE20引言課題研究意義[1]近年來,隨著FPGA規(guī)模越來越大、速度越來越快,并且成本也不斷降低,在許多應(yīng)用中FPGA已經(jīng)開始取代ASIC,使FPGA的應(yīng)用領(lǐng)域不斷擴大。目前FPGA廣泛應(yīng)用于通信、信號處理、嵌入式處理器、圖像處理和工業(yè)控制等領(lǐng)域??删幊踢壿嬈骷?0世紀70年代發(fā)展至今,其結(jié)構(gòu)、工藝、集成度、功能、速度、性能等方面都在不斷的改進和提高;另外,電子設(shè)計自動化EDA(ElectronicDesignAutomation)技術(shù)的發(fā)展又為可編程邏輯器件的廣泛應(yīng)用提供了有力的工具。因此掌握FPGA的開發(fā)和使用是一項很有實用性的技術(shù)。而計數(shù)器/定時器又是學習FPGA和FPGA硬件編程語言VerilogHDL語言和一個比較簡單的入門級程序,同時計數(shù)器定時器也是現(xiàn)在數(shù)字電路中一個非常常用的器件,所以對定時器/計數(shù)器的研究,即能更好的學習FPGA和VerilogHDL語言,增加對FPGAR的掌握,又可以對計數(shù)/定時器這一常用數(shù)字電路器件進行一個更加詳細的研究。國內(nèi)外發(fā)展與應(yīng)用[1-2]自1985年問世以來,F(xiàn)PGA(現(xiàn)場可編程門陣列)從集成電路與系統(tǒng)家族一個不起眼的小角色逐漸成為電子設(shè)計領(lǐng)域的重要器件。它極大地提高了設(shè)計靈活性并縮短了產(chǎn)品上市時間,在通信、工業(yè)控制、航空領(lǐng)域中廣泛應(yīng)用?,F(xiàn)代電氣傳動技術(shù)的發(fā)展得益于電力電子技術(shù)、自動控制技術(shù)和微電子技術(shù)的發(fā)展,現(xiàn)代全控開關(guān)型電力電子器件制造技術(shù)的進步和PWM技術(shù)的產(chǎn)生使處于調(diào)速系統(tǒng)中的電機電流諧波減小、轉(zhuǎn)矩脈動降低、電機運行效率和調(diào)速性能提高;而現(xiàn)代控制理論的發(fā)展為進一步改善電機調(diào)速性能提供了有利條件,出現(xiàn)了標志現(xiàn)代交流調(diào)速理論的矢量控制和直接轉(zhuǎn)矩控制,使感應(yīng)電機的調(diào)速性能可以和直流電機媲美;然而,10多年的研究經(jīng)驗告訴我們,優(yōu)越的調(diào)速性能是需要強有力的微電子技術(shù)(以往主要是高速CPU)發(fā)展來保障的,先進的控制算法加上高速的計算處理能力才能使交流調(diào)速系統(tǒng)性能得到滿足。近年來發(fā)展起來的超大規(guī)??删幊踢壿嬓酒‵PGA/CPLD),由于其靈活的可編程能力、快速的并行信號處理方式、足夠多的內(nèi)部資源、無復(fù)位問題和程序跑飛的困擾等,使其在電氣傳動領(lǐng)域中獲得了廣泛應(yīng)用。本文主要工作及內(nèi)容安排本設(shè)計主要采用Altera公司的FPGA芯片,通過QuartusII設(shè)計開發(fā)軟件及VerilogHDL語言設(shè)計完成一個計數(shù)器/定時器的設(shè)計,在前言首先對課題來源及目的、意義進行了分析與介紹。第一章則對設(shè)計方案進行了比較與選擇。第二章是對本次設(shè)計中用到的工具作一些簡要介紹;第三章分模塊對此次設(shè)計進行詳細介紹;第四章是對本次設(shè)計的總結(jié),并在本設(shè)計的基礎(chǔ)上提出改進的方法,完善系統(tǒng)的功能以便更方便地應(yīng)用于實踐當中。所用工具簡介QuartersII簡介[3]QuartusII可編程邏輯軟件屬于第四代PLD開發(fā)平臺。它提供了PLD設(shè)計的綜合開發(fā)環(huán)境,是PLD設(shè)計的基礎(chǔ)。QuartusII集成環(huán)境支持PLD設(shè)計的設(shè)計輸入、編譯、綜合、布局、布線、時序分析、仿真下載等EDA設(shè)計過程。QuartusII還提供了完全集成且與電路結(jié)構(gòu)無關(guān)的開發(fā)包環(huán)境,具有數(shù)字邏輯設(shè)計的全部特性,主要包括以下幾點:·能生成第三方EDA軟件使用的VHDL網(wǎng)表文件和Verilog網(wǎng)表文件?!た衫迷韴D、結(jié)構(gòu)框圖、VerilogHDL、AHDL和VHDL完成電路描述,并將其保存為設(shè)計實體文件;·芯片(電路)平面布局連線編輯;·LogicLock增量設(shè)計方法,用戶可建立并優(yōu)化系統(tǒng),然后添加對原始系統(tǒng)的性能影響較小或無影響的后續(xù)模塊;·使用組合編譯方式可一次完成整體設(shè)計流程;·功能強大的邏輯綜合工具;·完備的電路功能仿真與時序邏輯仿真工具;·支持軟件源文件的添加和創(chuàng)建,并將它們鏈接起來生成編程文件;·定時/時序分析與關(guān)鍵路徑延時分析;·自動定位編譯錯誤;·高效的期間編程與驗證工具;·可使用SignalTapII邏輯分析工具進行嵌入式的邏輯分析;·可讀入標準的EDIF網(wǎng)表文件、VHDL網(wǎng)表文件和Verilog網(wǎng)表文件;實驗平臺簡介[5]圖1GX-SOC/SOPC-CIDE實驗平臺本實驗采用GX-SOC/SOPC-CIDE實驗平臺實驗,(如右圖2-1),GX-SOC/SOPC-CIDE實驗平臺集眾多功能于一體,采用全新的"核心板+……+核心板+平臺主板"自由疊層結(jié)構(gòu)。根據(jù)研發(fā)需求,可實現(xiàn)基于ALTERA、XILINX、ACTEL、Lattice、TI/ADI(DSP)、ARM等廠家的軟核/硬核處理器相結(jié)合的嵌入式系統(tǒng)設(shè)計。靈活的CIDE綜合創(chuàng)新開發(fā)實驗平臺功能強大、硬件接口豐富,平臺嵌入式軟件除支持C、C++語言開發(fā)之外,還支持uC/OSII、uClinux嵌入式操作系統(tǒng)。獨特的核心板擴展接口可完美實現(xiàn)核心板與核心板、核心板與平臺主板之間無縫連接,實現(xiàn)復(fù)雜的系統(tǒng)功能。用戶可根據(jù)需求,選擇SOPC和DSP組合、SOPC和ARM組合、ARM和DSP組合、單片機和SOPC的組合……通過模式轉(zhuǎn)換功能,不同的硬件模塊間,可實現(xiàn)近20種獨立的具有特色的綜合模塊組合。CIDE平臺優(yōu)異的綜合性設(shè)計大大提高了開發(fā)平臺的利用率,是SOPC、EDA、ARM、DSP、SOC、單片機相互結(jié)合的實驗教學、電子系統(tǒng)設(shè)計創(chuàng)新實驗室、嵌入式系統(tǒng)實驗室、科研開發(fā)最理想的平臺。圖1GX-SOC/SOPC-CIDE實驗平臺VerilogHDL硬件描述語言簡介[6-8]VerilogHDL是在應(yīng)用最為廣泛的C語言基礎(chǔ)上發(fā)展起來的一種硬件描述語言,它是由GDA公司的Phil

Moorby于1983年創(chuàng)建的,最初只設(shè)計了一個仿真與驗證工具,之后又陸續(xù)開發(fā)了相關(guān)的故障模擬與時序分析工具。1985年Moorby推出了它的第三個商用仿真器Verilog-XL,獲得了巨大成功,從而使VerilogHDL得到迅速的推一和應(yīng)用。1989年CADENCE公司收購了GDA公司,使Verilog

HDL成為該公司的獨家專利。1990年CADENCE公司公開發(fā)表了Verilog

HDL,并成立OVI(0pen

Verilog

International)組織以促進Verilog

HDL語言的發(fā)展。1995年Verilog

HDL成為IEEE標準,即IEEE

Standard

1364—1995。VerilogHDL的主要特點[9-11]VerilogHDL既是一種行為描述語言,也是一種結(jié)構(gòu)描述語言。如果按照一定的規(guī)則和風格編寫代碼,就可以將功能行為模塊通過工具自動轉(zhuǎn)化為門級互連的結(jié)構(gòu)模塊。這意味著利用Verilog語言所提供的功能,就可以構(gòu)造一個模塊間的清晰結(jié)構(gòu)來描述復(fù)雜的大型設(shè)計,并對所需的邏輯電路進行嚴格的設(shè)計。下面列出的是Verilog語言的主要功能:1、用延遲表示式或事件表達式來明確地控制過程的啟動時間;2、通過命名的事件來觸發(fā)其他過程里的激活行為或停止行為;3、提供了條件和循環(huán)等程序結(jié)構(gòu);4、提供了可帶參數(shù)且非零延續(xù)時間的任務(wù)程序結(jié)構(gòu);5、提供了可定義新的操作符的函數(shù)結(jié)構(gòu);6、提供了用于建立表達式的算術(shù)運算符、邏輯運算符和位運算符;7、提供了一套完整的表示組合邏輯基本元件的原語;8、提供了雙向通路和電阻器件的描述;9、可建立MOS器件的電荷分享和衰減模型;10、可以通過構(gòu)造性語句精確地建立信號模型;11、可描述順序執(zhí)行或并行執(zhí)行的程序結(jié)構(gòu);此外,VerilogHDL語言還有一個重要特征就是:和C語言風格有很多的相似之處,學習起來比較容易。

計數(shù)器設(shè)計方式選擇與論證計數(shù)器實現(xiàn)方案論證 軟件定時利用通用微處理器(CPU)用匯編語言大進行定時/計數(shù),定時計數(shù)準確,但這會造CPU資源的浪費或者無法滿足實時處理的要求。不可編程硬件計數(shù)/定時器不易控制,計數(shù)范圍及定時值不易改變,功能較單一??删幊逃布嫈?shù)/定時器可編程定時器的計數(shù)定時值可以很容易的由軟件來確定和改變,功能強,使用靈活?;谝陨峡紤],可編程硬件計數(shù)/定時器具有其它類型計數(shù)定時器不可具備的優(yōu)點,本設(shè)計則選用第三種方案,設(shè)計一個基于FPGA芯片的可編程計數(shù)器/定時器。設(shè)計方式選擇認證采用硬件設(shè)計描述語言設(shè)計一般由三種設(shè)計方法,自下而上、自上而上和混合設(shè)計方法,其優(yōu)缺點主要如下所示:自下而上的設(shè)計方法自下而上的設(shè)計是傳統(tǒng)的設(shè)計方法,是從基本單元出發(fā),對設(shè)計進行逐層劃分的過程。這種設(shè)計方法與用電子元件在模擬實現(xiàn)板上建立一個系統(tǒng)的步驟有密切的關(guān)系。優(yōu)、缺點分別如下:優(yōu)點:設(shè)計人員對這種設(shè)計方法比較熟悉,實現(xiàn)各個子模塊所需的時間較短。缺點:對系統(tǒng)的整體功能把握不足;由于必須先對多個子模塊進行設(shè)計,因此實現(xiàn)整個系統(tǒng)的功能所需的時間長;另外,對設(shè)計人員之間相互協(xié)作也有較高的要求。自上而下的設(shè)計方法自上而下的設(shè)計是從系統(tǒng)級開始,把系統(tǒng)劃分為基本單元,然后再把基本單元劃分為下一層次的基本單元,直到可用EDA元件實現(xiàn)為止。這種方法的優(yōu)、缺點如下。優(yōu)點:在設(shè)計周期開始就做好了系統(tǒng)分析;由于設(shè)計的主要仿真和調(diào)試過程是在高層完成的,所以能夠早期發(fā)現(xiàn)結(jié)構(gòu)設(shè)計上的錯誤,避免了設(shè)計工作的浪費,方便了系統(tǒng)的劃分和整個項目的管理,可減少設(shè)計人員勞動,避免了重復(fù)設(shè)計。缺點:得到的最小單元不標準,且制造成本高?;旌系脑O(shè)計方法復(fù)雜數(shù)字邏輯電路和系統(tǒng)設(shè)計過程,通常是以上兩種設(shè)計方法的結(jié)合。設(shè)計時需要考慮多個目標的綜合平衡。在高層系統(tǒng)用自上而下的設(shè)計方法實現(xiàn),而使用自下而上的方法從庫元件或以往設(shè)計庫中調(diào)用已有的設(shè)計單元?;旌显O(shè)計方法兼有以上兩種方法的優(yōu)點,并且可使用先進的矢量測試方法。本次設(shè)計用VerilogHDL語言設(shè)計一個計數(shù)器系統(tǒng),自上而下的設(shè)計方式本就是VerilogHDL的特點,并且由以上分析可以看出自上而下的設(shè)計方式在系統(tǒng)級結(jié)構(gòu)設(shè)計的優(yōu)點,因此本設(shè)計采用了自上而下的設(shè)計方式。

計數(shù)器整體設(shè)計方案8位數(shù)據(jù)線3位地址線時鐘信號控制信號(數(shù)據(jù)讀取信號、捕獲信號、捕獲數(shù)據(jù)數(shù)據(jù)輸出信號)16位輸出數(shù)據(jù)線16位加減/計數(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ù)據(jù)讀取信號、捕獲信號、捕獲數(shù)據(jù)數(shù)據(jù)輸出信號)16位輸出數(shù)據(jù)線16位加減/計數(shù)器輸出數(shù)據(jù)寄存器狀態(tài)寄存器(地址000)捕獲數(shù)據(jù)寄存器脈寬調(diào)制模塊數(shù)據(jù)寄存器a(地址001-010)數(shù)據(jù)寄存器b(地址011-100)地址寄存器(000-100)圖2-1計數(shù)器整體設(shè)計框圖圖2-1計數(shù)器整體設(shè)計框圖該設(shè)計整體設(shè)計方案如圖1-1,主要有地址寄存器、狀態(tài)寄存器、數(shù)據(jù)寄存器、計數(shù)器、脈寬調(diào)制模塊和捕獲數(shù)據(jù)寄存器等模塊組成。其中地址寄存器主要用于對發(fā)送數(shù)據(jù)的目的寄存器尋址,地址范圍為000-100,各地址對應(yīng)寄存器及作用為:000:狀態(tài)寄存器,用于存放計數(shù)器工作模式選擇數(shù)據(jù);001:數(shù)據(jù)寄存器jia高8位,加計數(shù)器最大值高8位數(shù)據(jù);010:數(shù)據(jù)寄存器jia低8位,加計數(shù)器最大值低8位數(shù)據(jù);011:數(shù)據(jù)寄存器jian高8位,減計數(shù)器初值高8位數(shù)據(jù);100:數(shù)據(jù)寄存器jian低8位,減計數(shù)器初值低8位數(shù)據(jù);狀態(tài)寄存器用于計數(shù)器工作模式選擇,所設(shè)計計數(shù)器共有:加計數(shù)、減計數(shù)、捕獲模式、脈寬調(diào)制模式四個狀態(tài),與狀態(tài)寄存器所對應(yīng)狀態(tài)為:0000000:加計數(shù);0000001:減計數(shù);0000010:捕獲模式;0000011:脈寬調(diào)模式??刂菩盘栍袛?shù)據(jù)讀取信號、捕獲信號、捕獲數(shù)據(jù)輸出信號。數(shù)據(jù)讀取信號作用為:當數(shù)據(jù)線數(shù)據(jù)準備好、地址準備好時,讀取信號生效時才能將數(shù)據(jù)線的數(shù)據(jù)讀入各數(shù)據(jù)寄存器中,這樣可以有效保證輸入的數(shù)據(jù)的準確性。捕獲信號作用為當計數(shù)器工作于捕獲模式時,捕獲信號有效時將計數(shù)器中的數(shù)據(jù)捕獲進入捕獲數(shù)據(jù)寄存器;捕獲數(shù)據(jù)輸出信號的作用為將捕獲的數(shù)據(jù)由輸出數(shù)據(jù)線輸出,在捕獲、輸出捕獲數(shù)據(jù)過程中,計數(shù)器保持計數(shù)。

計數(shù)器/定時器各種工作方式的設(shè)計本設(shè)計分為加計數(shù)模塊、減計數(shù)模塊和頂層模塊,捕獲功能與脈寬調(diào)制功能設(shè)計在頂層模塊中。本設(shè)計所有程序均通過QuartusII7.0_1.4G編譯平臺編譯仿真通過。計數(shù)工作模式計數(shù)模塊分為加計數(shù)模塊和減計數(shù)模塊,計數(shù)進制數(shù)據(jù)可以設(shè)定。16位加計數(shù)器模塊16位計數(shù)器只有對脈沖進行計數(shù)功能,有16位進制數(shù)據(jù)可以由設(shè)定端口(indate[15-0]),復(fù)位端口,和16位數(shù)據(jù)輸出端口。圖3-116位加計數(shù)器器件圖程序流程圖:開始開始檢測到脈沖輸入是否到設(shè)定進制值NY計數(shù)器清零,重新開始加計數(shù)圖3-216位加計數(shù)流程圖器流程圖進制數(shù)值設(shè)定16位加計數(shù)器源程序:modulejia(clk,q,in,reset);inputclk,reset;output[15:0]q;input[15:0]in; //進制數(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進制計數(shù)復(fù)位信號有效,計數(shù)器清零設(shè)定為5進制計數(shù)復(fù)位信號有效,計數(shù)器清零圖3-316位加計數(shù)器波形圖16位減計數(shù)器16位減計數(shù)器(如圖3-4)只有對脈沖進行減計數(shù)功能,計數(shù)初值可以由16位進制數(shù)據(jù)端口(indate[15-0]),計數(shù)器還具有復(fù)位端口,和16位數(shù)據(jù)輸出端口。圖3-416位減計數(shù)器件圖減計數(shù)器工作流程圖:開始開始檢測到脈沖輸入是否到0NY計數(shù)器為0,重新開始減計數(shù)圖3-516位減計數(shù)器流程圖計數(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ù)位信號有效,計數(shù)器清零初始值設(shè)定為10復(fù)位信號有效,計數(shù)器清零圖3-616位減計數(shù)器波形圖頂層模塊設(shè)計1)頂層模塊器件圖圖3-7頂層模塊器件圖2)計數(shù)器工作流程圖開始開始地址輸入地址讀取信號有效寄存器尋址狀態(tài)寄存器數(shù)據(jù)寄存器數(shù)據(jù)寄存器數(shù)據(jù)寄存器數(shù)據(jù)寄存器狀態(tài)寄存器加計數(shù)模式減計數(shù)模式捕獲模式脈寬調(diào)制模式結(jié)束Clk時鐘圖3-8頂層模塊流程圖本次設(shè)計的脈沖發(fā)生功能模塊、捕獲模塊都集成在頂層模塊case語句中,這個模塊運用了兩個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ù)標志位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; //加計數(shù)進制數(shù)據(jù)設(shè)定寄存器reg[15:0]regjian; //減計數(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ù)據(jù) state<=date; else state<=state; //讀取信號無效時不能改變寄存器數(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) //計數(shù)器主模塊begin case(state) //狀態(tài)選擇 shang: //加計數(shù) begin reset<=0; out<=p; end xia: //減計數(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)加計數(shù)時的波形圖15進制State為0,加計數(shù)模式15進制State為0,加計數(shù)模式圖3-9add為0時,為加計數(shù)模式時波形從圖中可以看出,out輸出對clk計數(shù),波形與設(shè)計目標相符。設(shè)定為模式1(減計數(shù)模式)時波形減計數(shù)初始值為9減計數(shù)初始值為9讀取信號生效時模式才改變時圖3-10add為1,減計數(shù)模式時波形從圖中可以看出,當?shù)刂窢顟B(tài)信號更改后開始并未生效,而是等到讀取信號到來時才開始生效。加上讀取信號后,可以有效防止地址線干擾或不穩(wěn)定所帶來的各種問題。捕獲模式時波形輸出信號有效時輸出捕獲寄存器中數(shù)據(jù)捕獲數(shù)據(jù)寄存器輸出信號有效捕獲信號有效輸出信號有效時輸出捕獲寄存器中數(shù)據(jù)捕獲數(shù)據(jù)寄存器輸出信號有效捕獲信號有效圖3-11add為2時,為捕獲模式時波形從圖中可以看到,當計數(shù)器處理捕獲模式,當捕獲信號有效時,計數(shù)器當時的數(shù)據(jù)被捕獲到捕獲寄存器中,但此時計數(shù)器并沒有停止,輸出也保持輸出計數(shù)器數(shù)值,但當輸出信號有效時,輸出為捕獲寄存器中的數(shù)據(jù),當

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論