基于FPGA的PWM與定時計數(shù)器IP核的設(shè)計_圖文_第1頁
基于FPGA的PWM與定時計數(shù)器IP核的設(shè)計_圖文_第2頁
基于FPGA的PWM與定時計數(shù)器IP核的設(shè)計_圖文_第3頁
基于FPGA的PWM與定時計數(shù)器IP核的設(shè)計_圖文_第4頁
基于FPGA的PWM與定時計數(shù)器IP核的設(shè)計_圖文_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2008童#9fJ 鹿子測斌 Sep.2008 i!墼絲IIIlll ; ; 星!星呈堡壘些篁塹曼三.; ; 。; !呈:皇 基于FPGA的PWM與定時計數(shù)器IP核的設(shè)計匡石,方千山(華僑大學(xué)機電及自動化學(xué)院泉州362021摘要:基于硬核嵌入式CPU中的刪/定時計數(shù)器模塊與FPGA的廣泛應(yīng)用,本文提出了一種軟件式的 PWM/定時計數(shù)器數(shù)字邏輯電路的設(shè)計思想。用硬件描述語言HDL編寫總線接El、功能邏輯與外部I/0電路, 并描述了硬件驅(qū)動程序的設(shè)計過程。對其結(jié)果進行了軟件仿真并定制到NIOS II中進行調(diào)試,實驗結(jié)果證明,該 設(shè)計具有很好的實際效果。關(guān)鍵詞:IP;FPGA;NIOS II;驅(qū)動中

2、圖分類號:TP39文獻標(biāo)識碼:BDesign ofPWM and time counter IP core based on FPGAKuang Shi,Fang Qianshan(Huaqiao University,Quanzhou 362021,ChinaAbstract:Based on the widespread application of PWM/timing counter modules and FPGA in the hard core embedded CPU,we propose a software design ideas of PWM/timing counte

3、r dig itallogic circuit.HDL hardware description language is used to preparebus interface,logic functions and external I/0circuit,and described the driver of the hardware design process. Have carried on software emulation and debugged in NIOS II to its result,the experimental re suits show that the

4、design has a good practical results.Keywords:IP;FPGA;NIOS II;actuation0引 言PWM在自動控制系統(tǒng)和計算機技術(shù)領(lǐng)域都有 非常廣泛的應(yīng)用。在許多硬核式的嵌入式CPU中 都有PWM和定時計數(shù)器模塊的I/0口供用戶使 用,在交流檢測、電機控制等實際應(yīng)用系統(tǒng)中, PWM是整個系統(tǒng)的技術(shù)核心,在嵌入式操作系統(tǒng) 中定時計數(shù)器也是不可缺少的部分。而在FPGA 中的SOPC中,很多時候并沒有提供這種模塊供用 戶使用,因此設(shè)計出支持PWM輸出的IP核具有 很大的實用價值。針對市場上使用的FPGA情況, 本文所提出的IP功能實現(xiàn)是基于Alter

5、a公司的 cyclone II芯片,該功能模塊不僅可以作為獨立的 模塊使用,而且可以嵌入到Altera公司提供的 NIOS II處理器中,并通過N10S II對該模塊進行 控制。HDL語言是一種通用性很強的語言,因此 這個模塊具有很高的移植性,不僅可以用于大多數(shù)屯蚤型i豇 ELECTRD.NIC1幡n巴 萬方數(shù)據(jù)的Altera芯片,而且對于其它公司生產(chǎn)的FPGA 芯片同樣適用。本設(shè)計中給出了模塊與主系統(tǒng)的 接1:3電路、功能邏輯電路以及外部輸出端口。1芯片功能描述本設(shè)計實現(xiàn)了PWM輸出和定時器/計數(shù)器2大功能,IP核將根據(jù)內(nèi)部寄存器的狀態(tài)選擇相應(yīng)的 工作模式完成系統(tǒng)的功能。(1PwM工作模式。

6、 當(dāng)IP工作在PWM模式下時,模塊內(nèi)部計數(shù)器將 計算高低電平脈沖的時間長度(或者是脈沖個數(shù), 模塊根據(jù)用戶自定義的PWM輸出脈沖占空比,產(chǎn) 生具有占空比可調(diào)的二進制信號,最后以脈沖的形 式輸出。(2定時器/計數(shù)器工作形式。當(dāng)IP工作 在定時器模式下時,芯片內(nèi)部的32位定時器/計數(shù) 器模塊開始計數(shù)時鐘周期的個數(shù),當(dāng)時鐘周期數(shù)達 到內(nèi)部寄存器的預(yù)設(shè)的數(shù)值,則產(chǎn)生一個中斷信 號。該信號可以被主系統(tǒng)識別,并產(chǎn)生相應(yīng)的中斷 功能。定時/計數(shù)的模式有單一循環(huán)和連續(xù)循環(huán)兩 種方式,并有內(nèi)部系統(tǒng)時鐘源和外部時鐘源供選 擇,工作方式與時鐘源的選擇通過置位控制寄存器 相應(yīng)的位來選擇。不論芯片是工作在PWM模式 下

7、,還是工作在定時器/計數(shù)器模式,它都必須使用 內(nèi)部寄存器。如果內(nèi)部寄存器的值達到了預(yù)設(shè)值 后不再增加,那么芯片應(yīng)采取單一循環(huán)計數(shù)方式; 如果內(nèi)部寄存器的值達到了預(yù)設(shè)值后便復(fù)位,重新 開始加1計數(shù),那么芯片應(yīng)采取連續(xù)循環(huán)計數(shù)方 式。上述邏輯功能是通過AVALON交換結(jié)構(gòu)與 主系統(tǒng)端口進行連接。2IP結(jié)構(gòu)設(shè)計本設(shè)計的總體電路結(jié)構(gòu)包含主系統(tǒng)電路接 口、芯片內(nèi)部寄存器區(qū)和數(shù)據(jù)緩存區(qū)、芯片內(nèi)部 組合邏輯電路模塊和時序邏輯電路模塊和獨立 的外部I/O端口4個主要的功能模塊,如圖1所 示。屯蚤逛9i基ELECTRONIC TEST圖1芯片總體結(jié)構(gòu)圖2.1設(shè)備接口電路主系統(tǒng)電路接口使用的是基于AVALON總

8、線標(biāo)準(zhǔn)的SoC電路互連接口規(guī)范,可以通過它與其 他主系統(tǒng)(如NIOS II處理器互連,共同組成功能 更大的芯片。假設(shè)某個主系統(tǒng)設(shè)計需要應(yīng)用本設(shè) 計,完成PWM輸出,或者完成定時、計數(shù)功能,那 么必須按圖2所示的模型通過電路接口進行互連, 這種互連結(jié)構(gòu)由Quartus里的SOPC Builder自動 完成,用戶只需要定義從端口的接口邏輯。圖2電路系統(tǒng)的應(yīng)用模型AVALON標(biāo)準(zhǔn)的SoC電路互連接口規(guī)范定 義了2種類型的接口:主設(shè)備接口和從設(shè)備接口。 本設(shè)計使用的從設(shè)備接口。主設(shè)備和從設(shè)備按照 下列步驟進行互連。(1主設(shè)備利用主接口向本設(shè) 計芯片發(fā)送數(shù)據(jù)和功能請求。(2AVALON總線 結(jié)構(gòu)對主系統(tǒng)

9、的數(shù)據(jù)進行翻譯、打包,將其轉(zhuǎn)換為 接口標(biāo)準(zhǔn)所能識別的格式。(3從設(shè)備接口交給從 設(shè)備進行數(shù)據(jù)獨立處理,并不向主系統(tǒng)返回數(shù)據(jù)。 AVALON交換結(jié)構(gòu)能支持任何位寬度的總線(數(shù) 據(jù)總線與地址總線的總和。但為了能讓IP有更 好的移植性,使用的是32位的總線寬度。2.2寄存器描述寄存器是芯片電路實體區(qū)域與AVALON交 換結(jié)構(gòu)之間的緩沖區(qū),這些寄存器的值聯(lián)合起來確 定芯片的工作方式和操作類型。本設(shè)計使用了4類寄存器:剖萬方數(shù)據(jù)(1PRTC_CNTR寄存器。PRTC_CNTR寄 存器是芯片內(nèi)部真正的計數(shù)寄存器,其存儲的數(shù)值 每經(jīng)過一個有效的計數(shù)/定時時鐘周期(由系統(tǒng)時 鐘或外部時鐘端口的輸入后自動加1。

10、為了實現(xiàn) 計數(shù)、定時,系統(tǒng)還需要根據(jù)RPTC CTRL寄存器 其他控制位的值來實現(xiàn)。RPTCCNTR寄存器是 32位寬度的計數(shù)寄存器,若復(fù)位清零,則它重新從 0開始向上加1計數(shù)。(2PRTCHRC寄存器。PRTCHRC寄存 器是芯片內(nèi)部引用寄存器(信號緩存器的第二級 輸出,它具備以下2個功能:若寄存器用作引用 寄存器,則它可以用于輸出芯片PWM波形的高32位部分,也可以用于產(chǎn)生中斷輸出。若寄存器用 作信號緩存器(也稱為信號捕捉寄存器,則它在 PTC_CAPT信號為高電平期間捕捉并緩存RPTC CNTR寄存器的值。RPTCCNTR寄存器是32位寬度的引用寄存器(信號緩存器,若芯片復(fù)位清 零,則它

11、的值復(fù)位為0。(3PRTC_LRC寄存器。PRTC_LRC寄存器 是芯片內(nèi)部引用寄存器(信號緩存器的第一級輸 出,它具備以下2個功能:若寄存器用作引用寄 存器,則它可以用于輸出芯片PWM波形的低32位部分,也可以用于產(chǎn)生中斷輸出。若寄存器用 作信號緩存器(也稱為信號捕捉寄存器,則它在 PTC_CAPT信號為低電平期間捕捉并緩存RPTC _CNTR寄存器的值。RPTCCNTR寄存器也是 32位寬度的引用寄存器(信號緩存器,若芯片復(fù) 位清零,則它的值復(fù)位為0。.(4PRTCCTRL寄存器。RPTCCTRL寄 存器是芯片內(nèi)部的控制寄存器,它包含9bit控制 位,通過寫這些控制位執(zhí)行不同的邏輯功能。2

12、.3IP內(nèi)部邏輯設(shè)計芯片內(nèi)部的電路模塊包含了時鐘分頻模塊、 PWM輸出與技術(shù)/定時器的引用比較模塊以及中 斷發(fā)生器模塊。利用這些電路模塊,芯片提供了 PWM輸出和定時器/計數(shù)器這2種工作模式,可以 根據(jù)控制寄存器PRTC_CTRL的值來選取工作模 式。其他的邏輯功能如對計數(shù)器里的數(shù)值的捕獲 進行緩存,定時計數(shù)器時鐘的選擇都是由控制寄存 器的相應(yīng)的位的設(shè)置來進行。(1PWM輸出模塊。 芯片復(fù)位信號不能輸出脈沖波形。PWM模塊由寄 存器RPTC_HRC和RPTCLRC、比較器以及RS 觸發(fā)器構(gòu)成。寄存器RPTCHRC存放的是輸出 脈沖高電平持續(xù)的時鐘周期數(shù),寄存器RPTc LRC存放的是輸出脈沖低

13、電平持續(xù)的時鐘周期數(shù)。 (2定時器/計數(shù)器模塊。定時器/計數(shù)器模塊由寄 存器PRTC_LRC、寄存器RPTC_CNTR和寄存器 捕捉模塊構(gòu)成。通過設(shè)置PRTC_LRC里的參數(shù)確 定定時/計數(shù)時間,輸出結(jié)果由PRTC_LRC與 RPTC。CNTR比較的結(jié)果來確定。2.4邏輯功能仿真對模塊的邏輯功能的仿真使用的是 Quartus7.2版里自帶的仿真工具,在編寫好測試向 量的波形文件后即可對輸出功能是否復(fù)合設(shè)計要 求進行驗證。驗證的結(jié)果是復(fù)合設(shè)計要求的,仿真 圖如圖3所示。圖3邏輯功能仿真3驅(qū)動程序設(shè)計要實現(xiàn)對IP硬件邏輯電路進行操作,也就是 對參數(shù)進行在線操作或者是主設(shè)備對IP進行控 制,則要編寫

14、邏輯電路的驅(qū)動程序。Nios II IDE為 用戶提供了設(shè)備驅(qū)動程序,也就是硬件抽象層 (HAL系統(tǒng)庫,HAL應(yīng)用程序接口(API與ANSI C標(biāo)準(zhǔn)庫綜合在一起就形成了上層應(yīng)用程序與下 層硬件電路接El平臺。設(shè)備驅(qū)動程序可以概括一組描述設(shè)備的數(shù)據(jù) 結(jié)構(gòu)和控制設(shè)備行為的函數(shù)集合,函數(shù)就是用來實屯圣塑!i豇 E【上0TBI:NtC嘲 巴 萬方數(shù)據(jù)現(xiàn)設(shè)備的訪問。驅(qū)動程序執(zhí)行過程如圖4所示。 讀/寫 控制寄存器I一 . 囪圈 數(shù)據(jù)寄存器f圖4設(shè)備驅(qū)動框圖對IP模塊進行驅(qū)動程序開發(fā)的過程如下: (1創(chuàng)建一個設(shè)備頭文件,用于描述設(shè)備的寄 存器和訪問方法。在這個頭文件中,要用清晰易懂 的宏符號描述出設(shè)備的4

15、個寄存器,并給出訪問方 法。頭文件的文件名遵循“pwm timer_regs.h”的 格式;用“IORD_<設(shè)備名>一<寄存器名>”的形 式定義寄存器的讀訪問方式;用“10wIL<設(shè)備名 >一<寄存器名>”的形式定義寄存器的寫訪問方 式;用“<設(shè)備名>一<寄存器名>一<位域>一 MSK”的形式定義寄存器位的掩碼;用“<設(shè)備名>一<寄存器名>一<位域>0FST”的形式定義寄存 器位的偏移位置。(2定義并實現(xiàn)設(shè)備驅(qū)動的功能。IDE中的 各種設(shè)備都是一個抽象的結(jié)構(gòu)體,在SOPC中訂

16、制 這個設(shè)備,只有在驅(qū)動中實例化,才能在內(nèi)存空間 中開辟一塊內(nèi)存空間,而對內(nèi)存的控制的通過地址 來實現(xiàn)的,通過這個地址和偏移地址就可以對IP 模塊的寄存器進行讀寫控制。設(shè)備實例化就可以 按用戶意圖編寫多種功能函數(shù),這些函數(shù)在用戶的 應(yīng)用程序中可以方便的調(diào)用。(3將設(shè)備驅(qū)動集成到HAL中。驅(qū)動程序開 發(fā)完畢后,要把源程序文件放到約定的目錄下,并 為模塊編寫一個控制IDE軟件編譯連接Makefile 文件,這樣驅(qū)動程序才能編譯到HAL系統(tǒng)庫中。 文件格式如下:C_LIB_SRCS+一pwrn_timer_regs.CASM_LIB_SRCSl一一INCLI 7DE PATH+=上面程序中,Cj。I

17、B.SRCS是放置欲編譯的C 文件,AsMLIB_SRCS是欲編譯的匯編文件,IN CLI艦PATH是要文件包含路徑。完成以上步 驟后,在SPOC Builder中添加該模塊并定制到 電蚤理9i基E1.ECTRONIC TEST NIOS II處理器中,即可以在應(yīng)該程序中對脈沖模 塊進行操作了。4結(jié) 論本文提出了一種基于融的PWM/定時計數(shù) 器的數(shù)字芯片設(shè)計思路,設(shè)計的邏輯電路用刪, 語言實現(xiàn),設(shè)計的代碼在Altera的Qh.1f_rtUS II軟件通 過了綜合、仿真、布線,并定制到NIOS II軟核式 CPU中,可以通過主設(shè)備對改模塊進行控制。由于 HDL語言與編寫驅(qū)動的C語言具有很好的通用

18、性,該模塊電路只需要做很少量的修改便可以在不同的 黜芯片上實現(xiàn),具有很好的移植性,用戶也可以 根據(jù)需要對該模塊的設(shè)計思想進行修改,以復(fù)合實 際需要,所以本設(shè)計具有很好的實用意義。參考文獻1Altera Corporation.Ouartus II Version&0Hand-bookDB.America,2006.2Altera Corporation.NIOS Software HandbookDB. America,2006.3林華.基于FPGA的嵌入式系統(tǒng)設(shè)計刀.電子工程 師,2006,32:6769.4潘松,黃繼業(yè).EDA技術(shù)與VHDLM.北京:清華大 學(xué)出版社,2005.5億

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論