KR101333477B1 - 프리애더 스테이지를 구비한 디지털 신호 처리 블록 - Google Patents

프리애더 스테이지를 구비한 디지털 신호 처리 블록 Download PDF

Info

Publication number
KR101333477B1
KR101333477B1 KR1020117016156A KR20117016156A KR101333477B1 KR 101333477 B1 KR101333477 B1 KR 101333477B1 KR 1020117016156 A KR1020117016156 A KR 1020117016156A KR 20117016156 A KR20117016156 A KR 20117016156A KR 101333477 B1 KR101333477 B1 KR 101333477B1
Authority
KR
South Korea
Prior art keywords
input
filter
register
stage
dsp
Prior art date
Application number
KR1020117016156A
Other languages
English (en)
Other versions
KR20110098817A (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
Priority claimed from US12/360,836 external-priority patent/US8543635B2/en
Application filed by 자일링크스 인코포레이티드 filed Critical 자일링크스 인코포레이티드
Publication of KR20110098817A publication Critical patent/KR20110098817A/ko
Application granted granted Critical
Publication of KR101333477B1 publication Critical patent/KR101333477B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • G06F7/575Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03HIMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
    • H03H17/00Networks using digital techniques
    • H03H17/02Frequency selective networks
    • H03H17/06Non-recursive filters
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03HIMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
    • H03H17/00Networks using digital techniques
    • H03H17/02Frequency selective networks
    • H03H17/06Non-recursive filters
    • H03H2017/0692Transposed

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Logic Circuits (AREA)
  • Complex Calculations (AREA)

Abstract

집적 회로용의 프리애더 스테이지(204)를 구비한 디지털 신호 처리 블록(200)이 개시된다. 디지털 신호 처리 블록은 프리애더 스테이지(204) 및 제어 버스(202)를 포함한다. 제어 버스는 프리애더 스테이지(204)에 결합되어 프리애더 스테이지의 동작을 동적으로 제어한다. 프리애더 스테이지는 제어 버스에 결합된 제1 멀티플렉서(306)의 제1 입력 포트; 제어 버스에 결합된 제1 논리 게이트(322)의 제2 입력 포트; 제어 버스에 결합된 제2 논리 게이트(321)의 제3 입력 포트; 및 제어 버스에 결합된 가산기/감산기(331)의 제4 입력 포트를 포함한다.

Description

프리애더 스테이지를 구비한 디지털 신호 처리 블록{DIGITAL SIGNAL PROCESSING BLOCK WITH PREADDER STAGE}
본 발명은 집적 회로 소자(IC)에 관한 것이다. 특히, 본 발명은 IC용의 프리애더 스테이지(preadder stage)를 구비한 디지털 신호 처리 블록에 관한 것이다.
프로그램가능 논리 소자(programmable logic device; "PLD")는 특수한 논리적 기능을 수행하도록 프로그램될 수 있는 잘 알려진 유형의 집적 회로이다. PLD의 한가지 유형인 현장 프로그램가능 게이트 어레이(field programmable gate array; "FPGA")는 전형적으로 프로그램가능한 타일(tile)의 어레이를 포함하고 있다. 이 프로그램가능 타일은, 예를 들면, 입력/출력 블록("IOB"), 구성가능 논리 블록("CLB"), 전용 랜덤 액세스 메모리 블록("BRAM"), 승산기, 디지털 신호 처리 블록("DSP"), 프로세서, 클럭 관리자, 지연 잠금 루프(delay lock loop; "DLL") 등을 포함할 수 있다. 여기에서 사용하는 용어 "포함한다" 및 "포함하는"은 제한없이 포함한다는 의미이다.
각각의 프로그램가능 타일은 전형적으로 프로그램가능 상호접속 및 프로그램가능 로직을 둘 다 포함한다. 프로그램가능 상호접속은 전형적으로 프로그램가능 상호접속 포인트("PIP")에 의해 상호접속된 가변 길이의 다수의 상호접속 라인을 포함한다. 프로그램가능 로직은 예를 들면 함수 발생기, 레지스터, 산술 로직 등을 포함할 수 있는 프로그램가능 요소를 이용하여 사용자 설계의 로직을 구현한다.
프로그램가능 상호접속 및 프로그램가능 로직은 전형적으로 프로그램가능 요소들을 어떻게 구성할 것인지를 규정하는 구성 데이터 스트림을 내부 구성 메모리 셀에 로딩함으로써 프로그램된다. 구성 데이터는 메모리로부터(예를 들면 외부 PROM으로부터) 판독되거나 외부 장치에 의해 FPGA에 기록될 수 있다. 그 다음에, 개별 메모리 셀의 집합적 상태(collective state)가 FPGA의 기능을 결정한다.
다른 유형의 PLD는 복합 프로그램가능 논리 소자(Complex Programmable Logic Device; "CPLD")이다. CPLD는 함께 접속되고 상호접속 스위치 매트릭스에 의해 입력/출력("I/O") 리소스에 접속되는 2개 이상의 "기능 블록"을 포함한다. CPLD의 각 기능 블록은 프로그램가능 로직 어레이("PLA") 및 프로그램가능 어레이 로직("PAL") 소자에서 사용하는 것과 유사한 2-레벨 AND/OR 구조를 포함한다. CPLD에 있어서, 구성 데이터는 전형적으로 비휘발성 메모리에서 온칩(on-chip)으로 저장된다. 일부 CPLD에 있어서, 구성 데이터는 비휘발성 메모리에 온칩으로 저장되고, 그 다음에 초기 구성(프로그래밍) 시퀀스 부분으로서 휘발성 메모리에 다운로드된다.
이러한 모든 프로그램가능 논리 소자("PLD")에 있어서, 소자의 기능은 제어 목적으로 소자에 제공된 데이터 비트에 의해 제어된다. 데이터 비트는 휘발성 메모리(예를 들면, FPGA 및 일부 CPLD에서와 같은 정적 메모리 셀), 비휘발성 메모리(예를 들면, 일부 CPLD에서와 같은 플래시 메모리), 또는 임의의 다른 유형의 메모리 셀에 저장될 수 있다.
다른 PLD는 소자에서 각종 요소들을 프로그램가능하게 상호접속하는, 금속층 등의 처리층(processing layer)을 적용함으로써 프로그램된다. 이러한 PLD는 마스크 프로그램가능 소자라고 알려져 있다. PLD는 또한 다른 방법으로, 예를 들면 퓨즈 또는 안티퓨즈 기술을 이용하여 구현될 수 있다. 용어 "PLD" 및 "프로그램가능 논리 소자"는 이러한 예시적인 소자들을 포함할 뿐만 아니라(그러나 이러한 소자들로 제한되는 것은 아님), 단지 부분적으로 프로그램가능한 소자들도 포괄한다. 예를 들면, 일 유형의 PLD는 하드 코드 트랜지스터 로직 및 하드 코드 트랜지스터 로직을 프로그램가능하게 상호접속하는 프로그램가능 스위치 패브릭의 조합을 포함한다.
FPGA의 프로그램가능 로직("FPGA 패브릭")에서 실증되는 설계의 성능은 FPGA 패브릭의 속도에 의해 제한된다. 그러나, FPGA의 DSP와 같은 전용 회로 리소스는 FPGA 패브릭에서 구현되는 등가 회로보다 더 빠르게 동작을 수행할 수 있다. 따라서, DSP의 유용성을 확장하는 수단을 제공하는 것이 바람직하고 유용할 것이다.
집적 회로는 회로 설계를 구현하기 위해 사용되는 다양한 회로 요소들로 구성된다. 회로 설계는 집적 회로의 회로 요소들의 유형 및 가용 위치에 따라서 레이아웃 즉 "배치"되어야 한다. 즉, 회로 설계의 컴포넌트들은 집적 회로의 적소에 할당 또는 배치되어야 한다. 회로 설계의 컴포넌트들을 배치함에 있어서, 각종 인수(factor)들이 배치에서의 결정을 위해 고려된다. 컴포넌트 배치의 효율 및 컴포넌트 구현 효율의 개선은 집적 회로 소자의 사용에 있어서 상당한 개선을 가져올 수 있다.
종래의 집적 회로는 디지털 신호 처리(DSP) 응용에 전형적인 산술 연산을 구현할 때 비효율적이지만, 일부 집적 회로는 DSP 기능을 구현하는데 전용되는 회로 블록을 사용할 수 있다. 그러나, 종래 소자에서의 DSP 블록은 본질적으로 비효율적인 레이아웃을 유도하거나 또는 DSP 응용을 구현하는데 필요한 회로의 비효율적 사용량을 유도할 수 있다. 즉, 제한된 기능을 제공하는 DSP 블록을 가진 집적 회로는 회로 리소스의 사용을 비효율적으로 할 수 있다. 회로 레이아웃의 효율을 개선할 수 있는 DSP 블록은 집적 회로의 사용에 있어서 상당한 개선을 가져올 수 있다.
하나 이상의 실시예는 일반적으로 집적 회로 소자(IC)에 관한 것이고, 특히 IC용의 프리애더 스테이지를 구비한 디지털 신호 처리 블록에 관한 것이다.
본 발명의 일 실시예는 일반적으로 디지털 신호 처리 블록을 구비한 집적 회로에 관한 것이다. 디지털 신호 처리 블록은 프리애더 스테이지 및 제어 버스를 포함한다. 제어 버스는 프리애더 스테이지에 결합되어 프리애더 스테이지의 동작을 동적으로 제어한다. 프리애더 스테이지는 제어 버스에 결합된 제1 멀티플렉서의 제1 입력 포트; 제어 버스에 결합된 제1 논리 게이트의 제2 입력 포트; 제어 버스에 결합된 제2 논리 게이트의 제3 입력 포트; 및 제어 버스에 결합된 가산기/감산기의 제4 입력 포트를 포함한다.
이 실시예에 있어서, 프리애더 스테이지는 가산기/감산기의 제1 데이터 입력을 동적으로 설정하여 제2 입력 포트에 대한 입력에 응답하여 제1 논리 게이트의 출력을 통해 제로 값을 수신하도록 구성될 수 있다. 프리애더 스테이지는 가산기/감산기의 제2 데이터 입력을 동적으로 설정하여 제3 입력 포트에 대한 입력에 응답하여 제2 논리 게이트의 출력을 통해 제로 값을 수신하도록 구성될 수 있다. 프리애더 스테이지는 제1 입력 포트에 대한 입력에 응답하여 0-, 1-, 또는 2-레지스터 지연을 가진 입력 데이터를 동적으로 선택하도록 구성될 수 있다. 프리애더 스테이지는 제4 입력 포트에 대한 입력에 응답하여 가산 또는 감산을 수행하게끔 가산기/감산기를 동적으로 설정하도록 구성될 수 있다. 이 집적 회로 실시예는 구성 비트스트림에 응답하여 입력 데이터를 디지털 신호 처리 블록에 제공하기 위한 실증된(instantiated) 회로 기능을 제공하도록 구성될 수 있는 현장 프로그램가능 논리 게이트를 또한 포함한다.
이 실시예에 있어서, 프리애더 스테이지는 입력 데이터를 제공하는 현장 프로그램가능 논리 게이트를 재구성할 필요없이 제1 입력 포트, 제2 입력 포트, 제3 입력 포트 및 제4 입력 포트로 구성된 그룹의 적어도 하나의 포트를 통하여 동적으로 재구성할 수 있고; 프리애더 스테이지는 절대치 기능, 순차적 복소수 켤레(complex conjugate) 기능, 순차적 승산 기능, 순차적 복소수 승산, 다중화 기능, 레지스터 파일 기능, 시프트 레지스터 논리 기능 및 파이프라인 재조정(rebalancing) 기능을 제공하도록 동적으로 재구성할 수 있다.
본 발명의 다른 실시예는 일반적으로 디지털 신호 처리 블록의 사슬(chain)에 결합된 시프트 레지스터를 포함한 시스톨릭(systolic) 유한 임펄스 응답 필터에 관한 것이다. 시프트 레지스터는 사슬의 디지털 신호 처리 블록의 마지막 블록을 제외한 모든 블록의 제1 레지스터 각각에 대한 브로드캐스트 입력을 브로드캐스트하도록 구성될 수 있다. 각각의 디지털 신호 처리 블록은 제2 레지스터를 가질 수 있다. 각각의 디지털 신호 처리 블록은 제3 레지스터를 가질 수 있다. 제2 레지스터의 출력은 각각의 디지털 신호 처리 블록의 제3 레지스터의 입력에 결합되어 그 이중 레지스터(dual register)를 제공할 수 있다. 이중 레지스터는 직렬로 결합되어 사슬의 디지털 신호 처리 블록의 시작 블록으로부터 디지털 신호 처리 블록의 마지막 블록까지 필터 입력 시리즈를 전파할 수 있다. 각각의 디지털 신호 처리 블록은 제1 레지스터 및 제3 레지스터 각각으로부터 출력을 수신하도록 결합된 제1 가산기를 구비하여 그 제1 합을 제공할 수 있다. 각각의 디지털 신호 처리 블록은 각각의 필터 계수를 수신하도록 결합된 제4 레지스터를 구비할 수 있다. 각각의 디지털 신호 처리 블록은 상기 제1 합 및 필터 계수를 각각 수신하도록 결합된 승산기를 구비할 수 있고, 그 부분 결과를 제공하도록 구성될 수 있다. 각각의 디지털 신호 처리 블록은 상기 부분 결과를 수신하도록 결합된 제2 가산기를 구비할 수 있다. 디지털 신호 처리 블록의 제2 가산기는 각각의 디지털 신호 처리 블록의 부분 결과들을 누산하여 사슬의 디지털 신호 처리 블록의 마지막 블록으로부터 필터 출력 시리즈를 제공하도록 결합될 수 있다.
이 실시예에 있어서, 각각의 디지털 신호 처리 블록은 승산기에 제공되기 전에 제1 합을 수신하도록 결합된 제5 레지스터를 포함할 수 있다. 디지털 신호 처리 블록의 제2 가산기는 직렬로 결합될 수 있고; 디지털 신호 처리 블록의 시작 블록의 제2 가산기는 제2 합을 제공하도록 디지털 신호 처리 블록의 인접 블록의 부분 결과와 가산하기 위해 디지털 신호 처리 블록의 인접 블록의 제2 가산기에 대한 입력을 위한 제2 합으로서 상기 부분 결과를 통과시킬 수 있다. 각각의 디지털 신호 처리 블록은 각 블록의 부분 결과를 수신하도록 결합된 제6 레지스터와 각 블록의 제2 합을 수신하도록 결합된 제7 레지스터를 포함할 수 있다.
이 필터 실시예는 제1 레지스터 및 제3 레지스터 각각으로부터 제1 가산기로의 출력을 게이트하는 게이팅 로직에 결합된 제어 버스를 포함하고, 여기에서 제1 가산기 입력들은 제로 값을 수신하도록 동적으로 구성되어 사슬의 유효 길이를 동적으로 조정할 수 있고, 제1 가산기는 현장 프로그램가능 게이트 어레이 패브릭에서 구현되지 않는다. 게이팅 로직은 사슬 내에 홀수개의 디지털 신호 처리 블록이 있는 경우에도 짝수개의 탭을 갖는 것처럼 시스톨릭 유한 임펄스 응답 필터를 동작시키도록 디지털 신호 처리 블록의 마지막 블록을 동적으로 제로화(zeroing out)하도록 결합될 수 있다. 게이팅 로직은 사슬 내에 짝수개의 디지털 신호 처리 블록이 있는 경우에도 홀수개의 탭을 갖는 것처럼 시스톨릭 유한 임펄스 응답 필터를 동작시키도록 디지털 신호 처리 블록의 마지막 블록을 동적으로 제로화하도록 결합될 수 있다.
본 발명의 또다른 실시예는 일반적으로 필터링 방법에 관한 것이다. 필터 입력 시리즈는 디지털 신호 처리 블록의 사슬에 그들에 대한 제1 입력으로서 획득되고 제공된다. 디지털 신호 처리 블록의 유효 길이는 필터 탭의 수를 효과적으로 조정하도록 동적으로 변경된다. 이 실시예의 방법은 디지털 신호 처리 블록의 시작 블록을 제1 동작 모드로 설정하고, 디지털 신호 처리 블록의 시작 블록을 제외한 모두를 제1 동작 모드와는 다른 제2 동작 모드로 설정하는 단계를 포함한다. 이 방법은 현장 프로그램가능 논리 게이트에서 시프트 레지스터를 인스턴스화하는 단계와, 시프트 레지스터에 필터 입력 시리즈를 제공하는 단계와, 시프트 레지스터로부터의 출력을 사슬의 디지털 신호 처리 블록의 마지막 블록을 제외한 모두에 그에 대한 제2 입력으로서 브로드캐스팅하는 단계를 포함한다.
이 방법은 또한 각각의 디지털 신호 처리 블록에 필터 계수를 각각 제공하는 단계와, 제1 입력을 디지털 신호 처리 블록의 시작 블록으로부터의 사슬의 디지털 신호 처리 블록의 마지막 블록까지 순차적으로 시프트시키는 단계와, 디지털 신호 처리 블록을 이용하여 각각의 부분 합을 결정하는 단계와, 필터 출력 시리즈를 제공하도록 부분 합을 누산하는 단계를 포함한다. 디지털 신호 처리 블록은 홀수 탭 대칭 시스톨릭 유한 임펄스 응답 필터로서의 동작으로부터 짝수 탭 대칭 시스톨릭 유한 임펄스 응답 필터로서의 동작으로 동적으로 변경될 수 있다. 디지털 신호 처리 블록은 짝수 탭 대칭 시스톨릭 유한 임펄스 응답 필터로서의 동작으로부터 홀수 탭 대칭 시스톨릭 유한 임펄스 응답 필터로서의 동작으로 동적으로 변경될 수 있다.
본 발명의 실시예에 따르면, 집적 회로에서 구현되도록 회로 내의 필터를 구성하는 방법이 개시된다. 이 방법은 회로의 고준위 설계(high level design)를 수신하는 단계와; 고준위 설계에서 필터를 식별하는 단계와; 필터의 계수를 분석하는 단계와; 고준위 설계의 필터를 공통 계수를 수용하도록 구성된 회로의 처리 블록을 이용하는 필터로 변환하는 단계를 포함하고, 여기에서 상기 처리 블록은 공통 계수와 관련된 탭들을 수신하도록 결합된다. 고준위 설계의 필터를 공통 계수를 수용하도록 구성된 회로의 처리 블록을 이용하는 필터로 변환하는 단계는 필터를 대칭 이조 콘볼루션 필터(symmetric transpose convolution filter)로서 구성하는 단계를 포함할 수 있다. 계수를 분석하는 단계는 필터의 대칭 계수를 식별하는 단계를 포함할 수 있다. 상기 방법은 또한 공통 계수를 제1 입력으로서 처리 블록의 승산기에 제공하는 단계를 포함할 수 있다. 이 방법은 또한 공통 계수와 관련된 탭들의 합을 제2 입력으로서 승산기에 제공하는 단계를 포함할 수 있다. 공통 계수와 관련된 탭들의 합을 제2 입력으로서 승산기에 결합하는 단계는 DSP 블록의 프리애더 회로를 이용하여 합을 발생시키는 단계를 포함할 수 있다. 이 방법은 또한 공통 계수와 관련된 탭들의 차를 제2 입력으로서 승산기에 제공하는 단계를 포함할 수 있다.
컴퓨터 프로그램 제품이 다른 실시예로서 또한 개시된다. 컴퓨터 프로그램 코드는 회로 설계를 배치 구성(placement configuration)으로 변환하는 컴퓨터 판독가능 프로그램 코드를 포함한 컴퓨터 판독가능 매체를 포함할 수 있고, 상기 컴퓨터 판독가능 매체는 고준위 설계의 필터를 식별하는 컴퓨터 판독가능 프로그램 코드; 필터의 계수를 분석하는 컴퓨터 판독가능 프로그램 코드; 및 공통 계수를 수용하도록 구성된 회로의 처리 블록을 이용하는 필터를 구성하는 컴퓨터 판독가능 프로그램 코드을 포함하고, 처리 블록은 공통 계수와 관련된 탭들을 수신하도록 결합된다.
공통 계수를 수용하도록 구성된 회로의 처리 블록을 이용하는 필터를 구성하는 컴퓨터 판독가능 프로그램 코드는 필터를 대칭 이조 콘볼루션 필터로서 구성하는 컴퓨터 판독가능 프로그램 코드를 포함할 수 있다. 필터의 계수를 분석하는 컴퓨터 판독가능 프로그램 코드는 필터의 대칭 계수를 식별하는 컴퓨터 판독가능 프로그램 코드를 포함할 수 있다. 컴퓨터 프로그램 제품은 공통 계수를 제1 입력으로서 처리 블록의 승산기에 제공하는 컴퓨터 판독가능 프로그램 코드를 또한 포함할 수 있다. 컴퓨터 프로그램 제품은 공통 계수와 관련된 탭들의 합 또는 차를 제2 입력으로서 승산기에 제공하는 컴퓨터 판독가능 프로그램 코드를 또한 포함할 수 있다. 공통 계수와 관련된 탭들의 합 또는 차를 제2 입력으로서 승산기에 제공하는 컴퓨터 판독가능 프로그램 코드는 DSP 블록의 프리애더 회로를 이용하여 합을 발생하는 컴퓨터 판독가능 프로그램 코드를 포함할 수 있다. 컴퓨터 프로그램 제품은 또한 집적 회로의 회로 요소들을 이용하여 필터를 구현하는 컴퓨터 판독가능 프로그램 코드를 포함할 수 있다.
다른 실시예에 따르면, 집적 회로에서 필터를 구현하는 회로는 복수의 지연 요소; 복수의 지연 요소 중 제1 지연 요소에 의해 필터의 제1 탭을 수신하고 복수의 지연 요소 중 제2 지연 요소에 의해 필터의 제2 탭 -제1 탭과 제2 탭은 공통 계수를 갖는 것임- 을 수신하도록 결합된 프리애더 회로; 제1 입력에서 제1 탭과 제2 탭의 합을 구성하고 제2 입력에서 공통 계수를 구성하는 프리애더 회로의 출력을 수신하도록 결합된 승산기; 및 승산기의 출력을 수신하도록 결합된 가산기를 포함할 수 있다. 필터는 이조 콘볼루션 필터를 포함할 수 있다. 공통 계수는 필터의 대칭 계수와 관련될 수 있다. 필터의 탭의 수는 짝수일 수 있다. 필터의 탭의 수는 홀수일 수 있고 홀수의 탭의 부분집합이 프리애더 회로에 결합될 수 있다. 복수의 지연 요소, 프리애더 회로 및 승산기는 집적 회로의 디지털 신호 처리 블록의 일부일 수 있다.
본 발명에 따르면, 프리애더 스테이지를 구비한 디지털 신호 처리 블록을 제공할 수 있다.
첨부 도면은 본 발명의 하나 이상의 태양에 따른 예시적인 실시예를 보여주고 있지만, 첨부 도면들은 본 발명을 도시된 실시예로 제한하는 것이 아니고 단지 설명 및 이해를 위해 제시된 것임을 이해하여야 한다.
도 1은 본 발명의 하나 이상의 태양이 구현되는 원주형 현장 프로그램가능 게이트 어레이("FPGA")의 예시적인 실시예를 보여주는 단순화한 블록도이다.
도 2는 DSP 슬라이스의 예시적인 실시예를 보여주는 블록/회로도이다.
도 3은 도 2의 DSP 슬라이스의 프리애더의 예시적인 실시예를 보여주는 회로도이다.
도 4는 도 2의 DSP 슬라이스의 이중 B 레지스터의 예시적인 실시예를 보여주는 회로도이다.
도 5는 인모드 함수표의 예시적인 실시예를 보여주는 표이다.
도 6은 종래 기술의 8-탭 짝수 대칭 시스톨릭 유한 임펄스 응답("FIR") 필터의 예시적인 실시예를 보여주는 블록/회로도이다.
도 7은 8-탭 짝수 대칭 시스톨릭 FIR 필터의 예시적인 실시예를 보여주는 블록/회로도이다.
도 8은 대칭 시스톨릭 가산-승산-가산 처리 모듈을 구현하는 0,0,1,0,1,0,1의 오피모드를 가진 도 7의 DSP 슬라이스의 예시적인 실시예를 보여주는 블록/회로도이다.
도 9는 9-탭 홀수 대칭 시스톨릭 FIR 필터의 예시적인 실시예를 보여주는 블록/회로도이다.
도 10은 9-탭 홀수 대칭 시스톨릭 FIR 필터의 다른 예시적인 실시예를 보여주는 블록/회로도이다.
도 11은 FIR 사용 흐름의 예시적인 실시예를 보여주는 흐름도이다.
도 12는 본 발명의 실시예에 따른 대칭 이조 콘볼루션 유한 임펄스 응답 필터를 구현하는 회로의 블록도이다.
도 13은 본 발명의 다른 실시예에 따른 대칭 이조 콘볼루션 유한 임펄스 응답 필터를 구현하는 회로의 블록도이다.
도 14는 본 발명의 다른 실시예에 따른 대칭 이조 콘볼루션 유한 임펄스 응답 필터를 구현하는 회로의 블록도이다.
도 15는 본 발명의 실시예에 따라서 집적 회로에서 필터를 구현하는 방법을 보인 흐름도이다.
도 16은 본 발명의 실시예에 따라서 프로그램가능 로직을 구비한 소자를 구현하는 시스템의 블록도이다.
도 17은 본 발명의 실시예에 따라서 프로그램가능 로직을 구비한 소자의 블록도이다.
도 18은 본 발명의 실시예에 따라서 구성가능 논리 블록의 구성가능 논리 요소의 블록도이다.
이하의 설명에서, 많은 특정의 세부는 본 발명의 특정 실시예의 더욱 완전한 설명을 제공하기 위해 기술된다. 그러나, 당업자라면 본 발명이 이하에서 제공되는 특정 세부를 전부 갖추지 않고서도 실시될 수 있다는 것을 알 것이다. 다른 경우로, 잘 알려져 있는 특징들은 본 발명을 모호하게 하지 않도록 상세하게 기재되지 않았다. 설명을 용이하게 하기 위해, 동일한 참조 번호는 다른 도면에서 동일한 항목을 인용하기 위해 사용되지만, 다른 실시예에서 항목들은 다르게 표시될 수 있다.
위에서 언급한 바와 같이, 진보형 FPGA는 어레이 내에 수 개의 다른 유형의 프로그램가능 논리 블록을 포함할 수 있다. 예를 들면, 도 1은 멀티 기가비트 송수신기("MGT")(101), 구성가능 논리 블록("CLB")(102), 랜덤 액세스 메모리 블록("BRAM")(103), 입력/출력 블록("IOB")(104), 구성 및 클럭킹 로직("CONFIG/CLOCKS")(105), 디지털 신호 처리 블록("DSP")(106), 특수화 입력/출력 블록("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)는 예를 들면 1 인스턴스의 프로그램가능 상호접속 요소(111) 외에 2 인스턴스의 입력/출력 논리 요소("IOL")(115)를 포함할 수 있다. 이 기술에 숙련된 사람에게는 명백한 바와 같이, 예컨대 I/O 논리 요소(115)에 접속된 실제 I/O 패드는 전형적으로 입력/출력 논리 요소(115)의 영역으로 한정되지 않는다.
도시된 실시예에 있어서, 도 1에 도시된 다이의 중앙 부근의 원주형 영역은 구성, 클럭 및 기타의 제어 로직을 위해 사용된다. 상기 원주형 영역으로부터 연장하는 수평 영역(109)은 FPGA의 폭을 가로질러서 클럭 및 구성 신호를 배분하기 위해 사용된다.
도 1에 도시한 아키텍쳐를 이용하는 일부 FPGA는 FPGA의 대부분을 형성하는 규칙적인 원주형 구조를 분열시키는 추가의 논리 블록을 포함한다. 추가의 논리 블록은 프로그램가능 블록 및/또는 전용 로직일 수 있다. 예를 들면, 프로세서 블록(110)은 CLB 및 BRAM의 수 개의 컬럼에 걸쳐진다.
도 1은 단지 예시적인 FPGA 아키텍쳐를 보여주고 있는 것임에 주목한다. 예를 들면, 컬럼 내의 논리 블록의 수, 컬럼들의 상대적인 폭, 컬럼의 수 및 순서, 컬럼에 포함된 논리 블록의 유형, 논리 블록의 상대적 크기, 및 도 1의 상부에 표시된 상호접속/로직 구현예들은 순전히 예시적인 것이다. 예를 들면, 실제 FPGA에 있어서, CLB가 나타나는 곳은 어디든지 사용자 로직의 효율적인 구현을 촉진하기 위하여 전형적으로 하나 이상의 인접 CLB 컬럼이 포함되지만, 인접 CLB 컬럼의 수는 FPGA의 전체 사이즈에 따라서 달라진다.
DSP(106)는 제임스 엠. 심킨스 등에 의한 "직렬 DSP 슬라이스를 구비한 집적 회로(Integrated Circuit with Cascading DSP Slices)"라는 명칭의 미국 특허 제7,472,155호에 자세하게 설명되어 있으며, 이 특허는 인용에 의해 그 전체 내용이 여기에 통합된 것으로 한다. DSP(106)의 예시적인 구현예는 캘리포니아 산호세에 소재하는 질링크사(Xilinx, Inc.)로부터 구할 수 있는 버텍스(Virtex™) 및 스파르탄(Spartan™) FPGA에서 찾을 수 있다.
도 2는 DSP 슬라이스(200)의 예시적인 실시예를 보여주는 블록/회로도이다. DSP 슬라이스(200)는, 필요한 것은 아니지만, 도 1의 FPGA(100)의 DSP(106)의 예시적인 실시예일 수 있다. D 입력 신호("입력")(201), A 입력(211), AC 입력("ACIN")(341) 및 입력 모드 신호("인모드")(202)는 프리애더를 구비한 이중 A, D 레지스터("프리애더")(204)에 제공되고, 여기에서 인모드(202)는 프리애더(204)용의 인모드 레지스터(203)에 제공된다. B 입력(212)과 BC 입력("BCIN")(441)은 이중 B 레지스터(242))에 제공된다. 승산기(251) 및 M 레지스터(253)뿐만 아니라, C 레지스터 및 도 2의 우측에 있는 DSP 슬라이스(200)의 기타 회로는 종래의 것이고, 버텍스-5™ FPGA에서 찾을 수 있다. 따라서, 이러한 이미 공지된 회로에 대한 설명은 명확성을 위해 생략된다. 더욱이, 용어 "입력" 및 "출력"은 제한하는 것 없이 다양한 형태를 포함한 신호 및 포트 중 어느 하나 또는 둘 다를 표시하기 위해 사용된다.
도 3은 프리애더(204)의 예시적인 실시예를 보여주는 회로도이다. 뒤에서 자세히 설명하는 바와 같이, 프리애더(204)는 0, 1, 2, 또는 3 레지스터 디프(deep)인 것처럼 동작하도록 동적으로 구성될 수 있다.
프리애더(204)는 멀티플렉서(301~306), 레지스터(311~314), 논리 게이트(321, 322) 및 가산기/감산기(331)를 구비한다. 비록 도 3뿐만 아니라 도 2 및 도 4에서 비트 폭이 버텍스-5™ FPGA의 DSP 슬라이스의 비트 폭에 따라서 예시적으로 도시되어 있지만, 여기에서 예시적으로 도시한 것과 다른 비트 폭 또는 동일한 비트 폭 또는 이들의 조합을 사용할 수 있음은 명백하다.
명확성을 위해 도시하지 않았고 제한하는 것이 아니지만, 이 실시예에 있어서, 멀티플렉서(301~305)에 대한 제어 선택 입력은 FPGA 패브릭의 구성 메모리 셀로부터 제공된다. 이러한 구성 메모리 셀은 구성 비트스트림으로부터 구성된다. 따라서, FPGA와 관련하여, 이러한 FPGA가 파워 업 사이클 부분으로서 상태 정보를 획득할 때, 메모리 셀의 프로그램 상태는 멀티플렉서(301~305)의 선택된 출력을 결정하고, 그러한 메모리 셀은 FPGA를 리세트하지 않고 그들의 상태를 변경시킬 수 없다. 다시 말해서, 동작 중에 멀티플렉서(301~305)의 상태는 정적이다. FPGA 동작 중에 멀티플렉서(301~305)의 정적 상태와는 대조적으로, 멀티플렉서(306)는 동적으로 동작가능하다. 다시 말하면, 멀티플렉서(306)는 FPGA를 리세트하지 않고 FPGA의 동작 중에 그 제어 선택을 변경시킬 수 있다. 이 예시적인 실시예에서, 이러한 제어 선택은 인모드(202)의 일부, 즉 인모드(202-0)에 의해 제공되고, 여기에서 "-0"은 인모드 버스의 비트 위치 제로를 표시하기 위해 사용된다.
또한, 멀티플렉서(306)의 동적 동작 외에, 논리 게이트(321, 322) 및 감산기(331)는 동적으로 동작할 수 있다. 따라서, 따라서, 이러한 동적으로 동작가능한 컴포넌트들은 사용자 설계의 동작 중에 변경될 수 있다. 이 실시예에 있어서, 도 3의 인모드(202-0~202-3) 및 도 4의 인모드(202-4)는 각 클럭 신호 사이클에서 변경될 수 있다. 제한하는 의도없이 단지 예로서 명확성을 위해, 여기에서 사용될 수 있는 클럭 신호들은 도시를 생략하였다.
인모드(202-0)는 A 입력(211) 또는 AC 입력(341)을 A1 레지스터(311)와 A2 레지스터(312) 중의 어느 하나에 의해 또는 A1 레지스터(311)와 A2 레지스터(312) 둘 다에 의해 지연된 신호로서, 또는 A1 레지스터(311)도 A2 레지스터(312)도 거치지 않은 신호로서 제공하도록 제어하기 위해 멀티플렉서(306)에 대한 동적 제어 선택 신호로서 제공된다. 다시, 메모리 셀 상태에 의해 일단 선택되면, 멀티플렉서(301~305)로부터의 선택된 출력은 동작 중에 FPGA를 리세트하지 않고 정적이다.
멀티플렉서(301)에서는 A 입력(211)과 AC 입력(341) 중의 어느 하나가 출력될 수 있다. 멀티플렉서(301)로부터의 출력은 A1 레지스터(311)에 대한 데이터 입력으로서 및 멀티플렉서(302)에 대한 데이터 입력으로서 제공된다. A1 레지스터(311)의 출력은 멀티플렉서(302, 304, 306)에 대한 데이터 입력으로서 제공된다. 멀티플렉서(302)의 출력은 A2 레지스터(312)에 대한 데이터 입력으로서 및 멀티플렉서(303)에 대한 데이터 입력으로서 제공된다. 멀티플렉서(303)의 출력은 멀티플렉서(304, 306)에 대한 데이터 입력으로서 제공될 뿐만 아니라 X MUX 출력(342)으로서 제공된다. 도 2를 참조하면, 프리애더(204)의 X MUX 출력(342)은 도 2의 이중 B 레지스터(242)의 출력(442)과 결합하여 AB 연쇄 신호(250)를 구성한다.
도 3으로 돌아가서, 제한하는 의도가 없는 단지 예로서 명확성을 위해, 사용자는 멀티플렉서(302, 303)가 그들의 하부 입력을 출력으로서 선택하도록 멀티플렉서(302, 303)를 설정하고, 또한 사용자는 AC 입력(341), 즉 다른 DSP 슬라이스로부터의 A 캐스케이드 입력을 멀티플렉서(301)의 출력으로서 선택하였다고 가정하면, 멀티플렉서(306)에 대한 데이터 입력으로서 제공된 AC 입력(341)은 멀티플렉서(306)의 상부 데이터 입력에서 A1 레지스터(311) 및 A2 레지스터(312) 둘 다에 의해 등록되고, 멀티플렉서(306)의 하부 입력에서는 AC 입력(341)이 A1 레지스터(311)에 의해서만 등록된다. 따라서, 사용자는 멀티플렉서(306)의 상부 포트에 대한 레지스터 깊이(register depth)를 선택할 수 있고, 멀티플렉서(306)의 하부 포트에 대한 입력의 레지스터 깊이는 항상 A1 디프(deep)라는 것을 알 수 있다.
위에서 언급한 것처럼, 프리애더(204)는 이중 A 레지스터와 이중 D 레지스터를 포함한다. 이것은 예를 들면 멀티플렉서(306)의 출력을 통해 논리 게이트(322)에 대한 입력을 제공할 때 A1 레지스터와 A2 레지스터를 둘 다 사용하거나 어느 하나만을 사용하거나 둘 다를 사용하지 않을 수 있다 하더라도 A1 레지스터(311)와 A2 레지스터(312)는 이중 레지스터로 구성가능한 것임을 의미한다. 또한, 이중 D 레지스터(313)는 D 레지스터(313) 및 AD 레지스터(314)로 인용된다.
다시, 멀티플렉서(301)의 출력으로부터 기원되는 멀티플렉서(306)에 대한 상부 입력뿐만 아니라 멀티플렉서(304)에 대한 하부 입력은 레지스터 디프가 없는 것이거나, A1 또는 A2 디프가 있는 것이거나 또는 A1 디프 및 A2 디프가 있는 것일 수 있다는 것을 알아야 한다. 또한, 멀티플렉서(306)의 하부 입력뿐만 아니라 멀티플렉서(304)의 상부 입력은 항상 A1 디프이다. 멀티플렉서(304)의 출력은 도 2의 AC 출력("ACOUT") 신호("AC 출력")(343)이고, 이것은 도 2의 DSP 슬라이스(200)에 제공되는 AC 입력(341)과 유사하게 다른 DSP 슬라이스에 제공될 수 있다.
출력으로 멀티플렉서(306)의 상부 입력을 선택할 것인지 하부 입력을 선택할 것인지는 인모드(202-0)의 상태에 의해 제어되고, 멀티플렉서(306)의 출력은 논리 게이트(322)의 데이터 입력으로서 제공된다. 논리 게이트(321, 322)로서 AND 게이트가 예시적으로 도시되어 있지만, 여기에서의 설명에 따라서 다른 논리 게이트를 사용할 수 있다는 것은 명백하다. 반전된 입력인 AND 게이트(322)의 다른 입력은 인모드(202-1)를 수신하도록 결합된다. 이 실시예에서 인모드(202-1)는 인모드(202)의 버스의 비트 위치 1을 표시한다. AND 게이트(322)의 출력은 가산기/감산기(331)의 입력으로서, 즉 뒤에서 더 자세히 설명하는 A 경로 입력(261)으로서, 및 멀티플렉서(305)의 상부 입력으로 제공된다.
D 입력(201)은 D 레지스터(313)의 데이터 입력으로서 제공된다. D 레지스터(313)의 데이터 출력은 AND 게이트(321)의 상부 입력으로 제공된다. AND 게이터(321)의 하부 입력은 이 실시예에서 인모드(202)의 버스의 비트 위치 2인 인모드(202-2)를 수신하도록 결합된다. AND 게이트(321)의 출력은 가산기/감산기(331)의 다른 입력으로서, 즉 뒤에서 더 자세히 설명하는 D 경로 입력(262)으로서 제공된다. 가산기/감산기(331)가 가산용으로 구성되는지 감산용으로 구성되는지는 이 실시예에서 인모드(202)의 버스의 비트 위치 3인 인모드(202-3)에 의해 제어된다. 가산기/감산기(331)의 출력은 AD 레지스터(314)의 데이터 입력 포트에 제공된다. AD 레지스터(314)의 출력은 멀티플렉서(305)의 다른 입력으로서 제공된다. 멀티플렉서(305)의 출력은 승산기 피연산자 신호, 즉 A 승수("A MULT") 신호(344)이다(도 2에 예시적으로 도시됨).
다시, 멀티플렉서(306), AND 게이트(322), AND 게이트(321), 가산기/감산기(331)는 인모드(202)의 버스의 비트 위치 0~3을 각각 표시하는 인모드(202-0~202-3)에 의해 동적 동작 목적으로 각각 제어된다. 인모드 202-0과 202-3은 출력 또는 함수를 선택하기 위한 제어 선택 신호로서 사용되고, 인모드 202-1과 202-2는 그들의 상태에 따라서 각각 AND 게이트(322, 321)의 출력에 영향을 주거나 주지 않도록 동작한다.
AND 게이트(322, 321)를 동적으로 제어할 수 있는 것 외에, AND 게이트(322, 321) 중 어느 하나의 출력은 가산기/감산기(331)에 대해 제로 입력을 공급하도록 사용될 수 있다. 따라서, 만일 AND 게이트(322)가 가산기/감산기(331)에 0의 피연산자 입력을 제공하면, 멀티플렉서(305)의 출력으로서 제공될 수 있는 D 입력(201)의 입력은 레지스터(313, 314), 즉 2 디프 레지스터 경로를 통과할 수 있다. 대안적으로, 0이 AND 게이트(321)의 출력으로부터 공급되고 가산기/감산기(331)가 사용되면 A 입력(211) 또는 AC 입력(341)에 대해 3 디프 레지스터 경로, 즉 A1 레지스터(311), A2 레지스터(312) 및 A3 레지스터(314)를 통과하는 3 디프 레지스터 경로를 가질 수 있다.
도 4는 도 2의 DSP 슬라이스(200)의 이중 B 레지스터(242)의 예시적인 실시예를 보여주는 회로도이다. B 입력 신호("B 입력")(212)와 BC 입력("BCIN") 신호("BC 입력")(441)는 멀티플렉서(401)의 입력으로서 제공된다. 멀티플렉서(301-304)와 마찬가지로 이중 B 레지스터(242)의 멀티플렉서(401-404)는 동작 중에 정적이다. 즉, 이들의 출력은 FPGA의 구성 중에 확립되고 동작 중에 동적으로 재구성될 수 없다. 멀티플렉서(306)와 마찬가지로 멀티플렉서(405)는 이 실시예에서 인모드(202)의 버스의 비트 위치 4를 표시하는 인모드(202-4)에 응답하여 동적으로 동작할 수 있다. B1 레지스터(411) 및 B2 레지스터(412)는 A1 레지스터(311) 및 A2 레지스터(312)에 대응한다. 마찬가지로, 멀티플렉서(401-404)는 멀티플렉서(301-304)에 각각 대응한다. 또한, 멀티플렉서(405)는 멀티플렉서(306)에 대응한다. 멀티플렉서(404)로부터의 BC 출력("BCOUT") 신호("BC 출력")(443)(도 2에 예시적으로 도시됨)는 이 실시예에서 더 작은 비트 폭을 갖지만 AC 출력(343)에 대응한다.
마찬가지로, X 멀티플렉서("X MUX") 신호(442)는 이 실시예에서 더 작은 비트 폭을 갖지만 X 멀티플렉서 신호(342)에 대응한다. X 멀티플렉서(342, 442)는 X 멀티플렉서(252)의 입력에 대하여 도 2의 AB 신호(250)로서 일반적으로 표시한 것처럼 AB 연쇄(concatenated)된다는 것을 알아야 한다.
멀티플렉서(405)의 출력은 다른 하나의 승산기 피연산자 신호, 즉 A 승수 신호(344)에 대응하는 B 승수("B MULT") 신호(444)(도 2에 예시적으로 도시됨)이다. 이 실시예에서 B 승수 신호(444)와 A 승수 신호(344)는 상이한 비트 폭을 갖는다. 그러나 양자의 출력은 도 2의 승산기(251)에 대해 입력 피연산자로서 제공될 수 있다. 이중 B 레지스터(242)는 프리애더(204)의 이중 A 레지스터 부분과 동일하거나 유사하기 때문에 명확성을 위해 반복 설명은 생략한다.
도 2 내지 도 4를 함께 참조하여 DSP 슬라이스(200)에 대해 좀 더 설명한다. 인모드(202)는 동적 제어 버스로 간주할 수 있다. 인모드(202) 외에, 다른 레지스터 제어 신호 중에서 클럭 신호, 클럭 인에이블 신호, 세트 신호, 또는 리세트 신호가 있을 수 있다. 이 신호들은 명확성을 위해 레지스터로 입력되는 것을 도시하지 않았고 제한되는 것이 아니다.
AB 연쇄 신호(250)는 그 경로에 M 레지스터(253)를 갖지 않는다. 따라서, A와 B 사이의 승산 동작은 3개의 파이프라인 레지스터 스테이지를 갖고, AB 연쇄("A:B") 및 C의 가산과 같은 가산 동작은 2개의 레지스터 스테이지를 갖는다. 그러나, A2 레지스터(312) 및 B2 레지스터(412))를 사용함으로써, 레지스터 A2(312) 및 B2(412)는 다른 경우에 M 레지스터(253)와 관련되는 레지스터 파이프라인 스테이지를 제공하도록 사용될 수 있다. 다시 말해서, X 멀티플렉서(252)의 입력에 대한 파이프라인 스테이지의 수는 DSP 슬라이스(200) 내에서 동일하게 되도록 구성될 수 있고, 이것은 레지스터 손실, 즉 "버블"을 회피하기 위해 사용될 수 있다. 따라서, 뒤에서 자세히 설명하는 것처럼 동작 모드를 설정함으로써, 예컨대 A:B+C 동작 및 예컨대 A*B+C 동작은 3개의 클럭 사이클, 예를 들면 A:B+C 동작을 위해서 A1 레지스터(311) - A2 레지스터(312) - 도 2의 P 레지스터에서, 및 A*B+C 동작의 A를 위해서 A1 레지스터(311) - M 레지스터(253) - 도 2의 P 레지스터에서(예를 들면, B1 레지스터(411) - M 레지스터(253) - 도 2의 P 레지스터와 마찬가지임) 수행될 수 있다. 도 2의 C 레지스터는 상기 2가지 예에서의 A 및 B 보다 1 적은 레지스터를 구비하지만, 이러한 차이는 모든 동작 모드에서 예측가능하고, 따라서 C에 대한 다른 레지스터 스테이지에서의 추가를 위해 FPGA 패브릭에서 고려될 수 있다. 이것은 버블없이 다른 클럭 사이클에서 승산 동작과 가산 동작을 동적으로 교대할 수 있게 한다는 점을 이해하여야 한다.
A1 레지스터(311)와 A2 레지스터(312) 뿐만 아니라 B1 레지스터(411)와 B2 레지스터(412)는 레지스터 파일 기능을 제공하기 위해 사용될 수 있다. 인모드(202)의 동적 제어 버스 기능 때문에, 이러한 레지스터 파일은 랜덤 액세스 레지스터 파일로서 동작할 수 있다. 대안적으로, A1 레지스터(311)와 A2 레지스터(312) 뿐만 아니라 B1 레지스터(411)와 B2 레지스터(412)는 시프트 레지스터 로직("SRL")을 제공하도록 구성될 수 있다. 따라서, 랜덤 액세스 레지스터 파일과 SRL의 이중 기능은 인모드 버스(202)를 통한 동적 제어를 이용하여 DSP 슬라이스(200) 내에 제공될 수 있다. 예를 들면, 버스는 신호의 그룹 또는 신호 트레이스의 그룹 또는 이들 둘 다를 의미할 수 있다.
다른 기능은 프리애더(204)를 2:1 멀티플렉서로서 사용하는 것이다. 즉, 가산기/감산기(331)는 피연산자 중의 하나를 0으로 함으로써 자신에 대한 입력들 중에서 AD 레지스터(314)에 대한 출력을 선택한다. 다시 말해서, AND 게이트(322, 321)의 출력들 중 하나는 인모드(202-1, 202-2)에 응답하여 강제로 0으로 될 수 있다. 또한, A 입력 경로의 출력이 음(negative)이면 제로는 가산기/감산기(331)가 가산기/감산기(331)에 제공된 A 또는 AC 피연산자의 절대치를 생성할 수 있도록 가산기/감산기(331)에 대한 D 경로를 따르는 피연산자 입력으로부터 공급될 수 있다. 또한, A1 및 A2 레지스터를 이용하여 비트들을 시프트시킴으로써, 2의 보수 반전(complement inversion)이 수행될 수 있다.
따라서, 요약하자면, 인모드 202-0은 없음(none)/A1/A2 선택 신호로서 사용된다. 인모드 202-1은 A 레지스터 경로, 즉 레지스터 A1 및 A2("A 레지스터")를 따르는 출력을 0으로 하기 위해 사용될 수 있다. 다시 말해서, 출력을 0으로 하는 능력은 리세트를 이용하거나 레지스터 콘텐츠를 파괴함이 없이 A 레지스터와 D 레지스터 사이에서 다중화를 용이하게 한다. 인모드 202-1이 논리 1과 같은 때, 가산기/감산기(331)에 대한 A 경로 입력(261)은 강제로 0으로 되고, 따라서 프리애더(331)에 대한 D 경로 입력(262)은 효과적으로 출력으로 선택될 수 있다. 또한, 인모드 202-1이 논리 1과 같은 때, 멀티플렉서(305)에 대한 A 경로 입력(261)은 A 승수 신호(344)를 강제로 0으로 만들기 위해 사용될 수 있다. 그러나, A 승수 신호(344)를 강제로 0으로 만들기 위해, D 포트 설정, 즉 멀티플렉서(305)에 제어 선택 신호를 제공하기 위한 구성 메모리 셀 설정은 D 포트를 디스에이블하도록 설정된다. 즉, "if use_D port = false".
인모드 202-2는 인모드 202-1과 관련하여 위에서 설명한 라인들을 따르는 D 레지스터(313)의 출력 및 A 레지스터 선택 경로의 출력을 0으로 하기 위해 사용될 수 있다. 따라서, 가산기/감산기(331)에 대한 D 경로 입력은 논리 0으로 될 것이고, 이것은 A 경로 입력(261)과 D 경로 입력(262) 간에 다중화를 촉진하기 위해 사용될 수 있다. 또한 인모드 202-1과 인모드 202-2는 전력 보존을 위한 동적 전력 제어를 위해 사용될 수 있다. 만일 인모드 202-1이 논리 1 상태에 있으면, 가산기/감산기(331)에 대한 A 경로 입력(261)은 강제로 0으로 되고, 만일 인모드 202-2가 논리 0 상태에 있으면, 가산기/감산기(331)에 대한 D 경로 입력(262)은 강제로 0으로 된다. 만일 가산기/감산기(331)에 대한 양 입력이 논리 0이면, 가산기/감산기(331)의 동작은 그러한 조건 하에서 가산기/감산기(331) 내에서 트랜지스터 스위칭이 없기 때문에 전력을 덜 소모한다. 따라서, "동적 전력 제어"에 의해, 가산기/감산기(331) 기능이 선택되지 않은 때, 가산기/감산기(331)에 대한 양 입력은 논리 0으로 설정될 수 있다. 가산기/감산기(331)에 대한 피연산자 입력으로서 고정 논리값을 제공함으로써, 가산기/감산기(331)는 스위칭되지 않고, 이것은 전력의 동적 보존을 위해 사용될 수 있다. 다시 말해서, 인모드가 가산기/감산기(331)에 대한 피연산자 입력을 동적으로 고정하도록 동적으로 설정될 수 있기 때문에, 가산기/감산기 기능은 동적으로 선택되거나 선택 해제될 수 있고, 후자와 관련하여 동적 전력 보존이 구현될 수 있다.
인모드 202-3은 A 입력 경로(261) 상의 A 피연산자가 가산기/감산기(331)에 의해 D 입력 경로(262)의 D 피연산자에 가산되거나 그로부터 감산되게 하기 위해 사용될 수 있다. 다시, A 입력 경로(261) 상의 A 피연산자의 동적 반전은 절대치 기능으로서 사용될 수 있다. 다시 말해서, 예컨대 A1 또는 A2에 유지되어 있는 레지스터 값은 D 피연산자 입력(262)을 위에서 설명한 것처럼 강제로 0으로 함으로써 동적으로 반전될 수 있다.
인모드 202-4는 인모드 202-0이 A1/A2 레지스터 선택 신호로서 사용되는 것과 같은 방법으로 B1/B2 레지스터 선택 신호로서 사용될 수 있다. 따라서, DSP 슬라이스(200)의 기능은 캘리포니아 산호세에 소재하는 질링크사(Xilinx, Inc.)로부터 구할 수 있는 스파르탄™ FPGA DSP 48A에서 행하여진 것처럼 프리애더를 단순히 DSP에 추가함으로써 훨씬 확장될 수 있다는 것이 명백하다.
더 나아가, (A+ai)*(B+bi)=(AB-ab)+(AB+aB)i와 같은 복소수 승산 동작이 수행될 수 있다. A와 a는 레지스터에 제공되는 별도의 클럭 인에이블 신호를 이용하여 A2 레지스터(312) 및 A1 레지스터(311)에 각각 입력되는 별도의 피연산자이고 상기 피연산자 중 하나가 인모드 202-0에 응답하여 멀티플렉서(306)로부터 선택적으로 출력된다. 마찬가지로, B와 b는 레지스터에 제공되는 별도의 클럭 인에이블 신호를 이용하여 B2 레지스터(412) 및 B1 레지스터(411)에 각각 입력되는 별도의 피연산자이고 상기 피연산자 중 하나가 인모드 202-4에 응답하여 멀티플렉서(405)로부터 선택적으로 출력된다. 피연산자 A, B, a 및 b는 BRAM에 국부적으로 저장될 수 있다. 피연산자 재사용 때문에, BRAM은 매 다른 2개의 클럭 사이클의 시작(burst)에서 DSP 슬라이스(200)에 의해 액세스될 뿐이고, A1, A2, B1 및 B2 레지스터가 상기 피연산자의 실수부와 허수부를 국부적으로 저장하기 위해 사용될 수 있기 때문에 예시적인 복합 승산 동작을 위해 1회만 판독될 수 있다. 복합 승산의 예를 사용하였지만, 예컨대 (A:a)*(B:b)와 같은 순차적 승산을 수행하는 것도 마찬가지로 이해하여야 한다. 제한하는 것 없이 단지 예로서 명확성을 위해, 42 비트 * 34 비트가 (A:a)*(B:b)에 대하여 주어지면, 그 결과는 A*B+sh17(A*0b+B*00000000a + sh17(0b* 00000000a)에 의해 구해질 수 있고, 여기에서 "sh17"은 17 비트 시프트를 표시한다.
도 5는 인모드 함수표(500)의 예시적인 실시예를 보여주는 표이다. 표(500)의 최초 5개의 컬럼은 인모드 202-4 내지 202-0에 각각 대응하는 인모드 비트 4 내지 0의 가능한 논리 상태를 각각 나타낸다. 인모드 202-4는 B2/B1 레지스터 선택 신호이고, 따라서 인모드 202-4의 상태가 논리 0이면 레지스터 B2의 콘텐트가 승산기 B 포트(444) 입력으로서 제공되고, 만일 인모드 202-4가 논리 상태 1이면, 승산기 B 포트(444) 입력은 B1 레지스터(411)의 콘텐트로 된다. 따라서, 표(500)의 최초 컬럼의 논리 0과 1은 표(500)의 최종 컬럼의 B2 및 B1에 각각 대응한다.
표(500)의 6번째 컬럼은 제어 선택 신호(501)(도 3에 예시적으로 도시됨)로서 개략적으로 표시된 도 3의 멀티플렉서(305)의 제어 선택 신호를 제공하기 위해 사용되는 메모리 셀의 프로그래밍 상태를 표시한다. 따라서 제어 선택 신호(501)는 D 포트, 즉 D 입력(201)이 사용중에 있는지 여부를 표시한다. 표(500)의 최초 4행(row)에 표시된 것처럼, 거짓(false) 값은 프리애더(204))의 D 포트가 사용중에 있지 않음을 표시한다. 컬럼 501의 나머지 행들은 제어 신호(501)에 대하여 참(true) 값을 표시하고, 이것은 프리애더(204)의 D 포트가 사용중에 있음을 의미한다.
표(500)의 7번째 컬럼은 승산기 A 포트(344)에 대한 피연산자 입력을 표시한다. 예시적으로 도시된 가능한 피연산자 입력은 D 레지스터의 A1 또는 A2에 유지되어 있는 값이다. 또한, 위에서 설명한 것처럼, 논리 0이 A 승산기 출력(344)으로서 제공될 수 있다. 더 나아가, AD 레지스터(314)에 저장되어 있는 D+A2, D+A1, D-A2 또는 D-A1의 피연산자 값들을 가산함으로써 구해진 값이 A 승산기 출력(344)으로서 제공될 수 있다. A1/A2 및 B1/B2의 표시는 각각 1-디프 레지스터 및 2-디프 레지스터를 설명하기 위해 사용된다. 만일 가산기/감산기(331)에 대한 A 입력 피연산자가 게이트오프되면, 레지스터 D(313) 및 AD(314)는 함께 D 포트(201)에 대한 2-디프 등록(registration)처럼 나타난다. 따라서, D1/D2의 표시는 1-디프 등록 및 2-디프 등록을 위한 D/AD 레지스터를 각각 인용한다.
스파르탄(Spartan™) FPGA에 있어서, 프리애더는 입력 레지스터와 출력 레지스터 사이에 배치되고, 여기에서 출력 레지스터는 승산기에 공급한다. 그러나, 이 구성은 시스톨릭 필터를 구현하는데 사용할 수 없다. 이하의 설명에서, DSP 슬라이스(200)는 시스톨릭 필터를 구현하기 위해 설명된다.
프리애더(204) 및 이중 B 레지스터(242)가 추가된 DSP 슬라이스(200)는 순차적 복소수 승산, 순차적 승산 및 순차적 복소수 켤레 동작을 지원할 수 있다. 게다가, A2 및 B2 레지스터를 M 레지스터(253)에 대하여 본질적으로 가상 레지스터로 함으로써 AB 연쇄 경로를 AB 승산 경로와 균형맞추는 능력은 3 스테이지 파이프라인을 가진 승산 동작과 가산 동작 사이에서 동적으로 전환될 수 있게 한다. 더 나아가, 2개의 디프 입력 레지스터 중 어느 하나에 기록하거나 2개의 디프 입력 레지스터 중 어느 하나로부터 판독하기 위한 A1, A2, B1, B2 레지스터에 동적으로 액세스하는 능력은 위에서 설명한 것처럼 인모드(202)에 의해 촉진된다. 더욱이, 어느 한쪽 프리애더 입력 포트에 대한 입력을 0으로 하는 융통성은 다채널 필터를 촉진한다.
3 세트의 필터 계수가 예를 들면 A1 레지스터(311), A2 레지스터(312) 및 D 레지스터(313)를 이용하여 국부적으로 저장될 수 있고, 각 클럭 사이클에서 대칭 동작으로부터 비대칭 동작으로 동적으로 전환할 수 있다. 게다가, 가산 및 감산 기능이 필요없을 때 가산기/감산기(331)를 이용하는 AD 다중화 능력이 동적 동작을 위해 지원된다는 것은 명백하다. 3 세트의 필터 계수가 국부적으로 저장되면 프리애더 대칭은 사용되지 않는다. 미처리 데이터(raw data)는 A 입력 포트(211) 및/또는 A 캐스케이드 입력 포트(341) 대신에 B 입력 포트(212) 및/또는 B 캐스케이드 입력 포트(441)를 통해 인가되고, 필터 계수들은 가산기/감산기(331)를 이용하여 선택되어 다중화 기능을 제공할 수 있다. 따라서, 비대칭 필터들은 3 세트의 필터 계수와 함께 가능하다.
도 6은 종래 기술에 따른 8-탭 짝수 대칭 시스톨릭 유한 임펄스 응답("FIR") 필터(600)의 예시적인 실시예를 보여주는 블록/회로도이다. FIR 필터(600)는 동작 모드("OPMODE")로 프로그램된 DSP 블록(106)들로 구성된다. 그러므로, DSP 블록 106-1 내지 106-4는 결과적인 캐스케이드 출력, 즉 "P" 캐스케이드(603)를 제공하기 위해 캐스케이드 출력을 가진 종래 기술의 DSP를 표시한다. 지금까지 시프트 레지스터 로직("SRL")(604)은 FPGA 패브릭(602) 내의 레지스터들로 구성되었고, 따라서 성능에 대한 억제자(inhibiter)이었다. 또한, 프리애더 스테이지(605) 및 입력 레지스터 스테이지(606)는 FPGA 패브릭(602)에서 미리 구성되었다.
도 7은 DSP 슬라이스(200-1~200-4)를 가진 8-탭 짝수 대칭 시스톨릭 FIR 필터(700)의 예시적인 실시예를 보여주는 블록/회로도이다. 각각의 DSP 슬라이스(200-1~200-4)는 도 2의 DSP 슬라이스(200)일 수 있다. 도 2 내지 도 4와 함께 도 7을 참조하면서 FIR 필터(700)에 대하여 설명한다. 비록 8-탭 필터가 예시적으로 도시되어 있지만, 8 보다 더 적거나 더 많은 탭의 필터가 구현될 수 있고 그에 따라서 4보다 적거나 더 많은 DSP 슬라이스(200)가 구현될 수 있음은 명백하다. DSP 슬라이스 200-1은 0,0,0,0,1,0,1의 오피모드(OPMODE)로 설정되고 DSP 슬라이스 200-2 내지 200-4는 각각 0,0,1,0,1,0,1의 오피모드로 설정된다. 이 오피모드들은 도 6의 FIR 필터(600)용의 것과 동일하고, 이들에 대해서는 잘 알려져 있으므로 여기에서 불필요하게 구체적으로 설명하지 않는다.
비록 FIR 필터(700)가 도 6의 FIR 필터(600)와 다른 설계로 되어 있지만, 만일 FIR 필터(600)의 레지스터(606)가 프리애더(605)의 입력으로 푸시되면, 도 2의 A 입력 포트(211)와 같은 A 입력 또는 프리애더(331)에 대한 FIR 필터(700)의 필터 입력 x(n)(701)은 2개의 탭된 지연선 값과 일치하는 2개의 파이프라인 지연 스테이지를 갖는다. 그러므로, SRL(604)과 같은 레지스터 지연선의 탭오프(tapping off), 및 재조정(rebalancing)을 위한 A 포트 레지스터(606)에 대한 접속과는 대조적으로, 그러한 태핑은 FIR 필터(700)로 예시적으로 도시된 것처럼 회피될 수 있다. 프리애더(605)의 A 입력에 반영(mirroring)되는 레지스터(606)는 회피될 수 있다. 다시 말해서, 그러한 반영은 2-디프 A 레지스터 출력, 즉 A 레지스터(311, 312)가 예를 들면 반영 경로(mirrored path)를 통해 미리 제공된 것과 동일한 미처리 데이터를 제공하기 위해 사용될 수 있기 때문에 사용되지 않고, 그래서 그러한 반영 경로는 제거할 수 있다. 따라서, 프리애더(605)의 D 입력측에서 레지스터(606)에 관한 미러 레지스터는 사실상 FIR 필터(700)의 D 레지스터(313)로 교체된다. 따라서 106-1에서의 제1 레지스터는 프리애더 출력 레지스터, 즉 DSP 슬라이스 200-1의 AD 레지스터(314)이다. FIR 필터(600)의 프리애더 A 입력에서 여분의 레지스터를 제거하는 것 외에, FIR 필터(700)에서는 FIR 필터(600)와는 대조적으로 A1 및 A2 레지스터 입력 둘 다를 동시에 탭오프할 필요가 없다.
그러나, FIR 필터(600)와는 대조적으로, FIR 필터(700)에서는 입력 레지스터 스테이지(606)가 프리애더 스테이지(605)의 입력으로 이동하고, 입력 레지스터(606)와 함께 프리애더 스테이지(605)가 DSP에서 구현될 수 있으며, SRL(604)만이 FPGA 패브릭(602)에서 구현된다. SRL(604)은 예를 들면 8개의 레지스터 스테이지를 구비한 SRL 16이다. SRL(604)에 대한 입력은 필터 입력 x(n)(701)이고, SRL(604)로부터의 출력은 DSP 슬라이스(200-1~200-4)의 각 D 레지스터(313)에 병렬로, 즉 브로드캐스트로 제공된다.
필터 입력x(n)(701)은 DSP 슬라이스(200-1~200-4)의 사슬의 초기 레지스터에 또한 제공된다. FIR 필터(700)에 대한 입력은 이러한 FIR 필터(700)가 구현되는 FPGA와 관련하여 온칩 또는 오프칩으로 획득될 수 있다. 필터 입력(701)은 DSP 슬라이스(200-1)의 A1 및 A2 레지스터(311, 312)에 제공되고, 그 다음에 다른 DSP 슬라이스 각각의 A1 및 A2 레지스터에 시프트 레지스터의 형태로, 즉 순차 입력으로 제공된다. 이 실시예에 있어서, DSP 슬라이스(200-1~200-4)의 A1 레지스터(311) 및 A2 레지스터(312)는 함께 SRL(604)과 동일한 지연 또는 레지스터 스테이지의 수를 갖는다.
SRL(604)에 대한 필터 입력(701)은 DSP 슬라이스(200-1~200-4)에 브로드캐스트되기 전의 D 입력(201)이다. 이 실시예에 있어서, D 입력(201)은 각 DSP 슬라이스(200-1~200-4)에 브로드캐스트되기 때문에, 이것은 FPGA 패브릭에서 구현된다. 필터 입력(701)은 DSP 슬라이스 200-1, 즉 제1 스테이지 DSP 슬라이스에 대한 입력 A(211)로서 또한 제공된다. 그러나 DSP 슬라이스 200-2~200-4에 대한 입력에 있어서, 그러한 입력은 캐스케이드의 다음 스테이지에 대한 AC 입력(341)으로서 제공되는 AC 출력(343)이다.
4개의 계수(h0~h3)가 B 입력 포트, 즉 DSP 슬라이스(200-1~200-4)의 B 입력(212)에 각각 제공된다. 이 실시예에서 계수(h0~h3), 즉 계수(703)는 그러한 계수들이 캐스케이드되지 않은 것처럼 각 DSP 슬라이스(200-1~200-4)의 각 B 입력 포트(212)에 제공된다. 다시 말해서, BC 입력(441)과 BC 출력(443)은 이 실시예에서 사용되지 않는다. 계수(703)는 B1 레지스터(411) 또는 B2 레지스터(412)에 대한 입력일 수 있다. 제한하는 것 없이 단지 예로서 명확성을 위해, B1 레지스터(411)가 사용되는 것으로 가정한다. 그러나, B2 레지스터(412)는 B1 레지스터(411) 대신으로 사용될 수 있고 또는 B1 레지스터와 B2 레지스터의 조합이 사용될 수 있다는 것은 명백하다.
PC 출력(802)은 각 DSP 슬라이스 사이에서 PC 입력(801)과 캐스케이드된다. DSP 슬라이스 200-4의 PC 출력은 합성 필터 출력 y(n-8)(710)을 제공한다. 이중(duplicate) 탭 지연(711)은 SRL(604)에 입력되어 타이밍 조정을 제공한다.
DSP 슬라이스(200)는 모듈러 컴포넌트로서 VHDL을 이용하여 모델링될 수 있음은 명백하다. 도 8은 DSP 슬라이스(200-2)의 예시적인 실시예를 보여주는 블록/회로도이다. DSP 슬라이스(200-2)는 대칭 시스톨릭 가산-승산-가산 처리 모듈을 구현하기 위해 이 실시예에 대하여 위에서 설명한 것처럼 0,0,1,0,1,0,1의 오피모드를 가질 수 있다.
다시, AC 입력(341)은 A1 및 A2 레지스터(311, 312)에 순차적으로 제공된다. 각 D 입력(201)은 D 레지스터(313)에 제공되고, 이 레지스터들의 출력은 가산 모드에서 가산기/감산기(331)에 제공된다.
다시, 레지스터(312)의 출력은 하류 DSP 슬라이스(200-3)에 대한 AC 출력(343), 즉 하류 DSP 슬라이스(200-3)의 AC 입력(341)로서 순차적으로 제공된다. 마찬가지로, AC 입력(341)은 상류 DSP 슬라이스(200-1)의 AC 출력(343)으로부터 얻어진다.
각 B 입력(212)은 B1 레지스터(411)와 같은 B 레지스터에 대한 계수를 수신한다. 가산기/감산기(331)의 출력은 AD 레지스터(314)에 제공되고 레지스터(411, 314)의 출력은 승산기(251)에 제공된다.
승산기(251)의 출력은 M 레지스터(253)에 제공되고, M 레지스터(253)의 출력은 종래 기술에서 행하여진 것처럼, 그래서 명확성을 위해 불필요하게 구체적으로 설명하지 않은 가산기 및 후속하는 출력 레지스터 스테이지에 제공된다. 더욱이 종래 기술에서 행하여져서 명확성을 위해 불필요하게 구체적으로 설명하지는 않지만, 상류 DSP 슬라이스(200-1)의 PC 출력(802)으로부터 획득될 수 있는 PC 입력(801)은 상기 가산기에 입력되어 레지스터(253)의 출력과 합산되고, 그 가산 결과는 하류 DSP 슬라이스(200-3)에 대한 PC 출력(802)을 제공하도록 출력 레지스터에 제공될 수 있다.
도 9는 9-탭 홀수 대칭 시스톨릭 FIR 필터(900)의 예시적인 실시예를 보여주는 블록/회로도이다. FIR 필터(900)는 도 7의 FIR 필터(700)와 유사하기 때문에, 명확성을 위해 상이한 부분에 대해서만 설명한다. SRL(904)은 위에서 설명한 것처럼 D 입력(201)을 브로드캐스팅하기 위한 9 디프 시프트 레지스터이다. 추가의 DSP 슬라이스, 즉 DSP 슬라이스 200-5는 출력 y(n-9)(910)를 생성하기 위한 최종 스테이지로서 추가된다. 또한, 계수(903)의 추가 계수(h4)가 DSP 슬라이스 200-5의 B 레지스터(411)의 입력으로서 제공된다. DSP 슬라이스 200-5는 DSP 슬라이스 200-2 내지 200-4와 동일한 오피모드를 갖는다.
비록 D 입력(201)이 DSP 슬라이스 200-5의 레지스터(313)로 시프트될 수 있지만, DSP 슬라이스 200-5는 D 포트의 사용을 디스에이블하도록 구성되거나 또는 0이 DSP 슬라이스 200-5의 가산 모드에 있는 가산기/감산기(331)에 D 입력 경로(262)를 통해 입력된다. 따라서, 동적 구성을 사용해서, FIR 필터(900)와 같은 FIR 필터의 최종 스테이지인 DSP 슬라이스 200-5와 같은 홀수 슬라이스는 홀수의 탭 필터로서 동작하도록 동적으로 변경될 수 있음은 명백하다. 마찬가지로, 레지스터(311, 312)의 콘텐츠가 DSP 슬라이스 200-5의 가산기/감산기(331)에서 나타나지 않도록 A 입력 경로(261)가 동적으로 변경될 수 있지만, 오히려 논리 0이 가산기/감산기(331)의 양 입력 포트에 제공된다.
다시 말해서, 인모드 202-1과 202-2를 적절히 설정함으로써, 가산기/감산기(331)에 대한 양 입력이 0으로 될 수 있다. 또한, 짝수의 필터 탭에 있어서, h4(903)와 같은 홀수 계수가 없을 수 있고, 따라서 임의의 비사용 탭에 대한 계수 입력은 논리 1 또는 논리 0으로 될 수 있다. 따라서, 레지스터(253)로부터의 출력은 여분의 파이프라인 지연을 가진 사실상 도 7의 y(n-8)(710)인 출력을 제공하도록 최종 스테이지 가산기에 제공되는 논리 0일 수 있다. 결과적인 필터는 도 9의 y(n-9)(910)의 출력 대기시간(latency)을 가진 8-탭 필터이다. 따라서, 위에서 설명한 것처럼 인모드 202-1 및 202-2를 사용하고 홀수의 DSP 슬라이스를 가짐으로써, DSP 필터가 동적으로 조정되어 홀수 또는 짝수 대칭 시스톨릭 FIR 필터링을 제공한다는 것을 알 수 있다. SRL 16은 상이한 필터 길이를 수용하도록 동적으로 조정될 수 있다. 그래서, 9-탭 필터를 출력이 y(n-9)(910)인 8-탭 필터로 변환하는 선행 예에 있어서, SRL 16은 z-8이다.
또한, 이 실시예에서는 동작 또는 FIR 필터로의 데이터 시프트에 있어서 시차(time lag)가 있고, 따라서 동적 조정뿐만 아니라, 하나의 순서의 FIR 동작으로부터 다른 순서의 FIR 동작으로의 데이터가 새도우인(shadow in)될 수 있다. 다시 말해서, 홀수 FIR 동작과 같은 하나의 FIR 동작의 완료를 기다리지 않고 후속 FIR 동작을 위한 데이터 및 파라미터가 이전 FIR 동작 순서를 완료하기 위해 FIR 필터가 아직 동작하는 동안 FIR 필터에 섀도우인 될 수 있다. 홀수 FIR 순서의 동작으로부터 짝수 FIR 순서의 동작으로 가는 경우에도 또한 마찬가지이다.
도 10은 도 9의 FIR 필터(900)의 다른 예인 9-탭 홀수 대칭 시스톨릭 FIR 필터(1000)의 예시적인 실시예를 보여주는 블록/회로도이다. 이 실시예에서, 홀수 동작에 대하여, 가산기/감산기(331)는 사실상 D 입력 경로(262)로부터의 제로 입력을 갖지 않는다. 따라서, 최종 DSP 슬라이스, 이 실시예에서 DSP 슬라이스 200-5는 자신에게 소정의 수를 가산하여 그 수를 사실성 2배로 한다. 따라서, 계수(1003)는 0.5h4이다. 이것은 사실상 2x(n)이 DSP 슬라이스(200-5)에서 0.5h4로 곱해져서 그 슬라이스의 가산기/감산기(331)에 의한 가산 효과를 부정한다는 것을 의미한다. 이 실시예에서 계수(1003)에 어떤 정밀성 손실이 있을 수 있지만, 이 실시예는 인모드 202-2를 통해 D 입력(201)을 동적으로 조정할 필요없이 DSP 슬라이스의 타일링을 가능하게 한다.
도 9와 도 10의 실시예 중 어느 하나에서, 최종 DSP 슬라이스는 홀수 대칭 시스톨릭 FIR 필터링을 위해 프리애더 동작을 효과적으로 우회한다. 최종 탭은 다른 처리를 이용하거나 또는 피연산자 입력으로서 논리 0을 강제한다.
따라서, 이 실시예에서, 다중 스테이지 FIR 필터가 구현될 수 있다. 이러한 FIR 필터는 응용에 따라서 최장의 가능한 FIR 사용을 위해 구현될 수 있다. 이러한 FIR 필터는 예를 들면 시분할 다중화 응용에서 사용될 수 있고, 여기에서 다른 길이의 FIR 필터는 프로그램가능 로직의 재구성없이 동적으로 설정된다. 다시 말해서, D 입력(201)을 브로드캐스팅하는 시프트 레지스터는 사용자 애플리케이션의 최장 FIR 필터용으로 구성될 수 있지만, 필터의 탭의 수를 맞추기 위해 SRL 지연이 동적으로 수정된다.
비록 홀수 FIR 필터의 최종 DSP 슬라이스만을 인모드를 이용한 동적 설정에 대하여 설명하였지만, FIR의 끝에서 임의 수의 DSP 슬라이스가 마찬가지로 동적으로 설정될 수 있다는 것은 명백하다. 따라서, 위에서 설명한 9-탭 FIR 필터에 있어서, 그러한 FIR 필터는 9개의 탭에서 하나의 탭으로 동적으로 조정될 수 있고, 또는 시프트 레지스터를 구현하기 위해 사용되는 프로그램가능 로직의 재구성없이 우회 모드에서 사실상 탭이 없을 수도 있다. 더 일반적으로, 필터 입력 시리즈 x(n)은 DSP 사슬의 입력에 결합되어 필터 출력 시리즈 y(n-p)를 제공하는 FIR 필터를 형성할 수 있고, 여기에서 p는 유효 탭 수에 관한 정수이고 동적으로 조정가능하다.
비록 일반적으로 고정 계수를 설명하였지만, 이러한 계수는 응용에 따라서 바뀔 수 있다는 것은 명백하다. 다시, 2-디프 레지스터 버퍼링이 사용되기 때문에, 하나의 FIR 깊이로부터 다음 FIR 깊이로의 정보의 섀도우가 사용될 수 있고, 여기에서 이전(transfer)은 각 스테이지에 대하여 스태거(stagger)된다.
도 11은 FIR 사용 흐름(1100)의 예시적인 실시예를 보여주는 흐름도이다. 단계 1101에서, FIR 필터는 사용되는 모든 응용 중에서 가장 긴 수의 스테이지를 갖고 구현된다. 단계 1102에서, 현재 응용에 대하여 사용할 스테이지의 수가 획득된다. 단계 1103에서, FIR 필터는 만일 정확한 길이가 아직 없으면 단계 1102에서 구해진 사용 대상 스테이지의 수를 수용하도록 동적으로 조정된다. 단계 1104에서, 다른 FIR 시퀀스가 수행되어야 하는지를 결정한다. 만일 수행할 다른 FIR 시퀀스가 없으면 흐름(1100))은 단계 1199에서 종료된다. 만일 수행할 다른 FIR 시퀀스가 있다고 단계 1104에서 결정되면, 단계 1105에서 그러한 다른 FIR 시퀀스에 대한 입력이 획득되고 섀도우되며, 단계 1102에서 사용할 스테이지의 수가 다시 결정되고 단계 1103에서 FIR 필터를 동적으로 조정(만일 필요하다면)한다.
따라서, 이러한 필터는 비록 사슬 내에 홀수의 DSP 블록이 있다 하더라도 필터를 짝수의 탭을 갖는 것으로서 동작시키기 위하여 마지막의 하나 이상의 DSP 블록을 동적으로 제로화하는 게이팅 로직에 의해 게이트될 수 있다는 것은 명백하다. 더욱이, 이러한 게이팅 로직은 비록 사슬 내에 짝수의 DSP 블록이 있다 하더라도 필터를 홀수의 탭을 갖는 것으로서 동작시키기 위하여 마지막의 하나 이상의 DSP 블록을 동적으로 제로화하기 위해 사용될 수 있다.
이제 도 12를 참조하면, 본 발명의 실시예에 따른 대칭 이조 콘볼루션 유한 임펄스 응답 필터를 구현하는 회로의 블록도가 도시되어 있다. 도 12의 실시예는 DSP 블록의 구성을 보여주는 것이고, 이 DSP 블록은 DSP 블록의 프리애더를 이용하여 대칭 이조 콘볼루션 FIR 필터를 인에이블하도록 구성되고 단일 DSP 블록에서 공통 계수와 곱해지는 공통 계수를 가진 탭에 필요한 지연을 제공하는 레지스터를 구비한 DSP 슬라이스(200)를 구비할 수 있다. 레지스터를 포함한 지연의 선택은 구현되는 필터의 함수에 의존할 수 있고, 여기에서 도 12~14의 DSP 블록에서의 적당한 지연은 위에서 설명한 도 3의 회로 또는 어떤 다른 적당한 회로를 이용하여 구현될 수 있다. DSP 블록들이 동일한 요소를 포함하는 것이 바람직하지만, DSP 블록들은 다르게 구성될 수도 있다. 예로서, 도 1과 관련하여 위에서 설명한 프로그램가능 상호접속과 같은 프로그램가능 상호접속은 도시된 것처럼 지연을 접속하기 위해 사용될 수 있고, 또는 구성 비트를 이용하여 도 3을 참조하여 설명한 것처럼 멀티플렉서를 선택할 수 있다.
도 12~14의 실시예는 홀수의 탭을 가진 대칭 이조 콘볼루션 FIR 필터와 관련이 있기 때문에, DSP 스테이지 중의 하나는 단일 탭만을 수신할 것이고, 다른 DSP 스테이지는 공통 계수를 가진 복수의 탭을 수신할 것이다. 도 12~14에 구성된 것처럼, DSP 블록의 배열 및 구성은 인수분해 형태로 적으면 k0{x(n-4)+x(n-8)}+k1{x(n-5)+x(n-7)}+k2*x(n-6)으로 되는 방정식 y(n-4)=k0*x(n-4)+k1*x(n-5)+k2*x(n-6) +k1*x(n-7)+k0*x(n-8)에 따라서 또는 도 12 및 도 13에 도시된 것처럼 승산기에 대한 입력의 시간 프레임으로 표시할 때 인수분해 형태로 y(n-2)=k0{x(n-2)+x(n-6)}+k1{x(n-3)+x(n-5)}+k2*x(n-4)가 되는 방정식에 따라서 대칭 이조 콘볼루션 FIR 필터의 구현을 가능하게 한다. 각 필터 탭의 미처리 데이터 색인은 y(n-4) 결과의 내적 연산(inner product computation)을 위해 도시하였다. 따라서, 승산기(1210)에 대한 최우측 탭 x(n-2) 입력만이 x(n)과 정렬하고, 다른 필터 탭들은 시간에 따라 다른 스냅샷으로 미처리 데이터를 나타낸다. z-1이 1 지연을 나타내고 z-2이 2 지연을 표시하는 지연은 도 3에서 도시한 A 캐스케이드 파이프라인 지연(311, 312)에 따라서 구현될 수 있다. 예를 들면, 가산기(1206)는 도 6의 가산기/감산기(331)에 의해 구현될 수 있고, 가산기/감산기(331)에 대한 입력 신호의 선택된 지연 값은 위에서 설명한 것처럼 도 3의 멀티플렉서에 대한 선택 입력에 기초를 둔다.
구성 1200을 보인 도 12의 실시예에서, 제1 스테이지(200-1)는 제1 레지스터(1202)에 결합된 x(n) 신호를 포함한 입력(1201)을 수신한다. 도 13을 참조하여 뒤에서 자세히 설명하는 것처럼 제2 레지스터(1204)가 사용될 수 있다. DSP 스테이지 200-1의 가산기(1206)가 레지스터(1202)의 출력 및 제로를 수신하도록 결합된 것으로 도시되어 있지만, 가산기(1206)는 DSP 스테이지 200-2 및 200-3뿐만 아니라 도 13의 구성(1300)에서 DSP 스테이지 200-1에 도시한 것처럼 레지스터(1202, 1204)의 출력을 수신하도록 결합될 수 있다. 가산기(1206)는 반전 부호를 가진 계수를 처리하도록 감산기로서 구현될 수 있다는 것을 알아야 한다. 레지스터(1208)는 가산기(1206)의 출력에 결합되고 그 출력은 승산기(1210)에 결합된다. 승산기(1210)는 레지스터(1212)로부터의 계수를 포함한 인수를 또한 수신한다. 승산기(1210)의 출력에 있는 레지스터(1214)는 가산기(1216)에 결합되고, 가산기(1216)의 출력은 레지스터(1218)에 저장된다. 비록 제1 스테이지(200-1)에서 가산기(1216)의 입력이 0이지만, 가산기(1216)는 DSP 블록 200-2 및 200-3에서 도시한 것처럼 이전 스테이지의 출력을 수신할 수 있다. 신호 y(n-4)를 포함한 출력(1220)은 DSP 스테이지 200-3의 레지스터(1218)에서 발생된다.
제1 스테이지는 홀수 탭들 중 중간 탭을 포함하고, 따라서 단일 탭만을 가산기(1206)에 결합한다는 것에 주목하여야 한다. 그러나, 제2 스테이지 및 제3 스테이지는 각각 공통 계수를 가진 2개의 탭을 수신한다. 도 12의 실시예에 따르면, 제2 DSP 스테이지(200-2)는 (x(n-5)+x(n-3))을 공통 계수 k1을 수신하는 승산기(1210)의 하나의 입력에 결합하고, 제3 DSP 스테이지(200-3)는 (x(n-6)+x(n-2))을 공통 계수 k0를 수신하는 승산기(1210)의 하나의 입력에 결합한다. 가산기(1206) 또는 승산기(1210)와 관련된 지연의 수는 가산기(1206) 또는 승산기(1210)에서 정확한 입력이 수신되는 것을 보장하도록 선택된다. 예를 들면, 지연의 정확한 수는 도 3의 멀티플렉서에 적당한 멀티플렉서 선택 신호를 제공함으로써 선택될 수 있다. 도 13에 도시한 바와 같이, DSP 스테이지 200-1은 레지스터(1204)를 구현하도록 구성될 수 있고, 여기에서 2x(n-4)는 승산기(1210)의 하나의 입력에 제공되고, k2/2는 다른 입력에 제공된다. 비록 도 12-13의 실시예가 대칭 이조 콘볼루션 FIR 필터의 일 예를 보여주고 있지만, 다른 방정식에 의해 표시되는 필터들도 구현될 수 있다는 것을 이해하여야 한다. 또한, 도 12-13의 실시예는 입력이 공통 계수를 갖는 임의의 함수를 구현하도록 사용될 수 있고, 공통 계수를 가진 임의 수의 인수들을 구현할 수 있다.
본 발명의 하나 이상의 회로는 초기의 탭 수가 짝수이든 홀수이든 상관없이 기능한다는 점에 주목하여야 한다. 도 14의 구성(1400)으로 도시한 바와 같이, 홀수의 탭을 가진 필터 기능이 구현된다. 특히, 대칭 이조 콘볼루션 유한 임펄스 응답 필터를 구현하는 회로의 블록도는 인수분해 형태로 적으면 y(n-4)=k0{x(n-4)+x(n-9)}+k1{x(n-5)+x(n-8)}+k2{x(n-6)+x(n-7)}으로 되는 방정식 y(n-4)=k0*x(n-4)+k1*x(n-5)+k2*x(n-6)+k2*x(n-7)+k1*x(n-8)+k0*x(n-9)에 따라서 또는 도 14에 도시된 것처럼 승산기에 대한 입력의 시간 프레임으로 표시할 때 인수분해 형태로 y(n-2)=k0{x(n-2)+x(n-7)}+k1{x(n-3)+x(n-6)}+k2{x(n-4)+x(n-5)}가 되는 방정식에 따라서 3 DSP 블록에서 구현되는 6개의 탭을 보여준다. 도 14에서 알 수 있는 바와 같이, 각 스테이지는 공통 계수를 갖는 2개의 입력을 수신하고, 여기에서 스테이지 200-1의 DSP는 계수 k2와 관련된 탭을 수신하고, 스테이지 200-2의 DSP는 계수 k1과 관련된 탭을 수신하며, 스테이지 200-3의 DSP는 계수 k0와 관련된 탭을 수신한다.
소정의 클럭 사이클에서 프리애더에의 데이터 샘플의 도달이 ACOUT/ACIN 전파 경로(propagation path)를 통하여 제어되는 프리애더를 사용함으로써, 더 적은 소자 리소스 및 더 적은 전력을 소모하는 필터가 구현될 수 있다. 즉, 5개의 DSP 블록에서 도 12-13의 필터를 구현하거나 6개의 DSP 블록에서 도 14의 필터를 구현하기 보다는 각각의 필터가 3개의 DSP 블록에서 구현될 수 있다. 또한, 도 15를 참조하여 뒤에서 자세히 설명하는 바와 같이, 소정의 방법으로 필터에 대한 일반적인 비최적화 고수준 묘사를 최적화 형태로 변환할 수 있다. 이 방법은 그러한 필터를 최적의 방법으로 수동으로 묘사하려고 하는 모든 사람이 사용할 수 있을 뿐만 아니라 임의의 합성 툴의 새로운 진보된 추론 능력으로서 자동화될 수 있다. 즉, 예를 들면 도 12-14에서 구현되는 것처럼 DSP 블록의 묘사를 제공하는 사용자보다는 합성 툴이 대칭 계수들을 자동으로 검출하고 가산기(1206)와 같은 프리애더의 이익을 취하도록 DSP 블록을 구성하며, 이것에 의해 필터를 구현하는데 필요한 DSP 블록의 수를 감소시킬 수 있다. 따라서, 본 발명의 하나 이상의 회로 및 방법은 계수들의 대칭을 레버리지(leverage)하여 대칭 결합을 수행하기 위해 DSP의 프리애더를 사용함으로써 캐스케이드 DSP 블록의 수를 최소화한다.
본 발명의 하나 이상의 회로 및 방법은 시스톨릭 필터 구현과 같은 다른 구현예에 비하여 회로 성능의 면에서 어떠한 페널티도 야기하지 않음에 주목하여야 한다. DSP 블록 사슬은 DSP 블록들 간에 P캐스케이드(PCOUT/PCIN) 및 A캐스케이드(ACOUT/ACIN)를 포함하는 고속 접속을 사용함으로써 양쪽의 경우에 최적화된다. 또한, 본 발명의 하나 이상의 회로 및 방법은 사슬 내의 각 DSP 블록이 레지스터(1202, 1204, 1208, 1214, 1218)를 포함한 블록들의 가용 파이프라인 스테이지의 사용을 통하여 최적의 성능을 위해 충분히 파이프라인되는 것을 보장한다는 점에 주목하여야 한다. 또한, DSP 스테이지의 수와 동일한 팬아웃(fanout)이 양쪽의 경우에 암시된다. 시스톨릭 구현의 경우에, 이것은 시프트 레지스터의 출력에서 발견되고, 위에서 설명한 이조 콘볼루션 구현의 경우 이것은 입력 데이터 노드 자체에서 발견된다.
마지막으로, 변형 원리는 일반적이고, 부호 -k2 -k1 -k0 k0 k1 k2를 가진 계수와 같이 대칭 계수들 간에 부호 반전이 있을 때 또는 부호 반전이 없을 때 작용한다는 것에 주목하여야 한다. 비록 오늘날 공지된 또는 공통 필터 응용을 반드시 다룰 필요는 없지만, 본 발명의 하나 이상의 회로 및 방법은 -k2 k1 k0 k0 k1 k2의 부호를 갖는 계수들처럼 일부 계수들이 부호 반전되고 다른 계수들은 부호 반전되지 않은 혼합 상황에서 적용될 수 있다.
이제, 도 15를 참조하면, 본 발명의 실시예에 따른 집적 회로에서 필터를 구현하는 방법을 보여주는 흐름도가 도시되어 있다. 도 15의 방법은 위에서 설명한 도 1~14에 도시된 임의의 회로 또는 어떤 다른 적당한 회로에서 구현될 수 있다. 회로의 고준위 설계는 단계 1502에서 수신된다. 예를 들면, 고준위 설계는 HDL 묘사일 수도 있고 또는 필터를 가진 회로의 어떤 다른 고준위 언어 묘사일 수도 있다. 위에서 설명한 것처럼, 필터의 묘사는 계수 및 관련 탭에 기초하는 필터의 묘사만큼 간단한 것일 수 있다. 고준위 설계의 필터는 단계 1504에서 식별된다. 필터의 계수는 단계 1506에서 분석된다. 단계 1508에서, 필터는 공통 계수를 수용하도록 처리 블록의 구성을 이용하여 구성되고, 여기에서 단일 처리 블록은 공통 계수와 관련된 탭들을 수신하도록 결합된다. 처리 블록의 구성은 예를 들면 도 12~14를 참조하여 도시하고 설명한 것처럼 구현될 수 있다. 단계 1510에서, 처리 블록의 프리애더의 입력에 대한 필요한 지연이 확립된다. 프리애더의 기능은 필터를 나타내는 방정식에서 계수의 부호에 따라 단계 1512에서 가산 또는 감산하도록 선택된다. 프리애더의 출력은 단계 1514에서 승산기의 제1 입력에 제공된다. 공통 계수는 단계 1516에서 단일 처리 블록의 승산기에 대한 제2 입력으로서 제공된다. 마지막으로, 필터는 단계 1518에서 집적 회로의 회로 요소들을 이용하는 구성에 따라서 구현된다.
실시예에 따르면, 컴퓨터 프로그램 코드는 도 16을 참조하여 뒤에서 더 자세히 설명되는 제어 회로(1602)와 같은 제어 회로에서 구현될 수 있다. 컴퓨터 프로그램 코드는 회로 설계를 배치 구성으로 변환하는 컴퓨터 판독가능 프로그램 코드가 수록된 컴퓨터 판독가능 매체를 포함할 수 있고, 여기에서 컴퓨터 판독가능 매체는 고준위 설계에서 필터를 식별하는 컴퓨터 판독가능 프로그램 코드; 필터의 계수를 식별하는 컴퓨터 판독가능 프로그램 코드; 및 공통 계수를 수용하도록 구성된 회로의 처리 블록을 이용하여 필터를 구성하는 컴퓨터 판독가능 프로그램 코드를 포함하며, 상기 처리 블록은 공통 계수와 관련된 탭들을 수신하도록 결합된다.
공통 계수를 수용하도록 구성된 처리 블록을 이용하여 필터를 구성하는 컴퓨터 판독가능 프로그램 코드는 대칭 이조 콘볼루션 필터로서 필터를 구성하는 컴퓨터 판독가능 프로그램 코드를 포함할 수 있다. 필터의 계수를 분석하는 컴퓨터 판독가능 프로그램 코드는 필터의 대칭 계수를 식별하는 컴퓨터 판독가능 프로그램 코드를 포함할 수 있다. 컴퓨터 프로그램 제품은 또한 처리 블록의 승산기에 대한 제1 입력으로서 공통 계수를 제공하는 컴퓨터 판독가능 프로그램 코드를 포함할 수 있다. 컴퓨터 프로그램 제품은 승산기에 대한 제2 입력으로서 공통 계수와 관련된 탭들의 합 또는 차를 제공하는 컴퓨터 판독가능 프로그램 코드를 또한 포함할 수 있다. 승산기에 대한 제2 입력으로서 공통 계수와 관련된 탭들의 합 또는 차를 제공하는 컴퓨터 판독가능 프로그램 코드는 DSP 블록의 프리애더 회로를 이용하여 합을 발생하는 컴퓨터 판독가능 프로그램 코드를 포함할 수 있다. 컴퓨터 프로그램 제품은 집적 회로의 회로 요소들을 이용하여 필터를 구현하는 컴퓨터 판독가능 프로그램 코드를 또한 포함할 수 있다. 컴퓨터 프로그램 제품은 다른 특징을 가질 수 있고 또는 집적 회로에서 회로를 구현하는 더 큰 프로그램의 일부일 수 있다.
도 16은 본 발명의 실시예에 따라서 프로그램가능 리소스를 가진 소자를 구현하기 위한 시스템(1600)의 블록도를 도시한 것이다. 특히, 제어 회로(1602)는 메모리(1604)로부터 입력 데이터를 수신하여 구성 비트스트림을 발생하도록 결합되고, 구성 비트스트림은 메모리(1606)에 저장된다. 뒤에서 더 자세히 설명하는 것처럼, 입력 데이터는 VHDL과 같은 하드웨어 기술 언어(HDL)로 규정된 회로 설계와 같이 고준위 설계로서 묘사되는 회로 설계를 포함할 수 있다. 제어 회로는 메모리(1606)에 저장되는 구성 비트스트림을 발생하는 컴퓨터 구동 소프트웨어를 포함할 수 있다. 구성 비트스트림은 소자에서 구현되는 회로 설계의 DSP 회로의 컴포넌트와 같은 컴포넌트의 배치와 관련된 정보를 제공하는 배치 구성을 포함한다. 메모리(1606)는 프로그램가능 리소스를 가진 집적 회로 소자(1608)에 로드하기 위해 구성 비트스트림을 저장하는 비휘발성 메모리를 포함한다. 프로그램가능 리소스는 뒤에서 설명하는 프로그램가능 로직일 수도 있고, 또는 집적 회로의 다른 프로그램가능 요소일 수도 있다. 본 발명의 하나 이상의 방법이 임의 유형의 집적 회로에서 DSP 회로의 배치를 위해 적용될 수 있지만, 이 방법은 프로그램가능 로직을 가진 소자에 대한 특수한 적용을 찾아내고, 프로그램가능 로직을 가진 소자를 참조하여 뒤에서 자세히 설명된다. 뒤에서 더 자세히 설명하는 것처럼, 제어 회로(102)는 DSP 회로의 최적화 배치를 가진 구성 비트스트림을 발생한다.
프로그램가능 리소스를 가진 소자의 설계를 위한 소프트웨어 흐름은 당업계에서 잘 알려져 있는 바와 같이, 합성, 패킹, 배치 및 라우팅을 포함한다. 합성은 고준위 설계의 회로 설계를 프로그램가능 로직을 가진 소자에 존재하는 요소들의 구성으로 변환하는 단계를 포함한다. 예를 들면, 제어 회로(1602)에 의해 동작되는 합성 툴은 뒤에서 더 자세히 설명하는 바와 같이 구성가능 논리 블록(CLB) 또는 DSP 블록에서 특정 기능을 구현하는 회로 설계 부분을 구현할 수 있다. 본 발명의 하나 이상의 방법을 구현하는 합성 툴의 예로는 캘리포니아 산호세에 소재하는 질링크사로부터 구할 수 있는 ISE™ 툴이 있고, 여기에서 본 발명의 하나 이상의 방법을 구현하는 합성 툴의 출력은 DSP 블록의 최적화 구성을 가진 구성 비트스트림을 포함한다. 패킹은 회로 설계 부분을 구성가능 논리 블록과 같은 소자의 규정된 블록으로 그룹화하는 단계를 포함한다. 뒤에서 더 자세히 설명하는 바와 같이, DSP 회로를 DSP 블록으로 패킹하는 단계는 본 발명의 각종 방법에 따라서 효과적으로 구현될 수 있다. 배치는 패킹 단계 중에 규정된 소자의 블록들의 위치를 결정하는 단계를 포함하고, 여기에서 설계의 블록들은 소자의 위치(site)와 관련된 2차원 그리드 상에 배치된다. 배치는 컴퓨터에서 동작하는 배치 소프트웨어, 또는 소자의 회로 설계를 구현하기 위해 컴퓨터에서 동작하는 더 큰 소프트웨어 패키지의 일부분을 포함할 수 있는 플레이서(placer)에 의해 수행된다. 마지막으로, 라우팅은 프로그램가능 로직을 구비한 소자에서 프로그램가능 상호접속과 같은 상호접속 요소들의 경로를 선택하는 단계를 포함한다.
본 발명의 하나 이상의 회로 및 방법은 DSP 블록 외부의 임의의 로직의 필요성을 제거하면서 프리애더 능력을 최적으로 사용하는 대칭 이조 콘볼루션 필터를 구현할 수 있다. 그 결과, 리소스 필요조건 및 전력 소산이 대칭 시스톨릭 FIR 필터와 같은 다른 필터 구현, 또는 대칭 이조 콘볼루션 필터를 구현하는 다른 회로에 비하여 감소된다. 또한, 뒤에서 설명하는 회로 및 방법은 합성 툴이 필터의 일반적 고준위 설계 묘사를 취하고 필터 설계를 추론하는 향상된 능력을 통하여 자동으로 미세 조정 및 최적화 작업을 수행하게 하는 방법론을 도입함으로써 설계자가 그들의 회로에서 사용되는 필터의 묘사를 수동으로 미세 조정하는 필요성을 해결한다.
본 발명의 하나 이상의 회로 및 방법은 필요로 하는 DSP 스테이지를 최소화할 뿐만 아니라 DSP 블록 외부의 임의의 로직의 필요성을 제거하는 대칭 이조 콘볼루션 필터 구현을 가능하게 한다. 그러므로, 이 회로 및 방법은 소자의 활용 및 정적 및 동적 전력 소산을 더욱 감소시킨다. DSP 블록의 특성에 대한 깊은 지식이 부족하거나 특수 소자 또는 소자 제조자에게 자신을 연관시키지 않는 휴대용 솔루션을 찾고 있는 설계자를 위하여, 합성 툴이 HDL 코드와 같은 어떤 일반적으로 묘사된 필터 코드를 취하여 최적화 구현으로 변환을 수행하는 능력은 유리한 것이다. 그러므로, 합성 툴에서 자동화될 수 있는 추론 및 최적화 방법론이 묘사된다. 뒤에서 더 자세히 설명하는 바와 같이, 이 방법론은 그러한 인에이블된 툴을 레버리지하는 설계자가 대칭 이조 콘볼루션 필터를 일반적인 방법으로 묘사할 수 있게 한다. 예를 들면, 설계자는 합성 툴에 의해 발생된 최적의 구현을 달성하기 위해 곱의 합 및 정해진 필터의 각 탭에 적용하는 계수들의 표를 단순히 묘사할 수 있다.
이제 도 17을 참조하면, 본 발명의 실시예에 따른 프로그램가능 로직을 구비한 소자의 블록도가 도시되어 있다. 소자(1702)는 프로그램가능 로직(1704)을 구비하고, 프로그램가능 로직은 CLB 회로(1706), DSP 회로(1707) 및 휘발성 메모리(1708)를 구비할 수 있으며, 비휘발성 메모리(1710) 및/또는 휘발성 메모리(1712)와 같은 다른 회로에 결합될 수 있다. 비휘발성 메모리(1710)는 소자의 I/O 포트(1713)에 결합되어서 제어 회로(1714)가 I/O 포트(1713)로부터의 구성 비트스트림을 소자의 비휘발성 메모리(1710)에 로드하게 할 수 있다.
구성 비트스트림은 소자(1702)의 비휘발성 메모리(1710)에 로드되고, 그 다음에 휘발성 메모리(1708) 및 휘발성 메모리(1712)에 로드될 수 있다. 대안적으로, 구성 비트스트림은 제어 회로(1714) 또는 구성 제어기(1718)에 의해 휘발성 메모리(1708) 및 휘발성 메모리(1712)에 직접 로드될 수 있다. 휘발성 메모리(1708)는 구성가능 논리 블록과 관련될 수 있고 휘발성 메모리(1712)는 예를 들면 랜덤 액세스 메모리(BRAM)의 블록 또는 구성 메모리 셀에 관련될 수 있다. 뒤에서 자세히 설명하는 것처럼, 구성 비트스트림은 프로그램가능 로직(1704)의 DSP 회로(1707)를 구현하도록 발생될 것이다.
이제 도 18을 참조하면, 본 발명의 실시예에 따라서 도 1의 소자의 구성가능 논리 요소의 블록도가 도시되어 있다. 특히, 도 18은 도 1의 구성 논리 블록(102)의 구성가능 논리 요소를 간단한 형태로 도시한 것이다. 도 18의 실시예에 있어서, 슬라이스 M(1801)은 4개의 룩업 테이블(LUTM)(1801A-1801D)을 포함하고, 각 룩업 테이블은 6개의 LUT 데이터 입력 단자(A1~A6, B1~B6, C1~C6, D1~D6)에 의해 구동되며 2개의 LUT 출력 신호(O5, O6)를 제공한다. LUT(1801A~1801D)로부터의 O6 출력 단자는 슬라이스 출력 단자(A~D)를 각각 구동한다. LUT 데이터 입력 신호는 프로그램가능 상호접속 요소(1811)에 의해 구현될 수 있는 입력 멀티플렉서를 통하여 FPGA 상호접속 구조에 의해 공급되고, LUT 출력 신호는 상호접속 구조에 의해 또한 공급된다. 슬라이스 M은 또한 출력 단자(AMUX-DMUX)를 구동하는 출력 선택 멀티플렉서(1811A~1811D); 메모리 요소(1802A~1802D)의 데이터 입력 단자를 구동하는 멀티플렉서(1812A~1812D); 결합 멀티플렉서(1816, 1818, 1819); 바운스 멀티플렉서 회로(1822~1823); 인버터(1805) 및 멀티플렉서(1806)에 의해 표시되는 회로(이들은 함께 입력 클럭 경로에서 선택적 반전을 제공한다); 및 멀티플렉서(1814A~1814D, 1815A~1815D, 1820~1821) 및 배타적 OR 게이트(1813A~1813D)로 이루어진 캐리 로직을 포함한다. 상기 요소들은 모두 도 18에 도시한 것처럼 함께 결합된다. 도 18에 도시된 각 멀티플렉서에 대한 선택 입력은 표시하지 않았지만, 선택 입력은 구성 메모리 셀에 의해 제어된다. 즉, 구성 메모리 셀에 저장되어 있는 구성 비트스트림의 구성 비트는 멀티플렉서의 선택 입력에 결합되어 멀티플렉스에 대한 정확한 입력을 선택한다. 이 구성 메모리 셀은 잘 알려져 있으므로 명확성을 위해 도 18 및 기타의 도면에서 생략되었다.
도시된 실시예에 있어서, 각 메모리 요소(1802A~1802D)는 동기 또는 비동기 플립플롭 또는 래치로서 기능하도록 프로그램될 수 있다. 동기 기능과 비동기 기능간의 선택은 동기/비동기 선택 회로(1803)를 프로그램함으로써 슬라이스의 4개의 메모리 요소 모두에 대하여 행하여진다. S/R(세트/리세트) 입력 신호가 세트 기능을 제공하도록 메모리 요소가 프로그램된 때, REV 입력 단자는 리세트 기능을 제공한다. S/R 입력 신호가 리세트 기능을 제공하도록 메모리 요소가 프로그램된 때, REV 입력 단자는 세트 기능을 제공한다. 메모리 요소(1802A~1802D)는 예를 들면 글로벌 클럭 네트워크 또는 상호접속 구조에 의해 제공되는 클럭 신호(CK)에 의해 클럭된다. 이러한 프로그램가능 메모리 요소는 FPGA 설계 기술에서 잘 알려져 있다. 각각의 메모리 요소(1802A~1802D)는 등록된 출력 신호(AQ~DQ)를 상호접속 구조에 제공한다. 각각의 LUT(1801A~1801D)가 2개의 출력 신호(O5, O6)를 제공하기 때문에, LUT는 5개의 공유 입력 신호(IN1~IN5)를 가진 2개의 5-입력 LUT로서, 또는 입력 신호 IN1~IN6를 가진 하나의 6-입력 LUT로서 기능하도록 구성될 수 있다.
도 18의 실시예에 있어서, 각 LUTM(1801A~1801D)은 수 개의 모드 중 임의의 모드로 기능할 수 있다. 룩업 테이블 모드에 있을 때, 각 LUT는 입력 멀티플렉서를 통해 FPGA 상호접속 구조에 의해 공급되는 6개의 데이터 입력 신호(IN1~IN6)를 갖는다. 64 데이터 값 중 하나는 신호 IN1~IN6의 값들에 기초하여 구성 메모리 셀로부터 프로그램적으로 선택된다. RAM 모드에 있을 때, 각각의 LUT는 공유 어드레싱을 가진 단일 64-비트 RAM 또는 2개의 32-비트 RAM으로서 기능한다. RAM 기록 데이터는 입력 단자(DI1)를 통해(LUT 1801A~1801C에 대해서는 멀티플렉서 1817A~1817C를 통해) 64-비트 RAM에 공급되고, 또는 입력 단자(DI1, DI2)를 통해 2개의 32-비트 RAM에 공급된다. LUT RAM에서의 RAM 기록 동작은 멀티플렉서(1806)로부터의 클럭 신호(CK) 및 멀티플렉서(1807)로부터의 기록 인에이블 신호(WEN)에 의해 제어되고, 상기 멀티플렉서(1807)는 클럭 인에이블 신호(CE) 또는 기록 인에이블 신호(WE)를 선택적으로 통과시킬 수 있다. 시프트 레지스터 모드에 있어서, 각 LUT는 2개의 16-비트 시프트 레지스터로서 기능하고, 상기 2개의 16-비트 시프트 레지스터는 직렬로 결합하여 단일의 32-비트 시프트 레지스터를 구성한다. 시프트 인(shift-in) 신호는 입력 단자 DI1 및 DI2 중 어느 하나 또는 둘 다에 의해 제공된다. 16-비트 및 32-비트 시프트 아웃 신호는 LUT 출력 단자를 통해 제공될 수 있고, 32-비트 시프트 아웃 신호는 LUT 출력 단자 MC31을 통해 직접 제공될 수도 있다. LUT(1801A)의 32-비트 시프트 아웃 신호(MC31)는 또한 출력 선택 멀티플렉서(1811D) 및 CLE 출력 단자(DMUX)를 통해 시프트 레지스터 사슬의 일반 상호접속 구조에 제공될 수 있다.
지금까지 본 발명의 하나 이상의 태양에 따른 예시적인 실시예를 설명하였지만, 본 발명의 하나 이상의 태양에 따른 다른 실시예 및 추가의 실시예가 이하의 청구범위에 의해 결정되는 본 발명의 범위로부터 벗어나지 않고 고안될 수 있다. 청구범위에 리스트된 단계들은 그 단계들의 임의의 순서를 암시하는 것이 아니다. 상표들은 그 상표 소유자들의 재산이다.

Claims (15)

  1. 필터에 있어서,
    입력 신호와;
    상기 입력 신호, 제1 공통 계수 및 상기 제1 공통 계수와 관련된 복수의 제1 탭을 수신하는 제1 DSP(digital signal processing) 스테이지와;
    상기 입력 신호, 제2 공통 계수 및 상기 제2 공통 계수와 관련된 복수의 제2 탭을 수신하는 제2 DSP 스테이지를 포함하고,
    상기 제1 DSP 스테이지는 제1 DSP 스테이지의 출력을 저장하는 제1 레지스터를 포함하는 것이고,
    상기 제2 DSP 스테이지는 제2 DSP 스테이지의 출력을 저장하는 제2 레지스터 및 상기 제2 레지스터에 결합되어 제1 승산기의 출력을 상기 제1 DSP 스테이지의 출력에 가산하는 제1 가산기를 포함하는 것인 필터.
  2. 제1항에 있어서, 상기 제1 DSP 스테이지는,
    상기 입력 신호를 수신하는 제3 레지스터와;
    상기 제3 레지스터에 결합된 프리애더(pre-adder) 회로를 포함하며, 상기 프리애더 회로는,
    제어 버스와;
    상기 제어 버스에 결합된 제1 멀티플렉서의 제1 입력 포트와;
    상기 제어 버스에 결합된 제1 논리 게이트의 제2 입력 포트와;
    상기 제어 버스에 결합된 제2 논리 게이트의 제3 입력 포트와;
    상기 제어 버스에 결합된 가산기/감산기의 제4 입력 포트를 포함한 것인 필터.
  3. 제2항에 있어서, 상기 제1 DSP 스테이지는,
    상기 프리애더 회로에 결합되어 프리애더 회로의 결과를 저장하는 제4 레지스터와;
    상기 제1 공통 계수를 수신하는 제5 레지스터와;
    상기 제4 레지스터 및 상기 제5 레지스터에 결합되어 상기 제4 레지스터의 출력과 상기 제5 레지스터의 출력을 승산하는 제2 승산기를 포함한 것이며,
    상기 제4 레지스터의 출력은 상기 제1 공통 계수와 관련된 탭들의 합인 것인 필터.
  4. 제3항에 있어서, 상기 탭들의 합은 상기 프리애더 회로에 의해 발생되는 것인 필터.
  5. 제2항 내지 제4항 중 어느 한 항에 있어서, 상기 프리애더 회로는 가산기/감산기의 제5 데이터 입력 포트를 동적으로 설정하여 상기 제4 입력 포트로부터의 입력에 응답하여 제2 논리 게이트의 출력을 통해 제로의 값을 수신하도록 구성된 것인 필터.
  6. 제5항에 있어서, 상기 프리애더 회로는 상기 가산기/감산기의 제4 입력 포트를 동적으로 설정하여 상기 제3 입력 포트에 대한 입력에 응답하여 상기 제2 논리 게이트의 출력을 통해 제로의 값을 수신하도록 구성된 것인 필터.
  7. 제2항 내지 제4항 중 어느 한 항에 있어서, 상기 프리애더 회로는 상기 제1 입력 포트에 대한 입력에 응답하여 0-, 1-, 또는 2-레지스터 지연을 가진 입력 데이터를 동적으로 선택하도록 구성된 것인 필터.
  8. 제2항 내지 제4항 중 어느 한 항에 있어서, 상기 프리애더 회로는 상기 제4 입력 포트에 대한 입력에 응답하여 가산 또는 감산을 수행하게끔 상기 가산기/감산기를 동적으로 설정하도록 구성된 것인 필터.
  9. 집적 회로에서 구현되는 회로의 필터를 구성하는 방법에 있어서,
    회로의 고준위 설계(high level design)를 수신하는 단계와;
    고준위 설계의 필터를 식별하는 단계와;
    필터의 계수들을 분석하는 단계와;
    상기 고준위 설계의 필터를 복수의 스테이지를 이용하여 집적 회로에서 구현되는 필터로 변환하는 단계로서, 상기 복수의 스테이지의 각 스테이지는 스테이지와 관련된 공통 계수를 수용하도록 구성되며, 상기 필터는 제1 스테이지에서 입력 신호를 수신하고, 상기 제1 스테이지 후의 각 스테이지는 스테이지에 대한 공통 계수와 관련된 탭을 수신하도록 결합되는 것인 단계와;
    상기 입력 신호를 상기 필터의 각 스테이지에 결합하는 단계와;
    상기 필터의 각 스테이지의 출력을 레지스터에 저장하는 단계와;
    상기 제1 스테이지 후의 필터의 각 스테이지에 대하여 그 스테이지의 승산기의 출력을 상기 필터의 이전 스테이지의 출력에 가산하는 단계를 포함한 필터 구성 방법.
  10. 제9항에 있어서, 상기 고준위 설계의 필터를 복수의 스테이지를 이용하는 필터로 변환하는 단계는 필터를 대칭 이조 콘볼루션 필터(symmetric transpose convolution filter)로서 구성하는 단계를 포함한 것인 필터 구성 방법.
  11. 제9항에 있어서, 상기 계수들을 분석하는 단계는 고준위 설계에서 필터의 대칭 계수들을 식별하는 단계를 포함한 것인 필터 구성 방법.
  12. 제9항에 있어서, 상기 제1 스테이지 후의 각 스테이지에 대하여, 스테이지의 승산기에 대한 제1 입력으로서 공통 계수를 제공하는 단계를 더 포함한 필터 구성 방법.
  13. 제12항에 있어서, 상기 제1 스테이지 후의 각 스테이지에 대하여, 승산기에 대한 제2 입력으로서 공통 계수와 관련된 탭들의 합을 제공하는 단계를 더 포함한 필터 구성 방법.
  14. 제13항에 있어서, 상기 승산기에 대한 제2 입력으로서 공통 계수와 관련된 탭들의 합을 제공하는 단계는 DSP 블록의 프리애더 회로를 이용하여 합을 발생하는 단계를 포함한 것인 필터 구성 방법.
  15. 제12항에 있어서, 상기 제1 스테이지 후의 각 스테이지에 대하여, 승산기에 대한 제2 입력으로서 공통 계수와 관련된 탭들의 차를 제공하는 단계를 더 포함한 필터 구성 방법.
KR1020117016156A 2009-01-27 2010-01-08 프리애더 스테이지를 구비한 디지털 신호 처리 블록 KR101333477B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US12/360,836 2009-01-27
US12/360,836 US8543635B2 (en) 2009-01-27 2009-01-27 Digital signal processing block with preadder stage
US12/418,979 2009-04-06
US12/418,979 US8479133B2 (en) 2009-01-27 2009-04-06 Method of and circuit for implementing a filter in an integrated circuit
PCT/US2010/020565 WO2010088017A1 (en) 2009-01-27 2010-01-08 Digital signal processing block with preadder stage

Publications (2)

Publication Number Publication Date
KR20110098817A KR20110098817A (ko) 2011-09-01
KR101333477B1 true KR101333477B1 (ko) 2013-11-26

Family

ID=41668341

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117016156A KR101333477B1 (ko) 2009-01-27 2010-01-08 프리애더 스테이지를 구비한 디지털 신호 처리 블록

Country Status (6)

Country Link
US (1) US8479133B2 (ko)
EP (1) EP2382535B1 (ko)
JP (1) JP5356537B2 (ko)
KR (1) KR101333477B1 (ko)
CN (1) CN102301325B (ko)
WO (1) WO2010088017A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10003341B1 (en) 2009-06-30 2018-06-19 Altera Corporation Flexible input structure for arithmetic processing block
CN102611429B (zh) * 2012-01-05 2015-05-06 福州大学 基于阈值逻辑的set/mos混合结构的加法器
US9787290B2 (en) * 2015-05-20 2017-10-10 Altera Corporation Resource-saving circuit structures for deeply pipelined systolic finite impulse response filters
US10019234B2 (en) * 2015-10-05 2018-07-10 Altera Corporation Methods and apparatus for sequencing multiply-accumulate operations
RU2625609C1 (ru) * 2016-02-25 2017-07-17 Федеральное государственное бюджетное образовательное учреждение высшего образования "Кубанский государственный технологический университет" (ФГБОУ ВО "КубГТУ") Синусно-косинусный цифровой преобразователь
US10083007B2 (en) 2016-09-15 2018-09-25 Altera Corporation Fast filtering
US10430539B1 (en) * 2016-12-16 2019-10-01 Xilinx, Inc. Method and apparatus for enhancing performance by moving or adding a pipelined register stage in a cascaded chain
CN108804974B (zh) * 2017-04-27 2021-07-02 深圳鲲云信息科技有限公司 目标检测算法的硬件架构的资源估算、配置方法及系统
CN107301032A (zh) * 2017-07-02 2017-10-27 郑州云海信息技术有限公司 一种数字信号处理方法和装置
US11061674B2 (en) * 2017-10-05 2021-07-13 Micron Technology, Inc. DSP slice configured to forward operands to associated DSP slices
US10922098B2 (en) * 2017-10-05 2021-02-16 Micron Technology, Inc. DSP execution slice array to provide operands to multiple logic units
KR102487535B1 (ko) * 2018-02-20 2023-01-12 삼성전자주식회사 시스톨릭 배열(Systolic Array)을 이용하여 딥 러닝(Deep Learning) 연산을 수행하는 방법 및 장치
CN111047034B (zh) * 2019-11-26 2023-09-15 中山大学 一种基于乘加器单元的现场可编程神经网络阵列
US11356101B1 (en) * 2021-03-30 2022-06-07 Efinix, Inc. Digital signal processing block with reduced pin count for fine-grained programmable gate architecture

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090019416A1 (en) 2007-07-12 2009-01-15 Chugh Mukesh K Customizable synthesis of tunable parameters for code generation

Family Cites Families (187)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6556044B2 (en) * 2001-09-18 2003-04-29 Altera Corporation Programmable logic device including multipliers and configurations thereof to reduce resource utilization
US4025771A (en) * 1974-03-25 1977-05-24 Hughes Aircraft Company Pipe line high speed signal processor
US4041461A (en) 1975-07-25 1977-08-09 International Business Machines Corporation Signal analyzer system
US4541048A (en) 1978-10-06 1985-09-10 Hughes Aircraft Company Modular programmable signal processor
DE3346241A1 (de) * 1983-03-31 1984-10-04 Siemens AG, 1000 Berlin und 8000 München Parallelverknuepfungsschaltung mit verkuerztem uebertragsdurchlauf
US4638450A (en) * 1983-09-30 1987-01-20 Honeywell Information Systems Inc. Equal nine apparatus for supporting absolute value subtracts on decimal operands of unequal length
US4680628A (en) * 1984-01-04 1987-07-14 Itek Corporation Realtime digital diagnostic image processing system
US4665500A (en) * 1984-04-11 1987-05-12 Texas Instruments Incorporated Multiply and divide unit for a high speed processor
US4755962A (en) * 1984-10-30 1988-07-05 Fairchild Camera And Instrument Microprocessor having multiplication circuitry implementing a modified Booth algorithm
JPH07113884B2 (ja) 1985-12-28 1995-12-06 株式会社東芝 論理回路
US4780842A (en) 1986-03-26 1988-10-25 Alcatel Usa, Corp. Cellular processor apparatus capable of performing floating point arithmetic operations
JPH0644225B2 (ja) 1986-03-27 1994-06-08 日本電気株式会社 浮動小数点丸め正規化回路
US5367208A (en) * 1986-09-19 1994-11-22 Actel Corporation Reconfigurable programmable interconnect architecture
US5319451A (en) * 1988-05-31 1994-06-07 Canon Kabushiki Kaisha Color signal processing apparatus using a common low pass filter for the luminance signal and the color signals
US5287511A (en) * 1988-07-11 1994-02-15 Star Semiconductor Corporation Architectures and methods for dividing processing tasks into tasks for a programmable real time signal processor and tasks for a decision making microprocessor interfacing therewith
JP2879070B2 (ja) * 1989-02-15 1999-04-05 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ プログラム可能論理ユニット及び信号プロセッサ
US5212652A (en) 1989-08-15 1993-05-18 Advanced Micro Devices, Inc. Programmable gate array with improved interconnect structure
DE68928980T2 (de) * 1989-11-17 1999-08-19 Texas Instruments Inc Multiprozessor mit Koordinatenschalter zwischen Prozessoren und Speichern
USRE35311E (en) 1990-04-04 1996-08-06 International Business Machines Corporation Data dependency collapsing hardware apparatus
US5809292A (en) 1990-11-13 1998-09-15 International Business Machines Corporation Floating point for simid array machine
US5162666A (en) 1991-03-15 1992-11-10 Tran Dzung J Transmission gate series multiplexer
US5241492A (en) 1991-05-06 1993-08-31 Motorola, Inc. Apparatus for performing multiply and accumulate instructions with reduced power and a method therefor
US5633830A (en) 1995-11-08 1997-05-27 Altera Corporation Random access memory block circuitry for programmable logic array integrated circuit devices
US5450339A (en) 1991-10-10 1995-09-12 Harris Corp Noncanonic fully systolic LMS adaptive architecture
US5258939A (en) 1991-10-10 1993-11-02 Harris Corporation Fold and decimate filter architecture
JPH05265709A (ja) * 1992-03-23 1993-10-15 Nec Corp 丸め演算回路
EP1304797A3 (en) 1992-07-07 2007-11-28 Dolby Laboratories Licensing Corporation Digital filter having high accuracy and efficiency
US5339264A (en) * 1992-07-27 1994-08-16 Tektronix, Inc. Symmetric transposed FIR digital filter
US5388062A (en) * 1993-05-06 1995-02-07 Thomson Consumer Electronics, Inc. Reconfigurable programmable digital filter architecture useful in communication receiver
JPH0713742A (ja) * 1993-06-25 1995-01-17 Mitsubishi Electric Corp 乗算装置
US5349250A (en) 1993-09-02 1994-09-20 Xilinx, Inc. Logic structure and circuit for fast carry
US5509129A (en) * 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
US5805913A (en) 1993-11-30 1998-09-08 Texas Instruments Incorporated Arithmetic logic unit with conditional register source selection
US6016538A (en) * 1993-11-30 2000-01-18 Texas Instruments Incorporated Method, apparatus and system forming the sum of data in plural equal sections of a single data word
US5455525A (en) 1993-12-06 1995-10-03 Intelligent Logic Systems, Inc. Hierarchically-structured programmable logic array and system for interconnecting logic elements in the logic array
FI97002C (fi) 1993-12-17 1996-09-25 Eero Juhani Pajarre Suora FIR-suodatin, menetelmä pistetulon laskemiseksi FIR-suodattimessa ja menetelmä suoran FIR-suodattimen suunnittelemiseksi
US5450056A (en) 1993-12-27 1995-09-12 Intel Corporation Method and apparatus for comparing two numbers
US5394351A (en) 1994-03-11 1995-02-28 Nexgen, Inc. Optimized binary adder and comparator having an implicit constant for an input
US5682107A (en) * 1994-04-01 1997-10-28 Xilinx, Inc. FPGA architecture with repeatable tiles including routing matrices and logic matrices
JPH0865107A (ja) * 1994-08-25 1996-03-08 Hitachi Denshi Ltd ディジタル補間フィルタ回路
US5572207A (en) 1994-09-23 1996-11-05 International Business Machines Corporation Method and apparatus for numeric-to-string conversion
US5570306A (en) 1994-11-01 1996-10-29 Intel Corporation Method and apparatus for recognizing a bit pattern in a string of bits, altering the string of bits, and removing the alteration from the string of bits
US5642382A (en) * 1995-03-01 1997-06-24 Hitachi America, Ltd. Fir filters with multiplexed inputs suitable for use in reconfigurable adaptive equalizers
US5630160A (en) * 1995-03-08 1997-05-13 Texas Instruments Incorporated Floating point exponent compare using repeated two bit compare cell
US6112019A (en) 1995-06-12 2000-08-29 Georgia Tech Research Corp. Distributed instruction queue
WO1997008614A1 (en) 1995-08-28 1997-03-06 Motorola Inc. Method and system for performing an l1 norm operation
JP3655403B2 (ja) * 1995-10-09 2005-06-02 株式会社ルネサステクノロジ データ処理装置
US5732004A (en) * 1995-11-14 1998-03-24 Advanced Micro Devices, Inc. DSP architecture for a FIR-type filter and method
US5847580A (en) 1996-10-10 1998-12-08 Xilinx, Inc. High speed bidirectional bus with multiplexers
US5754459A (en) * 1996-02-08 1998-05-19 Xilinx, Inc. Multiplier circuit design for a programmable logic device
US6154049A (en) 1998-03-27 2000-11-28 Xilinx, Inc. Multiplier fabric for use in field programmable gate arrays
US5956518A (en) 1996-04-11 1999-09-21 Massachusetts Institute Of Technology Intermediate-grain reconfigurable processing device
GB9611994D0 (en) 1996-06-07 1996-08-07 Systolix Ltd A field programmable processor
US5724276A (en) * 1996-06-17 1998-03-03 Xilinx, Inc. Logic block structure optimized for sum generation
US5838165A (en) 1996-08-21 1998-11-17 Chatter; Mukesh High performance self modifying on-the-fly alterable logic FPGA, architecture and method
US5948053A (en) 1996-09-02 1999-09-07 Yamaha Corporation Digital signal processor architecture using signal paths to carry out arithmetic operations
US5933023A (en) 1996-09-03 1999-08-03 Xilinx, Inc. FPGA architecture having RAM blocks with programmable word length and width and dedicated address and data lines
US5943250A (en) 1996-10-21 1999-08-24 Samsung Electronics Co., Ltd. Parallel multiplier that supports multiple numbers with different bit lengths
US5880671A (en) * 1996-10-31 1999-03-09 Hewlett-Packard Company Flexible circuitry and method for detecting signal patterns on a bus
US5835393A (en) 1996-11-19 1998-11-10 Audiologic Hearing Systems, L.P. Integrated pre-adder for a multiplier
US6205459B1 (en) * 1996-12-18 2001-03-20 Yamaha Corporation Digital signal processor and digital signal processing system incorporating same
DE19653565A1 (de) 1996-12-20 1997-05-15 Bernd Paysan Rekursiv aufgeteilter Addierer mit Übertrag-Auswahl
US6204689B1 (en) * 1997-02-26 2001-03-20 Xilinx, Inc. Input/output interconnect circuit for FPGAs
US5963050A (en) 1997-02-26 1999-10-05 Xilinx, Inc. Configurable logic element with fast feedback paths
US5914616A (en) * 1997-02-26 1999-06-22 Xilinx, Inc. FPGA repeatable interconnect structure with hierarchical interconnect lines
US6014684A (en) * 1997-03-24 2000-01-11 Intel Corporation Method and apparatus for performing N bit by 2*N-1 bit signed multiplication
US5896307A (en) * 1997-06-23 1999-04-20 Sun Microsystems, Inc. Method for handling an underflow condition in a processor
US5905661A (en) * 1997-06-23 1999-05-18 Sun Microsystems, Inc. Method for handling an overflow condition in a processor
US6044392A (en) * 1997-08-04 2000-03-28 Motorola, Inc. Method and apparatus for performing rounding in a data processor
US6100715A (en) 1998-12-15 2000-08-08 Vantis Corporation Methods for configuring FPGA's having variable grain blocks and logic for providing time-shared access to interconnect resources
US6097212A (en) * 1997-10-09 2000-08-01 Lattice Semiconductor Corporation Variable grain architecture for FPGA integrated circuits
US6269384B1 (en) 1998-03-27 2001-07-31 Advanced Micro Devices, Inc. Method and apparatus for rounding and normalizing results within a multiplier
US6134574A (en) 1998-05-08 2000-10-17 Advanced Micro Devices, Inc. Method and apparatus for achieving higher frequencies of exactly rounded results
US6038583A (en) * 1997-10-23 2000-03-14 Advanced Micro Devices, Inc. Method and apparatus for simultaneously multiplying two or more independent pairs of operands and calculating a rounded products
US6223198B1 (en) * 1998-08-14 2001-04-24 Advanced Micro Devices, Inc. Method and apparatus for multi-function arithmetic
US5915123A (en) 1997-10-31 1999-06-22 Silicon Spice Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements
US6038381A (en) * 1997-11-25 2000-03-14 Synopsys, Inc. Method and system for determining a signal that controls the application of operands to a circuit-implemented function for power savings
US6069490A (en) * 1997-12-02 2000-05-30 Xilinx, Inc. Routing architecture using a direct connect routing mesh
US6108343A (en) 1997-12-19 2000-08-22 Nortel Networks Corporation Dynamically reconfigurable DSP architecture for multi-channel telephony
US6389579B1 (en) * 1998-01-26 2002-05-14 Chameleon Systems Reconfigurable logic for table lookup
DE69927075T2 (de) 1998-02-04 2006-06-14 Texas Instruments Inc Rekonfigurierbarer Koprozessor mit mehreren Multiplizier-Akkumulier-Einheiten
US6065034A (en) 1998-04-08 2000-05-16 Advanced Micro Devices, Inc. Circuit and method employing an adder for sign extending operands
US6434584B1 (en) 1998-06-04 2002-08-13 Texas Instruments Incorporated Flexible accumulator register file for use in high performance microprocessors
US6282627B1 (en) 1998-06-29 2001-08-28 Chameleon Systems, Inc. Integrated processor and programmable data path chip for reconfigurable computing
US6374312B1 (en) * 1998-09-25 2002-04-16 Intel Corporation System for dedicating a host processor to running one of a plurality of modem programs and dedicating a DSP to running another one of the modem programs
US6421698B1 (en) 1998-11-04 2002-07-16 Teleman Multimedia, Inc. Multipurpose processor for motion estimation, pixel processing, and general processing
US6260053B1 (en) 1998-12-09 2001-07-10 Cirrus Logic, Inc. Efficient and scalable FIR filter architecture for decimation
US6282631B1 (en) 1998-12-23 2001-08-28 National Semiconductor Corporation Programmable RISC-DSP architecture
US6385751B1 (en) * 1998-12-30 2002-05-07 Texas Instruments Incorporated Programmable, reconfigurable DSP implementation of a Reed-Solomon encoder/decoder
US6323680B1 (en) 1999-03-04 2001-11-27 Altera Corporation Programmable logic device configured to accommodate multiplication
US6243808B1 (en) * 1999-03-08 2001-06-05 Chameleon Systems, Inc. Digital data bit order conversion using universal switch matrix comprising rows of bit swapping selector groups
US6366943B1 (en) * 1999-03-31 2002-04-02 Brian Martin Clinton Adder circuit with the ability to detect zero when rounding
US6298472B1 (en) 1999-05-07 2001-10-02 Chameleon Systems, Inc. Behavioral silicon construct architecture and mapping
US6347346B1 (en) * 1999-06-30 2002-02-12 Chameleon Systems, Inc. Local memory unit system with global access for use on reconfigurable chips
US6438570B1 (en) 1999-07-21 2002-08-20 Xilinx, Inc. FPGA implemented bit-serial multiplier and infinite impulse response
US6370596B1 (en) * 1999-08-03 2002-04-09 Chameleon Systems, Inc. Logic flag registers for monitoring processing system events
US6341318B1 (en) * 1999-08-10 2002-01-22 Chameleon Systems, Inc. DMA data streaming
US6567835B1 (en) * 1999-08-17 2003-05-20 Intrinsity, Inc. Method and apparatus for a 5:2 carry-save-adder (CSA)
US6349346B1 (en) * 1999-09-23 2002-02-19 Chameleon Systems, Inc. Control fabric unit including associated configuration memory and PSOP state machine adapted to provide configuration address to reconfigurable functional unit
US6288566B1 (en) 1999-09-23 2001-09-11 Chameleon Systems, Inc. Configuration state memory for functional blocks on a reconfigurable chip
US6311200B1 (en) 1999-09-23 2001-10-30 Chameleon Systems, Inc. Reconfigurable program sum of products generator
US6526430B1 (en) * 1999-10-04 2003-02-25 Texas Instruments Incorporated Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing)
US6499045B1 (en) * 1999-10-21 2002-12-24 Xilinx, Inc. Implementation of a two-dimensional wavelet transform
US6731706B1 (en) * 1999-10-29 2004-05-04 Intel Corporation Square root raised cosine symmetric filter for mobile telecommunications
US6754689B2 (en) * 1999-12-23 2004-06-22 Intel Corporation Method and apparatus for performing subtraction in redundant form arithmetic
CA2294554A1 (en) * 1999-12-30 2001-06-30 Mosaid Technologies Incorporated Method and circuit for multiplication using booth encoding and iterative addition techniques
US6745319B1 (en) * 2000-02-18 2004-06-01 Texas Instruments Incorporated Microprocessor with instructions for shuffling and dealing data
US6519674B1 (en) * 2000-02-18 2003-02-11 Chameleon Systems, Inc. Configuration bits layout
US6405298B1 (en) * 2000-02-21 2002-06-11 Hewlett-Packard Company Linear address generator and method for generating a linear address using parallel computations and a single cycle algorithm
US6539477B1 (en) * 2000-03-03 2003-03-25 Chameleon Systems, Inc. System and method for control synthesis using a reachable states look-up table
US7124160B2 (en) 2000-03-08 2006-10-17 Sun Microsystems, Inc. Processing architecture having parallel arithmetic capability
US6601077B1 (en) 2000-03-31 2003-07-29 Intel Corporation DSP unit for multi-level global accumulation
CN1265280C (zh) 2000-05-15 2006-07-19 艾蒙系统股份有限公司 扩展整数的计算域的范围
US6362650B1 (en) * 2000-05-18 2002-03-26 Xilinx, Inc. Method and apparatus for incorporating a multiplier into an FPGA
US6631508B1 (en) 2000-06-07 2003-10-07 Xilinx, Inc. Method and apparatus for developing and placing a circuit design
US6526557B1 (en) * 2000-07-25 2003-02-25 Xilinx, Inc. Architecture and method for partially reconfiguring an FPGA
GB2365636B (en) 2000-08-04 2005-01-05 Automatic Parallel Designs Ltd A parallel counter and a multiplication logic circuit
US6538470B1 (en) * 2000-09-18 2003-03-25 Altera Corporation Devices and methods with programmable logic and digital signal processing regions
US6628140B2 (en) 2000-09-18 2003-09-30 Altera Corporation Programmable logic devices with function-specific blocks
FR2819073B1 (fr) 2000-12-28 2003-02-28 St Microelectronics Sa Microarchitecture d'unite arithmetique
US6483343B1 (en) 2000-12-29 2002-11-19 Quicklogic Corporation Configurable computational unit embedded in a programmable device
US6392912B1 (en) * 2001-01-10 2002-05-21 Chameleon Systems, Inc. Loading data plane on reconfigurable chip
US7599981B2 (en) 2001-02-21 2009-10-06 Mips Technologies, Inc. Binary polynomial multiplier
US7433909B2 (en) 2002-06-25 2008-10-07 Nvidia Corporation Processing architecture for a reconfigurable arithmetic node
US7325123B2 (en) 2001-03-22 2008-01-29 Qst Holdings, Llc Hierarchical interconnect for configuring separate interconnects for each group of fixed and diverse computational elements
US7225279B2 (en) * 2002-06-25 2007-05-29 Nvidia Corporation Data distributor in a computation unit forwarding network data to select components in respective communication method type
US6836839B2 (en) 2001-03-22 2004-12-28 Quicksilver Technology, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US7249242B2 (en) 2002-10-28 2007-07-24 Nvidia Corporation Input pipeline registers for a node in an adaptive computing engine
GB2373602B (en) 2001-03-22 2004-11-17 Automatic Parallel Designs Ltd A multiplication logic circuit
US7624204B2 (en) 2001-03-22 2009-11-24 Nvidia Corporation Input/output controller node in an adaptable computing environment
GB2373883A (en) 2001-03-27 2002-10-02 Automatic Parallel Designs Ltd Logic circuit for performing binary addition or subtraction
US6742013B2 (en) * 2001-05-03 2004-05-25 Sun Microsystems, Inc. Apparatus and method for uniformly performing comparison operations on long word operands
US7116663B2 (en) 2001-07-20 2006-10-03 Pmc-Sierra Ltd. Multi-field classification using enhanced masked matching
US6904446B2 (en) * 2001-08-24 2005-06-07 Freescale Semiconductor, Inc. Floating point multiplier/accumulator with reduced latency and method thereof
JP3548142B2 (ja) * 2001-08-29 2004-07-28 株式会社 エヌティーアイ 演算装置及び演算システム
US20030055861A1 (en) * 2001-09-18 2003-03-20 Lai Gary N. Multipler unit in reconfigurable chip
US6986021B2 (en) * 2001-11-30 2006-01-10 Quick Silver Technology, Inc. Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements
GB2383435A (en) 2001-12-18 2003-06-25 Automatic Parallel Designs Ltd Logic circuit for performing modular multiplication and exponentiation
US6947916B2 (en) 2001-12-21 2005-09-20 Quicksilver Technology, Inc. IC for universal computing with near zero programming complexity
US6864714B2 (en) * 2002-06-10 2005-03-08 Stmicroelectronics Pvt. Ltd. PLDs providing reduced delays in cascade chain circuits
US6873182B2 (en) * 2002-06-27 2005-03-29 Stmicroelectronics Pvt. Ltd. Programmable logic devices having enhanced cascade functions to provide increased flexibility
US7502915B2 (en) * 2002-09-30 2009-03-10 Nvidia Corporation System and method using embedded microprocessor as a node in an adaptable computing machine
US7197686B2 (en) * 2002-10-11 2007-03-27 Nvidia Corporation Reconfigurable bit-manipulation node
US7353243B2 (en) * 2002-10-22 2008-04-01 Nvidia Corporation Reconfigurable filter node for an adaptive computing machine
US8949576B2 (en) * 2002-11-01 2015-02-03 Nvidia Corporation Arithmetic node including general digital signal processing functions for an adaptive computing machine
US6920627B2 (en) 2002-12-13 2005-07-19 Xilinx, Inc. Reconfiguration of a programmable logic device using internal control
US7124156B2 (en) 2003-01-10 2006-10-17 Nec America, Inc. Apparatus and method for immediate non-sequential state transition in a PN code generator
US7178130B2 (en) * 2003-01-14 2007-02-13 Nvidia Corporation Digital processing architecture using compiled dataflow definition
US7155471B2 (en) 2003-02-12 2006-12-26 Hewlett-Packard Development Company, L.P. Method and system for determining the correct rounding of a function
US7277479B2 (en) * 2003-03-02 2007-10-02 Mediatek Inc. Reconfigurable fir filter
US8296764B2 (en) * 2003-08-14 2012-10-23 Nvidia Corporation Internal synchronization control for adaptive integrated circuitry
US7353516B2 (en) * 2003-08-14 2008-04-01 Nvidia Corporation Data flow control for adaptive integrated circuitry
US7725681B2 (en) 2003-08-15 2010-05-25 Nxp B.V. Parallel processing array
US7174432B2 (en) * 2003-08-19 2007-02-06 Nvidia Corporation Asynchronous, independent and multiple process shared memory system in an adaptive computing architecture
US7467177B2 (en) * 2003-12-29 2008-12-16 Xilinx, Inc. Mathematical circuit with dynamic rounding
US7480690B2 (en) * 2003-12-29 2009-01-20 Xilinx, Inc. Arithmetic circuit with multiplexed addend inputs
US7849119B2 (en) 2003-12-29 2010-12-07 Xilinx, Inc. Digital signal processing circuit having a pattern detector circuit
US7467175B2 (en) 2003-12-29 2008-12-16 Xilinx, Inc. Programmable logic device with pipelined DSP slices
EP2306331B1 (en) * 2003-12-29 2018-05-02 Xilinx, Inc. Integrated circuit with cascading DSP slices
US7844653B2 (en) 2003-12-29 2010-11-30 Xilinx, Inc. Digital signal processing circuit having a pre-adder circuit
US7882165B2 (en) * 2003-12-29 2011-02-01 Xilinx, Inc. Digital signal processing element having an arithmetic logic unit
US7567997B2 (en) 2003-12-29 2009-07-28 Xilinx, Inc. Applications of cascading DSP slices
US7840630B2 (en) 2003-12-29 2010-11-23 Xilinx, Inc. Arithmetic logic unit circuit
US8495122B2 (en) * 2003-12-29 2013-07-23 Xilinx, Inc. Programmable device with dynamic DSP architecture
US7865542B2 (en) * 2003-12-29 2011-01-04 Xilinx, Inc. Digital signal processing block having a wide multiplexer
US7853632B2 (en) 2003-12-29 2010-12-14 Xilinx, Inc. Architectural floorplan for a digital signal processing circuit
US7853634B2 (en) 2003-12-29 2010-12-14 Xilinx, Inc. Digital signal processing circuit having a SIMD circuit
US7860915B2 (en) 2003-12-29 2010-12-28 Xilinx, Inc. Digital signal processing circuit having a pattern circuit for determining termination conditions
US7853636B2 (en) 2003-12-29 2010-12-14 Xilinx, Inc. Digital signal processing circuit having a pattern detector circuit for convergent rounding
US7870182B2 (en) * 2003-12-29 2011-01-11 Xilinx Inc. Digital signal processing circuit having an adder circuit with carry-outs
US7472155B2 (en) 2003-12-29 2008-12-30 Xilinx, Inc. Programmable logic device with cascading DSP slices
US7840627B2 (en) 2003-12-29 2010-11-23 Xilinx, Inc. Digital signal processing circuit having input register blocks
US7194598B2 (en) * 2004-01-26 2007-03-20 Nvidia Corporation System and method using embedded microprocessor as a node in an adaptable computing machine
US7437401B2 (en) 2004-02-20 2008-10-14 Altera Corporation Multiplier-accumulator block mode splitting
US7483420B1 (en) * 2004-03-08 2009-01-27 Altera Corporation DSP circuitry for supporting multi-channel applications by selectively shifting data through registers
US8018463B2 (en) 2004-05-10 2011-09-13 Nvidia Corporation Processor for video data
JP4485272B2 (ja) 2004-06-30 2010-06-16 富士通マイクロエレクトロニクス株式会社 半導体装置
US20060004902A1 (en) * 2004-06-30 2006-01-05 Siva Simanapalli Reconfigurable circuit with programmable split adder
US7702710B2 (en) * 2004-09-10 2010-04-20 Analog Devices, Inc. Digital signal processor optimized for interpolation and decimation
US7129762B1 (en) 2005-02-17 2006-10-31 Xilinx, Inc. Efficient implementation of a bypassable flip-flop with a clock enable
US7689640B2 (en) * 2005-06-06 2010-03-30 Atmel Corporation Method and apparatus for formatting numbers in microprocessors
US7218139B1 (en) * 2005-06-14 2007-05-15 Xilinx, Inc. Programmable integrated circuit providing efficient implementations of arithmetic functions
US7193433B1 (en) * 2005-06-14 2007-03-20 Xilinx, Inc. Programmable logic block having lookup table with partial output signal driving carry multiplexer
US7584233B2 (en) 2005-06-28 2009-09-01 Qualcomm Incorporated System and method of counting leading zeros and counting leading ones in a digital signal processor
US7230451B1 (en) * 2005-08-22 2007-06-12 Altera Corporation Programmable logic device with routing channels
JP5250744B2 (ja) * 2006-07-13 2013-07-31 セミコンダクター・コンポーネンツ・インダストリーズ・リミテッド・ライアビリティ・カンパニー フィルタ処理集積回路
US7949699B1 (en) * 2007-08-30 2011-05-24 Altera Corporation Implementation of decimation filter in integrated circuit device using ram-based data storage

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090019416A1 (en) 2007-07-12 2009-01-15 Chugh Mukesh K Customizable synthesis of tunable parameters for code generation

Also Published As

Publication number Publication date
EP2382535B1 (en) 2017-03-29
US8479133B2 (en) 2013-07-02
WO2010088017A1 (en) 2010-08-05
CN102301325A (zh) 2011-12-28
JP2012514909A (ja) 2012-06-28
EP2382535A1 (en) 2011-11-02
US20100192118A1 (en) 2010-07-29
JP5356537B2 (ja) 2013-12-04
CN102301325B (zh) 2015-04-01
KR20110098817A (ko) 2011-09-01

Similar Documents

Publication Publication Date Title
KR101333477B1 (ko) 프리애더 스테이지를 구비한 디지털 신호 처리 블록
US8543635B2 (en) Digital signal processing block with preadder stage
US10101966B1 (en) Digital signal processing blocks with embedded arithmetic circuits
US10613831B2 (en) Methods and apparatus for performing product series operations in multiplier accumulator blocks
US7567997B2 (en) Applications of cascading DSP slices
Chou et al. FPGA implementation of digital filters
US8495122B2 (en) Programmable device with dynamic DSP architecture
US8112466B2 (en) Field programmable gate array
US7480690B2 (en) Arithmetic circuit with multiplexed addend inputs
US10019234B2 (en) Methods and apparatus for sequencing multiply-accumulate operations
US7472155B2 (en) Programmable logic device with cascading DSP slices
US7467177B2 (en) Mathematical circuit with dynamic rounding
US7467175B2 (en) Programmable logic device with pipelined DSP slices
US9081634B1 (en) Digital signal processing block
JP5956820B2 (ja) 埋込み浮動小数点構造を有するdspブロック
WO2005066832A2 (en) Integrated circuit with cascading dsp slices
RU2769964C1 (ru) Цифровой сигнальный процессор и способ работы
Neelima et al. An Algorithm for FPGA based Implementation of Variable Precision MAC unit for High Performance Digital FIR Filters
Davis et al. Finite State Machine With Datapath Design
Saranya et al. FPGA synthesis of area efficient data path for reconfigurable FIR filter
Vennila A Proficient Design of Hybrid Synchronous and Asynchronous Digital FIR Filter using FPGA

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: 20161104

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171108

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20181107

Year of fee payment: 6