Inbäddade system för datainsamling ECG (11 / 14 steg)

Steg 11: Använda filter från HLS och/eller FIR kompilatorn



Eftersom jag hade tidigare erfarenhet av filter konstruktion i C/C++, valde jag Vivado HLS programmet att genomföra filtren.

Filterfunktionen bör ha ett huvud som följer:

Annullera funktion (< data_type > * ingång, < data_type > * utgång, < data_type > * coeffs)

Första låt oss ta en titt på funktionsargumenten. Vilken datatyp bör vi välja? Om detta skulle vara del av ett PC-program, då datatyper inte vore mycket av ett problem (vi kunde välja dubbla eller flyta), men vi vill att syntetisera till maskinvara, så databredd är ett problem. ADS1299 databladet anger den exakta datatypen: undertecknade 24b data (komplement till 2s), så det skulle vara ett slöseri att använda 64 eller 32b flytande punkt data.

Lyckligtvis HLS har ett huvud bara för det här jobbet - "ap_int.h" innehåller anpassad bredd heltal och fast punkt datatyper.

Nu till den sista delen, koefficienterna. Koefficienterna som genererades i Matlab och kommer att användas i HLS. Om koefficienterna som anges endast en gång, kan vi ange dem som konstanter i början av funktionen. Om vi vill ändra koefficienterna som vi kan lämna i argumenten, men lagring måste vara en med dubbla portar RAM/ROM typ eftersom optimering kräver det.

Det första digitala filtret kommer att vara en 65 punkt Gran filtrerar.

CONST int firlen = 65;

CONST int dWidth = 24.

TypeDef ap_fixed < dWidth + 4, 4 > fir_t; < br >

Vilken fir_t ska användas för fast punkt datatyp. Vi behöver ett lagring register för indata, en temporal registrera och lagring register för summan av produkter.

fir_t xStore [firlen];

ap_int < dWidth + 4 > tempX;

ap_fixed < dWidth * 2, dWidth-8 > summa; < br >

Summa registret måste ha en storlek som kan hantera 65 24b * 24b värden förmodad.

Vi måste definiera filter koefficienterna som (värdena kan kopieras från Matlab):

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

I en oändlig slinga vi lagra indatavärden, konvertera dem och gå vidare till MAC operation.

While(1) {
för (int jag = 0; jag < firlen - 1; ++ jag)
xStore [i] = xStore [jag + 1];
Temp = (ap_int < dwidth += "" 4 = "" >) *(x++); < br >< / dwidth > xStore [firlen-1](dWidth + 3,0) = temp (dWidth + 3,0);
summa = 0;
för (int jag = 0; jag < firlen; ++ jag)
summa += coeffB [i] * xStore [(firlen-1) -i];
}

Sist men inte minst måste vi konvertera värdet som fast punkt till heltal i slingan.

Temp = fir_t (summa) .range(dwidth-1,0);

*(y++) = (ap_int < dwidth >) temp; < / dwidth >

Nu är det dags för C syntes. Vi kan se (bild 1) bara en liten mängd användes med medel, som beräknade tidpunkten är 15.33ns. Vi kan optimera filtret av pipelining lagring och MAC slingor med

#pragma HLS PIPELINE II = 1

På samma sätt kan IIR-filter göras.

Denna gång processen är som följer:

  1. Skifta input registren och lagra nästa värde.
  2. Skrivåtgärder MAC (för ingång och utgång registren).
  3. flytta ut registret och lagra utdata.
  4. returnera utdata.

Den sista bilden visar den synthesiyed strukturen efter pipelining filtret.

Se Steg
Relaterade Ämnen

En inbäddad vision-system stöder vården i hemmet för konvalescent eller äldre personer

Vårt mål var att genomföra en hardware-software Visionsystem för hemvård av äldre människor eller konvalescenter.Projektet är baserat på visuell analys av personens beteende. Systemet gör det möjligt för att upptäcka hälsa eller livshotande situation...

Inbäddad webbserver med Tiva ansluten Launchpad

Hej alla,I det här inlägget kommer jag att dela med mig av min nya ansökan enkel inbäddade servern för att kontrollera och mäta somethings över internet.Numera som bekant IoT är populärt ämne och kan bli mer populär. Även det är ett motto att "av 202...

SnapNsew: Ett Soft-krets / inbäddade elektroniska projekt

Inbäddning elektronik i textilier är ett spännande sätt att få barnen intresserade av elektronik. Tyvärr, teknikerna som behövs för att skapa ett robust projekt är inte trivialt. Jag har skapat detta system vilken tillåt du till:Enkelt skapa och test...

Zybo - AXI DMA inuti inbäddad Linux

Som titeln säger, förklarar denna handbok hur jag gjorde för att kunna använda AXI DMA inuti en inbäddad Linux på en Zybo ombord. Flera andra tutorials finns för att installera Linux på den Zybo plattformen (se referenser i slutet av handledning), så...

Blomkruka med inbäddade blad motiv av betong

Jag har varit att se en hel del exempel på konkreta lister online, och började undra om att göra min egen blomkrukor ut detta material. Jag har också fått en affinitet för naturen med bilder och mönster, och ville hitta ett sätt att bädda in grenar e...

Hand löda inbäddade pin smd ics som integrerad krets

vad är inbäddad pin IC (min term)Förpackningar för SMD ICs som integrerad krets, DFN har stift inbäddade i plast kroppen.Så som du placerar IC på verkar styrelsen lödning vara svårt.Varför? eftersom u inte kan justera ic pin av pin lätt som stift göm...

Inbäddade utskrift

Inbäddade utskrift - vad är det???Tja, kunde jag inte tänka på något kort till det mer definierade namn.För denna kompatibel innebär att skapa en utskrift med elektronik integrerad i utskriften.Så istället för lim eller snapin-lås-anslutningar allt s...

Multi-användning magi hylla-Qi-aktiverade, inbäddade magneter

Denna mångsidiga hylla har ett inbäddat nyckel hängare och en trådlös telefonladdare gömd inuti toppen. Den har även plats för något annat du vill av din säng.Steg 1: Skära din hyllaFörst skapa den övergripande formen av din hylla. Jag valde en minim...

Inbäddade metall-3D tryckt Chip-Clip för köket

föreslogs det att jag gör instructables artiklar jag har skrivit med plast och andra material kombineras. Tekniken jag använder är ganska enkel och kan göras av vem som helst som har tillgång till en 3D-skrivare.Det första projektet är ett enkelt kli...

Alla hjärtans dag blomma kronblad inbäddade hjärtat armaturer: en perfekt gåva

detta är mitt försök att skapa ett alla hjärtans dag ljus på en hjärtformade vax bas med tre blomma kronblad inbäddade hjärta armaturer och en te-tänd ljus inuti, alla gjorda i vax.Steg 1: Nödvändiga förnödenheter jag hade turen att hitta en hjärtfor...

Revit: Inbäddade Sill/sopa

I detta Instructable visar jag hur att sätta en inbäddad sill i en tegelvägg och sedan sätta det tegelväggen i en staplad vägg. Jag var nyligen arbetar på ett projekt på jobbet som jag behövde för att placera en fönsterbräda (den typ som du hittar i...

Hur man genomför inbäddade Mqtt klient använder W5500 IC.

Hur man genomför inbäddade Mqtt klient använder W5500 IC.Steg 1: Tyger som du måste förbereda. 1. W5500 Inbäddade Ethernet styrelse.-W5500 med Cortex M-serien rekommenderas. Jag använde min anpassade ombord. Min egna ethernet styrelsen ingår W5500 st...

Inbäddade Affordances

Jag spenderar tid att tänka olika sätt att göra produktdesign mer tillgänglig. Tänk om, istället för av en professionell elektronikingenjör, morgondagens teknik skulle kunna utformas av en konstnär? Vad händer om produkter kunde vara funktionellt utf...

Genom att använda Arduino för att kommunicera med inbäddade projekt

bygga en fristående AVR ATMEGA projekt ibland lämnar dig med inte lätt att läsa utdata från projektet. Men du kan använda en Arduino för att fungera som en kommunikation bro mellan projektet inbäddade och datorns Serial Monitor program!Jag är bygga e...

Inbäddade USB penna Stick i tydliga harts

Jag brukade arbeta som gymnasiet media tekniker, där teary eyed studenter skulle hitta mig med sina trasiga USB-minnen. Ordet hade fått att jag kunde hämta data, efter jag hade hjälpt en student som hade span på deras swivel stolar, handtralla en av...

Baka-fri Ice Cream Pie: Inbäddade med Pi

i skolan vi ska ha Pi-dagen paj fester och jag erbjöd sig att ta något. Då Pi dagen paj tävlingen kom upp, och jag visste att jag skulle behöva prova något nytt för tävlingen. Tillfällighet, arbetar mina föräldrar på en Dairy Queen.Dairy Queen = glas...

Testning av en prototyp inbäddade automationssystem.

Detta system hoppas jag att installera i en nära framtid. Jag har här tagit ett videoklipp som visar några av dess funktioner.Steg 1: torr kör.De enda ingångarna har jag utfodring realtid data i systemet är temperatur och ljussensorer. Utgångar för b...

Hur man gör glas marmor med en inbäddad precision bild

jag är en blivande glaskonstnär som ville utnyttja laser gravörens på den lokala TechShop. Jag hade en idé att bädda in en laser etsade bild i mitten av glas marmor med verktyget Epilog laser gravyr. Detta är en ganska cool projekt om du har tillgång...

INBÄDDADE FLEX SENSOR ärm

Flex sensorerna är passiva resistiv enheter som kan användas för att upptäcka bockning eller böjning. Placeringen av en flex sensor på en ärm möjliggör flera program: cykliska push ups, lysa upp en LED eller styrning av MIDI-data genom att böja armbå...