劉洪朋,葛廣英
(聊城大學物理科學與信息工程學院,山東聊城 252059)
隨著系統(tǒng)級芯片集成度越來越高,SOPC技術成為電子系統(tǒng)設計的熱點。它是利用FPGA器件的可編程性進行SOC設計,其最突出優(yōu)點是在提供豐富IP庫的情況下,用戶可以利用IP庫中的組件按需求來搭建系統(tǒng),有較大的靈活性。但是在供應商提供的IP庫中沒有用戶所需的IP核時,用戶只能根據需要自定義IP核。另外,FPGA的傳統(tǒng)應用是在通信、工業(yè)控制等領域。鑒于此,設計了一款步進電機控制器IP核,它具有對步進電機的轉速、轉向及運轉節(jié)拍數進行控制的功能。
步進電機驅動是通過按一定順序切換每相線圈中的電流,以達到旋轉切換步進電機的過程。其中,步進電機的控制轉速與各繞組中輸入脈沖的頻率成正比,轉向則取決于控制繞組中的通電順序。步進電機按其勵磁相數可以分為三相、四相、五相、六相甚至八相制式。其中工業(yè)常用的是三相、四相勵磁制式。其中三相制式又包括單三拍(A-B-C-A)方式及雙三拍(AB-BC-CA-AB)方式,而四相制式則有三種常見方式,即雙四拍(AB-BC-CD-DA-AB)方式;單四拍(A-B-C-D-A)方式;單、雙八拍(A-AB-BBC-C-CD-D-DA-A)方式。
對于面向Nios II處理器開發(fā)的所有IP核,包括從設備IP核和主設備IP核兩大類。文中設計的步進電機控制器IP核是一個受控對象,屬于從設備。Nios II處理器通過Avalon總線對步進電機控制器IP核的寄存器進行參數設置,實現對步進電機的一系列操作。其中Avalon總線接口規(guī)范的功能是它定義了信號類型、信號的行為及傳輸類型等信息。
一個典型的IP核由硬件文件、軟件文件及組件描述文件組成,步進電機控制器IP核也嚴格按照規(guī)范來編寫。它的硬件文件由多個HDL模塊組合完成硬件設計,其中包括邏輯任務模塊、寄存器模塊及接口模塊,其原理如圖1所示,軟件文件則由寄存器頭文件、驅動文件組成。Nios II開發(fā)工具自2006年公布新版本以后,軟件可以自動生成組件描述文件。
IP核設計部分中的邏輯任務模塊根據寄存器模塊傳遞的參數產生步進電機控制所需的脈沖信號;寄存器模塊則用來存儲Avalon總線傳來的參數,包括步進電機的轉速、勵磁相數、正/反轉參數、節(jié)拍數等;接口模塊是一個符合 Avalon規(guī)范的接口,起著連接Avalon總線與IP核寄存器模塊橋梁的作用。
圖1 Avalon接口硬件電路原理圖
2.1.1 邏輯任務模塊設計
產生控制步進電機所需的脈沖信號一般可以采用ROM查表法或狀態(tài)機法。本文采用狀態(tài)機法,即狀態(tài)機的每個狀態(tài)輸出一種脈沖信號。以四相單、雙八拍制式來控制步進電機舉例進行說明,其模塊設計原理如圖2所示,圖中共有8種狀態(tài),每種狀態(tài)對應每種輸出狀態(tài)。該制式電機相位順序為A-AB-B-BCC-CD-D-DA,那么輸出狀態(tài)即為1000-1100-0100-0110-0010-0011-0001-1001。
圖2 采用狀態(tài)機設計步進電機控制驅動原理圖
邏輯任務模塊采用VHDL語言進行編寫,本模塊采用控制規(guī)則如下,其中,xiangwei為控制電機的相位;direction為控制電機正/反轉位;pai為選擇節(jié)拍數位。
(1)如果 xiangwei為 0,direction 為 0,pai為 00,電機轉向為C-B-A-C(三相單拍反轉)。
(2)如果 xiangwei為 0,direction 為 0,pai為 01,電機轉向為CB-BA-AC(三相雙拍反轉)。
(3)如果 xiangwei為 0,direction 為 1,pai為 00,電機轉向為A-B-C(三相單拍正轉)。
(4)如果 xiangwei為 0,direction 為 1,pai為 01,電機轉向為AB-BC-CA(三相雙拍正轉)。
(5)如果 xiangwei為 1,direction 為 0,pai為 00,電機轉向為 D-C-B-A(四相單拍反轉)。
(6)如果 xiangwei為1,direction 為 0,pai為 01,電機轉向為DC-CB-BA-AD(四相雙拍反轉)。
(7)如果 xiangwei為 1,direction 為 0,pai10,電機轉向為D-DC-C-CB-B-BA-A-AD-DC-CCB-B-BA-A-AD(四相單、雙拍反轉)。
(8)如果 xiangwei為1,direction 為 1,pai為 00,電機轉向為A-B-C-D(四相單拍正轉)。
(9)如果 xiangwei為1,direction 為 1,pai為 01,電機轉向為AB-BC-CD-DA(四相雙拍正轉)。
(10)如果 xiangwei為 1,direction 為 1,pai為 10,電機轉向為A-AB-B-BC-C-CD-D-DA(四相單、雙拍正轉)。
根據上述控制規(guī)則編寫邏輯任務模塊程序并進行仿真,得到仿真結果如圖3所示,所得結果與設計要求一致。
圖3 邏輯任務模塊仿真圖
2.1.2 寄存器模塊
寄存器模塊的作用是存儲IP核與外界交換的信息。驅動程序可以通過Avalon接口采用“基地址+地址偏移量”的方式讀取各寄存器的數據。設計一共有3個寄存器,即方向寄存器、勵磁制式選擇寄存器、節(jié)拍寄存器。設計方法:在reset無效,clock和write有效的前提下,若address信號為“00”時,writedata數據則寫入方向寄存器direction中;當address信號為“01”時,writedata數據寫入節(jié)拍寄存器pai中;當address信號為“10”時,writedata數據寫入勵磁制式選擇寄存器中。對此模塊進行編程仿真,仿真結果如圖4。圖中可以看到當address為00時,方向寄存器direction數據與writedata的數據都為1;address為01時,節(jié)拍寄存器pai數據與writedata數據相同;address為10時,勵磁制式選擇寄存器xiang數據與writedata一致。
圖4 寄存器接口仿真圖
2.1.3 接口模塊
接口模塊作為頂層模塊,為寄存器文件模塊提供了一個標準的Avalon前端,它使用Avalon必需的信號來訪問寄存器文件,并且支持任務邏輯的傳輸類型,負責復位、片選、尋址及對內部寄存器進行讀寫等,主要完成從Nios II處理器接收指令和數據。對于步進電機控制器 IP核,用到接口模塊信號有:clk,reset,chipselect,address,write,writedata 信號。
軟件設計包括寄存器頭文件、驅動軟件的設計。
2.2.1 寄存器頭文件
寄存器頭文件定義了外設的底層硬件訪問接口信息,程序員只需使用定義與該頭文件的宏來操作外設,其好處在于使應用程序獨立于底層硬件。設計首先創(chuàng)建一個寄存器頭文件altera_avalon_stepping_regs.h,它的功能用于描述步進電機控制IP核設備的3個寄存器。
2.2.2 驅動軟件
驅動軟件包括altera_avalon_stepping_routines.h和altera_avalon_stepping_routines.c文件。altera_avalon_stepping_routines.h定義了驅動函數的原型及常量。其函數定義語句為:
int altera_avalon_stepping_init(unsigned int address,unsigned int data1,unsigned int data2,unsigned int data3,int error);
int ltera_avalon_stepping_enable(unsigned int address);
int tera_avalon_stepping_disable(unsigned int address);
將軟硬件文件編譯完畢后,就需要在SOPC Builder軟件中利用Component Editor生成工具封裝成自定義組件。設置好HDL files、Signals、Interface以及SW files選項后,生成的IP核便成功設置在組件框內。利用此IP核即可與其他IP核聯合搭建構成一個步進電機嵌入式控制系統(tǒng)。整個系統(tǒng)結構圖如圖5所示。
圖5 步進電機控制器IP核及由其搭建的系統(tǒng)結構
提出的基于Nios II的步進電機控制器IP核設計采用的軟件平臺是Quartus II6.0和Nios II IDE6.0,硬件平臺采用康芯公司的SOPC實驗系統(tǒng),步進電機控制IP核的占用資源為20%,它可以移值到所有Altera公司支持SOPC技術的芯片上。采用SOPC技術設計的自定義步進電機控制IP核,在提高效率、縮短開發(fā)周期的前提下,可以滿足工業(yè)控制場合的需要及開源升級。
[1]潘松,黃繼業(yè).EDA技術實用教程[M].北京:科學出版社,2010.
[2]李蘭英.Nios II嵌入式軟核SOPC設計原理及應用[M].北京:北京航空航天大學出版社,2009.
[3]鄭恭明,沈媛媛.基于Nios II的偽隨機序列信號發(fā)生器IP核設計[J].工礦自動化,2011(2):52-55.
[4]高楓,王玉松.基于NiosII自定制Avalon設備的設計與實現[J].中國測試技術,2007,33(4):105 -108.
[5]殷蘇民,楊仁宇.基于Avalon總線的插補器IP核的設計[J].機械設計與制造,2009(8):198 -200.
[6]章智慧,白瑞林,沈憲明.面向SOPC Builder的用戶自定義 IP 核開發(fā)[J].自動化儀表,2006,27(9):23 -26.