mikrocontroller.net

Forum: FPGA, VHDL & Co. Standardabweichung im FPGA


Autor: Maik Ritter (kiamur)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe mal eine Frage zur Berechnung der Standardabweichung im FPGA. 
Wie würdet ihr da rangehen?

Vielleicht erst einmal zum Hintergrund: Ich habe Signale, die ich durch 
meine 11 bit breites und 10 'Schiebungen' tiefes Schieberegister im FPGA 
im µs-Takt durchjage (vielleicht hat der eine oder andere von euch ja 
schon meinen letzten Beitrag mitverfolgt . . . ). In dem SR ist zum 
größten Teil an einer bestimmten Stelle kein Datensatz, also alles auf 
'0'. Wenn jetzt ein bestimmt definierter Datensatz an dieser Stelle 
auftaucht, dann fange ich an einen µs-Zähler zu starten, der den Abstand 
zum nachsten definierten Datensatz misst. Das geht dann immer so weiter, 
bis Datensätze auftauchen, die nicht mehr die selbe Definition 
beinhalten, aber dennoch vom gleichen Typ sind, und deswegen als 
Datensätze vom selben Typ gekennzeichnet werden sollen. Die Abstände 
zwischen diesen Datensätzen sind zunächst mal im Bereich 3,21 - 3,27 ms.

Ich wollte nun die Abstände der definierten Datensätze sammeln, und aus 
ihnen die Standardabweichung berechnen, um dann immer im Zeitbereich 
'Mittelwert der Abstände +- x*Standardabweichung' nach undefinierten 
Datensätzen suchen, um diese dann dem definierten Typ zuzuordnen.

Da das Ganze nicht immer bei 3,21-3,27 ms Zeitabstand bleiben muss, 
wollte ich eben immer den Mittelwert und die Standardabweichung 
berechnen, um die undefinierten Datensätze in einem bestimmten 
Zeitfenster nach dem letzten definierten Datensatz, welches auf diese 
Werte basiert, suchen.

Ich habe mich bei der Berechnung der Standardabweichung ein wenig an 
dieses Kapitel und die Equation 3-2 in einem eBook gehalten: 
>http://www.dspguide.com/ch2/2.htm <.

Ich habe dann für jedes zu berechnende Element (sum, sum^2, 
sum_of_squares, etc.) integer signale angelegt, und dann alles nach und 
nach, Takt für Takt berechnet.
-- Zunächst die Summe der P2-Impulsspacings bestimmen
        if(state_register = b"000110" and increasing_p1 = '1') then --6
          sum <= srp2(0) + srp2(1) + srp2(2) + srp2(3);-- + srp2(4);
          state_register <= B"000111"; --7
        end if;
        -- Den Mittelwert der Abstände berechnen.
        if(state_register = b"000111") then --7
          mean <= sum / 4;--5;
          state_register <= B"001000"; --8
        end if;
        -- Die Quadrate der Abstände berechnen
        if(state_register = b"001000") then --8
          square0 <= srp2(0)*srp2(0);
          square1 <= srp2(1)*srp2(1);
          square2 <= srp2(2)*srp2(2);
          square3 <= srp2(3)*srp2(3);
          --square4 <= srp2(4)*srp2(4);
          state_register <= B"001001"; --9
        end if;
        -- Die Summe der Quadrate der Abstände berechnen.
        if(state_register = b"001001") then --9
          sum_of_squares <= square0 + square1 + square2 + square3;-- + square4;
          state_register <= B"001010"; --10
        end if;
        -- Das Quadrat der Summe bilden
        if(state_register = b"001010") then --10
          sum_square <= sum * sum;
          state_register <= B"001011"; --11
        end if;
        -- Das Quadrat der Summe der Einzelwerte durch 5 dividieren.
        if(state_register = b"001011") then --11
          sum_square_devided  <= sum_square / 4;--5;
          state_register <= B"001100"; --12
        end if;
        -- Sigma^2 bilden
        if(state_register = b"001100") then --12
          sigma_quad_temp <= sum_of_squares - sum_square_devided;
          state_register <= b"001101"; --13
        end if;
        if(state_register = b"001101") then --13
          sigma_quad <= sigma_quad_temp / 3;
          state_register <= b"001110"; --14
        end if;
        -- Wurzel zieht eingebettete Megafunction (s.o.).
        -- Sigma abspeichern
        if(state_register = b"001110") then --14
          sigma <= conv_integer(sigma_temp);
          state_register <= b"001111"; --15
        end if;

Meine Frage an euch alte Hasen ist nun, wie ihr die Integer ranges der 
einzelnen Variabeln anlegen würdet? Bisher habe ich immer so grob über 
den Daumen gepeilt, und jedem Signal unterschiedliche ranges zugewiesen. 
Die Summe der Abstände muss ja bei weitem nicht so groß sein, wie deren 
Quadrat, usw.

Vielleicht ist das aber auch das Problem, dass ich bei der Zeile 
sum_square <= sum * sum; für sum_square im Simulator nie ein Ergebnis 
bekomme. Da steht dann immer 'X'.

Sollten deswegen die ranges bei allen Variabeln gleich groß sein?

Natürlich bin ich auch für andere Herangehensweisen an dieses Problem 
und für eine herzhafte Diskussion über meine Vorgehensweise offen ;-).

Grundsätzlich möchte ich noch anmerken, dass ich ein recht gutes Gefühl 
bei der Sache habe, so wie ich es mache . . . .

Gruß
Maik

Autor: Kest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dass Du "X" bekommst liegt nicht an "range"s. Eher läuft Deine 
Statemaschine nicht richtig. Bzw. srp2(0/2/3) werden nicht 
initialisiert.

Ansonsten verstehe ich die Frage nicht ganz: wie definiert man ranges? 
Woher sollen wir denn das wissen (okay, zugegeben ich habe jetzt nicht 
ganz durchgestiegen, was gemacht werden muss). Eigentlich schreibst Du 
ja selber, dass Du es Dir schon Gedanken darüber gemacht hast. Rechne 
mal die maximalmögliche Werte aus und da hast Du Integer-Ranges.

So aus der Ferne finde ich es schwer durchzusteigen, was gemacht werden 
soll. Trotzdem viel Erfolg! :-)

Kest

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Maik Ritter (kiamur)

>Ich habe mal eine Frage zur Berechnung der Standardabweichung im FPGA.
>Wie würdet ihr da rangehen?

Genauso wie auf dem Papier. Die Fromel muss halt duchgezigen werden. 
Wobei Division aufwändig wird, Wurzel erst recht.

>Vielleicht erst einmal zum Hintergrund: Ich habe Signale, die ich durch
>meine 11 bit breites und 10 'Schiebungen' tiefes Schieberegister im FPGA

????
Das sind 10 Messwerte a 11 Bit.

>zwischen diesen Datensätzen sind zunächst mal im Bereich 3,21 - 3,27 ms.

>Ich habe dann für jedes zu berechnende Element (sum, sum^2,
>sum_of_squares, etc.) integer signale angelegt, und dann alles nach und
>nach, Takt für Takt berechnet.

Das verbrauch ordentlich Resourcen.

>Natürlich bin ich auch für andere Herangehensweisen an dieses Problem
>und für eine herzhafte Diskussion über meine Vorgehensweise offen ;-).

Was du machst ist alle Arithmetik parallel in Hardware zu giessen. Das 
ist hier Verschwendung. Wenn eine Messung ca 3,2 ms dauert hast du alle 
Zeit der Welt, das per Softcore Prozessor oder State Machine sequentiell 
zu berechnen. Dann brauchst du du nur einen Quadrierer, Dividierer und 
Addierer. Die einzelnen Messwerte legst du sinnvollerweie in einen RAM 
im FPGA.

>Grundsätzlich möchte ich noch anmerken, dass ich ein recht gutes Gefühl
>bei der Sache habe, so wie ich es mache . . . .

Das haben viele, bis sie die Augen geöffnet bekommen . . . ;-)
Jugendliche Naivität.

MFG
Falk

Autor: Maik Ritter (kiamur)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Kest:
>Ansonsten verstehe ich die Frage nicht ganz: wie definiert man ranges?

Naja, ich meine damit, ob ich die ranges so definieren sollte, dass 
jedes Signal seine eigen range bekommt (also range von sum kleiner als 
range von sum^2), oder ob lieber für alle an einer Berechnung 
beteiligten Signale die range des Signals mit der größten range genommen 
werden sollte. Ist ja nur ein Frage, was eure Erfahrungen da so sagen, 
und warum ihr es so machen würdet.

@Falk:
>Genauso wie auf dem Papier. Die Fromel muss halt duchgezigen werden.
 Das habe ich in meinem Code-Ausschnitt auch versucht umzusetzen.

>Wobei Division aufwändig wird, Wurzel erst recht.
Für die Wurzel beutze ich eine vom Megawizard in Quartus II generierte 
Megafunction.
Wenn es zu aufwändig wird, so dass die (kombinatorische) Berechnung 
nicht in einem Takt über die Bühne geht, dann kann ich der Berechnung ja 
auch 2 oder mehr Takte Zeit geben.

>Das sind 10 Messwerte a 11 Bit.
Naja, es ist etwas schwer zu beschreiben, aber ich muss mir immer 
mehrere Datensätze gleichzeitig anschauen, um die bestimmten Datensätze 
zu finden, deren Abstände ich messen möchte. Deswegen ist das 
Schieberegister 10 Schiebungen tief. Es bedeutet nicht, das es von vorne 
bis hinten voll ist mit Messungen. Es sieht z.B. so aus:

  -Y------X- : Y ist gesuchter Datensatz, weil X an Stelle 9 steht.
  -Y----X--- : Y ist kein gesuchten Datensatz, weil X nicht an richtiger 
Stelle steht.

>Das verbrauch ordentlich Resourcen.
Genau, deswegen meine Frage, wie es anders gehen könnte aber das hier . 
. .

>Was du machst ist alle Arithmetik parallel in Hardware zu giessen. Das
>ist hier Verschwendung. Wenn eine Messung ca 3,2 ms dauert hast du alle
>Zeit der Welt, das per Softcore Prozessor oder State Machine sequentiell
>zu berechnen. Dann brauchst du du nur einen Quadrierer, Dividierer und
>Addierer. Die einzelnen Messwerte legst du sinnvollerweie in einen RAM
>im FPGA.

 . . .  kann ich nicht machen, weil die Datensätze in ihrer Reihenfolge 
auf keinen Fall durcheinander kommen dürfen. Damit meine ich nicht nur 
die Datensätze, mit denen Berechnungen durchgeführt werden sollen, 
sondern auch die Datensätze "dazwischen". Es können unter Umständen jede 
µs Datensätze kommen (müssen aber nicht). Um da nicht durcheinander zu 
kommen, lasse ich alle Datensätze durch das Schieberegister laufen (was 
ja sozusagen zwischen 2 Schiebetakten auch ein Speicher ist, da es die 
Werte für ein µs speichert. In den Pausen zwichen den Schiebungen führe 
ich dann die Berechnung der Standardabweichung durch, oder suche nach 
Datensätzen, die ich Markieren möchte.

Letztendlich ist das der Weg, den ich meiner meinung nach gehen muss, um 
nicht das gesamte Konzept meines designs durcheinander werfen zu müssen.

Wenn ihr also die Standardabweichungsberechnung in Hardware parallel 
durchführen müsstet, würdet ihr es dann so ähnlich machen, wie es in 
meinem Codebeispiel obe abgebildet ist, oder habt ihr da noch andere 
Ideen zu?

Gruß
Maik

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Maik Ritter (kiamur)

> . . .  kann ich nicht machen, weil die Datensätze in ihrer Reihenfolge
>auf keinen Fall durcheinander kommen dürfen. Damit meine ich nicht nur

Ja und? Das hat doch damit gar nichts zu tun. Wer sagt, dass du alles 
durcheinanderwürfeln sollst?

>Letztendlich ist das der Weg, den ich meiner meinung nach gehen muss, um
>nicht das gesamte Konzept meines designs durcheinander werfen zu müssen.

Du bist vollkommen engstirning auf ein Konzept fixiert. Keine gute Idee. 
Dann brauchst du ausserdem nicht nach Alternativen fragen.

MFG
Falk

Autor: Maik Ritter (kiamur)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>@ Maik Ritter (kiamur)

>>> . . .  kann ich nicht machen, weil die Datensätze in ihrer Reihenfolge
>>>auf keinen Fall durcheinander kommen dürfen. Damit meine ich nicht nur

>Ja und? Das hat doch damit gar nichts zu tun. Wer sagt, dass du alles
>durcheinanderwürfeln sollst?

Ganz kurz zum RAM: Ich brächte halt ne ganze Menge an RAM, wenn ich 
immer alle Datensätze zwischenspeichern möchte (und das müsste ich ja 
auch mit denen machen, die nicht berechnet werden sollen, damit die 
Reihenfolge und die Abstände untereinander gleich bleibn sollen). Ich 
brächte dann u.U. auch wieder Zeitstempel für jeden datensatz, die mir 
die datenflut nur wieder unnötig aufblähen wurde. Es hat sich halt nach 
anfänglichen, gründlichen Überlegungen herausgestellt, dass das 
Schieberegister Konzept das Beste für dieses Design ist, und deswegen 
muss ich nun damit leben.


>>Letztendlich ist das der Weg, den ich meiner meinung nach gehen muss, um
>>nicht das gesamte Konzept meines designs durcheinander werfen zu müssen.

>Du bist vollkommen engstirning auf ein Konzept fixiert. Keine gute Idee.
>Dann brauchst du ausserdem nicht nach Alternativen fragen.

Och Mensch, nee. Es ist halt so, dass ich eben nicht alles hier 
aufschreiben kann, was mit dem Projekt zusammenhängt, weil es ganz 
einfach den Rahmen sprengen würde. Deswegen sieht es von außen 
vielleicht aus, wie Quatsch, den ich hier fabriziere. Aber bis jetzt 
funktioniert alles wunderbar (sogar problemloser, als erwartet).

Wenn ich jetzt anfange alles in einen Softcore zu gießen, oder wieder 
den RAM rein-designe, den ich schon raus-designed habe, dann ist ja ein 
halbes Jahr Arbeit futsch. Und es geht doch auch so. Meine Fragen waren 
ja grundsätzlich nur, ob ich bei derartigen Berechnungen die Integer 
Signale alle auf die gleiche Range bringen sollte, und wenn ja, warum, 
oder eben nicht, und warum denn dann nicht.

Außerdem habe ich ja auch was von dem 'X' im Simulatorergebnis 
geschrieben, und hatte halt gehofft, dass sich jemand mal kurz den 
Sourcecode oben anschaut, um mir evtl einen Fehler aufdeckt, den ich 
einfach nicht gesehen habe.

Zu diesen Fragen habe ich leider noch nichts gehört. Was ist nicht klar 
daran? Dann versuche ich mich noch deutlicher auszudrücken . . .

Manchmal habe ich so das Gefühl, dass hier alle Fragenden als komplette 
Idioten in einen Topf geworfen werden, und wenn sie es nicht so machen, 
wie ihr es sagt, dann gibt es etwas auf die Mütze. Ich gebe mir schon 
die größte Mühe meine Fragen so genau wie möglich zu stellen, aber ich 
kann eben nicht das komplette Projekt hier darlegen. Deshalb scheint 
vieles für euch aus der Luft gegriffen zu sein, aber es ist in sich 
schon alles recht stimmig. . . .

Naja, bis dann . . . . :-(

Maik

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Maik Ritter wrote:
>         if(state_register = b"000111") then --7

Warum verwendest du kein case? Und ist es wirklich nötig die Zustände 
von Hand zu kodieren?

> Meine Frage an euch alte Hasen ist nun, wie ihr die Integer ranges der
> einzelnen Variabeln anlegen würdet? Bisher habe ich immer so grob über
> den Daumen gepeilt, und jedem Signal unterschiedliche ranges zugewiesen.
> Die Summe der Abstände muss ja bei weitem nicht so groß sein, wie deren
> Quadrat, usw.

Da gibt es zwei Möglichkeiten: entweder wählst du alle Bereiche so, dass 
es nie Überläufe geben kann, oder so dass die Überläufe hinreichend 
unwahrscheinlich sind (durch Simulation mit realistischen Daten 
ausprobieren). Im letzteren Fall kannst du dann noch eine 
Überlauferkennung einbauen, oder damit leben dass ab und zu falsche 
Werte berechnet werden. Kommt drauf an was du erreichen willst.

> Vielleicht ist das aber auch das Problem, dass ich bei der Zeile
> sum_square <= sum * sum; für sum_square im Simulator nie ein Ergebnis
> bekomme. Da steht dann immer 'X'.

Bau doch einfach ein paar entsprechende assertions oder 
report-Statements in den Code ein und prüfe es nach.

Autor: Maik Ritter (kiamur)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Andreas:

>Warum verwendest du kein case? Und ist es wirklich nötig die Zustände
von Hand zu kodieren?

Gute Frage. Ist das Ganze denn jetzt eigentlich schon als 
Zustandsautomat zu sehen (wegen dem state_register)? Die Berechnung der 
Standardabweichung hat sich dann letztendlich so ergeben, wie sie jetzt 
dort steht. Wenn es wirklich so etwas wie ein Zustandsautomat ist, dann 
gibt es glaube ich die Möglichkeit beim definieren der Zustände das 
state_register zu kodieren, richtig? Ich habe mich noch nicht so 
ausführlich mit Zustandsautomaten beschäftigt.
Das mit dem 'if' (und kein case) beruht darauf, dass diese Form der 
bedingten Abarbeitung für mich irgendwie natürlicher ist. Wegen der 
Übersichtlichkeit hatte ich dann aber auch schon überlegt, es umzuändern 
. . .

>Da gibt es zwei Möglichkeiten: entweder  . . . .

Okay, über die range der einzelnen Variabeln habe ich mir schon Gedanken 
gemacht. Das soll natürlich noch alles mit Simulationen überprüft 
werden. Aber würdest du nun raten, das ich jeder Variabeln ihre eigen 
Range zuweisen sollte, oder eben allen Variabeln die größte in der 
Berechnung vorhandene, damit nicht evtl. Daten bei der Konvertierung von 
einer Range-Größe in die andere verloren gehen . . . . .

>Bau doch einfach ein paar entsprechende assertions oder
>report-Statements in den Code ein und prüfe es nach.

Hmmm. okay, dass kann ich ja mal versuchen. Hoffentlich kommt Quartus II 
mit diesen Statements auch klar . . . .

Gruß
Maik

Autor: Jürgen Schuhmacher (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>@ Maik Ritter (kiamur)
>>Ich habe mal eine Frage zur Berechnung der Standardabweichung im FPGA.
>>Wie würdet ihr da rangehen?
> Genauso wie auf dem Papier. Die Fromel muss halt duchgezigen werden.

Definitiv nicht! Gerade beim FPGA Design kommt es darauf an, die 
Mathemtik so umzuformen, daß einfach gerechnet werden kann und nicht, 
daß eine einfach mathematische Darstellung des Sachverhaltes vorliegt 
(das Ziel jeder Umformung).

Die Bildung der benötigten Partialsummen für Varianz und Sigma kann je 
Term in einem einzigen Schritt erfolgen, ohne den Umweg über den 
Mittelwert. Dazu bemühe man mal sein Mittelstufenwissen aus Klasse 8 und 
forme die Gleichung passend um.

Wenn man es drauf anlegt, möglichst schnell zu sein, ginge es auch in 
einem einzigen Formelschritt, allerdings dann wieder mit entsprechenden 
Resourcen. Ich würd zu einer pipeline raten, die 4x clocked (wegen der 4 
Elemente).

>Wobei Division aufwändig wird, Wurzel erst recht.

Ansichtssache. Die Division und indirekt auch die Wurzel erfolgen 
mittels Partialbruchzerlegung und benötigen nicht mal zwingend 
Multiplier.

Der Megawizzard hat beides parat: Je nach Breite der benötigten 
Datenworte gehen da einige clocks drauf, wenn man es pipelined bauen 
möchte. In einem konkreten Beispiel eines Cyclnoe II bei 50MHz brauchte 
der 48Bit Divider 14 clocks und die Wurzel 6.

Da Du genug Zeit hast, wirst Du keinen besonders breiten Divider 
benötigen. Must aber dann eine Remainderbehandlung nachschalten.

Autor: pumpkin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das haben viele, bis sie die Augen geöffnet bekommen . . . ;-)
> Jugendliche Naivität.

Oh man, so ein Pfosten.

pumpkin

Autor: Suggel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Das haben viele, bis sie die Augen geöffnet bekommen . . . ;-)
>> Jugendliche Naivität.

>Oh man, so ein Pfosten.

Es gibt eben viele (hier), die schon von Beginn an alles wussten. Gelobt 
seien sie, da sie uns, die wir naive Fragen stellen, die Augen öffnen.

(bitte aber erst wieder Morgen, für heute mache ich die Augen zu)

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ pumpkin (Gast)

>> Das haben viele, bis sie die Augen geöffnet bekommen . . . ;-)
>> Jugendliche Naivität.

>Oh man, so ein Pfosten.

[ ] Du hast den Smily gesehen.
[ ] Du kennst den Unterschied zwischen Dummheit und Naiviät.
[X] Du bist eine Mimose.

MfG
Falk

Autor: Maik Ritter (kiamur)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Jürgen:

>Definitiv nicht! Gerade beim FPGA Design kommt es darauf an, die
>Mathemtik so umzuformen, daß einfach gerechnet werden kann und nicht,
>daß eine einfach mathematische Darstellung des Sachverhaltes vorliegt
>(das Ziel jeder Umformung).

>Die Bildung der benötigten Partialsummen für Varianz und Sigma kann je
>Term in einem einzigen Schritt erfolgen, ohne den Umweg über den
>Mittelwert. Dazu bemühe man mal sein Mittelstufenwissen aus Klasse 8 und
>forme die Gleichung passend um.

Ich gebe gerne zu, dass meine mathematischen Fähigkeiten leider nicht so 
gut sind, wie sie sein könnten (woran das liegt muss hier ja nicht 
diskutiert werden . . . ). Aus diesem Grund habe ich mir mal die 
Standardabweichungsberechnung mit diesem (wie ich finde sehr gut 
geschriebenen) eBook draufgeschafft, und habe versucht die Berechnung 
mit Hilfe der dort vorgestellten 'Equation 3-2' (siehe Link aus meinem 
Eröffnungsthread) im FPGA umzusetzen.
Nun vertshe ich nicht so recht, ob du auch diesen Weg gegangen wärst, 
oder ob du es anders gemacht hättest. Du erwähnst z.B. die 'Bildung der 
benötigten Partialsummen für Varianz und Sigma'. Da kann ich mir ehrlich 
gesagt nicht so viel drunter vorstellen (wie gesagt, mathematisch hapert 
es etwas bei mir). Kannst du da vielleicht noch mal etwas genauer drauf 
eingehen, speziell, wie du das im FPGA umsetzen würdest.

Ansonsten vielen Dank für deinen konstruktiven Beitrag!

Gruß
Maik

Autor: Credo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>@ pumpkin (Gast)
>>> Das haben viele, bis sie die Augen geöffnet bekommen . . . ;-)
>>> Jugendliche Naivität.
>>Oh man, so ein Pfosten.
>
>[ ] Du hast den Smily gesehen.
>[ ] Du kennst den Unterschied zwischen Dummheit und Naiviät.
>[X] Du bist eine Mimose.

Meine Fresse! Falk Brunner ist ein :

[ ] Selbstdarsteller
[ ] Schwätzer
[ ] Forenvollmüller
[ ] Schreiber wertvoller Beiträge

Bitte ausdrucken, ankreuzen und Faxen!

Autor: Ludger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>finde sehr gut geschriebenen) eBook draufgeschafft, und habe
>versucht die Berechnung mit Hilfe der dort vorgestellten 'Equation 3-2'

Auf welches book beziehst Du Dich hier ?

Autor: Maik Ritter (kiamur)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Auf welches book beziehst Du Dich hier ?

Auf das, auf dessen Kapitel ich in meinem Eröffnungsbeitrag gelinkt hab:

>http://www.dspguide.com/ch2/2.htm <.

Die Hauptseite dieses Buches ist dann : > http://www.dspguide.com/ <.

Ich finde das sehr gut geschrieben, und hat mir schon einiges an 
Verständnis zu der Thematik gebracht.

Vielleicht noch der Vollständigkeit halber: Die Berechnung der 
Standardabweichung in meinem Projekt scheint zu funktionieren. Habe die 
Simulatorergebnisse jetzt mal nachgerechnet, und es haut so hin. leider 
kann ich immer noch nicht alle Signale beobachten, da der Simulator 
immer nur 'X' rausspuckt. Ergebnisse, die auf diese Zwischenergebnis 
bauen, sind dann aber wieder richtig simuliert. . . .
Im FPGA scheint es dann auch zu klappen. Das muss allerdings noch heftig 
getestet werden . . .

Gruß
Maik

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Credo (Gast)

Kannst du eigentlich noch mehr als billig kopieren und labern?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>@ Credo (Gast)
>Kannst du eigentlich noch mehr als billig kopieren und labern?

[x] Selbstdarsteller
[ ] Schwätzer
[x] Forenvollmüller
[ ] Schreiber wertvoller Beiträge

!

und jetzt bitte zurück zum Thema ...

Autor: pumpkin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> @ Credo (Gast)
>
> Kannst du eigentlich noch mehr als billig kopieren und labern?

Wie war das mit der "jugendlichen Naivität"? "Manche lernens nie . . . 
;-)", nicht wahr Falk? Geh spielen!

pumpkin

Autor: Maik Ritter (kiamur)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mensch Leute . . . .

Kann man für solche Dinge nicht einen extra Thread öffnen? Ich freue 
mich immer, das jemand was zum Thema gesagt hat, und dann so was . . . .

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.