Hardware Reference
In-Depth Information
N S
_
f i =
f ij
(4.39)
j=1
(N S - Spaltenanzahl). Das Gesamtnetzwerk einer Zeile i ist genau dann ge-
sperrt (f i = 0), wenn die Eingabebits aller Spalten übereinstimmen. Ein Pull-
Up-Element erzeugt in diesem Fall den Vergleichswert v i = 1. Die Gesamtaus-
gabe besteht in der Regel aus zwei Informationseinheiten. Das ist zum einen
ein binäres Signal »hit«, das aktiviert wird, wenn das Suchmuster im Speicher
steht, und zum anderen die Adresse der ersten Zeile, in der das Suchmuster
gefunden wird.
Für die Modellierung eines synchronen Assoziativspeichers bietet sich ge-
nau wie für den FIFO im Vorabschnitt eine objektorientierte Modellierung
an. Das Modell der Speichermatrix und die Schreib- und die Lesemethode
unterscheiden sich nicht von der eines einfachen Schreib-Lese-Speichers und
seien wie die in Abschnitt 3.4.3 definiert:
subtype tDaten is std_logic_vector(... downto 0 );
type tMem is array (natural range <>) of tDaten;
subtype tAdr is tUnsigned(... downto 0 );
function read(Mem: tMem; adr: tAdr) return tDaten;
procedure write(x: tDaten, adr: tAdr,
signal Mem: inout tMem);
Zusätzlich benötigt das Modell eines Assoziativspeichers eine Suchmethode
zur Bestimmung der Adresse der ersten Speicherzeile, in der der Eingabewert
steht:
procedure search(x: tDaten; signal adr: out tAdr;
signal hit: out std_logic; signal Mem: inout tMem) is
begin
for idx in Mem'range loop
if Mem(idx)=x then
hit <= '1' ;
adr <= to_tUnsigned(idx, adr'length);
return ;
end if ;
end loop ;
hit <= '0' ;
adr <= ( others => '0' );
end procedure ;
)WEB-Projekt:P4.4/AsRAM_pack.vhdl
Auch wenn der Vergleich in der Hardware parallel erfolgt, muss er im Simu-
lationsmodell sequenziell nachgebildet werden.
 
Search WWH ::




Custom Search