kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




Verwendung von Look-Up-Tabellen

(EN google-translate)

(PL google-translate)


Anstatt Logische Verknüpfungen über typische Digitale Bausteine, wie UND-Gatter, NICHT-Gatter oder ODER-Gatter zu beschreiben, ist es oft ein direkterer Weg, eine Wahrheitstabelle auf den FPGA zu übertragen, indem ein Look-Up-Table (LUT) verwendet wird.

Als beispielhafte Umsetzung, bietet sich an, den Zwei-Bit-Vergleicher aus Kapitel 5.3 mit Hilfe eines LUT-Elementes aus der UNISIM-Library aufzubauen.

Wieder wird das ursprüngliche Projekt in einen Unterordner kopiert und die betreffenden Programmteile ausgetauscht:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity mustervergleich is
    Port ( A1 : in  STD_LOGIC;
           A0 : in  STD_LOGIC;
           B1 : in  STD_LOGIC;
           B0 : in  STD_LOGIC;
           C : out  STD_LOGIC);
end mustervergleich;

architecture Behavioral of mustervergleich is
begin
    C <= (A1 xnor B1) and (A0 xnor B0);
end Behavioral;

Code 0-1: Ursprünglicher Quelltext aus Kapitel 5.3 ohne Verwendung einer LUT.

Umsetzung mit LUT

LUT4 - Look-Up-Table mit 4 Eingängen und einem Ausgang, Quelle: spartan3e_hdl.pdf.

Bild 0-1: LUT4 - Look-Up-Table mit 4 Eingängen und einem Ausgang, Quelle: spartan3e_hdl.pdf.

Die gewünschte Logik kann im Bereich "generic map" über ein Initialisierungsbitmuster der vordefinierten Initialisierungs-Variablen "INIT" vorgegeben werden.

Man gibt einfach die Bitfolge der Ausgänge an, die in ihrer natürlichen Reihenfolge den Eingangskombinationen zugeordnet werden sollen (vergl. nachfolgende Tabelle):

Zuordnungstabelle zwischen Eingängen und den in INIT gemerkten Werten für den Ausgang.

Bild 0-2: Zuordnungstabelle zwischen Eingängen und den in INIT gemerkten Werten für den Ausgang.

In unserem Fall wäre die für INIT vorzugebende Bitabfolge: ACHTUNG: MSB zuerst! - wg. Symmetrie hier nicht erkennbar.

INIT => "1000010000100001"

Code 0-2: Bitabfolge für INIT

Projektumsetzung

muster_lut.zip - Xilinx ISE 9.1 - Projekt zur Verwendung eines LUT4-Elements zur Realisierung eines Zwei-Bit-Vergleichers.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

library UNISIM;
use UNISIM.VComponents.all;

entity mustervergleich is
    Port ( A1 : in  STD_LOGIC;
           A0 : in  STD_LOGIC;
           B1 : in  STD_LOGIC;
           B0 : in  STD_LOGIC;
           C : out  STD_LOGIC);
end mustervergleich;

architecture Behavioral of mustervergleich is
begin
    LUT4_instanz : LUT4
        generic map ( INIT => "1000010000100001" )
        port map (O => C,I0 => A0,I1 => A1,I2 => B0,I3 => B1);
end Behavioral;

Code 0-3: mustervergleich.vhd - VHDL-Quelltext zur Realisierung des Zwei-Bit-Vergleichers mit einem LUT4-Element.

Die Constraints und die Hardware-Beschaltung sind die gleichen, wie im ersten Projekt unter Kapitel 5.3.