摘 要:在Nios Ⅱ系統(tǒng)設計中,SoPC Builder開發(fā)環(huán)境提供許多常用的設備模型,供開發(fā)者在系統(tǒng)中添加和調用。而對于其他新設備設計人員可以按照Avalon總線規(guī)范將設備驅動程序集成到SoPC Builder的硬件抽象層中,同樣可以加載使用,方便了用戶開發(fā)一個自定制的片上系統(tǒng)。介紹Nios Ⅱ嵌入式系統(tǒng)內(nèi)集成Avalon總線的PWM從外設,將PWM應用在嵌入式智能小車監(jiān)控系統(tǒng)。
關鍵詞:PWM;Nios Ⅱ系統(tǒng);Avalon總線;智能小車
中圖分類號:TP306文獻標識碼:A
文章編號:1004-373X(2010)01-183-03
PWM Design of Avalon Bus on Nios Ⅱ System
WANG Yuhua,GUO Shujun
(College Information of Engineering,North China University of Technology,Beijing,100041,China)
Abstract:In the design of Nios Ⅱ system,SoPC Builder integrates many generic devices mode for developer to use.But for other devices,the driver can be integrated into hardware abstract layer of the SoPC Builder according to Avalon bus norms.It also can be loaded and develops a User-Defined SOC conveniently.The method of designing a User-Defined Avalon device through integrating PWM in the Nios Ⅱ system,and PWM is applied on intelligent vehicle system are introduced.
Keywords:PWM;Nios Ⅱ system;Avalon bus;intelligent vehicle
在Nios Ⅱ系統(tǒng)的構建過程中,SoPC Builder開發(fā)環(huán)境集成了許多常用類型的設備模型,供開發(fā)者調用。在日新月異的嵌入式系統(tǒng)設計中開發(fā)環(huán)境所集成的接口設備是非常有限的,有時無法滿足開發(fā)者的需要,SoPC Builder開發(fā)工具允許用戶依據(jù)規(guī)則擴展自己的所需設備,完成系統(tǒng)的設計和開發(fā),開發(fā)者按照Avalon總線規(guī)范將設備驅動程序集成到SoPC Builder的硬件抽象層(HAL)中,在SoPC Builder環(huán)境下加載使用,方便了用戶開發(fā)一個自定制的片上系統(tǒng)[1]。本文通過在Nios Ⅱ 嵌入式系統(tǒng)內(nèi)部集成了基于Avalon總線的脈沖寬度調制(PWM)從外設,介紹了自定制Avalon設備的過程。將其應用在嵌入式智能小車監(jiān)控系統(tǒng),為采用Nios II 處理器的開發(fā)者提供了一些方法和建議。
1 定制基于Avalon總線的用戶外設介紹
Nios Ⅱ的Avalon 總線不同于其他微處理器的固定外設,Nios Ⅱ的外設是可以任意定制的,這使得用戶可以根據(jù)具體的應用需求而定制。所有的Nios Ⅱ系統(tǒng)外設都是通過Avalon 總線與Nios Ⅱ軟核相連,從而進行數(shù)據(jù)交換。因此對于用戶定義的外設必須遵從該總線協(xié)議才可與Nios Ⅱ之間建立聯(lián)系[2]。
Avalon信號接口定義了一組信號類型片選、讀使能、寫使能、地址、數(shù)據(jù)等,用于描述主從外設上基于地址的讀寫接口。外設使用準確的信號與其內(nèi)核邏輯進行接口,并刪除會增加不必要開銷的信號。
在Nios Ⅱ系統(tǒng)中一個自定義設備由如下幾部分組成:
(1) 硬件文件:用HDL語言編寫的描述自定義設備元件邏輯的硬件描述文件。
(2) 軟件文件:用C語言編寫的設備寄存器文件以及設備的驅動程序文件。
(3) 設備描述文件(Ptf):本文件描述了設備的結構,包含SoPC Builder配置以及將其集成到系統(tǒng)中時所需要的信息。本文件由SoPC Builder根據(jù)硬件文件以及軟件文件自動生成。
2 基于Nios Ⅱ系統(tǒng)的PWM設計
PWM是利用數(shù)字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用于從測量、通信到功率控制與變換的許多領域中。實際上PWM是一種對模擬信號電平進行數(shù)字編碼的方法,通過高分辨率計數(shù)器的使用,方波的占空比被調制用來對一個具體模擬信號的電平進行編碼。PWM信號仍然是數(shù)字的,因為在給定的任何時刻,滿幅值的直流供電或者完全有,或者完全無。電壓或電流源是以一種通或斷的重復脈沖序列被加到模擬負載上。通即是直流供電被加到負載上,斷即是供電被斷開。只要帶寬足夠,任何模擬值都可以使用PWM進行編碼。
2.1 硬件設計
硬件文件指的是HDL文件,由以下幾個模塊組成:
邏輯模塊:描述設備的邏輯功能;
寄存器映射模塊:為內(nèi)部邏輯模塊和Avalon總線提供了通信接口;
Avalon總線接口模塊:使Avalon總線訪問寄存器從而完成相應的邏輯功能[3]。
2.1.1 邏輯結構
對于自定義的PWM也是由以上幾部分模塊組成。PWM按照以下要求設計:
(1) 任務邏輯按一個簡單時鐘進行同步操作。
(2) 任務邏輯使用32位計數(shù)器為PWM提供一個一定范圍的周期和占空比,最大周期可設為232個clk。
(3) 可以使用微控制器來設置PWM的周期和占空比的值,因此要提供一個可對寄存器進行讀寫的接口和控制邏輯。
(4) 定義寄存器來存儲PWM周期和占空比的值。
(5) 微控制器可以通過控制寄存器的禁止位關閉PWM輸出。
PWM任務邏輯的結構圖如圖1所示。
圖1 PWM任務邏輯結構圖
PWM任務邏輯由輸入時鐘(clock)、輸出信號端口(pwmout)、使能位、32位計數(shù)器以及一個32位比較電路組成。clk作為32位計數(shù)器的時鐘信號,32路比較電路比較32位計數(shù)器的當前值與占空比設定寄存器(Duty Cycle Value Register)中的值來決定pwmout的輸出為高或低。當當前計數(shù)器中的值小于或等于占空比寄存器中的值時,pwmout輸出低電平,否則輸出高電平。PWM周期設定寄存器(Modulon Value Register)用來設置pwmout的信號周期,當當前計數(shù)器的值等于周期設定寄存器中的設定時,產(chǎn)生一個復位信號來清除計數(shù)器中的值。使能控制寄存器(Enable Control Register)能使時鐘信號有效或無效,即控制計數(shù)器是否計數(shù),從而保持pwmout輸出保持當前不變。
PWM內(nèi)部包括使能控制寄存器(Enable Control Register)、周期設定寄存器(Modulon Value Register)以及占空比設定寄存器(Duty Cycle Value Register),如圖1所示。設計中將各寄存器映射成Avalon 從端口地址空間內(nèi)一個單獨的偏移地址。每個寄存器都能進行讀/寫訪問,軟件可以讀回寄存器中的當前值。表1是PWM寄存器以及偏移地址列表。
表1 PWM寄存器以及偏移地址列表
寄存器名稱地址偏移量R/W描 述
clockdivide00R/W用來設定PWM輸出周期的時鐘數(shù)
dutycycle01R/W用來設定一個周期內(nèi)PWM輸出低電平的時鐘個數(shù)
enable10R/W使能和關閉PWM輸出,為1時使能PWM輸出
保留11--
PWM的Avalon接口需要一個簡單的從端口,該端口使用Avalon總線信號完成寄存器的讀/寫傳輸。PWM與Avalon總線接口所需的信號如表2所示。
表2 PWM信號名稱和Avalon信號類型列表
信號名稱位寬方向描 述
clock1輸入同步數(shù)據(jù)傳輸與任務邏輯
resetn1輸入復位信號,低有效
chipselect1輸入片選信號
address2輸入2位地址,只有其中3個譯碼被使用
write1輸入寫使能信號
writedata32輸入32位寫數(shù)據(jù)值
read1輸入讀使能信號
Readdata32輸出32位讀數(shù)據(jù)值
2.1.2 硬件設計文件與仿真
PWM硬件設計文件包含表3所示的三個Verilog編寫的HDL文件。
表3 PWM硬件設計文件
文件名描 述
pwmtasklogic.vPWM的核心代碼,用于實現(xiàn)PWM的功能
pwmregisterfile.vPWM的寄存器邏輯文件
pwmavaloninterface.v設計的頂層文件,為PWM任務邏輯模塊文件和寄存器模塊文件提供Avalon從接口邏輯
pwmtasklogic.v完成PWM的邏輯功能,圖2是此文件在Quartus Ⅱ環(huán)境下的仿真波形。
圖2 PWM的邏輯功能設計仿真波形
圖2中:clockdivide信號設定PWM輸出周期的時鐘數(shù),dutycycle信號設定一個周期內(nèi)PWM輸出低電平的時鐘個數(shù),兩個信號設定值決定PWM信號的占空比和周期。
2.2 軟件設計
如果要使Nios軟核能夠訪問自定義的設備,就必須根據(jù)先前的硬件設計按照硬件提取層的文件結構編寫設備驅動程序[4]。以PWM為例說明HAL的文件結構,如表4所示。
表4 PWM的HAL文件結構
文件名描 述
/PWMSW軟件驅動程序目錄
/inc硬件接口文件目錄
Avalonslavepwmregs.h寄存器頭文件
/HAL硬件抽象層驅動程序目錄
Alteraavalonpwmroutines.hPWM函數(shù)原型訪問聲明文件
Alteraavalonpwmroutines.c訪問PWM的函數(shù)
/Testsoftware系統(tǒng)測試程序目錄
Pwm.c用戶程序
2.3 將PWM設計封裝為SoPC Builder元件
當硬件文件和軟件文件都已建立好后,便可以通過SoPC Builder中帶有的設備編輯器將自定義設備封裝到開發(fā)環(huán)境內(nèi)部,在構建Nios Ⅱ系統(tǒng)時可以對其直接調用。在SoPC Builder中單擊Creat New Component,創(chuàng)建新元件向導添加HDL文件、設置信號和接口添加軟件,最終生成包含描述文件、用戶存放硬件描述文件的文件夾以及用來包含HAL軟件文件的HAL文件夾。
2.4 構建Nios系統(tǒng)
構建好的內(nèi)核文件在Quartus Ⅱ中編譯,生成pof配置文件下載到E2PROM芯片中,接下來就可以使用Nios IDE開發(fā)環(huán)境編輯用戶程序,以及通過JTAG Blaster或者USB Blaster在目標板上對應用程序進行調試。
3 自定制外設PWM在嵌入式智能小車監(jiān)控系統(tǒng)中的應用
智能小車監(jiān)控系統(tǒng)設計應用周立功公司SmartSoPC核心板,F(xiàn)PGA為Altera公司的EP1C12,Nios Ⅱ處理器作為嵌入式CPU,機器人車電機共有兩個,左輪電機和右輪電機。該部分包括電機驅動電路和電機控制電路,即左電機的驅動與控制以及右電機的驅動與控制。驅動電路采用CTMicroelectronics 公司的大功率直流電機驅動芯片L289,調速控制采用PWM來控制汽車的前進速度,由FPGA寫入控制字,可得到不同占空比的PWM驅動信號,此PWM信號送入電機驅動芯片的控制端來調節(jié)速度。調用電機驅動程序,改變PWM占空比,輸出PWM波,實現(xiàn)電機的速度控制。用PWM信號控制直流電動機速度,頻率較低時,電動機不會穩(wěn)定運轉,頻率較高時,PWM信號的驅動效率降低。經(jīng)過多次實際電路的測試,調試結果顯示當頻率在500~1 000 Hz時,效果較好。部分C語言控制代碼如下:
void Writevelocity(int data)
{
IOWR(MYPWMBASE,0,0xFF);
IOWR(MYPWMBASE,1,data);
}
4 結 語
Nios Ⅱ嵌入式處理器是用戶可配制的通用RISC嵌入式處理器,是一個非常靈活和強大的處理器。基于此種技術的嵌入式系統(tǒng)設計可以方便地將一般設備和自定義設備模塊集成到系統(tǒng)中,豐富了接口資源,從而能使用戶快速地開發(fā)一個自定制片上系統(tǒng),提高了效率,縮短了開發(fā)周期。本文通過自定制PWM外圍設備的方法,并通過硬件測試證明了方案的可行性和正確性,希望能夠為采用Nios Ⅱ處理器的開發(fā)人員提供一些方法和建議。
參考文獻
[1]高楓,玉松.基于Nios自定制Avalon設備的設計與實現(xiàn)[J].中國測試技術,2007(7):105-108.
[2]郭書軍.嵌入式處理器原理及應用Nios系統(tǒng)設計和C語言編程[M].北京:清華大學出版社,2004.
[3]周立功.SoPC嵌入式系統(tǒng)基礎教程[M].北京:北京航空航天大學出版社,2006.
[4]蔡偉綱.Nios Ⅱ軟件架構解析[M].成都:電子科技大學出版社,2007.
[5]張志剛.FPGA與SoPC設計教程——DE2實踐[M].西安:西安電子科技大學出版社,2007.
[6]唐穎,楊海波.單片數(shù)控信號發(fā)生系統(tǒng)的SoPC技術設計與實現(xiàn)[J].自動化儀表,2008(4):53-55.
[7]馬森.基于Nios Ⅱ的非一般模式類設備設計與集成[J].電子產(chǎn)品世界,2006(8):164-166.
[8]Altera Corp..Nios Ⅱ Handbook Version 8.0[Z].2008.
[9]Altera Corp..Nios Software Develop Handbook[Z].2008.
[10]Altera Corp..Avalon Interface Specification[Z].2008.