基于Nios II的MRI脊柱圖像分割系統(tǒng)
1. 系統(tǒng)硬件設計
本文引用地址:http://2s4d.com/article/83229.htmSOPC Builder設置如下圖
Quartus II 軟件下模塊示意圖如下
系統(tǒng)實物圖片:
2. 實現(xiàn)步驟及實現(xiàn)方法
1. LCD圖像顯示及人機交互模塊
(1) LCD及鼠標硬件部分
LCD控制器芯片采用TCB8000C,控制5.7寸TFT65000色LCD顯示屏??刂破鹘涌谂cMCU接口圖如下,通過編寫了硬件程序以Avalon總線從設備的方式連接到Avalon總線上,實現(xiàn) Nios直接訪問LCD控制器的功能,利于驅動程序編寫,簡化后續(xù)的GUI移植中有關LCD驅動部分。
系統(tǒng)采用PS/2接口鼠標,PS/2鼠標接口采用一種雙向同步串行協(xié)議。即每在時鐘線上發(fā)一個脈沖,就在數(shù)據(jù)線上發(fā)送一位數(shù)據(jù)。與nios的連接仍然采用verilog語言編寫Avolon從設備,實現(xiàn)PS/2鼠標的傳輸協(xié)議。程序包括mouse_avalon_interFace.v,mouse_register_file.v , ps2_mouse_interface.v 。其中mouse_avalon_interface.v 是avalon總線從設備接口,mouse_register_file.v,ps2_mouse_interface.v完成PS/2鼠標協(xié)議的數(shù)據(jù)轉換和傳輸。編寫對應的GUI下的驅動程序,實現(xiàn)GUI的鼠標操作功能。
(2) μc/gui移植
μC/GUI是一款針對嵌入式系統(tǒng)的優(yōu)秀圖形軟件,它具有源碼公開、可移植、可裁減、穩(wěn)定性和可靠性高的特點。μC/GUI提供了豐富的界面元素,例如按鈕、編輯框、滑動條等控件,同時支持高效的窗口會調機制,為界面與應用函數(shù)之間提供了良好的接口機制。多功能數(shù)字小相框系統(tǒng)的人機交互界面正是利用這個工具進行開發(fā)的。
μC/GUI軟件體系結構如下:
μC/GUI函數(shù)庫為用戶程序提供GUI接口,包含的函數(shù)有文本、數(shù)值、二維圖形、輸入設備以及各種窗口對象。其中,輸入設備可以是鍵盤、鼠標或觸摸屏;二維圖形包括圖片、直線、多邊形、園、橢圓、圓弧等;窗口對象包括按鈕、編輯框、進度條、復選框等。
μC/GUI函數(shù)庫可以通過GUIConf.h文件進行配置,配置的內容包括是否采用內存設備,是否采用窗口管理器,是否支持操作系統(tǒng)、觸摸屏,以及配置動態(tài)內存的大小等。
在LCDConf.h文件中定義了與硬件有關的各種屬性,如液晶的大小、顏色以及與液晶的接口函數(shù)。而LCD驅動文件則負責把μC/GUI的各種函數(shù)解釋成LCDConf.h文件中定義的液晶接口函數(shù),這個文件與具體的硬件連接無關。
μC/GUI與LCD的硬件接口通過驅動文件把硬件接口函數(shù)轉化為LCDConf.h中定義的LCD讀寫函數(shù)。
μC/GUI移植過程:
1. 配置文件的移植
移植工作首先需要完成的是對配置文件的GUIConf.h, LCDConf.h移植,根據(jù)數(shù)字相冊系統(tǒng)的顯示模塊的要求,對配置文件的相關的參數(shù)進行配置。
2. LCD驅動的移植
μC/GUI針對不同的液晶控制器提供了多種驅動程序,如KS0713、SEDl335、T6963等控制器都有對應的液晶驅動程序。但是由于在本系統(tǒng)中,采用的顯示模塊為TOPWAY TCB8000A LCD控制器和TFT、 65000色、LCD屏。而μC/GUI沒有提供相關控制器的驅動,并且與μC/GUI提供驅動支持的LCD控制器相比較,TCB8000A控制器擁有自己獨立的屏幕控制指令體系,這給μC/GUI在TCB8000A控制器的移植工作帶來了很大的難度。
在移植的過程中,我們首先運用TCB8000A的指令體系,實現(xiàn)了μC/GUI為上層應用函數(shù)提供的大部分API函數(shù),接著對于TCB8000A控制器不能在硬件支持的API函數(shù),我們采用軟件實現(xiàn)的方法對驅動進行了修補,最后通過對大量控件顯示測試實驗,調整了在LCD驅動中運用的TCB8000A顯示指令中的參數(shù),使得LCD驅動的性能達到最優(yōu)。最終實現(xiàn)了μC/GUI在TCB8000A控制器上的無縫移植。
3. MRI圖像數(shù)據(jù)存取模塊
SD卡是Secure Digital Card卡的簡稱,直譯成漢語就是“安全數(shù)字卡”,是由日本松下公司、東芝公司和美國SANDISK公司共同開發(fā)研制的全新的存儲卡產品。SD存儲卡是一個完全開放的標準(系統(tǒng)),多用于MP3、數(shù)碼攝像機、數(shù)碼相機、電子圖書、AV器材等等,尤其是被廣泛應用在超薄數(shù)碼相機上。SD卡在外形上同MultiMedia Card卡保持一致,大小尺寸比MMC卡略厚,容量也大很多。并且兼容MMC卡接口規(guī)范。另外,SD卡為9引腳,目的是通過把傳輸方式由串行變成并行,以提高傳輸速度。它的讀寫速度比MMC卡要快一些,同時,安全性也更高。
我們?yōu)榱耸瓜到y(tǒng)更具有廣泛的應用性、兼容性,我們決定使用SD卡作為設備的主要存儲介質,用于存放我們的照片、音樂、素材等重要數(shù)據(jù)。DE2上的SD讀卡裝置為1線方式,其速度受到了很大限制。我們把裝置改動為4線方式,使其更加符合我們系統(tǒng)的要求。
在Nios II軟件開發(fā)集成環(huán)境下,包含了uc/os,可以使用戶方便的應用到自己的軟件工程里,我們?yōu)榱烁侠硎垢魅蝿展餐瑘?zhí)行、共享cpu,我們使用了uc/os操作系統(tǒng),并為其加掛文件系統(tǒng)。一開始我們選用了zlg文件系統(tǒng),在成功移植后,我們測試了他的速度,速度不盡人意。在向sd卡讀寫1M數(shù)據(jù)分別需要用時37sec和57sec。我們分析了它的耗時所在,一方面sd卡讀寫模式限制,在標準的DE2開發(fā)板上,sd卡使用的是1線讀寫模式,其數(shù)據(jù)線只有1根,速度受到了很大的限制,我們通過修改其模式,增加數(shù)據(jù)線的方式,使sd卡的讀寫模式改變?yōu)?線的sd模式,經過測試,速度有了提高,分別為17sec和27sec,但是速度并不是我們假想的快到原來的四倍,這是因為另一方面的影響—文件系統(tǒng),經過上網(wǎng)查詢,發(fā)現(xiàn)zlg/fs的性能不高,浪費了很多時間,我們決定使用Micrium 公司的Uc/fs,他和uc/os有著很好的兼容性,在性能上也是得到了大眾的好評。經過幾周的努力我們成功移植了uc/fs 1.34版本到de2平臺上,為四線模式的sd卡架起了文件系統(tǒng)。
經過比較測試,讀寫速度有了很大提高,1M數(shù)據(jù)讀寫分別只用時3.6s和11s。這樣基本滿足了我們存取數(shù)據(jù)文件的速度要求。但是仍存在著寫較慢的問題,原因在于在寫數(shù)據(jù)到sd卡的時候每一個block都需要計算16位的CRC校驗,占用了一部分發(fā)送的時間,我們選擇采用自定義用戶指令的方式加快CRC16運算速度,往SD卡寫入一張MR圖像 (約1.5M)的時間從21.7S降低到15.8S。選用更高速的sd卡,還能有效的加塊寫卡的速度。
SD模式時序
- CLK: Host to card clock signal
- CMD: Bidirectional Command/Response signal
- DAT0 - DAT3: 4 Bidirectional data signals.
- VDD, VSS1, VSS2: Power and ground signals.
- 1線與4線區(qū)別
Single Block Read
Single Block Write
評論