<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 醫(yī)療電子 > 設(shè)計應(yīng)用 > 基于 FPGA 的脈象采集儀硬件電路設(shè)計

          基于 FPGA 的脈象采集儀硬件電路設(shè)計

          作者: 時間:2011-12-22 來源:網(wǎng)絡(luò) 收藏
          脈診作為中醫(yī)最重要的一種診斷方式,具有模糊性、不確定性的特點,是近年來中醫(yī)現(xiàn)代化研究中的熱點。隨著電子、計算機技術(shù)的快速進步,將嵌入式技術(shù)、 技術(shù)、IP核技術(shù)結(jié)合在一起,融合電子技術(shù)、信號處理方法等學(xué)科知識,在中醫(yī)基本理論的指導(dǎo)下,設(shè)計脈象診斷設(shè)備,構(gòu)建一個靈活高效,可擴展性強,可靠性高,功耗低,可便攜的具有重要的現(xiàn)實意義和良好的市場前景。
          1 儀器總體設(shè)計
          嵌入式的前期設(shè)計目標是脈搏信號的采集、存儲、顯示、簡單處理、通信等,后期要對所采集到的信號處理,得到脈象特征,對病人做出診斷。在 的選型時,不但要考慮當前功能是否夠用,價格適中,而且要考慮產(chǎn)品的升級換代,所以設(shè)計的系統(tǒng)選擇Altera公司Cyclone II系列EP2C35F484C8作為核心芯片。以芯片為核心的嵌入式的結(jié)構(gòu)組成如圖1所示。從圖1中可以看出,硬件主要由電源、顯示、存儲器、脈象采集、FPGA、通信等6個模塊組成。
          1.jpg
          2 主要外圍電路設(shè)計
          由于在FPGA內(nèi)部采用VGA控制器IP核,選擇模擬儀器公司的10位高速視頻DAC芯片。
          SRAM采用IDT公司的IDT71V416器件,利用2片IDT71V416器件構(gòu)成32位存儲器,以與NiosⅡ的32位CPU的總線匹配。對 SRAM的控制,選用Altera公司提供SRAM控制器核,其控制信號由SoPC自動生成。SDRAM為系統(tǒng)中的數(shù)據(jù)及堆棧提供暫存空間。系統(tǒng)啟動后,程序代碼調(diào)入SDRAM中運行,以提高系統(tǒng)的運行速度。系統(tǒng)中采用HYNIX公司的64 MB SDRAM,型號為HY57V561620HT。它提供LVTTL接口,分為4個BANK,每個BANK容量為4 M×16 b。由BA0,BA1的狀態(tài)決定選定那個BANK。FLASH存儲器的設(shè)計采用AMD公司的AM29LV128M器件。可以自由選擇數(shù)據(jù)的位數(shù)為16 b或者8 b,但是最高位是模式位,采用IP核完成設(shè)計,具有比較優(yōu)越的性能。
          2.1 通信模塊的設(shè)計
          采用非常普遍的串行口通信。RS 232串行總線具有結(jié)構(gòu)簡易,成本低廉,硬軟件支持豐富,安裝方便等特點。雖然RS 232的速度稍微慢了點,但是對于頻率小于100 Hz信號的采集還是足能滿足的。采用MAXIM公司的max3232作為串口轉(zhuǎn)換芯片,其供電電壓為3~5V,速度可以達到1 Mb/s,具有良好的性能。
          2.2 脈象采集模塊的設(shè)計
          脈象采集模塊包括傳感器、儀器放大器、采樣保持器、A/D轉(zhuǎn)換器等,是脈象采集儀的關(guān)鍵部分。
          脈象采集儀的傳感器決定著采集的質(zhì)量,設(shè)計采用硬面壓力傳感器,型號為華科公司的HK2000G脈搏傳感器。利用這種傳感器合理設(shè)計系統(tǒng),采集到的脈搏信號能較好地達到要求標準。
          選用ADI公司的儀器放大器AD620來放大采集到的脈搏信號。AD620非常適合于壓力感測方面的應(yīng)用。設(shè)計系統(tǒng)需要采集三路脈象信號,為了節(jié)省脈象信號模擬數(shù)字轉(zhuǎn)換和濾波的成本,在信號的前端,設(shè)計模擬多路開關(guān),進行多路復(fù)用功能。脈象信號較微弱時,為了較少地引入噪聲,采用AD7501模擬開關(guān)。
          A/D轉(zhuǎn)換器選用內(nèi)帶采樣保持器、高精度基準電源、內(nèi)部時鐘和三態(tài)緩沖的數(shù)據(jù)輸出AD678。它是12位分別率,5μs轉(zhuǎn)換時間的ADC。具有外部結(jié)構(gòu)簡單,使用方便,精度高的特點。
          3 FPGA模塊的關(guān)鍵電路設(shè)計
          3.1 脈象采樣控制器的設(shè)計
          為了使設(shè)計簡單化,對于脈象采集控制的FPGA設(shè)計,采用在SoPC系統(tǒng)外做控制電路部分,然后通過SoPC的PIO與SoPC連接。由脈象信號采樣的組成可知,脈象采集與FPGA相連的只有數(shù)據(jù)線接口和控制線,3路脈搏信號和3路信號共用一個ADC。
          由于脈搏信號的頻率較低,大多在100 Hz以下,所以每一通道的脈搏信號采樣頻率設(shè)定為1 kHz左右就能滿足采樣的需要,也就是1 ms的時間間隔要對3個通道循環(huán)1遍。每一通道都經(jīng)過數(shù)據(jù)采集初始化、啟動采集、數(shù)據(jù)輸出、鎖存等4步,計算每一步時間約為83μs。也就是說,如果每一步都能在83μs內(nèi)完成,就可以利用1個周期為83μs的外部時鐘控制狀態(tài)的翻轉(zhuǎn)。AD678的轉(zhuǎn)換時間是5μs,而NIOSⅡ的操作時間在ns級,所以 83μs內(nèi)完全能夠完成每一步的操作需要。采集控制部分分為2部分實現(xiàn),一部分實現(xiàn)83μs的時序,另一部分是采集的狀態(tài)機設(shè)計。83μs的實現(xiàn)采用外部時鐘分頻的方法,采集狀態(tài)機的轉(zhuǎn)換受83μs時序部分的輸出控制。狀態(tài)機的設(shè)計中,寸、關(guān)、尺三部分需要循環(huán)一遍,每一部又包括采樣的初始化、啟動轉(zhuǎn)換、轉(zhuǎn)換結(jié)束、存數(shù)據(jù)等5步操作。具體源程序如下:
          2.jpg
          完整編譯綜合采集部分后由兩部分組成,如圖2所示。
          3.jpg
          3.2 基于NiosⅡ的SoPC硬件設(shè)計
          利用Altera公司的QuartusⅡ軟件和SoPCBuilder開發(fā)工具,可以方便地定制一個從硬件到軟件的完整系統(tǒng)。FPGA內(nèi)部需要設(shè)計以下模塊:NiosⅡ、SRAM控制器、SDRAM控制器、EPCS控制器、FLASH控制器、定時器、VGA控制器、RS 232控制器、脈象采集控制器等。除脈象采集控制器沒有現(xiàn)成的IP核可用,需開發(fā)控制時序外,其他控制器采用Altera公司提供的IP核。
          SoPC系統(tǒng)生成完成后,在QuartusⅡ下建立原理圖窗口,調(diào)用設(shè)計好的NiosⅡ系統(tǒng)與自己設(shè)計的脈象采集系統(tǒng)的控制連接,設(shè)計完成后,鎖定引腳,進行完整編譯。完成后的電路如圖3所示。
          1.jpg
          編譯后配置到系統(tǒng)中的FPGA去,后面的工作就是嵌入式操作系統(tǒng)的移植和嵌入式應(yīng)用程序的開發(fā),這時會利用到該硬件平臺。
          4 結(jié)語
          設(shè)計出嵌入式脈象采集儀的總體方案,并完成了基于FPGA的脈象采集儀。根據(jù)脈象采集的特點,設(shè)計脈象采集部分電路,利用IP核構(gòu)建了脈象采集的SoPC系統(tǒng)。設(shè)計的脈象采集儀具有成本低,功耗低,體積小,便于擴展,使用方便,穩(wěn)定性高,可靠性高,系統(tǒng)維護方便等特點。
          1.jpg


          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();