楊 丹,徐 彬,王 驕
(東北大學1 信息科學與工程學院,2 計算中心,遼寧 沈陽110819)
磁感應成象MIT (Magnetic Induction Tomography)系統(tǒng)是典型的主動式數(shù)據(jù)采集系統(tǒng),其激勵源設計不僅決定了激勵磁場的強度和形式,還很大程度影響著檢測線圈對擾動磁場的檢測精度和靈敏度[1]。為了得到高質(zhì)量的檢測信號,要求MIT 激勵源的輸出具有較高的頻率穩(wěn)定度和相位測量精度,波形失真小,頻帶適合,無相位漂移等。為了有效地區(qū)分被測生物的不同組織成分,或是同種組織所處的不同狀態(tài),往往需要在多頻和多相位的模式下測量,實現(xiàn)對組織進行多頻成像或參數(shù)成像[2]。同時生物組織的電導率信號在10kHz ~10MHz 醫(yī)學應用范圍內(nèi)較為明顯。因此,MIT 激勵源要求是多頻移相激勵源,且頻率帶寬在10kHz ~10MHz 范圍[3]。
對于MIT 激勵源,工程設計中多采用直接數(shù)字頻率合成DDS(Direct Digital Syntheaizer)方法。常用的實現(xiàn)方案有兩種:一是采用單片機結合高性能DDS 芯片,二是基于可編程邏輯器件實現(xiàn)。采用FPGA 設計的DDS 激勵源既具有速度和成本的優(yōu)勢[4],還可將DDS 激勵源模塊嵌入到一片F(xiàn)PGA 芯片上實現(xiàn)激勵源的信號產(chǎn)生和控制,并通過改變ROM 數(shù)據(jù)靈活輸出多種自定義波形,同時輸出信號的頻率穩(wěn)定性提高。因此,EDA 課程設計中,采用了FPGA 實現(xiàn)DDS 來構造磁感應成像系統(tǒng)激勵源。
DDS 的FPGA 實現(xiàn)方案如圖1所示,其中地址加法器有兩個數(shù)據(jù)輸入端:一個輸入端B 與數(shù)據(jù)鎖存器的輸出相連;另一個輸入端為相位增量DATA,它決定了DDS 輸出頻率,稱為頻率控制字FCW(Frequency Control Word)。地址加法器的輸出結果為DATA+B,在時鐘CLK 的作用下,數(shù)據(jù)鎖存器的輸出數(shù)據(jù)D0 ~D10 每次將增加一個DATA。在時鐘CLK 不變的情況下,DATA 的大小控制著D0 ~D10從最小值變到最大值所用的時間。DATA 越大,數(shù)據(jù)存儲器的地址增長越快,地址循環(huán)一周所需時間越短,對數(shù)據(jù)存儲器尋址的單元數(shù)越多,輸出的數(shù)據(jù)點越多,經(jīng)過D/A 轉(zhuǎn)換后輸出信號的頻率越高。
圖1 DDS 的FPGA 實現(xiàn)方案
根據(jù)DDS 的實現(xiàn)方案可知,數(shù)據(jù)存儲器輸出信號頻率f 與控制字DATA 之間的關系為
式中f0為系統(tǒng)時鐘信號CLK 的頻率;m 為地址加法器的數(shù)據(jù)寬度。
(1)控制字設置:本設計中,地址加法器數(shù)據(jù)寬度m=32,ROM 的存儲量為1024* 10bit,系統(tǒng)時鐘頻率50MHz,經(jīng)過鎖相環(huán)PLL 倍頻到200MHz,所有根據(jù)式(1)實現(xiàn)不同頻率輸出信號,所設DATA 如表1所示。
表1 控制字設置
(2)移相處理:本設計中ROM 地址線數(shù)10,若要移相1°,則1024/360 =2.844,步進可定為3。其它步進值如表2所示。
表2 移相對應的步進值
利用DSP Builder 實現(xiàn)激勵源可采用如下設計過程:①打開Matlab/Simulink,新建一個模型命名為sim_dds.mdl;②打開Simulink 庫管理器,調(diào)用Altera DSP Builder Blockset 中的模塊構成DDS 核心電路,設計成DDS 模型子系統(tǒng)SubDDS;③添加其他輔助模塊。
實現(xiàn)的DDS 頂層電路模型,如圖2所示。
圖2 DDS 正弦移相的頂層設計
頂層設計中的模塊采用如下的參數(shù)設置。
(1)Signal Compiler
庫:Altera DSP Builder Blockset 中AltLab
(2)系統(tǒng)時鐘Clock 模塊
庫:Altera DSP Builder Blockset 中Rate Change
參數(shù):“Real World Clock Period”設為20
參數(shù):“Period Unit”設為ns
(3)嵌入式鎖相環(huán)PLL 模塊
庫:Altera DSP Builder Blockset 中Rate Change
參數(shù):“Period Divider”設為4
Parameters 顯示Output periods:5 ns
子系統(tǒng)SubDDS 共有2 個輸入:in1 是PWORD(10 位相位字輸入,控制輸出信號的相移量);in2 是FWORD(32 位頻率字輸入,控制輸出信號的頻率)、2 個輸出:輸出1 是加入移相控制字后的輸出信號Trans_DDSOUT 輸出,輸出2 是未經(jīng)過移相的DDS輸出信號10 位Origin_DDSOUT。所有元件的類型都選擇成為無符號類型,設計的子系統(tǒng)SubDDS 的結構,如圖3所示。
圖3 子系統(tǒng)SubDDS 的結構圖
子系統(tǒng)SubDDS 輸入輸出模塊采用如下的參數(shù)設置。
(1)輸入部分
①fre 模塊(Altbus)
庫:Altera DSP Builder Blockset 中IO & Bus
參數(shù)“Bus Type”設為“Unsigned Integer”
參數(shù)“number Of bits”設為“32”
②Phase 模塊(Altbus)
庫:Altera DSP Builder Blockset 中IO&Bus
參數(shù)“Bus Type”設為“Unsigned Integer”
參數(shù)“number of bits”設為“10”
所有總線模塊,設置無符號整數(shù),32 位。
(2)輸出部分
Origin_DDSOUT 和Trans_DDSOUT 模塊(Altbus):
庫:Altera DSP Builder Blockset 中IO&Bus
參數(shù)“Bus Type”設為“Unsigned Integer”
參數(shù)“number of bits”設為“10”
(3)相位累加器
由Delay,F(xiàn)CW Adder,AltBus,phase_trans Adder和Bus Conversion 模塊構成,采用如下參數(shù)。
①Delay 模塊
庫:Altera DSP Builder Blockset 中Storage
參數(shù)“Depth”設為“1”
參數(shù)“Clock Phase Selection”設為“1”
②FCW Adder 模塊
庫:Altera DSP Builder Blockset 中Arithmetic
參數(shù)“Number of Inputs”設為“2”
“Add(+)Sub(-)”設為“+”
所有加法器模塊均設置成2 輸入。
③AltBus 模塊
庫:Altera DSP Builder Blockset 中IO & Bus
參數(shù)“Bus Type”設為“Unsigned Integer”
參數(shù)“number Of bits”設為“32”
④phase_trans Adder 模塊
庫:Altera DSP Builder Blockset 中Arithmetic
參數(shù)“Number of Inputs”設為“2”
“Add(+)Sub(-)”設為“+ +”
⑤Bus Conversion 模塊
厙:Altera DSP Builder Blockset 中IO & Bus
參數(shù)“Bus Type”設為“Unsigned Integer”
參數(shù)“Input[number of bits].[]”設為32
參數(shù)“Output[number of bits].[]”設為“10”
參數(shù)“Input Bit Connected to Output LSB”設為“22”
(4)波形存儲器
由sin_LUT 和sin_LUT1 模塊構成的存儲器,采用如下參數(shù)。
庫:Altera DSP Builder Blockset 中Storage
參數(shù)“Address Width”設為“10”
參數(shù)“Data Type”設為“Unsigned Integer”
參數(shù)“[].number of bits”設為10
參數(shù)“Matlab Array”設為511* sin([0:2* pi/(2^10):2* pi])+512
所有LUT_ROM 模塊,參數(shù)設置如圖4所示。
圖4 設置LUT_ROM 模塊
用DSP Builder 模塊設計好一個模型后,可以在Simulink 環(huán)境中進行算法、系統(tǒng)級仿真驗證。具體采用如下的步驟。
(1)添加波形觀察Scope 模塊
庫:Simulink 中Sinks
雙擊打開該模塊,如圖5所示,點擊第二個圖標“Parameter”在General 標簽下的“Number of Axes”中選擇2,這是因為在仿真時需要觀察兩路波形。第二個標簽“Data history”中勾選“Limit data points to last”選項,輸入點數(shù)50000。
圖5 示波器的設置
(2)設置仿真激勵
在頂層模型圖中,需要給DDS 模塊添加輸入頻率控制字FWORD 和相位控制字PWORD 激勵。在模擬仿真時,調(diào)整這兩個值觀察波形。
庫:Simulink 庫Sources 中Constant
(3)啟動仿真
設置仿真時間Stop Time 為1e-3。
設置頻率控制字FWORD 和相位控制字PWORD,在sim_dds 模型編輯窗口中,選擇Simulation->Start,開始仿真,雙擊Scope 模塊觀察輸出波形,如圖6所示。
圖6 不同的FWORD 和PWORD 的10 位數(shù)字信號
當FWORD =214748,PWORD =767 時,輸出10kHz 移相270°的10 位數(shù)字信號,輸出如圖6(a)所示。由于頻率較低,地址信號能將ROM 中所有1024 點都取到,所以波形十分光滑;當FWORD =2147483,PWORD=255 時,輸出100kHz 移相90°的10 位數(shù)字信號,輸出如圖6(b)所示;當FWORD =21474836,PWORD=255 時,輸出1MHz 移相90°的10 位數(shù)字信號,輸出如圖6(c)所示。從圖可見,隨著頻率增高,每周期內(nèi)地址信號從ROM 中提取的信號逐漸變少,導致波形顆粒感增加。當FWORD=214748364,PWORD =511 時,輸出10MHz 移相180°的10 位數(shù)字信號。由于信號頻率很高,為了細致觀察波形,單擊窗口中的放大鏡按鈕,逐步放大查看效果,如圖6(d)所示;當達到10MHz 時,每周期只能取到ROM 中的20 個點。
根據(jù)上述仿真過程,若想繼續(xù)提高頻率,需考慮增加地址線的位數(shù)和提高系統(tǒng)的時鐘。針對醫(yī)學領域的MIT 成像系統(tǒng)所要求的10k ~10MHz 來說,目前的設計已經(jīng)可以達到標準。
筆者長期從事EDA 教學和相關的應用系統(tǒng)設計工作,發(fā)現(xiàn)學生在進行硬件系統(tǒng)設計時盲目追求方案的實現(xiàn),缺乏從工程需求出發(fā)提出解決方案以及驗證模型設計可行性的能力。本文以磁感應成像系統(tǒng)中激勵源的設計為例,介紹如何從工程需求確定解決方案,如何使用DSP Builder 完成系統(tǒng)設計中的模型驗證,希望以此加強學生使用DSP Builder 進行工程系統(tǒng)設計的能力,提高學生在進行實際工程研發(fā)時分析問題和論證方案的能力。
[1] 劉國強,醫(yī)學電磁成像[M]. 北京:科學出版社,2006,8:175-179
[2] Engineering in Medicine and Biology,Amsterdam[M].1996 6:1938-1939
[3] Basak Ulker Karbeyaz,Nevzat G Gencer,Electrical Conductivity Imaging via ContactlessMeasurement:An Experimential Study[J],Iowa,USA,IEEE TRANSACTION ON MEDICAL IMAGING,2003,22(5):627-635
[4] 李翠華.基于FPGA 直接數(shù)字頻率合成器的設計[J],南昌,科技廣場,2009,(07):197-198