2017-06-29 5 views
-1

Ich benutze Altera De0 Nano Soc FPGA und Quartus 16,1 Lite Edition. Nach einer Suche im Internet fand ich, dass sin, cos und atan Alteras CORDIC IP-Core kann direkt verwendet werden. Und auch gefunden Nachschlagetabelle (LUT) kann für sin oder cos verwendet werden (meist in Google verfügbar), aber wie man sin inverse (ARCSIN) in VHDL bekommen? Ich habe eine sin und cos Nachschlagetabelle gefunden, gibt es eine Möglichkeit, sin inverse zu generieren?Wie berechnet man sin inverse (arcsin) in VHDL?

+0

kann mir jemand wenigstens einen Hinweis geben? gib mir einfach keine negativen punkte? weil ich hier feststecke, wenn jemand, der dies liest und mir einen anweis gibt, hilfreich sein wird, meine projektaufgabe fortzusetzen, ich bin neu bei fpga vhdl funktionen, die arcsin, cosine in berechnungen verwendet. – komto909

+0

Ist das eine Hausaufgabe oder so? Jemand fragte vor 2 Tagen über die gleiche Frage [hier] (https://stackoverflow.com/questions/44762660/how-to-use-sin-arcsin-functions-in-vhdl-quatus-2-16-1-lite) – JHBonarius

Antwort

1

Ja, es ist möglich, eine Lookup-Tabelle für arcsin zu erzeugen.

1) Ermitteln Sie die Eingabegenauigkeit, dh wie viele Werte Sie in Ihrer Nachschlagetabelle behalten möchten. Zum Beispiel müssen Sie 11 Werte speichern, wenn Ihre Genauigkeit 0,1 ist.

arcsin(0), arcsin(0.1), arcsin(0.2), ..., arcsin(1). 

2) die Ergebnisse der arcsin Funktionen finden. Here ist eine Quelle, die ich durch googlen gefunden habe.

arcsin(0) = 0 
arcsin(0.1) = 5.7 
arcsin(0.2) = 11.5 
... 
arcsin(1) = 90 

3) Bestimme die Ausgangsgenauigkeit.

Wenn die Genauigkeit 1 ist, werden alle Werte auf ganze Zahlen gerundet.

arcsin(0.1) = 6 
arcsin(0.2) = 12 

Wenn die Genauigkeit 0,5 ist, sind die Ergebnisse wie folgt. Die Ausgabe benötigt 9-Bit-Größe für diese Genauigkeit. 8 Bits sind für den ganzzahligen Teil und 1 Bit ist für den Bruchteil.

arcsin(0.1) = 5.5 
arcsin(0.2) = 11.5 

4) Karte Eingangswerte an Adressen der Nachschlagtabelle. Zum Beispiel sollte es für 0,1 Genauigkeit wie folgt sein. Dieses Beispiel erfordert keine zusätzliche Nachschlagetabelle oder große Logik für die Adresszuordnung.

0 -> 0 
0.1 -> 1 
0.2 -> 2 
... 
1 -> 10 

5) diese Lookup-Tabelle wie die, die in VHDL Implementieren Sie für sin oder cos gefunden haben.

+0

Vielen Dank, es funktioniert in der Weise, die Sie erwähnt haben. – komto909

0

Ja, gibt es.

Zum Beispiel mit CORDIC ... Eine meiner ersten Treffer bei Google: A survey of CORDIC algorithms for FPGA based computer

+0

CORDIC scheint hart, wissen Sie, wo eine bessere Lookup-Tabelle, eine VHDL-Datei zu finden? – komto909

+0

@ komto909 Was Sie erreichen wollen, ist sehr schwierig.Sie sollten entweder den ganzen Weg gehen (lernen über Cordic, evaluieren verschiedene Implementierungen, etc) oder gar nicht gehen (wählen Sie einen anderen Ansatz, z. B. CPU) ... – JHBonarius

Verwandte Themen