KR101263114B1 - 프로그램가능 디바이스에서의 메모리 제어 방법 및 장치 - Google Patents

프로그램가능 디바이스에서의 메모리 제어 방법 및 장치 Download PDF

Info

Publication number
KR101263114B1
KR101263114B1 KR1020117017570A KR20117017570A KR101263114B1 KR 101263114 B1 KR101263114 B1 KR 101263114B1 KR 1020117017570 A KR1020117017570 A KR 1020117017570A KR 20117017570 A KR20117017570 A KR 20117017570A KR 101263114 B1 KR101263114 B1 KR 101263114B1
Authority
KR
South Korea
Prior art keywords
circuit
memory controller
sections
section
data
Prior art date
Application number
KR1020117017570A
Other languages
English (en)
Other versions
KR20110101226A (ko
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 KR20110101226A publication Critical patent/KR20110101226A/ko
Application granted granted Critical
Publication of KR101263114B1 publication Critical patent/KR101263114B1/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • 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/17736Structural details of routing resources
    • 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/17736Structural details of routing resources
    • H03K19/1774Structural details of routing resources for global signals, e.g. clock, reset

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Logic Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Dram (AREA)
  • Pulse Circuits (AREA)

Abstract

프로그램가능 회로(230)를 가지는 디바이스(225)에서의 메모리 제어 기법이 제공되며, 이 기법은 프로그램가능 회로가 현장 프로그램되기 전에 디바이스에 전용 메모리 제어기 회로(290)를 제공하는 것을 포함한다. 다른 기법은 디바이스(225)를 제조하는 단계를 포함하고, 이 제조하는 단계는 프로그램가능 회로가 현장 프로그램되기 전에 전용 메모리 제어기 회로(290)를 포함하는 프로그램가능 회로(230)를 형성하는 단계를 포함한다.

Description

프로그램가능 디바이스에서의 메모리 제어 방법 및 장치{METHOD AND APPARATUS FOR MEMORY CONTROL WITH A PROGRAMMABLE DEVICE}
관련 출원들의 상호 참조
본 출원은, 미국 특허법 119조 하에서, 2009년 1월 31일자로 출원된, 발명의 명칭이 "Apparatus and Method for a Memory Controller(메모리 제어기의 장치 및 방법)"(대리인 사건 번호 XP-3241 US)인 미국 가특허 출원 제61/148,926호, 및 2009년 1월 31일자로 출원된, 발명의 명칭이 "Architecture for Advanced Integrated Circuit Providing Good Performance and Low Cost(양호한 성능 및 저렴한 비용을 제공하는 개선된 집적 회로의 아키텍처)"(대리인 사건 번호 XP-3245 US)인 미국 가특허 출원 제61/148,927호에 기초하여 우선권을 주장한다. 이들 가특허 출원 둘다의 개시 내용은 이로써 참고 문헌으로서 그 전체 내용이 본 명세서에 포함된다.
본 발명의 실시예는 메모리 제어에 관한 것이다. 보다 상세하게는, 본 발명의 실시예는 프로그램가능 장치에서의 메모리 제어에 관한 것이다.
프로그램가능 논리 소자(PLD; programmable logic device)는 지정된 논리 함수를 수행하도록 프로그램될 수 있는 공지된 유형의 집적 회로이다. 한 유형의 PLD인 현장 프로그램가능 게이트 어레이(FPGA; field programmable gate array)는 통상적으로 프로그램가능 타일(programmable tile)의 어레이를 포함한다. 이들 프로그램가능 타일은, 예를 들어, IOB(input/output block), CLB(configurable logic block), BRAM(dedicated random access memory block), 곱셈기, DSP(digital signal processing block), 프로세서, 클록 관리자, DLL(delay lock loop) 등을 포함할 수 있다.
각각의 프로그램가능 타일은 통상적으로 프로그램가능 상호연결부(programmable interconnect) 및 프로그램가능 논리(programmable logic) 둘다를 포함한다. 프로그램가능 상호연결부는 통상적으로 PIP(programmable interconnect point)에 의해 상호연결된 다양한 길이의 많은 수의 상호연결 라인을 포함한다. 프로그램가능 논리는, 예를 들어, 함수 발생기, 레지스터, 산술 논리 등을 포함할 수 있는 프로그램가능 요소를 사용하여 사용자 설계의 논리를 구현한다.
프로그램가능 상호연결부 및 프로그램가능 논리는 통상적으로 프로그램가능 요소가 어떻게 구성되는지를 정의하는 구성 데이터의 스트림을 내부 구성 메모리 셀에 로드함으로써 프로그램된다. 구성 데이터는 외부 장치에 의해 메모리로부터(예를 들어, 외부 PROM으로부터) 판독되거나 FPGA내에 기록될 수 있다. 개별 메모리 셀의 집합적 상태가 이어서 FPGA의 기능을 결정한다.
다른 유형의 PLD는 CPLD(Complex Programmable Logic Device)이다. CPLD는 상호연결 스위치 매트릭스에 의해 서로에 또한 입/출력(I/O) 리소스에 연결된 2개 이상의 "기능 블록"을 포함한다. CPLD의 각각의 기능 블록은 PLA(Programmable Logic Array) 및 PAL(Programmable Array Logic) 장치에서 사용되는 것과 유사한 2-레벨 AND/OR 구조를 포함한다. CPLD에서, 구성 데이터는 통상적으로 칩 상의 비휘발성 메모리에 저장된다. 일부 CPLD에서, 구성 데이터는 칩 상의 비휘발성 메모리에 저장되고, 이어서 초기 구성 (프로그래밍) 시퀀스의 일부로서 휘발성 메모리에 다운로드된다.
이들 PLD(programmable logic device) 모두에 대해, 그 목적을 위해 장치에 제공된 데이터 비트에 의해 장치의 기능이 제어된다. 데이터 비트는 휘발성 메모리(예를 들어, FPGA 및 일부 CPLD에서와 같이, 정적 메모리 셀)에, 비휘발성 메모리(예를 들어, 일부 CPLD에서와 같이 플래시 메모리)에, 또는 임의의 다른 유형의 메모리 셀에 저장될 수 있다.
다른 PLD는 장치 상의 다양한 요소를 프로그램가능하게 상호연결시키는 금속층과 같은 처리층을 적용함으로써 프로그램된다. 이들 PLD는 마스크 프로그램가능 장치라고 한다. PLD는 또한 다른 방식으로, 예를 들어, 퓨즈 또는 안티퓨즈 기술을 사용하여 구현될 수 있다. "PLD(programmable logic device)"라는 용어는 이들 예시적인 장치는 물론 단지 부분적으로 프로그램가능한 장치를 포함하지만, 이들로 제한되지 않는다. 예를 들어, 한 유형의 PLD는 하드-코딩된 트랜지스터 논리 및 하드-코딩된 트랜지스터 논리를 프로그램가능하게 상호연결시키는 프로그램가능 스위치 패브릭의 조합을 포함한다.
PLD 장치 내의 프로그램가능 스위치 패브릭은 PLD 외부에 있는 메모리 장치로 또는 메모리 장치로부터 데이터를 전달할 필요가 있을 수 있고, PLD 내의 인터페이스 회로에 대한 메모리 제어기를 외부 메모리 장치에 제공하는 것이 유익할 수 있다. 한가지 방식은 PLD 외부에 있는 독립형 장치인 메모리 제어기를 제공하는 것이다. 다른 방식은 PLD의 현장 프로그래밍(field programming)을 수행하는 것이며, 따라서 현장 프로그래밍 동안, 메모리 제어기가 범용 회로 구성요소로부터 PLD 내에 생성된다. 이들 기존의 방식이 일반적으로 그의 의도된 목적에 적절하지만, 이들이 모든 측면에서 완전히 만족스러운 것은 아니었다.
본 발명의 목적은 프로그램가능 디바이스에서의 메모리 제어 방법 및 장치를 제공하는 것이다.
본 발명의 일 실시예는 프로그램가능 회로가 현장 프로그램되기 전에 전용 메모리 제어기 회로를 포함하는 프로그램가능 회로를 가지는 디바이스를 포함하는 장치를 포함한다.
본 발명의 다른 실시예는 디바이스를 제조하는 단계를 포함하는 방법을 포함하며, 이 제조하는 단계는 프로그램가능 회로가 현장 프로그램되기 전에 전용 메모리 제어기 회로를 포함하는 프로그램가능 회로를 형성하는 단계를 포함한다.
본 발명에 따르면, 프로그램가능 디바이스에서의 메모리 제어 방법 및 장치의 제공이 가능하다.
도 1은 몇가지 상이한 유형의 프로그램가능 논리 블록을 포함하는 향상된 FPGA(field programmable gate array) 아키텍처의 개략도이다.
도 2는 도 1의 FPGA의 대안의 실시예로서 그와 동일한 일반 아키텍처를 사용하고 몇가지 상이한 유형의 프로그램가능 논리 블록을 포함하는 다른 FPGA 아키텍처의 개략도이다.
도 3은 도 1 및 도 2의 FPGA의 대안의 실시예이고 전용 메모리 제어기 회로를 포함하는 FPGA를 포함하는 집적 회로의 개략 상면도이다.
도 4는 도 3의 FPGA의 선택된 부분을 나타내고 집적 회로 및 FPGA 외부에 있는 메모리 장치를 나타낸 상위-레벨 블록도이다.
도 5는 도 3의 집적 회로의 몇개의 물리적으로 연속적인 섹션 또는 블록을 나타내고 이들 블록 각각 내에 존재하는 FPGA의 일부 회로를 나타낸 도면이다.
도 6은 도 3의 집적 회로의 물리적으로 연속적인 섹션 또는 블록의 어레이의 개략 상면도이다.
도 7은 도 3의 집적 회로의 가늘고 긴 영역의 개략 상면도이다.
도 8 내지 도 13은 도 7의 가늘고 긴 영역의 각자의 세그먼트를 보다 상세히 또 확대된 스케일로 나타낸 개략 상면도이다.
도 1은 몇가지 상이한 유형의 프로그램가능 논리 블록을 포함하는 향상된 FPGA 아키텍처(100)의 개략도이다. 예를 들어, 도 1의 FPGA 아키텍처(100)는 멀티-기가비트 송수신기(multi-gigabit transceiver; MGT)(101), 구성가능 논리 블록(configurable logic block; CLB)(102), 랜덤 액세스 메모리 블록(random access memory block; BRAM)(103), 입/출력 블록(input/output block; IOB)(104), 구성 및 클록킹 논리(configuration and clocking logic; CONFIG/CLOCKS)(105), 디지털 신호 처리 블록(digital signal processing block; DSP)(106), 특수 입/출력 블록(specialized input/output block; I/O)(107)(예를 들어, 구성 포트 및 클록 포트), 및 기타 프로그램가능 논리(108)(디지털 클록 관리자, 아날로그-디지털 변환기, 시스템 모니터링 논리, 기타 등등)를 포함하는 많은 수의 상이한 프로그램가능 타일을 가진다. FPGA(100)는 또한 전용 프로세서 블록(dedicated processor block; PROC)(110)을 포함한다.
FPGA(100)에서, 각각의 프로그램가능 타일은 각각의 인접한 타일에서 대응하는 상호연결 요소로의/로부터의 표준화된 연결을 가지는 프로그램가능 상호연결 요소(programmable interconnect element; INT)(111)를 포함한다. 따라서, 프로그램가능 상호연결 요소들이 모두 모여 예시된 FPGA에 대한 프로그램가능 상호연결 구조를 구현한다. 프로그램가능 상호연결 요소(INT)(111)는 또한, 도 1의 상부에 포함된 일례로 나타낸 바와 같이, 동일한 타일 내의 프로그램가능 논리 요소로의/로부터의 연결을 포함한다.
예를 들어, CLB(102)는 사용자 논리 및 단일 프로그램가능 상호연결 요소(INT)(111)를 구현하도록 프로그램될 수 있는 구성가능 논리 요소(configurable logic element; CLE)(112)를 포함할 수 있다. BRAM(103)은 하나 이상의 프로그램가능 상호연결 요소에 부가하여 BRAM 논리 요소(BRAM logic element; BRL)(113)를 포함할 수 있다. 통상적으로, 타일에 포함된 상호연결 요소의 수는 타일의 높이에 의존한다. 도시된 실시예에서, BRAM 타일은 5개의 CLB와 동일한 높이를 가지지만, 다른 수(예를 들어, 4)도 사용될 수 있다. DSP 타일(106)은 적절한 수의 프로그램가능 상호연결 요소에 부가하여 DSP 논리 요소(DSP logic element; DSPL)(114)를 포함할 수 있다. IOB(104)는 하나의 프로그램가능 상호연결 요소(INT)(111) 인스턴스에 부가하여, 예를 들어, 2개의 입/출력 논리 요소(input/output logic element; IOL)(115) 인스턴스를 포함할 수 있다. 당업자에게는 명백할 것인 바와 같이, 예를 들어, I/O 논리 요소(115)에 연결된 실제 I/O 패드는 통상적으로 입/출력 논리 요소(115)의 영역으로 한정되지 않는다.
도시된 실시예에서, 다이의 중심 부근의 열 영역(columnar area)(도 1에서 음영되어 도시됨)은 구성, 클록, 및 기타 제어 논리를 위해 사용된다. 이 열로부터 뻗어 있는 수평 영역(109)은 FPGA의 폭에 걸쳐 클록 및 구성 신호를 분배하는 데 사용된다. 다른 실시예에서, 구성 논리는 다이의 코너와 같은 FPGA 다이의 다른 영역에 위치될 수 있다.
도 1에 예시된 아키텍처를 이용하는 일부 FPGA는 FPGA의 대부분을 이루고 있는 규칙적인 열 구조를 교란시키는 부가의 논리 블록을 포함한다. 부가의 논리 블록은 프로그램가능 블록 및/또는 전용 논리일 수 있다. 예를 들어, 도 1에 도시된 프로세서 블록(PROC)(110)은 몇개의 CLB 및 BRAM 열에 걸쳐 있다.
도 1은 하나의 예시적인 FPGA 아키텍처를 나타낸 것이다. 예를 들어, 열에 있는 논리 블록의 수, 열의 상대적 폭, 열의 수 및 순서, 열에 포함된 논리 블록의 유형, 논리 블록의 상대적 크기, 어레이 내에서의 논리 블록의 위치, 및 도 1의 상부에 포함된 상호연결/논리 구현은 순전히 예시적인 것이다. 실제의 FPGA에서, 사용자 논리의 효율적인 구현을 용이하게 해주기 위해 CLB가 있는 곳에는 항상 2개 이상의 인접한 CLB 열이 통상적으로 포함되지만, 인접한 CLB 열의 수는 FPGA의 전체 크기에 따라 변한다.
도 2는 도 1의 FPGA의 대안의 실시예로서 그와 동일한 일반 아키텍처를 사용하고 몇가지 상이한 유형의 프로그램가능 논리 블록을 포함하는 다른 FPGA 아키텍처(200)의 개략도이다. 도 2의 FPGA(200)는 CLB(202), BRAM(203), "I/O 뱅크"로 분할된 I/O 블록(204)(각각이 40개의 I/O 패드 및 수반되는 논리를 포함함), 구성 및 클록킹 논리(205), DSP 블록(206), 클록 I/O(207), 클록 관리 회로(clock management circuitry; CMT)(208), 구성 I/O(217), 및 구성 및 클록 분배 영역(209)을 포함한다.
도 2의 FPGA(200)에서, 예시적인 CLB(202)는 하나의 프로그램가능 상호연결 요소(INT)(211), 및 2개의 상이한 "슬라이스", 즉 슬라이스 L(SL)(212) 및 슬라이스 M(SM)(213)를 포함한다. 일부 실시예에서, 2개의 슬라이스는 동일하다(예를 들어, 슬라이스 L의 2개의 사본 또는 슬라이스 M의 2개의 사본). 다른 실시예에서, 2개의 슬라이스는 상이한 기능을 가진다. 일부 실시예에서, 어떤 CLB는 2개의 상이한 슬라이스를 포함하고, 어떤 CLB는 2개의 유사한 슬라이스를 포함한다. 예를 들어, 일부 실시예에서, 어떤 CLB 열은 2개의 상이한 슬라이스를 갖는 CLB만을 포함하는 반면, 다른 CLB 열은 2개의 유사한 슬라이스를 갖는 CLB만을 포함한다.
도 3은 FPGA(230)를 포함하는 집적 회로(225)인 장치의 개략 상면도이다. FPGA(230)는 도 1의 FPGA(100) 및 도 2의 FPGA(200)의 대안의 실시예이다. FPGA(230)는 집적 회로(225)의 중앙 영역(236)에 구현되는 FPGA 패브릭(235)을 포함한다. FPGA 패브릭(235)은 도 1 및 도 2와 관련하여 전술한 유형을 가지는 복수의 현장 프로그램가능 타일, 예를 들어, 타일(237, 238)을 포함한다.
집적 회로(225)는 중앙 영역(236)의 한쪽에 가늘고 긴 직사각형 영역(240, 241)을 포함하고, 중앙 영역의 반대쪽에 가늘고 긴 직사각형 영역(242, 243)을 포함한다. 가늘고 긴 영역(240)은 입/출력(I/O) 영역(251, 252, 253) 및 I/O 영역들(251, 252) 사이에 배치된 PLL(phase-locked-loop) 영역(255)을 포함한다. 가늘고 긴 영역(242)은 I/O 영역(261, 262, 263) 및 I/O 영역들(261, 262) 사이에 배치된 PLL(phase-locked-loop) 영역(265)을 포함한다. 복수의 IOB(도 3에 도시되지 않음)는 각각의 I/O 영역(251-253 및 261-263)에 구현된다. 각각의 IOB는 도 1과 관련하여 전술한 IOB(104)와 유사하고, I/O 수신기 및 구동기 회로를 포함한다. PLL 회로(267, 268)는 각각 PLL 영역(255, 265)에 구현된다. PLL 회로(267, 268)는 안정된 클록 신호를 제공한다.
집적 회로(225)는 또한 복수의 가늘고 긴 클록 분배 세그먼트(270-279)를 포함하는 클록 분배 영역을 가진다. 클록 분배 세그먼트(270)는 가늘고 긴 영역들(240, 241) 사이에 배치된다. 클록 분배 세그먼트(271)는 가늘고 긴 영역들(242, 243) 사이에 배치된다. 클록 분배 세그먼트(272-275)는 클록 분배 세그먼트(270)에 대략 수직이며, 클록 분배 세그먼트(270)를 따라 일정 간격으로 있는 위치에서 클록 분배 세그먼트(270)와 교차한다. 가늘고 긴 영역(241)의 일정 간격으로 있는 부분은 클록 분배 세그먼트(272-275)의 부분들과 중첩한다. 클록 분배 세그먼트(276-279)는 클록 분배 세그먼트(271)에 대략 수직이며, 클록 분배 세그먼트(271)를 따라 일정 간격으로 있는 위치에서 클록 분배 세그먼트(271)와 교차한다. 가늘고 긴 영역(243)의 일정 간격으로 있는 부분은 클록 분배 세그먼트(276-279)의 부분들과 중첩한다.
클록 버스(예시되지 않음)는 클록 분배 세그먼트(270-279) 내에 구현된다. PLL 회로(267)는 클록 분배 세그먼트(270, 272-275) 내에 구현되는 클록 버스에 전기적으로 연결되며, 따라서 PLL 회로(267)에 의해 제공된 클록 신호가 그 클록 버스를 통해 전송될 수 있다. PLL 회로(268)는 클록 분배 세그먼트(271, 276-279) 내에 구현되는 클록 버스에 전기적으로 연결되며, 따라서 PLL 회로(268)에 의해 제공된 클록 신호가 그 클록 버스를 통해 전송될 수 있다. 이러한 방식으로, PLL 회로(267, 268)에 의해 제공되는 각자의 클록 신호는 클록 버스를 통해 집적 회로(225)의 다양한 영역으로 분배된다.
FPGA(230)는 개별적이고 독립적인 2개의 전용 메모리 제어기 회로를 포함한다. 메모리 제어기 회로는 FPGA의 현장 프로그래밍 이전에 존재하고, FPGA 패브릭(230)과 각자의 외부 메모리 장치(도 3에 도시되지 않음) 사이의 데이터의 전달을 용이하게 해준다. 여기에서, 메모리 제어기 회로들 중 하나는 클록 분배 세그먼트(272-275)와 중첩하지 않는 가늘고 긴 영역(241)의 일부분에 구현되고, 실질적으로 동일한 메모리 제어기 회로가 클록 분배 세그먼트(276-279)와 중첩하지 않는 가늘고 긴 영역(243)의 일부분에 구현된다. 간단함 및 명확함을 위해, 이들 2개의 메모리 제어기 회로들 중 오직 하나만 상세히 기술할 것이다. 상세하게는, 가늘고 긴 영역(241) 내에 구현된 메모리 제어기 회로의 동작 및 물리적 구성에 대해 이하에서 보다 상세히 기술할 것이다.
도 4는 FPGA 패브릭(235), 외부 메모리 장치(285), 및 FPGA(230)의 일부이고 가늘고 긴 영역(241)(도 3) 내에 구현되는 메모리 제어기 회로(290)를 나타낸 상위-레벨 블록도이다. FPGA 패브릭(235)은 각각이 도 1 및 도 2와 관련하여 전술한 유형을 가지는 2개의 프로그램가능 타일을 포함하는 8개의 회로 부분(293-300) 및 16개의 이러한 프로그램가능 타일을 포함하는 회로 부분(313)을 포함하도록 프로그램될 수 있다. 회로 부분(293-300, 313)은, 함께 동작하여, 메모리 제어기 회로(290)를 통해 메모리 장치(285)로 또는 메모리 장치(285)로부터 데이터를 전달할 수 있다. 회로 부분(293-300, 313)은 FPGA(230)(도 3)가 현장 프로그램될 때에만 존재하게 될 것이다. 따라서, FPGA 패브릭(235)에서의 회로 부분의 특정 구성이 변할 수 있고, 도 4의 회로 부분(293-300, 313)은 한가지 가능한 구성만을 나타내고 단지 예시를 위해 도시되어 있다. 메모리 장치(285)는 더블 데이터 레이트[DDR, DDR2, DDR3 또는 LPDDR(모바일 DDR)]와 같은 표준에 부합하는 공지된 종래의 메모리 장치이다. 그렇지만, 메모리 장치는 다른 대안으로서 어떤 다른 유형의 메모리 장치일 수 있다. 메모리 제어기 회로(290)는 제어 부분 또는 섹션(301), 인터페이스 부분(314) 및 데이터 저장 부분(315)을 포함한다.
제어 부분(301)은 FPGA 패브릭(235)의 회로 부분(313), 데이터 저장 부분(315) 및 인터페이스 부분(314)에 연결된다. 제어 부분(301)은 명령 저장 부분(302)을 포함한다. 명령 저장 부분(302)은 FPGA 패브릭(235)으로부터의 명령을 저장하는 8개의 명령 포트(303-310)를 가진다. 명령 포트(303-310)에 공급된 명령은 FPGA 패브릭(235)과 메모리 장치(285) 사이의 데이터의 전달을 요청한다. 8개의 명령 포트(303-310)는 개별적이고, 총 400개 초과의 신호 라인을 포함하는 복수의 신호 버스를 통해 FPGA 패브릭(235)의 회로 부분(313)에 연결된다. 제어 부분(301)은 메모리 제어기 회로(290) 및 메모리 장치(285)의 동작을 제어하기 위해 명령 저장 부분(302)과 관련하여 동작하는 부가 회로를 포함한다.
인터페이스 부분(314)은 제어 부분(301), 데이터 저장 부분(315) 및 메모리 장치(285)에 연결된다. 인터페이스 부분(314)은 24개의 인터페이스 섹션(320-343)을 포함하고, 그 중 3개가 도 4에서 320, 321 및 343으로 보인다. 인터페이스 섹션(320-343) 각각은 메모리 제어기 회로(290)와 메모리 장치(285) 사이의 제어 및 데이터 신호의 전달을 용이하게 해주는 회로를 포함하고, 따라서 I/O 섹션이라고도 할 수 있다. 예를 들어, 각각의 인터페이스 섹션(320-343)은 2개의 IOB(104)(도 1)를 포함한다. 인터페이스 섹션(320-343)에 대해서는 나중에 보다 상세히 기술할 것이다.
데이터 저장 부분(315)은 8개의 현장-프로그램가능하고 독립적으로 구성가능한 데이터 포트 섹션(데이터 포트)(350-357)을 포함하고, 제어 부분(301), 인터페이스 부분(314) 및 FPGA 패브릭(235)에 연결된다. 구체적으로는, 8-비트 포트 인에이블 신호 버스(358)는 데이터 포트(350-357)를 제어 부분(301)에 연결시키고, 8개의 68-비트 신호 버스는 각각 회로 부분(293-300)을 데이터 포트(350-357)에 연결시킨다. 8개의 68-비트 신호 버스 각각에서, 68 비트 중 32 비트는 메모리 판독 동작을 위해 사용되고, 68 비트 중 다른 32 비트는 메모리 기록 동작을 위해 사용되며, 68 비트 중 나머지 4 비트는 마스킹 동작을 위해 사용된다. 메모리 판독 및 기록 동작에 대해서는 이하에서 보다 상세히 기술할 것이다. 마스킹 동작은 본 개시 내용의 초점이 아니며, 따라서 본 명세서에서 논의되지 않는다.
각각의 데이터 포트(350-357)는 FPGA 패브릭(235)으로부터 메모리 장치(285)로 이동하거나 메모리 장치로부터 FPGA 패브릭으로 이동하는 데이터를 일시적으로 저장하는 회로를 포함한다. 구체적으로는, 데이터 포트(350-357) 각각은 저장 요소로서 역할하는 FIFO(first-in-first-out) 저장 장치를 포함한다. 개시된 실시예에서, 각각의 FIFO 저장 장치는 최대 64개 워드(각각이 32 비트임)를 저장할 수 있지만, 이들 저장 장치는 다른 대안으로서 어떤 다른 구성을 가질 수 있다. 데이터 포트(350-357) 각각은 사용자 현장 프로그래밍에 의해 FPGA 패브릭(235)에 데이터를 공급하거나 그로부터 데이터를 수신하도록 구성될 수 있다. 현장 프로그래밍 후에, 각각의 데이터 포트(350-357)를 통한 데이터의 흐름은 단방향이다. 데이터 포트(350-357)는 각각 명령 포트(303-310)에 대응한다.
앞서 언급한 바와 같이, 데이터 포트(350-357)는 개별적이고 독립적으로 구성가능하다. FPGA 패브릭(235)의 관점에서 볼 때, 각각의 회로 부분(293-300)은 명령 포트(303-310) 중 하나 및 데이터 포트(350-357) 중 하나의 조합인 독립적이고 개별적인 인터페이스를 본다. 예를 들어, 회로 부분(293)은 명령 포트(303)와 데이터 포트(350)의 조합인 인터페이스를 보고, 회로 부분(300)은 명령 포트(310)와 데이터 포트(357)의 조합인 인터페이스를 본다. 그렇지만, 회로 부분(293-300)은 명령 포트(303-310)와 직접 통신하지는 않는다. 오히려, 회로 부분(293-300)은 회로 부분(313)과 통신하고, 회로 부분(313)이 이어서 명령 포트(303-310)와 통신한다. 회로 부분(293-300) 각각은 다른 회로 부분 또는 그 자신의 인터페이스 이외의 인터페이스의 존재 및 동작에 관해 알지 못할 수 있다. 예를 들어, 회로 부분(293)은 데이터 포트(351-357) 및 명령 포트(304-310)의 존재를 모를 수 있고, 데이터 포트(350) 및 명령 포트(303)로 이루어진 그 자신의 인터페이스를 통해 메모리 제어기 회로(290) 전체를 "소유"하는 것처럼 거동할 수 있다. 한편, 회로 부분(300)은 데이터 포트(350-356) 및 명령 포트(303-309)의 존재를 모를 수 있고, 따라서 데이터 포트(357) 및 명령 포트(310)와 통신하고 있는 동안, 회로 부분(293)이 데이터 포트(350) 및 명령 포트(303)와 동시에 통신하고 있을 수 있다는 것을 모를 수 있다. 개별적이고 독립적으로 구성가능한 인터페이스의 이러한 구성은, 인터페이스 각각이 또한 일종의 포트로 볼 수 있다는 사실을 고려하여, 멀티-인터페이스 구조 또는 멀티-포트 구조라고 할 수 있다.
메모리 인터페이스(370)는 메모리 제어기 회로(290)와 메모리 장치(285) 사이에 존재한다. 메모리 인터페이스(370)는 메모리 제어기 회로(290)와 메모리 장치(285)를 연결시키는 전기 도체를 포함한다. 전술한 제어 및 데이터 신호를 포함하는 다양한 산업-표준 신호가 메모리 인터페이스(370)를 통해 지나간다. 표 1은 이들 신호의 목록을 제공한다.
신호의 이름 신호의 기능 신호의 방향
DQ0-DQ15 데이터 버스 메모리 장치로/로부터(양방향)
UDQS 상부 바이트 데이터 스트로브 메모리 장치로부터
LDQS 하부 바이트 데이터 스트로브 메모리 장치로부터
CLK 클록 메모리 장치로
CLK_N CLK의 역 메모리 장치로
WE 기록 인에이블 메모리 장치로
CKE 클록 인에이블 메모리 장치로
RAS 행 주소 스트로브 메모리 장치로
CAS 열 주소 스트로브 메모리 장치로
BA0-BA2 뱅크 주소 메모리 장치로
UDM 상부 바이트 데이터 마스크 메모리 장치로
LDM 하부 바이트 데이터 마스크 메모리 장치로
A0-A14 주소 메모리 장치로
ODT 온 다이 종료 메모리 장치로
RESET 리셋 메모리 장치로
이제부터, 메모리 제어기 회로(290)가 FPGA 패브릭(235)과 메모리 장치(285) 사이의 데이터 전달을 용이하게 해주는 방법의 일례를 제공하기 위해, 통상적인 메모리 판독 상황 및 통상적인 메모리 기록 상황 동안에 일어나는 동작에 대해 간략히 기술할 것이다. 이후의 논의를 위해, 데이터 포트(351, 353, 354, 355)가 FPGA 패브릭(235)으로부터 데이터를 수신하기만 하도록 현장 프로그램되었고, 데이터 포트(350, 352, 356, 357)가 FPGA 패브릭(253)으로 데이터를 공급하기만 하도록 현장 프로그램되었으며, 회로 부분(293-300)이 사용자 현장 프로그래밍에 의해 이미 형성되어 있는 것으로 가정한다. 명확함 및 간단함을 위해, 이하에서 논의되는 메모리 판독 및 메모리 기록 동작의 일례는 회로 부분(293, 294)의 관점만을 반영하고 있다.
메모리 판독은 FPGA 패브릭(235) 내의 회로 부분(293)이 메모리 장치(285)에 데이터를 요청하고 그로부터 데이터를 수신하는 동작이다. 이것을 달성하기 위해, 회로 부분(293)은 회로 부분(313)에 명령어를 전송하고, 회로 부분(313)은 이어서 명령 포트(303)를 통해 제어 부분(301)에 명령어를 전송하여, 지정된 메모리 주소에서 시작하여 지정된 양의 데이터가 판독되어야 한다고 요청한다. 그에 응답하여, 제어 부분(301)은 주소 및 제어 신호를 인터페이스 부분(314)을 통해 메모리 장치(285)로 전송한다. 이들 신호에 응답하여, 메모리 장치(285)는 지정된 주소에서 시작하여 데이터에 액세스하고, 인터페이스 부분(314)에 대한 들어오는 데이터로서 DDR 데이터를 출력한다. 인터페이스 부분(314)은 들어오는 데이터를 포착하고 이 데이터를 데이터 저장 부분(315)에 출력한다. 데이터는 데이터 포트(350)에 의해 일시적으로 저장되고, 이어서 회로 부분(293)에 의해 검색된다.
메모리 기록은 FPGA 패브릭(235) 내의 회로 부분(294)이 메모리 장치(285)로 데이터를 전송하는 동작이다. 이것을 달성하기 위해, 회로 부분(294)은 데이터를 데이터 포트(351)에 출력하여 그곳에 일시적으로 저장시킨다. 그 후에, 회로 부분(294)은 회로 부분(313)에 명령어를 전송하고, 회로 부분(313)은 이어서 명령 포트(304)를 통해 제어 부분(301)에 명령어를 전송하여, 지정된 메모리 주소에서 시작하여 데이터 포트(351) 내의 데이터가 메모리 장치(285)에 저장되어야 한다고 요청한다. 제어 부분(301)은 인터페이스 부분(314)을 통해 메모리 장치(285)와 통신하고, 메모리의 어느 주소에 데이터가 기록되어야 하는지를 지정한다. 명령 포트(304)는 이어서 인터페이스 섹션(320-343) 중 일부를 통해 데이터를 전송한다. 데이터는 이어서 지정된 메모리 주소에서 메모리 장치(285)에 기록된다.
이상의 일례들이 단지 회로 부분(293, 294)의 관점에서 메모리 판독 및 기록 동작을 예시하고 있지만, 다른 회로 부분(295-300)이 회로 부분(293, 294)과 동시에 그리고 유사한 방식으로 메모리 판독 및/또는 기록 동작을 요청하고 있을 수 있다.
집적 회로(225)(도 3)는 각각이 FPGA(230)(도 3)의 회로를 포함하는 복수의 물리적으로 연속적인 섹션 또는 블록을 포함한다. 도 5는 380-384에 이들 물리적으로 연속적인 섹션 또는 블록 중 몇개를 나타내고 이들 블록 각각 내에 존재하는 FPGA의 일부 회로를 나타낸 도면이다. 상세하게는, 블록(380-384)은 각각 FPGA(230) 내의 회로의 일부분인 회로 섹션(390-394)을 포함한다. FPGA(230)는 또한 도 5에서 파선으로 개략적으로 나타내어져 있는 상호연결 구조(398)를 포함한다. 상호연결 구조(398)는 외부 장치[도 4의 메모리 장치(285) 등]로부터 들어오는 신호를 FPGA의 다양한 섹션으로 라우팅하고, FPGA(230)로부터 나가는 신호를 외부 장치로 라우팅하며, FPGA 내에서 이동하는 내부 신호를 라우팅한다. 상호연결 구조(398)는 블록들에 구현되는 복수의 상호연결 섹션을 포함한다. 간단함을 위해, 도 5는 블록(380-384) 내에 각각 구현되는 5개의 이러한 상호연결 섹션(400-404)만을 나타내고 있다.
상호연결 섹션(400-404)은 각자의 셀렉터 섹션(420-424)은 물론, 각자의 프로그램가능 메모리 셀 섹션(430-434)을 포함한다. 셀렉터 섹션(420-424) 각각은 각자의 상호연결 섹션(401-404)을 통해 이동하는 전기 신호를 라우팅하는 스위치 또는 멀티플렉서와 같은 라우팅 회로를 포함한다. 메모리 셀 섹션(430-434)은 각각 셀렉터 섹션(420-424)에 연결되고 사용자 현장 프로그래밍에 따라 원하는 라우팅 구성을 구현하라고 셀렉터 섹션에 지시한다. 회로 섹션(390-394)은 각각 하드와이어링(hard-wiring)(440-444)을 통해 셀렉터 섹션(420-424)에 연결된다.
각각의 상호연결 섹션은 다른 상호연결 섹션의 전부가 아닌 일부에 직접 전기적으로 연결되어 있다. 도 5에서, 상호연결 섹션(400)은 상호연결 섹션(403)에 직접 전기적으로 연결되어 있지 않고, 각자의 금속 배선(metallization run)(451, 452, 453)을 통해 3개의 상호연결 섹션(401, 402, 404)에 직접 전기적으로 연결되어 있다. 보다 구체적으로는, 셀렉터 섹션(420)은 각자의 금속 배선(451, 452, 453)을 통해 셀렉터 섹션(421, 422, 424)에 연결된다. 그렇지만, 셀렉터 섹션(420)과 셀렉터 섹션(423) 사이에 직접적인 금속 배선이 없으며, 따라서 상호연결 섹션(400)과 상호연결 섹션(403) 사이에 직접적인 전기적 연결이 존재하지 않는다. 셀렉터 섹션(423)은 금속 배선(454)[셀렉터 섹션(420)에 직접 연결되어 있는 금속 배선(451-453)과의 혼동을 피하기 위해 파선으로 도시되어 있음]을 통해 셀렉터 섹션(422)에 직접 연결되어 있다. 금속 배선(451-454) 각각은 집적 회로(225)(도 3)의 다양한 층에 있는 비아, 접점, 및 금속 상호연결 라인을 포함한다.
회로 섹션(390)은 중간의 상호연결 섹션을 통해 지나가는 회로 섹션(391, 392 또는 394) 중 임의의 섹션과 직접 통신할 수 있다. 설명을 위해, 메모리 셀 섹션(430-432, 434)이 현장 프로그래밍 동안 적절히 프로그램되는 경우, 회로 섹션(390)에 의해 전송된 신호는 셀렉터 섹션(420), 금속 배선(451) 및 셀렉터 섹션(421)을 통해 회로 섹션(391)으로 라우팅될 수 있다. 이와 유사하게, 회로 섹션(390)으로부터의 동일한 신호가 셀렉터 섹션(420), 금속 배선(452) 및 셀렉터 섹션(422)을 통해 회로 섹션(392)으로 라우팅될 수 있다. 회로 섹션(390)으로부터의 동일한 신호가 또한 셀렉터 섹션(420), 금속 배선(453) 및 셀렉터 섹션(424)을 통해 회로 섹션(394)으로 라우팅될 수 있다. 그렇지만, 동일한 신호가 회로 섹션(393)으로 라우팅되기 위해, 신호는 중간의 상호연결 섹션을 통해 라우팅되어야만 한다. 예를 들어, 회로 섹션(390)으로부터 전송된 신호는 먼저 셀렉터 섹션(420) 및 금속 배선(452)을 통해, 중간의 상호연결 섹션으로서 역할하는 상호연결 섹션(402)의 셀렉터 섹션(422)으로 라우팅될 수 있다. 셀렉터 섹션(422)은 이어서 금속 배선(454) 및 셀렉터 섹션(423)을 통해 그 신호를 회로 섹션(393)으로 라우팅할 수 있다. 셀렉터 섹션(422)이 그 신호를 회로 섹션(392)으로 라우팅할 필요가 없지만, 그렇게 할 수도 있다.
도 6은 집적 회로(225)(도 3)의 물리적으로 연속적인 섹션 또는 블록의 어레이의 개략 상면도이다. 도 6에서의 이들 블록 각각은 도 5에서의 블록(380-384) 중 하나와 유사하다. 도 6은 이들 블록 간의 전기적 연결의 구성을 설명하는 데 사용된다. 블록들이 도 6에서 인접한 직사각형 블록의 행 및 열로서 개략적으로 나타내어져 있으며, 여기서 각각의 블록은 상호연결 섹션(400-404)(도 5)과 유사한 예시되지 않은 상호연결 섹션을 포함하고, 회로 섹션(390-394)(도 5)과 유사한 예시되지 않은 회로 섹션을 포함한다.
도 6에서의 블록들 간의 거리는 직교축을 따라 측정되는 2개의 점 간의 거리인 "맨하튼 거리(Manhattan distance)"로 측정된다. 이 경우에 적용되는 바와 같이, 블록들 간의 맨하튼 거리는 열 및 행을 따라 직교 방향으로 있는 블록 단위로 측정된다. 한 일례로서, 블록(478)과 블록(460) 사이의 맨하튼 거리는 블록(460)과 블록(471) 사이의 거리와 블록(471)과 블록(478) 사이의 거리의 합이다. 블록(471)과 블록(460) 사이의 맨하튼 거리는 2 블록인데, 그 이유는 460으로부터의 신호가 블록(471)에 도달하기 위해 2개의 블록의 거리만큼 이동해야 하기 때문이다. 이와 유사하게, 블록(471)과 블록(478) 사이의 맨하튼 거리도 역시 2 블록이다. 따라서, 블록(460)과 블록(478) 사이의 맨하튼 거리는 4 블록(2 블록 + 2 블록)이다.
도 6에서의 블록들 각각은 맨하튼 거리에서 1 또는 2 블록 떨어져 있는 모든 블록에 직접 전기적으로 연결되어 있고, 또한 맨하튼 거리에서 4 블록 떨어져 있는 블록의 전부가 아닌 일부에 직접 연결되어 있다. 한 일례로서, 블록(460)의 관점에서 볼 때, 블록(461-464) 각각은 1 블록 떨어져 있고, 블록(465-472) 각각은 2 블록 떨어져 있다. 따라서, 블록(460)과 블록(461-464, 465-472) 사이에 직접적인 전기적 연결이 존재한다. 또한 맨하튼 거리에서 4 블록 떨어져 있는 특정 블록과 블록(460) 사이에도 직접적인 전기적 연결이 존재한다. 상세하게는, 블록(473-480) 각각은 4 블록 떨어져 있고, 각각이 블록(460)에 직접 전기적으로 연결되어 있다. 따라서, 블록(461-480) 내의 상호연결 섹션 각각은 각자의 금속 배선을 통해 블록(460) 내의 상호연결 섹션에 직접 전기적으로 연결된다. 설명의 편의상, 블록(460)에 직접 전기적으로 연결되어 있는 블록(461-480) 모두가 도 6에서 음영으로 나타내어져 있다.
구체적으로 예시되어 있지는 않지만, 블록(460)에 대해 전술한 연결 패턴이 또한 집적 회로(225)(도 3)의 다른 블록들 각각에 대해서도 존재한다. 일례로서, 블록(481)의 관점에서 볼 때, 블록(471, 470, 478, 482)은 1 블록 떨어져 있고, 블록(464, 463, 483-488)은 2 블록 떨어져 있으며, 블록(461, 489-495)은 4 블록 떨어져 있다. 따라서, 블록(481) 내의 상호연결 섹션과 블록(471, 470, 478, 482, 464, 463, 483-488, 461, 489-495) 각각 내의 상호연결 섹션 사이에 직접적인 전기적 연결이 존재한다.
그렇지만, 블록(481)과 블록(460) 사이에는 직접적인 전기적 연결이 존재하지 않는다. 따라서, 신호가 블록(460) 내의 회로 섹션으로부터 블록(481) 내의 회로 섹션으로 라우팅되기 위해, 신호는 블록(461, 463, 464, 470, 471, 또는 478)[이들 각각은 블록(460, 481) 둘다에 직접 전기적으로 연결되어 있음] 중 하나 내의 상호연결 섹션과 같은 중간의 상호연결 섹션을 통해 라우팅되어야 할 것이다. 상호연결 구조(398)을 통한 각각의 신호의 구체적인 경로가 각각의 상호연결 섹션 내의 셀렉터 섹션을 제어하는 메모리 셀 섹션의 사용자 현장 프로그래밍 동안에 설정되며, 나중에 시스템 동작 동안 변하지 않는다. 따라서, 상호연결 구조(398)는 주어진 상호연결 섹션으로부터의 신호가 상호연결 구조의 임의의 다른 상호연결 섹션으로 라우팅될 수 있게 해준다.
도 7은 메모리 제어기 회로(290)(도 4)가 구현되어 있는 가늘고 긴 영역(241)(도 3)의 개략 상면도이다. 가늘고 긴 영역(241)은 각각이 메모리 제어기 회로(290)의 각자의 회로 섹션이 구현되어 있는 하나 이상의 블록을 포함하고 있는 부분(505-512)을 포함한다. 이들 블록은 도 6과 관련하여 전술한 블록과 유사하다. 도 7로부터 알 수 있는 바와 같이, 메모리 제어기 회로(290)가 구현되어 있는 가늘고 긴 영역(241)은 가늘고 긴 영역의 "실면적" 또는 면적의 대부분을 함께 구성하는 부분(505-512)을 가진다. 가늘고 긴 영역(241)의 나머지 부분은 메모리 제어기 회로(290)의 일부가 아닌 다른 회로를 포함하는 블록을 포함한다. 이 다른 회로는 클록 버스 및 표준 입/출력 회로를 포함한다. 도 3과 관련하여 앞서 논의된 바와 같이, 가늘고 긴 영역(241)의 일정 간격으로 있는 부분은 클록 분배 세그먼트(272-275)(도 3)의 부분과 중첩해 있다. 이들 중첩하는 부분은 가늘고 긴 영역(241)에 515-518로 도시되어 있다.
가늘고 긴 영역(241)은 개념적으로 6개의 세그먼트(520-525)로 분할될 수 있다. 도 8 내지 도 13은 이들 각자의 세그먼트(520-525)의 개략 상면도이고, 이들 세그먼트를 보다 상세히 그리고 확대된 스케일로 도시하고 있다. 세그먼트(520)는 블록(530-541)을 포함하고, 세그먼트(521)는 블록(542, 543)을 포함하며, 세그먼트(522)는 블록(544-554)을 포함하고, 세그먼트(523)는 블록(555-562)을 포함하며, 세그먼트(524)는 블록(563-569)을 포함하고, 세그먼트(525)는 블록(570-576)을 포함한다.
도 5와 관련하여 전술한 상호연결 구조(398)는 상호연결 섹션(600-651)을 포함한다. 상호연결 섹션(600-651)은 세그먼트(520-525) 전체에 걸쳐 물리적으로 분산된 방식으로 구현되어 있다. 구체적으로는, 블록(532, 534, 536, 538-541, 544-549, 552-554, 556, 559, 561, 563, 565, 567, 569, 572)은 각각 상호연결 섹션(600-606, 619-627, 630, 633, 636, 639, 642, 645, 648, 651)을 포함한다. 블록(542)은 12개의 상호연결 섹션(607-618)을 포함한다. 블록(555, 557, 560, 562, 564, 566, 568, 571) 각각은 상호연결 섹션(628-629, 631-632, 634-635, 637-638, 640-641, 643-644, 646-647, 649-650) 중 2개를 포함한다. 상호연결 섹션(600-651)의 분산 구현은 상호연결 구조 내에서의 라우팅을 현장 프로그래밍할 때 잠재적인 신호 병목을 감소시키는 데 도움을 주는데, 그 이유는 메모리 제어기 회로(290)에 관한 수많은 신호 모두가 하나의 작은 영역으로 또는 그로부터 라우팅될 필요가 없기 때문이다.
24개의 인터페이스 섹션(320-343)(도 4)은 블록(532, 534, 536, 538-541, 544-549, 552-554, 556, 559, 561, 563, 565, 567, 569, 572)에 각각 구현되고, 각각 그 블록 내의 상호연결 섹션(600-606, 619-624, 625-627, 630, 633, 636, 639, 642, 645, 648, 651)에 하드와이어되어 있다. 인터페이스 섹션(320-343) 각각은 FPGA(230)(도 3)에 들어가거나 그로부터 빠져나가는 신호의 전파 지연을 조정하는 공장-설정된 프로그램가능 지연 회로와 같은 어떤 회로를 포함한다. 명확함을 위해 그리고 참조의 편의상, 각각의 인터페이스 섹션(320-343)에 의해 처리되는 신호의 이름은 인터페이스 섹션이 구현되어 있는 블록 옆에 도시되어 있다.
인터페이스 섹션(320, 321, 322, 323, 324, 326, 328, 330, 331)은 메모리 주소 신호(A0-A14)를 처리한다. 인터페이스 섹션(321)은 또한 리셋 신호(reset signal) RESET를 처리한다. 인터페이스 섹션(322)은 클록 인에이블 신호(clock enable signal) CKE를 처리한다. 인터페이스 섹션(330)은 온다이 종료 신호(on-die termination signal) ODT를 처리한다. 인터페이스 섹션(325, 327)은 뱅크 주소 신호(BA0-BA2)를 처리한다. 인터페이스 섹션(325)은 또한 기록 인에이블 신호(write enable signal) WE를 처리한다. 인터페이스 섹션(329)은 클록 신호 CLK 및 반전 클록 신호(inverse clock signal) CLK_N을 처리한다. 인터페이스 섹션(332)은 행 주소 스트로브 신호(row address strobe signal) RAS 및 열 주소 스트로브 신호(column address strobe signal) CAS를 처리한다. 인터페이스 섹션(333)은 상부 바이트 데이터 마스크 신호(upper byte data mask signal) UDM 및 하부 바이트 데이터 마스크(lower byte data mask) LDM을 처리하는 회로 부분(333A)을 포함한다. 명확함을 위해, 이 회로 부분(333A)은 인터페이스 섹션(333)과 별도로 나타내어져 있다. 인터페이스 섹션(336)은 사실상 메모리 장치(285)(도 3)의 클록 신호인 하부 바이트 데이터 스트로브 신호(lower byte data strobe signal) LDQS(660)를 처리한다. 인터페이스 섹션(336)은 또한 메모리 장치(285)의 클록 신호 LDQS(660)가 발생할 때의 예측을 제공하는 예시되지 않은 프리앰블 검출 회로도 포함한다. 인터페이스 섹션(341)은 상부 바이트 데이터 스트로브 신호 (upper byte data strobe signal) UDQS(665)를 처리한다.
인터페이스 섹션(334, 335, 337, 338, 339, 340, 342, 343)은 들어오는 데이터 신호 DQ0-DQ15를 처리한다. 인터페이스 섹션(334, 335, 336, 337, 338, 339, 340, 341, 342, 343) 각각은 각각 데이터 포착 회로 부분(334A, 335A, 336A, 337A, 338A, 339A, 340A, 341A, 342A, 343A)을 포함한다. 데이터 포착 회로 부분(334A, 335A, 336A, 337A, 338A, 339A, 340A, 341A, 342A, 343A) 각각은 메모리 장치(285)(도 4)로부터 들어오는 데이터 신호(DQ0-DQ15)를 포착하고 DDR 데이터를 싱글 데이터 레이트(SDR) 데이터로 변환한다. 보다 명확히 하기 위해, 이들 데이터 포착 회로 부분은 그 각자의 인터페이스 섹션과 별개로 나타내어져 있다. 포착 프로세스에서, 데이터 포착 회로 부분(334A, 335A, 336A, 337A, 338A, 339A, 340A, 341A, 342A, 343A)은 또한 들어오는 데이터를 메모리 장치의 클록에 대한 동기로부터 FPGA(230)(도 3)의 내부 클록과의 동기로 천이시킨다. 데이터 포착 회로 부분(334A, 335A, 336A, 337A, 338A, 339A, 340A, 341A, 342A, 343A)은 이어서 포착된 데이터를 데이터 저장 부분(315)(도 4) 내의 데이터 포트(350-357)에 출력한다. 인터페이스 섹션(334, 335, 337, 338, 339, 340, 342, 343)은 또한 DQ0-DQ15를 통해 메모리로 이동하는 나가는 데이터 신호를 처리한다. 데이터 포착 회로 부분(336A)은 데이터 포착 회로 부분(334A, 335A, 337A, 338A)에 연결되는 클록 신호 LDQS(660)를 제공한다. 데이터 포착 회로 부분(341A)은 데이터 포착 회로 부분(339A, 340A, 342A, 343A)에 연결되는 클록 신호 UDQS(665)를 제공한다.
도 9를 참조하면, 블록(542)은 도 4와 관련하여 앞서 논의된 제어 부분(301)을 포함한다. 제어 부분(301)은 12개의 상호연결 섹션(607-618)에 하드와이어되어 있다. 이들 12개의 상호연결 연결부(607-618)는 블록(542)을 따라 물리적으로 분산된 방식으로 구현된다. 제어 부분(301)은 또한 버스(670)를 통해 각각의 인터페이스 섹션(320-332)에 하드와이어되어 있다. 그에 부가하여, 제어 부분(301)은 버스(680)를 통해 블록(552) 내의 회로 부분(333A), 데이터 포착 회로 부분(334A, 335A, 336A, 337A, 338A, 339A, 340A, 341A, 342A, 343A) 및 데이터 포트(350-357)에 제어 신호를 제공한다. 블록(542)은 가늘고 긴 영역(241)(도 3 및 도 7)의 세로 방향으로 치수(655)를 가진다.
도 11 내지 도 13에서, 도 4와 관련하여 앞서 논의된 8개의 데이터 포트(350-357)는 각각 블록(555, 557, 560, 562, 564, 566, 568, 571)에 구현된다. 각각의 블록(555, 557, 560, 562, 564, 566, 568, 571)에서, 데이터 포트(350, 351, 352, 353, 354, 355, 356 또는 357)는 그 블록 내의 2개의 상호연결 섹션(628-629, 631-632, 634-635, 637-638, 640-641, 643-644, 646-647, 또는 649-650)에 하드와이어되어 있다. 예시된 바와 같이, 블록(555, 557, 560, 562, 564, 566, 568, 571)은 가늘고 긴 영역(241)을 따라 일정 간격으로 떨어져 있고, 다른 블록에 의해 분리되어 있다.
도 11 내지 도 13을 참조하면, 블록(555, 557, 560, 562, 564, 566, 568, 571) 각각은 치수(655)(도 9)와 동일한 방향에서 치수(656)(도 13)를 가진다. 블록(532, 534, 536, 538-541, 544-549, 552-554, 556, 559, 561, 563, 565, 567, 569, 572) 각각은 동일한 방향에서 치수(657)(도 13)를 가진다. 개시된 실시예에서, 블록(542)(도 9)의 치수(655)는 실질적으로 치수(656, 657)보다 크고, 치수(656)는 치수(657)의 대략 2배이다. 그렇지만, 다른 대안으로서 이들 상대적 치수가 다를 수 있다.
블록(530-531, 533, 535, 537, 543, 550, 551, 558, 570, 573-576)은 메모리 제어기 회로(290)(도 4)의 일부가 아닌 회로를 포함한다. 블록(537, 543, 558, 570)은 각각 가늘고 긴 영역(241)(도 3 및 도 4)의 중첩하는 부분(515-518)(도 7)에 있고, 각각이 클록 버스를 포함한다. 블록(550)은 클록 제어를 수행하는 회로를 포함한다. 블록(551)은 PLL 연결을 처리하는 회로를 포함한다. 구체적으로는, 블록(551) 내의 회로는 데이터 포착 회로 부분(334A, 335A, 336A, 337A, 338A, 339A, 340A, 341A, 342A, 343A)은 물론, 회로 부분(333A) 및 데이터 포트(350-357)에 연결되는 2개의 클록 신호(690)를 제공한다. 블록(530-531, 533, 535, 573-576) 각각은 표준 입/출력 회로를 포함한다.
도 10 내지 도 13은 32-비트 DQI 버스(700) 및 36-비트 DQO 버스(710)를 나타내고 있다. DQI 버스(700)는 데이터 버스로서, 이를 통해 데이터가 외부 메모리 장치(285)(도 4)로부터 메모리 제어기 회로(290)(도 4)로 간다. DQO 버스(710)는 데이터 버스로서, 이를 통해 데이터가 메모리 제어기 회로(290)로부터 외부 메모리 장치(285)로 간다. 보다 구체적으로는, DQI 버스(700)와 관련하여, 포착 회로 부분(334A, 335A, 337A, 338A, 339A, 340A, 342A, 343A) 각각은 4 비트의 포착된 데이터를 외부 메모리 장치(285)로부터 DQI 버스(700)에 출력한다. 데이터는 이어서 32-비트 형식으로 DQI 버스(700)로부터 데이터 포트(350-357)로 전달된다. DQO 버스(710)와 관련하여, 각각의 데이터 포트(350-357)는 36 비트의 데이터(본 명세서에서 상세히 논의되지 않는 4개의 마스크 비트를 포함함)를 DQO 버스(710)에 출력하고, 데이터는 이어서 4-비트 형식으로 DQO 버스(710)로부터 인터페이스 섹션(334, 335, 337, 338, 339, 340, 342, 343)으로 전달된다. 2 비트의 데이터가 또한 DQO 버스(710)로부터 블록(552) 내의 회로 부분(333A)으로 전달된다.
도 8 내지 도 13이 예시하는 바와 같이, 상호연결 섹션(600-651)은 메모리 제어기 회로(290)(도 4)에 하드와이어되어 있다. 상세하게는, 상호연결 섹션(600-606)은 각각 인터페이스 섹션(320-326)에 하드와이어되어 있고, 상호연결 섹션(607-618)은 제어 부분(301)에 하드와이어되어 있으며, 상호연결 섹션(619-627)은 각각 인터페이스 섹션(327-335)에 하드와이어되어 있고, 상호연결 섹션(630, 633, 636, 639, 642, 645, 648, 651)은 각각 인터페이스 섹션(336-343)에 하드와이어되어 있으며, 상호연결 섹션(628-629, 631-632, 634-635, 637-638, 640-641, 643-644, 646-647, 649-650)은 각각 데이터 포트(350-357)에 하드와이어되어 있다.
앞서 논의된 메모리 제어기 회로(290)(도 4)의 동작은 정상 동작 모드에 관한 것이다. 정상 동작 모드에서, 상호연결 섹션(600-651)은 메모리 제어기 회로(290)와 메모리 제어기 회로(290) 외부의 회로 사이에서 전기 신호를 전달한다. 그렇지만, 메모리 제어기 회로(290)가 필요하지 않은 응용에서, FPGA(230)는 현장 프로그래밍 동안 메모리 제어기 회로(290)가 바이패스되도록 구성될 수 있다. 바이패스 모드(bypass mode)에서, 메모리 제어기 회로(290)는 사용되지 않거나 액세스되지 않는다. 환언하면, FPGA 패브릭(235)(도 4)의 관점에서 볼 때, 메모리 제어기 회로(290)가 기능상 존재하지 않는 것처럼 보인다. 그럼에도 불구하고, 상호연결 섹션(600-651)[여전히 메모리 제어기 회로(290)에 하드와이어되어 있음]은 여전히 메모리 제어기 회로(290) 외부의 회로들 사이에서 이동하는 전기 신호를 라우팅하는 데 사용될 수 있다.
선택된 실시예가 상세히 예시되고 기술되어 있지만, 이하의 특허청구범위에 한정되는 본 발명의 사상 및 범위를 벗어나지 않고 치환 및 변경이 가능하다는 것을 잘 알 것이다.

Claims (17)

  1. 프로그램가능 회로 - 상기 프로그램가능 회로가 현장(field) 프로그램되기 전에 전용 메모리 제어기 회로를 포함함 - 를 가지는 디바이스를 포함하는 장치로서,
    상기 메모리 제어기 회로는 상기 디바이스 외부의 메모리를 제어하도록 구성되고,
    상기 디바이스는 상기 프로그램가능 회로가 구현되는 집적 회로 - 상기 집적 회로는 복수의 블록들을 구비함 - 를 포함하고,
    상기 메모리 제어기 회로는 복수의 회로 섹션 - 회로 섹션 각각은 상기 블록 들중 각각 하나의 블록 내에 구현됨 - 을 포함하고,
    상기 프로그램가능 회로는 상호연결 구조를 포함하고, 상기 상호연결 구조는 전기 신호를 선택적으로 라우팅하는 복수의 현장 프로그램가능 상호연결 섹션을 구비하고, 상기 상호연결 섹션 각각은 상기 블록들 중 각각 하나의 블록에 구현되고 상기 블록에서 상기 회로 섹션에 연결되는 것인, 장치.
  2. 제1항에 있어서, 상기 메모리 제어기 회로의 복수의 개별적인 회로 섹션은 상기 집적 회로 내에서 서로로부터 물리적으로 일정 간격으로 떨어져 있고,
    상기 복수의 회로 섹션은,
    상기 메모리 제어기 회로에 대해 전달되는 데이터를 일시적으로 저장하는 복수의 데이터 포트 섹션,
    상기 메모리 제어기 회로에 대한 데이터의 전달을 용이하게 해주는 복수의 인터페이스 섹션, 및
    전기 신호를 선택적으로 라우팅하고 상기 집적 회로의 공통의 상호연결 구조의 각각의 부분인 복수의 현장 프로그램가능 상호연결 섹션을 포함하는 것인, 장치.
  3. 제1항에 있어서, 상기 상호연결 구조는, 각각이 현장 프로그래밍에 응답하여 전기 신호를 라우팅하는 라우팅 회로를 갖는 제1, 제2 및 제3 현장 프로그램가능 상호연결 섹션을 포함하고, 상기 제1 상호연결 섹션은 상기 메모리 제어기 회로에 하드와이어되어 있으며, 상기 제1 상호연결 섹션은 현장 프로그래밍 후에,
    상기 제1 상호연결 섹션 내의 상기 라우팅 회로가 상기 메모리 제어기 회로와 상기 제2 상호연결 섹션 사이에서 전기 신호를 전달하는 구성, 및
    상기 메모리 제어기 회로 외부의 회로들 사이에서 전기 신호를 라우팅하는데 상기 메모리 제어기 회로가 이용되지 않을 경우, 상기 메모리 제어기 회로를 바이패스하는 동안 상기 제1 상호연결 섹션 내의 상기 라우팅 회로가 상기 제1 상호연결 섹션을 통해 상기 제2 상호연결 섹션과 상기 제3 상호연결 섹션 사이에서 전기 신호를 전달하는 구성 중 하나의 구성을 가지는 것인, 장치.
  4. 제1항에 있어서, 상기 집적 회로는 상기 메모리 제어기 회로가 구현되어 있는 가늘고 긴 영역을 포함하고, 상기 메모리 제어기 회로는 상기 가늘고 긴 영역을 따라 분산되어 있는 것인, 장치.
  5. 제4항에 있어서, 상기 프로그램가능 회로는,
    클록 신호를 발생시키는 클록 발생 회로, 및
    상기 클록 신호를 전달하는 클록 버스를 포함하고,
    상기 메모리 제어기 회로는 상기 클록 버스에 연결되어 있는 것인, 장치.
  6. 제5항에 있어서,
    상기 집적 회로는 상기 클록 버스가 뻗어 있는 클록 분배 영역을 갖고,
    상기 가늘고 긴 영역이 중첩된 영역 및 비중첩된 영역을 가지도록 상기 가늘고 긴 영역의 일부분이 상기 클록 분배 영역과 중첩되어 있으며,
    상기 중첩된 영역은 상기 비중첩된 영역들 중 적어도 하나에 의해 분리되어 있고,
    상기 메모리 제어기 회로는 상기 비중첩된 영역에 구현되어 있는 것인, 장치.
  7. 삭제
  8. 삭제
  9. 제1항에 있어서, 상기 프로그램가능 회로는 상기 메모리 제어기 회로에 대한 데이터 전달을 진행하고, 상기 메모리 제어기 회로에 연결된 메모리 인터페이스를 가지고,
    상기 회로 섹션들 각각은,
    상기 메모리 인터페이스를 통한 데이터의 전달을 용이하게 해주는 인터페이스 회로를 가지는 인터페이스 섹션,
    상기 메모리 인터페이스를 통한 데이터 전달에 관여된 데이터를 일시적으로 저장하는 저장 요소를 갖는 데이터 포트 섹션 - 상기 데이터 포트 섹션은 현장 프로그래밍 동안에는 상기 집적 회로 내의 다른 회로로부터 데이터를 수신하거나 상기 집적 회로 내의 다른 회로에 데이터를 보내도록 구성 가능하고, 현장 프로그래밍 이후에는 단방향임 - , 및
    상기 메모리 제어기 회로의 동작을 제어하는 회로를 갖는 제어 섹션 중 하나인 것인, 장치.
  10. 디바이스를 제조(fabricate)하는 방법에 있어서,
    프로그램가능 회로가 현장 프로그램되기 전에 전용 메모리 제어기 회로 - 상기 메모리 제어기 회로는 상기 디바이스 외부의 메모리를 제어하도록 구성됨 - 를 포함하는 프로그램가능 회로를 형성하는 단계;
    복수의 블록들을 구비하는 집적 회로에서 상기 메모리 제어기 회로 - 상기 메모리 제어기 회로는, 각각이 상기 블록들 중 각각 하나의 블록 내에 구현되는 복수의 회로 섹션을 구비함 - 를 구현하는 단계; 및
    전기 신호를 선택적으로 라우팅하는 복수의 현장 프로그램가능 상호연결 섹션을 구비한 상호연결 구조를 형성하는 단계 - 상기 상호연결 구조를 형성하는 단계는 상기 상호연결 섹션 각각이 상기 블록들 중 각각 하나의 블록에 구현되고 상기 블록에서 상기 회로 섹션에 연결되는 방식으로 수행됨 -
    를 포함하는 디바이스 제조 방법.
  11. 제10항에 있어서, 상기 프로그램가능 회로를 형성하는 단계는 상기 집적 회로에서 상기 프로그램가능 회로를 구현하는 단계를 포함하고,
    상기 구현하는 단계는 상기 메모리 제어기 회로에서 복수의 개별적인 회로 섹션들을 형성하는 단계를 포함하며,
    상기 회로 섹션들을 형성하는 단계는 상기 회로 섹션이 상기 집적 회로 내에서 서로 물리적으로 일정 간격으로 떨어져 있는 방식으로 수행되고,
    상기 회로 섹션들을 형성하는 단계는,
    상기 메모리 제어기 회로에 대해 전달되는 데이터를 일시적으로 저장하고 각각이 상기 회로 섹션들의 각각 하나의 회로 섹션에 있는 복수의 데이터 포트 섹션을 형성하는 단계,
    상기 메모리 제어기 회로에 대한 데이터의 전달을 용이하게 해주고 각각이 상기 회로 섹션들의 각각 하나의 회로 섹션에 있는 복수의 인터페이스 섹션을 형성하는 단계, 및
    공통의 상호연결 구조의 각자의 부분이고 각각이 상기 회로 섹션들의 각각 하나의 회로 섹션에 있는, 전기 신호를 선택적으로 라우팅하는 복수의 현장 프로그램가능 상호연결 섹션을 형성하는 단계를 포함하는 것인, 디바이스 제조 방법.
  12. 삭제
  13. 제10항에 있어서,
    각각이 라우팅 회로를 갖는 제1, 제2 및 제3 현장 프로그램가능 상호연결 섹션을 구비한 상호연결 구조를 형성하는 단계,
    상기 라우팅 회로를 현장 프로그래밍하는 단계, 및
    상기 현장 프로그래밍에 응답하여 상기 라우팅 회로를 사용하여 전기 신호를 라우팅하는 단계를 더 포함하는 디바이스 제조 방법.
  14. 제13항에 있어서,
    상기 상호연결 구조를 형성하는 단계는 상기 제1 상호연결 섹션을 상기 메모리 제어기 회로에 하드와이어하는 단계를 포함하고,
    상기 라우팅 회로를 현장 프로그래밍하는 단계는 상기 라우팅 회로로 하여금,
    상기 제1 상호연결 섹션을 통해 상기 메모리 제어기 회로와 상기 제2 상호연결 섹션 사이에서 전기 신호를 전달하는 단계, 및
    상기 메모리 제어기 회로 외부의 회로들 사이에서 전기 신호를 라우팅하는데 상기 메모리 제어기 회로가 이용되지 않을 경우, 상기 메모리 제어기 회로를 바이패스하는 동안 상기 제1 상호연결 섹션을 통해 상기 제2 상호연결 섹션과 상기 제3 상호연결 섹션 사이에서 전기 신호를 전달하는 단계 중 하나를 실시하게 하는 것인, 디바이스 제조 방법.
  15. 제10항에 있어서, 상기 프로그램가능 회로를 형성하는 단계는,
    상기 메모리 제어기 회로가 구현되어 있는 가늘고 긴 영역을 갖는 상기 프로그램가능 회로를 상기 집적 회로에서 구현하는 단계, 및
    상기 가늘고 긴 영역을 따라 상기 메모리 제어기 회로를 분산시키는 단계를 포함하는 것인, 디바이스 제조 방법.
  16. 제2항에 있어서, 상기 복수의 데이터 포트 각각은 현장 프로그래밍 동안에는 상기 메모리 제어기로부터 상기 집적 회로 내의 다른 회로에 데이터를 보내거나 상기 메모리 제어기에서 상기 집적 회로 내의 다른 회로로부터 데이터를 수신하도록 구성 가능하고, 현장 프로그래밍 이후에는 단방향인 것인, 장치.
  17. 제11항에 있어서, 상기 복수의 데이터 포트 각각은 현장 프로그래밍 동안에는 상기 메모리 제어기로부터 상기 집적 회로 내의 다른 회로에 데이터를 보내거나 상기 메모리 제어기에서 상기 집적 회로 내의 다른 회로로부터 데이터를 수신하도록 구성 가능하고, 현장 프로그래밍 이후에는 단방향인 것인, 디바이스 제조 방법.
KR1020117017570A 2009-01-31 2010-01-27 프로그램가능 디바이스에서의 메모리 제어 방법 및 장치 KR101263114B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14892709P 2009-01-31 2009-01-31
US14892609P 2009-01-31 2009-01-31
US61/148,926 2009-01-31
US61/148,927 2009-01-31
PCT/US2010/022292 WO2010088311A1 (en) 2009-01-31 2010-01-27 Method and apparatus for memory control with a programmable device

Publications (2)

Publication Number Publication Date
KR20110101226A KR20110101226A (ko) 2011-09-15
KR101263114B1 true KR101263114B1 (ko) 2013-05-15

Family

ID=42163751

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117017570A KR101263114B1 (ko) 2009-01-31 2010-01-27 프로그램가능 디바이스에서의 메모리 제어 방법 및 장치

Country Status (6)

Country Link
US (14) US8742791B1 (ko)
EP (1) EP2384545B1 (ko)
JP (1) JP5242810B2 (ko)
KR (1) KR101263114B1 (ko)
CN (1) CN102301599B (ko)
WO (1) WO2010088311A1 (ko)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6675272B2 (en) * 2001-04-24 2004-01-06 Rambus Inc. Method and apparatus for coordinating memory operations among diversely-located memory components
US7321524B2 (en) 2005-10-17 2008-01-22 Rambus Inc. Memory controller with staggered request signal output
US9431091B2 (en) 2008-06-06 2016-08-30 Uniquify, Inc. Multiple gating modes and half-frequency dynamic calibration for DDR memory controllers
US8742791B1 (en) * 2009-01-31 2014-06-03 Xilinx, Inc. Method and apparatus for preamble detection for a control signal
US8611159B1 (en) * 2010-11-18 2013-12-17 Xilinx, Inc. Memory write interface in an integrated circuit and method of providing same
US9244867B1 (en) * 2011-06-01 2016-01-26 Altera Corporation Memory controller interface with adjustable port widths
US8531322B2 (en) * 2011-06-15 2013-09-10 Mediatek Singapore Pte. Ltd. Time-to-digital converter
GB2493340A (en) * 2011-07-28 2013-02-06 St Microelectronics Res & Dev Address mapping of boot transactions between dies in a system in package
US10776233B2 (en) 2011-10-28 2020-09-15 Teradyne, Inc. Programmable test instrument
US9470759B2 (en) * 2011-10-28 2016-10-18 Teradyne, Inc. Test instrument having a configurable interface
US9759772B2 (en) 2011-10-28 2017-09-12 Teradyne, Inc. Programmable test instrument
US8456917B1 (en) * 2011-11-29 2013-06-04 Elpida Memory, Inc. Logic circuit for a semiconductor memory device, and method of managing an operation in the semiconductor memory device
US9058860B2 (en) * 2012-03-29 2015-06-16 Memoir Systems, Inc. Methods and apparatus for synthesizing multi-port memory circuits
US9830958B2 (en) * 2012-05-03 2017-11-28 Nvidia Corporation Time-multiplexed communication protocol for transmitting a command and address between a memory controller and multi-port memory
US9646656B2 (en) * 2012-05-03 2017-05-09 Nvidia Corporation Time-multiplexed communication protocol for transmitting a command and address between a memory controller and multi-port memory
US9411750B2 (en) * 2012-07-30 2016-08-09 International Business Machines Corporation Efficient calibration of a low power parallel data communications channel
US9026872B2 (en) * 2012-08-16 2015-05-05 Xilinx, Inc. Flexible sized die for use in multi-die integrated circuit
US8937491B2 (en) * 2012-11-15 2015-01-20 Xilinx, Inc. Clock network architecture
US8947140B2 (en) 2013-03-12 2015-02-03 Uniquify, Inc. Continuous adaptive training for data interface timing calibration
US20140281662A1 (en) * 2013-03-12 2014-09-18 Uniquify, Inc. Dynamically adaptive bit-leveling for data interfaces
US9875209B2 (en) * 2013-05-06 2018-01-23 Qualcomm Incorporated Synchronous data-link throughput enhancement technique based on data signal duty-cycle and phase modulation/demodulation
CN104468156B (zh) * 2013-09-16 2018-02-09 新华三技术有限公司 一种利用时隙仲裁节省资源开销的方法和设备
JP6313018B2 (ja) * 2013-11-13 2018-04-18 ルネサスエレクトロニクス株式会社 設計支援装置、半導体装置及びコンパイルプログラム
JP6426437B2 (ja) * 2013-11-22 2018-11-21 株式会社半導体エネルギー研究所 半導体装置
US9342402B1 (en) * 2014-01-28 2016-05-17 Altera Corporation Memory interface with hybrid error detection circuitry for modular designs
US9368172B2 (en) * 2014-02-03 2016-06-14 Rambus Inc. Read strobe gating mechanism
US9530483B2 (en) 2014-05-27 2016-12-27 Src Labs, Llc System and method for retaining dram data when reprogramming reconfigurable devices with DRAM memory controllers incorporating a data maintenance block colocated with a memory module or subsystem
KR102303653B1 (ko) 2015-07-27 2021-09-17 삼성전자주식회사 메모리 장치 및 이를 포함하는 메모리 시스템
US9474034B1 (en) 2015-11-30 2016-10-18 International Business Machines Corporation Power reduction in a parallel data communications interface using clock resynchronization
US10198204B2 (en) 2016-06-01 2019-02-05 Advanced Micro Devices, Inc. Self refresh state machine MOP array
US10320516B1 (en) 2016-06-30 2019-06-11 Xilinx, Inc. Alignment marker generation and detection for communication
US9773543B1 (en) 2016-08-31 2017-09-26 Xilinx, Inc. Effective clamshell mirroring for memory interfaces
US10503435B2 (en) 2016-12-01 2019-12-10 Qualcomm Incorporated Providing extended dynamic random access memory (DRAM) burst lengths in processor-based systems
US10853004B2 (en) * 2017-04-20 2020-12-01 Hewlett-Packard Development Company, L.P. Calibrating communication lines
CN107195327B (zh) * 2017-05-10 2020-05-08 电子科技大学 一种优化的prom存储器编程烧录方法的设计
US10707988B2 (en) * 2017-09-11 2020-07-07 Mediatek Singapore Pte. Ltd Transport block size determination in mobile communications
KR102445674B1 (ko) 2017-12-18 2022-09-22 삼성전자주식회사 선택적으로 메모리를 부팅시키도록 구성되는 램 컨트롤러 및 그 동작 방법
US10659215B1 (en) * 2018-09-19 2020-05-19 Xilinx, Inc. Training and tracking of DDR memory interface strobe timing
US10622982B1 (en) * 2019-01-10 2020-04-14 Western Digital Technologies, Inc. Measurement, calibration and tuning of memory bus duty cycle
CN110059045B (zh) * 2019-04-22 2024-04-12 吴进国 一种基于fpga的非开挖传感装置总线共享系统、方法及装置
US11314508B1 (en) 2021-02-01 2022-04-26 National Technology & Engineering Solutions Of Sandia, Llc FPGA-based computing system for processing data in size, weight, and power constrained environments

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6226561A (ja) * 1985-07-26 1987-02-04 Toshiba Corp パ−ソナルコンピユ−タ
US5276832A (en) * 1990-06-19 1994-01-04 Dell U.S.A., L.P. Computer system having a selectable cache subsystem
GB9223226D0 (en) * 1992-11-05 1992-12-16 Algotronix Ltd Improved configurable cellular array (cal ii)
JP3369227B2 (ja) * 1992-11-09 2003-01-20 株式会社東芝 プロセッサ
JP3904244B2 (ja) * 1993-09-17 2007-04-11 株式会社ルネサステクノロジ シングル・チップ・データ処理装置
US5577213A (en) * 1994-06-03 1996-11-19 At&T Global Information Solutions Company Multi-device adapter card for computer
EP0685803B1 (en) * 1994-06-03 2001-04-18 Hyundai Electronics America Method of producing an electrical device adapter
US5651138A (en) * 1994-08-31 1997-07-22 Motorola, Inc. Data processor with controlled burst memory accesses and method therefor
US5751162A (en) * 1995-04-06 1998-05-12 Texas Instruments Incorporated Field programmable gate array logic module configurable as combinational or sequential circuits
WO1996032674A2 (en) * 1995-04-13 1996-10-17 Cirrus Logic, Inc. Semiconductor memory device for mass storage block access applications
US5732246A (en) * 1995-06-07 1998-03-24 International Business Machines Corporation Programmable array interconnect latch
KR0157924B1 (ko) * 1995-12-23 1998-12-15 문정환 데이타 전송 시스템 및 그 방법
US5911053A (en) * 1996-09-30 1999-06-08 Intel Corporation Method and apparatus for changing data transfer widths in a computer system
US6047347A (en) * 1997-02-04 2000-04-04 Advanced Micro Devices, Inc. Computer system with programmable bus size
US6370603B1 (en) * 1997-12-31 2002-04-09 Kawasaki Microelectronics, Inc. Configurable universal serial bus (USB) controller implemented on a single integrated circuit (IC) chip with media access control (MAC)
US6317804B1 (en) 1998-11-30 2001-11-13 Philips Semiconductors Inc. Concurrent serial interconnect for integrating functional blocks in an integrated circuit device
US6181163B1 (en) * 1999-01-21 2001-01-30 Vantis Corporation FPGA integrated circuit having embedded SRAM memory blocks and interconnect channel for broadcasting address and control signals
US6262933B1 (en) * 1999-01-29 2001-07-17 Altera Corporation High speed programmable address decoder
TW430793B (en) * 1999-05-20 2001-04-21 Ind Tech Res Inst Self-row identification hidden-type refresh-circuit and refresh method
US6560716B1 (en) * 1999-11-10 2003-05-06 Lsi Logic Corporation System for measuring delay of digital signal using clock generator and delay unit wherein a set of digital elements of clock generator identical to a set of digital elements of delay unit
US6519674B1 (en) * 2000-02-18 2003-02-11 Chameleon Systems, Inc. Configuration bits layout
US6615890B1 (en) * 2000-06-09 2003-09-09 Venture Tape Corp. Tape applicator for glazing applications
US6625685B1 (en) * 2000-09-20 2003-09-23 Broadcom Corporation Memory controller with programmable configuration
US6735709B1 (en) * 2000-11-09 2004-05-11 Micron Technology, Inc. Method of timing calibration using slower data rate pattern
US7120761B2 (en) * 2000-12-20 2006-10-10 Fujitsu Limited Multi-port memory based on DRAM core
CN100578510C (zh) * 2001-08-14 2010-01-06 韦里希特外观有限公司 时序不灵敏及无假信号逻辑设备
US6924663B2 (en) * 2001-12-28 2005-08-02 Fujitsu Limited Programmable logic device with ferroelectric configuration memories
JP3938308B2 (ja) * 2001-12-28 2007-06-27 富士通株式会社 プログラマブル論理デバイス
JP2003223412A (ja) * 2002-01-30 2003-08-08 Oki Electric Ind Co Ltd 半導体集積回路
US6600681B1 (en) * 2002-06-10 2003-07-29 Lsi Logic Corporation Method and apparatus for calibrating DQS qualification in a memory controller
JP2004265265A (ja) * 2003-03-04 2004-09-24 Matsushita Electric Ind Co Ltd データ転送制御装置
US7007188B1 (en) * 2003-04-29 2006-02-28 Advanced Micro Devices, Inc. Precision bypass clock for high speed testing of a data processor
JP4211922B2 (ja) * 2003-06-13 2009-01-21 パナソニック株式会社 半導体装置
US6903574B2 (en) * 2003-07-29 2005-06-07 Lattice Semiconductor Corporation Memory access via serial memory interface
US7170315B2 (en) * 2003-07-31 2007-01-30 Actel Corporation Programmable system on a chip
US6828822B1 (en) * 2003-10-03 2004-12-07 Altera Corporation Apparatus and methods for shared memory interfaces in programmable logic devices
US7272526B2 (en) * 2003-11-19 2007-09-18 Analog Devices, Inc. Method and apparatus for autocalibrating a plurality of phase-delayed clock signal edges within a reference clock period
US7095789B2 (en) * 2004-01-28 2006-08-22 Rambus, Inc. Communication channel calibration for drift conditions
US7126372B2 (en) * 2004-04-30 2006-10-24 Xilinx, Inc. Reconfiguration port for dynamic reconfiguration—sub-frame access for reconfiguration
US7138829B1 (en) * 2004-11-16 2006-11-21 Xilinx, Inc. Measuring input setup and hold time using an input-output block having a variable delay line
US7555089B2 (en) * 2005-05-20 2009-06-30 Honeywell International Inc. Data edge-to-clock edge phase detector for high speed circuits
CN1912860A (zh) * 2005-07-11 2007-02-14 阿尔特拉公司 可编程逻辑器件中的低功率路由装置和方法
JP2007053685A (ja) * 2005-08-19 2007-03-01 Nec Electronics Corp 半導体集積回路装置
US7321524B2 (en) * 2005-10-17 2008-01-22 Rambus Inc. Memory controller with staggered request signal output
US7542324B1 (en) * 2006-04-17 2009-06-02 Altera Corporation FPGA equivalent input and output grid muxing on structural ASIC memory
US7433262B2 (en) * 2006-08-22 2008-10-07 Atmel Corporation Circuits to delay a signal from DDR-SDRAM memory device including an automatic phase error correction
JP4921888B2 (ja) * 2006-08-22 2012-04-25 ルネサスエレクトロニクス株式会社 インターフェース回路
US7940667B1 (en) * 2006-09-13 2011-05-10 Pmc-Sierra Us, Inc. Delay measurements and calibration methods and apparatus for distributed wireless systems
US7587697B1 (en) 2006-12-12 2009-09-08 Tabula, Inc. System and method of mapping memory blocks in a configurable integrated circuit
JP5012017B2 (ja) * 2006-12-28 2012-08-29 富士通株式会社 組込装置および制御方法
US9015399B2 (en) * 2007-08-20 2015-04-21 Convey Computer Multiple data channel memory module architecture
US7701251B1 (en) * 2008-03-06 2010-04-20 Xilinx, Inc. Methods and apparatus for implementing a stacked memory programmable integrated circuit system in package
JP4531827B2 (ja) * 2008-04-22 2010-08-25 ルネサスエレクトロニクス株式会社 通信装置
JP2010122842A (ja) * 2008-11-19 2010-06-03 Nec Electronics Corp 遅延調整装置、半導体装置及び遅延調整方法
US8742791B1 (en) * 2009-01-31 2014-06-03 Xilinx, Inc. Method and apparatus for preamble detection for a control signal
KR101024239B1 (ko) * 2009-09-01 2011-03-29 주식회사 하이닉스반도체 반도체 장치
KR20110131765A (ko) * 2010-05-31 2011-12-07 주식회사 하이닉스반도체 위상 보정 회로 및 이를 이용한 데이터 정렬 회로

Also Published As

Publication number Publication date
JP2012516653A (ja) 2012-07-19
US8134878B1 (en) 2012-03-13
US8116162B1 (en) 2012-02-14
EP2384545B1 (en) 2016-01-27
US8222923B1 (en) 2012-07-17
US8683166B1 (en) 2014-03-25
US8239590B1 (en) 2012-08-07
US8307182B1 (en) 2012-11-06
US8587337B1 (en) 2013-11-19
US8161249B1 (en) 2012-04-17
KR20110101226A (ko) 2011-09-15
WO2010088311A1 (en) 2010-08-05
US8200874B1 (en) 2012-06-12
CN102301599B (zh) 2015-06-03
JP5242810B2 (ja) 2013-07-24
US8742791B1 (en) 2014-06-03
US8239604B1 (en) 2012-08-07
US8063660B1 (en) 2011-11-22
EP2384545A1 (en) 2011-11-09
US8350590B1 (en) 2013-01-08
US8438357B1 (en) 2013-05-07
CN102301599A (zh) 2011-12-28

Similar Documents

Publication Publication Date Title
KR101263114B1 (ko) 프로그램가능 디바이스에서의 메모리 제어 방법 및 장치
US9859896B1 (en) Distributed multi-die routing in a multi-chip module
US7446561B2 (en) I/O circuitry shared between processor and programmable logic portions of an integrated circuit
JP6035429B2 (ja) 集積回路のための柔軟性がより高いクロックネットワークアーキテクチャ
US7701251B1 (en) Methods and apparatus for implementing a stacked memory programmable integrated circuit system in package
US5642058A (en) Periphery input/output interconnect structure
US5367209A (en) Field programmable gate array for synchronous and asynchronous operation
US7312633B1 (en) Programmable routing structures providing shorter timing delays for input/output signals
US5621650A (en) Programmable logic device with internal time-constant multiplexing of signals from external interconnect buses
JP2016516331A5 (ko)
JPH04225621A (ja) 集積回路
JP2022521068A (ja) プログラマブルネットワークを介したプログラマブル論理領域の構成
US7617472B1 (en) Regional signal-distribution network for an integrated circuit
US5712579A (en) Deskewed clock distribution network with edge clock
KR102688777B1 (ko) 리프로그래밍 가능 집적 회로 장치의 부분 재구성 동안 안정적인 io 인터페이스를 보장하기 위한 회로 및 방법
EP2543145B1 (en) Programmable integrated circuit with mirrored interconnect structure
US7126374B2 (en) Multi-level routing architecture in a field programmable gate array having transmitters and receivers
US11941336B2 (en) Three-dimensional FPGA with structure ASIC hardening capability
US20220222408A1 (en) System on chip architecture, interposer, fpga and method of design

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160422

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170424

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180424

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190423

Year of fee payment: 7