Nios軟核在CT機掃描系統(tǒng)控制器設(shè)計中的應(yīng)用
1 引言
本文引用地址:http://butianyuan.cn/article/199820.htm近年來,可編程邏輯器件的發(fā)展,使得SOPC (System On A Programmable Chip,可編程片上系統(tǒng))成為可能, 即在一塊可編程芯片上實現(xiàn)整個系統(tǒng)。Nios是Altera公司研發(fā)的可用于SOPC設(shè)計的處理器軟核?;?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/Nios">Nios軟核的SOPC系統(tǒng),其最大特點就是靈活,能根據(jù)自己的需要靈活改動Nios的外圍設(shè)備,使得硬件利用效率達(dá)到最高,同時他具有ISP(In System Programmable,在系統(tǒng)編程)的功能,可裁減,可擴充,可升級。本文充分利用了Nios系統(tǒng)靈活制定的好處,設(shè)計實現(xiàn)了一套CT機掃描系統(tǒng)控制器。
2 CT掃描系統(tǒng)控制器
CT機是根據(jù)不同密度和厚度的物體對X射線的吸收程度不同的原理,通過計算機成像技術(shù),對病人身體成像的一種醫(yī)學(xué)設(shè)備。CT機掃描系統(tǒng)由X射線發(fā)生系統(tǒng),數(shù)據(jù)采集系統(tǒng),對準(zhǔn)柵三個子系統(tǒng)組成,如圖1所示。掃描系統(tǒng)由掃描架承載,掃描架是個旋轉(zhuǎn)體,掃描系統(tǒng)隨著掃描架旋轉(zhuǎn),以獲得不同角度下的人體信息,掃描架旋轉(zhuǎn)一周所得數(shù)據(jù)可產(chǎn)生圖像。
掃描系統(tǒng)的三部分中,X射線發(fā)生系統(tǒng)產(chǎn)生射線,掃描系統(tǒng)控制器通過CAN總 線和他通信,發(fā)送X射線參數(shù)和動作指令,同時接收X射線發(fā)生器的狀態(tài)信息。數(shù)據(jù)采集系統(tǒng)負(fù)責(zé)對X射線采樣和傳輸數(shù)據(jù),他掃描系統(tǒng)控制器采用RS422總線和其通信,發(fā)送控制指令,并接收指令執(zhí)行狀態(tài)。同時有IO接口用作采樣觸發(fā)脈沖和采樣使能。對準(zhǔn)柵通過擋板來調(diào)節(jié)X射線的開口寬度,擋板由一個步進(jìn)電機驅(qū)動。掃描系統(tǒng)控制器接收來自上級的開口寬度指令,然后發(fā)出控制脈沖,控制步進(jìn)電機到達(dá)指定位置,通過編碼器接收步進(jìn)電機轉(zhuǎn)子位置信號,形成閉環(huán)。
CT掃描系統(tǒng)控制器負(fù)責(zé)三個子系統(tǒng)的協(xié)調(diào)控制,為掃描系統(tǒng)中設(shè)備的通信中心和控制中心。首先他和上級控制單元通信,接收指令和匯報各子系統(tǒng)狀態(tài),其次和各子系統(tǒng)通信,發(fā)送控制指令,并接收子系統(tǒng)的狀態(tài)信息。他根據(jù)接收到的控制指令和掃描架的位置信息,控制對準(zhǔn)柵到達(dá)指定寬度,產(chǎn)生控制X射線發(fā)生和采樣的時序。可見,CT掃描系統(tǒng)控制器包括了實時通信、電機控制,時序控制,是個多任務(wù)的系統(tǒng)。并且對實時性需求也非常高,所有一點時序發(fā)生偏差,都會對病人造成不必要的傷害。
本文使用SOPC的方式,設(shè)計了以一片F(xiàn)PGA為核心的CT機掃描系統(tǒng)控制器硬件,制定了基于Nios軟核的FPGA系統(tǒng),然后設(shè)計了基于實時操作系統(tǒng)Nucleus的應(yīng)用軟件,實現(xiàn)了CT機掃描系統(tǒng)控制器的上述功能。
3 基于Nios的硬件設(shè)計
本文使用了Altera 公司的FPGA Cyclone EP1C20,他擁有充足的可編程資源來實現(xiàn)SOPC。因為系統(tǒng)所有功能均由FPGA實現(xiàn),硬件電路除FPGA外只需加上存儲器件和一些物理層接口芯片即可。本文使用了一片8M Byte FLASH、一片16M Byte SDRAM,CAN總線收發(fā)器和RS422總線收發(fā)器等作為FPGA的外圍設(shè)備,硬件電路的結(jié)構(gòu)簡單明了,提高了系統(tǒng)的可靠性。FPGA系統(tǒng)運行時鐘50MHz,確保了系統(tǒng)的運算速度。
通過Altera的SOPC Builder軟件包能制定基于Nios軟核的FPGA系統(tǒng),他提供了一些基本的Nios外設(shè)模塊,如UART控制器、定時器、FLASH控制器、SDRAM控制器等。本文設(shè)計的CT掃描系統(tǒng)控制器FPGA內(nèi)部結(jié)構(gòu)如圖2所示。
Nios是流水線結(jié)構(gòu)的RISC 軟核處理器,他能選擇32位架構(gòu)或16位架構(gòu)。本文使用32位架構(gòu),并在SOPC Builder中設(shè)置了4K Byte數(shù)據(jù)緩存和指令緩存,以節(jié)省CPU讀取數(shù)據(jù)和指令的時間,提高系統(tǒng)性能。
由圖2可見,Nios軟核通過AVALON總線和各擴展模塊相連接。AVALON總線是專門用于Nios連接外設(shè)的一種總線結(jié)構(gòu),他具有分離的地址,數(shù)據(jù)和控制線,并提供動態(tài)動態(tài)總線寬度調(diào)整等功能。Nios軟核為其主設(shè)備。
AVALON總線上的從設(shè)備有SDRAM控制器,F(xiàn)lash控制器、定時器、通信接口UART控制器和CAN 控制器。在設(shè)計Nios軟核的外設(shè)時,采用已有的IP核能有效縮短設(shè)計周期,同時經(jīng)過充分驗證的IP核也確保了設(shè)計的可靠性。本文根據(jù)需要采用了三個UART控制器作為Nios軟核的外設(shè),分別用于和上級單元通信、和數(shù)據(jù)采集系統(tǒng)通信和調(diào)試信息輸出;還使用了CAST公司的IP 核作CAN 控制器,他支持CAN 2.0協(xié)議。
在FPGA片內(nèi),使用了4 Kbyte的ROM,此ROM中包含了Altera提供的GERMS Monitor啟動引導(dǎo)程式,他能實現(xiàn)啟動引導(dǎo)、程式下載和基本調(diào)試功能。在調(diào)試中,通過調(diào)試串口和GERMS Monitor通信,將可執(zhí)行的映象文件下載到SDRAM或FLASH中。
另外,本文根據(jù)應(yīng)用的特別需求設(shè)計了自定義模塊??掃描時序控制模塊和步進(jìn)電機控制模塊。在SOPC系統(tǒng)中,更容易選擇系統(tǒng)功能是由運行于Nios中的軟件實現(xiàn),還是使用FPGA硬件實現(xiàn),由此能均衡系統(tǒng)軟硬件的功能,使效率達(dá)到最高。系統(tǒng)功能用FPGA硬件實現(xiàn)的優(yōu)勢在于數(shù)據(jù)的并行處理,實時響應(yīng)非???;而用處理器軟件實現(xiàn)的優(yōu)勢在于通訊和復(fù)雜情況的判斷等。本文中為了提高系統(tǒng)的實時性,將步進(jìn)電機控制在FPGA中實現(xiàn)。步進(jìn)電機控制FPGA模塊如圖3所示。
圖3右邊為AVALON總線接口,由片選,地址線、數(shù)據(jù)線、讀寫使能和中斷信號組成。左邊為FPGA的輸出,即和步進(jìn)電機驅(qū)動器接口:DIR為步進(jìn)電機運行方向控制,Pulse為步進(jìn)電機的控制脈沖,HOFF為保持信號。下方三個信號為編碼器的反饋信號,分別是A相脈沖、B相脈沖和初始位置信號。步進(jìn)電機控制模塊接收Nios通過AVALON總線發(fā)送來的目標(biāo)位置信息,然后根據(jù)當(dāng)前位置及目標(biāo)位置,得到到達(dá)目標(biāo)所需的步進(jìn)電機的脈沖數(shù),發(fā)出相應(yīng)的脈沖。同時,根據(jù)反饋的編碼器信號,解碼得到電機當(dāng)前位置信息,并判斷步進(jìn)電機運動是否達(dá)到目標(biāo)位置,控制任務(wù)是否完成。然后產(chǎn)生中斷,通知 Nios軟核任務(wù)完成情況??梢娺\行于Nios中的軟件只需將目標(biāo)位置通知電機控制模塊即可,大大減輕了CPU的負(fù)擔(dān)。
評論