Klausur Juli 2009

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Klausur Juli 2009
Aufgabe 4 (VHDL)
In Aufgabe a) ist eine Entity-Beschreibung in VHDL verlangt mit dem Hinweis, dass alle Ein- und Ausgänge vom Typ std_logic_vector sein sollen. Bei den beiden 16-bit-Operanden ist das ja logisch, aber was ist mit dem Eingang für die gewünschte Operation? Müsste man dafür nicht den Typ String wählen? Und wie geht man damit um, dass die Operation „OR“ nicht wie alle anderen 3, sondern 2 Stellen hat?

Hier mein bisheriger Lösungsvorschlag zu a) und b):

-- a)
entity mikroprozessor is
  port(
     operand1, operand2: in std_logic_vector (15 downto 0);
     operation: in string (0 to 2);
     ergebnis: out std_logic_vector (15 downto 0)
  );
end mikroprozessor;
-- b)
architecture arithmetik of mikroprozessor is
  begin
     process(operand1, operand2, operation) is
        begin
           case operation is
              when "ADD" =>
                 ergebnis <= operand1 + operand2;
              when "SUB" =>
                 ergebnis <= operand1 - operand2;
              when "MUL" =>
                 ergebnis <= operand1 * operand2;
              when "AND" =>
                 ergebnis <= operand1 and operand2;
              when "_OR" => -- wie geht das schöner?
                 ergebnis <= operand1 or operand2;
              when "XOR" =>
                 ergebnis <= operand1 xor operand2;
              when others =>
           end case;
     end process;
end architecture;

Was ist hier gemeint? processes, functions und procedures?


String gibt es nicht als vordefinierten Datentyp. Auch Character wär ziemlich ineffizient.
Typischerweise sind “AND” “SUB” etc nur Mnemonics und sind entsprechend effizient codiert.

1 Like