<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 基于Nios軟核的CT機掃描系統控制器設計

基于Nios軟核的CT機掃描系統控制器設計

——
作者:劉宇飛 郭宏 時(shí)間:2007-05-22 來(lái)源:微計算機信息 收藏
1 引言

基于軟核的系統,其最大特點(diǎn)就是靈活,可以根據自己的需要靈活改變的外圍設備,使得硬件利用效率達到最高,同時(shí)它具有ISP(In System Programmable,在系統編程)的功能,可裁減,可擴充,可升級。本文充分利用了系統靈活定制的優(yōu)點(diǎn),設計實(shí)現了一套掃描系統。

2 CT掃描系統

是根據不同密度和厚度的物體對X射線(xiàn)的吸收程度不同的原理,通過(guò)計算機成像技術(shù),對病人身體成像的一種醫學(xué)設備。掃描系統由X射線(xiàn)發(fā)生系統,數據采集系統,對準柵三個(gè)子系統組成,如圖1所示。掃描系統由掃描架承載,掃描架是一個(gè)旋轉體,掃描系統隨著(zhù)掃描架旋轉,以獲得不同角度下的人體信息,掃描架旋轉一周所得數據可產(chǎn)生圖像。

掃描系統的三部分中,X射線(xiàn)發(fā)生系統產(chǎn)生射線(xiàn),掃描系統通過(guò)CAN總線(xiàn)和它通信,發(fā)送X射線(xiàn)參數和動(dòng)作指令,同時(shí)接收X射線(xiàn)發(fā)生器的狀態(tài)信息。數據采集系統負責對X射線(xiàn)采樣和傳輸數據,它掃描系統控制器采用RS422總線(xiàn)與其通信,發(fā)送控制指令,并接收指令執行狀態(tài)。同時(shí)有IO接口用作采樣觸發(fā)脈沖和 采樣使能。對準柵通過(guò)擋板來(lái)調節X射線(xiàn)的開(kāi)口寬度,擋板由一個(gè)步進(jìn)電機驅動(dòng)。掃描系統控制器接收來(lái)自上級的開(kāi)口寬度指令,然后發(fā)出控制脈沖,控制步進(jìn)電機到達指定位置,通過(guò)編碼器接收步進(jìn)電機轉子位置信號,形成閉環(huán)。

CT掃描系統控制器負責三個(gè)子系統的協(xié)調控制,為掃描系統中設備的通信中心和控制中心。首先它和上級控制單元通信,接收指令和匯報各子系統狀態(tài),其次與各子系統通信,發(fā)送控制指令,并接收子系統的狀態(tài)信息。它根據接收到的控制指令和掃描架的位置信息,控制對準柵到達指定寬度,產(chǎn)生控制X射線(xiàn)發(fā)生和采樣的時(shí)序??梢?jiàn),CT掃描系統控制器包括了實(shí)時(shí)通信、電機控制,時(shí)序控制,是一個(gè)多任務(wù)的系統。并且對實(shí)時(shí)性要求也很高,任何一點(diǎn)時(shí)序發(fā)生偏差,都會(huì )對病人造成不必要的傷害。

本文使用的方式,設計了以一片FPGA為核心的CT機掃描系統控制器硬件,定制了基于Nios軟核的FPGA系統,然后設計了基于實(shí)時(shí)操作系統Nucleus的應用軟件,實(shí)現了CT機掃描系統控制器的上述功能。

CT機掃描系統

3 基于Nios的硬件設計

本文使用了Altera 公司的FPGA Cyclone EP1C20,它擁有充足的可編程資源來(lái)實(shí)現。因為系統所有功能均由FPGA實(shí)現,硬件電路除FPGA外只需加上存儲器件和一些物理層接口芯片即可。本文使用了一片8M Byte FLASH、一片16M Byte SDRAM,CAN總線(xiàn)收發(fā)器和RS422總線(xiàn)收發(fā)器等作為FPGA的外圍設備,硬件電路的結構簡(jiǎn)單明了,提高了系統的可靠性。FPGA系統運行時(shí)鐘為50MHz,保證了系統的運算速度。

通過(guò)Altera的SOPC Builder軟件包可以定制基于Nios軟核的FPGA系統,它提供了一些基本的Nios外設模塊,如UART控制器、定時(shí)器、FLASH控制器、SDRAM控制器等。本文設計的CT掃描系統控制器FPGA內部結構如圖2所示。

系統控制器FPGA內部結構

Nios是流水線(xiàn)結構的RISC 軟核處理器,它可以選擇32位架構或者16位架構。本文使用32位架構,并在SOPC Builder中設置了4K Byte數據緩存和指令緩存,以節省CPU讀取數據和指令的時(shí)間,提高系統性能。

由圖2可見(jiàn),Nios軟核通過(guò)AVALON總線(xiàn)與各擴展模塊相連接。AVALON總線(xiàn)是專(zhuān)門(mén)用于Nios連接外設的一種總線(xiàn)結構,它具有分離的地址,數據和控制線(xiàn),并提供動(dòng)態(tài)動(dòng)態(tài)總線(xiàn)寬度調整等功能。Nios軟核為其主設備。

AVALON總線(xiàn)上的從設備有SDRAM控制器,Flash控制器、定時(shí)器、通信接口UART控制器和CAN 控制器。在設計Nios軟核的外設時(shí),采用已有的IP核能有效縮短設計周期,同時(shí)經(jīng)過(guò)充分驗證的IP核也保證了設計的可靠性。本文根據需要采用了三個(gè)UART控制器作為Nios軟核的外設,分別用于與上級單元通信、與數據采集系統通信和調試信息輸出;還使用了CAST公司的IP 核作CAN 控制器,它支持CAN 2.0協(xié)議。

在FPGA片內,使用了4 Kbyte的ROM,此ROM中包含了Altera提供的GERMS Monitor啟動(dòng)引導程序,它可以實(shí)現啟動(dòng)引導、程序下載和基本調試功能。在調試中,通過(guò)調試串口和GERMS Monitor通信,將可執行的映象文件下載到SDRAM或FLASH中。

另外,本文根據應用的特殊要求設計了自定義模塊——掃描時(shí)序控制模塊和步進(jìn)電機控制模塊。在SOPC系統中,更容易選擇系統功能是由運行于Nios中的軟件實(shí)現,還是使用FPGA硬件實(shí)現,由此可以均衡系統軟硬件的功能,使效率達到最高。系統功

能用FPGA硬件實(shí)現的優(yōu)勢在于數據的并行處理,實(shí)時(shí)響應非???;而用處理器軟件實(shí)現的優(yōu)勢在于通訊和復雜情況的判斷等。本文中為了提高系統的實(shí)時(shí)性,將步進(jìn)電機控制在FPGA中實(shí)現。步進(jìn)電機控制FPGA模塊如圖3所示。

步進(jìn)電機控制FPGA模塊

圖3右邊為AVALON總線(xiàn)接口,由片選,地址線(xiàn)、數據線(xiàn)、讀寫(xiě)使能和中斷信號組成。左邊為FPGA的輸出,即與步進(jìn)電機驅動(dòng)器接口:DIR為步進(jìn)電機運行方向控制,Pulse為步進(jìn)電機的控制脈沖,HOFF為保持信號。

下方三個(gè)信號為編碼器的反饋信號,分別是A相脈沖、B相脈沖和初始位置信號。步進(jìn)電機控制模塊接收Nios通過(guò)AVALON總線(xiàn)發(fā)送來(lái)的目標位置信息,然后根據當前位置及目標位置,得到到達目標所需的步進(jìn)電機的脈沖數,發(fā)出相應的脈沖。同時(shí),根據反饋的編碼器信號,解碼得到電機當前位置信息,并判斷步進(jìn)電機運動(dòng)是否達到目標位置,控制任務(wù)是否完成。然后產(chǎn)生中斷,通知Nios軟核任務(wù)完成情況??梢?jiàn)運行于Nios中的軟件只需將目標位置通知電機控制模塊 即可,大大減輕了CPU的負擔。

4 軟件設計

由前文可以看出,掃描系統控制器需要完成多項功能,軟件體系復雜,而且通信、掃描控制、電機控制等環(huán)節要求很高的實(shí)時(shí)和并發(fā)性。在這種情況下,采用傳統的基于前后臺的嵌入式軟件設計方法將存在很大的困難,軟件設計結構復雜,工作量大,且開(kāi)發(fā)周期長(cháng),功能擴展受限。嵌入式實(shí)時(shí)操作系統為系統軟件設計提供了良好的開(kāi)發(fā)平臺,承擔起系統資源管理的責任。這樣就簡(jiǎn)化了應用程序設計,保障了軟件質(zhì)量,縮短了開(kāi)發(fā)周期。本文采用了ATI公司開(kāi)發(fā)的Nucleus操作系統,Nucleus是一個(gè)搶先式多任務(wù)操作系統內核,具有源代碼開(kāi)放、性?xún)r(jià)比高、功能模塊豐富等優(yōu)點(diǎn)。

本文中,軟件結構可分為三個(gè)結構層次,最底層為硬件抽象層,主要由Nios軟核外設驅動(dòng)程序中斷服務(wù)程序以及板級初始化程序組成,外設驅動(dòng)程序包括UART控制器, CAN控制器, 步進(jìn)電機控制模塊,掃描控制模塊的驅動(dòng)程序,此部分是操作系統與底層硬件的接口。第二層為Nucleus操作系統內核及其服務(wù),它提供任務(wù)調度,中斷管理,內存管理、定時(shí)控制等服務(wù)。最高層為應用軟件層,運行在操作系統之上,完成所有的應用功能。根據系統功能,應用軟件結構如圖4所示:

應用軟件結構

系統管理單元是系統工作的核心,包括兩個(gè)任務(wù):命令解析任務(wù)和系統狀態(tài)控制任務(wù)。命令解析任務(wù)接收上級控制單元指令,將其解析為各個(gè)子系統需要完成的任務(wù)目標,并發(fā)送給各個(gè)子系統控制單元。子系統控制單元控制子系統完成指令。系統狀態(tài)控制任務(wù)是一個(gè)狀態(tài)機,控制著(zhù)CT掃描系統的運行狀態(tài)。它根據當前的系統狀態(tài)和上級指令,判斷系統的目標動(dòng)作,控制掃描時(shí)序,同時(shí)和各子系統管理單元通信,同步各子系統管理單的任務(wù)執行,并將各子系統狀態(tài)發(fā)送給上級控制單元。本文采用信號量和事件的手段同步各任務(wù)。

數據采集管理單元是控制器與數據采集系統的接口,它負責數據采集系統的初始化、數據采集參數設置、數據采集系統狀態(tài)監控和對其錯誤狀態(tài)進(jìn)行處理。這部程序分包括串口通訊接收任務(wù)和數據采集系統管理任務(wù)。

由前文可知步進(jìn)電機控制功能由FPGA硬件實(shí)現,因此對準柵管理單元的工作變得十分簡(jiǎn)單,它從系統狀態(tài)控制部分接收對準柵開(kāi)口寬度,將其傳遞給步進(jìn)電機控制模塊,然后通過(guò)步進(jìn)電機控制模塊的中斷服務(wù)程序,監控任務(wù)完成情況。

與數據采集控制類(lèi)似,射線(xiàn)發(fā)生器控制部分負責射線(xiàn)發(fā)生器的初始化、射線(xiàn)參數設置、監控射線(xiàn)發(fā)生器狀態(tài)和異常情況處理。它包括一個(gè)射線(xiàn)發(fā)生控制任務(wù)和CAN通訊處理任務(wù)。射線(xiàn)發(fā)生控制任務(wù)負責完成射線(xiàn)發(fā)生器的參數管理和狀態(tài)監控,CAN通訊任務(wù)完成CAN總線(xiàn)數據的收發(fā)功能。

上述任務(wù)均為事件驅動(dòng)方式,在系統不工作時(shí),Nios處理器處于空閑狀態(tài),這樣可以降低系統功耗。任務(wù)間通訊采用管道(Pipe)的方式,管道的優(yōu)點(diǎn)是可以傳輸變長(cháng)的數據。CT掃描系統控制器需要接收系統配置、掃描、故障診斷等不同長(cháng)度的上級控制指令,所以在命令解析任務(wù)與通信接口任務(wù)之間采用管道進(jìn)行通訊,另一方面命令解析任務(wù)向各子系統控制任務(wù)發(fā)送的指令長(cháng)度也是不確定的,所以與三個(gè)子系統管理單元通訊也采用管道的方式。

合理的配置任務(wù)優(yōu)先級是嵌入式系統軟件可靠工作的必要條件。本文中,任務(wù)的根據重要程度可分為三個(gè)層次:首先是系統狀態(tài)控制,它是系統運行的中樞,同時(shí)控制著(zhù)掃描時(shí)序,必須保證狀態(tài)控制任務(wù)的暢通運行,因此它具有最高優(yōu)先級設為1。其次是與上級控制單元的接口,包括串口通信任務(wù)和命令解析任務(wù),控制器必須準確的接收上級單元的命令并及時(shí)反饋,所以這兩個(gè)任務(wù)優(yōu)先級設為2。最后是各子系統管理任務(wù),其中射線(xiàn)管理單元如果誤操作,可能對人員造成損害,所以它的兩個(gè)任務(wù)優(yōu)先級較高,設為3,其余子系統管理單元任務(wù)較低均設為4。

本文的應用軟件使用GNU交叉編譯器編譯,然后經(jīng)ATI公司的Codelab軟件調試通過(guò)。

5 實(shí)驗驗證

為驗證調試CT掃描系統控制器,搭建了測試平臺。測試平臺由一臺PC機、CT數據采集系統和對準柵組成,其中PC機模擬CT掃描系統控制器的上級單元和 X射線(xiàn)發(fā)生系統。

通過(guò)監聽(tīng)與上下級控制單元的通訊,測量對準柵的開(kāi)口寬度,測量控制器輸出的數據采集和射線(xiàn)發(fā)生控制信號波形,證明,本文設計的CT掃描系統控制器能夠滿(mǎn)足多任務(wù)實(shí)時(shí)處理的要求。

6 結論

本文采用SOPC方式設計實(shí)現了多任務(wù),實(shí)時(shí)響應的CT掃描系統控制器。硬件設計以Nios軟核和FPGA為核心,充分利用SOPC系統的靈活定制的特點(diǎn),簡(jiǎn)化了電路結構,縮短了設計周期,減輕了處理器運算負擔。同時(shí)基于嵌入式實(shí)時(shí)操作系統Nucleus的結構化、層次化應用程序設計,保證了系統的軟件質(zhì)量和實(shí)時(shí)性。試驗表明,本文設計的C

 
T機掃描系統控制器滿(mǎn)足多任務(wù)實(shí)時(shí)處理的要求。

本文作者的創(chuàng )新點(diǎn):使用基于Nios軟核和實(shí)時(shí)操作系統的方式實(shí)現了實(shí)時(shí)多任務(wù)控制系統,充分利用了Nios軟核靈活定制的特點(diǎn),使用硬件加速的方式減輕了處理器負擔,保證了系統性能。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>