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