1 引言
智能控制是控制界新興的研究領(lǐng)域,是一門邊緣交叉學(xué)科。智能控制的一種定義為:應(yīng)用人工智能的理論和技術(shù)及運籌學(xué)的優(yōu)化方法同控制理論方法與技術(shù)結(jié)合,在未知環(huán)境下,仿效人類的智能,實現(xiàn)對系統(tǒng)的控制。微電子技術(shù)界各大芯片生產(chǎn)廠家均推出了專用的神經(jīng)網(wǎng)絡(luò)芯片和模糊芯片,采用這種高速的專用芯片,大大方便了智能控制應(yīng)用系統(tǒng)的實現(xiàn)。本文采用現(xiàn)場可編程門陣列(FPGA)技術(shù),對智能控制器的設(shè)計和實現(xiàn)進行研究。
2 控制器硬件設(shè)計
控制器主芯片采用ALTERA公司的型號為APEX系列的FPGA芯片,芯片型號為EP20K200EFC484-2X。APEX20K" title="APEX20K">APEX20K系列器件是一個具有多核結(jié)構(gòu)的PLD器件系列,支持可編程單芯片系統(tǒng)SOPC" title="SOPC">SOPC。該型號擁有20萬可用門資源,13KB的內(nèi)部存儲空間,382個用戶可用引腳,1.8V/2.5V I/O。主處理器采用ALTERA公司的32位NIOS處理器軟核,系統(tǒng)總線采用AVALON總線,外圍擴展:片內(nèi)存儲器(9KB),RS232串行通訊口,智能控制算法加速器單元,模擬量輸入端口,數(shù)字量/開關(guān)量輸出端口,鍵盤PIO,LED顯示PIO等,硬件體系結(jié)構(gòu)框圖如圖1所示。
圖1 硬件體系結(jié)構(gòu)
2.1 Nios軟核處理器
NIOS CPU是一種采用流水線技術(shù),單指令流的RISC處理器,具有分離的指令和數(shù)據(jù)存儲器端口(Harvard存儲器結(jié)構(gòu))。本文處理器主頻為33.333MHz。NIOS CPU中的內(nèi)部寄存器包括:一個通用寄存器文件,多個內(nèi)部控制寄存器,一個程序計數(shù)器,以及一個用于前綴指令的K寄存器。
NIOS3.0 CPU允許用戶取消對陷阱指令、硬中斷或內(nèi)部異常的支持,以把NIOS系統(tǒng)配置成一個最簡單的控制系統(tǒng)(不運行復(fù)雜軟件)。NIOS處理器有一個可選的片上JTAG調(diào)試模塊,用于實現(xiàn)調(diào)試工具和NIOS CPU的通訊。調(diào)試模塊含有First Silicon Solution (FS2)公司設(shè)計的IP核。在NIOS CPU中,此調(diào)試模塊被稱作NIOS OCI調(diào)試模塊。NIOS OCI調(diào)試模塊可以實現(xiàn)運行控制、硬件斷點和軟件跟蹤。
2.2 UART串口通信
UART外圍硬件電路調(diào)用ALTERA公司集成到其開發(fā)環(huán)境中的NIOS系統(tǒng)IP庫模塊,其功能描述如下。NIOS UART用于在Altera的FPGA中實現(xiàn)簡單的RS-232異步發(fā)送和接收邏輯。UART通過兩個外部引腳(TxD和RxD)發(fā)送和接收串口數(shù)據(jù)。為了與RS232的電壓信號相匹配,在RxD/TxD輸入輸出引腳與相應(yīng)的外部RS232連接之間需要有電平轉(zhuǎn)換芯片。
UART傳送邏輯含有一個7位、8位或9位的txdata保持寄存器。傳送移位寄存器直接連接到TxD數(shù)據(jù)引腳,數(shù)據(jù)的LSB首先移出到TxD。傳送邏輯可以自動根據(jù)RS232通信協(xié)議在連續(xù)的TxD數(shù)據(jù)流中插入正確的開始位、停止位和奇偶校驗位。UART接收邏輯含有一個7位、8位或9位的接收移位寄存器,以及一個7位、8位或9位的rxdata保持寄存器。可以通過軟件直接讀取rxdata保持寄存器。接收邏輯根據(jù)RS232通信協(xié)議在連續(xù)的RxD數(shù)據(jù)流中自動檢測正確的開始位、停止位和奇偶校驗位。
UART產(chǎn)生一個IRQ輸出信號作為其Avalon總線接口的一部分。當(dāng)一個或多個內(nèi)部條件發(fā)生,并且對應(yīng)的control寄存器的中斷允許位也為1時,UART發(fā)出一個中斷請求。在復(fù)位時,所有的中斷允許位設(shè)置為0。因此,只有軟件將一個或多個中斷允許位設(shè)置為1時,UART才能發(fā)出中斷請求。UART模塊與總線接口如圖2所示。其中,address為相對地址,irq為中斷請求信號,chipselect為片選信號,dataavaliable為接收數(shù)據(jù)線有效信號,readyfordata為接收數(shù)據(jù)字準備完畢信號,begintransfer為開始發(fā)送數(shù)據(jù)信號。
圖2 UART模塊與總線接口圖
2.3 AVALON總線與用戶自定義邏輯控制算法模塊
AVALON總線主要用于連接片內(nèi)處理器與外設(shè),以構(gòu)成可編程單芯片上系統(tǒng)(SOPC)。它描述了主從構(gòu)件間的端口連接關(guān)系,以及構(gòu)件間通信的時序關(guān)系。AVALON總線擁有多種傳輸模式,以適應(yīng)不同外設(shè)的要求。AVALON總線的基本傳輸模式是在一個主外設(shè)和一個從外設(shè)之間進行單個字節(jié)、半字或字的傳輸。當(dāng)一次傳輸結(jié)束后,不論新的傳輸過程是否還是在同樣的外設(shè)之間進行,AVALON總線總是可以在下一個時鐘周期立即開始另一次傳輸。AVALON總線支持多個總線主外設(shè),允許單個總線事務(wù)中在外設(shè)之間傳輸多個數(shù)據(jù)單元。這一多主設(shè)備結(jié)構(gòu)為構(gòu)建SOPC系統(tǒng)提供了極大的靈活性,并且能適應(yīng)高帶寬的外設(shè)。AVALON總線是為SOPC環(huán)境而設(shè)計,互連邏輯由PLD內(nèi)部的邏輯單元構(gòu)成。
AVALON總線還包括許多其他用以支持SOPC Builder軟件自動生成系統(tǒng)、總線和外設(shè)的特性和約定。如,最大4GB的地址空間,內(nèi)置地址譯碼,多主設(shè)備總線結(jié)構(gòu),采用向?qū)椭脩襞渲孟到y(tǒng),動態(tài)地址對齊等。
為了實現(xiàn)快速實時系統(tǒng),控制器神經(jīng)網(wǎng)絡(luò)控制算法采用硬件電路實現(xiàn),作為用戶自定義的IP組件以外圍算法加速器的形式連接到系統(tǒng)總線上。并行輸入輸出(PIO)模塊是1至32位的并行輸入/輸出模塊。采用PIO作為軟件和用戶自定義邏輯之間的存儲器映像接口??刂谱挚刂扑惴K的運行,狀態(tài)字0表示控制算法模塊正在運行,狀態(tài)字1表示輸入寄存器有否新的輸入,狀態(tài)字2表示輸出寄存器有新的輸出,當(dāng)控制器有新的輸出結(jié)果時,置為高。輸入寄存器,包含用戶溫度給定值和檢測到的系統(tǒng)輸出值,軟件可寫入寄存器,同時置狀態(tài)字1高;輸出寄存器,為控制輸出,軟件可讀出其值,同時置狀態(tài)字2低
2.4 定時器
SOPC Builder能自動生成定時器模塊的源碼以及相應(yīng)的軟件接口子程序,系統(tǒng)集成方便。NIOS定時器模塊是32位的內(nèi)部定時器。軟件可以通過寫控制寄存器來操作定時器,還可以讀取內(nèi)部計數(shù)器值。定時器模塊可以生成中斷請求信號,也可以用內(nèi)部控制位進行中斷屏蔽。
軟件可以通過以下方式控制定時器:預(yù)置periodl和periodh寄存器設(shè)定定時器周期,設(shè)置control寄存器的start和stop位來允許或禁止中斷,通過設(shè)置control寄存器的ito位來允許或禁止中斷,通過設(shè)置control寄存器中的cont位設(shè)定定時器的工作模式(定時器還是計數(shù)器)。NIOS定時器由系統(tǒng)主時鐘(clk)驅(qū)動,NIOS CPU和其他外設(shè)也使用該時鐘信號。該時鐘同時驅(qū)動軟件接口寄存器和內(nèi)部計數(shù)器。
3 控制器軟件設(shè)計
在SOPC Builder開發(fā)工具中給各硬件模塊設(shè)置屬性,分配物理地址,配置存儲空間的大小,生成硬件系統(tǒng)。接著進行軟件應(yīng)用程序開發(fā),并為各外設(shè)模塊編寫軟件驅(qū)動。
1.控制命令輸入子程序
現(xiàn)場控制命令輸入使用6個按鍵模擬遙控器輸入。
按鍵輸入采用中斷響應(yīng)機制,NIOS處理器中斷機制最多允許64個異常,包括外部硬件中斷源、內(nèi)部異常源和直接軟件異常。按鍵中斷服務(wù)程序完成把新命令狀態(tài)字(6bits)讀入命令緩沖區(qū),同時把新命令狀態(tài)位置為高。
2.串行通信接口子程序
串口通信采用中斷響應(yīng)機制,中斷服務(wù)程序完成數(shù)據(jù)包頭的檢測,數(shù)據(jù)包的接收,校驗,并給新數(shù)據(jù)包接收標志位置高。串口數(shù)據(jù)包解碼子程序,去除包頭包尾,解讀命令碼,執(zhí)行相應(yīng)處理程序。本子程序測試在實驗板上進行,實現(xiàn)與PC機串口通信。實驗過程為,從PC機上串口調(diào)試器軟件發(fā)送一組數(shù)據(jù)包到實驗板上,實驗板上系統(tǒng)接收數(shù)據(jù)包并校驗,解讀。如果檢驗碼正確,則再把改數(shù)據(jù)打包加上校驗和,發(fā)送到PC機上。
3.控制器應(yīng)用程序設(shè)計
控制器頂層軟件應(yīng)用程序流程圖如圖3所示。
圖3 應(yīng)用軟件流程圖
初始化完成溫度給定值設(shè)置,顯示寄存器設(shè)置初值等工作,設(shè)備檢測完成檢測各外設(shè)是否完好,否則發(fā)出錯信號。接著,檢查新按鍵狀態(tài)位,看是否有新的按鍵命令輸入,如果有,則調(diào)用按鍵處理子程序,否則繼續(xù)檢查是否有新數(shù)據(jù)從串口輸入,如果有,則調(diào)用串口數(shù)據(jù)處理子程序,否則進入A/D采集程序,把采集到的現(xiàn)場溫度值與給定值比較,如果差值不在允許范圍內(nèi),則調(diào)用智能算法模塊,否則返回。