KR101965476B1 - 구성 가능한 매립식 메모리 시스템 - Google Patents

구성 가능한 매립식 메모리 시스템 Download PDF

Info

Publication number
KR101965476B1
KR101965476B1 KR1020157011892A KR20157011892A KR101965476B1 KR 101965476 B1 KR101965476 B1 KR 101965476B1 KR 1020157011892 A KR1020157011892 A KR 1020157011892A KR 20157011892 A KR20157011892 A KR 20157011892A KR 101965476 B1 KR101965476 B1 KR 101965476B1
Authority
KR
South Korea
Prior art keywords
data
port
block
memory
cascade
Prior art date
Application number
KR1020157011892A
Other languages
English (en)
Other versions
KR20150084001A (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 KR20150084001A publication Critical patent/KR20150084001A/ko
Application granted granted Critical
Publication of KR101965476B1 publication Critical patent/KR101965476B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1039Read-write modes for single port memories, i.e. having either a random port or a serial port using pipelining techniques, i.e. using latches between functional memory parts, e.g. row/column decoders, I/O buffers, sense amplifiers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/1069I/O lines read out arrangements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1096Write circuits, e.g. I/O line write drivers
    • 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/17732Macroblocks
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/10Aspects relating to interfaces of memory device to external buses
    • G11C2207/104Embedded memory devices, e.g. memories with a processing device on the same die or ASIC memory designs
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Logic Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Semiconductor Memories (AREA)

Abstract

메모리 모듈의 일 실시예가 시작된다. 이 메모리 모듈(250)은 구성 가능한 하드 매크로이다. 이 메모리 모듈(250)의 일부분은 캐스케이드된 데이터 및 직접/버싱된 데이터 사이에서 선택하도록 결합된 데이터 입력 멀티플렉서(305)를 포함한다. 그러한 부분은 데이터 입력 멀티플렉서(305)로부터의 출력을 자체에 저장하기 위해 수신하도록 결합되는 메모리(313), 및 메모리(313)로부터의 판독 데이터와 캐스케이드된 데이터 사이에서 선택하도록 결합되는 레지스터 입력 멀티플렉서(325)를 더 포함한다. 이 메모리 모듈(250)은 레지스터 입력 멀티플렉서(325)에 결합되는 레지스터(335), 메모리(313)로부터의 판독 데이터와 레지스터(335)로부터의 레지스터된 데이터 사이에서 선택하도록 결합되는 래치/레지스터 모드 멀티플렉서(345), 및 출력 데이터를 제공하기 위해 래치/레지스터 모드 멀티플렉서(345)로부터의 출력과 캐스케이드된 데이터 사이에서 선택하도록 결합되는 데이터 출력 멀티플렉서(217)를 더 포함한다.

Description

구성 가능한 매립식 메모리 시스템{CONFIGURABLE EMBEDDED MEMORY SYSTEM}
일 실시예는 집적 회로 디바이스("IC")에 관한 것이다. 더욱 구체적으로는, 일 실시예는 IC용의 구성 가능한 매립식 메모리 시스템에 관한 것이다.
IC는 시간 경과에 따라 더욱 "밀집"되어 왔다, 즉, 더 많은 논리 특징부(features)가 일정한 크기의 IC에서 실현되어 왔다. 따라서, 전력 소비는 점점 더 중요한 문제가 되고 있다. 더욱이, 어플리케이션은 시간 경과에 따라 더욱 속도를 요구하고 있다. 따라서, 동작 주파수가 점점 더 중요한 문제가 되고 있다. 그래서, 감소된 전력 소비 및/또는 더 높은 성능을 갖는 IC를 제공하는 것이 바람직하고 유용하다.
하나 이상의 장치가 일반적으로 IC용의 구성 가능한 매립식 메모리 시스템에 관련된다.
장치는 일반적으로 메모리 모듈에 관한 것이다. 이 메모리 모듈은 구성 가능한 하드 매크로이다. 이 메모리 모듈의 일부분은 캐스케이드된(cascaded) 데이터와 직접(direct)/버싱된(bused) 데이터 사이에서 선택하도록 결합된 데이터 입력 멀티플렉서를 포함한다. 그러한 부분은 데이터 입력 멀티플렉서로부터의 출력을 자체에 저장하기 위해 수신하도록 결합되는 메모리, 및 메모리로부터의 판독 데이터와 캐스케이드된 데이터 사이에서 선택하도록 결합되는 레지스터 입력 멀티플렉서를 더 포함한다. 이 메모리 모듈은 레지스터 입력 멀티플렉서에 결합되는 레지스터, 메모리로부터의 판독 데이터와 레지스터로부터의 레지스터된 데이터 사이에서 선택하도록 결합되는 래치/레지스터 모드 멀티플렉서, 및 출력 데이터를 제공하기 위해 래치/레지스터 모드 멀티플렉서로부터의 출력과 캐스케이드된 데이터 사이에서 선택하도록 결합되는 데이터 출력 멀티플렉서를 더 포함한다.
다른 장치는 일반적으로 메모리 모듈에 관한 것이다. 이 메모리 모듈은 구성 가능한 하드 매크로이다. 그러한 메모리 모듈에는 데이터-인(data-in) 입력 포트, 제1 캐스케이드 입력 포트, 캐스케이드/데이터-인 선택 포트 및 판독 데이터 출력 포트를 각각 갖는 복수의 데이터-인 멀티플렉서가 포함되어 있다. 복수의 메모리 블록은 기록 데이터 입력 포트, 제1 클록 포트 및 판독 데이터 출력 포트를 각각 갖는다. 복수의 파이프라인 멀티플렉서는 제1 판독 데이터 입력 포트, 제2 캐스케이드 입력 포트, 파이프라인 선택 포트 및 레지스터 데이터 출력 포트를 각각 갖는다. 복수의 레지스터는 레지스터 데이터 입력 포트, 레지스터된 데이터 출력 포트 및 제2 클록 포트를 각각 갖는다. 복수의 데이터-아웃(data-out) 멀티플렉서는 제2 판독 데이터 입력 포트, 레지스터된 데이터 입력 포트, 레지스터된/레지스터되지 않은 선택 포트 및 블록 출력 포트를 각각 갖는다. 복수의 제어 멀티플렉서는 제3 캐스케이드 입력 포트, 블록 입력 포트, 제어 선택 포트 및 데이터-아웃 포트를 각각 갖는다.
또 다른 장치는 일반적으로 제1 및 제2 메모리 모듈에 관한 것이다. 그러한 제1 메모리 모듈은 제1 구성 가능한 하드 매크로로서 제공되고, 그러한 제2 메모리 모듈은 제2 구성 가능한 하드 매크로로서 제공된다. 상기 제1 메모리 모듈은 상기 제2 메모리 모듈보다 더 높은 레벨의 스택에 있다. 상기 제1 메모리 모듈은 서로 분리되어 있는 제1 상부 메모리 블록 및 제1 하부 메모리 블록을 갖는다. 상기 제2 메모리 모듈은 제2 상부 메모리 블록 및 제2 하부 메모리 블록을 갖는다. 상기 제1 상부 메모리 블록과 관련되는 상기 제1 메모리 모듈의 제1 캐스케이드 입력 노드는 상기 제1 상부 메모리 블록 및 상기 제2 상부 메모리 블록을 포함하는 제1 메모리 칼럼을 제공하기 위해 상기 제2 상부 메모리 블록과 관련되는 상기 제2 메모리 모듈의 제1 데이터-아웃 노드에 결합된다. 상기 제1 하부 메모리 블록과 관련되는 상기 제1 메모리 모듈의 제2 캐스케이드 입력 노드는 상기 제1 하부 메모리 블록 및 상기 제2 하부 메모리 블록을 포함하는 제2 메모리 칼럼을 제공하기 위해 상기 제2 하부 메모리 블록과 관련되는 상기 제2 메모리 모듈의 제2 데이터-아웃 노드에 결합된다.
도 1은 원주형의 필드 프로그램 가능한 게이트 어레이("FPGA") 아키텍처의 예시적인 실시예를 도시하는 간략화된 블록도이다.
도 2는 IC 칩의 에시적인 메모리 시스템을 도시하는 블록도이다.
도 3a는 랜덤 액세스 메모리 블록("BRAM") 모듈의 예시적인 상부 또는 하부 부분을 도시하는 블록/회로도이다.
도 3b는 예시적인 캐스케이드 제어 블록을 도시하는 블록도이다.
도 4는 BRAM 모듈의 예시적인 스택을 도시하는 블록/회로도이다.
도 5는 예시적인 디코딩 테이블을 도시하는 테이블도이다.
도 6은 디코딩 테이블에 따라서 예시적인 스택을 도시하는 블록/회로도이다.
도 7은 예시적인 포 딥 원 핫(four-deep one hot) 캐스케이드 모드("캐스케이드 모드")를 도시하는 신호 타이밍도이다.
도 8은 데이터 출력 캐스케이드 파이프라인 모드("파이프라인 캐스케이드 모드")용으로 구성된 예시적인 스택을 도시하는 블록/회로도이다.
도 9는 도 8의 예시적인 스택용의 예시적인 포 딥 파이프라인 캐스케이드 모드("캐스케이드 모드")를 도시하는 신호 타이밍도이다.
도 10은 그러한 스택의 입력측 및 출력측 상의 프로그램 가능한 패브릭 자원에 결합되는 예시적인 상부 부분 또는 하부 부분을 도시하는 블록/회로도이다.
도 11은 굵은 흑색 라인으로 전체적으로 나타내는 바와 같은 데이터 경로를 갖는 예시적인 시스톨릭(systolic) 모드 또는 선입 선출 버퍼("FIFO") 모드를 도시하는 도 10의 블록/회로도이다.
도 12a는 굵은 흑색 라인으로 전체적으로 나타내는 바와 같은 데이터 경로를 갖는 예시적인 저전력 레지스터 모드를 도시하는 도 10의 블록/회로도이다.
도 12b는 데이터 경로가 스택의 최하부 BRAM 모듈의 레지스터에서 시작되어 그러한 레지스터로부터 윗쪽을 향해 캐스케이드되는 것을 제외하고, 도 12a와 동일한 블록/회로도이다.
도 13a는 굵은 흑색 라인으로 전체적으로 나타내는 바와 같은 데이터 경로를 갖는 예시적인 래치 모드를 도시하는 도 10의 블록/회로도이다.
도 13b는 데이터 경로가 스택의 최하부 BRAM 모듈의 BRAM 블록에서 시작되어 그러한 BRAM 블록으로부터 윗쪽을 향해 캐스케이드되는 것을 제외하고, 도 13a와 동일한 블록/회로도이다.
도 14a는 굵은 흑색 라인으로 전체적으로 나타내는 바와 같은 데이터 경로(1400)를 갖는 예시적인 다단 레지스터 모드를 도시하는 도 10의 블록/회로도이다.
도 14b는 데이터 경로가 스택의 최하부 BRAM 모듈의 BRAM 블록에서 시작되어 그러한 BRAM 블록으로부터 윗쪽을 향해 캐스케이드되는 것을 제외하고, 도 14a와 동일한 블록/회로도이다.
도 15는 굵은 흑색 라인으로 전체적으로 나타내는 바와 같은 데이터 경로를 갖는 예시적인 이중 데이터 레이트(double data rate)/벡터 메모리 모드("벡터 모드")를 도시하는 도 10의 블록/회로도이다.
도 16은 굵은 흑색 라인으로 전체적으로 나타내는 바와 같은 데이터 경로를 갖는 다른 예시적인 벡터 모드 즉, "로드(load) 벡터 모드"를 도시하는 도 10의 블록/회로도이다.
도 17a는 굵은 흑색 라인으로 전체적으로 나타내는 바와 같은 데이터 경로를 갖는 다른 예시적인 벡터 모드 즉, "시프트(shift) 벡터 모드"를 도시하는 도 10의 블록/회로도이다.
도 17b는 굵은 흑색 라인으로 전체적으로 나타내는 바와 같은 데이터 경로(1700)용의 시프트 벡터 모드를 위한 다른 구성을 도시하는 도 17a의 블록/회로도이다.
도 18은 예시적인 2차원 어레이 시스톨릭 스위치를 도시하는 블록/회로도이다.
도 19는 FIFO 캐스케이드 모드용의 복수의 스택으로부터 형성될 수도 있는 예시적인 FIFO의 체인("체인")을 도시하는 블록도이다.
도 20은 FIFO 캐스케이드 모드용의 복수의 스택으로부터 형성될 수도 있는 다른 예시적인 FIFO의 체인을 도시하는 블록도이다.
아래의 설명에서는, 다수의 특정 상세가 특정 실시예의 더욱 완전한 설명을 제공하도록 제시된다. 그러나, 당업자에게는 하나 이상의 실시예가 이하에 제공되는 특정 상세의 전부가 없이 실시될 수도 있음은 명백해질 것이다. 다른 경우에는, 잘 알려진 특징은 하나 이상의 실시예를 모호하게 만들지 않도록 하기 위해 상세하게 기재되어 있지 않다. 쉽게 설명하기 위해, 상이한 도면에서 동일한 번호 라벨이 동일한 아이템을 인용하는 데 사용되지만; 대체 실시예에서는 그 아이템이 상이할 수도 있다.
여러 도면에 예시적으로 도시된 예시적인 실시예를 설명하기 전에, 추가의 이해를 위해 총론이 제공된다.
과거에는 IC에 전용 메모리 모듈을 사용하는 것은 성능을 악화시키는 복잡한 라우팅을 의미하는 것일 수도 있다. 더욱이, 과거에 IC에 그러한 전용 메모리 모듈을 사용하는 것은 그러한 다중 메모리 모듈의 동작 시에 입도(granularity) 또는 선택도(selectivity)의 부족으로 인해 동시에 모두 동력이 공급되는 다수의 그러한 메모리 모듈을 가져야 하는 것을 의미할 수도 있다. 이상의 전체적인 이해를 마음에 두고, 메모리 시스템의 메모리 모듈에 대한 여러 가지 실시예가 이하에 전반적으로 기재된다.
이들 메모리 모듈은 메모리 어레이에 더하여 레지스터 및 멀티플렉서를 포함하며, 이들은 전부 구성 가능한(또는 프로그램 가능한) 하드 매크로로서 제공된다. 그러한 하드 매크로는 구성 메모리 셀의 이용으로 구성 가능하다. 메모리 모듈에 하드 매크로를 제공함으로써, 라우팅 복잡도가 감소될 수 있는 한편 성능이 향상될 수도 있다. 그러한 점에 따라서, 프로그램 가능한 자원 패브릭에서의 라우팅이 그러한 메모리 모듈의 스택을 형성하기 위해 회피될 수도 있다. 또한, 복수의 동작 모드가 몇몇 전용 회로 자원의 부가에 의해 부가될 수도 있다.
상술한 실시예 중 하나 이상이 IC의 특정 타입을 이용하여 예시되기 때문에, 그러한 IC의 상세한 설명이 이하에 제공된다. 그러나, 전용 메모리 모듈을 갖는 임의의 타입의 IC가 본 명세서에 기재되어 있는 실시예 중 하나 이상으로부터 유용할 수도 있다. 더욱이, 아래의 설명이 정적 랜덤 액세스 메모리 블록("SRAM") 셀을 가질 수도 있는 전용 랜덤 액세스 메모리 블록("BRAM")에 관한 것일지라도, 다른 타입의 메모리 셀을 갖는 다른 타입의 메모리 모듈이 이용될 수도 있다.
프로그램 가능한 논리 디바이스("PLD")는 특정 논리 기능을 실행하도록 프로그램될 수 있는 잘 알려진 타입의 집적 회로이다. PLD의 하나의 타입인 필드 프로그램 가능한 게이트 어레이("FPGA")는 일반적으로 프로그램 가능한 타일(tile)의 어레이를 포함한다. 이들 프로그램 가능한 타일은 예를 들면, 입/출력 블록("IOB"), 구성 가능한 논리 블록("CLB"), 전용 랜덤 액세스 메모리 블록("BRAM"), 승산기(multiplier), 디지털 신호 처리 블록("DSP"), 프로세서, 클록 관리자(clock manager), 지연 로크 루프(delay lock loop: "DLL") 등을 포함할 수 있다. 본 명세서에 사용된 바와 같이, "포함하다(include)" 및 "포함하는(including)"은 제한 없이 포함하는 것을 의미한다.
각각의 프로그램 가능한 타일은 일반적으로 프로그램 가능한 상호 연결부(interconnect) 및 프로그램 가능한 논리부(logic)의 양자를 포함한다. 프로그램 가능한 상호 연결부는 일반적으로 프로그램 가능한 상호 연결 포인트("PIP")에 의해 상호 연결되는 변화하는 길이의 막대한 수의 상호 연결 라인을 포함한다. 프로그램 가능한 논리부는 예를 들면, 함수 발생기(function generator), 레지스터, 산술 논리부 등을 포함할 수 있는 프로그램 가능한 요소를 이용하여 사용자 설계의 논리부를 실현한다.
프로그램 가능한 상호 연결부 및 프로그램 가능한 논리부는 일반적으로 구성 데이터의 스트림을 프로그램 가능한 요소가 어떻게 구성되는지를 규정하는 내부 구성 메모리 셀에 로딩함으로써 프로그래밍된다. 구성 데이터는 메모리로부터(예를 들면, 외부 PROM으로부터) 판독되거나 외부 디바이스에 의해 FPGA로 기록될 수 있다. 개별 메모리 셀의 집합적 상태가 그 후, FPGA의 기능을 결정한다.
다른 타입의 PLD는 복합 프로그램 가능한 논리 디바이스 즉, CPLD이다. CPLD는 서로 함께 및 상호 연결 스위치 매트릭스에 의해 입/출력("I/O") 자원에 연결되는 2개 이상의 "기능 블록"을 포함한다. CPLD의 각각의 기능 블록은 프로그램 가능한 논리 어레이("PLA") 및 프로그램 가능한 어레이 논리("PAL") 디바이스에 이용되는 것과 유사한 2 레벨 AND/OR 구조체를 포함한다. CPLD에서, 구성 데이터는 일반적으로 비휘발성 메모리의 칩에 저장된다. 일부 CPLD에서는, 구성 데이터가 비휘발성 메모리의 칩에 저장된 후 초기 구성 (프로그래밍) 시퀀스의 부분으로서 휘발성 메모리에 다운로드된다.
이들 프로그램 가능한 논리 디바이스("PLD") 모두에 대해, 디바이스의 기능은 그러한 목적을 위해 디바이스에 제공되는 데이터 비트에 의해 제어된다. 데이터 비트는 휘발성 메모리(예컨대, FPGA 및 일부 CPLD에서와 같이, 정적 메모리 셀)에, 비휘발성 메모리(예컨대, 일부 CPLD에서와 같이, FLASH 메모리)에, 또는 임의의 다른 타입의 메모리 셀에 저장될 수 있다.
다른 PLD는 디바이스 상의 여러 가지 요소를 프로그램 가능하게 상호 연결하는 금속층과 같은 프로세싱층을 적용함으로써 프로그래밍된다. 이들 PLD는 마스크 프로그램 가능한 디바이스로 알려져 있다. PLD는 또한 예컨대, 퓨즈나 안티퓨즈 기술을 이용하여 다른 방식으로 실현될 수도 있다. 용어 "PLD" 및 "프로그램 가능한 논리 디바이스"는 이들 예시적인 디바이스에 제한되지는 않지만 이들 예시적인 디바이스를 포함할 뿐만 아니라 부분적으로만 프로그램 가능한 디바이스를 아우른다. 예를 들면, PLD의 하나의 타입은 하드 부호화 트랜지스터 논리부 및 하드 부호화 트랜지스터 논리부를 프로그램 가능하게 상호 연결하는 프로그램 가능한 스위치 패브릭의 조합을 포함한다.
위에 언급된 바와 같이, 고급 FPGA는 어레이 내에 여러 개의 상이한 타입의 프로그램 가능한 논리 블록을 포함할 수 있다. 예를 들면, 도 1은 다중 기가비트 송수신기(multi-gigabit transceiver: "MGT")(101), 구성 가능한 논리 블록("CLB")(102), 랜덤 액세스 메모리 블록("BRAM")(103), 입/출력 블록("I/O")(107)(예컨대, 구성 포트 및 클록 포트), 및 디지털 클록 관리자, 아날로그 디지털 컨버터, 시스템 모니터링 논리부 등과 같은 다른 프로그램 가능한 논리부(108)를 포함하는 막대한 수의 상이한 프로그램 가능한 타일을 포함하는 FPGA 아키텍처(100)를 예시한다. 일부 FPGA는 또한 전용 프로세서 블록("PROC")(110)을 포함한다.
일부 FPGA에서는, 각각의 프로그램 가능한 타일은 각각의 인접한 타일 내의 대응하는 상호 연결 요소로의 및 상호 연결 요소로부터의 표준화된 연결부를 갖는 프로그램 가능한 상호 연결 요소("INT")(111)를 포함한다. 따라서, 함께 취해진 프로그램 가능한 상호 연결 요소는 예시된 FPGA용의 프로그램 가능한 상호 연결 구조를 실현한다. 프로그램 가능한 상호 연결 요소(111)는 또한, 도 1의 최상부에 포함되는 예로서 도시된 타일과 동일한 타일 내의 프로그램 가능한 논리 요소로의 및 프로그램 가능한 논리 요소로부터의 연결부를 포함한다.
예를 들면, CLB(102)는 사용자 논리를 실현하도록 프로그래밍될 수 있는 구성 가능한 논리 요소("CLE")(112)와 단일 프로그램 가능한 상호 연결 요소("INT")(111)를 포함할 수 있다. BRAM(103)은 하나 이상의 프로그램 가능한 상호 연결 요소에 덧붙여서 BRAM 논리 요소("BRL")(113)를 포함할 수 있다. 일반적으로, 타일에 포함되는 상호 연결 요소의 수는 타일의 높이에 따른다. 도시된 실시예에서는, BRAM 타일은 5개의 CLB와 동일한 높이를 갖지만, 다른 수(예컨대, 4개)가 또한 사용될 수도 있다. DSP 타일(106)은 적절한 수의 프로그램 가능한 상호 연결 요소에 덧붙여서 DSP 논리 요소("DSPL")(114)를 포함할 수 있다. IOB(104)는 예를 들면, 프로그램 가능한 상호 연결 요소(111)의 하나의 인스턴스(instance)에 덧붙여서 입/출력 논리 요소("IOL")(115)의 2개의 인스턴스를 포함할 수 있다. 당업자에게는 명백해지는 바와 같이, 예를 들어, I/O 논리 요소(115)에 연결되는 실제의 I/O 패드는 입/출력 논리 요소(115)의 영역에 국한되지 않는다.
도시된 실시예에서는, (도 1에 도시된) 다이의 중심에 가까운 수평 영역이 구성, 클록, 및 다른 제어 논리부용으로 사용된다. 이 수평 영역 또는 칼럼으로부터 연장하는 수직 칼럼(109)이 FPGA의 폭을 가로질러 클록 및 구성 신호를 분포시키도록 사용된다.
도 1에 도시된 아키텍처를 이용하는 일부 FPGA는 FPGA의 대부분을 형성하는 규칙적인 원기둥 구조를 방해하는 추가의 논리 블록을 포함한다. 추가의 논리 블록은 프로그램 가능한 블록 및/또는 전용 논리부일 수 있다. 예를 들면, 프로세서 블록(110)은 GLB 및 BRAM의 여러 개의 칼럼을 걸친다.
도 1은 예시적인 FPGA 아키텍처만을 도시하도록 의도된 것이다. 예를 들면, 하나의 로우(row) 내의 논리 블록의 수, 로우의 상대 폭, 로우의 수 및 순서, 로우에 포함되는 논리 블록의 타입, 논리 블록의 상대 크기, 및 도 1의 최상부에 포함되는 상호 연결/논리 구현은 전적으로 예시적이다. 예를 들면, 실제의 FPGA에서는, CLB의 하나 이상의 인접한 로우가 사용자 논리의 효율적인 구현을 용이하게 하기 위해 BLB가 나타나는 어디에나 포함되지만, 인접한 CLB 로우의 수는 FPGA의 전체 크기에 따라 변화한다.
도 2는 IC 칩의 예시적인 메모리 시스템(200)을 도시하는 블록도이다. 이 예에서는, 서로에 대해 캐스케이드된 4개의 BRAM 모듈(250)이 존재하지만; 다른 예에서는, 서로에 대해 캐스케이드된 오직 2개 또는 4개 보다 많은 BRAM 모듈(250)이 존재할 수도 있다. BRAM 모듈(250)은 각각의 구성 가능한 하드 매크로로서 제공될 수도 있고, 즉, BRAM 모듈(250)은 일부 신호 상태를 설정하기 위한 구성 메모리 셀을 갖는 IC 칩 내의 매립식 또는 전용 회로로서 제공될 수도 있다. 그러므로, 메모리 시스템(200)은 도 1의 FPGA(100)의 BRAM(103)의 칼럼의 일부분일 수도 있다. 그러한 구성 가능한 하드 매크로의 칼럼을 제공함으로써, 그러한 칼럼 내에서 데이터의 병렬 캐스케이딩을 허용하는 구성이 더 저속의 프로그램 가능한 패브릭 자원을 통해 그러한 데이터를 전달할 필요 없이 제공될 수도 있다.
각각의 BRAM 모듈(250)은 서로 떨어져 있는 상부 메모리 블록(201) 및 하부 메모리 블록(202)을 갖는다. 이 예에서는, 4개의 BRAM 모듈(205-0 내지 250-3)이 존재하기 때문에, 상부 메모리 블록(201)은 각각의 BRAM 모듈(250-0 내지 250-3)에 대응하는 메모리 블록(201-0 내지 201-3)으로서 라벨 붙여진다. 유사하게, 하부 메모리 블록(202)은 각각의 BRAM 모듈(250-0 내지 250-3)에 대응하는 메모리 블록(202-0 내지 202-3)으로서 라벨 붙여진다.
BRAM 모듈(250)뿐만 아니라 관련된 메모리 블록(201 및 202)은 캐스케이드된 BRAM 모듈 또는 메모리 블록의 칼럼 내의 시작하는 것부터 종료하는 BRAM 모듈 또는 메모리 블록까지 -0 내지 -3이 라벨 붙여진다. 이 예에서는, BRAM 모듈(250)의 상부 메모리 블록(201)이 메모리 칼럼(203)을 제공하도록 캐스케이드 결합되고, 하부 메모리 블록(202)이 메모리 칼럼(204)을 제공하도록 캐스케이드 결합된다.
각각의 메모리 칼럼은 별개의 데이터 및 어드레스 버스를 가질 수도 있다. 이 예에서는, 메모리 칼럼(203)은 데이터 버스(206) 및 어드레스 버스(205)를 갖는다. 어드레스 버스(205)는 메모리 블록(201-0 내지 201-3)의 각각의 기록 어드레스 포트(A)에 공통으로 결합된다. 이 예에서는, 데이터 버스(206)는 메모리 블록(201-0 내지 201-3)의 각각의 데이터-인 포트(D)에 공통으로 결합된다. 다른 예에서는, 데이터 버스(206)는 공통으로 결합될 필요가 없으며, 메모리 블록(201-0 내지 201-3)의 각각의 데이터 포트(D)가 별개의 직렬 데이터 입력을 수신할 수도 있다.
유사하게, 이 예에서는, 메모리 칼럼(204)은 데이터 버스(208) 및 어드레스 버스(207)를 갖는다. 어드레스 버스(207)는 메모리 블록(202-0 내지 202-3)의 각각의 기록 어드레스 포트(A)에 공통으로 결합된다. 이 예에서는, 데이터 버스(208)는 메모리 블록(202-0 내지 202-3)의 각각의 데이터-인 포트(D)에 공통으로 결합된다. 또한, 다른 예에서는, 데이터 버스(208)는 공통으로 결합될 필요가 없으며, 메모리 블록(202-0 내지 202-3)의 각각의 데이터-인 포트(D)가 별개의 데이터 입력을 수신할 수도 있다.
메모리 칼럼(203)은 판독 어드레스 버스(241)를 갖고, 메모리 칼럼(204)은 판독 어드레스 버스(242)를 갖는다. 어드레스 버스(241)는 메모리 블록(201-0 내지 201-3)의 각각의 판독 어드레스 포트(A)에 공통으로 결합될 수도 있다. 어드레스 버스(242)는 메모리 블록(202-0 내지 202-3)의 각각의 판독 어드레스 포트(A)에 공통으로 결합될 수도 있다.
BRAM 모듈(250)의 각각의 메모리 블록(201 및 202)은 각각의 제어 멀티플렉서(217)에 결합될 수도 있다. 예를 들면, 상부 메모리 블록(201-0)은 제어 멀티플렉서(217)의 인스턴스에 결합될 수도 있고, 하부 메모리 블록(202-0)은 제어 멀티플렉서(217)의 다른 인스턴스에 결합될 수도 있다.
각각의 메모리 블록(201 및 202)은 제어 멀티플렉서(217)의 대응하는 인스턴스의 블록 입력 포트에 데이터를 제공하기 위한 각각의 블록 출력 포트(219)를 가질 수도 있다. 각각의 제어 멀티플렉서(217)는 더욱이 더 낮은 순서의 가장 가까운 인접 BRAM(250)으로부터 데이터를 수신하기 위한 캐스케이드 입력 포트(215)를 포함할 수도 있다. 예를 들면, BRAM(250-1)은 BRAM(250-1)의 제어 멀티플렉서(217)에 블록 출력 포트(219)를 통해 데이터를 제공할 수도 있는 상부 메모리 블록(201-1)을 갖고, 그러한 제어 멀티플렉서(217)는 BRAM(250-1)의 캐스케이드 입력 노드(215)에 결합될 수도 있으며, 여기에서 그러한 캐스케이드 입력 노드(215)는 BRAM(250-0)의 메모리 블록(201-0)에 결합되는 제어 멀티플렉서(217)의 데이터-아웃 포트로부터의 상부 데이터-아웃(213U)과 동일한 노드이다. 유사하게, 예를 들면, BRAM(250-1)은 BRAM(250-1)의 제어 멀티플렉서(217)의 다른 인스턴스에 블록 출력 포트(219)를 통해 데이터를 제공할 수도 있는 하부 메모리 블록(202-1)을 갖고, 그러한 제어 멀티플렉서(217)는 BRAM(250-1)의 캐스케이드 입력 노드(215)에 결합될 수도 있으며, 여기에서 그러한 캐스케이드 입력 노드(215)는 BRAM(250-0)의 메모리 블록(202-0)에 결합되는 제어 멀티플렉서(217)의 데이터-아웃 포트로부터의 하부 데이터-아웃(213L)과 동일한 노드이다. 명확하게 하고 제한하지 않을 목적으로, 유사한 설명은 메모리 칼럼(203 및 204) 내의 다른 더 낮은에서부터 더 높은 순서의 가장 가까운 인접 메모리 블록에 대해 반복하지 않는다.
신호 도통과 관련된 신호 라인이 예시적으로 도시되어 있지만, 다수의 사례에서는, 그러한 신호 라인은 비트의 병렬 버싱(parallel busing of bits)을 나타내고, 그에 따라 다수의 도통 라인을 나타낼 수도 있다. 예를 들면, BRAM 모듈(250)은 72 비트의 데이터 출력 폭을 가질 수도 있지만; 그러한 데이터 출력 폭은 각각 36 비트의 2개의 동일한 부분으로 분리될 수도 있다. 본 명세서에서 "상부" 부분으로 칭해지는 그러한 부분 중의 하나는 메모리 칼럼(203)과 관련될 수도 있고, 본 명세서에서 "하부" 부분으로 칭해지는 그러한 부분 중의 나머지 하나는 메모리 칼럼(204)과 관련될 수도 있다. 상술한 비트 폭은 다른 비트 폭이 사용될 수도 있으므로, 제한하는 것이 아니고 예로서 명확하게 하기 위한 목적으로 사용된다. 그러므로, 예의 목적으로, 비트 0 내지 35가 하부 부분으로 칭해지고, 비트 36 내지 71이 상부 부분으로 칭해진다. 그러한 명명법과 일관되게, 상부 메모리 블록(201)과 관련된 제어 멀티플렉서(217)의 출력은 데이터-아웃(213)과 함께 그러한 참조 번호 뒤에 "U"가 라벨 붙여진다, 즉, 데이터-아웃(213U)으로 라벨 붙여진다. 유사하게, 하부 메모리 블록(202)과 관련된 제어 멀티플렉서(217)의 출력은 데이터-아웃(213)과 함께 그러한 참조 번호 뒤에 "L"이 라벨 붙여진다, 즉, 데이터-아웃(213L)으로 라벨 붙여진다.
스택의 최초의 BRAM 모듈(250-0)은, 각각의 BRAM 모듈(250)이 동일한 패턴을 반복하여 복제하여 형성될 수도 있으므로, 선택적으로 캐스케이드 입력(211)을 가질 수도 있다. 그러나, 스택의 최초의 BRAM 모듈(250)에 입력하기 위해 어떠한 캐스케이드된 데이터가 존재하지 않을 수도 있으며, 그에 따라 그러한 캐스케이드 입력(211)이 예를 들면, 접지 또는 전원 전압에 결합될 수도 있다. 유사하게, 스택의 최후의 BRAM 모듈(250-x)은, 각각의 BRAM 모듈(250)이 동일한 패턴을 반복하여 복제하여 형성될 수도 있으므로, 선택적으로 데이터-아웃(213)에서 캐스케이드 출력을 가질 수도 있다. 그러나, 그러한 스택의 다른 BRAM 모듈(250)에 출력하기 위해 어떠한 캐스케이드된 데이터가 존재하지 않을 수도 있으며, 그에 따라 그러한 데이터-아웃(213)에서의 캐스케이드 출력이 예를 들면, 그에 대한 캐스케이드 출력 노드/트레이스가 존재할 수도 있을지라도, 그러한 스택의 다른 BRAM 모듈(250)에 결합되지 않을 수도 있다.
도 3a는 BRAM 모듈(250)의 예시적인 상부 또는 하부 부분을 도시하는 블록/회로도이다. 도 3b는 예시적인 캐스케이드 제어 블록(370)을 도시하는 블록도이다. 도 4는 BRAM 모듈(250)의 예시적인 스택(400)을 도시하는 블록/회로도이다. 도 2 내지 도 4를 동시에 참조하여, BRAM 모듈(250) 및 스택(400)이 더 기재된다.
이 예에서는, BRAM 모듈(250)의 상부 또는 하부 부분이 BRAM 블록(313), 레지스터(335), 및 멀티플렉서(305, 325, 345 및 217)를 포함한다. 그러므로, 상부 및 하부 부분을 갖는 각각의 BRAM 모듈(250)은 복수의 BRAM 블록(313), 레지스터(335) 및 2 입력 멀티플렉서의 세트(305, 325, 345 및 217)을 포함한다. 다른 예에서는, 멀티플렉서(217)는 3 입력 멀티플렉서일 수도 있고, 그 예에서 멀티플렉서(345)는 생략될 수도 있다. 그러나, 제한하는 것이 아니고 예로서 명확하게 하기 위한 목적으로, 2 입력 멀티플렉서(304, 325, 345 및 217)가 사용되는 것으로 상정될 것이다.
멀티플렉서(305)는 데이터-인 멀티플렉서로 칭해질 수도 있고, 여기에서 각각의 그러한 멀티플렉서(305)는 데이터-인 입력 포트(301), 캐스케이드 입력 포트(302), 캐스케이드/데이터-인 선택 포트(303) 및 기록 데이터 출력 포트(304)로 칭해질 수도 있는 복수의 포트를 갖는다. 캐스케이드/데이터 입력 선택 포트(303)는 구성 메모리 셀(361)에 결합될 수도 있다. 구성 메모리 셀(361)은 데이터-인 멀티플렉서(305)가 데이터-인 입력 포트(301) 상의 입력 데이터 또는 기록 데이터 출력 포트(304)를 통해 그러한 선택된 데이터의 출력용 캐스케이드 입력 포트(302) 상의 캐스케이드 입력 데이터(213-(x-1)) 사이에서 선택하도록 하기 위해 프로그래밍될 수도 있으며, 여기에서 "x"는 BRAM 모듈 레벨이라고 칭한다. 그러므로, 구성 메모리 셀(361)은 데이터-인 멀티플렉서(305)의 출력을 제어하기 위해 사용될 수도 있다.
각각의 BRAM 블록(313)은 기록 데이터 입력 포트(312), 클록 포트(311), 및 판독 데이터 출력 포트(314)를 가질 수도 있다. 클록 포트(311)에 제공되는 클록 신호(311S)를 이용하여, BRAM 블록(313)이 동기식 메모리로서 동작될 수도 있다. BRAM 블록(313)은, 제한하는 것이 아니고 명확하게 하기 위한 목적으로 전체적으로 도시되지 않은 다른 포트 중에서 판독 어드레스 포트, 기록 인에이블 포트, 판독 인에이블 포트, 및 판독 어드레스 포트와 같은 추가의 포트를 가질 수도 있다. 그러한 점에 따라서, BRAM 블록(313)은 FPGA의 알려진 BRAM일 수도 있다. 예를 들면, 알려진 BRAM은 4개의 9K 비트 메모리 어레이를 가질 수도 있고, 여기에서 각각의 그러한 메모리 어레이는 1 내지 18 비트를 선택적으로 출력할 수도 있으며, 여기에서 그러한 출력은 72 비트 폭 버스를 제공하도록 연쇄 결합될 수도 있다. 제한하는 것이 아니고 예로서 명확하게 하기 위한 목적으로, 36 비트 폭 출력이 BRAM 블록(313)으로부터 제공되는 것으로 상정될 것이며, 여기에서 그러한 BRAM 블록(313)은 그러한 메모리 어레이 중 2개와 관련되지만; 다른 예에서는, BRAM 블록(313)의 다른 구성이 제한 없이 다른 메모리 어레이 크기 및/또는 비트 폭 크기를 포함하여 사용될 수도 있다.
기록 데이터 입력 포트(312)가 기록 데이터 출력 포트(304)로부터 기록 데이터를 수신하기 위해 결합될 수도 있다. BRAM 블록(313)으로부터 판독된 데이터는 판독 데이터로서 판독 데이터 출력 포트(314)로부터 출력될 수도 있다.
멀티플렉서(325)는 파이프라인 멀티플렉서로 칭해질 수도 있고, 여기에서 각각의 그러한 멀티플렉스(325)는 판독 데이터 입력 포트(321), 캐스케이드 입력 포트(322), 파이프라인 선택 포트(323), 및 레지스터 데이터 출력 포트(324)로 칭해질 수도 있는 복수의 포트를 갖는다. 판독 데이터 입력 포트(321)는 판독 데이터 출력 포트(314)로부터 출력된 판독 데이터를 수신하도로 결합될 수도 있다. 파이프라인 선택 포트(323)는 캐스케이드 제어 블록(370)으로부터 출력된 "selx" 신호(323S)를 수신하도록 결합될 수도 있고, 여기에서 "sel"은 선택을 지칭하고 여기에서 "x"는 또한 이 예에서는 0 내지 3의 정수인 BRAM 모듈 레벨을 지칭한다. 그러한 점에 따라서, BRAM 블록(313)은 BRAMx로서 라벨 붙여진다. "selx" 신호(323S)에 응답하여, 파이프라인 멀티플렉서(325)는 레지스터 데이터로 칭해질 수도 있는 판독 데이터를 출력할 수도 있거나, 레지스터 데이터 출력 포트(324)를 통해 캐스케이드 입력 데이터(213-(x-1))를 출력할 수도 있다.
각각의 레지스터(335)는 레지스터 데이터 입력 포트(331), 레지스터된 데이터 출력 포트(333), 및 클록 포트(332)를 가질 수도 있다. 클록 포트(332)는 레지스터 클록 신호(332S)를 수신하도록 결합될 수도 있다. 레지스터 클록 신호(332S) 및 클록 신호(311S)는 상이하거나 동일한 클록 신호일 수도 있다. 레지스터 데이터 입력 포트(331)는 레지스터 데이터를 수신하도록 레지스터 데이터 출력 포트(324)에 결합될 수도 있다. 레지스터(335)에 저장된 레지스터 데이터는 레지스터된 데이터 출력 포트(333)을 통해 레지스터 클록 신호(332S)에 응답하여 클록 아웃(clocked out)될 수도 있다.
멀티플렉서(345)는 레지스터/래치 모드 또는 데이터-아웃 멀티플렉서로 칭해질 수도 있고, 여기에서, 그러한 멀티플렉서(345)의 각각은 판독 데이터 입력 포트(341), 레지스터된 데이터 입력 포트(342), 레지스터된/레지스터되지 않은 선택 포트(343), 및 블록 출력 포트(219)로 칭해질 수도 있는 복수의 포트를 갖는다. 판독 데이터 입력 포트(341)는 BRAM 블록(313)으로부터 판독 데이터를 수신하도록 판독 데이터 출력 포트(314)에 결합될 수도 있다. 레지스터된 데이터 입력 포트(342)는 레지스터(335)의 클록 아웃된 레지스터된 데이터를 수신하도록 레지스터된 데이터 출력 포트(333)에 결합될 수도 있다.
레지스터된/레지스터되지 않은 선택 포트(343)는 구성 메모리 셀(362)에 결합될 수도 있다. 구성 메모리 셀(362)은 데이터-아웃 멀티플렉서(345)가 판독 데이터 입력 포트(341) 상의 판독 데이터 또는 블록 출력 포트(219)를 통해 그러한 선택된 데이터의 출력용의 레지스터 데이터 입력 포트(342) 상의 레지스터된 데이터 사이에서 선택하도록 하기 위해 프로그래밍될 수도 있다. 그러므로, 구성 메모리 셀(362)은 데이터-아웃 멀티플렉서(345)의 출력을 제어하기 위해 사용될 수도 있다.
이 예에서는, 상부 또는 하부 메모리 블록(201)이 BRAM 블록(3130, 레지스터(335) 및 멀티플렉서(305, 325 및 345)를 포함한다. 그러므로, 데이터-아웃 멀티플렉서(345)로부터의 출력은 블록 데이터 출력으로 칭해질 수도 있다. BRAM 모듈(250)이 출력 버스의 상부 부분과 하부 부분으로 분리되는 출력 버스를 가질 수도 있기 때문에, 상부 메모리 블록(201U)의 블록 출력 포트(219)는 그러한 BRAM 모듈(250)의 그러한 출력 버스의 상부 부분을 위한 것일 수도 있고, 하부 메모리 블록(201L)의 블록 출력 포트(219)는 그러한 BRAM 모듈(250)의 그러한 출력 버스의 하부 부분을 위한 것일 수도 있다.
멀티플렉서(217)는 제어 멀티플렉서로 칭해지며, 여기에서 그러한 멀티플렉서(217)의 각각은 캐스케이드 입력 포트(352), 블록 입력 포트(351), 제어 선택 포트(353) 및 데이터-아웃 포트(354)로 칭해질 수도 있는 복수의 포트를 갖는다. 블록 입력 포트(351)는 블록 출력 포트(219)로부터 출력된 블록 데이터를 수신하도록 결합될 수도 있다. 캐스케이드 입력 포트(352)는 캐스케이드 입력 데이터(213-(x-1))를 수신하도록 결합될 수도 있다. 제어 선택 포트(353)는 제어 선택 신호 즉, "cntlx" 신호(353S)를 수신하도록 결합될 수도 있고, 여기에서 "cntl"은 제어를 지칭하고 여기에서 "x"는 BRAM 모듈 레벨을 지칭한다. 제어 멀티플렉서(217)는 "cntlx" 신호(353S)에 응답하여, 블록 입력 포트(351) 상에 출력되는 블록 데이터 또는 데이터-아웃 포트(354)를 통해 그러한 선택된 데이터의 출력용의 캐스케이드 입력 포트(352) 상의 캐스케이드 입력 데이터(213-(x-1)) 사이에서 선택할 수도 있다. 또한, 이 예에서는 N 폭 버스가 36 비트라고 상정되고, 그에 따라 예를 들면, 데이터-아웃 포트(354)가 36 비트 폭 버스가 될 것이다.
그러한 점에 따라서, 캐스케이드 입력 포트(302, 332, 및 352)는 가장 가까운 인접 하위 BRAM 모듈 레벨로부터 캐스케이드 입력 데이터(213-(x-1))를 수신하도록 BRAM 모듈 레벨의 캐스케이드 입력 노드(215x)에 공통으로 결합될 수도 있다. BRAM 모듈(250)의 버스의 상부 또는 하부 부분일 수도 있는 데이터-아웃(213)이 현재의 BRAM 모듈 레벨의 메모리 블록(201x)으로부터 출력된 블록 데이터 또는 가장 가까운 인접하는 더 낮은 BRAM 모듈 레벨로부터의 캐스케이드 입력 데이터(213-(x-1))일 수도 있다. BRAM 모듈(250-0)과 같은 BRAM 모듈(250)의 스택(400)의 최저 레벨은 예를 들면, 접지(401)와 같은 정전압에 결합되는 하부 캐스케이드 입력 노드(215L) 및 상부 캐스케이드 입력 노드(215U)를 가질 수도 있다.
BRAM 모듈(250)의 상부 메모리 블록(201U)의 캐스케이드 입력 포트(302, 332 및 352)는 상부 캐스케이드 입력 노드(215U)에 결합될 수도 있고, 그러한 BRAM 모듈(250)의 하부 메모리 블록(201L)의 캐스케이드 입력 포트(302, 332 및 352)는 하부 캐스케이드 입력 노드(215L)에 결합될 수도 있다. BRAM 모듈(250-3)과 같은 BRAM 모듈(250)의 스택(400)의 최고 레벨은, 그러한 스택(400)에 대해 후속하는 BRAM 모듈 레벨이 존재하지 않으므로, 그러한 스택(400)의 후속하는 BRAM 모듈 레벨에 대한 캐스케이드 입력용으로 사용되지 않는 하부 데이터-아웃(213L) 및 상부 데이터-아웃(213U)를 가질 수도 있다. 기존 또는 더 높은 BRAM 모듈 레벨의 캐스 케이드 입력 노드(215)는 가장 가까운 인접하는 더 낮은 BRAM 모듈 레벨의 데이터-아웃 포트(354)와 동일한 노드일 수도 있다. 그러한 앞서 설명한 바와 같은 BRAM 모듈 레벨간 결합은 스택(400)의 BRAM 모듈 레벨간 다중 결합을 위한 것일 수도 있다.
BRAM 모듈(250)의 4개의 레벨이 예시적으로 도시되어 있지만, 단 하나의 BRAM 모듈(250)이 한 번에 사용될 수도 있다. 더욱이, BRAM 모듈(250)의 4개의 레벨이 스택(400)에 대해 예시적으로 도시되어 있지만, 스택(400)은 BRAM 모듈(250)의 2 이상의 레벨을 가질 수도 있으며, 그에 따라 BRAM 모듈(250)의 4개 미만 또는 초과의 레벨이 사용될 수도 있다.
상부 메모리 블록(201)의 블록 출력 포트(219)는 BRAM 모듈(250)의 출력 버스의 제1 부분을 위한 것일 수도 있고, 하부 메모리 블록(202)의 블록 출력 포트(219)는 그러한 BRAM 모듈(250)의 출력 버스의 제2 부분을 위한 것일 수도 있다. 그러한 구성은 예를 들면, 도 1의 FPGA(100)와 같은 IC 상에 스택(400)을 제공하기 위해 다수의 BRAM 모듈(250)에 대해 반복될 수도 있다. 그러므로, 메모리 칼럼(203 또는 204)이 BRAM 모듈(250)의 상부 및 하부 부분 각각의 스택(400)을 제공하기 위해 사용될 수도 있고, 여기에서 데이터는 메모리 시스템(200) 내에서 데이터의 예를 들면, "수직" 버싱을 위한 데이터의 병렬 스트림의 직렬 체인과 같은 구성 가능한 하드 매크로 메모리 시스템(200) 내에서 낮은 것으로부터 높은 BRAM 모듈 레벨까지 병렬로 캐스케이드될 수도 있다. 그러나, 하나 이상의 상부 메모리 블록(201)과 관련되는 하나 이상의 데이터-아웃 포트(354)로부터의 병렬 데이터-아웃(213)은 예를 들면, 복수의 데이터-아웃(213U)과 같은 프로그램 가능한 패브릭 자원에 병렬로 다수의 데이터의 병렬 스트림을 제공하기 위해 사용될 수도 있다. 유사하게, 하나 이상의 하부 메모리 블록(202)과 관련되는 하나 이상의 데이터-아웃 포트(354)로부터의 병렬 데이터-아웃(213)은 예를 들면, 복수의 데이터-아웃(213L)과 같은 프로그램 가능한 패브릭 자원에 다수의 데이터의 병렬 스트림을 제공하기 위해 사용될 수도 있다. 그러한 구성에서는, 예를 들면, BRAM 모듈(250-3)의 출력 버스의 상부 부분과 예를 들면, BRAM 모듈(250-2)의 출력 버스의 상부 부분의 조합이 메모리 시스템(200)에서의 데이터의 "수평" 버싱을 위한 프로그램 가능한 패브릭 자원에 출력 버스를 제공할 수도 있다.
캐스케이드 제어 블록(370)은 복수의 제어 신호(371)를 수신하도록 결합될 수도 있고, 응답 시에 selx 신호(323SU 및 323SL)뿐만 아니라 cntlx 신호(353SU 및 353SL)를 제공하도록 구성될 수도 있다. 신호(323SU 및 353SU)는 BRAM 모듈(250)의 상부 부분에 제공되고, 신호(323SL 및 353SL)는 BRAM 모듈(250)의 하부 부분에 제공된다. 제어 신호의 예는 제한 없이 a를 포함할 수도 있다.
개요를 설명하기 위해, 다수의 BRAM이 예를 들면, 더 큰 메모리 블록을 효율적으로 생성하기 위해 위에서 아래의 방향으로 1 내지 36 비트로 구성 가능할 수도 있는 캐스케이드 데이터에 직렬로 결합될 수도 있다. 종래에는, 통상의 BRAM의 직렬 연쇄 결합과 같은 것이 프로그램 가능한 패브릭 자원 즉, 룩업 테이블("LUT")을 사용하여 실행되었고, 그에 따라 더욱 느려졌고 더 많은 전력을 소비하였으며/하였거나 프로그램 가능한 패브릭 자원을 소비하였다. 그러한 점에 따라서, 선입선출 버퍼("FIFO") 구성이 사용될 수도 있으며, 여기에서 BRAM 모듈의 전체 칼럼은 그러한 FIFO를 제공하기 위해 스택(400)을 결합시키도록 프로그램 가능한 패브릭 자원을 사용해야 함으로써 성능이 제한되지 않는 딥(deep) FIFO를 제공하기 위해 구성 가능한 하드 매크로로서 결합될 수도 있다. 논리 및 라우팅은 하드 매크로 메모리 시스템(200)에 로컬적이기 때문에, 그러한 FIFO는 프로그램 가능한 패브릭 자원이 그러한 딥 FIFO를 제공하기 위해 종래의 BRAM의 연쇄 결합을 제공하는 데 사용된 경우보다 명백히 더 높은 주파수에서 동작될 수도 있다. 더욱이, BRAM 모듈의 1/2이 한 번에 사용될 수도 있다. 예를 들면, 데이터가 BRAM 모듈 버스의 최상부 부분으로부터만 출력될 수도 있다. 유사하게, 데이터가 BRAM 모듈 버스의 최하부 부분으로부터만 출력될 수도 있다. 또한, BRAM 모듈 버스의 양쪽 1/2이 동시에 사용될 수도 있지만, 서로 독립적이다. 상기 설명은 아래에서 위의 방향으로 데이터를 캐스케이드하기 위한 것일지라도, 다른 구성에서는, 데이터가 위에서 아래의 방향 및/또는 아래에서 위의 방향으로 이동될 수도 있다. 직렬 캐스케이드를 위한 모든 신호 라우팅 및 제어 논리부가 메모리 시스템으로서 제공되는 하드 매크로 내부에서 실현될 수도 있기 때문에, 제한 없이 속도를 포함하는 성능이 향상될 수도 있다. 또한, 더욱 상세히 후술되는 바와 같이, 저전력 모드가 사용될 수도 있거나, 더욱 특별하게는, 데이터 폭이 전력과 성능 사이의 균형을 제공하도록 더욱 개별적으로 맞추어질 수도 있다. 그러한 점에 따라서, BRAM 메모리 모듈의 일부분이 한 번에 사용될 수도 있다는 것이 이해될 것이다. 데이터가 프로그램 가능한 패브릭 자원에 연결부로부터 개별적으로 제공될 수도 있지만, 캐스케이드된 BRAM 모듈을 가로지르는 공통 입력이 그러한 프로그램 가능한 패브릭 자원의 프로그램 가능한 상호 연결을 사용하여 함께 연결될 수도 있다. 더욱이, 그러한 캐스케이딩은 에러 정정 부호화와 함께 사용될 수도 있다.
BRAM 모듈(250)은 단독으로 또는 조합하여, 복수의 모드 중 어느 하나를 위해 구성 가능해질 수도 있다. 일반적으로, 이들 모드는 캐스케이드 모드 및 메모리 모드로 분류될 수도 있고, 그러한 모드의 변형이 더욱 상세하게 후술된다.
도 5는 예시적인 디코딩 테이블(500)을 도시하는 테이블도이다. 도 6은 디코딩 테이블(500)에 따라서 예시적인 스택(400)을 도시하는 블록/회로도이다. 스택(400)이 BRAM 모듈(250)의 상부 부분을 위한 것이지만, BRAM 모듈(250)의 하부 부분이 유사하게 사용될 수도 있다. BRAM 모듈(250)은 제한 없이 명확하게 하기 위한 목적으로 도 6에 간략화되어 있다. 디코딩 테이블(500)은 도 1 내지 도 6을 동시에 참조하여 더 설명된다.
디코딩 테이블(500)은 4개의 캐스케이드된 BRAM 모듈(250)용의 선택 신호(353S0 내지 353S3)("S0 내지 S3") 및 인에이블 신호(510 내지 513)("EN0 내지 EN3")를 디코딩하기 위한 것이다. 칼럼 501은 현재 동작을 위해 BRAM 블록(313) 데이터가 상주하는 것을 나타낸다. 인에이블 신호(510 내지 513)는 칼럼 501의 BRAM 블록(313)의 상태를 나타낸다. 유사하게, 칼럼 353S0 내지 353S3은 칼럼 501의 대응하는 BRAM 블록(313)의 선택 신호의 상태를 나타낸다. 디코딩 테이블(500) 내의 논리 1은 그와 관련된 신호가 어써트되는(asserted) 것을 나타내고, 디코딩 테이블(500) 내의 논리 0은 그와 관련된 신호가 어써트되지 않는 것을 나타낸다. 디코딩 테이블(500) 내의 "X"는 그와 관련된 신호가 논리 0인지 또는 1인지 중요하지 않다("상관없다")는 것을 나타낸다.
BRAM 블록(313)이 EPGA의 알려진 BRAM일 수도 있으므로, 그러한 BRAM 블록은 SRAM 셀의 4개의 9 킬로비트("K") 메모리 어레이를 가질 수도 있다. 이들 어레이 중 어느 것이 사용되는지를 선택하기 위해, 추가의 2개의 어드레스 비트가 2 대 4(2-to-4) 디코딩을 위해 제공될 수도 있다. 그러한 BRAM은 인에이블 신호에 덧붙여서 다른 알려진 신호를 갖는다.
일반적으로, 디코딩 테이블(500)은 BRAM 모듈(250)의 "원 핫(one hot)" 구성을 위한 것이다. 이 모드에서는, 더 낮은 레벨 BRAM 모듈의 출력이 더 높은 레벨 BRAM 모듈의 출력과 멀티플렉스되고, 순차적으로 다음의 더 높은 레벨 BRAM 출력과 멀티플렉스될 수도 있다. 이러한 타입의 직렬 캐스케이딩은 더 적은 라우팅 라인을 사용할 수도 있고, 메모리 칼럼(203 또는 204) 내의 다수의 BRAM 모듈(250)에 관한 2개의 BRAM 모듈(250)로부터 스케일링될(scaled) 수도 있다.
본 명세서에 기재된 바와 같이, BRAM 모듈(250)은 상이한 BRAM 모듈로부터 나오는 데이터를 멀티플렉스하기 위해 복수의 방법을 제공한다. 직렬 캐스케이딩을 위해, 구성 메모리 셀의 하나 이상이 대응하는 BRAM 블록(313)으로부터 판독된 데이터 또는 더 낮은 레벨 BRAM 모듈 캐스케이드 출력으로부터 얻어지는 데이터 사이에서 선택하기 위해 제어 블록(370), 멀티플렉서(217)를 캐스케이드하도록 결합될 수도 있다. 그러한 점에 따라서, BRAM 모듈(250)은 데이터 모드의 연속적인 흐름을 위해 구성될 수도 있다.
디폴트 옵션은 디코딩 블록(500)을 참조하여 예시적으로 도시된 바와 같이, 캐스케이드 제어 블록(370)의 인버터(601)에 유사하게 제공될 메모리 블록(201)에 각각 제공되는 BRAM 블록 인에이블 신호(510 내지 513)가 데이터 출력 멀티플렉싱을 실행하는 데 사용되도록 허용하는 것일 수도 있다. 구성 메모리 셀(602)은 선택 신호(S0 내지 S3)를 각각 제공하도록 대응하는 인버터(601)로부터의 출력에 응답하여 각각 프로그래밍될 수도 있다. 그러한 점에 따라서, 인에이블 신호(510 내지 513)가 대응하는 캐스케이드 인에이블 신호로 상정될 수도 있다. 선택 신호(S0 내지 S3)는 대응하는 제어 또는 캐스케이드 멀티플렉서(217)에 제공될 수도 있다.
다수의 BRAM 모듈(250)이 함께 캐스케이드될 때, 단 하나의 BRAM 블록 인에이블 신호(510 내지 513)만이 디코딩 테이블(500)에 대해 한 번에 활성이 된다, 즉, "원 핫" 방식이다. 활성 또는 어써트된 BRAM 블록 인에이블 신호는 데이터가 판독될 BRAM 블록(313)을 위한 것일 수도 있고, 따라서 그러한 BRAM 블록(313)용의 BRAM 블록 인에이블 신호(510 내지 513) 중의 BRAM 블록 인에이블 신호가 논리 1로 설정될 수도 있다. 모든 다른 BRAM 블록 인에이블 신호(510 내지 513)가 이 때 논리 0 상태로 설정될 수도 있다. 캐스케이드 제어 블록(370)이 캐스케이드 멀티플렉싱을 제어하기 위해 내부 메모리 시스템을 설정하도록 그러한 디코딩을 사용할 수도 있다. 예를 들면, BRAM 블록 인에이블 신호(510 내지 513)가 논리 0으로 설정되는 경우에는, 출력 데이터가 대응하는 BRAM 블록(313)으로부터가 아니라 캐스케이드된 입력으로부터 올 수도 있다. 그러한 점에 따라서, 사용자는 각 어써트된 BRAM 블록 인에이블 신호와 관련되는 각각의 캐스케이드된 BRAM 블록(313)에 대해 디코딩된 어드레스를 제공할 수도 있다. 디코딩 테이블(500)은 인에이블 신호(510 내지 513)가 연속적인 BRAM 모듈(250)의 제어 멀티플렉서(217)로부터 출력을 제어하기 위해 내부 멀티플렉서 제어 시그널링을 생성하도록 상이한 BRAM 블록(313)에 대해 연속적으로 어써트될 수도 있음을 나타낸다.
BRAM 블록을 선택적으로 활성화하기 위한 원 핫 방식을 사용하는 것이, 유용한 데이터를 갖는 BRAM 블록(313)만이 한 번에 하나 어써트될 수도 있으므로, 전력의 효율적인 사용일 수도 있다. 레지스터 모드에서는, 캐스케이드 멀티플렉싱을 위해 사용된 선택 신호가 1 클록 사이클만큼 지연될 수도 있다, 즉, 1 클록 사이클 레이턴시(latency)일 수도 있다. 캐스케이드 제어 블록(370)에 제공되는 내부 캐스케이드 A/B 신호 및/또는 외부 캐스케이드 선택 A/B 신호가 캐스케이드 멀티플렉싱을 제어하도록 어써트될 수도 있다. 원 핫 캐스케이드 모드 동안, BRAM 블록(313)이 논리 1로 설정된 캐스케이드 데이터 출력 인에이블 구성 메모리 셀을 갖는 경우에는, 그와 관련된 BRAM 캐스케이드 신호가 캐스케이드 체인을 잇기 위해 다음의 BRAM 모듈 레벨에 대해 활성화될 수도 있다. 그러나, 그러한 캐스케이드 데이터 출력 인에이블 A/B 구성 메모리 셀이 논리 0으로 설정되는 경우에는, 그러한 캐스케이딩은 전력 보존을 위해 그러한 원 핫 캐스케이드 모드에서의 스위칭으로부터 디스에이블될(disabled) 수도 있다. 예를 들면, 캐스케이드 체인 내의 최상부 BRAM 블록(313)이 스위칭 전력을 절감하기 위해 논리 0으로 설정된 캐스케이드 데이터 출력 인에이블 A/B 신호를 사용하여 디스에이블될 수도 있다.
도 7은 예시적인 포 딥 원 핫(four-deep one hot) 캐스케이드 모드("캐스케이드 모드")(700)를 도시하는 신호 타이밍도이다. 캐스케이드 모드(700)는 저주파수 동작을 위한 것이고 2단계 버스트 모드(two-stage burst mode)를 위한 것이다. 2단계 버스트 모드가 예시적으로 도시되어 있지만, 더 긴 버스트 모드가 사용될 수도 있다. 제1 버스트 단계(701)는 클록 신호(311), 판독 어드레스 신호(241), 인에이블 신호(510 내지 513), 및 데이터 출력 레지스터(335)용의 BRAM 블록(313)으로부터의 데이터를 출력하기 위한 결합된 데이터 출력 신호(703)의 예시적인 상태를 예시적으로 도시한다. 제2 버스트 단계(702)는 클록 신호(311), 판독 어드레스 신호(241), 인에이블 신호(510 내지 513), 및 데이터-아웃(213U)의 예시적인 상태를 예시적으로 도시한다.
도 8은 데이터 출력 캐스케이드 파이프라인 모드("파이프라인 캐스케이드 모드")용으로 구성된 예시적인 스택(400)을 도시하는 블록/회로도이다. 스택(400)이 BRAM 모듈(250)의 상부 부분을 위한 것이지만, BRAM 모듈(250)의 하부 부분이 유사하게 사용될 수도 있다. BRAM 모듈(250)은 제한 없이 명확하게 하기 위한 목적으로 도 8에 간략화되어 있다. 파이프라인 캐스케이드 모드가 도 1 내지 도 8을 동시에 참조하여 더 설명된다.
파이프라인 캐스케이드 모드는 사용자가 고주파수의 동작과 함께 캐스케이드 모드를 채용하게 한다. 이 구성에서는, 출력 레지스터(335)가 캐스케이드 모드에서 더 높은 주파수의 동작을 얻기 위해 추가의 파이프라인 단계로서 사용된다. 레지스터(335)의 데이터 출력 레지스터 A/B 구성 메모리 셀 및 캐스케이드/파이프라인 A/B 구성 메모리 셀(362)이 각각 논리 1로 설정될 수도 있다. 선택 신호(323S)는 출력 데이터가 대응하는 레지스터(335)에 저장되도록 하기 위해 현재 또는 현재 레벨 BRAM 모듈(250)로부터의 또는 이전 또는 더 낮은 레벨의 가장 가까운 인접 BRAM 모듈(250)로부터의 데이터를 멀티플렉스하도록 설정될 수도 있다. 파이프라인 캐스케이드 모드가 사용될 수도 있거나, 더욱 일반적으로는 파이프라인 모드가 사용될 때, BRAM 모듈(250)의 각각의 최후의 멀티플렉서, 즉, 제어 멀티플렉서(217)가 출력을 위한 현재 레벨 BRAM 모듈(250)로부터의 데이터를 선택하도록 설졍될 수도 있다. 파이프라인 캐스케이드 모드 동안, 캐스케이딩 데이터 출력은 레지스터(335)를 통해 전파한다.
도 9는 도 8의 예시적인 스택(400)용의 예시적인 포 딥 파이프라인 캐스케이드 모드("캐스케이드 모드")(900)를 도시하는 신호 타이밍도이다. 캐스케이드 모드(900)는 고주파수 동작을 위한 것이고 4개의 BRAM 모듈(250)을 사용하는 4의 버스트 길이를 갖는 3단계 버스트 모드를 위한 것이다. 4의 버스트 길이가 예시적으로 도시되어 있지만, 임의의 버스트 길이가 사용될 수도 있다. 캐스케이드 모드(900)는 클록 신호(311), 판독 어드레스 신호(241), 인에이블 신호의 조합(510 내지 513)("EN 0-3"), 캐스케이드 인에이블 신호(323 S0 내지 S3) 및 데이터-아웃(213U)의 예시적인 상태를 예시적으로 도시한다.
도 10은 그러한 스택(400)의 입력측 및 출력측 상의 프로그램 가능한 패브릭 자원(1000)에 결합되는 상부 부분 또는 하부 부분 스택(400)의 예시적인 실시예를 도시하는 블록/회로도이다. 도 10은 도 2 내지 도 9를 동시에 참조하여 더 설명된다.
제한 없이 예로서 명확하게 하기 위한 목적으로, 스택(400)은 4개의 BRAM 모듈(250)을 포함한다. 스택(400)의 BRAM 모듈(250)은 제한 없이 명확하게 하기 위한 목적으로 간략화되어 있다. 특히, 포트(301)로의 데이터-인 입력 신호는 그 관련된 BRAM 모듈(250)에 대응하는 데이터 입력 신호(DI(0) 내지 DI(3))로서 라벨 붙여져 있다. 유사하게, seix 신호(323S)가 그 관련된 BRAM 모듈(250)에 대응하는 선택 데이터 입력 신호(SDI(0) 내지 SDI(3))로서 라벨 붙여져 있고, cntlx 신호(353S)가 BRAM 모듈(250)에 대응하는 데이터 출력 신호(SDO(0) 내지 SDO(3))로서 라벨 붙여져 있다. 이 간략화된 구성을 사용하여, 스택(400)의 다양한 모드 또는 구성이 더 설명된다.
일반적으로, SDO(x) 신호는 BRAM 모듈(250)의 출력 버스에 대한 출력 멀티플렉싱을 제어하기 위한 동적 1비트 선택 신호이며, 상기 예에서는 72비트 버스이다. 그러한 SDO(x) 신호는 전력 절감을 위한 버스 멀티플렉싱, 광폭 버스 RAM 구성, 저전력 광폭 BRAM 사용 모드, 또는 정적 FIFO 캐스케이드용으로 사용될 수도 있다. 일반적으로, SDI(x) 신호는 출력 레지스터의 입력원, 출력 캐스케이드 또는 RAM 래치출력을 제어하기 위한 동적 1비트 선택 신호이다. 그러한 SDI(x) 신호는 메모리 깊이의 다중 레벨로 고주파수에서 메모리를 통해 벡터/버스트 비랜덤(nonrandom) 액세스 또는 출력 멀티플렉싱과 관련하여 고주파수의 동작에서 다단계 딥 RAM용으로 사용될 수도 있다.
도 11은 굵은 흑색 라인으로 전체적으로 나타내는 바와 같은 데이터 경로(1100)를 갖는 예시적인 시스톨릭(systolic) 모드 또는 선입 선출 버퍼("FIFO") 모드를 도시하는 도 10의 블록/회로도이다. 더욱 특별하게는, 시스톨릭 모드에 대해, 데이터가 파이프라인 기록으로 상정될 수도 있는 시스톨릭 기록용 캐스케이드를 위해 입력될 수도 있다. 스택(400)을 통과하는 데이터 경로(1100)는 시스톨릭 모드용의 4개의 BRAM 모듈(250)을 통한 데이터의 이동을 나타낸다. 데이터 경로(1100)는 프로그램 가능한 패브릭 자원(1000)으로부터의 DI(0) 입력에서 시작할 수도 있다.
시스톨릭 모드는 사용자가 더 낮은 레벨 BRAM 블록(313)으로의 데이터를 기록한 후 가장 가까운 인접 더 높은 레벨 BRAM 블록(313)으로 기록하기 위한 그러한 더 낮은 레벨 BRAM 블록(313)으로부터의 데이터를 판독할 수 있게 한다. 이 진행은 그러한 데이터가 모든 캐스케이드된 BRAM 모듈(250)을 통해 전파될 때까지 계속할 수도 있다. 사용자는 그러한 캐스케이드된 BRAM 모듈 중의 어느 하나로부터 데이터를 랜덤하게 인출할 수도 있다. 이 구성에서는, 데이터가 오직 낮은 레벨에서 높은 레벨로 캐스케이드될 수도 있고, 스택(400)은 메모리 시스템(200) 하드 매크로 파일 내부의 전용 라우팅을 사용한다. 다른 출력 신호가 프로그램 가능한 패브릭 자원(1000)의 프로그램 가능한 상호 연결부로부터 그러한 메모리 시스템 하드 매크로 타일에 적용될 수도 있다. 더 낮은 레벨 BRAM 모듈(2250)로부터 가장 가까운 인접 더 높은 레벨 BRAM 모듈(250)로 캐스케이드된 데이터 출력은 SDI(x) 신호와 같은 캐스케이드 데이터 입력 선택 A/B 신호에 의해 제어되어, 판독 데이터가 더 낮은 레벨 BRAM 모듈로부터 더 높은 레벨 BRAM 모듈의 BRAM 블록(313)으로 기록되게 할 수도 있다.
데이터 경로(1100)는 FIFO 모드용과 동일하며, 제한 없이 에러 정정 부호를 포함하는 전속(full speed) 캐스케이드로서 실행될 수도 있다. FIFO 모드는 더 상세하게 후술된다.
도 12a는 굵은 흑색 라인으로 전체적으로 나타내는 바와 같은 데이터 경로(1200)를 갖는 예시적인 저전력 레지스터 모드를 도시하는 도 10의 블록/회로도이다. 데이터가 BRAM 모듈(250) 중 어느 하나의 레지스터(335)에 로드될 수도 있다. 레지스터 모드에서, 단 하나의 BRAM 모듈(250) 레지스터(335)만이 한 번에 활성화된다, 즉 원 핫 레지스터 캐스케이드 모드이다.
레지스터 모드용의 데이터 경로(1200)가 최상부 BRAM 모듈, 즉, BRAM 모듈(250-3)으로부터 프로그램 가능한 패브릭 자원(1000)으로 가는 것이 예시적으로 도시되어 있지만, 레지스터 모드는 스택(400) 내의 임의의 레지스터(335)로부터 시작될 수도 있다. 레지스터 모드에서는, 데이터가 레지스터(335)에 로드된 후에, 그러한 데이터는 그러한 레지스터에서 반복적으로 클록킹될(clocked) 수도 있으며, 이는 후술하는 래치 모드보다 고속이다. 이 예에서는, 스택으로부터의 데이터 출력이 DO(3)이다.
도 12b는 데이터 경로(1200)가 스택(400)의 최하부 BRAM 모듈(250-0)의 레지스터(335)에서 시작되어 그러한 레지스터로부터 윗쪽을 향해 캐스케이드되는 것을 제외하고, 도 12a와 동일한 블록/회로도이다. 따라서, 레지스터 모드가 스택(400)의 어느 하나의 레지스터(335)로부터 한 번에 시작될 수도 있고, 그러한 데이터가 스택(400)으로부터의 출력을 위한 최상부 BRAM 모듈(250)로 캐스케이드 아웃될 수도 있으며, 이 예에서는 그러한 데이터는 출력은 데이터 DO(3)으로 되지만 DO(0)인 것을 이해할 것이다. 이 캐스케이딩은, 더 높은 레벨 제어 멀티플렉서(217)이 사용되므로, 더 높은 레벨 레지스터를 바이패스한다.
도 13a는 굵은 흑색 라인으로 전체적으로 나타내는 바와 같은 데이터 경로(1300)를 갖는 예시적인 래치 모드를 도시하는 도 10의 블록/회로도이다. 이 예에서는, BRAM 블록(313)이 스택(400)의 최상부 BRAM 모듈(250-3)로부터 DO(3)으로서 출력하기 위해 데이터 경로(1300)를 따라 데이터를 판독한다. 래치 모드에 있어서는, 데이터는 그러한 BRAM 모듈(250-3)의 레지스터(335)에 레지스터되지 않는다. 따라서, 래치 모드는, 스택(400)의 레지스터(335)가 사용되지 않기 때문에, 그리고 래치 모드가 스택(400)의 임의의 BRAM 블록(313)으로부터 시작될 수도 있기 때문에, 저 레이턴시 래치 캐스케이드 모드로 상정될 수도 있다.
그러한 점에 따라서, 도 13b는 데이터 경로(1300)가 스택(400)의 최하부 BRAM 모듈(250-0)의 BRAM 블록(313)에서 시작되어 그러한 BRAM 블록(313)으로부터 윗쪽을 향해 캐스케이드되는 것을 제외하고, 도 13a와 동일한 블록/회로도이다. 따라서, 래치 모드가 스택(400)의 어느 하나의 BRAM 모듈(250)로부터 한 번에 시작될 수도 있고, 그러한 데이터가 스택(400)으로부터의 출력을 위한 최상부 BRAM 모듈(250)로 캐스케이드 아웃될 수도 있으며, 이 예에서는 그러한 데이터는 출력은 데이터 DO(3)으로 되지만 DO(0)인 것을 이해할 것이다. 이 캐스케이딩은, 더 높은 레벨 제어 멀티플렉서(217)만이 사용되므로, 더 높은 레벨 레지스터 및 더 높은 레벨 BRAM 블록을 바이패스한다.
도 14a는 굵은 흑색 라인으로 전체적으로 나타내는 바와 같은 데이터 경로(1400)를 갖는 예시적인 다단 레지스터 모드를 도시하는 도 10의 블록/회로도이다. 이 레지스터 모드는 이것이 3단계 RAM 레지스터 모드인 것을 제외하고, 상술한 레지스터 모드와 유사하다. 이 예는 3단계 RAM 레지스터 모드용이지만, 2 이상의 수 중 어느 단계의 RAN이 그러한 레지스터 모드용으로 사용될 수도 있다. 이 레지스터 모드에서는, BRAM 블록(313)과 BRAM 모듈(250-3)과 같은 BRAM 모듈의 레지스터(335)의 양자가 클록킹된다. 그러한 점에 따라서, 3단계의 데이터가 데이터 DO(3)으로서 출력하기 위해 데이터 경로(1400)을 따라, 또한 스택(400)으로부터 데이터 경로(1400)를 따라 레지스터(335)로 BRAM 블록(313)으로부터 클록킹될 수도 있다. 바꿔 말하면, BRAM 블록(313)의 RAM이 3단계 깊이로 될 수도 있다. 그러한 점에 따라서, 데이터 DI(3)이 그러한 BRAM 블록(313)에 입력하기 위해 프로그램 가능한 패브릭 자원(1000)의 레지스터(1401)로 클록킹될 수도 있고, 데이터 DO(3)이 그러한 프로그램 가능한 패브릭 자원(1000)의 레지스터(1201)에 입력하기 위해 스택(400)에서 클록킹될 수도 있다. 3단계 파이프라인에서, 예를 들면, BRAM 모듈(250-0)과 같은 하나 이상의 더 낮은 BRAM 모듈이 최대 주파수의 동작을 향상시키기 위해 예를 들면, BRAM 모듈(250-3)의 레지스터(335)와 같은 최상부 BRAM 출력 레지스터를 사용하고 있는 경우, 예를 들면, 레지스터(1401)와 같은 패브릭 파이프라인 단계가 효율적인 3단계 파이프라인을 갖도록 정렬 보상으로서 다른 BRAM 신호 중에서 어드레스 신호, 데이터 신호 및 인에이블 신호를 제공하기 위해 그러한 최상부 BRAM 모듈의 BRAM(31)에 입력을 제공하도록 결합될 수도 있다. 데이터 신호 DI(3)만이 명확하게 하기 위한 목적으로 예시적으로 도시되어 있지만, 그러한 다른 신호가 프로그램 가능한 패브릭 자원(1000)으로부터 제공되는 것으로서 본 명세서에 기재된 바와 같이 제공될 수도 있다.
이러한 점에 따라서, 도 14b는 데이터 경로(1400)가 스택(400)의 최하부 BRAM 모듈(250-0)의 BRAM 블록(313)에서 시작되어 그러한 BRAM 블록(313)으로부터 윗쪽을 향해 캐스케이드되는 것을 제외하고, 또한 도 14b에 최초의 레지스터(1401)이 존재하지 않는 것을 제외하고, 도 14a와 동일한 블록/회로도이다. 따라서, 다단계 레지스터 모드가 스택(400)의 어느 하나의 레지스터(313)로부터 한 번에 시작될 수도 있고, 그러한 데이터가 스택(400)으로부터의 출력을 위해 최상부 BRAM 모듈(250)로 캐스케이드 아웃될 수도 있으며, 이 예에서는 그러한 데이터는 출력은 데이터 DO(3)으로 되지만 DO(0)인 것을 이해할 것이다. 이 캐스케이딩은, 중간의 더 높은 레벨 레지스터 및 모든 더 높은 BRAM 블록을 바이패스한다. 그러나, 도 13b에서와 같은 래치 모드 또는 도 12b에서와 같은 레지스터 모드와 반대로, 최상부 레벨 레지스터(335)는 바이패스되지 않는다. 오히려, 데이터 경로(1400)가 그러한 데이터를 출력하기 위해 BRAM 모듈(250-3)의 레지스터(335)를 사용한다. 데이터 DI(0)은 BRAM 블록(313)으로 클록킹될 수도 있고, 데이터 DO90)은 그러한 프로그램 가능한 패브릭 자원(1000)의 레지스터(1201)에 입력하기 위해 스택(400)에서 클록킹될 수도 있다. 다른 신호가 앞서 기재된 바와 같이, 프로그램 가능한 패브릭 자원(1000)으로부터 그러한 최하부 BRAM 블록(313)에 제공될 수도 있다.
도 15는 굵은 흑색 라인으로 전체적으로 나타내는 바와 같은 데이터 경로(1500)를 갖는 예시적인 이중 데이터 레이트(double data rate)/벡터 메모리 모드("벡터 모드")를 도시하는 도 10의 블록/회로도이다. 단 하나의 BRAM모듈(250)이 스택(400)으로부터 데이터를 출력하기 위해 한 번에 활성화되며, 이 예에서는 BRAM 모듈(250-3)이 예시적으로 도시되어 있지만; 임의의 BRAM 모듈(250)이 한 번에 활성화될 수도 있다. 단 하나의 BRAM 모듈이 한 번에 활성화되게 함으로써, 전력 소비가 감소될 수도 있다.
이것은 출력이 임의의 DO(x)일 수도 있고, 그에 따라 예를 들면, DDR3 버스트 액세스와 같은 이중 데이터 레이트("DDR") 버스트 액세스처럼 보일 수도 있는 벡터이다. 벡터 모드에서는, 스택(400) 내의 각각의 BRAM 블록(313)이 랜덤하게 액세스될 수도 있다. 벡터 모드는 고주파수의 동작에서 실행될 수도 있다. 각각의 BRAM 블록(313)이 랜덤한 순서로 판독될 수도 있지만, 단 하나의 BRAM 블록(313)이 벡터마다 판독될 수도 있다. 그러나, 벡터 출력 시프트가 순차적인 액세스가 되도록 나타날 수도 있다. 더욱이, 각각의 BRAM 블록(313) 판독 어드레스가 다른 BRAM 판독 어드레스와 독립적이고 랜덤일 수도 있다. 벡터 모드에 있어서는, SDI(x)와 SDO(x) 동적 제어 신호의 양자가 사용될 수도 있다.
도 16은 굵은 흑색 라인으로 전체적으로 나타내는 바와 같은 데이터 경로(1600)를 갖는 다른 예시적인 벡터 모드 즉, "로드(load) 벡터 모드"를 도시하는 도 10의 블록/회로도이다. 로드 벡터 모드에서는, 데이터 경로(1600)의 최초의 부분(1601)이 그러한 최하부 BRAM 블록의 레지스터(335)에 로드하기 위해 이 예에서는 BRAM 모듈(250-0)의 BRAM 블록(313)과 같은 사용된 최하부 BRAM 블록(313)으로부터의 데이터를 로드하기 위해 사용된다. 그 후에, 그러한 데이터는 스택(400)의 최상부 레지스터(335)로 중간의 레지스터를 통해 캐스케이드될 수도 있다. 그러한 점에 따라서, 최하부 BRAM 블록(313) 내의 다음 어드레스가 캐스케이드된 레지스터(335)로 형성된 파이프라인을 채우기 위해 판독 데이터를 제공하도록 판독될 수도 있다. 예를 들면, BRAM 모듈(250-3)과 같은 최상부 BRAM 모듈의 레지스터(335)로부터, 데이터 DO(0)가 그러한 스택(400)으로부터 예를 들면, 프로그램 가능한 패브릭 자원(1000)의 레지스터(1201)에 입력하기 위해 DO(3)으로서 출력될 수도 있다.
도 17a는 굵은 흑색 라인으로 전체적으로 나타내는 바와 같은 데이터 경로(1700)를 갖는 다른 예시적인 벡터 모드 즉, "시프트(shift) 벡터 모드"를 도시하는 도 10의 블록/회로도이다. 데이터 DO(0)이 더 높은 레벨 레지스터에 레지스터되었다면, 사용자는 다른 데이터가 시프트 인 또는 삽입되게 하기를 원할 수도 있다. 이 예에서는, 다른 최초 경로(1701)가 캐스케이드된 파이프라인 경로로 DI(2)를 시프트 인하기 위해 부가된다. 이러한 점에 따라서, BRAM 모듈(250-2)의 BRAM 블록(313)이 데이터가 거기에 인가되는 다음의 어드레스에서 판독되게 할 수도 있다. 그 후에, 그러한 데이터는 스택(400)의 최상부 레지스터(335)에 중간의 레지스터를 통해 캐스케이드될 수도 있다. 그러한 점에 따라서, 중간의 BRAM 블록(313) 내의 다음 어드레스가 캐스케이드된 레지스터(335)로 형성된 파이프라인을 삽입하기 위해 판독 데이터를 제공하도록 판독될 수도 있다. 예를 들면, BRAM 모듈(250-3)과 같은 최상부 BRAM 모듈의 레지스터(335)로부터, 데이터 DO(2)가 그러한 스택(400)으로부터 예를 들면, 프로그램 가능한 패브릭 자원(1000)의 레지스터(1201)에 입력하기 위해 DO(3)으로서 출력될 수도 있다.
도 17b는 굵은 흑색 라인으로 전체적으로 나타내는 바와 같은 데이터 경로(1700)용의 시프트 벡터 모드를 위한 다른 구성을 도시하는 도 17a의 블록/회로도이다. 이 예에서는, BRAM 모듈(250-1)의 BRAM 블록(313)이 최초의 경로(1702)로 전체적으로 나타내는 바와 같은 데이터를 시프트 인하도록 사용된다. 이것은 그러한 데이터가 스택(400) 내의 임의의 중간의 BRAM 블록(313)으로부터 시프트 인될 수도 있는 것을 예시하기 위한 것이다.
도 18은 예시적인 2차원 어레이 시스톨릭 스위치(1800)를 도시하는 블록/회로도이다. 시스톨릭 스위치(1800)는 공공 무선 인터페이스(Common Public Radio Interface("CPRI"))용일 수도 있다. 시스톨릭 스위치(1800)는 복수의 스택(400-1 내지 400-Q)로 형성될 수도 있고, 여기에서 Q는 1보다 큰 양의 정수이다. 유입(ingress) 파이프라인(1801-1 내지 1801-P)(여기에서 P는 1보다 큰 양의 정수임) 및 제어 파이프라인(1813-1 내지 1813-Q)은 프로그램 가능한 패브릭 자원(1000) 내의 레지스터로 형성될 수도 있다. 이 제어 파이프라인(1813)은 스택(400)의 BRAM 블록(313)에 각각 제어 블록(1805)으로부터의 제어 정보를 파이프 인하기 위한 것일 수도 있다. 유입 파이프라인(1801)은 스택(400)의 각각의 BRAM 블록(313)으로의 유입 정보에 대응하여 파이프하기 위한 것일 수도 있다. 단 3개의 유입 파이프라인(1801)이 상세하게 예시적으로 도시되어 있지만, 3개보다 매우 많은 유입 파이프라인(1801)이 형성될 수도 있다. 또한, 각각의 스택(400)은 복수의 블록 RAM 모듈(250)로 형성될 수도 있다. 스택(400)은 모든 더 높은, 모든 더 낮은, 또는 더 높고 더 낮은 메모리 블록(201 및/또는 202)의 조합으로 구성될 수도 있다.
각각의 스택(400)의 최초의 BRAM 모듈은 사용되지 않는 입력을 갖는 멀티플렉서(325)를 가질 수도 있다. 따라서, 그러한 멀티플렉서(325)에 제공되는 선택 신호는 정적인 신호일 수도 있고; 유사하게, 다른 정적인 신호는 그러한 미사용 데이터 입력에 제공될 수도 있다. 그러한 최초의 BRAM 모듈(250-0)의 BRAM 블록(313)으로부터 출력된 데이터는 그로부터 출력을 위해 그러한 멀티플렉서(325)에 입력으로서 제공된다.
최초의 멀티플렉서(325)와는 다른 멀티플렉서(325)가 출력을 선택하기 위한 제어 선택 신호를 얻기 위해 파이프라인(1813)의 제어 파이프라인에 결합될 수도 있다. 그러한 다른 멀티플렉서(325)로부터의 출력은 가장 가까운 인접 더 낮은 레벨 BRAM 모듈(250)로부터의 캐스케이드된 입력 데이터 또는 그러한 멀티플렉서(324)가 상주하는 현재의 BRAM 모듈(250) 레벨의 BRAM 블록(313)으로부터 판독된 데이터 중 하나인 것으로서 선택될 수도 있다. BRAM 블록(313)은 그로부터 다른 정보 및 어드레스를 수신하도록 제어 파이프라인에 결합될 수도 있다. 멀티플렉서(325)로부터의 출력은 수직 파이프라인을 형성하기 위해 레지스터(335)에 각각 제공될 수도 있다.
따라서, 수직 파이프라인이 프로그램 가능한 패브릭 자원에서 사용 가능한 동작 주파수를 명백히 위로 상승시키기 위해 스택(400)을 사용하는 하드 매크로로서 제공될 수도 있다. 유출(egress) 정보가 하드 매크로 유출 수직 파이프라인(1802-1 내지 1802-Q)로부터 출력될 수도 있다.
깊이를 증가시키기 위해 스택(400) 또는 다수의 스택(400)을 사용하는 것과 같이 FIFO를 캐스케이드할 때, 그러한 FIFO 중 최초의 하나, 즉, 기록 인터페이스를 갖는 FIFO가 "첫 번째"의 캐스케이드 순서 신호로 식별될 수도 있다. 유사하게, 그러한 FIFO 중 최후의 하나, 즉, 판독 인터페이스를 갖는 FIFO가 "마지막"의 캐스케이드 순서 신호로 식별될 수도 있다. 체인 FIFO 내의 모든 중간 FIFO는 "중앙" 또는 "중간"의 캐스케이드 순서로 식별될 수도 있다. 그러한 점에 따라서, "첫 번째", "중앙", 또는 "마지막"이 정상 기록 입력 또는 캐스케이드된 출력("첫 번째"), 캐스케이드된 입력 및 출력("중앙"), 또는 캐스케이드된 입력 및 정상 출력("마지막")을 사용할지를 결정하기 위해 각각의 FIFO 내의 멀티플렉서를 제어하기 위한 캐스케이드 순서 파라미터이다. 캐스케이드 순서 파라미터는 제한 없이 예로서 명확하게 하기 위한 목적으로 사용된다.
이러한 이해를 유념하면서, 도 19는 FIFO 캐스케이드 모드용의 복수의 스택(400)으로부터 형성될 수도 있는 예시적인 FIFO의 체인("체인")(1900)을 도시하는 블록도이다. 이 예에서는, 마지막 스택(400L), 중앙 스택(400M), 및 첫 번째 스택(400F)이 존재하지만; 다른 FIFO 체인 구성에서는, 3개보다 적거나 많은 스택(400)이 사용될 수도 있다. 그러한 점에 따라서, 예를 들면, FPGA 내의 BRAM 모듈(250)의 전체 칼럼은 단일 FIFO 체인을 제공하기 위해 서로 결합될 수도 있다. 신호 라인의 단일 인스턴스가 제한 없이 명확하게 하기 위한 목적으로 예시적으로 도시되어 있지만, 일부 신호는 다수의 신호 라인을 포함할 수도 있다. 특히, 신호의 데이터 입력, 데이터 입력 패리티(parity), 데이터 출력, 및 데이터 출력 패리티 타입이 다수의 신호 라인을 수반할 수도 있다. 체인(1900)은 판독 클록보다 더 고속인 기록 클록을 갖도록 및/또는 기록 클록보다 더 고속인 판독 클록을 갖도록 공통 또는 독립적인 클록 도메인을 사용하기 위해 레지스터된 또는 레지스터되지 않은 모드에서 사용하도록 구성될 수도 있다.
각각의 스택(400)은 기록 입력용 FIFO 기록 입력 인터페이스(1921), 기록 출력용 FIFO 기록 출력 인터페이스(1922), FIFO 직렬 캐스케이드 인터페이스(1923), FIFO 직렬 캐스케이드 인터페이스(1924), 판독 입력용 FIFO 판독 인터페이스(1925), 및 판독 출력용 FIFO 판독 인터페이스(1926)를 포함한다. FIFO의 각각의 스택(400)은 상태 또는 속성 세팅("상태")(1930)을 포함할 수도 있다. 첫 번째 또는 중앙의 캐스케이드 순서를 갖는 FIFO(400)의 상태(1930)는 "참(true)"으로 설정된 "선입후출(first word fall through)"("FWFT")로 구성될 수도 있다. 일반적으로, FWFT FIFO는 비어 있는 FIFO로 기록되는 데이터가 어떤 비어 있지 않은 표시 이전 또는 동시에 판독 포트 상에 나타나거나, 판독 인에이블이 빈 FIFO였던 것으로부터 첫 번째 데이터를 판독하도록 어써트될 수도 있다. FIFO 동작에 관한 부가 정보는 미국 특허 제6,847,558호, 제6,848,042호 및 제7,535,789호에서 더욱 상세히 찾을 수도 있다. 마지막의 캐스케이드 순서를 갖는 FIFO(400)의 상태(1930)는 "거진(false)"로 설정된 구성일 수도 있다. 상태(1930)가 설정된 상태로, FIFO(400)의 직렬 캐스케이드 인터페이싱이 각각의 그러한 FIFO의 제어기 논리부에 의해 도시된 바와 같이 자동으로 연결될 수도 있고, 즉, 그러한 FIFO 제어기 논리부는 FOFO와 모든 판독 및 기록 인터페이스 출력 사이의 핸드세이킹(handshaking)을 처리한다.
사용자는 체인(1900) 내의 마지막 FIFO(400)용의 판독 클록 신호 및 첫 번째 FIFO(400)용의 기록 클록 신호를 제공할 수도 있다. 중앙 FIFO(400)는 내부 클록 신호에 속박된 기록 및 판독 클록 신호를 가질 수도 있고, 여기에서 그러한 내부 클록 신호는 그러한 판독 및 기록 클록 신호보다 고속이다. FIFO(400)의 판독 및 기록 클록 신호의 양자가 동일한 클록 입력원에 속박되는 경우에는, 그러한 FIFO(400)는 동기식 FIFO로서 구성될 수도 있어, 레이턴시를 감소시킬 수도 있다.
FIFO 기록 입력 인터페이스(1921) 입력 포트에 대해, 내부 클록(1901)이 FIFO(400L 및 400M)의 각각의 기록 클록 포트에 제공될 수도 있다. 기록 리셋 신호(1902)가 각각의 FIFO(400L, 400M 및 400F)의 기록 리셋 포트에 제공될 수도 있다. 기록 클록 신호(1904)가 FIFO(400F)의 기록 클록 포트로서 제공될 수도 있다. 데이터-인 버스(1905) 및 데이터-인 패리티 버스(1906)가 각각 FIFO(400F)의 데이터-인 및 데이터-인 패리티 포트에 제공될 수도 있다. 기록 인에이블 신호(1907)가 FIFO(400F)의 기록 인에이블 포트에 제공될 수도 있다.
FIFO 기록 출력 인터페이스(1922) 출력 포트에 대해, 기록 리셋 비지 신호(1935)가 FIFO(400L, 400M 및 400F)의 각각으로부터 OR 게이트(1910)로 전송될 수도 있다. OR 게이트(1910)의 출력은 그에 따라 체인(1900)의 모든 FIFO가 기록을 위해 리셋되었는지를 나타내는 기록 리셋 비지 신호(1903)일 수도 있다. 그러한 점에 따라서, 정적인 수의 FIFO(400)에 대해, OR 게이트(1910)가 하드 매크로의 일부로서 제공될 수도 있다. 그러나, 사용자가 얼마나 긴 체인이 있을지도 모르는 것을 선택할 수 있게 함으로써, OR 게이트(1910)가 프로그램 가능한 패브릭 자원(1000)을 사용하여 형성될 수도 있다. 기록 에러 신호(1908) 및 풀(full) 신호(1909)가 각각 FIFO(400F)의 기록 에러 포트 및 풀 포트로부터 소싱될(sourced) 수도 있다. 이 예에서는, OR 게이트(1910 및 1920)는 활성 로우(active low) 구성용으로 사용된다. 다른 예에서는, NOR 게이트가 활성 하이 구성을 위한 게이트(1910 및 1920)용으로 사용될 수도 있다.
FIFO(400) 사이에 제어 신호(1940)가 존재할 수도 있다. 제어 신호(1940)는 가장 가까운 인접 더 높은 순서 FIFO 직렬 캐스케이드 인터페이스(1924)의 대응하는 데이터-인 이전 포트, 데이터-인 패리티 이전 포트, 및 비어 있는 이전 포트까지 더 낮은 순서 FIFO 직렬 캐스케이드 인터페이스(19230로부터 제공될 수도 있는 데이터-아웃 다음 신호, 데이터-아웃 패리티 다음 신호 및 비어 있는 다음 신호를 포함할 수도 있다. 제어 신호(1940)는 가장 가까운 인접 더 낮은 순서 FIFO 직렬 캐스케이드 인터페이스(1923)의 대응하는 판독 인에이블 다음 포트로 아래로 더 높은 순서 FIFO 직렬 캐스케이드 인터페이스(1924)로부터 제공될 수도 있는 판독 인에이블 이전 신호를 더 포함할 수도 있다.
FIFO 판독 입력 인터페이스(1925) 입력 포트에 대해, 판독 클록 신호(1911) 및 판독 인에이블 신호(1914)가 각각 FIFO(400L)의 판독 클록 포트 및 판독 인에이블 포트에 제공될 수도 있다. 데이터-아웃 신호(1912) 및 데이터-아웃 패리티 신호(1913)는 각각 FIFO(400L)의 관련 포트로부터 소싱될 수도 있다. 내부 클록 신호(1918)가 각각의 중앙 FIFO(400M) 및 첫 번째 FIFO(400F)의 판독 클록 포트에 제공될 수도 있다.
FIFO 판독 출력 인터페이스(1926) 출력 포트에 대해, 판독 리셋 비지 신호(1936)가 FIFO(400L, 400M 및 400F)의 각각으로부터 OR 게이트(1920)로 전송될 수도 있다. OR 게이트(1920)의 출력은 그에 따라 체인(1900)의 모든 FIFO가 판독을 위해 리셋되었는지를 나타내는 판독 리셋 비지 신호(1917)일 수도 있다. 그러한 점에 따라서, 정적인 수의 FIFO(400)에 대해, OR 게이트(1920)는 하드 매크로의 부분으로서 제공될 수도 있다. 그러나, 사용자가 얼마나 긴 체인이 있을지도 모르는 것을 선택할 수 있게 함으로써, OR 게이트(1920)가 프로그램 가능한 패브릭 자원(1000)을 사용하여 형성될 수도 있다. 판독 에러 신호(1915) 및 엠프티 신호(1909)가 각각 FIFO(400L)의 판독 에러 포트 및 엠프티 포트로부터 소싱될 수도 있다.
따라서, 체인(1900) 내의 마지막 FIFO(400L)는 그러한 체인(1900) 내의 모든 FIFO(400)가 비어 있을 때, 엠프티 신호(1916)를 출력할 수도 있다. 더욱이, 체인(1900) 내의 첫 번째 FIFO(400F)는 그러한 체인(1900) 내의 모든 FIFO(400)가 채워져 있을 때, 풀 신호(1908)를 출력할 수도 있다. 더욱이, FIFO(400) 사이의 라우팅은 하드 매크로 내에서 메모리 시스템(200)에 의해 제공될 수도 있으며, 이것이 프로그램 가능한 패브릭 자원을 사용하여 FIFO를 연쇄 결합해야 하는 것을 방지하는 것을 이해할 것이다.
도 20은 FIFO 캐스케이드 모드용의 복수의 스택(400)으로부터 형성될 수도 있는 다른 예시적인 FIFO(1900)의 체인을 도시하는 블록도이다. 어느 2개의 가장 가까운 인접 FIFO(400) 사이의 제어 상태를 서로 연결하기 위해, 각각의 AND 게이트(2001)가 메모리 시스템(200)의 하드 매크로의 일부로서 제공될 수도 있어, 혼잡도를 감소시키고, 성능을 향상시키며/시키거나 타이밍을 용이하게 한다. AND 게이트(2001)는 FIFO(400F 또는 400M)와 같은 낮은 순서 FIFO(400)의 엠프티 포트에 결합되는 입력과, FIFO(400M 또는 400L)와 같은 가장 가까운 인접 더 높은 순서 FIFO(400)의 풀 포트에 결합되는 다른 입력을 가질 수도 있다. 이 예에서의 풀 및 엠프티 신호는 활성이 낮다. 풀 및 엠프티 신호가 활성이 높은 일례에서는, AND 게이트(20010는 각각 NOR 게이트로 대체될 수도 있다. AND 게이트(2001)의 출력은 그러한 가장 가까운 인접 더 높은 순서 FIFO(400)의 기록 인에이블 포트에 및 그러한 더 낮은 순서 FIFO(400)의 판독 인에이블 포트에 결합될 수도 있다. 더욱이, 체인(1900)의 어느 2개의 가장 가까운 인접 FIFO(400) 사이의 데이터를 상호 연결하기 위해, 제한 없이 데이터 패리티 라우팅을 포함하는 전용 데이터 라우팅(2002)이 메모리 시스템(200)의 하드 매크로의 부분으로서 제공될 수도 있어, 혼잡도를 감소시키고, 성능을 향상시키며/시키거나 타이밍을 용이하게 한다.
이상은 예시적인 실시예를 설명하고 있지만, 하나 이상의 양태에 따르는 다른 및 추가의 실시예가 그 범위로부터 벗어남 없이 고안될 수도 있고, 이는 후속하는 청구항들 및 그 등가물에 의해 정해진다. 단계들을 나열하는 청구항들은 단계의 순서를 전혀 함축하지 않는다. 상표권은 각각의 소유자의 재산이다.

Claims (15)

  1. 장치에 있어서,
    메모리 모듈을 포함하고;
    상기 메모리 모듈은 구성 가능한 하드 매크로(hard macro)이고;
    상기 메모리 모듈의 제1 부분은,
    캐스케이드된(cascaded) 데이터와 직접(direct)/버싱된(bused) 데이터 사이에서 선택하도록 결합된 데이터 입력 멀티플렉서;
    상기 데이터 입력 멀티플렉서로부터의 출력을 내부 저장을 위해 수신하도록 결합된 메모리;
    상기 메모리로부터의 판독 데이터와 상기 캐스케이드된 데이터 사이에서 선택하도록 결합된 레지스터 입력 멀티플렉서;
    상기 레지스터 입력 멀티플렉서로부터의 출력을 수신하도록 결합된 레지스터;
    상기 메모리로부터의 판독 데이터와 상기 레지스터로부터의 레지스터된 데이터 사이에서 선택하도록 결합된 래치/레지스터 모드 멀티플렉서; 및
    출력 데이터를 제공하기 위해 상기 래치/레지스터 모드 멀티플렉서로부터의 출력과 상기 캐스케이드된 데이터 사이에서 선택하도록 결합된 데이터 출력 멀티플렉서
    를 포함하는 것인 장치.
  2. 제1항에 있어서,
    상기 메모리 모듈의 제2 부분은 상기 메모리 모듈의 상기 제1 부분의 카피(copy)이고;
    상기 메모리 모듈의 상기 제1 부분은 상기 메모리 모듈의 출력 버스의 제1 부분을 위한 것이며;
    상기 메모리 모듈의 상기 제2 부분은 상기 메모리 모듈의 출력 버스의 제2 부분을 위한 것인 장치.
  3. 장치에 있어서,
    메모리 모듈을 포함하고;
    상기 메모리 모듈은 구성 가능한 하드 매크로이고;
    상기 메모리 모듈은,
    데이터-인(data-in) 입력 포트, 제1 캐스케이드 입력 포트, 캐스케이드/데이터-인 선택 포트 및 기록 데이터 출력 포트를 각각 갖는 복수의 데이터-인 멀티플렉서;
    기록 데이터 입력 포트, 제1 클록 포트 및 판독 데이터 출력 포트를 각각 갖는 복수의 메모리 블록;
    제1 판독 데이터 입력 포트, 제2 캐스케이드 입력 포트, 파이프라인 선택 포트 및 레지스터 데이터 출력 포트를 각각 갖는 복수의 파이프라인 멀티플렉서;
    레지스터 데이터 입력 포트, 레지스터된 데이터 출력 포트 및 제2 클록 포트를 각각 갖는 복수의 레지스터;
    제2 판독 데이터 입력 포트, 레지스터된 데이터 입력 포트, 레지스터된/레지스터되지 않은 선택 포트 및 블록 출력 포트를 각각 갖는 복수의 데이터-아웃(data-out) 멀티플렉서; 및
    제3 캐스케이드 입력 포트, 블록 입력 포트, 제어 선택 포트 및 데이터-아웃 포트를 각각 갖는 복수의 제어 멀티플렉서
    를 포함하는 것인 장치.
  4. 제3항에 있어서,
    상기 복수의 데이터-인 멀티플렉서, 상기 복수의 파이프라인 멀티플렉서 및 상기 복수의 제어 멀티플렉서의 각각의 제1 부분에 대한 상기 제1 캐스케이드 입력 포트, 상기 제2 캐스케이드 입력 포트 및 상기 제3 캐스케이드 입력 포트는 제1 캐스케이드 입력 노드에 공통으로 결합되고;
    상기 복수의 데이터-인 멀티플렉서, 상기 복수의 파이프라인 멀티플렉서 및 상기 복수의 제어 멀티플렉서의 각각의 제2 부분에 대한 상기 제1 캐스케이드 입력 포트, 상기 제2 캐스케이드 입력 포트 및 상기 제3 캐스케이드 입력 포트는 제2 캐스케이드 입력 노드에 공통으로 결합되는 것인 장치.
  5. 제3항 또는 제4항에 있어서,
    상기 복수의 제어 멀티플렉서 중 제1 제어 멀티플렉서는 상기 메모리 모듈의 출력 버스의 제1 부분인 데이터-아웃 포트를 갖고;
    상기 복수의 제어 멀티플렉서 중 제2 제어 멀티플렉서는 상기 메모리 모듈의 출력 버스의 제2 부분인 데이터-아웃 포트를 갖는 것인 장치.
  6. 제3항 또는 제4항에 있어서,
    상기 복수의 데이터-인 멀티플렉서의 상기 캐스케이드/데이터-인 선택 포트는 각각 제1 구성 메모리 셀에 결합되고;
    상기 복수의 데이터-아웃 멀티플렉서의 상기 레지스터된/레지스터되지 않은 선택 포트는 각각 제2 구성 메모리 셀에 결합되는 것인 장치.
  7. 장치에 있어서,
    제1 구성 가능한 하드 매크로로서 제공되는 제1 메모리 모듈; 및
    제2 구성 가능한 하드 매크로로서 제공되는 제2 메모리 모듈을 포함하고,
    상기 제1 메모리 모듈은 상기 제2 메모리 모듈보다 더 높은 레벨의 스택에 있고;
    상기 제1 메모리 모듈은 서로 분리되어 있는 제1 상부 메모리 블록 및 제1 하부 메모리 블록을 가지며;
    상기 제2 메모리 모듈은 제2 상부 메모리 블록 및 제2 하부 메모리 블록을 갖고;
    상기 제1 상부 메모리 블록과 관련되는 상기 제1 메모리 모듈의 제1 캐스케이드 입력 노드는, 상기 제1 상부 메모리 블록 및 상기 제2 상부 메모리 블록을 포함하는 제1 메모리 칼럼을 제공하기 위해 상기 제2 상부 메모리 블록과 관련되는 상기 제2 메모리 모듈의 제1 데이터-아웃 노드에 결합되며;
    상기 제1 하부 메모리 블록과 관련되는 상기 제1 메모리 모듈의 제2 캐스케이드 입력 노드는, 상기 제1 하부 메모리 블록 및 상기 제2 하부 메모리 블록을 포함하는 제2 메모리 칼럼을 제공하기 위해 상기 제2 하부 메모리 블록과 관련되는 상기 제2 메모리 모듈의 제2 데이터-아웃 노드에 결합되는 것인 장치.
  8. 제7항에 있어서, 상기 제1 메모리 모듈은,
    데이터-인 입력 포트, 제1 캐스케이드 입력 포트, 캐스케이드/데이터-인 선택 포트 및 기록 데이터 출력 포트를 각각 갖는 제1 복수의 데이터-인 멀티플렉서;
    기록 데이터 입력 포트, 제1 클록 포트 및 판독 데이터 출력 포트를 각각 갖는 제1 복수의 메모리 블록;
    제1 판독 데이터 입력 포트, 제2 캐스케이드 입력 포트, 파이프라인 선택 포트 및 레지스터 데이터 출력 포트를 각각 갖는 제1 복수의 파이프라인 멀티플렉서;
    레지스터 데이터 입력 포트, 레지스터된 데이터 출력 포트 및 제2 클록 포트를 각각 갖는 제1 복수의 레지스터;
    제2 판독 데이터 입력 포트, 레지스터된 데이터 입력 포트, 레지스터된/레지스터되지 않은 선택 포트 및 블록 출력 포트를 각각 갖는 제1 복수의 데이터-아웃 멀티플렉서; 및
    제3 캐스케이드 입력 포트, 블록 입력 포트, 제어 선택 포트 및 데이터-아웃 포트를 각각 갖는 제1 복수의 제어 멀티플렉서를 포함하는 것인 장치.
  9. 제7항 또는 제8항에 있어서,
    상기 제1 캐스케이드 입력 노드는 상기 제1 상부 메모리 블록의 제1 캐스케이드 입력 포트, 제2 캐스케이드 입력 포트 및 제3 캐스케이드 입력 포트에 결합되고;
    상기 제2 캐스케이드 입력 노드는 상기 제1 하부 메모리 블록의 제1 캐스케이드 입력 포트, 제2 캐스케이드 입력 포트 및 제3 캐스케이드 입력 포트에 결합되는 것인 장치.
  10. 제7항 또는 제8항에 있어서,
    상기 제1 상부 메모리 블록의 블록 출력 포트는 상기 제1 메모리 모듈의 출력 버스의 제1 부분을 위한 것이고;
    상기 제1 하부 메모리 블록의 블록 출력 포트는 상기 제1 메모리 모듈의 출력 버스의 제2 부분을 위한 것인 장치.
  11. 제10항에 있어서,
    상기 제2 상부 메모리 블록의 블록 출력 포트는 상기 제2 메모리 모듈의 출력 버스의 제1 부분을 위한 것이고;
    상기 제2 하부 메모리 블록의 블록 출력 포트는 상기 제2 메모리 모듈의 출력 버스의 제2 부분을 위한 것인 장치.
  12. 제7항 또는 제8항에 있어서,
    상기 제1 상부 메모리 블록과 관련되는 데이터-아웃 포트 및 상기 제2 상부 메모리 블록과 관련되는 데이터-아웃 포트는 조합하여 버스 출력을 제공하고;
    상기 조합은 상기 제1 메모리 모듈의 출력 버스의 제1 부분 및 상기 제2 메모리 모듈의 출력 버스의 제1 부분으로 이루어지는 것인 장치.
  13. 제7항 또는 제8항에 있어서,
    상기 제1 상부 메모리 블록 및 상기 제2 상부 메모리 블록은 제1 기록 어드레스 버스 및 제1 판독 어드레스 버스에 결합되고;
    상기 제1 하부 메모리 블록 및 상기 제2 하부 메모리 블록은 제2 기록 어드레스 버스 및 제2 판독 어드레스 버스에 결합되는 것인 장치.
  14. 제7항 또는 제8항에 있어서,
    상기 제1 메모리 모듈과 상기 제2 메모리 모듈은 조합하여 복수의 모드 중 임의의 모드를 위해 구성 가능하고;
    상기 복수의 모드는 캐스케이드 모드 및 메모리 모드로 구성된 그룹으로부터 선택되는 것인 장치.
  15. 제14항에 있어서, 상기 캐스케이드 모드는, 원 핫(one hot) 캐스케이드 모드, 파이프라인된 캐스케이드 모드, 시스톨릭(systolic) 기록 캐스케이드 모드, 선입선출(first-in first-out) 버퍼 캐스케이드 모드, 레지스터된 캐스케이드 모드 및 래치 캐스케이드 모드로 구성된 그룹으로부터 선택되는 것인 장치.
KR1020157011892A 2012-11-09 2013-11-06 구성 가능한 매립식 메모리 시스템 KR101965476B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/673,892 2012-11-09
US13/673,892 US9075930B2 (en) 2012-11-09 2012-11-09 Configurable embedded memory system
PCT/US2013/068797 WO2014074632A1 (en) 2012-11-09 2013-11-06 Configurable embedded memory system

Publications (2)

Publication Number Publication Date
KR20150084001A KR20150084001A (ko) 2015-07-21
KR101965476B1 true KR101965476B1 (ko) 2019-04-03

Family

ID=49640188

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157011892A KR101965476B1 (ko) 2012-11-09 2013-11-06 구성 가능한 매립식 메모리 시스템

Country Status (6)

Country Link
US (1) US9075930B2 (ko)
EP (1) EP2917844B1 (ko)
JP (1) JP6364015B2 (ko)
KR (1) KR101965476B1 (ko)
CN (1) CN104969208B (ko)
WO (1) WO2014074632A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9210486B2 (en) * 2013-03-01 2015-12-08 Qualcomm Incorporated Switching fabric for embedded reconfigurable computing
CN104347105B (zh) * 2014-11-07 2017-09-15 中国科学院微电子研究所 Ram输出寄存处理方法
US9786361B1 (en) * 2015-07-31 2017-10-10 Flex Logix Technologies, Inc. Programmable decoupling capacitance of configurable logic circuitry and method of operating same
CN108540127A (zh) * 2017-03-03 2018-09-14 成都海存艾匹科技有限公司 基于三维印录存储器的可编程门阵列
CN105808474A (zh) * 2016-03-11 2016-07-27 中国电子科技集团公司第五十八研究所 现场可编程器件fpga的block ram级联结构
US9590634B1 (en) * 2016-06-13 2017-03-07 Baysand Inc. Metal configurable hybrid memory
US11132599B2 (en) 2017-02-28 2021-09-28 Microsoft Technology Licensing, Llc Multi-function unit for programmable hardware nodes for neural network processing
US11036827B1 (en) * 2017-10-17 2021-06-15 Xilinx, Inc. Software-defined buffer/transposer for general matrix multiplication in a programmable IC
US10284185B1 (en) * 2017-12-18 2019-05-07 Xilinx, Inc. Selectively providing clock signals using a programmable control circuit
JP7313889B2 (ja) * 2019-04-24 2023-07-25 キオクシア株式会社 半導体記憶装置及びメモリシステム
US10790830B1 (en) * 2019-05-20 2020-09-29 Achronix Semiconductor Corporation Fused memory and arithmetic circuit
US11256476B2 (en) 2019-08-08 2022-02-22 Achronix Semiconductor Corporation Multiple mode arithmetic circuit
US11720719B2 (en) * 2019-10-01 2023-08-08 Micron Technology, Inc. Apparatuses and methods for signal encryption in high bandwidth memory
US11599299B2 (en) * 2019-11-19 2023-03-07 Invensas Llc 3D memory circuit
CN111488297B (zh) * 2020-04-02 2023-04-14 杭州迪普科技股份有限公司 用于访问寄存器的方法、装置、电子设备及可读介质
CN113868167A (zh) * 2020-06-30 2021-12-31 华为技术有限公司 一种芯片模组及通信系统、端口分配方法
US11604696B2 (en) * 2021-08-19 2023-03-14 Wuxi Esiontech Co., Ltd. Field programmable gate array (FPGA) for improving reliability of key configuration bitstream by reusing buffer memory

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01147648A (ja) * 1987-12-02 1989-06-09 Dainippon Screen Mfg Co Ltd データ記憶装置
KR100261057B1 (ko) * 1991-08-15 2000-07-01 윌리엄 비. 켐플러 정확도 부스트래핑
JP3092556B2 (ja) * 1997-09-16 2000-09-25 日本電気株式会社 半導体記憶装置
US6178472B1 (en) * 1998-06-15 2001-01-23 International Business Machines Corporation Queue having distributed multiplexing logic
JP2004146005A (ja) * 2002-10-25 2004-05-20 Nec Micro Systems Ltd 記憶モジュールおよびそれを用いた順次アクセス記憶装置
US7187203B1 (en) 2004-12-17 2007-03-06 Lattice Semiconductor Corporation Cascadable memory
US7298169B2 (en) * 2005-03-15 2007-11-20 Tabula, Inc Hybrid logic/interconnect circuit in a configurable IC
US7746112B1 (en) 2009-04-02 2010-06-29 Xilinx, Inc. Output structure with cascaded control signals for logic blocks in integrated circuits, and methods of using the same

Also Published As

Publication number Publication date
EP2917844B1 (en) 2018-08-22
CN104969208A (zh) 2015-10-07
EP2917844A1 (en) 2015-09-16
JP2016504650A (ja) 2016-02-12
WO2014074632A1 (en) 2014-05-15
US20140133246A1 (en) 2014-05-15
US9075930B2 (en) 2015-07-07
JP6364015B2 (ja) 2018-07-25
CN104969208B (zh) 2017-03-15
KR20150084001A (ko) 2015-07-21

Similar Documents

Publication Publication Date Title
KR101965476B1 (ko) 구성 가능한 매립식 메모리 시스템
US11296705B2 (en) Stacked programmable integrated circuitry with smart memory
US9711194B2 (en) Circuits for and methods of controlling the operation of a hybrid memory system
US7737725B1 (en) Device control register for a processor block
Marshall et al. A reconfigurable arithmetic array for multimedia applications
US6765408B2 (en) Device and method with generic logic blocks
US7518396B1 (en) Apparatus and method for reconfiguring a programmable logic device
JP6564186B2 (ja) 再構成可能な半導体装置
JP6517626B2 (ja) 再構成可能な半導体装置
US9875330B2 (en) Folding duplicate instances of modules in a circuit design
US7724028B1 (en) Clocking for a hardwired core embedded in a host integrated circuit device
US10511308B2 (en) Field programmable transistor arrays
WO2014163099A2 (ja) 再構成可能な論理デバイス
US20040111590A1 (en) Self-configuring processing element
Lin et al. SRAM-based NATURE: A dynamically reconfigurable FPGA based on 10T low-power SRAMs
US9083340B1 (en) Memory matrix
US9478272B1 (en) Configurable storage blocks with embedded first-in first-out and last-in first-out circuitry
US9355690B1 (en) Time-multiplexed, asynchronous device
US9628084B2 (en) Reconfigurable logic device
CN102763334B (zh) 具有镜像互连结构的可编程集成电路
US8941408B2 (en) Configuring data registers to program a programmable device with a configuration bit stream without phantom bits
Miyamoto et al. A 1.6 mm 2 4,096 logic elements multi-context FPGA core in 90nm CMOS
Lin Design of dynamically-reconfigurable architectures aimed at reducing FPGA-ASIC gaps
JP2011134218A (ja) 再構成可能メモリを利用した半導体集積回路の設計装置、設計方法および、プログラム

Legal Events

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