VHDL-Forum

 
Sie sind nicht eingeloggt.
LoginLogin Kostenlos anmeldenKostenlos anmelden
BeiträgeBeiträge MembersMitglieder SucheSuche HilfeHilfe
VotesUmfragen FilesDateien CalendarKalender BookmarksBookmarks
ALU

Anfang   zurück   weiter   Ende
Autor Beitrag
Jordi
Gast
New PostErstellt: 14.11.11, 09:58  Betreff: ALU  drucken  weiterempfehlen Antwort mit Zitat  

Hi,
ich versuche gerade ein ALU mit VHDL zu beschreiben, der besteht aus 2 Eingänge plus ein Steuersignal, und 1 Ausgang. Der sollte 8 operationen durchführen, u.a. shiften (<<3). Leider verstehe ich nicht, wie man das shiften durchführen sollte.
So sieht meine Beschreibung grad aus:

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity alu is

port (
a : in std_logic_vector(7 downto 0);
b : in std_logic_vector(7 downto 0);
s : in std_logic_vector(2 downto 0);
c : out std_logic_vector(7 downto 0)
);
end alu;

architecture five of alu is

signal one : std_logic_vector(7 downto 0);
signal three : std_logic_vector(7 downto 0);

begin

one <= "00000001";
three <= "00000011";

c <= "00000001" when s = "000" and (unsigned(a) > unsigned(b)) else
"00000000" when s = "000" and (unsigned(a) <= unsigned(b)) else
"00000001" when s = "001" and (unsigned(a) = unsigned(b)) else
"00000000" when s = "001" and (unsigned(a) /= unsigned(b)) else
std_logic_vector(signed(a) + signed(one)) when s = "010" else
std_logic_vector(signed(a) + signed(b)) when s = "011" else
a and b when s = "100" else
a or b when s = "101" else
std_logic_vector(b sla unsigned(three)) when s = "110" else
std_logic_vector(unsigned(a) mod unsigned(b)) when s = "111" else
"--------";
end five;

Die Zeile mit "std_logic_vector(b sla unsigned(three)) when s = "110"" ist mein Verscuh für den shift.

Hat jemand eine Idee, wie man dies so durchführen könnte? Wäre sehr sehr dankbar!

Viele Grüße,

Jordi
nach oben
Sortierung ndern:  
Anfang   zurück   weiter   Ende
Seite 1 von 1
Gehe zu:   
Search

powered by carookee.com - eigenes profi-forum kostenlos

Design © trevorj