Ingesloten ECG data-acquisitiesysteem (11 / 14 stap)

Stap 11: Met behulp van de filters van de HLS en/of de FIR-Compiler


Aangezien ik had voorafgaande ervaring met filter bouw in C/C++, koos ik het Vivado HLS-programma uit te voeren van de filters.

De filter-functie moet als volgt een koptekst:

 void function (<data_type>* input, <data_type> *output, <data_type> *coeffs) 

Eerste laten we eens een kijkje op de functieargumenten. Welk gegevenstype moet we kiezen? Als onderdeel van een PC-programma, zou dit dan gegevenstypen zou niet veel van een zorg (we konden kiezen dubbele of zweven), maar we synthetiseren aan hardware willen, dus Gegevensbreedte een bron van zorg is. Het gegevensblad van de ADS1299 geeft de exacte gegevenstype: ondertekende 24b gegevens (2s aanvullen), dus het zou een verspilling te gebruiken 64 of 32b zwevend punt gegevens.

Gelukkig HLS heeft een header alleen voor deze job - "ap_int.h" bevat aangepaste breedte integer en vaste punt gegevenstypen.

Nu aan het laatste deel, de coëfficiënten. De coëfficiënten in Matlab werden gegenereerd, en zal worden gebruikt in HLS. Als u de coëfficiënten zijn slechts eenmaal opgeeft, kunnen we hen als constanten aan het begin van de functie aangeven. Als we willen veranderen de coëfficiënten kunnen we laten in de argumenten, maar de opslag moet een dubbele poort type RAM/ROM omdat de optimalisatie vereist.

De eerste digitale filter zullen een 65 punt FIR filter.

 const int firlen = 65; const int dWidth = 24; typedef ap_fixed<dWidth + 4, 4> fir_t;<br> 

Het type van de fir_t zal worden gebruikt voor dekpunt gegevenstype. We moeten een register van de opslag voor de invoergegevens, een tijdelijke register en een register van de opslag voor de som van de producten.

 fir_t xStore[firlen]; ap_int<dWidth + 4>tempX; ap_fixed<dWidth*2,dWidth-8> sum;<br> 

Het register van de som moet een grootte die kan omgaan met 65 24b * 24b waarden sumed.

We moeten definiëren de coëfficiënten van de filter als (de waarden kunnen worden gekopieerd vanuit Matlab):

 fir_t coeffB[firlen] = {...}; 

In een oneindige lus we slaan de invoerwaarden, omzetten, en gaat u verder met de MAC-bewerking.

 while(1){ for(int i = 0; i < firlen - 1; ++i) xStore[i] = xStore[i+1]; temp = (ap_int<dwidth +="" 4="">) *(x++);<br></dwidth> xStore[firlen-1](dWidth + 3,0) = temp(dWidth + 3,0); sum = 0; for(int i=0; i < firlen; ++i) sum += coeffB[i]*xStore[(firlen - 1) -i]; } 

Laatste maar niet minste moet we de vaste puntenwaarde converteren naar integer met teken in de lus.

 temp = fir_t(sum).range(dWidth -1,0); *(y++) = (ap_int<dwidth>) temp;</dwidth> 

Nu is het tijd voor C-synthese. Wij zien (figuur 1), dat slechts een kleine hoeveelheid van de middelen werd gebruikt, en de geschatte timing 15.33ns is. We kunnen het filter optimaliseren door de opslag en de MAC loops met pipelining

 #pragma HLS PIPELINE II=1 

Ook kan de IIR filter worden gemaakt.

Ditmaal het proces is als volgt:

  1. Verschuif de invoer registers en de volgende waarde opslaan.
  2. De MAC-schrijfbewerkingen (voor de input en output registers).
  3. verschuiven van het uitvoer-register en sla de uitvoer op.
  4. de uitvoer retourneren

De laatste foto toont de structuur van de synthesiyed na het filter pipelining.

Gerelateerde Artikelen

Temperatuur controlesysteem met Labview (Atmega32)

Temperatuur controlesysteem met Labview (Atmega32)

ABSTRACTDit werk beschrijft een kader van ON/OFF, proportionele en lineaire temperatuur controlesystemen. Het ontwerp en de implementatie van dit proces gebeurt met LABVIEW, virtual workbench software. Het project omvat omvat data-acquisitie, gegeven
Wearable Wellness systeem - Digilent ontwerpwedstrijd 2016

Wearable Wellness systeem - Digilent ontwerpwedstrijd 2016

Het doel van het project is om te controleren de inspanning, stress, paniek of myocardiale voorganger momenten op basis van de impedantie van de huid. De impedantie van de huid te nemen kunnen we de variatie van dit tijdig interpreteren. We weten dat
Het installeren van een TV in een sauna

Het installeren van een TV in een sauna

mijn broer besloot hij wilde een sauna in zijn nieuwe huis, dus ik hem om mij te laten ook installeren overtuigde een TV en geluidsinstallatie in het draaglijker te maken de hitte en vochtigheid een beetje :)Stap 1: In de oorspronkelijke plannen van
Arduino huis energie monitor schild

Arduino huis energie monitor schild

hoewel producten worden steeds meer en meer beschikbaar voor de controle van uw huis stroomverbruik, ik ben een van die idioten die niet kan verlaten goed genoeg alleen en die liever shell uit $100 en uren van mijn tijd om te redden van $20 en iets i
LED Firefly broche

LED Firefly broche

De LED Firefly broche is een moeilijk project voor de eerste timer, maar een leuke voor de veteraan vliegen tyer bouwen!U moet een bankschroef dat kleine voorwerpen zeer stevig houden kan. Ik gebruik een fly bankschroef dat monofilamenten en draad zo
Stappen bij de analyse van de materiaal eigenschappen van zijn Stress/spanning Curve

Stappen bij de analyse van de materiaal eigenschappen van zijn Stress/spanning Curve

Intro:"Hoe gedraagt deze bepaald materiaal?" "Is het Bros? Of nodulair is? En aan welke graad? " "Welke ladingen kan het weerstaan voordat het breekt?" Al deze vragen en meer kunnen worden beantwoord door de analyse van het m
Doe herleven een oude kruiwagen

Doe herleven een oude kruiwagen

Een oude kruiwagen had vastgesteld uit voor de Prullenbak... de verf had meestal vlokken uit, en de band was volledig vlak, maar het was structureel gezond, dus ik het huis voor een tweede kans op leven sleepte.Ik vaste dit een op TechShop.Stap 1: De
Raspberry Pi gecontroleerd Aquaponics

Raspberry Pi gecontroleerd Aquaponics

Aquaponics /ˈækwəˈpɒnɨks /, is een voedsel-productiesysteem dat conventionele aquacultuur (raising aquatische dieren zoals slakken, vissen, rivierkreeftjes of garnalen in tanks) met hydrocultuur combineert (het kweken van planten in water) in een sym
Unified Control Box voor een embedded system

Unified Control Box voor een embedded system

Als onderdeel van het systeem van de ingesloten besturingselement dat ik ben gebouw, moest ik een middel om veilig huis alle hardware van de interface. Ik wilde een manier om te beschermen en de interne hardware toegankelijk voor toekomstige bedradin
Prototype van vinger afdrukken op basis ATM werktuigkundige & of verslag systeem

Prototype van vinger afdrukken op basis ATM werktuigkundige & of verslag systeem

In dit systeem is het ontwikkelen van een ingesloten systeem, dat wordt gebruikt voor ATMbeveiligingstoepassingen. In deze systemen, zal bankiers verzamelen de klant vingerafdrukken en GSM-nummer tijdens het openen van de rekeningen dan de klant enig
GREENBIT - maakt het groeien (INTEL IOT)

GREENBIT - maakt het groeien (INTEL IOT)

IntroductieWij streven ernaar een innovatieve slimme technologie waarmee de elimineert het gedoe van het tuinieren zoals wij die kennen en kunnen om het even wie om te groeien van hun eigen voedsel en planten uit hun mobiele en webinterface op afstan
LED hars kubus V3

LED hars kubus V3

een kubus van hars uit een LED-lamp en een paar andere stukken en brokken te maken.Elke keer dat ik heb een van deze ik denk altijd – zou kunnen dit beter zijn.  De eerste 2 versies die kunnen worden gevonden hier en hier, uitgewerkt ok maar ik ontde
Laptop helderheid via Vlietsteen aanpassen!

Laptop helderheid via Vlietsteen aanpassen!

Voor een ingesloten automatiseringssysteem dat ik aan het maken ben, moet ik de helderheid van het scherm snel via een touchscreeninterface. De computer is eigenlijk een touchscreen netbook dat recht rond kunt spiegelen. Ik zal niet toegang hebben to
ECG-Simulator

ECG-Simulator

dit instructable beschrijft in detail de stappen die zijn vereist voor het maken van een Arduino gebaseerde ECG-simulator. Een ECG-simulator repliceert de cardiale golfvorm die kan worden gemeten door het aanbrengen van drie elektroden (RA, LA, RL) n