Forum: FPGA, VHDL & Co. Vhdl "/" Operator


von Niklas (Gast)


Lesenswert?

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

von Marius W. (mw1987)


Lesenswert?

Division?

Gruß
Marius

von Christian R. (supachris)


Lesenswert?

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...

von Niklas (Gast)


Lesenswert?

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;

von Niklas (Gast)


Lesenswert?

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);

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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?

von Niklas (Gast)


Lesenswert?

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

von Schlumpf (Gast)


Lesenswert?

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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.