DE19501226A1 - Field programmable gate array element for the implementation of register files and associative memories - Google Patents

Field programmable gate array element for the implementation of register files and associative memories

Info

Publication number
DE19501226A1
DE19501226A1 DE1995101226 DE19501226A DE19501226A1 DE 19501226 A1 DE19501226 A1 DE 19501226A1 DE 1995101226 DE1995101226 DE 1995101226 DE 19501226 A DE19501226 A DE 19501226A DE 19501226 A1 DE19501226 A1 DE 19501226A1
Authority
DE
Germany
Prior art keywords
signal
crr
programmable logic
cell
bit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE1995101226
Other languages
German (de)
Inventor
Gregory S Snider
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HP Inc
Original Assignee
Hewlett Packard Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE19501226A1 publication Critical patent/DE19501226A1/en
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17704Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form the logic functions being realised by the interconnection of rows and columns

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Logic Circuits (AREA)

Abstract

A programmable logic cell for implementing RAMs, content-addressable-memories, and multiported register files in programmable gate arrays combines the functions of a memory (102) and a comparator (104) in a small number of gates. The programmable logic circuit includes a multiplexing circuit (103) that permits one of the inputs to the comparator (104) to be switched between the data stored in the memory cell (100) and an external data signal. The programmable logic circuits can be connected together in a two-dimensional array together with decoders to implement a small RAM, content-addressable-memory or a multiported register file. <IMAGE>

Description

Die vorliegende Erfindung bezieht sich auf integrierte Schaltungen und insbesondere auf eine verbesserte Archi­ tektur für programmierbare logische Arrays.The present invention relates to integrated Circuits and in particular on an improved Archi architecture for programmable logic arrays.

Zu Zwecken dieser Erörterung ist eine programmierbare Logik als ein digitaler Schaltungsaufbau einer festen Anschlußmög­ lichkeit definiert, die durch einen Benutzer konfiguriert werden kann, um andere digitale Systeme willkürlicher Topo­ logien schnell zu emulieren. Sie kann verwendet werden, um sowohl schnelle logische Simulatoren als auch konfigurier­ bare Rechnermaschinen zu erzeugen, die in der Lage sind, Su­ percomputer bei bestimmten Aufgaben für einen Bruchteil der Kosten zu übertreffen. Programmierbare logische Systeme, die in der Lage sind, große digitale Schaltungen (mit Hunderttausenden von Gattern) zu emulieren, sind teuer, bei typi­ schen Kosten in der Größenordnung von zwei bis vier Dollar pro emuliertem Gatter, und erfordern eine große Anzahl inte­ grierter Schaltungen, die über eine Vielzahl komplexer Schaltungsplatinen verteilt sind.Programmable logic is for the purposes of this discussion as a digital circuit structure of a fixed connection defined by a user can become arbitrary topo to other digital systems emulate logic quickly. It can be used to both fast logic simulators and configurable to generate bare computer machines that are able to Su per computer for certain tasks for a fraction of the Exceed costs. Programmable logic systems that are capable of large digital circuits (with hundreds of thousands of gates) are expensive, with typi costs of the order of two to four dollars per emulated gate, and require a large number of inte ized circuits that have a variety of complex Circuit boards are distributed.

Eine Klasse programmierbarer Logik basiert auf der Technolo­ gie Feld-programmierbarer Gatterarrays (FPGA-Technologie FPGA = Field Programmable Gate Array). Dieser Lösungsansatz verwendet eine Anzahl von FPGAs, die in einer festen Topo­ logie miteinander verbunden sind. Jedes FPGA umfaßt zwei Ty­ pen von Betriebsmitteln: (1) eine Anzahl programmierbarer logischen Zellen (PLCs; PLC = Programmable Logic Cells), die programmiert oder konfiguriert werden können, um eine spezi­ fische logische Funktion durchzuführen (wie z. B. "UND" oder "EXCLUSIV ODER"); und (2) Signalführungsmittel, die program­ miert werden können, um die logischen Zellen untereinander und mit externen Eingangs-/Ausgangs-Anschlußstiften zu ver­ binden. Das programmierte FPGA bildet somit eine brauchbare logische Schaltung, die eine Teilmenge des gesamten logi­ schen Systems darstellt, das simuliert werden soll. Die ge­ samte Menge der FPGAs zusammengenommen simuliert dann funk­ tionell das gewünschte logische System. Da die FPGAs in die­ sen Architekturen feste physikalische Verbindungen unterei­ nander aufweisen, die nicht geändert werden können, erfor­ dert das Simulieren eines logischen Systems eine Abbildung der Schaltung für das interessierende logische System auf die miteinander verbundenen FPGAs derart, daß die logischen Funktionen und Verbindungen der ursprünglichen Schaltung exakt durch die Programmierung der FPGAs dargestellt werden. Eine schnelle Simulation ist möglich, da die logischen Zel­ len in den FPGAs ihre Berechnungen parallel durchführen, wo­ bei sie ihre Ergebnisse über das Signalführungsnetzwerk un­ tereinander übertragen.A class of programmable logic is based on the technology of field-programmable gate arrays (FPGA technology FPGA = Field Programmable Gate Array). This approach uses a number of FPGAs that are interconnected in a fixed topology. Each FPGA includes two types of equipment: ( 1 ) a number of programmable logic cells (PLCs) that can be programmed or configured to perform a specific logic function (such as "AND" or "EXCLUSIVE OR"); and (2) signal routing means that can be programmed to connect the logic cells to each other and to external input / output pins. The programmed FPGA thus forms a usable logic circuit that represents a subset of the entire logic system that is to be simulated. The total amount of FPGAs taken together then functionally simulates the desired logical system. Since the FPGAs in these architectures have fixed physical connections to one another that cannot be changed, the simulation of a logical system requires a mapping of the circuit for the logical system of interest to the interconnected FPGAs such that the logical functions and connections of the original circuit can be represented exactly by programming the FPGAs. A fast simulation is possible because the logic cells in the FPGAs perform their calculations in parallel, where they transmit their results to one another via the signal routing network.

Die Flexibilität von FPGA-Systemen macht es möglich, schnell Prototypen neuer logischer Entwürfe ohne den Aufwand des Aufbauens des Entwurfs aus diskreten Komponenten oder des Herstellens des Entwurfes in einer maßgefertigten integrier­ ten Schaltung zu erstellen. Diese Flexibilität wird jedoch nicht ohne Mehraufwand erreicht. Da ein FPGA dazu bestimmt ist, eine große Vielfalt von logischen Entwürfen, die nicht von vornherein bekannt sind, zu unterstützen, muß die Archi­ tektur eines FPGAs eine Signalführungs- und Logik-Funktiona­ lität einschließen, die wahrscheinlich nicht in allen Anwen­ dungen zu verwenden ist. Außerdem sind Universal-FPGA-Be­ triebsmittel häufig eine schlechte Anpassung an bestimmte Schaltungstypen. Daher tendiert der Wirkungsgrad einer FPGA-Betriebsmittel-Benutzung für eine gegebene Anwendung dazu, verglichen mit dem, der mit einer maßgeschneiderten integrierten Schaltungsimplementierung erreicht werden kann, gering zu sein. Dieser Verlust an Wirkungsgrad wird gewöhn­ lich durch die Flexibilität der Vorrichtung gemildert. Je­ doch existieren einige digitale Schaltungen, die einen der­ art schlechten Wirkungsgrad zeigen, wenn sie auf ein herkömm­ liches FPGA abgebildet werden, das die Implementierung der­ selben in einem FPGA oder einem System von FPGAs unzweckmä­ ßig ist.The flexibility of FPGA systems makes it possible to be quick Prototype new logical designs without the hassle of Building the design from discrete components or Creating the design in a custom integrier circuit. However, this flexibility not achieved without additional effort. Because an FPGA is meant to is, a wide variety of logical designs that are not Archi. must be known from the start FPGA architecture a signal routing and logic function lity that is unlikely in all applications is to be used. In addition, universal FPGA-Be often poor adaptation to certain means Circuit types. Therefore, the efficiency of one tends FPGA resource usage for a given application compared to the one with a bespoke integrated circuit implementation can be achieved  to be minor. This loss of efficiency becomes common mitigated by the flexibility of the device. Each but there are some digital circuits that are one of the kind of show poor efficiency if you rely on a conventional FPGA that represent the implementation of the same in an FPGA or a system of FPGAs is ugly.

Insbesondere sind mehrtorige Registerdateien und Assozia­ tivspeicher (CAMs; CAM Content-Addressable Memories) zwei Schaltungstypen, die mit einem schlechten Wirkungsgrad auf kommerziell erhältliche FPGAs abbilden. Dennoch sind diese Schaltungstypen wichtige Komponenten in vielen logischen Systemen. Wenn sie mit reiner Boolscher Logik implementiert sind, erfordern Assoziativspeicher und mehrtorige Register­ dateien große Gatteranzahlen. Z.B. erfordert eine 80-Bit breite Registerdatei von 96 Registern mit 4 Schreibeingängen und 8 Leseeingängen mehr als 250.000 Gatter mit zwei Eingän­ gen oder andere Funktionen. Die Kosten für ein derartiges FPGA sind untragbar. Daher bleiben mehrtorige Registerda­ teien und Assoziativspeicher außerhalb des Schaltungsreper­ toirs der meisten FPGA-Systeme.In particular are multi-port register files and association tive memory (CAMs; CAM Content-Addressable Memories) two Circuit types with poor efficiency Map commercially available FPGAs. Still, these are Circuit types important components in many logical Systems. If implemented with pure Boolean logic are associative memories and multi-port registers files with large numbers of gates. E.g. requires an 80 bit wide register file of 96 registers with 4 write inputs and 8 read inputs more than 250,000 gates with two inputs gene or other functions. The cost of such FPGAs are intolerable. Therefore, multi-port registers remain parts and associative memory outside the circuit blocker toirs of most FPGA systems.

Es ist die Aufgabe der vorliegenden Erfindung, ein verbes­ sertes FPGA-System zu schaffen, bei dem Registerdateien und Assoziativspeicher effizienter implementiert werden können.It is the object of the present invention to provide a verb to create a FPGA system in which register files and Associative memory can be implemented more efficiently.

Diese Aufgabe wird durch ein programmierbares Gatterarray gemäß den Patentansprüchen 1 und 4 und eine programmierbare logische Schaltung gemäß Patentanspruch 7 gelöst.This task is accomplished through a programmable gate array according to claims 1 and 4 and a programmable Logical circuit according to claim 7 solved.

Die vorliegende Erfindung ist eine programmierbare logische Zelle zum Implementieren von RAMs (Random Access Memories = Direktzugriffsspeicher), Assoziativspeichern und mehrtorigen Registerdateien in programmierbaren Gatterarrays. Die pro­ grammierbare logische Schaltung kombiniert die Funktionen einer Speicherzelle und eines Komparators in einer kleinen Anzahl von Gattern. Die programmierbare logische Schaltung schließt eine Multiplexerschaltung ein, die es ermöglicht, einen der Eingänge des Komparators zwischen den Daten, die in der Speicherzelle gespeichert sind, und einem externen Datensignal umzuschalten. Die programmierbaren logischen Schaltungen können zusammen mit Dekodierern in einem zwei­ dimensionalen Array miteinander verbunden werden, um einen kleinen RAM, einen Assoziativspeicher oder eine mehrtorige Registerdatei zu implementieren.The present invention is a programmable logic Cell for implementing RAMs (Random Access Memories = Random access memory), associative memory and multi-port Register files in programmable gate arrays. The pro programmable logic circuit combines the functions a memory cell and a comparator in a small one Number of gates. The programmable logic circuit  includes a multiplexer circuit that enables one of the inputs of the comparator between the data that are stored in the memory cell, and an external Switch data signal. The programmable logic Circuits can be combined with decoders in two dimensional array to be connected to one another small RAM, an associative memory or a multi-port Implement register file.

Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend unter Bezugnahme auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:Preferred embodiments of the present invention are described below with reference to the accompanying Drawings explained in more detail. Show it:

Fig. 1 ein Blockdiagramm einer mehrtorigen Registerdatei; Fig. 1 is a block diagram of a multiport register file;

Fig. 2 ein Blockdiagramm einer Implementierung eines Schreibeingangs zur Verwendung mit einer mehrtorigen Registerdatei; Fig. 2 is a block diagram of an implementation of a write input for use with a multiport register file;

Fig. 3 ein Blockdiagramm einer Implementierung eines Lese­ eingangs zur Verwendung mit einer mehrtorigen Regi­ sterdatei; Fig. 3 is a block diagram of an implementation of a reading beginning sterdatei for use with a multiport regi;

Fig. 4 ein Blockdiagramm einer Implementierung eines Regi­ sterdatenbits zur Verwendung mit einer mehrtorigen Registerdatei; Fig. 4 is a block diagram of an implementation of a regi sterdatenbits for use with a multiport register file;

Fig. 5 ein Blockdiagramm eines Assoziativspeichers; Fig. 5 is a block diagram of an associative memory;

Fig. 6 ein Blockdiagramm eines FPGAs; Fig. 6 is a block diagram of an FPGA;

Fig. 7 ein Blockdiagramm einer logischen Speicherzelle ge­ mäß der vorliegenden Erfindung; Fig. 7 is a block diagram of a logic memory cell according to the present invention;

Fig. 8 ein schematisches Diagramm des bevorzugten Ausfüh­ rungsbeispiels einer logischen Speicherzelle gemäß der vorliegenden Erfindung; Fig. 8 is a schematic diagram of the preferred embodiment of an exporting approximately logical memory cell according to the present invention;

Fig. 9 ein Blockdiagramm eines RAM, der aus logischen Spei­ cherzellen gemäß der vorliegenden Erfindung aufge­ baut ist; Figure 9 is a block diagram of a RAM cherzellen of logical SpeI builds up in accordance with the present invention.

Fig. 10 ein schematisches Diagramm einer Speicherzelle zum Speichern eines Registerbits gemäß der vorliegenden Erfindung; FIG. 10 is a schematic diagram of a memory cell for storing a register bits according to the present invention;

Fig. 11 ein Blockdiagramm einer Registerdatei, die aus Spei­ cherzellen und Registerbitzellen gemäß der vorlie­ genden Erfindung aufgebaut ist; FIG. 11 is a block diagram of a register file that cherzellen from SpeI and Registerbitzellen the vorlie constricting invention is constructed in accordance with;

Fig. 12 ein Blockdiagramm eines Assoziativspeichers, der aus Speicherzellen gemäß der vorliegenden Erfindung auf­ gebaut ist. Fig. 12 is a block diagram of an associative memory, which the present invention is built up from memory cells according to.

Die vorliegende Erfindung kann bezugnehmend auf die logische Struktur und die herkömmliche Implementierung von mehrtori­ gen Registerdateien und Assoziativspeichern besser verstan­ den werden. Fig. 1 ist ein Blockdiagramm einer mehrtorigen Registerdatei 10. Eine mehrtorige Registerdatei entspricht einem Array von Registern, das gleichzeitig von mehreren Schreibeingängen beschrieben und von mehreren Leseeingängen gelesen werden können. Exemplarische Register sind bei 13-15 gezeigt. Exemplarische Leseeingänge und Schreibeingänge sind bei 16-17 bzw. 11-12 gezeigt. Jeder Schreibeingang erfordert drei Eingänge, eine Adresse, die das Register spezifiziert, das beschrieben werden soll, die Daten, die in das Register geschrieben werden sollen, und ein Auslösesignal, das akti­ viert werden muß, um das Schreiben tatsächlich durchzufüh­ ren. Jeder Leseeingang erfordert nur eine Adresse, die das Register spezifiziert, das gelesen werden soll.The present invention can be better understood in relation to the logical structure and the conventional implementation of multi-port register files and associative memories. Fig. 1 is a block diagram of a multiport register file 10.. A multi-port register file corresponds to an array of registers that can be written to by multiple write inputs and read by multiple read inputs simultaneously. Exemplary registers are at 13 - shown 15th Exemplary reading inputs and write inputs are at 16 - shown 12-17 and 11 respectively. Each write input requires three inputs, an address specifying the register to be written, the data to be written to the register, and a trigger signal which must be activated to actually perform the write. Each read input requires only an address that specifies the register to be read.

Die Register können als Gruppe genommen als ein zweidimen­ sionales Array von Ein-Bit-Speicherzellen betrachtet werden. Um die folgende Erörterung zu vereinfachen, werden Register mit einer Breite von einem Bit verwendet. Für Fachleute ist es jedoch offensichtlich, daß Register einer beliebigen Breite unter Verwendung der Lehren der vorliegenden Er­ findung aufgebaut werden können.The registers can be taken as a group as a two-dim sional array of one-bit memory cells can be considered. To simplify the following discussion, registers used with a width of one bit. For professionals however, it is obvious that registers of any  Latitude using the teachings of the present Er can be built up.

Fig. 2 ist ein Blockdiagramm einer möglichen Implementierung eines Schreibeingangs. Der Schreibeingang 20 ist aus zwei Demultiplexern 21 und 22 aufgebaut, die zu jedem von N Ein­ zelbit-Registern in der Registerdatei ein Paar von Signalen liefern. Der Demultiplexer 21 dekodiert die Adresse und das Auslösesignal und erzeugt das DATEI_SCHREIBEN-Signal und koppelt es zu dem Register, das durch ADRESSE spezifiziert ist. Der Demultiplexer 22 erzeugt ein Signal DATEI_DATEN, das den gleichen Wert wie DATEN hat und führt dieses Signal zu dem Register, das durch ADRESSE spezifiziert ist, wenn das Signal AUSLÖSEN aktiviert ist. Jeder Schreibeingang ist in der Lage jeweils nur ein einzelnes Register in der Datei zu beschreiben. Wenn eine Vielzahl von Schreibeingängen exi­ stiert, werden die Signale DATEI_SCHREIBEN und DATEI_DATEN, die durch die verschiedenen Schreibeingänge für jedes Regi­ ster erzeugt werden, miteinander ODER-verknüpft, um ein ein­ zelnes Paar von Signalen für jedes Register zu liefern. Für Fachleute ist es offensichtlich, daß ein bestimmter Mecha­ nismus geliefert werden muß, um sicherzustellen, daß die gleiche Adresse nicht mehr als einem Schreibeingang gleich­ zeitig geboten wird. Figure 2 is a block diagram of a possible implementation of a write input. The write input 20 is constructed from two demultiplexers 21 and 22 , which supply a pair of signals to each of N single-bit registers in the register file. The demultiplexer 21 decodes the address and the trigger signal and generates the FILE_WRITE signal and couples it to the register specified by ADDRESS. The demultiplexer 22 generates a FILE_DATEN signal that has the same value as DATA and feeds this signal to the register specified by ADDRESS when the TRIGGER signal is activated. Each write input is only able to write to a single register in the file. When a plurality of write inputs exist, the FILE_WRITE and FILE_DATA signals generated by the different write inputs for each register are ORed together to provide a single pair of signals for each register. It will be apparent to those skilled in the art that a particular mechanism must be provided to ensure that the same address is not offered to more than one write input at a time.

Im Gegensatz zu einem Schreibeingang ist ein Leseeingang viel einfacher zu implementieren. Ein Leseeingang kann aus einem einzelnen N : 1 Multiplexer 31 implementiert sein, wie in Fig. 3 gezeigt ist. Eine Vielzahl von Leseeingängen be­ nutzt die Ausgänge der Registerdateibits einfach gemeinsam und erfordert keine Kombinieroperationen analog zu der ODER-Verknüpfungsoperation, die oben beschrieben ist.In contrast to a write input, a read input is much easier to implement. A read input can be implemented from a single N: 1 multiplexer 31 , as shown in FIG. 3. A multitude of read inputs simply share the outputs of the register file bits and do not require any combining operations analogous to the OR operation described above.

Das aktuelle Registerbit kann in einem Flip-Flop 33 gespei­ chert werden, wie in Fig. 4 bei 33 gezeigt ist. Das Signal DATEI_DATEN wird beim nächsten Taktzyklus, nachdem das Si­ gnal DATEI_SCHREIBEN aktiviert ist, in das Flip-Flop getaktet. The current register bit can be stored in a flip-flop 33 , as shown at 33 in FIG. 4. The FILE_DATEN signal is clocked into the flip-flop at the next clock cycle after the FILE_WRITE signal is activated.

Nachdem nun die logische Struktur einer Registerdatei er­ klärt wurde, wird die logische Struktur eines Assoziativ­ speichers detaillierter erklärt. Zu Zwecken dieser Erörte­ rung kann ein CAM als ein Speicher betrachtet werden, der den Benutzer-spezifischen Lese- und Schreib-Betrieb eines RAM unterstützt, jedoch zusätzlich einen parallelen Such­ betrieb unterstützt, der ein Zielbitmuster einer festen Breite mit einem "Tag-Feld" (Etiketten-Feld) der gleichen Breite vergleicht, das zu jedem Wort des Speichers gehört.Now that the logical structure of a register file has been clarified, the logical structure of an associative memory explained in more detail. For the purposes of this discussion A CAM can be viewed as a memory that the user-specific read and write operation of a RAM supports, but additionally a parallel search operation that supports a target bit pattern of a fixed Width with a "tag field" (label field) of the same Width compares that belongs to every word of memory.

Fig. 5 ist ein Blockdiagramm einer typischen CAM-Architek­ tur. Der CAM 40 ist in eine Anzahl von Datensätzen 42 ge­ teilt. Jeder Datensatz umfaßt ein Tag-Feld 43 und ein Da­ tenfeld 44. Jeder Datensatz besitzt ferner einen zu dem­ selben gehörenden Komparator 45. Ein Zielmuster ist mit einem Bus 46 gekoppelt, der mit den Komparatoren verbunden ist. Jeder Komparator 45 vergleicht das Zielmuster mit dem Inhalt des Tag-Feldes 43 seines zugehörigen Datensatzes. Wenn der Inhalt des Tag-Feldes mit dem Zielmuster überein­ stimmt, erzeugt der Komparator ein Übereinstimmungssignal, das ein Signalführungsmittel (router) 47, das zu dem Daten­ satz gehört, veranlaßt, das Datenfeld 44 dieses Datensatzes mit einem Bus 48 zu koppeln. Ferner wird ein Übereinstim­ mungssignal, das eine erfolgreiche Übereinstimmung, oder das Fehlen derselben anzeigt, mit dem Bus 48 gekoppelt. Die vor­ liegende Erfindung betrifft das Implementierung des Tag-Fel­ des und der Vergleichsfunktionen eines CAMs in einem FPGA. Figure 5 is a block diagram of a typical CAM architecture. The CAM 40 is divided into a number of data sets 42 . Each data record comprises a tag field 43 and a data field 44 . Each data record also has a comparator 45 belonging to the same. A target pattern is coupled to a bus 46 which is connected to the comparators. Each comparator 45 compares the target pattern with the content of the tag field 43 of its associated data set. If the content of the tag field matches the target pattern, the comparator generates a match signal which causes a signaling means (router) 47 belonging to the data set to couple the data field 44 of this data set to a bus 48 . Furthermore, a match signal indicating a successful match or lack thereof is coupled to bus 48 . The present invention relates to the implementation of the tag field and the comparison functions of a CAM in an FPGA.

Fig. 6 ist ein Blockdiagramm eines typischen FPGA 50. Das FPGA 50 umfaßt zwei Hauptklassen von Komponenten, program­ mierbare logische Zellen (PLCs) 52, die eine bestimmte Kom­ binationslogik und Speicherfunktionen implementieren, und konfigurierbare Signalführungsmittel, die ein Signalfüh­ rungsnetzwerk 54 bilden, das verwendet wird, um die Eingänge und die Ausgänge der PLCs miteinander und mit externen I/O-Anschlußstiften (I/O = Input-Output) zu verbinden. Die PLCs sind für die vorliegende Erfindung von primärem Interesse. Fig. 6 is a block diagram of a typical FPGA 50th The FPGA 50 comprises two major classes of components, programmable logic cells (PLCs) 52 that implement certain combination logic and memory functions, and configurable signal routing means that form a signaling network 54 that is used to control the inputs and outputs of the PLCs to connect with each other and with external I / O pins (I / O = input-output). The PLCs are of primary interest for the present invention.

Eine typische PLC ist eine funktionelle Zelle, die mehrere Eingaben aufnimmt und einen oder mehrere Ausgaben erzeugt. Jeder Ausgang kann ein Flip-Flop einschließen.A typical PLC is a functional cell that has several Records inputs and generates one or more outputs. Each output can include a flip-flop.

Die vorliegende Erfindung löst die Probleme, die bei bekann­ ten FPGA-Architekturen auftreten, durch Schaffen einer neu­ artigen PLC, die konfiguriert werden kann, um effizient die Implementierung von mehrtorigen Registerdateien und CAMs, ebenso wie von herkömmlichen RAMs, durchzuführen. Diese Zelle wird in der nachfolgenden Erörterung als CRR-Speicherzelle (CRR = CAM/RAM/Regfile = Assoziativspeicher/Speicher mit wahlfreiem Zugriff/Registerdatei) bezeichnet.The present invention solves the problems encountered with known FPGA architectures by creating a novel PLC that can be configured to efficiently implement multi-port register files and CAMs as well as conventional RAMs. This cell is referred to as CRR memory cell (CRR = C AM / R AM / R egfile = associative memory / random access memory / register file) in the discussion below.

Eine CRR-Zelle besteht aus einer Kombination eines Assozia­ tivspeichers mit einem Speicher mit wahlfreiem Zugriff und einer Registerdatei.A CRR cell consists of a combination of an association tiv memory with a random access memory and a register file.

Ein Blockdiagramm, das die elementaren Merkmale einer CRR-Speicherzelle 100 gemäß der vorliegenden Erfindung darstellt, ist in Fig. 7 gezeigt. Die CRR-Speicherzelle 100 kann als eine Ein-Bit-Speicherzelle 102, ein Multiplexer 103 und ein Komparator 104 betrachtet werden. Der Multiplexer 103 bestimmt, ob die in der Speicherzelle 102 gespeicherten Daten oder ein externes Signal 106 durch den Komparator 104 mit dem DATEN-Eingangssignal verglichen werden.A block diagram illustrating the basic features of a CRR memory cell 100 in accordance with the present invention is shown in FIG. 7. The CRR memory cell 100 can be viewed as a one-bit memory cell 102 , a multiplexer 103 and a comparator 104 . The multiplexer 103 determines whether the data stored in the memory cell 102 or an external signal 106 is compared by the comparator 104 with the DATA input signal.

Ein Schema des bevorzugten Ausführungsbeispiels einer CRR- Speicherzelle 200 ist in Fig. 8 gezeigt. Die Speicherzelle wird durch kreuzgekoppelte Inverter 202 und 203 und Transi­ storen 205 und 206, die sich normalerweise im leitfähigen Zustand befinden, gebildet. Die Speicherzelle kann auf zwei Möglichkeiten beschrieben werden. Beim ersten Verfahren wer­ den die Daten, die geschrieben werden sollen, auf die SCHREIB_DATEN-Leitung getrieben. Wenn die Signale SCHREIBEN_AUSLÖSEN und WORT aktiviert sind, schaltet das Gatter 201 einen Transistor 204 ein und den Transistor 205 aus, wodurch es dem Wert des Signals SCHREIB_DATEN ermöglicht wird, den vorherigen Wert in der Speicherzelle zu über­ schreiben.A schematic of the preferred embodiment of a CRR memory cell 200 is shown in FIG. 8. The memory cell is formed by cross-coupled inverters 202 and 203 and transistors 205 and 206 , which are normally in the conductive state. The memory cell can be written to in two ways. In the first method, the data to be written is driven onto the WRITE_DATA line. When the WRITE_RELEASE and WORD signals are asserted, gate 201 turns transistor 204 on and transistor 205 off, allowing the value of the WRITE_DATA signal to overwrite the previous value in the memory cell.

Bei dem zweiten Verfahren wird das Komplement der Daten, die geschrieben werden sollen, auf eine Leitung 224 getrieben, wodurch der gespeicherte Wert überschrieben wird, wenn ein Transistor 206 ausgeschaltet ist und ein Transistor 207 durch Aktivieren des Signals REGDATEI eingeschaltet ist. Es sei bemerkt, daß die Signale SCHREIBEN oder REGDATEI unter­ brochen und auf einem niederen logischen Pegel gehalten wer­ den müssen, um den Schreibzyklus abzuschließen und das Lesen der Daten in der Speicherzelle zu ermöglichen.In the second method, the complement of the data to be written is driven on line 224 , thereby overwriting the stored value when a transistor 206 is turned off and a transistor 207 is turned on by activating the REGFILE signal. It should be noted that the WRITE or REG FILE signals must be interrupted and held at a low logic level to complete the write cycle and enable the data in the memory cell to be read.

Die Speicherzelle wird gelesen, indem die WORT-Leitung in einen hohen logischen Zustand gebracht wird. Dies bewirkt, daß der gespeicherte Wert über den Tristate-Puffer 207 auf die LIES_DATEN-Leitung gesteuert wird.The memory cell is read by bringing the WORD line high logic. This causes the stored value to be driven through the tri-state buffer 207 onto the READ_DATA line.

Die Vergleichsfunktion ist über ein Exklusiv-ODER-Gatter 208 implementiert. Das Gatter 208 vergleicht die Daten auf der SCHREIB_DATEN-Leitung mit dem Inhalt der Speicherzelle oder dem Komplement der Daten auf der Leitung 224 abhängig vom Zustand der Transistoren 206 und 207. Ein Transistor 209 ermöglicht es dem Vergleichsergebnis, die - Leitung herabzuziehen, wenn entweder ein Transistor 211 oder ein Transistor 212 leitend ist. Die Art und Weise, auf die ein Gatter 210 arbeitet, wird aus der Erörterung des SCHREIB_EINGANG-Signals beim Implementieren der Registerda­ teien offensichtlich, wie bezugnehmend auf Fig. 11 nachfol­ gend erörtert wird. Die Transistoren 206 und 207 führen die oben beschriebene Multiplexerfunktion durch.The comparison function is implemented via an exclusive OR gate 208 . Gate 208 compares the data on the WRITE_DATA line to the content of the memory cell or the complement of the data on line 224 depending on the state of transistors 206 and 207 . A transistor 209 enables the comparison result to pull the line down when either a transistor 211 or a transistor 212 is conductive. The manner in which gate 210 operates will be apparent from the discussion of the WRITE_INPUT signal when implementing the register files, as discussed below with reference to FIG. 11. Transistors 206 and 207 perform the multiplexer function described above.

Die CRR-Speicherzellen können mit einem Dekodierer und einer Steuerlogik kombiniert werden, um gemäß Fig. 9 einen einfa­ chen RAM 300 zu erzeugen. Der RAM 300 ist ein RAM der Größe acht Worte mal ein Bit, der aus acht CRR-Speicherzellen 301 und einem Dekodierer 302, der eine Drei-Bit-Adresse deko­ diert, aufgebaut ist. Wenn auf diese Art und Weise verwen­ det, sind die REGDATEI-, SCHREIB_EINGANG- und SUCH-Leitungen auf einem niederen logischen Pegel gehalten und die und -Leitungen werden nicht verwendet. Die Adreßleitungen in den RAM werden durch den Dekodierer 302 dekodiert, um die WORT-Leitung der entsprechenden CRR- Speicherzelle auf einen hohen logischen Pegel zu steuern, wodurch der Wert der ausgewählten CRR-Speicherzelle auf ei­ nen LIES_DATEN-Bus 304 gesteuert wird. Wenn das Signal SCHREIBEN_AUSLÖSEN auf Leitung 305 auf einen hohen logischen Pegel (HIGH) gebracht ist, nachdem die dekodierte Adresse und die SCHREIB_DATEN-Signale stabil sind, werden die Daten auf der SCHREIB_DATEN-Leitung 306 in die CRR-Speicherzelle geschrieben.The CRR memory cells can be combined with a decoder and control logic to produce a simple RAM 300 as shown in FIG. 9. The RAM 300 is an eight word by one bit RAM made up of eight CRR memory cells 301 and a decoder 302 that decodes a three bit address. When used in this manner, the REG FILE, WRITE_ INPUT and SEARCH lines are kept at a low logic level and the and lines are not used. The address lines in RAM are decoded by decoder 302 to drive the word line of the corresponding CRR memory cell to a high logic level, thereby controlling the value of the selected CRR memory cell on a READ_DATA bus 304 . When the WRITE_RELEASE signal on line 305 is logic high (HIGH) after the decoded address and the WRITE_DATA signals are stable, the data on WRITE_DATA line 306 is written to the CRR memory cell.

Eine CRR-Speicherzelle, die gemäß vorliegender Erfindung durch die WORT-Leitung ausgewählt ist, kann mit der Ein- Bit-Speicherzelle, die in Fig. 10 gezeigt ist, und mit be­ stimmten Dekodierschaltungen kombiniert werden, um eine mehrtorige Registerdatei zu implementieren, wie in Fig. 11 gezeigt ist. Bezugnehmend zuerst auf Fig. 10 ist ein schema­ tisches Diagramm einer Schaltung zum Speichern eines ein­ zelnen Bits eines Registers in einer Registerdatei gezeigt. Diese Schaltung wird in der folgenden Erörterung als ein RBIT bezeichnet. Eine RBIT-Zelle speichert ein Bit und er­ zeugt ein Signal, das den gespeicherten Wert anzeigt. Der Inhalt der Zelle ist komplementiert, wenn die gespeicherten Daten nicht in einer festen Beziehung zu einem zweiten Si­ gnal stehen. Bei dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung ist eine RBIT 350 aus einem D-Flip- Flop 351 und einem Exklusiv-ODER-Gatter 352 aufgebaut, wie in Fig. 10 gezeigt ist. Bei diesem Ausführungsbeispiel wird der Inhalt des Flip-Flop 351 beim nächsten Taktimpuls komplementiert, wenn nicht mit übereinstimmt.A CRR memory cell selected by the WORD line in accordance with the present invention may be combined with the one-bit memory cell shown in FIG. 10 and certain decoder circuits to implement a multi-port register file, such as is shown in Fig. 11. Referring first to Fig. 10, there is shown a schematic diagram of a circuit for storing a single bit of a register in a register file. This circuit is referred to as an RBIT in the following discussion. An RBIT cell stores a bit and it generates a signal that indicates the stored value. The content of the cell is complemented if the stored data is not in a fixed relationship with a second signal. In the preferred embodiment of the present invention, an RBIT 350 is constructed from a D flip-flop 351 and an exclusive OR gate 352 , as shown in FIG. 10. In this embodiment, the content of flip-flop 351 is complemented at the next clock pulse if it does not match.

Fig. 11 ist ein Blockdiagramm einer mehrtorigen Register­ datei 400 gemäß der vorliegenden Erfindung. Die mehrtorige Registerdatei 400 ist mit Registern einer Breite von einem Bit gezeigt, um die Zeichnung zu vereinfachen. Die mehr­ torige Registerdatei 400 ist aus einer Mehrzahl von einfa­ chen RAM-Speichern, die oben beschrieben sind, durch die Hinzufügung einer RBIT-Zelle zu jedem RAM und durch Ver­ binden der - und der -Leitungen aufgebaut, die beim Implementieren der RAM-Funktion nicht benutzt wurden. Beispielhafte RAM-Speicher sind bei 402 bis 404 gezeigt. Jeder RAM umfaßt einen Dekodierer 407 und eine Mehrzahl von CRR-Speicherzellen 401. Bei dem in Fig. 11 ge­ zeigten Beispiel existieren acht CRR-Speicherzellen pro RAM. Für Fachleute ist es jedoch offensichtlich, daß andere Kon­ figurationen verwendet werden können. Fig. 11 is a block diagram of a multi-port register file 400 according to the present invention. The multi-port register file 400 is shown with one bit wide registers to simplify the drawing. The multi-port register file 400 is constructed from a plurality of simple RAM memories, described above, by adding an RBIT cell to each RAM and by connecting the - and - lines that implement the RAM function have not been used. Exemplary RAM memory are shown at 402-404. Each RAM includes a decoder 407 and a plurality of CRR memory cells 401 . In the example shown in FIG. 11, there are eight CRR memory cells per RAM. However, it will be apparent to those skilled in the art that other configurations can be used.

Die Daten, die in den Registerbits gespeichert sind, sind in den entsprechenden RBIT-Zellen gespeichert. Die Signale und jeder RBIT-Zelle gehören zu unterschiedlichen - und -Leitungen in jedem der RAM-Speicher, wie in Fig. 11 gezeigt ist. Die DATEN-Leitungen jeder Reihe von CRR-Speicherzellen sind fer­ ner mit der entsprechenden -Leitung verbunden. Die Art und Weise, auf die die Daten in die RBIT-Zellen geschrieben werden, wird nachfolgend ausführlicher erklärt.The data stored in the register bits is stored in the corresponding RBIT cells. The signals and each RBIT cell belong to different - and lines in each of the RAMs, as shown in FIG . The DATA lines of each row of CRR memory cells are also connected to the corresponding line. The manner in which the data is written to the RBIT cells is explained in more detail below.

Bei dieser Anwendung werden die CRR-Speicherzellen zum Im­ plementieren der Lese- und Schreib-Eingänge verwendet und nicht zum Speichern von Datenbits. Das Signal REGDATEI in der CRR-Speicherzelle wird auf einen hohen logischen Pegel gesteuert (HIGH) und das Signal SUCHEN wird auf einen tiefen logischen Pegel gesteuert. Jeder RAM dient entweder als Le­ se-Eingang oder als Schreib-Eingang für die Registerdatei. Ein RAM, bei dem das Signal SCHREIB_EINGANG auf einen hohen logischen Pegel getrieben ist, ist ein Schreib-Eingang, wäh­ rend ein RAM, bei dem das Signal SCHREIB_EINGANG auf einen tiefen logischen Pegel getrieben ist, ein Lese-Eingang ist.In this application, the CRR memory cells are used for Im use the read and write inputs not for storing data bits. The signal REGFILE in the CRR memory cell is at a high logic level controlled (HIGH) and the SEARCH signal goes to a low controlled logic level. Each RAM either serves as a Le se input or as write input for the register file. A RAM in which the WRITE_INPUT signal goes high driven logic level is a write input, wuh rend a RAM, in which the signal WRITE_INPUT to a low logic level, is a read input.

Das Komplement des Registerdatenbits, das in jeder RBIT- Zelle gespeichert ist, wird über die -Leitungen zu jedem der Lese- und Schreib-Eingänge gesendet. Zum Beispiel sendet jede RBIT-Zelle 405 ihren Inhalt über eine (0)-Leitung, die RBIT-Zelle 408 sendet ihren Inhalt über eine DATEN(1)-Leitung usw.The complement of the register data bit stored in each RBIT cell is sent over the lines to each of the read and write inputs. For example, each RBIT cell 405 sends its content over a (0) line, the RBIT cell 408 sends its content over a DATA (1) line, etc.

Ein Lese-Eingang arbeitet auf eine dem Betrieb eines RAM analoge Art und Weise, mit der Ausnahme, daß die Daten, die auf der LIES_DATEN-Leitung plaziert sind, statt von der in­ ternen Speicherzelle von der entsprechenden -Leitung genommen werden. Es sei z. B. angenommen, daß der RAM 402 als ein Lese-Eingang verschaltet ist. Wenn die Adresse 0 die Eingabe zum Dekodierer 407 ist, ist die CRR-Speicherzelle 401 ausgewählt. Da REGDATEI aktiviert ist, verbinden der Transistor 207, das Gatter 203, der Transistor 205 und das Gatter 202 (siehe Fig. 8) in der CRR-Speicherzelle 401 die Leitung (0) über den invertierenden Treiber 207, der durch die Ausgabe des Dekodierers 407 betätigt wird, welcher mit der WORT-Leitung der CRR-Speicherzelle 401 verbunden ist, mit der LIES_DATEN-Leitung.A read input operates in a manner analogous to the operation of a RAM, with the exception that the data placed on the READ_DATA line is taken from the corresponding line instead of the internal memory cell. It is e.g. For example, assume that RAM 402 is connected as a read input. If address 0 is the input to decoder 407 , CRR memory cell 401 is selected. Since REG FILE is activated, transistor 207 , gate 203 , transistor 205 and gate 202 (see FIG. 8) in CRR memory cell 401 connect line (0) through inverting driver 207 , which is provided by the output of the decoder 407 , which is connected to the WORD line of the CRR memory cell 401 , is operated with the READ_DATA line.

Ein Schreib-Eingang arbeitet auf eine analoge Art und Weise. Das Registerdatei-Bit, das geschrieben werden soll, wird mit den gleichen Datenleitungen adressiert, die verwendet wer­ den, um eine CRR-Speicherzelle auszuwählen, wenn diese als ein RAM betrieben wird. Das Signal SCHREIBEN_AUSLÖSEN wird aktiviert und die ausgewählte CRR-Speicherzelle versucht, den Wert von SCHREIB_DATEN in die Speicherzelle in der CRR- Speicherzelle zu schreiben. Da jedoch auch das REGDATEI- Signal aktiviert ist, ist die Verbindung zur Speicherzelle in der CRR-Speicherzelle unterbrochen. Folglich sind die Werte, die durch das Exklusiv-ODER-Gatter 208 verglichen werden, die Werte auf der SCHREIB_DATEN-Leitung und der Wert auf der -Leitung, die über den Transistor 207 und das Gatter 203, das den Wert der -Leitung invertiert, ge­ koppelt ist. Wenn sich der Wert, der geschrieben werden soll, von dem gespeicherten Wert unterscheidet, wird auf einen tiefen logischen Pegel gesteuert, wodurch die Daten der RBIT-Zelle beim nächsten Zyklus kom­ plementiert werden. A write input works in an analog way. The register file bit to be written is addressed with the same data lines that are used to select a CRR memory cell when operating as a RAM. The WRITE_RELEASE signal is activated and the selected CRR memory cell tries to write the value of WRITE_DATA to the memory cell in the CRR memory cell. However, since the REGFILE signal is also activated, the connection to the memory cell in the CRR memory cell is interrupted. Thus, the values compared by the exclusive-OR gate 208 are the values on the WRITE_DATA line and the value on the line, via transistor 207 and gate 203 , which inverts the value of the line. is coupled. If the value to be written differs from the stored value, it is driven to a low logic level, which complements the RBIT cell data on the next cycle.

Ferner können durch das Kombinieren einer Anzahl von RAM-Speichern ein CAM-Tag-Feld und eine Suchfunktion implemen­ tiert werden. Fig. 12 ist ein Blockdiagramm des Tag-Ab­ schnitts eines CAM 500, der aus einer Mehrzahl von RAMs aufgebaut ist, für die die RAMs 502 bis 504 typisch sind. Die RAMs sind auf eine analoge Art und Weise, die oben be­ züglich Fig. 11 beschrieben ist, aus CRR-Speicherzellen auf­ gebaut. In diesem Fall werden die Speicherzellen in der CRR-Speicherzelle jedoch verwendet, um die Informationen, d. h., die Tag-Feldwerte, zu speichern. Die Tag-Felder der CAM-Einträge sind in den horizontalen Arrays der CRR-Spei­ cherzellen gespeichert. Das Beispiel, das in Fig. 12 gezeigt ist, besteht aus acht Tag-Feldern mit N Bits pro Tag-Feld. Für diese Funktionalität sind die -Lei­ tungen Bus-mäßig horizontal geführt und durch ein schwaches Hochziehen (Pull-Up) auf einen hohen logischen Pegel gezo­ gen. Jede -Leitung wird durch alle CRR- Speicherzellen auf der gleichen horizontalen Leitung gemein­ sam benutzt. SCHREIB_EINGANG und REGDATEI sind auf einen tiefen logischen Pegel gesteuert und ist nicht verwendet.Furthermore, by combining a number of RAM memories, a CAM tag field and a search function can be implemented. Fig. 12 is a block diagram of the tag Ab-section of a CAM 500 constructed from a plurality of RAMs, for the RAMs 502 to 504 are typical. The RAMs are constructed from CRR memory cells in an analogous manner as described above with respect to FIG. 11. In this case, however, the memory cells in the CRR memory cell are used to store the information, ie the tag field values. The tag fields of the CAM entries are stored in the horizontal arrays of the CRR memory cells. The example shown in Fig. 12 consists of eight tag fields with N bits per tag field. For this functionality, the lines are routed horizontally in terms of bus and pulled to a high logic level by a weak pull-up. Each line is shared by all CRR memory cells on the same horizontal line. WRITE_INPUT and REG FILE are controlled to a low logic level and are not used.

Das Lesen und das Schreiben der Tag-Felder wird auf die gleiche Art und Weise erreicht, die bezüglich des RAMs 300, das in Fig. 9 gezeigt ist, beschrieben ist. Die SCHREIBE_DATEN-Eingänge der CRR-Speicherzellen sind mit einer Lei­ tung 510 verbunden, während die LIES_DATEN-Ausgänge mit einer Leitung 511 im RAM 502 verbunden sind. Gleichartige Verbin­ dungen sind für die anderen Tag-Bits in jedem RAM durchgeführt.Reading and writing of the tag fields is accomplished in the same manner described with respect to the RAM 300 shown in FIG. 9. The WRITE_DATA inputs of the CRR memory cells are connected to a line 510 , while the READ_DATA outputs are connected to a line 511 in RAM 502 . Similar connections are made for the other tag bits in each RAM.

Eine parallele Suche nach einem Tag-Feld, das mit einem spe­ ziellen Ziel übereinstimmt, wird durch Liefern des Ziel-Bit­ musters und Aktivieren des Signals SUCHEN initiiert. Das Zielmuster wird auf den SCHREIB_DATEN-Leitungen geliefert, ein Bit pro RAM. Jede Nichtübereinstimmung zwischen dem Ziel-Bitarray und dem gespeicherten Tag-Feld bewirkt, daß die -Leitung für diese Reihe auf einen tiefen logischen Pegel gezogen wird. Alle Tag-Felder werden parallel durchsucht, wodurch für jede Reihe ein Signal erzeugt wird, das durch eine zusätz­ liche programmierbare Logik in dem FPGA verarbeitet werden kann, um den Zeiger zu dem gewünschten Wort in dem CAM zu erzeugen.A parallel search for a tag field that matches a spe target destination is matched by delivering the target bit pattern and activation of the SEARCH signal initiated. The Target pattern is delivered on the WRITE_DATA lines, one bit per RAM. Any mismatch between the Target bit array and the stored tag field causes the line for this row to one  low logic level is drawn. All tag fields will be searched in parallel, creating a signal for each row  is generated by an additional programmable logic are processed in the FPGA can move the pointer to the desired word in the CAM produce.

Die oben beschriebenen Funktionalitäten wurden alle auf RAMs aufgebaut, die aus CRR-Speicherzellen und einem Dekodierer gebildet wurden. Bei dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung umfaßt jeder RAM 16 CRR-Speicherzel­ len. Diese Zahl basiert auf einer Untersuchung, die die op­ timale Größe für Zugriffstabellen in FPGAs anzeigt. Die RAMs würden über die - und -Busse in Arrays von 16 RAMS verschaltet sein. Dies liefert mehrtorige Registerdateien mit bis zu 16 Lese- und Schreib-Eingängen und liefert CAM-Tag-Felder, die 16 Bits breit und 16 Bits tief sind. Breitere und tiefere Registerdateien und CAM- Tag-Felder können durch Verwendung zusätzlicher programmierbarer Logik in dem FPGA und durch Führen der - Leitungen zu der weiteren Logik in dem Fall eines CAM erzeugt werden.The functionalities described above were all based on RAMs which were formed from CRR memory cells and a decoder. In the preferred embodiment of the present invention, each RAM comprises 16 CRR memory cells. This number is based on a study that shows the optimal size for access tables in FPGAs. The RAMs would be interconnected in arrays of 16 RAMs via the and buses. This provides multi-port register files with up to 16 read and write inputs and provides CAM tag fields that are 16 bits wide and 16 bits deep. Wider and deeper register files and CAM tag fields can be created by using additional programmable logic in the FPGA and by routing the lines to the further logic in the case of a CAM.

Im Prinzip kann jeder RAM eine einzelne PLC in dem FPGA- Signalführungsnetzwerk darstellen. Bei dem bevorzugten Aus­ führungsbeispiel der vorliegenden Erfindung ist jedoch ein Array von 16 RAMs als eine einzige PLC gepackt. Diese Kon­ figuration hat den Vorteil des Reduzierens der Länge der - und -Leitungen in dem typischen Fall, wodurch für die CAM- und Registerdatei-Operationen eine erhöhte Geschwindigkeit geliefert wird.In principle, each RAM can have a single PLC in the FPGA Represent signal routing network. With the preferred off exemplary embodiment of the present invention is, however Array of 16 RAMs packed as a single PLC. This con figuration has the advantage of reducing the length of the and lines in the typical Case, which for the CAM and register file operations an increased speed is delivered.

Claims (21)

1. Programmierbares Gatterarray mit folgenden Merkmalen:1. Programmable gate array with the following features: einer Mehrzahl von programmierbaren logischen Schaltun­ gen (300, 400, 500), wobei jede programmierbare logische Schaltung eine Mehrzahl von Eingangsanschlüssen und ei­ nen Ausgangsanschluß aufweist, wobei jede programmier­ bare logische Schaltung als Reaktion auf ein oder meh­ rere Eingangssignale an den Eingangsanschlüssen ein Aus­ gangssignal an dem Ausgangsanschluß erzeugt; und
einer Signalführungseinrichtung (54) zum Verbinden der Eingangs- und Ausgangs-Anschlüsse in einer der program­ mierbaren logischen Schaltungen mit einer weiteren der programmierbaren logischen Schaltungen, wobei eine der programmierbaren logischen Schaltungen (300, 400, 500) eine CRR-Zelle (100, 200) aufweist, die folgende Merk­ male aufweist:
a plurality of programmable logic circuits ( 300 , 400 , 500 ), each programmable logic circuit having a plurality of input ports and an output port, each programmable logic circuit having an output signal in response to one or more input signals at the input ports generated at the output terminal; and
a signal routing device ( 54 ) for connecting the input and output connections in one of the programmable logic circuits to a further one of the programmable logic circuits, one of the programmable logic circuits ( 300 , 400 , 500 ) being a CRR cell ( 100 , 200 ) has the following characteristics:
eine Einrichtung zum Empfangen eines externen Ver­ gleichssignals (106);
eine Einrichtung zum Empfangen eines externen Datensi­ gnals;
eine Speichereinrichtung (102) zum Speichern eines Bits von Informationen und Erzeugen eines gespeicherten Bit­ signals, das den Wert des gespeicherten Bits anzeigt, als Reaktion auf den Empfang eines externen Wortsignals;
eine Vergleichseinrichtung (107) zum Vergleichen des er­ sten und des zweiten Signals und zum Erzeugen eines Ver­ gleichssignals, das anzeigt, ob das erste und das zweite Signal gleich sind, wobei das erste Signal aus einem ex­ ternen Datensignal erzeugt wird; und
eine Multiplexer-Einrichtung (103), die auf ein extern erzeugtes Vergleichsauswahlsignal anspricht, zum Aus­ wählen entweder des gespeicherten Bit-Signals oder des externen Vergleichssignals als das zweite Signal.
means for receiving an external comparison signal ( 106 );
means for receiving an external data signal;
storage means ( 102 ) for storing a bit of information and generating a stored bit signal indicative of the value of the stored bit in response to receiving an external word signal;
comparing means ( 107 ) for comparing the first and second signals and generating a comparison signal indicative of whether the first and second signals are the same, the first signal being generated from an external data signal; and
multiplexer means ( 103 ) responsive to an externally generated comparison selection signal for selecting either the stored bit signal or the external comparison signal as the second signal.
2. Programmierbares Gatterarray gemäß Anspruch 1, bei dem die programmierbaren logischen Schaltungen (300, 400, 500) ferner folgende Merkmale aufweisen:2. Programmable gate array according to claim 1, wherein the programmable logic circuits ( 300 , 400 , 500 ) further have the following features: eine zweite CRR-Zelle (301);
eine Einrichtung zum Empfangen eines Adreßsignals, das eine der CRR-Zellen spezifiziert; und
eine Dekodiereinrichtung (302) zum Erzeugen und Koppeln des Wortsignals zu der spezifizierten CRR-Zelle.
a second CRR cell ( 301 );
means for receiving an address signal specifying one of the CRR cells; and
decoding means ( 302 ) for generating and coupling the word signal to the specified CRR cell.
3. Programmierbares Gatterarray gemäß Anspruch 1 oder 2, bei dem die programmierbaren logischen Schaltungen (300, 400, 500) ferner folgende Merkmale aufweisen:3. Programmable gate array according to claim 1 or 2, wherein the programmable logic circuits ( 300 , 400 , 500 ) further have the following features: eine Einrichtung (351), die eine RBIT-Zelle (350) ein­ schließt, zum Speichern eines Bits von Informationen und Erzeugen eines ersten Signals, das das gespeicherte Bit anzeigt; und
eine Vergleichseinrichtung (352) zum Veranlassen, daß das gespeicherte Bit die Zustände wechselt, wenn das er­ ste Signal in einer festen Beziehung zu einem zweiten Signal steht, das zu der RBIT-Zelle gekoppelt wird.
means ( 351 ) including an RBIT cell ( 350 ) for storing a bit of information and generating a first signal indicative of the stored bit; and
comparing means ( 352 ) for causing the stored bit to change states when the first signal is in a fixed relationship with a second signal coupled to the RBIT cell.
4. Programmierbares Gatterarray mit folgenden Merkmalen:4. Programmable gate array with the following features: einer Mehrzahl von programmierbaren logischen Schaltun­ gen (300; 400; 500), wobei jede programmierbare logische Schaltung eine Mehrzahl von Eingangsanschlüssen und ei­ nen Ausgangsanschluß aufweist, wobei jede programmier­ bare logische Schaltung als Reaktion auf ein oder meh­ rere Eingangssignale auf der Eingangsanschlüssen ein Ausgangssignal auf dem Ausgangsanschluß erzeugt; und
eine Signalführungseinrichtung (54) zum Verbinden der Eingangs- und Ausgangs-Anschlüsse in einer der program­ mierbaren logischen Schaltungen mit einer anderen der programmierbaren logischen Schaltungen,
wobei zumindest eine der programmierbaren logischen Schaltungen eine CRR-Speicherzelle (100; 200) aufweist.
a plurality of programmable logic circuits ( 300 ; 400 ; 500 ), each programmable logic circuit having a plurality of input ports and an output port, each programmable logic circuit having an output signal in response to one or more input signals on the input ports the output port generated; and
a signal routing device ( 54 ) for connecting the input and output connections in one of the programmable logic circuits to another of the programmable logic circuits,
wherein at least one of the programmable logic circuits has a CRR memory cell ( 100 ; 200 ).
5. Programmierbares Gatterarray gemäß Anspruch 4, bei dem die CRR-Speicherzelle (100; 200) folgende Merkmale auf­ weist:5. Programmable gate array according to claim 4, wherein the CRR memory cell ( 100 ; 200 ) has the following features: eine Bit-Speicherzelle (102) zum Speichern eines Bits von Informationen;
einen Multiplexer (103), der wirksam mit der Bit-Spei­ cherzelle (102) verbunden ist, zum Auswählen entweder des gespeicherten Bits von Informationen aus der Bit- Speicherzelle (102) oder einem ersten externen Signal als ein ausgewähltes Signal; und
einen Komparator (104), der wirksam mit dem Multiplexer (103) verbunden ist, zum Vergleichen eines zweiten ex­ ternen Signals mit dem ausgewählten Signal.
a bit memory cell ( 102 ) for storing a bit of information;
a multiplexer (103) connected (102) operatively connected to the bit SpeI cherzelle, for selecting either the stored bits of information from the bit storage cell (102) or a first external signal as a selected signal; and
a comparator ( 104 ), operatively connected to the multiplexer ( 103 ), for comparing a second external signal with the selected signal.
6. Programmierbares Gatterarray gemäß Anspruch 5, bei dem zumindest eine der programmierbaren logischen Schaltun­ gen (300; 400; 500) ferner folgende Merkmale aufweist:6. Programmable gate array according to claim 5, wherein at least one of the programmable logic circuits ( 300 ; 400 ; 500 ) further has the following features: eine RBIT-Zelle (350), die eine Einrichtung (351) ein­ schließt, zum Speichern eines Bits von Informationen und Erzeugen eines ersten Signals, das das gespeicherte Bit anzeigt; und
eine Vergleichseinrichtung (352) zum Veranlassen des ge­ speicherten Bits, seine Zustände zu wechseln, wenn das erste Signal in einer festen Beziehung zu einem zweiten Signal, das zu der RBIT-Zelle (350) gekoppelt wird, steht.
an RBIT cell ( 350 ), including means ( 351 ) for storing a bit of information and generating a first signal indicative of the stored bit; and
comparing means ( 352 ) for causing the stored bit to change states when the first signal is in a fixed relationship with a second signal coupled to the RBIT cell ( 350 ).
7. Programmierbares Gatterarray gemäß Anspruch 6, bei der zumindest eine der programmierbaren logischen Schaltun­ gen (300; 400; 500) ferner folgende Merkmale aufweist:7. Programmable gate array according to claim 6, wherein at least one of the programmable logic circuits ( 300 ; 400 ; 500 ) further has the following features: eine Mehrzahl von CRR-Zellen (100; 200); und
einen Dekodierer (407; 507) zum Empfangen eines Adreß- Signals, das eine der CRR-Zellen (100; 200) spezifi­ ziert, und zum Erzeugen und Koppeln eines Wortsignals zu der spezifizierten CRR-Zelle.
a plurality of CRR cells ( 100 ; 200 ); and
a decoder ( 407 ; 507 ) for receiving an address signal specifying one of the CRR cells ( 100 ; 200 ) and for generating and coupling a word signal to the specified CRR cell.
8. Programmierbare logische Schaltung mit folgenden Merk­ malen:8. Programmable logic circuit with the following note to paint: einer Mehrzahl von CRR-Zellen (401, 501), die in zwei­ dimensionalen Arrays mit Spalten (402-404; 502-504) und Reihen angeordnet sind, wobei jede CRR-Zelle folgen­ de Merkmale aufweist:a plurality of CRR cells ( 401 , 501 ) arranged in two dimensional arrays with columns ( 402-404 ; 502-504 ) and rows, each CRR cell having the following features: eine Einrichtung zum Empfangen eines externen Ver­ gleichssignals;
eine Einrichtung zum Empfangen eines externen Datensi­ gnals;
eine Speichereinrichtung (102) zum Speichern eines Bits von Informationen und zum Erzeugen eines gespeicherten Bit-Signals, das den Wert des gespeicherten Bits an­ zeigt, als Reaktion auf den Empfang eines externen Wort­ signals;
eine Vergleichseinrichtung (102) zum Vergleichen des er­ sten und des zweiten Signals und Erzeugen eines Ver­ gleichssignals, das anzeigt, ob das erste und das zweite Signal gleich waren, wobei das erste Signal aus einem externen Datensignal erzeugt wird; und
eine Multiplexer-Einrichtung (103), die auf ein extern erzeugtes Vergleichsauswahlsignal anspricht, zum Aus­ wählen entweder des gespeicherten Bit-Signals oder des externen Vergleichssignals als das zweite Signal,
wobei die CRR-Zellen in jeder Spalte mit einer Dekodier­ einrichtung (407, 507) verbunden sind, um ein Signal zu empfangen, das eine der CRR-Zellen spezifiziert, und um das Wortsignal zu erzeugen und es zu der spezifizierten CRR-Zelle zu koppeln, und
wobei die Erzeugungseinrichtungen in jeder Vergleichs­ einrichtung der CRR-Zellen in jeder Reihe miteinander verbunden sind.
means for receiving an external comparison signal;
means for receiving an external data signal;
storage means ( 102 ) for storing a bit of information and generating a stored bit signal indicative of the value of the stored bit in response to receiving an external word signal;
comparing means ( 102 ) for comparing the first and second signals and generating a comparison signal indicative of whether the first and second signals were the same, the first signal being generated from an external data signal; and
multiplexer means ( 103 ) responsive to an externally generated comparison selection signal for selecting either the stored bit signal or the external comparison signal as the second signal,
wherein the CRR cells in each column are connected to a decoder ( 407 , 507 ) to receive a signal specifying one of the CRR cells and to generate the word signal and to couple it to the specified CRR cell , and
wherein the generating means in each comparing means of the CRR cells in each row are connected to each other.
9. Programmierbare logische Schaltung gemäß Anspruch 8, bei der die Einrichtungen zum Erzeugen des Speicherbitsi­ gnals jeder CRR-Zelle in jeder Reihe miteinander verbun­ den sind.9. Programmable logic circuit according to claim 8, at the means for generating the memory bit connected to each CRR cell in each row they are. 10. Programmierbare logische Schaltung gemäß Anspruch 8 oder 9, bei der zumindest eine der Spalten (402-404) fol­ gende Merkmale aufweist:10. Programmable logic circuit according to claim 8 or 9, wherein at least one of the columns ( 402-404 ) has the following features: eine Einrichtung (351), die eine RBIT-Zelle (350) ein­ schließt, zum Speichern eines Bits von Informationen und Erzeugen eines ersten Signals, das das gespeicherte Bit anzeigt; und
eine Vergleichseinrichtung (352) zum Veranlassen des ge­ speicherten Bits, seine Zustände zu wechseln, wenn das erste Signal in einer festen Beziehung zu einem zweiten Signal, das zu der RBIT-Zelle gekoppelt wird, steht.
means ( 351 ) including an RBIT cell ( 350 ) for storing a bit of information and generating a first signal indicative of the stored bit; and
comparing means ( 352 ) for causing the stored bit to change states when the first signal is in a fixed relationship with a second signal coupled to the RBIT cell.
DE1995101226 1994-03-25 1995-01-17 Field programmable gate array element for the implementation of register files and associative memories Withdrawn DE19501226A1 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US21844294A 1994-03-25 1994-03-25

Publications (1)

Publication Number Publication Date
DE19501226A1 true DE19501226A1 (en) 1995-10-05

Family

ID=22815143

Family Applications (1)

Application Number Title Priority Date Filing Date
DE1995101226 Withdrawn DE19501226A1 (en) 1994-03-25 1995-01-17 Field programmable gate array element for the implementation of register files and associative memories

Country Status (3)

Country Link
JP (1) JPH07273640A (en)
DE (1) DE19501226A1 (en)
GB (1) GB2287815A (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3616518B2 (en) 1999-02-10 2005-02-02 日本電気株式会社 Programmable device
US6407576B1 (en) 1999-03-04 2002-06-18 Altera Corporation Interconnection and input/output resources for programmable logic integrated circuit devices

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5245227A (en) * 1990-11-02 1993-09-14 Atmel Corporation Versatile programmable logic cell for use in configurable logic arrays
US5245226A (en) * 1991-02-25 1993-09-14 Lattice Semiconductor Corporation Output logic macrocell
US5231312A (en) * 1992-03-12 1993-07-27 Atmel Corporation Integrated logic circuit with functionally flexible input/output macrocells
GB9303084D0 (en) * 1993-02-16 1993-03-31 Inmos Ltd Programmable logic circuit

Also Published As

Publication number Publication date
JPH07273640A (en) 1995-10-20
GB9505060D0 (en) 1995-05-03
GB2287815A (en) 1995-09-27

Similar Documents

Publication Publication Date Title
DE4417575C2 (en) Improved array architecture for programmable logic cells
DE2803989C2 (en) Digital data storage with random access
DE4107889C2 (en) Semiconductor memory device and N-bit data path
DE2948159C2 (en) Integrated memory module with selectable operating functions
DE2335785C3 (en) Circuit arrangement for testing a matrix wiring
DE2059917C3 (en) Hybrid addressed data store
DE19510902A1 (en) Multi-port memory emulation using marker registers
DE4210857A1 (en) SEMICONDUCTOR STORAGE DEVICE AND METHOD FOR TRANSMITTING DATA
DE3606650A1 (en) HARDWARE LOGIC SIMULATOR
DE102008005865A1 (en) A semiconductor memory device, method for controlling access to a mailbox in a semiconductor memory device and computer-readable storage medium
DE2621882A1 (en) DYNAMIC DIGITAL STORAGE WITH UNINTERRUPTED CIRCULATING DATA FLOW
EP0513611A2 (en) Data transfer method for a semiconductor memory and semiconductor memory to perform such a method
DE19822776A1 (en) Data processing arrangement
DE102011053359A1 (en) Latch-based storage device
DE2926322C2 (en) Storage subsystem
DE4418862C1 (en) Page selectable memory device and serial access memory system
DE2951040C2 (en)
DE3214230A1 (en) STORAGE ARRANGEMENT WITH MULTIPLE ACCESS LINES
DE2121490A1 (en) Orthogonal data storage
DE1295656B (en) Associative memory
DE2842288A1 (en) DATA TRANSFER SWITCH WITH ASSOCIATIVE ADDRESS SELECTION IN A VIRTUAL MEMORY
DE19501226A1 (en) Field programmable gate array element for the implementation of register files and associative memories
DE2235883A1 (en) DATA PROCESSING DEVICE
EP1789889B1 (en) Computer with a reconfigurable architecture for integrating a global cellular automaton
DE10105627A1 (en) Multi-pin memory device operating method e.g. for data processing system, uses a multiplexer for each two or more associated read terminals of the memory arrangements

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8130 Withdrawal
8165 Unexamined publication of following application revoked