KR20180116117A - 프로그래밍가능 게이트 어레이에 대한 로직 블록 아키텍처 - Google Patents

프로그래밍가능 게이트 어레이에 대한 로직 블록 아키텍처 Download PDF

Info

Publication number
KR20180116117A
KR20180116117A KR1020177020088A KR20177020088A KR20180116117A KR 20180116117 A KR20180116117 A KR 20180116117A KR 1020177020088 A KR1020177020088 A KR 1020177020088A KR 20177020088 A KR20177020088 A KR 20177020088A KR 20180116117 A KR20180116117 A KR 20180116117A
Authority
KR
South Korea
Prior art keywords
inputs
lut
data
configuration
programmable controller
Prior art date
Application number
KR1020177020088A
Other languages
English (en)
Inventor
로랑 루쥬
줄리앙 에이두
세르쥬 알렉상드르 마르뗄
Original Assignee
멘타
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 멘타 filed Critical 멘타
Publication of KR20180116117A publication Critical patent/KR20180116117A/ko

Links

Images

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/17748Structural details of configuration resources
    • H03K19/17758Structural details of configuration resources for speeding up configuration or reconfiguration
    • 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/17724Structural details of logic blocks
    • H03K19/17728Reconfigurable logic blocks, e.g. lookup tables
    • 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/17748Structural details of configuration resources
    • H03K19/1776Structural details of configuration resources for memories
    • H03K19/17776

Abstract

FPGA 에 대한 프로그래밍가능 로직 블록은 2 개의 룩업 테이블들 (LUT)(41, 44) 을 포함한다. 이들 LUT들 (41, 44) 에 대한 구성 정보는, LUT 기능성을 자체적으로 통합하는 프로그래밍가능 제어기 (43) 에 의해 제공된다. LUT 기능성의 이러한 중간 층은 초기화 모드 동안 실행된 세팅들에 기초하여, 동작 모드에서 일차 LUT들 (41, 44) 의 거동을 프로그래밍가능하게 제어하기 위한 수단을 제공한다. 특정 실시형태들은 또한, 일차 LUT들의 프로그래밍가능한 거동과 함께, 가산기들, 멀티플렉서들, 패리티 및 확장된 LUT 및 멀티플렉서 기능들을 포함하여 다수의 공통의 로직 기능들을 효율적으로 구현하기 위한 수단을 제공하는, 로직 회로 (35) 를 통합한다. 그러한 프로그래밍가능한 로직 블록을 포함하는 FPGA 를 프로그래밍하기 위한 방법 및 대응하는 데이터 스트림이 또한 기술된다.

Description

프로그래밍가능 게이트 어레이에 대한 로직 블록 아키텍처{LOGIC BLOCK ARCHITECTURE FOR PROGRAMMABLE GATE ARRAY}
본 발명은 프로그래밍가능 로직 디바이스들, 및 더 구체적으로 필드 프로그래밍가능 게이트 어레이 디바이스들에 관한 것이다.
FPGA들은 프로그래밍가능 로직 디바이스의 일 타입이다. 이들은 일반적으로, 표준 프로그래밍가능 로직 블록에 기초하며, 그 중 다수가 다양한 기능들을 구현하기 위해 함께 배열된다.
도 1 은 당업계에 속하는 예시적인 로직 블록을 도시한다.
도 1 에 도시된 것과 같이, 로직 블록은 제 1 룩업 테이블 (LUT; 11), 및 제 2 룩업 테이블 (LUT; 14) 을 포함한다. 각각의 LUT 은 각각 7 개의 2 입력 멀티플렉서들 (111, 112, 113, 114, 115, 116, 117 및 141, 142, 143, 144, 145, 146, 147) 을 포함한다. 이들 멀티플렉서들은 8 입력 멀티플렉서를 구성하기 위해 3 개의 로우들로 캐스케이드 방식으로 배열되며, 8 입력 멀티플렉서의 출력은 LUT 의 출력을 구성한다. 각각의 캐스케이드 배열에서 멀티플렉서들 (111, 113, 115 및 117, 그리고 141, 143, 145 및 147) 의 제 1 로우는 양자가 총 8 개의 입력들을 갖는다. 이들 8 개 입력들은 각각, 각각의 LUT 의 프로그래밍 입력들을 구성한다. 각각의 로우의 선택 입력들은 각각의 LUT 의 3 개 데이터 입력들을 구성하기 위해 함께 집단화된다. 종래에, 상기의 방식에서 3 개의 데이터 입력들을 갖는 LUT 는 "LUT3" 로 지칭된다. 도시된 것과 같이, 개별 LUT 의 각각의 입력은 다른 LUT 의 대응하는 입력에 고정되고, 양자의 입력들은 로직 블록 자체의 대응 입력 a, b, 또는 c 에 접속된다. 각각의 LUT (11 및 14) 의 8 개의 프로그래밍 입력들은 각각, 메모리 디바이스 (12 및 13) 에 접속된다. 동작 시에, 이들 메모리 디바이스들 (12, 13) 은 일정한 미리 결정된 논리 값을 각각의 LUT 의 8 개의 프로그래밍 입력들의 각각에 제공한다. 각각의 입력에서 제공된 미리 결정된 논리 값을 선택함으로써, LUT 의 논리적인 거동은 그 3 개의 데이터 입력들에 관한 임의의 이진 값이 요구되는 것과 같이 정의될 수 있는 것에 대한 응답이다. 이는 FPGA 기술의 근본적인 기본 개념이다. 일반적으로, 각각의 LUT 프로그래밍 입력 상의 요구되는 미리 결정된 논리 값에 대응하는, 메모리 (12, 13) 에서의 값들은 디바이스가 턴 온될 때마다 (도시되지 않은) 비휘발성 메모리로부터 로딩된다. 이들 값들이 디바이스 하드웨어를 변경하지 않고 임의의 원하는 기능성을 제공하기 위해 선택될 수 있고, 그 값들이 비휘발성 메모리에서 정보를 교체하지 않고 간단히 버그 수정들 (bug fixes) 또는 기능적 개선들을 제공하도록 변경될 수 있다는 사실은, FPGA 기술의 중요한 장점들이다. 2 개의 LUT3들을 포함하는 단일 로직 블록이 구현할 수 있는 기능들은 제한되며, 도 1 에 도시된 로직 블록의 나머지 특징은 이러한 능력을 확장시키도록 의도된다는 점이 인식될 것이다. 멀티플렉서 (16) 가 제공되어 2 개의 LUT들 (11 및 14) 의 출력들을 접속하며, 로직 블록의 제 4 입력 (d) 에 의해 스위칭된다. 2 개의 LUT들의 출력들이 상기의 방식으로 커플링될 경우, 2 개의 LUT3들은 LUT4 와 논리적으로 등가이다. 한편, 2 개의 LUT들 (11 및 14) 로부터 출력된 값들을 가산하도록 구성된 1 비트 전가산기 (15) 가 제공된다. 전가산기 (15) 의 캐리 인 (151) 및 캐리 아웃 (152) 접속들은, 다수의 인접하는 블록들을 사용함으로써 임의의 사이즈의 이진 값들이 가산될 수도 있도록, 이웃하는 로직 블록들 (비도시) 에 접속된다. 최종 멀티플렉서 (17) 는 전가산기 (15) 와 멀티플렉서 (16) 의 출력들 사이에서 선택하기 위해 제공되고, 그에 대응하여, 한편으로는 LUT4 로서, 또는 다른 한편으로는 가산된 출력들을 갖는 2 개의 LUT3들로서 작용하는 로직 블록 사이에서 선택한다. 결과적으로, 멀티플렉서 (17) 의 출력을 수신하고 그 클록 입력 (181) 상의 펄스를 검출할 시, 이를 D 출력에 통과시키도록 구성된 D 플립-플롭 (18) 이 제공된다. 클록 입력 (181) 은 다수의 인접하는 로직 블록들에 걸쳐 공유되며, 따라서 블록 내에서 발생하는 논리적인 프로세싱에 관계없이, 모든 블록은 미리 결정된 코디네이트 시간에 그 출력을 생성하도록 제어될 수 있다.
앞서 언급된 것과 같이, FPGA 가 사용할만한 기능성을 제공하기 위해, 다수의 로직 블록들을 연관시키는 것이 일반적으로 필요하다.
도 2 는 당업계에 공지된 것과 같은 FPGA 시스템의 일 예를 개략적으로 도시한다.
도 2 에 도시된 것과 같이, FPGA 칩 (20) 은 예를 들면, 앞서 설명된 것과 같은 다수의 로직 블록들 (21) 을 포함한다. 칩은 또한, 다수의 입력/출력 포트들 (22) 을 포함한다. 이들 로직 블록들 (21) 과 입력/출력 포트들 (22) 을 접속하는 것은 다수의 트랙들 (24) 이다. 이들 트랙들의 접합점들 및 프로그래밍가능 라우팅 영역들 (23) 이 제공된다. 이들 프로그래밍가능 라우팅 영역들에서, 각각의 스위치와 접속된 메모리 셀에 저장된 논리 값의 제어 하에, 임의의 쌍의 교차 트랙들을 선택적으로 접속할 수 있는 스위치들이 제공된다. 메모리 유닛들 (12 및 13) 의 프로그래밍을 위해 앞서 설명된 것과 유사한 방식으로, 스위치 메모리 값들은 시스템 시작시 비휘발성 메모리로부터 세팅된다. 따라서, 스위치 메모리들에서의 값들을 요구되는 것과 같이 세팅함으로서, 임의의 로직 블록의 접속들은 임의의 다른 로직 블록 또는 임의의 입력/출력 포트 (22) 의 접속들에 커플링될 수 있다. 따라서, 각각의 로직 블록의 동작을 정의하도록 메모리 유닛들 (12 및 13) 을 적절히 구성하고, 로직 블록들 간에 적절한 접속들을 확립하도록 스위치 메모리들 (23) 을 적절히 구성함으로써, 임의의 요구되는 기능이 구현될 수 있다.
앞서 설명된 배열은 매우 다재다능하지만, 또한 속도, 에너지 소비 및 표면 영역에 있어서 다수의 비효율들의 대상일 것이다. 이들은 다수의 이유들로 발생한다. 먼저, 원하는 기능을 완전한 효율을 갖는 사용가능한 회로들 상으로 맵핑하는 것은 일반적으로 가능하지 않을 것이다 - 항상 몇몇 중복하는 엘리먼트들이 존재할 것이다. 두번째로, 포괄적인 회로들로 특정 기능의 구현은 회로가 그 기능을 수행하도록 특별히 설계되기 때문에, (예컨대) 사용된 트랜지스터들의 수와 관련하여 종종 덜 효율적일 것이다.
이들 비효율성들은 애플리케이션용 집적 회로들과 비교하여 FPGA 기술의 근본적인 접근방식에 어느 정도 고유할 것이지만, 가급적으로 이들을 감소시키는 것이 바람직하다.
최근 몇 년간, 예를 들어 메모리, DSP, 코딩/디코딩 또는 암호화 기능들을 수행하도록 최적화된, 더 특수한 회로들을 동일한 시스템에 포함시키는 것이 점점 더 일반적이다. 예컨대, 도 2 에 도시된 것과 같이, 블록들 (25) 은 그러한 특수 용도들을 위해 확보될 수도 있다. 이들 FPGA 시스템들은 그들의 순수한 재구성가능/애플리케이션-애그노스틱 (application-agnostic) 루트들로부터 멀어지고, 순수한 ASIC 솔루션들의 성능에 근접한 성능을 제공하기 위해 ASIC 기술들의 특정 양태들을 채택하는 경항이 있다.
US 6798240 및 US 5414377 A, US 5889413 A 및 WO 2012123243 A1 는 이러한 도메인에서 관련된 접근방식들을 기술한다.
FPGA 시스템들의 효율을, 그들의 다재다능함을 유지하면서 개선하는 것이 바람직하다.
본 발명의 제 1 양태에 따르면, 제 1 의 복수의 데이터 입력들, 제 2 의 복수의 구성 입력들, 및 제 3 의 복수의 출력들을 갖는 제 1 LUT 과, 제 4 의 복수의 데이터 입력들, 제 5 의 복수의 구성 입력들, 및 제 6 의 복수의 출력들을 갖는 제 2 LUT 를 포함하는 프로그래밍가능 로직 블록이 제공되고, 상기 프로그래밍가능 로직 블록은, 상기 제 2 의 복수의 구성 입력들 및 상기 제 5 의 복수의 구성 입력들의 각각에 접속하는 출력, 제 7 의 복수의 구성 메모리 셀들, 및 제 8 의 복수의 데이터 엔트리들을 갖는 프로그래밍가능 제어기를 더 포함하는 것을 특징으로 하고, 여기서 상기 제 2 의 복수의 구성 입력들 및 상기 제 5 의 복수의 구성 입력들의 각각의 값은, 상기 제 7 의 복수의 구성 메모리 셀들의 값과 함께 상기 제 8 의 복수의 데이터 엔트리들의 각각에 존재하는 값에 의해 미리 결정된 방식으로 표시된다.
이러한 프로그래밍가능 로직 디바이스는 고도로 플렉시블하고, 광범위의 개선된 프로세싱 기능들을 구현하는 것이 가능한 동시에, FPGA 솔루션들에서 더 특수화된 회로와 비교할 때 게이트 카운트 및 표면 영역 요구조건에 적은 영향을 미친다.
본 발명의 제 1 양태의 전개에 따르면, 프로그래밍가능 로직 블록은 상기 제 3 의 복수의 출력들 및 상기 제 6 의 복수의 출력들의 각각에 접속된 로직 회로를 더 포함하며, 상기 로직 회로는 특정 데이터 프로세싱 기능을 구현하기 위해 상기 출력들을 결합하도록 적응된다.
그러한 로직 회로를 추가함으로써, 디바이스의 기능성이 추가로 향상되고, 한편으로는 게이트 카운트 및 표면 영역 요건들과 다른 한편으로는 기능성 간의 절충을 추가로 개선한다.
본 발명의 프로그래밍가능 로직 블록의 제 1 양태의 추가의 전개에 따르면, 로직 회로는 복수의 데이터 프로세싱 기능들의 구현을 위한 컴포넌트들을 포함하고, 상기 복수의 데이터 프로세싱 기능들로부터 상기 특정 데이터 프로세싱 기능들을 프로그래밍가능하게 선택하기 위해 상기 로직 회로의 컴포넌트들에 각각 커플링된 하나 이상의 메모리 셀들을 더 포함한다.
다수의 공통의 특정 기능들을 위한 로직 회로를 최적화함으로써, 디바이스의 기능성이 추가로 향상되고, 한편으로는 게이트 카운트 및 표면 영역 요건들과 다른 한편으로는 기능성 간의 절충을 추가로 개선한다.
본 발명의 제 1 양태의 추가의 전개에 따르면, 복수의 데이터 프로세싱 기능들은 1 비트 전가산기의 기능성을 포함한다. 이러한 공통적인 기능성은 다수의 FPGA 구현들에서 유용할 것이며, 포괄적인 FPGA 구현들과 비교할 때 게이트 카운트 및 표면 영역 요건들을 감소시킨다.
본 발명의 제 1 양태의 추가의 전개에 따르면, 복수의 데이터 프로세싱 기능들은 2 비트 전가산기의 기능성을 포함한다. 이러한 공통적인 기능성은 다수의 FPGA 구현들에서 유용할 것이며, 포괄적인 FPGA 구현들과 비교할 때 게이트 카운트 및 표면 영역 요건들을 감소시킨다.
본 발명의 제 1 양태의 추가의 전개에 따르면, 복수의 데이터 프로세싱 기능들은 그 폭이 상기 제 2 의 복수보다 큰 멀티플렉서의 기능성을 포함한다. 이러한 공통적인 기능성은 다수의 FPGA 구현들에서 유용할 것이며, 포괄적인 FPGA 구현들과 비교할 때 게이트 카운트 및 표면 영역 요건들을 감소시킨다.
본 발명의 제 1 양태의 추가의 전개에 따르면, 복수의 데이터 프로세싱 기능들은 데이터 입력들의 수가 상기 제 2 의 복수보다 큰 LUT 의 기능성을 포함한다. 이러한 공통적인 기능성은 다수의 FPGA 구현들에서 유용할 것이며, 포괄적인 FPGA 구현들과 비교할 때 게이트 카운트 및 표면 영역 요건들을 감소시킨다.
본 발명의 제 1 양태의 추가의 전개에 따르면, 프로그래밍가능 제어기는 복수의 프로그래밍가능 제어기 LUT들을 포함하고, 여기서 상기 프로그래밍가능 제어기의 출력들의 각각은 상기 프로그래밍가능 제어기 LUT들 중 하나의 개별 출력에 대응하고, 여기서 각각의 상기 프로그래밍가능 제어기 LUT 의 구성 입력들은 상기 제 7 의 복수의 구성 메모리 셀의 개별 구성 메모리 셀에 커플링된다. 이러한 아키텍처는 기본적이고 잘 이해되는 컴포넌트 라이브러리들과 함께 예외적인 유연성을 제공한다.
본 발명의 제 1 양태의 추가의 전개에 따르면, 상기 프로그래밍가능 제어기 LUT들의 데이터 입력들은 상기 프로그래밍가능 제어기의 상기 제 8 의 복수의 데이터 엔트리들에 커플링된다. 이러한 일대일 맵핑은 간단하지만 유연한 구조를 제공한다.
본 발명의 제 1 양태의 추가의 전개에 따르면, 프로그래밍가능 제어기는 제 8 의 복수의 데이터 엔트리들을 디코딩하도록 구성된 디코더를 더 포함하고, 여기서 프로그래밍가능 제어기는 복수의 스위칭 박스들을 더 포함하고, 각각의 스위칭 박스들은 상기 디코더의 디코딩된 출력들의 각각, 및 상기 제 5 의 복수의 구성 입력들의 개별 입력을 수신하며, 따라서 각각의 스위칭 박스는 출력 값을 각각 상기 제 2 의 복수의 구성 입력들 및 상기 제 5 의 복수의 구성 입력들의 각각에 접속하는 출력들 중 하나의 출력에 제공하고, 상기 출력의 값은 상기 디코더의 상기 디코딩된 출력의 각각과 상기 제 2 의 복수의 구성 입력들의 개별 입력의 논리적 AND 의 논리적 OR 에 의한 조합과 동일하다.
이러한 구조는 표면 영역과 관련하여 최소 비용을 갖는 로직 및 LUT들의 프로그래밍가능한 동작을 지원하기 위한 강력하고 유연한 방식, 및 표준 회로 엘리먼트들의 사용을 제공한다.
본 발명의 제 1 양태의 추가의 전개에 따르면, 상기 프로그래밍가능 제어기는 4 개의 데이터 엔트리들을 가지고, 4 개의 데이터 엔트리들 중 2 개는 상기 프로그래밍가능 제어기 LUT들의 각각의 2 개의 개별 데이터 입력들에 공통으로 커플링되고, 상기 엔트리들 중 제 3 엔트리는 출력이 상기 제 1 LUT 의 구성 입력에 대응하는 상기 프로그래밍가능 제어기 LUT들의 각각의 제 3 개별 입력에 공통으로 커플링되고, 상기 엔트리들 중 제 4 엔트리는 출력이 상기 제 2 LUT 의 구성 입력에 대응하는 상기 프로그래밍가능 제어기 LUT들의 각각의 제 3 개별 입력에 공통으로 커플링된다. 상기 방식의 입력들의 공유는 예컨대, 신호 트랙들로 인한 표면 영역 요건들에서의 임의의 증가를 제어하는 동안, 대부분의 기능성이 사용가능하게 한다.
본 발명의 제 1 양태의 추가의 전개에 따르면, 상기 제 1 LUT 의 상기 제 3 의 복수의 출력들 중 제 1 출력은 상기 제 1 의 복수의 데이터 입력들의 각각에 의해 멀티플렉싱된 상기 제 2 의 복수의 입력들의 임의의 입력들에 대응하고, 상기 제 1 LUT 의 상기 제 3 의 복수의 출력들 중 제 2 출력은 상기 제 1 의 복수의 데이터 입력들의 서브세트에 의해 멀티플렉싱된 상기 제 2 의 복수의 입력들의 임의의 서브세트에 대응하거나, 또는 상기 제 2 LUT 의 상기 제 6 의 복수의 출력들 중 제 1 출력은 상기 제 4 의 복수의 데이터 입력들의 각각에 의해 멀티플렉싱된 상기 제 5 의 복수의 입력들에 대응하고, 상기 제 2 LUT 의 상기 제 6 의 복수의 출력들 중 제 2 출력은 상기 제 4 의 복수의 데이터 입력들의 서브세트에 의해 멀티플렉싱된 상기 제 5 의 복수의 입력들의 임의의 서브세트에 대응한다. 이러한 방식으로 LUT 의 상이한 부분들을 액세스하는 것은 게이트 카운트 또는 표면 영역에서의 거의 없는 증가로 디바이스의 기능성을 확장시키기 위한 추가의 옵션들을 가능하게 한다.
본 발명의 제 2 양태에 따르면, 제 1 LUT, 제 2 LUT 및 프로그래밍가능 제어기를 포함하는 FPGA 디바이스를 동작시키는 방법이 제공된다. 그 방법은, 상기 프로그래밍가능 제어기와 연관된 제 1 의 복수의 메모리 셀들의 값들을 세팅하는 단계, 및 그 후에 FPGA 를 인에이블하는 단계를 포함한다. 그 후에 방법은 데이터 입력을 프로그래밍가능 제어기에 제공하도록 진행하며, 그 결과 프로그래밍가능 제어기는 상기 제 1 LUT 및 상기 제 2 LUT 의 구성 값들을 제 1 의 복수의 메모리 셀들의 값들과 데이터 입력의 함수로서 세팅한다. 추가로, 데이터 입력은 제 1 LUT 및 제 2 LUT 에 제공된다. 제 1 LUT 및 제 2 LUT 는 상기 프로그래밍가능 제어기에 의해 세팅된 구성 값들의 함수로서 개별 데이터 입력들에 개별 로직 연산들을 수행하고, 그 후에 결과를 출력한다.
상기 방법은 FPGA 의 프로그래밍을 위해, 완전히 포괄적인 FPGA 아키텍처만큼 용이하게 프로그래밍될 본 발명의 개선된 특징들을 제공한다.
본 발명의 제 2 양태의 전개에 따르면, FPGA 디바이스는 로직 회로를 더 포함하고, 상기 방법은, 상기 FPGA 를 인에이블하는 단계 전에, 상기 로직 회로의 구성 입력들과 연관된 제 2 의 복수의 메모리 셀들의 값들을 세팅하는 추가의 단계를 포함한다. 데이터 입력을 제 1 LUT 및 제 2 LUT 에 제공하는 단계는 데이터 입력을 상기 로직 회로에 제공하는 단계를 더 포함하고, 추가의 단계에서 로직 회로는 제 2 의 복수의 메모리 셀들의 값들의 함수로서 제 1 LUT 및 상기 제 2 LUT 의 출력들에 추가의 로직 연산을 수행하고, 결과를 출력한다.
상기 방법은 디바이스가 구현할 수 있는 동작들과 관련하여 추가의 유연성을 제공한다.
본 발명의 제 3 양태에 따르면, 본 발명의 제 2 양태의 방법을 구현하기 위해 선택된 값들을 포함하는 데이터 스트림이 제공된다. 이들에 의해, 본 발명에 따른 FPGA 의 완전한 구성이 오직 디지털 형태로 정의되고 저장될 수 있다.
본 발명의 상기의 장점 및 다른 장점은 지금부터 첨부된 도면들을 참조하여 설명될 것이다:
도 1 은 당업계에 속하는 예시적인 로직 블록을 도시한다.
도 2 는 당업계에 공지된 것과 같은 FPGA 시스템의 일 예를 개략적으로 도시한다.
도 3 은 제 1 실시형태를 도시한다.
도 4 는 제 2 실시형태를 도시한다.
도 5 는 도 4 를 참조하여 설명된 실시형태의 결합 로직 (45) 의 추가의 상세를 도시한다.
도 6 은 도 4 를 참조하여 설명된 실시형태의 결합 로직 (45) 의 추가의 상세를 도시한다.
도 7 은 도 4 를 참조하여 설명된 실시형태의 결합 로직 (45) 의 추가의 상세를 도시한다.
도 8 은 도 4 를 참조하여 설명된 실시형태의 결합 로직 (45) 의 추가의 상세를 도시한다.
도 9 는 도 4 를 참조하여 설명된 실시형태의 결합 로직 (45) 의 추가의 상세를 도시한다.
도 10 은 일 실시형태에 따른 프로그래밍가능 제어기의 구현의 상세들을 도시한다.
도 11 은 추가 실시형태에 따른 프로그래밍가능 제어기의 구현의 상세들을 도시한다.
도 12 는 일 실시형태에 따라 FPGA 디바이스를 동작시키는 방법의 단계들을 도시한다.
도 13 은 일 실시형태에 따라 FPGA 디바이스를 동작시키는 추가 방법의 단계들을 도시한다.
도 3 은 제 1 실시형태를 도시한다. 도 3 에 도시된 것과 같이, 데이터 입력들의 세트 (311), 구성 입력들의 세트 (312), 및 출력 (313) 을 포함하는 제 1 룩업 테이블 (LUT; 31), 및 데이터 입력들의 세트 (341), 구성 입력들의 세트 (342), 및 출력 (343) 을 가지는 제 2 LUT (34) 을 포함하는 프로그래밍가능 로직 블록 (30) 이 제공된다. 제 1 및 제 2 LUT (31 및 34) 은 임의의 사이즈일 수도 있고, 상이한 사이즈들일 수도 있다. 데이터 입력들 (311, 341) 의 수와 구성 입력들 (312, 242) 의 수는 2 개의 LUT들의 사이즈에 의존하여 변화할 것이다.
프로그래밍가능 로직 블록 (30) 은 제 1 LUT (31) 의 구성 입력들 (312) 의 각각과 제 2 LUT (34) 의 구성 입력들 (342) 의 각각에 접속하는 출력을 가지는 프로그래밍가능 제어기 (33) 를 더 포함한다. 프로그래밍가능 로직 블록 (30) 은 또한, 일부 또는 전부가 이하 설명되는 결합 로직 (35) 과 공유되는 공통 폭 입력 접속들 (333) 일 수도 있는, 제 8 의 복수의 데이터 엔트리들 및 메모리 셀 (비도시) 에 각각 커플링되는 구성 입력들 (332) 의 세트를 갖는다. 구성 입력들 (332) 및 데이터 입력들 (331) 의 수는 프로그래밍가능 제어기 (33) 의 특정 구성, 및 프로그래밍가능 로직 블록 (30) 에 의해 구현될 기능들에 의존하고, 이를 위해 다수의 비-제한적인 예들이 이하 실시형태들에서 시작된다.
따라서, 도 1 을 참조하여 설명된 것과 같은 예에 대한 종래의 로직 블록들에서, 임의의 소정 블록의 기능성은 시작시 메모리 (12, 13) 의 값들이 세팅될 때 고정되지만, 본 실시형태의 로직 블록의 기능들은 프로그래밍가능한 제어기 (33) 의 입력 핀들 상의 수신된 값들에 의존하여 다수의 명시된 옵션들 중 임의의 옵션으로 리셋될 수 있다. 이들 옵션들은 이하 추가로 설명되는 것과 같이, 로직 블록 (35) 에 의해 가능한 확장된 기능성 때문에, 어떤 사이즈가 명시되든지 표준 LUT들의 기본 능력들을 넘어서 확장할 수도 있다.
따라서, 제 1 의 복수의 데이터 입력들, 제 2 의 복수의 구성 입력들, 및 제 3 의 복수의 출력들을 갖는 제 1 LUT, 및 제 4 의 복수의 데이터 입력들 및 제 5 의 복수의 구성 입력들, 및 제 6 의 복수의 출력들을 갖는 제 2 LUT 를 포함하는 프로그래밍가능한 로직 블록이 개시되며, 상기 프로그래밍가능 로직 블록은 더 포함하는 것을 특징으로 한다.
상기 실시형태에서, 제 1 및 제 2 LUT들은 8 개의 구성 입력들 및 3 개의 데이터 입력들을 갖는 양자의 LUT3들이지만, 임의의 사이즈 및 2 개의 상이한 사이즈들의 LUT들이 사용될 수도 있는 것이 인식될 것이다.
상기 제 2 의 복수의 구성 입력들 및 상기 제 5 의 복수의 구성 입력들의 각각, 제 7 의 복수의 구성 메모리 셀들, 및 제 8 의 복수의 데이터 엔트리들에 접속하는 출력을 가지는 프로그래밍가능 제어기가 추가로 제공되며, 여기서 제 2 의 복수의 구성 입력들과 제 5 의 복수의 구성 입력들의 값은 제 8 의 복수의 데이터 엔트리들의 각각에 존재하는 값과 함께 상기 제 7 의 복수의 구성 메모리 셀들의 값에 의해 미리결정된 방식으로 표시된다.
상기 실시형태에 따라, 프로그래밍가능 로직 블록은 제 1 LUT (31) 로부터의 상기 출력들 (313) 의 세트 및 제 2 LUT (34) 로부터의 출력들 (343) 의 세트의 각각에 접속된 결합 로직 (35) 을 더 포함하며, 상기 결합 로직 (35) 은 예컨대, 이하 설명되는 것과 같이, 상기 데이터 입력들 (352) 상의 값에 응답하여 특정 데이터 프로세싱 기능을 구현하기 위해 출력들 (313, 343) 을 결합하도록 적응된다.
이하 더 상세히 설명되는 것과 같이, 프로그래밍가능 로직 블록은 옵션적인 것이 이해될 것이다.
이 경우에, 프로그래밍가능 로직 블록은 상기 제 3 의 복수의 출력들 및 상기 제 6 의 복수의 출력들의 각각에 접속된 로직 회로를 더 포함하며, 상기 로직 회로는 특정 데이터 프로세싱 기능을 구현하기 위해 상기 출력들을 결합하도록 적응된다.
다음은 특정 실시형태들에 따라 구현될 수도 있는 데이터 프로세싱 기능들의 일부 예들이다.
로직 함수들
1 비트 전가산기: 값들 A, B 및 Cin 은 명시된 개별 데이터 입력들 (341) 에서 수신되고, 출력들 (351) 은 이하 진리표에 따라 Cout 와 S 의 값들을 운반한다.
Figure pct00001
2 비트 전가산기: 값들 A, B 및 Cin 은 명시된 개별 데이터 입력들 (311, 341) 에서 수신되고, 출력들 (351) 은 이하 진리표에 따라 Cout 와 S 의 값들을 운반한다.
Figure pct00002
전체 폭 멀티플렉서: 제 1 및 제 2 LUT들 (31, 34) 은 멀티플렉서들로서 구성되고, 그들의 출력들이 함께 멀티플렉싱되어, 임의의 입력들 (311, 341) 상의 값이 선택될 수 있고 출력 (351) 에서 사용가능할 수 있다. 이를 기반으로, 시스템은 제 1 LUT 또는 제 2 LUT 중 하나의 데이터 입력들의 수보다 큰 폭을 갖는 멀티플렉서들을 포함하여, 임의의 사이즈의 멀티플렉서를 구현할 수도 있다.
동등 (equality) 의 결정: 제 1 및 제 2 LUT들 (31, 34) 은 XNOR들로서 구성되고, 그들의 출력들은 추가의 로직과 결합되어 임의의 입력들 (311, 341) 상의 값이 선택되고 출력 (351) 에서 사용가능할 수 있다. 따라서, 시스템은 제 1 LUT 의 데이터 입력들의 수 이하의 비트들의 수를 가지는 제 1 이진수가 제 2 LUT 의 데이터 입력들의 수 이하의 비트들의 수를 가지는 제 2 이진수와 동일한지 여부를 결정하는 기능성을 제공할 수도 있다.
비교기: 제 1 LUT들 (34) 은 XNOR 로 구성되고 그 출력은 결합 로직에 의해 그 입력들과 함께 프로세싱되어, 아래의 진리표에 표시된 것과 같이, 출력 (351) 의 값은 하나의 입력이 다른 입력보다 큰지 여부를 표시할 수 있다.
Figure pct00003
따라서, 시스템은 제 1 LUT 의 데이터 입력들의 수 이하의 비트들의 수를 가지는 제 1 이진수가 제 1 경우에 제 2 이진수 이상인지 또는 제 2 경우에 상기 제 2 이진수 미만인지의 여부의 결정의 기능성을 제공할 수 있다.
확장된 LUT: 프로그래밍가능 제어기는 자체적으로 LUT 기능성을 구현한다. LUT들 (41, 44) 의 입력들에 부가하여 프로그래밍가능 제어기의 입력들을 사용함으로써, 더 큰 LUT들의 기능성을 제공하는 것이 가능하다. 이러한 확장은 하나의 LUT 또는 다른 LUT 로 인한 것이거나, 그들 사이에서 분할되거나, 또는 양자에 의해 공통 입력들로서 공유될 수도 있다. 이 수단들로, 로직 블록은 기본 2LUT3 구성에 부가하여 다음과 같은 기능성을 제공할 수 있다:
Figure pct00004
LUT들을 사용하여 구현가능한 임의의 잠재적인 로직일 수도 있는 것과 같이, 감산과 같은 추가의 함수들이 구현될 수도 있다.
Figure pct00005
이들 논리 함수들은 단지 예들일 뿐이고, 다수의 다른 논리 함수들이 유리하게, 개별 구성 메모리들의 제어 하에, 하나 또는 양자의 LUT들 및 적절한 결합 로직 및 프로그래밍가능 제어기의 조합으로 구현될 수도 있음이 인식될 것이다. 설명된 접근방식은 예컨대, 도 1 에 대하여 설명된 것과 같은 종래의 로직 블록들로 달성될 수도 있는 성능과 비교하여, 실시형태에 따라 프로그래밍가능 로직 블록들을 통합하는 FPGA 상에 맵핑된 애플리케이션들의 타이밍 성능 개선들을 초래할 수 있다.
설명된 접근방식은 예컨대, 도 1 에 대하여 설명된 것과 같은 종래의 로직 블록들로 달성될 수도 있는 성능과 비교하여, 실시형태에 따라 프로그래밍가능 로직 블록들을 통합하는 FPGA 에서 구현된 복소 함수들에 대하여 개선된 영역 효율을 초래할 수 있다.
설명된 접근방식은 예컨대, 도 1 에 대하여 설명된 것과 같은 종래의 로직 블록들로 달성될 수도 있는 성능과 비교하여, 실시형태에 따라 프로그래밍가능 로직 블록들을 통합하는 FPGA 에서 구현된 함수들에서 사용된 더 적은 리소스들 때문에 개선된 전력 최적화를 초래할 수 있다.
일반적으로, ASIC 와 FPGA 간의 영역/타이밍 갭의 감소, 및 설명된 실시형태들에 기초하여 달성된 개선된 맵핑 효율은 예컨대, 도 1 에 대하여 설명된 것과 같은 종래의 로직 블록들로 달성될 수도 있는 성능과 비교하여, 비용 감소 및 개선된 성능 양자를 초래할 수 있다.
도 4 는 제 2 실시형태를 도시한다. 도 4 의 실시형태는 제 1 및 제 2 LUT들이 2 개의 종래의 LUT3들인, 도 3 의 실시형태의 전개이다. 도 4 에 도시된 것과 같이, 정의상 3 개의 데이터 입력들 (411, 412, 413) 및 대응하는 2^3= 8 구성 입력들의 세트 (414) 및 단일 출력 (416) 를 가지는 제 1 LUT3 (41), 및 정의상 3 개의 데이터 입력들 (441, 442, 443) 및 대응하는 2^3= 8 구성 입력들의 세트 (444) 및 단일 출력 (446) 을 가지는 제 2 LUT3 (44) 을 포함하는 프로그래밍가능 로직 블록 (40) 이 제공된다. 제 1 LUT (41) 는 도 1 에 대하여 설명된 LUT3들 (11 및 14) 과 동일한 방식으로 7 개의 2 입력 멀티플렉서들을 포함하는 것으로 도시된다. 이들 멀티플렉서들은 8 입력 멀티플렉서를 구성하기 위해 3 개의 로우들로 캐스케이드 방식으로 배열된다. 그러나 도 1 의 LUT3들과 달리, 도 4 의 LUT3들 (41 및 44) 은 각각, 각각의 LUT (41 및 44) 의 멀티플렉서들의 제 2 로우를 구성하는 2 개의 양방향 멀티플렉서들 중 하나의 출력에 각각 커플링된 추가의 출력 (415 및 445) 을 각각 포함한다. 이하 설명되는 것과 같이, 상기 추가의 특징은 회로의 일부 추가의 로직 함수들을 구현하는데 있어 유용할 수 있다.
프로그래밍가능 로직 블록 (40) 은 제 1 LUT (41) 의 구성 입력들 (414) 의 각각과 제 2 LUT (44) 의 구성 입력들 (444) 의 각각에 접속하는 출력을 가지는 프로그래밍가능 제어기 (43) 를 더 포함한다. 프로그래밍가능 로직 블록 (40) 은 또한, 복수의 데이터 엔트리들 (433) 및 메모리 셀 (비도시) 에 각각 커플링되는 구성 입력들 (432) 의 세트를 갖는다. 데이터 입력은 또한, 이하 설명된 결합 로직 (45) 과 공유되는 하나 이상의 입력 접속들 (252) 로부터 수신될 수도 있다. 구성 입력들 (432) 및 데이터 입력들 (433) 의 수는 프로그래밍가능 제어기 (43) 의 특정 구성, 및 프로그래밍가능 로직 블록 (40) 에 의해 구현될 기능들에 의존하고, 이를 위해 다수의 비-제한적인 예들이 이하 실시형태들에서 시작된다.
상기 실시형태에 따라, 프로그래밍가능 로직 블록은 제 1 LUT (41) 로부터의 상기 출력들 (415, 416) 의 세트 및 제 2 LUT (44) 로부터의 출력들 (445, 446) 의 세트의 각각에 접속된 결합 로직 (45) 을 더 포함하며, 상기 결합 로직 (45) 은 예컨대, 이하 설명되는 것과 같이, 상기 데이터 입력들 (452) 상의 하나 이상의 값들에 응답하여 특정 데이터 프로세싱 기능을 구현하기 위해 출력들 (415, 416, 445, 446) 을 결합하도록 적응된다.
프로그래밍가능 로직 블록 데이터 엔트리들 (433) 의 각각에 존재하는 값은, 프로그래밍가능 제어기 (43) 의 구성 입력들 (432) 의 각각의 값들의 함수로서, 제 1 LUT (41) 의 8 개의 구성 입력들 (414) 의 각각과 제 2 LUT (44) 의 8 개의 구성 입력들 (444) 의 각각의 값들을 표시한다.
본 발명의 상기 실시형태에 따라, 프로그래밍가능 로직 블록은 제 1 LUT (41) 의 출력들 (415, 416) 의 각각 및 제 2 LUT (44) 로부터의 출력들 (445, 446) 의 각각에 접속되고 출력들 (451) 을 가지는 결합 로직 (45) 을 더 포함하며, 상기 결합 로직 (45) 은 예컨대, 앞의 제 1 실시형태에 대하여 열거되고 이하 더 상세히 설명되는 것과 같이, 상기 데이터 입력들 (452) 상의 값에 응답하여 특정 데이터 프로세싱 기능을 구현하기 위해 제 1 LUT (41) 와 제 2 LUT (44) 의 출력들을 결합하도록 적응된다.
결합 로직 (45) 의 구성 및 특정 컨텐츠가 구현될 논리 함수들의 특정 세트에 의존하여 변화할 것임이 인식될 것이다. 예를 들어, 다수의 가능한 구성들이 이하 실시형태들에서 시작된다. 간략함을 위해 이들 예들이 도 4 의 실시형태의 맥락에서 시작되지만, 이들 구현들은 임의의 다른 실시형태에 직접 적응가능한 것이 인식될 것이다.
추가로, 특정 기능들이 결합 로직 블록 (45) 의 사용에 의지하지 않고 구현될 수 있는 것이 인식될 것이다. 예를 들어, 도 4 에 도시된 배열은 도 11 을 참조하여 이하 상세히 설명되는 것과 같은 프로그래밍가능 제어기를 적절히 구성함으로써, 단지 2 개의 공통 입력들로 2 개의 6-입력 룩업 테이블들 (LUT6) 을 구현하도록 구성될 수 있다.
도 5 는 도 4 를 참조하여 설명된 실시형태의 결합 로직 (45) 의 추가의 상세를 도시한다. 도 5 의 실시형태에서, 결합 로직은 1 비트 가산기를 구현하도록 배열된다. 도 5 에 도시된 것과 같이, LUT들 (41 및 44) 및 프로그래밍가능 제어기 (43) 가 도 4 를 참조하여 설명된 것과 같이 구성된다. 결합 로직 (55) 은 제 2 LUT (44) 의 (LUT 의 멀티플렉서 어레이의 제 2 및 최종 로우들 각각에 대한 데이터 입력들에 대응하는) 입력들 (442 및 443) 로부터 데이터 입력들을 수신하는 2 방향 멀티플렉서 (551) 를 포함한다. 앞서 설명된 것과 같은 제 2 로우에서 멀티플렉서들의 일 그룹의 출력에 대응하는, 출력 (445) 은 입력들 (443 및 442) 상의 2 개의 입력 값들 간에 선택하기 위해 스위칭 신호를 멀티플렉서 (551) 에 제공한다. LUT (44) 의 8 개 구성 입력들 (444) 의 값들은 순서대로 01101001 로 세팅된다. 이러한 배열에서, 앞의 가산기 진리표를 참조하여 설명되는 것과 같이, 입력 (441) 은 A 가산기 입력에 대응하고, 입력 (442) 은 가산기 입력 B 에 대응하고, 입력 (443) 은 캐리 인 입력에 대응한다. 따라서 LUT (44) 는 다음과 같은 XOR 함수를 구현하고, 이와 같이 가산기 출력 (446) 의 S 출력을 제공한다. LUT 의 제 2 로우 출력 (445) 은 요구되는 캐리 아웃 값에 대응하는, 입력들 (442, 443) 로부터의 값을 선택하도록 멀티플렉서 (551) 를 스위칭한다.
도 6 은 도 4 를 참조하여 설명된 실시형태의 결합 로직 (45) 의 추가의 상세를 도시한다. 도 6 의 실시형태에서, 결합 로직은 2 비트 가산기를 구현하도록 배열된다. 도 6 에 도시된 것과 같이, LUT들 (41 및 44) 및 프로그래밍가능 제어기 (43) 가 도 4 를 참조하여 설명된 것과 같이 구성된다. 결합 로직 (65) 은 제 2 LUT (44) 의 (LUT 의 멀티플렉서 어레이의 제 2 및 최종 로우들 각각에 대한 데이터 입력들에 대응하는) 입력들 (442 및 443) 로부터 데이터 입력들을 수신하는 2 방향 멀티플렉서 (651) 를 포함한다. 결합 로직 (65) 은 LUT (44) 의 입력 핀 (443) 상의 값들을 세팅하도록 스위칭되는, 데이터 입력들 (Cin 및 Cin0) 을 수신하는 2 방향 멀티플렉서 (652) 를 더 포함한다. 멀티플렉서 (652) 는 LUT 구성 셀들 또는 프로그래밍가능 제어기의 구성 셀들과 동일한 방식으로 시스템 초기화시 세팅되는, 메모리 셀 (656) 에 저장된 값에 의해 스위칭된다. 값들 (Cin 및 Cin0) 은 Cout 로부터 수신되고, 추가의 MLUT (미도시) 는 캐리 체인 경로의 일부를 형성한다. 이러한 경로는 FPGA 프로그래밍가능 라우팅 특징들을 사용하여 생성할 수도 있거나, 또는 지정된 캐리 체인 라우팅의 부분일 수도 있다. 결합 로직 (65) 은, 멀티플렉서 (651) 의 출력 및 제 1 LUT 의 제 2 입력 (412) 으로부터의 데이터 입력들을 수신하는, 2 방향 멀티플렉서 (653) 를 더 포함한다. 멀티플렉서 (653) 는 LUT (41) 를 구성하는 멀티플렉서 어레이의 제 2 로우에서 출력된 멀티플렉서들의 그룹의 출력에 대응하는 출력 (415) 에 의해 스위칭된다. 멀티플렉서 (653) 의 출력은 2 비트 가산기의 출력 Cout 을 제공한다. 결합 로직 (65) 은, 멀티플렉서 (653) 의 출력 및 멀티플렉서 (651) 로부터의 데이터 입력들을 수신하는, 2 방향 멀티플렉서 (654) 를 더 포함한다. 멀티플렉서 (654) 는 LUT 구성 셀들 또는 프로그래밍가능 제어기의 구성 셀들과 동일한 방식으로 시스템 초기화시 세팅되는, 메모리 셀 (655) 에 저장된 값에 의해 스위칭된다. 멀티플렉서 (653) 의 출력은 2 비트 가산기의 출력 Cout_L 을 제공한다. 앞서 설명된 것과 같은 제 2 로우에서 멀티플렉서들의 일 그룹의 출력에 대응하는, 출력 (445) 은 입력들 (443 및 442) 상의 2 개의 입력 값들 간에 선택하기 위해 스위칭 신호를 멀티플렉서 (651) 에 제공한다. 도 4 의 LUT (44) 의 8 개 구성 입력들 (444) 및 LUT (41) 의 입력들 (414) 의 값들은 순서대로 01101001 로 세팅된다. 이러한 배열에서, 입력 (441) 은 A0 가산기 입력에 대응하고, 입력 (413) 은 A1 가산기 입력에 대응하고, 입력 (442) 은 가산기 입력 B0 에 대응하고, 입력 (412) 은 가산기 입력 B1 에 대응한다. 입력들 (Cin 및 Cin0) 은 입력 (452) 을 통해 멀티플렉서 (652) 에 직접 제공된다.
LUT들 (44 및 41) 은 각각 다음과 같은 XOR 함수를 구현하고, 이와 같이 가산기 출력 (446) 의 S 출력을 제공한다.
앞서 설명된 01101001 대신, LUT (44) 의 8 개 구성 입력들 (444) 의 값들은 순서대로 10010110 로 세팅하여, 이들 동일한 세트의 컴포넌트들이 감산기 특징을 구현하는데 사용될 수 있는 것이 인식될 것이다.
이들 동일한 세트의 컴포넌트들은 비교기 특징을 구현하는데 사용될 수 있는 것이 인식될 것이다. 상기의 경우에, LUT들은 XNOR 게이트들로서 구성되고, 출력들 (416 및 446) 상의 값들은 무시될 수 있다. 출력들 (415, 445) 은 앞서 설명된 M 입력과 캐리 값 간에 스위칭하는데 사용되고, 멀티플렉서 (654) 의 출력은 B 가 A 이상일 경우, 1 이다. 상기의 단락에서 설명된 것과 같이 2 비트 비교기가 구현되지만, 단일 LUT 는 다른 특징들의 구현을 위해 다른 LUT 를 자유롭게 하여, 1 비트 비교기를 구현하는데 사용될 수도 있음이 추가로 인식될 것이다.
도 7 은 도 4 를 참조하여 설명된 실시형태의 결합 로직 (45) 의 추가의 상세를 도시한다. 도 7 의 실시형태에서, 결합 로직은 8 비트 멀티플렉서를 구현하도록 배열된다. 도 7 에 도시된 것과 같이, LUT들 (41 및 44) 및 프로그래밍가능 제어기 (43) 가 도 4 를 참조하여 설명된 것과 같이 구성된다. 결합 로직 (65) 은 프로그래밍가능 제어기 (43) 의 2 개의 데이터 입력들에 또한 커플링되는, 외부 입력들 (452) 중 2 개의 외부 입력들로부터 데이터 입력들 (Sel0 및 Sel1) 을 수신하는 AND 게이트 (751) 를 포함한다. 결합 로직 (65) 은 하나의 입력에서 제 1 LUT3 (41) 로부터 그리고 다른 입력에서 외부 입력들 (452) 중 추가의 하나의 입력으로부터 출력을 수신하는 멀티플렉서 (752) 를 포함한다. 이러한 멀티플렉서 (752) 는 AND 게이트 (751) 로부터 출력된 값에 의해 스위칭된다. 결합 로직 (65) 은 하나의 입력에서 제 2 LUT3 (44) 로부터 그리고 다른 입력에서 외부 입력들 (452) 중 추가의 하나의 입력으로부터 출력을 수신하는 멀티플렉서 (753) 를 포함한다. 이러한 멀티플렉서 (753) 는 AND 게이트 (751) 로부터 출력된 값에 의해 스위칭된다. 결합 로직 (65) 은 멀티플렉서들 (752 및 753) 로부터 출력을 수신하고 외부 입력들 (452 sel2) 중 추가의 하나의 입력에 의해 스위칭되는 추가의 멀티플렉서 (754) 를 포함한다. 멀티플렉서 (754) 의 출력은 결합 로직 블록 (75) 의 데이터 출력에서 제공된다. 상기 실시형태에서, 프로그래밍가능은 이하 진리표 상의 입력들 (Sel0 및 Sel1) 에 기초하여 LUT들 (41 및 43) 의 구성을 세팅한다:
Figure pct00006
따라서 우리는 3 개의 선택 입력들 (Sel0, Sel1 및 Sel2) 을 사용하여 선택될 수 있는 8 개의 데이터 입력들 a, b, c, d, e, f, g, h 을 갖는 디바이스를 가져서, 설명된 구성이 8 비트 멀티플렉서의 기능성을 제공한다.
도 8 은 도 4 를 참조하여 설명된 실시형태의 결합 로직 (45) 의 추가의 상세를 도시한다. 도 8 의 실시형태에서, 결합 로직은 2 개의 4 비트 숫자들을 비교하고 이들 2 개의 숫자들이 동일한지 여부를 결정하도록 적응된, 동등 회로 (equality circuit) 를 구현하도록 배열된다. 도 8 에 도시된 것과 같이, LUT들 (41 및 44) 및 프로그래밍가능 제어기 (43) 가 도 4 를 참조하여 설명된 것과 같이 구성된다. 결합 로직 (85) 은 외부 입력들 (452) 중 2 개로부터 데이터 입력들을 수신하는 XNOR 게이트 (851) 를 포함한다. 결합 로직 (85) 은 외부 입력들 (452) 중 추가의 2 개로부터 데이터 입력들을 수신하는 추가의 XNOR 게이트 (852) 를 포함한다. 결합 로직 (85) 은 LUT 를 구성하는 멀티플렉서들의 어레이의 제 2 로우에서 값을 출력하는 멀티플렉서들의 그룹에 대응하는 제 2 LUT3 (44) 의 출력 (445) 및 XNOR (851) 의 출력으로부터 데이터 입력들을 수신하는 2 입력 AND 게이트 (853) 를 포함한다. 결합 로직 (85) 은 LUT 를 구성하는 멀티플렉서들의 어레이의 제 2 로우에서 값을 출력하는 멀티플렉서들의 그룹에 대응하는 제 1 LUT3 (41) 의 출력 (415), XNOR (852) 의 출력, 및 AND 게이트 (853) 의 출력으로부터 데이터 입력들을 수신하는 3 입력 AND 게이트 (854) 를 포함한다. 2 개의 LUT3들 (41 및 44) 은 XNOR 진리표에 의해 표시된 것과 같이, 제 2 로우 출력들 (415 및 445) 에 대응하는 제 2 로우 멀티플렉서들로 피드하는 2 개의 제 1 로우 멀티플렉서들에 대응하는 4 개의 구성 입력들을 각각 1001 로 세팅함으로써, 프로그래밍가능 제어기에 의해 XNOR들로서 구성된다:
Figure pct00007
각각의 LUT (41, 44) 는 잠재적으로 다른 LUT 가 다른 용도로 사용가능하게 하는, 2 비트 동등 회로로서 개별적으로 프로그래밍될 수 있는 것이 인식될 것이다. 이는 다른 회로 엘리먼트들의 부재시 그 엘리먼트들이 단일의 4 입력 AND 게이트들과 논리적으로 등가이지만, 도시된 것과 같이 AND 게이트들 (853 및 854) 이 분리하여 도시되는 이유이다.
따라서, 본 실시형태에 따른 동작 시에, 각각의 비트에 대하여 2 입력 XNOR 와 비트단위 비교가 수행되고 결과들이 AND 게이트와 결합되며, 따라서 모든 비트들이 동일할 경우, 2 개의 4 비트 값들이 동일하고 하나는 결합 로직 (85) 의 출력에서 AND (854) 에 의해 출력된다.
도 9 는 도 4 를 참조하여 설명된 실시형태의 결합 로직 (45) 의 추가의 상세를 도시한다. 도 9 의 실시형태에서, 결합 로직은 도 3 내지 도 8 을 참조하여 앞서 설명된 임의의 기능들을 구현하도록 배열된다. 도시된 것과 같이, 등가의 논리적인 컴포넌트들이 앞서 설명된 상이한 기능들, 부가적으로 요구되는 기능의 선택을 지원하는 추가의 로직 및 필요한 경우에 중복하는 컴포넌트들의 제외를 구현하기 위해 제공된다. 구체적으로, 상기 실시형태의 결합 로직 (95) 은 전파 기능들을 가지는데 일반적으로 대응하는 컴포넌트들의 그룹 (951x), 2 개의 LUT들의 멀티플렉싱에 대응하는 컴포넌트들의 그룹 (952x), 비교 기능들을 부가하는 것과 관련된 컴포넌트들의 그룹 (953x), 및 선택 기능에 관련된 그룹 (954x) 을 포함한다. 더 구체적으로, 전파 기능들을 가지는 것에 일반적으로 대응하는 컴포넌트들의 그룹 (951x) 은 데이터 입력들 (452) 로부터의 2 개의 입력들 (f 및 Cin) 을 수신하고 그 출력을 제 2 LUT (44) 의 제 3 데이터 입력 (443) 에 제공하는 멀티플렉서 (9511), 멀티플렉서 (9511) 로부터 그리고 제 2 LUT (44) 의 제 2 데이터 입력 (442) 으로부터 입력을 수신하고 LUT 를 구성하는 멀티플렉서들의 어레이의 제 2 로우에서 멀티플렉서의 출력에 대응하는 제 2 LUT (44) 의 출력 (445) 에 의해 스위칭되는 멀티플렉서 (9512), 데이터 입력들 (412) 로부터의 입력 (h) 및 멀티플렉서 (9512) 의 출력을 수신하는 멀티플렉서 (9513), 및 데이터 입력들 (452) 로부터의 입력 (i) 및 멀티플렉서 (9512) 의 출력을 수신하고, 그 출력을 제 2 LUT (41) 의 제 3 데이터 입력 (411) 에 제공하는 멀티플렉서 (9514) 를 포함한다. 2 개의 LUT들의 멀티플렉싱에 대응하는 컴포넌트들 (952x) 의 그룹은 프로그래밍가능 제어기 (43) 의 2 개의 데이터 입력들 (452) 에 대응하는 입력들 (a 및 b) 을 수신하고, 그 출력을 제 1 의 2 입력 멀티플렉서 (9522) 및 제 2 의 2 입력 멀티플렉서 (9523) 의 스위칭 단자들에 제공하는 AND 게이트 (9521) 를 포함한다. 멀티플렉서 (9522) 는 데이터 입력들 (452) 로부터의 데이터 입력 (j) 및 제 1 LUT (41) 의 출력 (416) 을 수신하고, 멀티플렉서 (9523) 는 데이터 입력들 (452) 로부터의 데이터 입력 (k) 및 제 1 LUT (44) 의 출력 (446) 을 수신한다. 멀티플렉서들 (9522 및 9523) 은 그들의 출력들을, 데이터 입력들 (452) 로부터의 데이터 입력 (c) 에 의해 스위칭되는 추가의 2 입력 멀티플렉서 (9524) 에 제공한다. 동등 함수 (equality function) 들을 부가하는 것에 관련된 컴포넌트들 (953x) 의 그룹은 데이터 입력들 (452) 로부터의 2 개의 입력들 (j 및 f) 를 수신하는 제 1 XNOR 게이트 (9531) 및 데이터 입력들 (452) 로부터의 2 개의 입력들 (i 및 k) 을 수신하는 제 2 XNOR 게이트 (9533) 를 포함한다. 그룹은 추가로, XNOR (9531) 로부터의 입력들과 LUT (44) 의 출력 (445) 을 수신하는 AND 게이트 (9531), 및 AND 게이트 (9532) 로부터의 입력 및 XNOR 게이트 (9533) 로부터의 입력 및 LUT (41) 의 출력 (415) 을 수신하는 3 입력 AND 게이트 (9534) 를 포함한다. 기능 선택에 관련된 그룹 (954x) 은 AND 게이트들 (9534 및 9532) 로부터 입력들을 수신하는 2 입력 멀티플렉서 (9541), 및 멀티플렉서 (9541), 멀티플렉서 (9513), 멀티플렉서 (9512) 및 멀티플렉서 (9524) 로부터 입력들을 수신하는 4 입력 멀티플렉서 (9542) 를 포함한다. 멀티플렉서들 (9511, 9541, 9542, 9514) 은 LUT 구성 셀들 또는 프로그래밍가능 제어기의 구성 셀들과 동일한 방식으로 시스템 초기화시 세팅되는, 개별 메모리 셀 (비도시) 에 저장된 값들에 의해 스위칭된다.
상이한 실시형태들의 비교를 용이하게 하기 위해, 한편으로 도 9 와 관련하여 설명된 엘리먼트들과, 다른 한편으로 다른 실시형태들 간의 일치는 다음과 같이 세팅될 수 있다:
Figure pct00008
따라서, 프로그래밍가능 로직 블록은 복수의 데이터 프로세싱 기능들의 구현을 위한 컴포넌트들을 포함하는 로직 회로를 포함할 수도 있고, 상기 복수의 데이터 프로세싱 기능들로부터 상기 특정 데이터 프로세싱 기능들을 프로그래밍가능하게 선택하기 위해 상기 로직 회로의 컴포넌트들에 각각 커플링된 하나 이상의 메모리 셀들을 더 포함한다.
도 9 의 실시형태에서뿐만 아니라 도 5, 도 6, 및 도 8 의 실시형태들에서, LUT들 (41 및 44) 은 2 개의 출력들을 가지고, 제 1 LUT (41) 의 출력들 중 제 1 출력 (416) 은 데이터 입력들 (411, 412, 413) 의 각각에 의해 멀티플렉싱된 임의의 입력들 (414) 에 대응하고, 출력들 중 제 2 출력 (415) 은 데이터 입력들 (411, 412, 413) 의 서브세트에 의해 멀티플렉싱된 입력들 (414) 의 임의의 서브세트에 대응한다. 구체적으로 도시된 것과 같이, 제 1 LUT (41) 의 8 개의 구성 입력들 중 4 개는 LUT 를 구성하는 멀티플렉서들의 제 1 및 제 2 로우들에 대응하는 2 개의 데이터 엔트리들 (412 및 413) 에 의해 멀티플렉싱된다.
제 2 LUT (44) 에 대해서와 유사하게, 출력들 중 제 1 출력은 데이터 입력들 (441, 442, 443) 의 각각에 의해 멀티플렉싱된 임의의 입력들 (444) 에 대응하고, 제 2 LUT 의 출력들 중 제 2 출력은 데이터 입력들의 서브세트에 의해 멀티플렉싱된 입력들의 임의의 서브세트에 대응한다. 구체적으로 도시된 것과 같이, 제 2 LUT (44) 의 8 개의 구성 입력들 중 4 개는 LUT 를 구성하는 멀티플렉서들의 제 1 및 제 2 로우들에 대응하는 2 개의 데이터 엔트리들 (441 및 442) 에 의해 멀티플렉싱된다.
LUT들 (41, 44) 중 하나 또는 양자에 대하여, 멀티플렉싱될 구성 입력들의 서브세트, 및 그들을 선택하는데 사용된 데이터 엔트리들의 서브세트는 구현될 기능에 의존하여 변화할 수도 있고, 2 개의 LUT들 간에 상이할 수도 있다.
앞서 설명된 기능성의 대안적인 회로들과 관련하여, 그리고 LUT들에 의해 제공된 기능들을 보완하도록 구현될 수도 있는 추가의 기능성과 관련하여, 결합 로직에 대한 가능한 대안적인 구성들이 제한되는 것이 인식될 것이다. 한편, 일부 기능들은 생략되거나 대체될 수도 있다.
도 10 은 일 실시형태에 따른 프로그래밍가능 제어기의 구현의 상세들을 도시한다. 도 10 에 도시된 것과 같이, 프로그래밍가능 제어기는 4 개의 입력들 (431/432) 을 8 개 출력들의 2 개 세트들로 디코딩하는, 디코더 (434) 를 포함한다. 신호들의 이들 2 개의 세트들은 8 개의 스위칭 박스들 (436, 437) 의 각각에 채널링된다. 8 개의 스위칭 박스들 (436, 437) 은 내부적으로 동일하고, 본 발명의 실시형태에 따른 스위칭 박스 (437) 의 내부 구조의 상세는 더 상세히 도시된다. 이들 스위칭 박스들의 각각은 8 의 2 개의 그룹들로 16 개의 AND 게이트들 (4371) 을 포함한다. 8 의 소정 그룹에서 각각의 AND 게이트는 그 출력을, 스위칭 박스의 2 개의 출력들 중 하나를 각각 제공하는, 2 개의 OR 게이트들 (4372) 중 하나에 피드한다. 이들 AND 게이트들의 각각은 메모리 블록 (435) 에서의 개별 메모리 셀로부터 제 2 입력을 수신한다. 이들로, 입력 핀들 (431 및 432) 상의 대응하는 미리 정의된 신호에 응답하여, LUT들 (41 및 44) 의 구성들에 대한 16 개의 미리 정의된 출력 패턴들 중 임의의 하나를 생성하는 것이 가능하다.
프로그래밍가능 제어기의 설명된 구조는 상이한 사이즈의 LUT들의 프로그래밍에 맞도록 스케일링될 수 있음이 인식될 것이다.
일부 경우들에서, 프로그래밍가능 로직 블록에 의해 구현될 논리적인 기능성들에 의존하여, 예컨대 도 7 을 참조하여 설명된 실시형태의 경우에서와 같이, 제어기의 출력들이 세팅되는 값들을 차례로 제약할 수도 있는, 입력 핀들 (431, 432) 중 일부 또는 전부에 특정 규칙들을 할당하는 것이 바람직할 수도 있으며, 도 7 에서 프로그래밍가능 로직 블록은 8 비트 멀티플렉서를 구현하고, 프로그래밍가능 제어기 (43) 의 2 개의 입력들 (432) 은 멀티플렉싱된 입력들로서 사용되고, 2 개의 LUT들 (41 및 44) 은 XNOR들로 구성되는 것이 인식될 것이다.
이와 같이, 프로그래밍가능 제어기는 8 개의 복수의 데이터 엔트리들 (431/432) 을 디코딩하도록 구성된 디코더 (434) 를 포함한다. 프로그래밍가능 제어기는 복수의 스위칭 박스들 (436, 437) 을 더 포함하고, 각각의 상기 스위칭 박스는 상기 디코더의 디코딩된 출력들의 각각, 및 상기 제 5 의 복수의 구성 입력들 중 개별 입력을 수신하며, 따라서 각각의 스위칭 박스는 출력 값을 제 2 의 복수의 구성 입력들 및 상기 제 5 의 구성 입력들의 각각에 접속하는 출력들 중 하나에 제공하고, 여기서 출력 (414, 444) 의 값은 상기 디코더의 상기 디코딩된 출력의 각각과 상기 제 2 의 복수의 구성 입력들 중 개별 입력의 논리적 AND 의 논리적 OR 에 의한 조합과 동일하다.
도시된 특정 실시형태에서, 스위칭 박스들의 수는 도시된 것과 같이 4 인, 제 8 의 복수의 데이터 엔트리들의 수의 제곱의 2 내지 1/2 와 동일하고, 따라서 8 개의 스위칭 박스들이 존재하고, 이들 각각은 16 개의 구성 값들 및 16 개의 구성 값들을 수신한다. 데이터 값들, 구성 값들 및 스위칭 박스들의 수들의 다수의 상이한 조합들이 제어될 LUT들 (41, 44) 의 수와 사이즈, 및 구현될 프로그래밍가능 함수들의 수와 복잡도에 의존하여 예상될 수도 있음이 인식될 것이다.
프로그래밍가능 제어기의 다수의 다른 구조들은 등가의 기능성을 제공할 것으로 예상될 수 있는 것이 인식될 것이다.
도 11 은 추가 실시형태에 따른 프로그래밍가능 제어기의 구현의 상세들을 도시한다. 도 11 의 주입 (implantation) 의 기능성은 도 10 과 동일한 것으로 인식될 것이다.
도 11 에 도시된 것과 같이, 프로그래밍가능 제어기 (43) 는 8 개의 LUT3들의 2 개의 뱅크들 (438 및 439) 을 포함하며, 뱅크 각각은 구성 메모리 (4300) 의 개별 셀들에 커플링된 8 개의 구성 입력들을 갖는다.
LUT들의 제 1 뱅크 (438) 에서 LUT들의 각각은 그 뱅크에서 각각의 LUT 의 3 개의 입력들에 공통으로 접속된 3 개의 입력 라인들 (4381, 4382, 4383) 을 갖는다. 이들 3 개의 입력 라인들은 프로그래밍가능 제어기 (43) 의 입력들 (k, a 및 b) 에 대응한다. LUT들의 제 2 뱅크 (439) 에서 LUT들의 각각은 그 뱅크에서 각각의 LUT 의 3 개의 입력들에 공통으로 접속된 3 개의 입력 라인들 (4391, 4392, 4393) 을 갖는다. 이들 3 개의 입력 라인들은 프로그래밍가능 제어기 (43) 의 입력들 (j, a 및 b) 에 대응한다. 따라서, 입력들 (a 및 b) 은 2 개의 뱅크들 (438, 439) 을 포함하는 16 개의 LUT3들의 각각에 대하여 공통이다.
LUT들의 제 1 뱅크 (438) 에서 LUT들의 각각은 출력 라인 (4384) 을 갖는다. 결과적인 8 개의 출력 라인들은 LUT (41) 의 구성 입력들을 제공하는 라인들 (414) 에 대응한다. LUT들의 제 2 뱅크 (439) 에서 LUT들의 각각은 출력 라인 (4394) 을 갖는다. 결과적인 8 개의 출력 라인들은 LUT (44) 의 구성 입력들을 제공하는 라인들 (444) 에 대응한다.
따라서 동작 시에, 프로그래밍가능 제어기 (43) 에 의해 구현될 기능성은 구성 메모리 (4300) 에서의 값들을 세팅함으로써 넓은 정도의 위도로 정의될 수 있다. 바람직한 실시형태에 따르면, 이들 값들은 시스템 초기화에서 세팅된다.
따라서, 프로그래밍가능 제어기는 복수의 프로그래밍가능 제어기 LUT들을 포함하는 것으로 고려될 수도 있고, 여기서 프로그래밍가능 제어기의 출력들 (414) 의 각각은 상기 프로그래밍가능 제어기 LUT들 중 하나의 개별 출력에 대응하고, 여기서 각각의 프로그래밍가능 제어기 LUT 의 구성 입력들은 구성 메모리 셀들 (4300) 의 개별 셀에 커플링된다.
추가로, 프로그래밍가능 제어기 LUT들의 데이터 입력들은 상기 프로그래밍가능 제어기의 데이터 엔트리들에 커플링될 수도 있다.
도시된 것과 같은 추가의 프로그래밍가능 제어기는 4 개의 데이터 엔트리들 k, a, b, j 을 가지고, 이들 중 2 개 (a, b) 는 프로그래밍가능 제어기 LUT들의 2 개의 개별 데이터 입력들에 공통으로 커플링되고, 제 3 엔트리 (k) 는 출력이 상기 제 1 LUT (41) 의 구성 입력에 대응하는 프로그래밍가능 제어기 LUT들의 각각의 제 3 개별 입력에 공통으로 커플링되고, 제 4 엔트리 (j) 는 출력이 제 2 LUT (44) 의 구성 입력에 대응하는 프로그래밍가능 제어기 LUT들의 각각의 제 3 개별 입력에 공통으로 커플링된다.
이러한 접근방식은 프로그래밍가능 제어기의 다수의 입력들 및 요구되는 것과 같이 구현될 기능들의 정확한 특성에 적응될 것임이 인식될 것이다.
도 3 부터 도 9 까지에 대하여 설명된 실시형태들은 로직 (45) 의 다양한 구성들과 연합하여 프로그래밍가능 제어기 (43) 를 제시하였지만, 프로그래밍가능 제어기 (43) 는 거의 없는 지원 로직 (45) 에 다수의 유용한 특징들을 제공할 수 있음이 인식될 것이다.
예를 들어, LUT들 (41 및 44) 과 함께 프로그래밍가능 제어기 (43) 는 더 큰 LUT들의 기능성을 제공하기 위해, 프로그래밍가능 제어기의 입력들 (k, a, b 및 j) 을 LUT들 (41, 44) 의 입력들에 부가하여 사용함으로써, 시스템이 LUT 용량을 증대시키도록 구성될 수 있다. 이러한 확장은 하나의 LUT 또는 다른 LUT 로 인한 것이거나, 그들 사이에서 분할되거나, 또는 양자에 의해 공통 입력들로서 공유될 수도 있다. 이 수단들로, 로직 블록은 기본 2 LUT3 구성에 부가하여 다음과 같은 기능성을 제공할 수 있다:
Figure pct00009
도 12 는 일 실시형태에 따라 FPGA 디바이스를 동작시키는 방법의 단계들을 도시한다.
이러한 방법은 예컨대, 앞서 설명된 것과 같은 복수의 프로그래밍가능 로직 블록들을 포함하는 FPGA 를 동작시키기 위해 의도된다. 도시된 것과 같이, 방법은 단계 (1201) 에서 시작하고, 그 후에 단계 (1203) 에서 프로그래밍가능 제어기와 연관된 제 1 의 복수의 메모리 셀들의 값들을 세팅하는 것을 계속하고, 그 후에 단계 (1204) 에서 FPGA 를 인에이블한다. 지금부터 동작 모드에서, 방법은 단계 (1205) 에서 데이터 입력을 프로그래밍가능 제어기에 제공하고, 그 결과 단계 (1206) 에서 프로그래밍가능 제어기는 제 1 LUT 및 제 2 LUT 의 구성 값들을 제 1 의 복수의 메모리 셀들의 값들 및 데이터 입력의 함수로서 세팅한다. 앞의 예들에 기초하여, 상기의 데이터 입력은 회로 구성 및 요구되는 동작에 의존하여 임의의 수의 비트들을 포함할 수도 있고, 각각의 LUT 의 모든 입력이 필수적으로 그 동작의 구현에 영향을 주는 것은 아니며, 상기 경우에 데이터 입력은 일부 입력들에 대하여 정의되지 않거나 유동적인 값들을 포함할 수도 있는 것이 인식될 것이다. 일부 경우들에서, 입력들은 높게 플로팅하거나 낮게 플로팅하는 것으로 가정될 수도 있고, 따라서 데이터 입력은 그에 따라 높거나 낮은 값들로 제한될 수도 있다.
다음에, 방법은 단계 (1207) 로 진행하고, 여기서 데이터 입력은 제 1 LUT 및 상기 제 2 LUT 에 제공된다. 앞의 예들에 기초하여, 상기의 데이터 입력은 회로 구성 및 요구되는 동작에 의존하여 임의의 수의 비트들을 포함할 수도 있고, 각각의 LUT 의 모든 입력이 필수적으로 그 동작의 구현에 영향을 주는 것은 아니며, 상기 경우에 데이터 입력은 일부 입력들에 대하여 정의되지 않거나 유동적인 값들을 포함할 수도 있는 것이 인식될 것이다. 일부 경우들에서, 입력들은 높게 플로팅하거나 낮게 플로팅하는 것으로 가정될 수도 있고, 따라서 데이터 입력은 그에 따라 높거나 낮은 값들로 제한될 수도 있다.
단계 (1208) 에서, 제 1 LUT 및 제 2 LUT 는 상기 프로그래밍가능 제어기에 의해 세팅된 구성 값들의 함수로서 단계 (1207) 에서 제공된 개별 데이터 입력들에 개별 로직 연산들을 수행하며, 그 후에 단계 (1210) 에서 종료하기 전에 상기 추가의 로직 연산의 결과를 출력한다.
다수의 구현들에서, 방법은 연산이 종료되기 전에 임의의 횟수만큼 새로운 입력 값들에 로직 연산을 반복하기 위해 단계 (1207) 로 루프백할 수도 있음이 인식될 것이다.
다수의 구현들에서, 방법은 연산이 종료되기 전에 임의의 횟수만큼 프로그래밍가능 제어기가 LUT들의 구성 값들을 변경하게 하는, 새로운 입력 값들에 기초하여 프로그래밍가능 제어기로부터 새로운 모드의 연산을 선택하기 위해 단계 (1205) 로 루프백할 수도 있음이 인식될 것이다.
도 13 은 일 실시형태에 따라 FPGA 디바이스를 동작시키는 방법의 단계들을 도시한다.
도 13 의 방법은 도 12 의 추가의 전개이고, 유사한 도면 부호들은 유사한 단계들에 대응하고, 그 방법은 로직 회로 (35, 45, 55, 65, 75, 85, 95) 와 같은 로직 회로의 연산 또는 본원에 또는 그 외에 언급된 다른 실시형태들로 확장한다.
이러한 방법은 예컨대, 앞서 설명된 것과 같은 복수의 프로그래밍가능 로직 블록들을 포함하는 FPGA 를 동작시키기 위해 의도된다. 도시된 것과 같이, 방법은 단계 (1201) 에서 시작하고, 그 후에 단계 (1302) 에서 로직 회로의 구성 입력들과 연관된 제 2 의 복수의 메모리 셀들의 값들을 세팅하는 것을 계속한다. 다음으로, 방법은 단계 (1203) 에서 프로그래밍가능 제어기와 연관된 제 1 의 복수의 메모리 셀들의 값들을 세팅하고, 그 후에 단계 (1204) 에서 FPGA 를 인에이블한다. 지금부터 동작 모드에서, 방법은 단계 (1205) 에서 데이터 입력을 프로그래밍가능 제어기에 제공하고, 그 결과 단계 (1206) 에서 프로그래밍가능 제어기는 제 1 LUT 및 제 2 LUT 의 구성 값들을 제 1 의 복수의 메모리 셀들의 값들 및 데이터 입력의 함수로서 세팅한다. 앞의 예들에 기초하여, 상기의 데이터 입력은 회로 구성 및 요구되는 동작에 의존하여 임의의 수의 비트들을 포함할 수도 있고, 각각의 LUT 의 모든 입력이 필수적으로 그 동작의 구현에 영향을 주는 것은 아니며, 상기 경우에 데이터 입력은 일부 입력들에 대하여 정의되지 않거나 유동적인 값들을 포함할 수도 있는 것이 인식될 것이다. 일부 경우들에서, 입력들은 높게 플로팅하거나 낮게 플로팅하는 것으로 가정될 수도 있고, 따라서 데이터 입력은 그에 따라 높거나 낮은 값들로 제한될 수도 있다.
다음에, 방법은 단계 (1307) 로 진행하고, 여기서 데이터 입력은 로직 회로, 제 1 LUT 및 상기 제 2 LUT 에 제공된다. 앞의 예들에 기초하여, 상기의 데이터 입력은 회로 구성 및 요구되는 동작에 의존하여 임의의 수의 비트들을 포함할 수도 있고, 각각의 LUT 의 모든 입력이 필수적으로 그 동작의 구현에 영향을 주는 것은 아니며, 상기 경우에 데이터 입력은 일부 입력들에 대하여 정의되지 않거나 유동적인 값들을 포함할 수도 있는 것이 인식될 것이다. 일부 경우들에서, 입력들은 높게 플로팅하거나 낮게 플로팅하는 것으로 가정될 수도 있고, 따라서 데이터 입력은 그에 따라 높거나 낮은 값들로 제한될 수도 있다.
단계 (1208) 에서, 제 1 LUT 및 제 2 LUT 는 상기 프로그래밍가능 제어기에 의해 세팅된 구성 값들의 함수로서 단계 (1207) 에서 제공된 개별 데이터 입력들에 개별 로직 연산들을 수행하며, 그 결과는 로직 회로에 출력된다. 단계 (1309) 에서, 그 후에 로직 회로는 상기 제 2 의 복수의 메모리의 값들의 함수로서 단계 (1307) 에서 수신된 데이터 및 상기 제 1 LUT 및 상기 제 2 LUT 의 출력들에 추가의 로직 연산을 수행하고; 그 후에 상기 추가의 로직 연산의 결과를 출력하며, 그 후에 단계 (1210) 에서 종료한다.
다수의 구현들에서, 방법은 연산이 종료되기 전에 임의의 횟수만큼 새로운 입력 값들에 로직 연산을 반복하기 위해 단계 (1307) 로 루프백할 수도 있음이 인식될 것이다.
다수의 구현들에서, 방법은 연산이 종료되기 전에 임의의 횟수만큼 프로그래밍가능 제어기가 LUT들의 구성 값들을 변경하게 하는, 새로운 입력 값들에 기초하여 프로그래밍가능 제어기로부터 새로운 모드의 연산을 선택하기 위해 단계 (1205) 로 루프백할 수도 있음이 인식될 것이다.
앞의 예들에 기초하여, 일부 경우들에서 LUT 들은 널 연산을 수행할 수도 있거나 그들의 출력은 로직 회로에 의해 생성된 결과들에 어떤 영향도 주지 않을 수도 있고 (따라서 로직 회로는 단계 (1307) 에서 수행된 데이터 입력들에만 연산을 수행한다), 다른 경우들에서 로직 회로는 LUT 의 출력들에 널 연산을 수행할 수도 있거나 또는 LUT들로부터의 결과들을 수정 없이 그 출력으로 간단히 통과시키며, 이 경우에 출력 결과는 오직, 단계 (1307) 에서 수신된 데이터 입력 및 단계 (1206) 에서 수신된 구성 값들 상의 LUT들의 연산에만 의존할 것이다. 일부 경우들에서 오직 LUT 또는 다른 것들이 소정 연산에 기여할 것임이 추가로 인식될 것이다. 앞서 논의된 것과 같이, 2 개의 LUT들은 임의의 사이즈일 수도 있고, 상이한 사이즈일 수도 있고, 개수가 2 를 초과할 수도 있다.
도 12 또는 도 13 을 참조하여 설명된 방법의 단계들은 예컨대 앞서 설명된 것과 같이 구현될 함수들에 의존하여, 상이한 단계들을 구현하도록 선택된 값들을 포함하는 특징적인 데이터스트림을 초래할 것임이 인식될 것이다.
단계들 (1302 및 1203) 은 임의의 순서로 구현될 수도 있고, 그들은 부분적으로 또는 완전히 병렬로 구현될 수도 있음이 인식될 것이다.
따라서, 2 개의 룩업 테이블들 (LUT) (41, 44) 을 포함하는 FPGA 에 대하여 프로그래밍가능 로직 블록이 제공된다. 이들 LUT들 (41, 44) 에 대한 구성 정보는, LUT 기능성을 자체적으로 통합하는 프로그래밍가능 제어기 (43) 에 의해 제공된다. LUT 기능성의 이러한 중간 층은 초기화 모드 동안 실행된 세팅들에 기초하여, 동작 모드에서 일차 LUT들 (41, 44) 의 거동을 프로그래밍가능하게 제어하기 위한 수단을 제공한다. 특정 실시형태들은 또한, 일차 LUT들의 프로그래밍가능 거동과 함께, 가산기들, 멀티플렉서들, 패리티 및 확장된 LUT 및 멀티플렉서 기능들을 포함하여 다수의 공통의 로직 기능들을 효율적으로 구현하기 위한 수단을 제공하는, 로직 회로 (35) 를 통합한다.
본원에서 설명된 구성들 및/또는 접근방식들은 특성이 예시적이고, 이들 특정 실시형태들 또는 예들은, 다수의 변형들이 가능하기 때문에, 제한된 의미로 고려되지 않는 것이 이해될 것이다. 본원에서 설명된 특정 구조들 또는 방법들은 임의의 수의 접근방식들 중 하나 이상을 나타낼 수도 있다. 이와 같이, 도시된 및/또는 설명된 다양한 행동들은 도시된 및/또는 설명된 순서로, 다른 순서로, 병렬로, 수행되거나, 생략될 수도 있다. 유사하게, 앞서 설명된 프로세스들의 순서는 변경될 수도 있다.
본 개시물의 주제는 본원에 개시된 다양한 프로세스들, 시스템들 및 구성들, 및 다른 특징들 기능들, 행동들, 및/또는 특성들뿐만 아니라, 이들의 임의의 및 모든 등가물들의 모든 신규하고 불확실한 조합들 및 서브-조합들을 포함한다.

Claims (15)

  1. 프로그래밍가능 로직 블록 (30) 으로서,
    제 1 의 복수의 데이터 입력들 (311), 제 2 의 복수의 구성 입력들 (312, 414), 및 제 3 의 복수의 출력들 (313) 을 갖는 제 1 LUT (31, 51), 및
    제 4 의 복수의 데이터 입력들 (341), 제 5 의 복수의 구성 입력들 (342, 444), 및 제 6 의 복수의 출력들 (343) 을 갖는 제 2 LUT (32, 42) 를 포함하고,
    상기 프로그래밍가능 로직 블록 (30) 은,
    상기 제 2 의 복수의 구성 입력들 (312, 414) 및 상기 제 5 의 복수의 구성 입력들 (342, 444) 의 각각에 접속하는 개별 출력, 제 7 의 복수의 구성 메모리 셀들 (4300, 435), 및 제 8 의 복수의 데이터 엔트리들 (432) 을 갖는 프로그래밍가능 제어기 (33, 43) 를 더 포함하고,
    상기 제 2 의 복수의 구성 입력들 (312, 414) 및 상기 제 5 의 복수의 구성 입력들 (342, 444) 의 각각의 값은, 상기 제 7 의 복수의 구성 메모리 셀들 (6300, 435) 의 값과 함께 상기 제 8 의 복수의 데이터 엔트리들 (432) 의 각각에 존재하는 값에 의해 미리 결정된 방식으로 표시되는 것을 특징으로 하는, 프로그래밍가능 로직 블록.
  2. 제 1 항에 있어서,
    상기 제 3 의 복수의 출력들 (313) 및 상기 제 6 의 복수의 출력들 (343) 의 각각에 접속된 로직 회로 (35, 45) 를 더 포함하며,
    상기 로직 회로 (35, 45) 는 특정 데이터 프로세싱 기능을 구현하기 위해 상기 출력들 (313, 343) 을 결합하도록 적응되는, 프로그래밍가능 로직 블록.
  3. 제 2 항에 있어서,
    상기 로직 회로는 복수의 데이터 프로세싱 기능들의 구현을 위한 컴포넌트들을 포함하고, 상기 복수의 데이터 프로세싱 기능들로부터 상기 특정 데이터 프로세싱 기능들을 프로그래밍가능하게 선택하기 위해 상기 로직 회로의 컴포넌트들에 각각 커플링된 하나 이상의 구성 메모리 셀들을 더 포함하는, 프로그래밍가능 로직 블록.
  4. 제 2 항 또는 제 3 항에 있어서,
    상기 복수의 데이터 프로세싱 기능들은 1 비트 전가산기의 기능성을 포함하는, 프로그래밍가능 로직 블록.
  5. 제 2 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 복수의 데이터 프로세싱 기능들은 2 비트 전가산기의 기능성을 포함하는, 프로그래밍가능 로직 블록.
  6. 제 2 항 내지 제 5 항 중 어느 한 항에 있어서,
    상기 복수의 데이터 프로세싱 기능들은 멀티플렉서의 기능성을 포함하는, 프로그래밍가능 로직 블록.
  7. 제 2 항 내지 제 6 항 중 어느 한 항에 있어서,
    상기 복수의 데이터 프로세싱 기능들은, 데이터 입력들의 수가 상기 제 2 의 복수보다 큰, 룩업 테이블의 기능성을 포함하는, 프로그래밍가능 로직 블록.
  8. 제 1 항 내지 제 7 항 중 어느 한 항에 있어서,
    상기 프로그래밍가능 제어기 (33, 43) 는 복수의 프로그래밍가능 제어기 LUT들 (438, 439) 을 포함하고, 상기 프로그래밍가능 제어기의 출력들의 각각은 상기 프로그래밍가능 제어기 LUT들 (438, 439) 중 하나의 개별 출력에 대응하며,
    각각의 상기 프로그래밍가능 제어기 LUT 의 구성 입력들은 상기 제 7 의 복수의 구성 메모리 셀들 (4300) 의 개별 구성 메모리 셀에 커플링되는, 프로그래밍가능 로직 블록.
  9. 제 8 항에 있어서,
    상기 프로그래밍가능 제어기 LUT들 (438, 439) 의 데이터 입력들은 상기 프로그래밍가능 제어기 (432) 의 상기 제 8 의 복수의 데이터 엔트리들에 커플링되는, 프로그래밍가능 로직 블록.
  10. 제 9 항에 있어서,
    상기 프로그래밍가능 제어기는 상기 제 8 의 복수의 데이터 엔트리들 (432) 을 디코딩하도록 구성된 디코더 (434) 를 더 포함하고,
    상기 프로그래밍가능 제어기 (33, 43) 는 복수의 스위칭 박스들 (436, 437) 을 더 포함하고, 각각의 상기 스위칭 박스 (436, 437) 는 상기 디코더 (434) 의 디코딩된 출력들의 각각, 및 제 5 의 복수의 상기 구성 메모리 셀들 (4300, 435) 의 개별 구성 메모리 셀을 수신하며,
    이에 의해, 각각의 스위칭 박스는 출력 값을 각각 상기 제 2 의 복수의 구성 입력들 (312, 414) 및 상기 제 5 의 복수의 구성 입력들 (342, 444) 의 각각에 접속하는 출력들 중 하나의 출력에 제공하고,
    상기 출력의 값은 상기 디코더의 상기 디코딩된 출력의 각각과 상기 제 2 의 복수의 구성 입력들의 개별 입력의 논리적 AND 의 논리적 OR 에 의한 조합과 동일한, 프로그래밍가능 로직 블록.
  11. 제 9 항 또는 제 10 항에 있어서,
    상기 프로그래밍가능 제어기 (33, 43) 는 4 개의 데이터 엔트리들을 가지고, 4 개의 데이터 엔트리들 중 2 개는 상기 프로그래밍가능 제어기 LUT들 (438, 439) 의 각각의 2 개의 개별 데이터 입력들에 공통으로 커플링되고, 상기 엔트리들 중 제 3 엔트리는 출력이 상기 제 1 LUT (31, 41) 의 구성 입력에 대응하는 상기 프로그래밍가능 제어기 LUT들 (438, 439) 의 각각의 제 3 개별 입력에 공통으로 커플링되고, 상기 엔트리들 중 제 4 엔트리는 출력이 상기 제 2 LUT (34, 44) 의 구성 입력에 대응하는 상기 프로그래밍가능 제어기 LUT들 (438, 439) 의 각각의 제 3 개별 입력에 공통으로 커플링되는, 프로그래밍가능 로직 블록.
  12. 제 1 항 내지 제 11 항 중 어느 한 항에 있어서,
    상기 제 1 LUT (31, 41) 의 상기 제 3 의 복수의 출력들 (313) 중 제 1 출력은 상기 제 1 의 복수의 데이터 입력들의 각각에 의해 멀티플렉싱된 상기 제 2 의 복수의 입력들 (312, 414) 의 임의의 입력들에 대응하고, 상기 제 1 LUT 의 상기 제 3 의 복수의 출력들 중 제 2 출력은 상기 제 1 의 복수의 데이터 입력들 (311) 의 서브세트에 의해 멀티플렉싱된 상기 제 2 의 복수의 입력들의 임의의 서브세트에 대응하거나, 또는 상기 제 2 LUT (34, 44) 의 상기 제 6 의 복수의 출력들 (343) 중 제 1 출력은 상기 제 4 의 복수의 데이터 입력들 (341) 의 각각에 의해 멀티플렉싱된 상기 제 5 의 복수의 입력들 (342, 444) 에 대응하고, 상기 제 2 LUT (34, 44) 의 상기 제 6 의 복수의 출력들 (343) 중 제 2 출력은 상기 제 4 의 복수의 데이터 입력들 (341) 의 서브세트에 의해 멀티플렉싱된 상기 제 5 의 복수의 입력들 (342, 444) 의 임의의 서브세트에 대응하는, 프로그래밍가능 로직 블록.
  13. FPGA 디바이스를 동작시키는 방법으로서,
    상기 FPGA 디바이스는,
    제 1 LUT (31, 41),
    제 2 LUT (34, 44), 및
    프로그래밍가능 제어기 (33, 43) 를 포함하고,
    상기 FPGA 디바이스를 동작시키는 방법은,
    상기 프로그래밍가능 제어기 (33, 43) 와 연관된 제 1 의 복수의 메모리 셀들 (4300, 435) 의 값들을 세팅하는 단계;
    상기 FPGA 를 인에이블하는 단계;
    데이터 입력을 상기 프로그래밍가능 제어기 (33, 43) 에 제공하는 단계로서, 그 결과 상기 프로그래밍가능 제어기 (33, 43) 는 상기 제 1 LUT (31, 41) 및 상기 제 2 LUT (33, 43) 의 구성 값들을 상기 제 1 의 복수의 메모리 셀들 (4300, 435) 의 값들과 상기 데이터 입력의 함수로서 세팅하는, 상기 데이터 입력을 상기 프로그래밍가능 제어기 (33, 43) 에 제공하는 단계;
    데이터 입력을 상기 제 1 LUT (31, 41) 및 상기 제 2 LUT (34, 44) 에 제공하는 단계로서, 상기 제 1 LUT (31, 41) 및 상기 제 2 LUT (34, 44) 는 상기 프로그래밍가능 제어기 (33, 44) 에 의해 세팅된 상기 구성 값들의 함수로서 상기 데이터 입력을 제공하는 단계에서 제공된 개별 데이터 입력들에 개별 로직 연산들을 수행하는, 상기 데이터 입력을 상기 제 1 LUT (31, 41) 및 상기 제 2 LUT (34, 44) 에 제공하는 단계; 및
    상기 개별 로직 연산들의 결과를 출력하는 단계를 포함하는, FPGA 디바이스를 동작시키는 방법.
  14. 제 13 항에 있어서,
    상기 FPGA 디바이스는 로직 회로 (35, 45) 를 더 포함하고,
    상기 FPGA 디바이스를 동작시키는 방법은,
    상기 FPGA 를 인에이블하는 단계 전에, 상기 로직 회로 (33, 43) 의 구성 입력들과 연관된 제 2 의 복수의 메모리 셀들의 값들을 세팅하는 단계로서, 상기 데이터 입력을 상기 제 1 LUT (31, 41) 및 상기 제 2 LUT (34, 44) 에 제공하는 단계는 데이터 입력을 상기 로직 회로 (33, 44) 에 제공하는 단계를 더 포함하고, 상기 로직 회로 (33, 44) 는 상기 제 2 의 복수의 메모리 셀들 (4300, 435) 의 값들의 함수로서 상기 제 1 LUT 및 상기 제 2 LUT 의 출력들에 추가의 로직 연산을 수행하는, 상기 제 2 의 복수의 메모리 셀들의 값들을 세팅하는 단계, 및
    상기 추가의 로직 연산들의 결과를 출력하는 단계를 더 포함하는, FPGA 디바이스를 동작시키는 방법.
  15. 제 13 항 또는 제 14 항에 기재된 FPGA 디바이스를 동작시키는 방법을 구현하기 위해 선택된 구성 값들을 포함하는 구성 데이터스트림.
KR1020177020088A 2015-10-15 2016-10-07 프로그래밍가능 게이트 어레이에 대한 로직 블록 아키텍처 KR20180116117A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP15306640.2 2015-10-15
EP15306640.2A EP3157171B1 (en) 2015-10-15 2015-10-15 Logic block architecture for programmable gate array
PCT/EP2016/074075 WO2017063956A1 (en) 2015-10-15 2016-10-07 Logic block architecture for programmable gate array

Publications (1)

Publication Number Publication Date
KR20180116117A true KR20180116117A (ko) 2018-10-24

Family

ID=54360379

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177020088A KR20180116117A (ko) 2015-10-15 2016-10-07 프로그래밍가능 게이트 어레이에 대한 로직 블록 아키텍처

Country Status (11)

Country Link
US (1) US20180269880A1 (ko)
EP (1) EP3157171B1 (ko)
JP (1) JP2018538704A (ko)
KR (1) KR20180116117A (ko)
CN (1) CN107925410A (ko)
CA (1) CA2973175A1 (ko)
IL (1) IL253181A0 (ko)
RU (1) RU2017129271A (ko)
SG (1) SG11201705292QA (ko)
TW (1) TW201729083A (ko)
WO (1) WO2017063956A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI695250B (zh) * 2018-11-28 2020-06-01 大陸商北京集創北方科技股份有限公司 可減少多工器數量的查找表配置方法及利用其之資訊處理裝置
CN113904677B (zh) * 2021-10-11 2022-07-01 北京汤谷软件技术有限公司 一种可定制多种输入的查找表电路及fpga新型阵列结构
CN113971159B (zh) * 2021-10-28 2024-02-20 山东芯慧微电子科技有限公司 一种基于改进型查找表结构的可编程逻辑块

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5414377A (en) 1992-12-21 1995-05-09 Xilinx, Inc. Logic block with look-up table for configuration and memory
US5889413A (en) 1996-11-22 1999-03-30 Xilinx, Inc. Lookup tables which double as shift registers
US6556042B1 (en) * 2002-02-20 2003-04-29 Xilinx, Inc. FPGA with improved structure for implementing large multiplexers
US6798240B1 (en) 2003-01-24 2004-09-28 Altera Corporation Logic circuitry with shared lookup table
US7330052B2 (en) * 2005-09-22 2008-02-12 Altera Corporation Area efficient fractureable logic elements
WO2009100564A1 (en) * 2008-01-30 2009-08-20 Agate Logic (Beijing), Inc. An integrated circuit with improved logic cells
FR2972566B1 (fr) 2011-03-11 2013-03-15 Sas Adicsys Design Système mono-puce comprenant un coeur programmable synthetisable et un procédé de fabrication d'un tel système

Also Published As

Publication number Publication date
JP2018538704A (ja) 2018-12-27
WO2017063956A1 (en) 2017-04-20
RU2017129271A (ru) 2019-02-18
CA2973175A1 (en) 2017-04-20
CN107925410A (zh) 2018-04-17
US20180269880A1 (en) 2018-09-20
IL253181A0 (en) 2017-08-31
EP3157171A1 (en) 2017-04-19
EP3157171B1 (en) 2020-06-03
SG11201705292QA (en) 2017-07-28
TW201729083A (zh) 2017-08-16

Similar Documents

Publication Publication Date Title
US7385417B1 (en) Dual slice architectures for programmable logic devices
US6271680B1 (en) Logic element for a programmable logic integrated circuit
US7671626B1 (en) Versatile logic element and logic array block
EP2391010B1 (en) A programmable logic device having complex logic blocks with improved logic cell functionality
US6812738B1 (en) Vector routing in a programmable logic device
US8581624B2 (en) Integrated circuits with multi-stage logic regions
US20050218929A1 (en) Field programmable gate array logic cell and its derivatives
US7193436B2 (en) Fast processing path using field programmable gate array logic units
US7902864B1 (en) Heterogeneous labs
US7164290B2 (en) Field programmable gate array logic unit and its cluster
KR20180116117A (ko) 프로그래밍가능 게이트 어레이에 대한 로직 블록 아키텍처
US7675321B1 (en) Dual-slice architectures for programmable logic devices
JP5523988B2 (ja) プログラマブル論理回路装置およびその回路決定方法
WO2007029167A1 (en) Logic modules for semiconductor integrated circuits
US7725867B2 (en) Gate-array or field programmable gate array
US6879184B1 (en) Programmable logic device architecture based on arrays of LUT-based Boolean terms
JP4914423B2 (ja) 相互接続構造体および論理回路装置
US20120280710A1 (en) Reuse of constants between arithmetic logic units and look-up-tables
US7605606B1 (en) Area efficient routing architectures for programmable logic devices
US6864713B1 (en) Multi-stage interconnect architecture for complex programmable logic devices
US7378872B1 (en) Programmable logic device architecture with multiple slice types
US6861871B1 (en) Cascaded logic block architecture for complex programmable logic devices
JP2882617B2 (ja) プログラマブル論理セル