Hallo, kann mir jemand erklären, wie ich mit VHDL zwei Binärvektoren miteinander multiplizieren kann? Zusätzlich müsste ich die einzelnen Ziffern dann auf einer 4 Segmentanzeige ausgeben. Wenn die Zahl mehr als 4 Ziffern hat, müsste ich die Ausgangssignale einfach auf '1111' setzen, damit ein FFFF in den Anzeigen dargestellt werden. Hat jemand ne Idee, wie ich das Ergebnis der Multiplikation auf 4 Ziffern aufteilen kann? Oder wie ich z.B. einen Binärvektor in einen Integer umwandeln kann, dann mit dem Wert multiplizieren kann und dann die 4 Ziffern des Ergebnisses wieder in einen Binärvektor umwandeln kann? Gruß Holger
Ich behaupte mal ganz frech:
1 | signal res : std_logic_vector(15 downto 0); |
2 | signal op1 : std_logic_vector( 7 downto 0); |
3 | signal op2 : std_logic_vector( 7 downto 0); |
4 | |
5 | res <= op1 * op2; |
So einfach multipliziert man :)
Na das probier ich dann mal aus. Aber wie könnte ich das Ergebnis nun auf 4 Ziffern aufteilen?
Kommt drauf an was du mit Ziffern meinst. Hexadezimal: Ganz einfach, sollte sich in wirklich jedem Tutorial zu VHDL finden. Dezimal: Nicht so einfach, brauchst Division und Modulo.
Hallo Holger! Die Aufteilung für Hex erfolgt ungefähr so:
1 | digit0 <= result(3 downto 0); |
2 | digit1 <= result(7 downto 4); |
3 | digit2 <= ... |
Rick
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.