Vhdl "/" Operator

Gast #3163977
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;
Gast #3163990
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);
Moderator (Firma: Titel) Persönliche Seite #3164026
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?
Gast #3164887
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
Moderator (Firma: Titel) Persönliche Seite #3164926
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren