Hello! 大家好,本次項(xiàng)目主題是“基于FPGA的ECG信號(hào)采集與處理系統(tǒng)設(shè)計(jì)”,與眾多STM32或Arduino等單片機(jī)直接利用軟件編程調(diào)用庫(kù)函數(shù)不同,本項(xiàng)目以底層邏輯為切入點(diǎn)進(jìn)行數(shù)字電路設(shè)計(jì),更加關(guān)注電路底層的細(xì)節(jié),包括基礎(chǔ)模塊的劃分、接口信號(hào)的定義、verilog代碼設(shè)計(jì)、仿真驗(yàn)證以及板級(jí)調(diào)試,在滿足性能要求下,同時(shí)會(huì)評(píng)估資源消耗問(wèn)題,希望大家能和我一起一步一步的完成此次工程項(xiàng)目,而不是簡(jiǎn)單的copy。其中難免有錯(cuò)誤,希望各位指正。
引言: FPGA開(kāi)發(fā)和數(shù)字IC設(shè)計(jì)十分相似,而兩者最基礎(chǔ)是verilog代碼設(shè)計(jì),verilog是硬件描述語(yǔ)言,實(shí)現(xiàn)的數(shù)字電路具備硬件并行處理的優(yōu)點(diǎn),所以verilog設(shè)計(jì)思想與基于軟件的編程語(yǔ)言是有很大不同的,復(fù)雜的verilog代碼設(shè)計(jì)不是隨隨便便直接在板子上調(diào)試成功的。 本項(xiàng)目側(cè)重對(duì)設(shè)計(jì)代碼的仿真驗(yàn)證,而不是簡(jiǎn)簡(jiǎn)單單對(duì)代碼 “搬運(yùn)工”,達(dá)到所謂“快速”入門的假現(xiàn)象。在FPGA開(kāi)發(fā)中,每一行verilog代碼已經(jīng)決定了電路的性能和功能,仿真是對(duì)verilog代碼設(shè)計(jì)的有效驗(yàn)證方法,因?yàn)榇a存在的bug在仿真中會(huì)一一被定位出來(lái),“速成”FPGA開(kāi)發(fā)都是假的,不能一行一行代碼看懂和敲出來(lái),verilog學(xué)習(xí)的時(shí)長(zhǎng)都是無(wú)用功,正確設(shè)計(jì)方法+動(dòng)手練習(xí)是FPGA開(kāi)發(fā)/數(shù)字電路設(shè)計(jì)的正確打開(kāi)方法。
以下是我個(gè)人設(shè)計(jì)的方法: 首先根據(jù)你的硬件條件包括FPGA板型和其他硬件(AD、VGA、LCD、舵機(jī)、攝像頭等等),確定一個(gè)硬件的詳細(xì)設(shè)計(jì)方案; 接著根據(jù)需求和參考資料將整體劃分到各個(gè)小模塊,并確定各個(gè)模塊接口之間的數(shù)據(jù)信號(hào)和控制信號(hào);畫(huà)時(shí)序圖主要是根據(jù)數(shù)據(jù)信號(hào)走向需要哪些控制信號(hào),而控制信號(hào)主要實(shí)現(xiàn)方式就是cnt、enable、flag等等。
其次按照?qǐng)D紙就可以敲代碼了,而verilog代碼語(yǔ)法不是很難,主要是算術(shù)運(yùn)算符、賦值運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、條件運(yùn)算符、位運(yùn)算符以及移位拼接等,一般設(shè)計(jì)會(huì)這些足夠了,而往往多數(shù)初學(xué)者覺(jué)FPGA設(shè)計(jì)很簡(jiǎn)單啊,大概指的這部分語(yǔ)法簡(jiǎn)單,但是在敲代碼過(guò)程中還要考慮到組合邏輯以及時(shí)序邏輯中常用的模塊,{組合邏輯主要包括常用邏輯門(與門、或門、非門、異或等)、比較器、半加器、全加器、乘法器、數(shù)據(jù)選擇器、三態(tài)門,時(shí)序邏輯主要包括D觸發(fā)器、兩級(jí)D觸發(fā)器、帶異步復(fù)位的D觸發(fā)器、帶異步復(fù)位同步清零的D觸發(fā)器、移位寄存器、單口RAM、偽雙口RAM、真雙口RAM、單口ROM、有限狀態(tài)機(jī)等}。而這些基本單元在寫(xiě)代碼過(guò)程做到心中有數(shù),因?yàn)檫@些決定了設(shè)計(jì)的PPA(Performance,Power,Area); 最后再通過(guò)仿真工具對(duì)設(shè)計(jì)的代碼進(jìn)行驗(yàn)證,首先是功能仿真也就是RTL行為級(jí)仿真,主要是檢查代碼中的語(yǔ)法錯(cuò)誤以及代碼行為的正確性,但是不包括延時(shí)信息,驗(yàn)證之前“模塊劃分與接口定義”階段。其次是后仿真也就是時(shí)序仿真,在設(shè)計(jì)布局布線后提供一個(gè)時(shí)序仿真模型,驗(yàn)證之前“畫(huà)接口信號(hào)時(shí)序”階段。
步驟一:項(xiàng)目框架
目的意義 在我國(guó),隨著生活節(jié)奏加快,心血管疾病的發(fā)病率有逐年遞增的趨勢(shì);同時(shí)由于人們生活水平和健康意識(shí)的不斷提高,對(duì)心臟類疾病進(jìn)行實(shí)時(shí)監(jiān)護(hù)的需求也不斷增加。但是,心血管疾病本身具有無(wú)癥狀性(病人在發(fā)生心肌缺血時(shí)并沒(méi)有胸痛、心絞痛等常見(jiàn)癥狀)和間歇性。 選擇這個(gè)主題主要原因之一是開(kāi)發(fā)一種可以幫主人們?nèi)粘I畹姆乔秩胄栽O(shè)備—基于FPGA的ECG信號(hào)采集與處理。市場(chǎng)上有許多ECG信號(hào)檢測(cè)產(chǎn)品可以提高效率(尺寸較小,將數(shù)據(jù)保存在云中等等),但是其中任何一件產(chǎn)品都很少涉及到復(fù)雜信號(hào)處理,并沒(méi)有與數(shù)據(jù)庫(kù)進(jìn)行比對(duì)。
內(nèi)容及結(jié)構(gòu)安排:
本文基于Xilinx公司的Artix-7系列芯片xc7a35tcpg236-1和AD83232采集板搭建一套硬件平臺(tái)用以異常ECG信號(hào)檢測(cè)系統(tǒng)。使用Vivado和ModelSim設(shè)計(jì)和仿真各個(gè)系統(tǒng)模塊的功能,本系統(tǒng)主要有AD8232信號(hào)采集,F(xiàn)PGA存儲(chǔ)和處理,C#GUI顯示及matlab處理。其中FPGA處理是核心部分,由以下模塊構(gòu)成:AD模塊、RAM模塊、UART模塊及濾波模塊。本文采用Verilog HDL硬件描述語(yǔ)言進(jìn)行編程,XADC具有兩個(gè)專用的差分輸入引腳Vp和Vn,可用于采樣模擬信號(hào),通過(guò)ADC模塊完成100 MHz到360 Hz的數(shù)據(jù)采樣,同時(shí)采用低通濾波器消除共模噪聲;在所有存儲(chǔ)單元中存滿ECG的樣本數(shù)據(jù)后,將生成一個(gè)脈沖以觸發(fā)向PC的傳輸。UART模塊將接收一個(gè)信號(hào),該信號(hào)使用TX模塊進(jìn)行發(fā)送,當(dāng)接收UART檢測(cè)到起始位時(shí),它將開(kāi)始以稱為波特率的特定頻率讀取輸入位。
本項(xiàng)目主要有以下方面:
1.FPGA學(xué)習(xí)流程。編寫(xiě)項(xiàng)目詳細(xì)設(shè)計(jì)方案,主要包括數(shù)據(jù)通路和控制通路的設(shè)計(jì),模塊劃分與接口信號(hào)的定義,數(shù)據(jù)通路原理圖以及控制通路時(shí)序圖,verilog代碼的具體設(shè)計(jì),以及仿真驗(yàn)證,下載到FPGA開(kāi)發(fā)板調(diào)試。在verilog代碼設(shè)計(jì)過(guò)程會(huì)描述時(shí)序圖,用到IP核,數(shù)據(jù)通路的寄存器消耗資源進(jìn)行評(píng)估。
2.用到的濾波處理。在信號(hào)處理中,數(shù)字濾波器是一種對(duì)采樣的離散時(shí)間信號(hào)執(zhí)行數(shù)學(xué)運(yùn)算以減少或增強(qiáng)該信號(hào)某些方面的系統(tǒng)。數(shù)字濾波器系統(tǒng)通常由一個(gè)模數(shù)轉(zhuǎn)換器對(duì)輸入信號(hào)進(jìn)行采樣,使用FPGA或ASIC代替通用微處理器或具有特定并行架構(gòu)的專用DSP,以加快諸如過(guò)濾之類的操作。
項(xiàng)目簡(jiǎn)介: 包含四大部分:AD采集模塊、RAM存儲(chǔ)模塊、濾波處理模塊、UART模塊。 首先,AD8232放大器輸出是一個(gè)介于0至3.3V之間的模擬值,ADC模塊的輸入應(yīng)為1V,因此需要進(jìn)行分壓。放置在放大器的輸出和FPGA板的輸入(Vp引腳)之間,AD模塊包括PLL和XADC 完成100 MHz到360 Hz的數(shù)據(jù)采樣。 其次,我們利用RAM模塊存儲(chǔ)通過(guò)ADC采集的樣本。模塊具有2個(gè)命令模式:讀取和寫(xiě)入。這兩種狀態(tài)由啟用寫(xiě)模式時(shí)為高電平和禁用寫(xiě)模式時(shí)為低電平的信號(hào)控制。
Step1:確定整個(gè)設(shè)計(jì)思路,ECG信號(hào)檢測(cè)的總體框圖,確定程序流程框圖 Step2: AD模塊、包括XADC和分頻時(shí)鐘接口定義,進(jìn)行具體verilog代碼設(shè)計(jì)和仿真驗(yàn)證 Step3:RAM讀寫(xiě)模塊、根據(jù)狀態(tài)機(jī)進(jìn)行接口定義,進(jìn)行具體verilog代碼設(shè)計(jì)和仿真驗(yàn)證 Step4:Digital filter模塊、UART模塊接口定義,進(jìn)行具體verilog代碼設(shè)計(jì)和仿真驗(yàn)證 Step5:進(jìn)行功能擴(kuò)展,并將以上所有模塊集成在一起,并且做整個(gè)仿真驗(yàn)證以及板級(jí)調(diào)試,通過(guò)在C#GUI中顯示及保存為.csv文件,利用MATLAB進(jìn)行相關(guān)算法處理,整理打包完整的開(kāi)源方案所有資料。
編輯:jq
-
FPGA
+關(guān)注
關(guān)注
1643文章
21967瀏覽量
614248 -
ECG
+關(guān)注
關(guān)注
4文章
130瀏覽量
52813
原文標(biāo)題:《來(lái)實(shí)戰(zhàn)》第6期:基于FPGA的ECG信號(hào)采集與處理系統(tǒng)設(shè)計(jì)
文章出處:【微信號(hào):cirmall,微信公眾號(hào):電路設(shè)計(jì)技能】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
ADS1298 FE PDK套件測(cè)ECG信號(hào)求助
使用ADS1293的管腳DRDYB只能被驅(qū)動(dòng)到通道ECG1、ECG2、ECG3的其中一個(gè),要同步采集三個(gè)通道時(shí),怎么來(lái)設(shè)置?
ADS1192IRSMR何處理采集ECG信號(hào)伴隨的工頻干擾、運(yùn)動(dòng)基線漂移、電極接觸噪聲、肌電干擾等及其他干擾的?
請(qǐng)問(wèn)ADS1198真的能采集到ECG/EEG信號(hào)嗎?
ADS1292可不可以通過(guò)配置芯片內(nèi)部寄存器,來(lái)分別采集呼吸或ECG信號(hào)?
ADS1192ECG-FE采集不到正確的心電波形怎么解決?
FPGA的多通道數(shù)據(jù)采集傳輸系統(tǒng)

使用ads1293做ecg心電信號(hào)采集,測(cè)量中發(fā)現(xiàn)環(huán)境干擾信號(hào)導(dǎo)致ecg信號(hào)失真,怎么處理?
ADS1299檢測(cè)生理信號(hào),怎么樣計(jì)算采集到信號(hào)的幅度呢?
ADS1292采集幾個(gè)同事的ECG信號(hào)電壓,發(fā)現(xiàn)不同個(gè)體的基線電壓偏差很大,怎么處理?
AD采集FPGA做fft處理信號(hào)的問(wèn)題
FPGA異步信號(hào)處理方法
基于FPGA的圖像采集與顯示系統(tǒng)設(shè)計(jì)
醫(yī)療級(jí)心電ECG采集處理模塊

評(píng)論