Hallo, kann mir jemand sagen wofür und wie der / Operator in VHLD definiert ist? Bzw. ist er in der Praxis einsetzbar? Viele Grüße Niklas
Was heißt in der Praxis? In der Simulation geht alles. Auf der Hardware im Normalfall erst mal nur Division durch 2^n, weil das Verschieben ist. Für echte Division braucht man etwas mehr...
Also ich will einfach zwei 3-bit Zahlen im Zweierkomplement dividieren. Ausgang hat 4-bit und bei einer division mit 0 soll der maximale positive Wert ausgegeben werden. Die Simulation klappt einwandfrei. Allerdings war ich mir jetzt nicht sicher ob das dann auch auf dem PLD funktioniert
1 | entity divide is |
2 | port( A, B : in std_logic_vector(2 downto 0); |
3 | Z : out std_logic_vector(3 downto 0) ); |
4 | end divide; |
5 | |
6 | architecture behavior of divide is |
7 | begin
|
8 | main: process(A, B) |
9 | variable value1: signed(2 downto 0); |
10 | variable value2: signed(2 downto 0); |
11 | begin
|
12 | if B = "000" then |
13 | Z <= "0111"; |
14 | else
|
15 | value1 := signed(A); |
16 | value2 := signed(B); |
17 | Z <= std_logic_vector(resize(value1,4) / resize(value2,4)); |
18 | end if; |
19 | end process main; |
20 | end behavior; |
Jetzt noch eine Frage ich benutze die Softwar "Lattice Diamond" wieso darf in der Simulation die Eingänge nicht direkt Signed() sein? Sodern muss std_logic_vector sein= Oder mache ich nur etwas falsch? Oder ist es vorgeschrieben Inputs sidn immer vom Typ "std_logic"?
1 | port( A, B : in signed(2 downto 0); |
Niklas schrieb: > Allerdings war ich mir jetzt nicht > sicher ob das dann auch auf dem PLD funktioniert Was für ein PLD? Zur Division: wie schnell muss die sein? Woher kommen die Daten? Wohin geht das Ergebnis? Was willst du machen? Wenn du ein paar Takte Zeit hast, mach es so: http://www.lothar-miller.de/s9y/archives/29-Division-in-VHDL.html Wenn du ein großes FPGA hast und unbedingt kombinatorisch rechnen willst: Beitrag "Re: mod Operation" Niklas schrieb: > Oder mache ich nur etwas falsch? Vermutlich. > Oder ist es vorgeschrieben Inputs sidn immer vom Typ "std_logic"? Nein. Welchen Fehler bekommst du? Wie sieht die Testbench aus?
Da ganze ist auf einem Testboard - um VHDL zu lernen (Digitaltechnik in der Praxis anzuwenden). Also Eingangszahlen per Taster erzeugen auf LEDs ausgeben. Ich habe einen MachX02(LCMXO2-256HC-4TG100C -http://www.latticesemi.com/products/cpld/machxo2/index.cfm) Für mein Verständnis was wird auf dem PLD gemacht, wenn ich / benutze? Vielen Dank schonmal Niklas
Du kannst dir das selber anschauen, was die Synthese daraus macht. Lattice liefert Synplify mit. In Synplify kannst du einen "RTL-View" und einen "Technology-View" anschauen. Dort siehst du, wie die von dir beschriebene Funktion im Chip realisiert wird. Spiel einfach mal ein bisschen damit rum
Niklas schrieb: > Für mein Verständnis was wird auf dem PLD gemacht, wenn ich / benutze? Es wird eine kombinatorische Division gemacht, weil das Ergebnis ja sofort und "am Stück" fertig sein muss. Niklas schrieb: > Also ich will einfach zwei 3-bit Zahlen im Zweierkomplement dividieren. Ich würde die möglichen Ergebnisse in einem RAM ablegen und die beiden Eingangswerte als Adresse/Index dort anlegen... > zwei 3-bit Zahlen im Zweierkomplement dividieren. Dir ist klar, dass da sehr oft (in der Hälfte der Fälle) 0 herauskommt? > zwei 3-bit Zahlen im Zweierkomplement dividieren. > Ausgang hat 4-bit Sicher?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.