KR102560778B1 - 데이터를 추출하는 장치 및 방법 - Google Patents

데이터를 추출하는 장치 및 방법 Download PDF

Info

Publication number
KR102560778B1
KR102560778B1 KR1020160020441A KR20160020441A KR102560778B1 KR 102560778 B1 KR102560778 B1 KR 102560778B1 KR 1020160020441 A KR1020160020441 A KR 1020160020441A KR 20160020441 A KR20160020441 A KR 20160020441A KR 102560778 B1 KR102560778 B1 KR 102560778B1
Authority
KR
South Korea
Prior art keywords
data
input data
bit position
bit
group
Prior art date
Application number
KR1020160020441A
Other languages
English (en)
Other versions
KR20170098482A (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 삼성전자주식회사
Priority to KR1020160020441A priority Critical patent/KR102560778B1/ko
Priority to US15/299,010 priority patent/US9898254B2/en
Priority to EP16195415.1A priority patent/EP3208708B1/en
Priority to JP2017030429A priority patent/JP6925823B2/ja
Priority to CN201710095461.5A priority patent/CN107102840B/zh
Publication of KR20170098482A publication Critical patent/KR20170098482A/ko
Application granted granted Critical
Publication of KR102560778B1 publication Critical patent/KR102560778B1/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/74Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/4833Logarithmic number system
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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/50Adding; Subtracting
    • 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/52Multiplying; Dividing
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
    • H03K19/21EXCLUSIVE-OR circuits, i.e. giving output if input signal exists at only one input; COINCIDENCE circuits, i.e. giving output only if all input signals are identical
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N25/00Circuitry of solid-state image sensors [SSIS]; Control thereof
    • H04N25/70SSIS architectures; Circuits associated therewith
    • H04N25/71Charge-coupled device [CCD] sensors; Charge-transfer registers specially adapted for CCD sensors
    • H04N25/75Circuitry for providing, modifying or processing image signals from the pixel array
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N25/00Circuitry of solid-state image sensors [SSIS]; Control thereof
    • H04N25/70SSIS architectures; Circuits associated therewith
    • H04N25/76Addressed sensors, e.g. MOS or CMOS sensors
    • H04N25/77Pixel circuitry, e.g. memories, A/D converters, pixel amplifiers, shared circuits or shared components
    • H04N25/772Pixel circuitry, e.g. memories, A/D converters, pixel amplifiers, shared circuits or shared components comprising A/D, V/T, V/F, I/T or I/F converters

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Nonlinear Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Position Fixing By Use Of Radio Waves (AREA)
  • Transforming Light Signals Into Electric Signals (AREA)
  • Radar Systems Or Details Thereof (AREA)
  • Dc Digital Transmission (AREA)

Abstract

데이터를 추출하는 장치 및 방법이 제공된다. 일 실시예에 따른 데이터 추출 장치는 입력 데이터와 입력 데이터의 보수를 이용하여, 최우측에 나타나는 대상 값의 비트 위치를 추출할 수 있고, 대상 값의 비트 위치를 순차적으로 추출하여 출력할 수 있다.

Description

데이터를 추출하는 장치 및 방법{METHOD AND DEVICE TO EXTRACT DATA}
이하, 데이터를 추출하는 장치 및 방법이 제공된다.
복수의 엘리먼트들을 포함하는 센서는 각각의 엘리먼트마다 신호를 감지하기 위한 검출 소자, 검출 소자에서 감지된 신호를 증폭하기 위한 아날로그 회로, 및 증폭된 신호를 처리하는 디지털 회로(digital circuit)를 포함할 수 있다.
다만, 복수의 엘리먼트들을 포함하는 센서는 일정한 위치의 엘리먼트에서 데이터가 균일하게 발생하는 것이 아니고, 사용 조건, 환경 및 상황 등에 따라 무작위로 발생하게 되는데, 이 때 각 엘리먼트를 전부 탐색하게 될 경우 불필요한 전력 소모가 발생할 수 있고, 디지털 회로에서의 신호 처리 효율이 감소될 수 있다.
일 실시예에 따르면, 입력 데이터(input data)를 수신하는 데이터 수신부, 입력 데이터의 보수(complement)를 생성하는 보수 생성부, 및 입력 데이터 및 보수에 기초하여, 입력 데이터로부터 대상 값(target value)의 비트 위치(bit position)를 추출하는 비트 위치 추출부를 포함하는 데이터 추출 장치가 제공될 수 있다.
데이터 추출 장치는, 입력 데이터로부터 대상 값이 존재하는 비트 위치를 순차적으로 추출할 수 있다.
데이터 추출 장치는 입력 데이터로부터 대상 값의 비트 위치를 추출한 후, 추출된 비트 위치의 값을 초기화하여 입력 데이터를 변환하는 데이터 변환부를 더 포함하고, 데이터 수신부는, 변환된 입력 데이터를 데이터 변환부로부터 수신하여, 보수 생성부, 비트 위치 추출부, 및 데이터 변환부 중 적어도 하나로 전달할 수 있다.
데이터 변환부는, 입력 데이터 및 추출된 비트 위치에 대해 비트간(bitwise) 배타적 논리합(XOR, exclusive OR) 연산을 수행하는 배타적 논리합 게이트(XOR gate)를 포함할 수 있다.
비트 위치 추출부는, 입력 데이터에서 대상 값이 나타나는 최우측(rightmost)의 비트 위치를 추출할 수 있다.
비트 위치 추출부는, 입력 데이터 및 보수에 대해 비트간 논리곱(bitwise AND) 연산을 수행하는 논리곱 게이트(AND gate)를 포함할 수 있다.
보수 생성부는, 입력 데이터에 대해 비트간 부정(bitwise NOT) 연산을 수행하는 부정 게이트(NOT gate), 및 부정 연산(NOT operation)이 수행된 입력 데이터에 대해 1의 값을 부가(add)하는 가산기(adder)를 포함할 수 있다.
데이터 추출 장치는 추출된 비트 위치를 출력하는 출력부를 더 포함할 수 있다.
출력부는, 비트 위치를 이진로그(binary log) 값의 형태로 출력할 수 있다.
데이터 추출 장치는 입력 데이터로부터 대상 값이 존재하는 모든 비트 위치가 추출된 것으로 판단된 경우에 응답하여, 종료 신호를 생성하는 종료 결정부(termination determiner)를 더 포함할 수 있다.
데이터 수신부는, 입력 데이터에 대해 비트간 부정 연산(bitwise NOT operation)을 수행하고, 부정 연산이 수행된 입력 데이터를 보수 생성부 및 비트 위치 추출부 중 적어도 하나로 전달할 수 있다.
일 실시예에 따른 데이터 추출 방법은 입력 데이터(input data)를 수신하는 단계, 입력 데이터의 보수(complement)를 생성하는 단계, 및 입력 데이터 및 보수에 기초하여, 입력 데이터로부터 대상 값(target value)의 비트 위치(bit position)를 추출하는 단계를 포함할 수 있다.
데이터 추출 방법은 입력 데이터로부터 대상 값이 존재하는 비트 위치를 순차적으로 추출하는 단계를 더 포함할 수 있다.
데이터 추출 방법은 입력 데이터로부터 대상 값의 비트 위치를 추출한 후, 추출된 비트 위치의 값을 초기화하여 입력 데이터를 변환하는 단계, 변환된 입력 데이터의 보수를 이용하여, 변환된 입력 데이터로부터 대상 값의 비트 위치를 추출하는 단계를 더 포함할 수 있다.
비트 위치를 추출하는 단계는, 입력 데이터에서 대상 값이 나타나는 최우측(rightmost)의 비트 위치를 추출하는 단계를 포함할 수 있다.
데이터 추출 방법은 추출된 비트 위치를 출력하는 단계를 더 포함할 수 있다.
출력하는 단계는, 비트 위치를 이진로그(binary log) 값의 형태로 출력하는 단계를 포함할 수 있다.
데이터 추출 방법은 입력 데이터로부터 대상 값이 존재하는 모든 비트 위치가 추출된 것으로 판단된 경우에 응답하여, 종료 신호를 생성하는 단계를 더 포함할 수 있다.
다른 일 실시예에 따르면, 입력 데이터를 복수의 그룹들로 분류하여 그룹 데이터를 생성하는 그룹화부, 그룹 데이터로부터 대상 그룹 값의 그룹 비트 위치를 추출하는 그룹 추출부, 그룹 비트 위치에 기초하여 그룹을 선택하고, 입력 데이터로부터 선택된 그룹에 대응하는 부분 데이터를 선택하는 그룹 선택부, 및 선택된 그룹에 대응하는 부분 데이터로부터 대상 값의 비트 위치를 순차적으로 추출하는 데이터 추출부를 포함하는 그룹에 기초한 데이터 추출 장치가 제공될 수 있다.
그룹 추출부는, 데이터 추출부가 부분 데이터로부터 대상 값의 모든 비트 위치를 추출한 것으로 판단된 경우에 응답하여, 그룹 대상 값의 다음 그룹 비트 위치를 추출하고, 그룹 선택부는, 다음 그룹 비트 위치에 기초하여 다음 부분 데이터를 선택할 수 있다.
도 1은 일 실시예에 따른 데이터 추출 장치의 구성을 도시한다.
도 2 및 도 3은 일 실시예에 따른 데이터 추출 기법을 활용하는 데이터 추출 장치를 설명하는 도면이다.
도 4는 일 실시예에 따른 데이터 추출 장치의 세부적인 구성을 도시한 블록도이다.
도 5는 일 실시예에 따른 출력부의 구성을 도시한 블록도이다.
도 6은 일 실시예에 따른 데이터의 예시를 도시한 도면이다.
도 7 내지 도 10은 일 실시예에 따른 데이터 추출 방법을 도시한 흐름도이다.
도 11은 다른 일 실시예에 따른 그룹에 기초한 데이터 추출 장치의 구성을 도시한 블록도이다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 특허출원의 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
아래 설명하는 실시예들에는 다양한 변경이 가해질 수 있다. 아래 설명하는 실시예들은 실시 형태에 대해 한정하려는 것이 아니며, 이들에 대한 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
실시예에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 실시예를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수 개의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
복수의 엘리먼트들을 포함하는 센서에 있어서, 아날로그 도메인에서 복잡한 트리 구조를 통하여 중재(arbitration)에 기초하여 출력 데이터를 생성할 경우, 입력 데이터의 비트가 많아지면 트리의 뎁스(depth)가 커지면서 처리하는 시간이 증가되고, 센서의 사이즈(size)도 커지게 된다. 해당 센서에 대하여, 디지털 도메인에서 입력 데이터의 모든 비트를 특정 값에 따라 선택할 수 있는 복잡한 회로(예를 들어, 특정 비트만 선택하는 MUX(multiplexer))와 같은 회로가 시프트 레지스터(shift register)에 추가되면서, 입력 데이터의 비트가 많아지면 사이즈가 커지게 되고, 하나의 클럭 사이클(clock cycle)로 구현이 어려울 수 있다.
하기에서는 딜레이를 최소화하면서 데이터를 추출하는 장치에 대해 설명한다.
도 1은 일 실시예에 따른 데이터 추출 장치의 구성을 도시한다.
데이터 추출 장치(100)는 입력 데이터(input data)(도 1에서 X로 도시됨)로부터 대상 값(target value)에 해당하는 비트(bit, binary digit)들을 추출할 수 있는 장치이다. 일 실시예에 따른 데이터 추출 장치(100)는 데이터 수신부(data receiver)(110), 보수 생성부(complement generator)(120), 및 비트 위치 추출부(bit position extractor)(130)를 포함한다.
데이터 수신부(110)는 입력 데이터(input data)를 수신할 수 있다. 입력 데이터는 비트들의 시퀀스로 된 데이터를 나타낼 수 있다. 예를 들어, 입력 데이터는 0부터 2N사이의 값을 가질 수 있고, 입력 데이터의 길이(length)는 N(예를 들어, N은 1이상의 정수)일 수 있다. 입력 데이터에서 각 비트 위치 i(예를 들어, i는 0부터 N-1 사이의 정수)의 이진값(binary value)은 0 또는 1일 수 있고, i번째 비트 위치의 이진값이 1이면 해당 입력 데이터는 2i를 포함할 수 있다. 입력 데이터에서 최우측(rightmost)의 비트 위치는 LSB(Least Significant Bit)를 나타낼 수 있고, 최좌측(leftmost)의 비트 위치는 MSB(Most Significant Bit)를 나타낼 수 있다. 입력 데이터는 하기 도 3에서 보다 상세히 설명한다.
보수 생성부(120)는 입력 데이터의 보수(complement)(도 1에서 -X로 도시됨)를 생성할 수 있다. 본 명세서에서 보수는 특별히 1의 보수(one's complement)라고 명시되지 않는 한, 이진법상 2의 보수(two's complement)를 나타낼 수 있고, 음수를 나타낼 수 있다. 입력 데이터가 N 비트인 경우, 입력 데이터의 2의 보수는 2N에 대한 보수를 나타낼 수 있다. 예를 들어, 입력 데이터에 대한 2의 보수는, 2N으로부터 입력 데이터의 값을 감산(subtract)한 결과로서, 입력 데이터의 이진 형태에서 0과 1의 이진값을 반전(invert)한 후 1을 더한 값과 동일할 수 있다. 예를 들어, 입력 데이터의 이진 형태의 값이 "1110"이면, 해당 입력 데이터의 2의 보수(이하, 보수라고 나타냄)는 "0010"일 수 있다.
비트 위치 추출부(130)는 입력 데이터 및 보수에 기초하여, 입력 데이터로부터 대상 값(target value)의 비트 위치(bit position)(도 1에서 Y로 도시됨)를 추출할 수 있다. 대상 값은 입력 데이터에서 추출되어야 하는 값 또는 추출되길 원하는(desired) 값을 나타낼 수 있다. 대상 값의 비트 위치는 입력 데이터에서 대상 값이 존재하는 LSB를 기준으로 하는 위치를 나타낼 수 있다. 예를 들어, 추출되어야 하는 대상 값이 1이고, 입력 데이터의 이진 형태의 값이 "1110"이면, 비트 위치는 LSB로부터 1번째일 수 있다. (LSB는 최우측의 비트 위치로서 0번째라고 나타낼 수 있다)
일 실시예에 따른 데이터 추출 장치(100)는 복수의 엘리먼트들을 포함하는 센서(예를 들어, 빛의 변화 등과 같은 이벤트에 기반한 비전 센서 등)에서 이벤트가 발생된 엘리먼트의 위치를 신속하게 검색하여, 딜레이 없이 각 이벤트에 대응하는 데이터를 추출해낼 수 있다. 하기에서 데이터 추출 장치(100)의 구성 및 동작을 상세히 설명한다.
도 2 및 도 3은 일 실시예에 따른 데이터 추출 기법을 활용하는 데이터 추출 장치를 설명하는 도면이다.
도 2는 데이터 변환부(240)를 더 포함하는 데이터 추출 장치(200)를 도시한다. 일 실시예에 따른 데이터 추출 장치(200)는 입력 데이터로부터 대상 값이 존재하는 비트 위치를 순차적으로 추출할 수 있다.
데이터 수신부(110)는 입력 데이터(도 2에서 X로 도시됨)를 수신하여 보수 생성부(120), 비트 위치 추출부(130), 및 데이터 변환부(240)로 전달할 수 있다. 또한, 데이터 수신부(110)는 데이터 변환부(240)에 의해 변환된 입력 데이터(도 2에서 X'으로 도시됨)를 데이터 변환부(240)로부터 수신하여, 보수 생성부(120), 비트 위치 추출부(130), 및 데이터 변환부(240)로 전달할 수 있다.
일 실시예에 따르면, 데이터 변환부(240)에 의해 변환된 입력 데이터(X')는 추출이 완료된 비트 위치의 값이 초기화된 데이터로서, 데이터 수신부(110)는 변환된 입력 데이터(X')을 보수 생성부(120), 비트 위치 추출부(130) 및 데이터 변환부(240)로 전달함으로써, 데이터 추출 장치(200)가 입력 데이터로부터 대상 값이 존재하는 비트 위치를 순차적으로 추출할 수 있도록 루프(loop)를 형성할 수 있다. 예를 들어, 입력 데이터가 처음 수신된 경우 데이터 수신부(110)는 해당 입력 데이터를 그대로 전달하고, 이후 입력 데이터로부터 대상 값이 존재하는 모든 비트 위치가 추출될 때까지 순차적으로 초기화되는 변환된 입력 데이터를 수신하여 전달할 수 있다.
보수 생성부(120)는 데이터 수신부(110)로부터 전달된 입력 데이터(X) 또는 변환된 입력 데이터(X')의 보수를 생성할 수 있다. 예를 들어, 보수 생성부(120)는 입력 데이터(X)가 전달된 경우, 입력 데이터(X)의 보수(-X)를 생성할 수 있고, 변환된 입력 데이터(X')이 전달된 경우, 변환된 입력 데이터(X')의 보수(-X')을 생성할 수 있다. 구체적으로, 보수 생성부(120)는 입력 데이터(X) 또는 변환된 입력 데이터(X')의 각 비트를 반전(예를 들어, 임의의 비트 위치의 값이 0이면 1로 변경하고, 또는 임의의 비트 위치의 값이 1이면 0으로 변경)시킨 후 1을 부가할 수 있다. 보수 생성부(120)의 구체적인 동작은 하기 도 5에서 상세히 설명한다.
비트 위치 추출부(130)는 하기 수학식 1에 따른 데이터 추출 기법을 이용하여, 입력 데이터(X)(또는 변환된 입력 데이터(X')) 및 해당 입력 데이터의 보수(-X)(또는 변환된 입력 데이터의 보수(-X'))에 기초하여, 대상 값이 존재하는 비트 위치를 추출할 수 있다.
예를 들어, 도 3에 도시된 바와 같이, 입력 데이터(X)는 X[N-1], X[N-2], X[N-3], X[N-4], ..., X[3], X[2], X[1], X[0]의 N개의 비트들의 시퀀스를 포함하는 것으로 가정할 수 있다. 여기서, X[i](예를 들어, i는 0이상 N-1 이하의 정수)는 LSB로부터 i번째 비트 위치의 이진 값을 나타낼 수 있다. 도 3에서 X[N-5] 내지 X[0]의 이진 값은 0을 가정할 수 있고, X[N-4]가 LSB로부터 처음으로 1인 비트인 것을 가정할 수 있다. 비트 위치(Y)는 입력 데이터(X)에서 대상 값(예를 들어, 도 3에서는 1)이 나타나는 최우측의 비트만 유지하고, 나머지 비트들은 비대상 값(non-target value)(예를 들어, 도 3에서는 0)으로 변경된 데이터를 나타낼 수 있다.
상술한 수학식 1에서 X는 입력 데이터, -X는 입력 데이터의 보수, Y는 최우측의 대상 값이 존재하는 비트 위치, &는 비트간 논리곱(bitwise AND) 연산을 나타낼 수 있다. 수학식 1과 같이, 입력 데이터(X) 및 입력 데이터의 보수(-X)에 대해 비트간 논리곱이 적용되면, 그 결과인 비트 위치(Y)는 항상 입력 데이터(X)에서 최우측의 대상값만 유지되면서, 나머지는 비대상값으로 변경된 값을 나타낼 수 있다. 예를 들어, 도 3에 도시된 바와 같이, 비트 위치(Y)는 LSB로부터 MSB의 방향으로 입력 데이터(X)의 비트들 중 LSB로부터 첫번째 '1'이 있는 비트(예를 들어, 최우측 대상값이 존재하는 비트)만 '1'이 되고 나머지는 '0'으로 나타날 수 있다. 따라서, 상술한 수학식 1에 기초하여, 데이터 추출 장치(200)는 항상 LSB로부터 첫번째 대상값(예를 들어, '1')이 존재하는 비트 위치의 값을 알 수 있다.
예를 들어, 도 3에서 상술한 바와 같이 LSB로부터 N-4번째 비트인 X[N-4]가 최우측의 대상 값이 존재하는 비트 위치로 가정된 바, X[N-5] 내지 X[0]의 비트 위치의 값은 '0'으로 가정될 수 있다. 입력 데이터(X)와 입력 데이터의 보수(-X)는 서로 덧셈(addition)이 적용되면 그 결과가 0이 되어야 하는 보수 관계에 있다. 보수(-X)의 -X[0] 내지 -X[N-5]는 '0'이고 -X[N-4]는 입력 데이터(X)의 X[N-4]와 동일한 값을 가지기 때문에, 항상 올림이 발생할 수 있다. 이와 같이, 보수(-X)의 -X[N-3] 내지 -X[N-1]은 입력 데이터(X)의 X[N-3] 내지 X[N-1]에 대한 1의 보수(1's complement)가 되고, X[N-4]+-X[N-4]을 통하여 발생된 자리올림(carry)이 2의 보수를 위한 '1'일 수 있다.
이러한 입력 데이터(X)와 입력 데이터의 보수(-X)의 관계는 LSB부터 MSB 방향으로 첫번째 '1'이 있는 비트까지는 동일하게 '0'의 값을 가지고, 첫번째 '1'이 비트는 동일하게 '1'을 가지며, 나머지 상위 비트는 서로 반전(inversion)된 값을 가지는 특성이 있다. 따라서, 이러한 특성으로 인해, 상술한 수학식 1에 따라 입력 데이터(X) 및 입력 데이터의 보수(-X)에 대해 논리곱("AND") 연산이 적용되어 산출된 비트 위치(Y)는 최우측에 존재하는 1(예를 들어, LSB로부터 가장 가까운 1)을 나타낼 수 있다. 비트 위치(Y)는 LSB로부터 첫번째 '1'이 있는 비트의 십진수 값으로서, LSB로부터 첫번째 '1'이 있는 비트가 LSB로부터 m번째인 경우, 추출된 비트 위치(Y)는 2m(여기서, m은 0이상 N-1이하의 정수)일 수 있다. 도 3의 예시에서, 비트 위치(Y)는 2N-4의 값을 나타낼 수 있다.
일 실시예에 따른 데이터 추출 장치(200)는 입력 데이터(X)가 복수의 비트들로 구성되어 있고, 그 중에서 대상 값(예를 들어, 0 또는 1)을 가지는 비트들을 딜레이 없이 출력하거나 식별하기 위하여, 상술한 바와 같이 대상 값이 존재하는 비트 위치(Y)를 딜레이 없이 추출함으로써, 해당 비트 위치(Y)에 존재하는 비트들을 비트 위치와 함께 출력해낼 수 있다.
데이터 변환부(240)는 입력 데이터(X)로부터 대상 값의 비트 위치(Y)를 추출한 후, 추출된 비트 위치의 값을 초기화하여 입력 데이터를 변환할 수 있다. 예를 들어, 데이터 변환부(240)는 하기 수학식 2에 따라 변환된 입력 데이터(X')을 생성할 수 있다.
상술한 수학식 2에서 X는 입력 데이터, Y는 비트 위치, X'은 변환된 입력 데이터, xor은 비트간 논리적 배타합(bitwise XOR)을 나타낼 수 있다. 수학식 2에서 변환된 입력 데이터(X')는 수학식 1에서 산출된 비트 위치(Y)와 입력 데이터(X) 간의 배타적 논리합의 결과로서, 입력 데이터(X)에서 LSB로부터 최우측의 1이 존재하는 비트 위치의 값이 0이 될 수 있다. 상술한 바와 같이, LSB로부터 첫번째 '1'이 있는 비트만 '0'으로 변경되고, 변환된 입력 데이터(X')의 나머지 상위 비트는 입력 데이터(X)의 상위비트와 동일한 바, 데이터 추출 장치(200)는 수학식 2를 통해 수학식 1에 의해 추출된 첫번째 '1'을 입력 데이터(X)로부터 제외할 수 있다.
일 실시예에 따르면, 데이터 변환부(240)는 수학식 2에 따라 변환된 입력 데이터(X')를 데이터 수신부(110)로 피드백할 수 있다. 데이터 수신부(110)가 변환된 입력 데이터(X')를 보수 생성부(120), 비트 위치 추출부(130), 및 데이터 변환부(240)로 제공함으로써, 데이터 추출 장치(200)는 변환된 입력 데이터(X')를 다음 입력 데이터로써 사용할 수 있다. 데이터 추출 장치(200)는 변환된 입력 데이터(X')에 대해 비트 위치를 추출하기 위한 일련의 과정을 반복할 수 있고, 최우측의 1이 존재하는 비트 위치를 딜레이 없이 순차적으로 추출할 수 있다. 데이터 추출 장치(200)는 변환된 입력 데이터(X')이 0이 될 때까지(예를 들어, 최초 입력 데이터(X)의 모든 '1'의 값이 전부 출력될 때까지) 비트 위치(Y)를 추출하는 일련의 과정을 반복함으로써, '1'을 가지는 비트의 비트 위치에 대한 십진수 값을 딜레이 없이 연속적으로 출력할 수 있다.
도 4는 일 실시예에 따른 데이터 추출 장치의 세부적인 구성을 도시한 블록도이다.
일 실시예에 따른 데이터 추출 장치(400)의 게이트 레벨(gate level)의 회로도가 도 4와 같이 도시된다.
우선, 데이터 수신부(110)는 MUX(multiplexer)로 구현될 수 있다. 일 실시예에 따르면, 데이터 수신부(110)는 제어부(470)로부터 전달되는 인가 신호(EN)에 따라 데이터(Din[N-1:0]) 및 변환된 입력 데이터(X') 중 하나를 보수 생성부(120), 비트 위치 추출부(130), 및 데이터 변환부(240)로 전달할 수 있다. 예를 들어, 제어부(470)에서 인가 신호(EN)로서 1이 전달되는 경우 MUX는 데이터(Din)을 전달할 수 있고, 인가 신호로서 0이 전달되는 경우 MUX는 변환된 입력 데이터(X')을 전달할 수 있다. 데이터(Din)가 처음으로 수신된 경우, 데이터 수신부(110)는 데이터(Din)를 입력 데이터(X)로서 전달할 수 있고, 한번 비트 위치(Y)를 추출한 이후부터 데이터(Din) 내에서 대상 값이 존재하는 모든 비트 위치를 추출할 때까지는 변환된 입력 데이터(X')를 입력 데이터로서 전달할 수 있다.
보수 생성부(120)는 입력 데이터(X)에 대해 비트간 부정(bitwise NOT) 연산을 수행하는 부정 게이트(NOT gate)(421), 및 부정 연산(NOT operation)이 수행된 입력 데이터에 대해 1의 값을 부가(add)하는 가산기(adder)(422)를 포함할 수 있다. 보수 생성부(120)는 상술한 부정 연산 및 1의 부가에 기초하여 입력 데이터(X)에 대한 2의 보수(-X)를 생성할 수 있다.
비트 위치 추출부(130)는 입력 데이터(X) 및 보수(-X)에 대해 비트간 논리곱(bitwise AND) 연산을 수행하는 논리곱 게이트(AND gate)(431)를 포함할 수 있다. 비트 위치 추출부(130)는 입력 데이터(X) 및 보수(-X)에 비트간 논리곱을 적용하여 비트 위치(Y)를 생성할 수 있다. 여기서, 비트 위치 추출부(130)는 상술한 바와 같이 입력 데이터(X)에서 대상 값이 나타나는 최우측(rightmost)의 비트 위치(Y)를 추출할 수 있다.
데이터 변환부(240)는 입력 데이터(X) 및 추출된 비트 위치(Y)에 대해 비트간(bitwise) 배타적 논리합(XOR, exclusive OR) 연산을 수행하는 배타적 논리합 게이트(XOR gate)(441)를 포함할 수 있다. 데이터 변환부(240)는 입력 데이터(X) 및 비트 위치(Y)에 대해 비트간 배타적 논리합을 적용함으로써, 변환된 입력 데이터(X')를 생성할 수 있다. 데이터 변환부(240)는 플립플롭(F/F, flip flop)(442)를 더 포함할 수 있고, 변환된 입력 데이터(X')을 플립플롭(442)을 이용하여 다음 클럭 사이클에 데이터 수신부(110)로 전달할 수 있다.
또한, 데이터 추출 장치(400)는 출력부(450), 종료 결정부(460), 및 제어부(470) 등을 더 포함할 수 있다.
출력부(450)는 추출된 비트 위치(Y)를 출력할 수 있다. 일 실시예에 따르면, 출력부(450)는 비트 위치를 이진로그(binary log) 값의 형태(Dout[log2(N-1):0])로 출력할 수 있다. 예를 들어, LSB로부터 m번째의 비트가 첫번째 대상 값이 나타나는 비트인 경우, 추출된 비트 위치(Y)는 2m의 값을 가질 수 있고, 출력부(450)는 해당 비트 위치(Y)의 값에 대한 이진로그 값인 m으로 출력할 수 있다. 또한, m은 Dout[log2(N-1)], Dout[log2(N-1)-1], ..., Dout[2], Dout[1], Dout[0]과 같이, log2(N-1)+1개의 비트로 출력될 수 있다. 출력부(450)는 LSB부터의 대상 값의 비트 위치(Y)에 대하여, 클럭 사이클 마다 한번씩 해당 비트 위치의 2의 지수승 값을 출력할 수 있다.
종료 결정부(termination determiner)(460)는 입력 데이터(X)로부터 대상 값이 존재하는 모든 비트 위치가 추출된 것으로 판단된 경우에 응답하여, 종료 신호(Sctrl)를 생성할 수 있다. 일 실시예에 따르면, 종료 결정부(460)는 비트간 논리합 연산을 수행하는 논리합 게이트(OR gate)(461) 및 논리합 게이트의 출력을 반전하는 부정 게이트(462)를 포함할 수 있다. 예를 들어, 입력 데이터(X)로부터 모든 1이 추출된 경우, 데이터 변환부(240)의 출력은 모든 비트가 0이 되고, 변환된 입력 데이터(X')의 모든 비트가 0이면 종료 결정부(460)에 포함된 논리합 게이트(461)의 출력도 0이 되어, 결과적으로 부정 게이트(462)의 출력이 1이 될 수 있다. 종료 결정부(460)는 상술한 바에 따라 생성된 종료 신호(Sctrl)을 제어부(470)로 전달할 수 있다.
제어부(470)는 데이터 추출 장치(400)의 전반적인 동작을 제어하는 모듈로서, 종료 결정부(460)에서 생성된 종료 신호(Sctrl)에 따라 데이터(Din)로부터 모든 대상 값이 추출되어 있는지 여부를 판단하여 인가 신호(EN)를 생성하고, 데이터 추출 장치(400) 내에 클럭 사이클(clk)를 공급할 수 있다. 일 실시예에 따르면, 제어부(470)는 데이터(Din)가 수신된 때부터 최초 1사이클 동안만 인가 신호(EN)를 인가하여, 최초 한번만 데이터(Din)를 데이터 추출 장치(400)의 입력으로 사용이 되도록 데이터 수신부(110)를 제어하고, 다음 사이클부터 종료 신호(Sctrl)이 '1'이 될 때까지는 플립플롭(442)의 출력인 변환된 입력 데이터(X')이 입력 데이터로써 사용하도록 데이터 수신부(110)를 제어할 수 있다.
상술한 데이터 수신부(110), 보수 생성부(120), 비트 위치 추출부(130), 데이터 변환부(240), 출력부(450), 종료 결정부(460), 제어부(470)는 다양한 논리 게이트(logical gate), 회로적 소자(circuitry element), 전기적 소자(electrical element), 아날로그 소자(analog element), 및 디지털 소자(digital element) 등에 의해 구현될 수 있다. 또한, 상술한 부정 게이트, 논리합 게이트, 배타적 논리합 게이트, 논리곱 게이트, 및 덧셈기 등은 다양한 회로적 소자에 의해 구현될 수 있다.
도 5는 일 실시예에 따른 출력부의 구성을 도시한 블록도이다.
출력부(450)는 1부터 2N-1 사이의 값을 가지는 비트 위치(Y)를 이진 로그의 형태(log2Y)로 출력할 수 있고, 비트 위치(Y)의 이진로그 값(log2Y)은 0부터 N-1 사이의 값을 가질 수 있다. 따라서, 출력부(450)는 LSB로부터 MSB 방향으로 첫번째 대상 값이 존재하는 비트의 십진수 값인 비트 위치(Y)를 이진 로그의 형태로 출력할 수 있다. 여기서, 이진로그 값(log2Y)은 대상 값이 존재하는 비트가 LSB로부터 몇번째인 지 여부를 나타낼 수 있다.
일 실시예에 따르면, 비트 위치(Y)를 이진로그 값(log2Y)으로 변환하기 위한 로그 함수는 도 5와 같이 논리합 게이트(OR gate)(550)로 구현될 수 있다. 도 5에 도시된 바와 같이, 출력부(450)의 논리합 게이트(550)는 비트 위치(Y)를 Y[N-1] 내지 Y[0]까지 비트 단위로 수신하여, 이진로그 값(log2Y)을 Dout[log2(N-1)] 내지 Dout[0]까지 비트 단위로 출력할 수 있다.
예를 들어, 도 5에 도시된 바와 같이, 출력부(450)는 제1 논리합 게이트(551), 제2 논리합 게이트(552), 제3 논리합 게이트(553), 및 제4 논리합 게이트(554) 등으로 구현될 수 있다. 다만, 논리합 게이트의 노드 연결 방식 및 논리합 게이트의 개수를 도시된 바로 한정하는 것은 아니다.
제1 논리합 게이트(551)는 비트 위치(Y)의 2k-1 번째 비트들을 입력으로 하여 해당 비트 위치(Y)를 이진로그값으로 표현하였을 때 0번째 비트(Dout[0])을 출력할 수 있다. 예를 들어, 입력 데이터(X)가 "01100"이었던 경우, 첫번째 비트 위치(Y)는 "00100"이 되고, 이는 십진수 상으로 22=4가 되며, Y[4]=0, Y[3]=0, Y[2]=1, Y[1]=0, Y[0]=0으로 나타낼 수 있다. 따라서, 해당 예시에 있어서, Y[3], Y[1]은 0이므로, Dout[0]=0으로 출력될 수 있다.
제2 논리합 게이트(552)는 비트 위치(Y)의 2, 3번째, 6, 7번째, 10, 11번째, 14, 15번째 등의 비트들을 입력으로 하여, 해당 비트 위치(Y)를 이진로그값으로 표현하였을 때 1번째 비트(Dout[1])을 출력할 수 있다. 예를 들어, 상술한 예시에서 Y[2]=1이므로, Dout[1]=1로 출력될 수 있다.
제3 논리합 게이트(553)는 비트 위치(Y)의 4, 5, 6, 7번째, 12, 13, 14, 15번째 등의 비트들을 입력으로 하여, 해당 비트 위치(Y)를 이진로그값으로 표현하였을 때 2번째 비트(Dout[2])을 출력할 수 있다. 예를 들어, 상술한 예시에서 Y[4]=0이므로 Dout[2]=0으로 출력될 수 있다.
제4 논리합 게이트(554)는 비트 위치(Y)의 8, 9, 10, 11, 12, 13, 14, 15번째, 24, 25, 26, 27, 28, 29, 30, 31번째 등의 비트들을 입력으로 하여, 해당 비트 위치(Y)를 이진로그값으로 표현하였을 때 3번째 비트(Dout[3])을 출력할 수 있다. 다만, 상술한 예시는 제4 논리합 게이트(554)와 무관하므로 설명을 생략한다.
상술한 예시에서 이진로그값(Dout)은 Dout[1]=1인 바, 21=2로서, 해당 이진로그값(Dout)은 대상 위치가 존재하는 비트의 위치가 LSB로부터 2번째인 것을 지시할 수 있다.
이와 같이 논리합 게이트의 개수에 따라 표현될 수 있는 이진로그값의 범위가 증가할 수 있다. 이진로그값의 w번째 비트는, 비트 위치(Y)의 번째 비트들을 입력으로 하는 논리합 게이트의 출력일 수 있다. (여기서, w는 0이상의 정수, u는 0이상의 정수) 여기서, %는 나머지 연산으로서, 예를 들어, 10%4=2와 같이 계산될 수 있다. 는 플로어(floor) 연산으로서 x보다 작거나 같은 정수를 나타낼 수 있고(여기서, x는 실수), 예를 들어, 등과 같이 계산될 수 있다. 논리합 게이트(550)의 개수가 도 5에 도시된 바로 한정되는 것은 아니고, 출력되어야 하는 이진로그값의 범위에 따라 변경될 수 있다.
도 6은 일 실시예에 따른 데이터의 예시를 도시한 도면이다.
도 6은 도 4에 도시된 데이터 추출 장치에서의 데이터 값의 변경을 클럭 사이클 단위로 설명하는 도면이다.
예를 들어, 데이터(Din)로서 "110010"을 데이터 수신부(110)가 수신할 수 있다. 인가 신호(EN)에 따라 데이터 수신부(110)는 입력 데이터(X)로서 "110010"을 보수 생성부(120), 비트 위치 추출부(130), 및 데이터 변환부(240)로 전달할 수 있다. 비트 위치 추출부(130)는 첫번째 클럭 사이클에서 최우측(도 6에서는 LSB로부터 1번째)에 존재하는 1을 추출해낼 수 있다. 해당 클럭 사이클에서 데이터 변환부(240)는 변환된 입력 데이터(X')의 값을 "110000"으로 결정할 수 있고, 변환된 입력 데이터(X')를 다음 클럭 사이클에 입력 수신부(110)로 전달할 수 있다.
2번째 클럭 사이클에서 입력 수신부(110)는 인가 신호(EN)이 0이므로, 변환된 입력 데이터(X')을 다른 모듈로 전달할 수 있다. 비트 위치 추출부(130)는 2번째 클럭 사이클에서 변환된 입력 데이터(X')의 최우측(도 6에서는 4번째)에 존재하는 1을 추출해낼 수 있다. 해당 클럭 사이클에서 데이터 변환부(240)는 변환된 입력 데이터(X')의 값을 "100000"로 결정할 수 있고 변환된 입력 데이터(X')를 다음 클럭 사이클에 입력 수신부(110)로 전달할 수 있다.
3번째 클럭 사이클에서 입력 수신부(110)는 인가 신호(EN)이 0이므로 변환된 입력 데이터(X')의 값인 "100000"을 다른 모듈로 전달할 수 있다. 비트 위치 추출부(130)는 3번째 클럭 사이클에서 변환된 입력 데이터(X')의 최우측(도 6에서 5번째)에 존재하는 1을 추출해낼 수 있다. 해당 클럭 사이클에서 데이터 변환부(240)는 변환된 입력 데이터(X')의 값을 "000000"으로 결정할 수 있고, 종료 결정부(460)는 모든 비트의 값이 0이므로 종료 신호(Sctrl)의 값을 1로 결정할 수 있다. 제어부(470)는 종료 신호(Sctrl)에 따라 데이터(Din)에 대한 추출을 완료한 것으로 판단할 수 있다.
모든 비트를 검색할 경우 6클럭 사이클이 소요될 것이나, 상술한 바와 같이, 일 실시예에 따른 데이터 추출 장치(400)는 총 6비트의 입력 데이터에 대해서 3 클럭 사이클 만에 모든 대상 값을 추출해낼 수 있다. 다만, 상술한 도 6의 과정은 순전히 예시적인 것으로서 설계에 따라 세부사항은 변경될 수 있다.
도 7 내지 도 10은 일 실시예에 따른 데이터 추출 방법을 도시한 흐름도이다.
도 7 내지 도 9는 데이터 추출 장치가 데이터를 추출하는 방법을 도시한 흐름도이다.
우선, 단계(710)에서 데이터 수신부는 입력 데이터를 수신할 수 있다. 도 1 내지 도 6에서 상술한 바와 같이, 데이터 수신부는 현재 클럭 사이클에서 변환된 입력 데이터를 다음 클럭 사이클의 입력 데이터로 사용할 수 있다. 예를 들어, 도 9에 도시된 바와 같이, 데이터 수신부는 입력 데이터로서 "1110"을 수신하여 전달할 수 있다.
그리고 단계(720)에서 보수 생성부는 입력 데이터의 보수를 생성할 수 있다. 도 1 내지 도 6에서 상술한 바와 같이, 보수 생성부는 입력 데이터의 비트간 연산을 통해 입력 데이터의 보수를 생성할 수 있다. 예를 들어, 도 9의 단계(920)와 같이 보수 생성부는 2의 보수를 생성할 수 있고, 입력 데이터인 "1110"에 대한 보수는 "0010"일 수 있다.
이어서 단계(730)에서 비트 위치 추출부는 입력 데이터 및 보수에 기초하여, 입력 데이터로부터 대상 값의 비트 위치를 추출할 수 있다. 도 1 내지 도 6에서 상술한 바와 같이, 비트 위치 추출부는 입력 데이터 및 보수에 기초한 비트간 연산을 통해 비트 위치를 추출할 수 있다. 비트 위치 추출부는 입력 데이터에서 대상 값이 나타나는 최우측(rightmost)의 비트 위치를 추출할 수 있다. 예를 들어, 도 9의 단계(930)과 같이 비트 위치 추출부는 입력 데이터 및 보수에 대해 논리곱 연산을 수행할 수 있고, 입력 데이터인 "1110" 및 보수인 "0010"에 대한 논리곱 결과는 "0010"일 수 있다.
그리고, 도 8에 도시된 바와 같이, 단계(840)에서 출력부는 비트 위치를 출력할 수 있다. 출력부는 비트 위치를 이진로그 값의 형태로 출력할 수 있으나, 이로 한정하는 것은 아니다.
이어서 단계(850)에서 데이터 변환부는 입력 데이터로부터 대상 값의 비트 위치를 추출한 후, 추출된 비트 위치의 값을 초기화하여 입력 데이터를 변환할 수 있다. 예를 들어, 데이터 변환부는 도 9의 단계(950)에서 입력 데이터 및 비트 위치에 대해 배타적 논리합 연산을 수행할 수 있고, 입력 데이터인 "1110" 및 비트 위치인 "0010"에 대한 배타적 논리합 연산의 결과는 "1100"일 수 있다.
그리고 단계(860)에서 종료 결정부는 모든 비트 위치가 추출되었는지 판단할 수 있다. 예를 들어, 도 9의 단계(960)과 같이 종료 결정부는 모든 비트가 0인 지 여부를 판단할 수 있다. 여기서, 종료 결정부는 입력 데이터로부터 대상 값이 존재하는 모든 비트 위치가 추출된 것으로 판단된 경우에 응답하여, 종료 신호를 생성할 수 있고, 데이터 추출 장치는 동작을 종료할 수 있다. 모든 비트 위치가 추출되지는 않은 경우, 데이터 추출 장치는 단계(850)에서 변환된 입력 데이터(도 9에서 "1100"으로 도시됨)를 단계(720)로 돌아가 보수를 생성하는데 사용할 수 있다. 일 실시예에 따르면, 데이터 추출 장치는 모든 비트 위치가 추출될 때까지, 입력 데이터로부터 대상 값이 존재하는 비트 위치를 순차적으로 추출할 수 있다. 도 9의 단계(960)에서 도시된 바와 같이 모든 비트가 0이 아닌 경우, 변환된 입력 데이터(도 9에서는 "1100"으로 예시됨)는 단계(720, 730, 850)로 피드백(feedback)되어 사용될 수 있다.
예를 들어, 도 7 및 도 8의 단계(720)에서 보수 생성부는, 단계(860)에서 모든 비트 위치가 추출되지 않아서, 다음 클럭 사이클에서 변환된 입력 데이터를 수신한 경우, 변환된 입력 데이터의 보수를 생성할 수 있다. 이후, 단계(730)에서는 비트 위치 추출부가 변환된 입력 데이터의 보수를 이용하여, 변환된 입력 데이터로부터 대상 값의 비트 위치를 추출할 수 있다.
도 10은 대상 값이 0으로 설정된 경우의 데이터 추출 방법을 도시한 흐름도이다.
단계(1011)에서는, 데이터 수신부가 입력 데이터에 대해 부정 연산을 수행할 수 있다. 일 실시예에 따르면, 데이터 수신부는 입력 데이터에 대해 비트간 부정 연산(bitwise NOT operation)을 수행하고, 부정 연산이 수행된 입력 데이터를 보수 생성부 및 비트 위치 추출부 중 적어도 하나로 전달할 수 있다. 예를 들어, 도 10에 도시된 바와 같이, 입력 데이터로서 "0001"이 수신된 경우, 데이터 수신부는 입력 데이터를 반전한 "1110"을 단계들(820, 830, 850)로 제공할 수 있다.
상술한 바와 같이, 입력 데이터에 대해 부정 연산을 추가함으로써, 데이터 추출 장치는 입력 데이터에서 0이 존재하는 비트 위치들을 순차적으로 추출할 수 있다.
도 11은 다른 일 실시예에 따른 그룹에 기초한 데이터 추출 장치의 구성을 도시한 블록도이다.
다른 일 실시예에 따른 그룹에 기초한 데이터 추출 장치(1100)는 입력 데이터를 그룹으로 분류하여 처리할 수 있다. 입력 데이터에서 2의 보수를 산출하기 위해서는, 입력 데이터를 반전한 값에 1을 더하는 덧셈기가 요구되는 바, 입력 데이터의 비트들이 클수록 덧셈기의 크기가 증가될 수 있다. 여기서, 입력 데이터를 특정 개수의 비트들로 그룹화 하여, 그룹 단위로 상술한 도 1 내지 도 10에 도시된 데이터 추출 장치에 입력시킬 수 있다. 이러한 그룹에 기초한 데이터 추출 장치(1100)는 구현에 필요한 사이즈가 감소될 수 있다.
상술한 그룹에 기초한 데이터 추출 장치(1100)는 정보 수신부(1110), 그룹 추출부(1120), 그룹 선택부(1130), 데이터 추출부(1140), 및 출력부(1150)를 포함할 수 있다.
정보 수신부(1110)는 입력 데이터를 수신하고, 해당 입력 데이터를 그룹 단위로 분류하며, 그룹 단위의 입력 데이터를 그룹 선택부(1130)로 제공할 수 있다. 예를 들어, 정보 수신부(1110)는 그룹화부(1119)를 포함할 수 있다.
그룹화부(1119)는 입력 데이터를 복수의 그룹들로 분류하여 그룹 데이터를 생성할 수 있다. 일 실시예에 따르면, 그룹화부(1119)는 입력 데이터에 포함된 비트들을 복수의 그룹으로 분류하고, 해당 그룹으로 분류된 비트들 중 하나라도 '1'이 있으면 해당 그룹의 그룹 값은 1로 출력할 수 있다. 예를 들어, 그룹화부(1119)는 입력 데이터를 j개의 비트 단위로 하나의 그룹을 생성할 수 있고, M개의 그룹을 생성할 있다. M, j는 1이상의 정수로서 M=N/j일 수 있다. 그룹화부(1119)는 각각의 그룹에 대해, 해당 그룹 내에 포함된 j개의 비트들을 비트간 논리합 연산을 적용하여, 하나도 1이 있으면 해당 그룹의 그룹 값을 1로 결정하고, 1이 하나도 없으면 해당 그룹의 그룹 값을 0으로 결정할 수 있다. 그룹 데이터는 모든 그룹에 해당하는 일련의 그룹 값의 시퀀스를 나타내는 데이터로서, 예를 들어, M-1번째 그룹(1115)의 값, 내지, 3번째 그룹(1114)의 값, 2번째 그룹(1113)의 값, 1번째 그룹(1112)의 값, 및 0번째 그룹(1111) 값의 순서로 구성될 수 있다.
그룹 추출부(1120)는 그룹 데이터로부터 대상 그룹 값의 그룹 비트 위치를 추출할 수 있다. 대상 그룹 값은 하나라도 대상 값(예를 들어, 1)을 가지는 비트가 존재하는 그룹을 식별하기 위한 값을 나타낼 수 있다. 그룹 비트 위치는 하나라도 대상 값을 가지는 비트가 존재하는 그룹을 지시하는 값을 나타낼 수 있다. 그룹 비트 위치의 추출은 도 1 내지 도 10에서 상술한 비트 위치의 추출과 유사한 과정을 통해 수행될 수 있다. 예를 들어, 총 4개의 그룹으로 분류된 것으로 가정하고, 3번째 그룹(1114)에 1이 존재하고, 2번째 그룹(1113)에 1이 존재하며, 1번째 그룹(1112) 및 0번째 그룹(1111)에는 1이 존재하지 않는 경우, 그룹 데이터는 "1100"으로 나타낼 수 있다. 그룹 추출부(1120)는 해당 그룹 데이터로부터 최우측의 대상 그룹 값(예를 들어, 1)의 그룹 비트 위치로서 "0100"(예를 들어, LSB로부터 2번째인 것을 지시함)의 값을 추출할 수 있다. 예를 들어, 그룹 추출부(1120)는 도 1 내지 도 10에서 상술한 데이터 추출 장치와 유사하게 구성될 수 있다.
그룹 선택부(1130)는 그룹 비트 위치에 기초하여 그룹을 선택하고, 입력 데이터로부터 선택된 그룹에 대응하는 부분 데이터를 선택할 수 있다. 상술한 바와 같이 그룹 데이터가 "1100"인 예시에 있어서, 그룹 선택부(1130)는 그룹 비트 위치인 "0100"에 대응하는 그룹으로서 2번째 그룹(1113)(도 11에 Group 2로 도시됨)을 선택할 수 있고, 입력 데이터로부터 2번째 그룹(1113)에 대응하는 비트들을 부분 데이터로서 선택하여 데이터 추출부(1140)로 전달할 수 있다.
데이터 추출부(1140)는 선택된 그룹에 대응하는 부분 데이터로부터 대상 값의 비트 위치를 순차적으로 추출할 수 있다. 예를 들어, 데이터 추출부(1140)는 도 1 내지 도 10에서 상술한 데이터 추출 장치와 유사하게 구성될 수 있다. 일 실시예에 따르면, 데이터 추출부(1140)는 부분 데이터로부터 도 1 내지 도 10에서 상술한 데이터 추출 기법을 이용하여, 대상 값의 비트 위치를 순차적으로 추출하여 출력부(1150)로 제공할 수 있다.
출력부(1150)는 데이터 추출부(1140)로부터 추출된 비트 위치를 출력할 수 있다. 예를 들어, 출력부(1150)는 현재 클럭 사이클에서 선택된 그룹(예를 들어, 그룹 비트 위치)과 해당 그룹 내에서의 비트 위치를 같이 출력할 수 있다. 여기서, 비트 위치 등을 출력부(1150)는 이진로그 형태로 출력할 수도 있다.
이후, 그룹 추출부(1120)는, 데이터 추출부(1140)가 부분 데이터로부터 대상 값의 모든 비트 위치를 추출한 것으로 판단된 경우에 응답하여, 그룹 대상 값의 다음 그룹 비트 위치를 추출할 수 있다. 그룹 선택부(1130)는, 다음 그룹 비트 위치에 기초하여 다음 부분 데이터를 선택할 수 있다. 예를 들어, 데이터 추출부(1140)는 하나의 그룹에서 모든 대상 값의 추출이 완료되면, 그룹 추출부(1120)로 종료 신호를 전달할 수 있다. 그룹 추출부(1120)는 종료 신호에 응답하여, 첫번째 대상 그룹 값이 존재하던 비트를 초기화하고, 두번째 대상 그룹 값이 존재하는 그룹 비트 위치를 추출할 수 있다. 이후, 그룹 선택부(1130)가 두번째 그룹 비트 위치에 대응하는 그룹에 속하는 부분 데이터를 선택하면, 데이터 추출부(1140)는 선택된 부분 데이터의 1이 있는 비트 위치들을 출력할 수 있다.
상술한 바와 같이, 그룹에 기초한 데이터 추출 장치(1100)는 모든 그룹의 출력이 '0'이 될 때까지 반복하여, 비트 위치를 순차적으로 출력할 수 있다. 그룹에 기초한 데이터 추출 장치(1100)는 입력 데이터의 비트 수가 많은 경우에도, 그룹핑을 통하여, 딜레이 없는 시프트 레지스터로서 동작할 수 있다.
그룹에 기초한 데이터 추출 장치(1100)에 포함되는 정보 수신부(1110), 그룹 추출부(1120), 그룹 선택부(1130), 데이터 추출부(1140), 및 출력부(1150) 등은 다양한 논리 게이트(logical gate), 회로적 소자(circuitry element), 전기적 소자(electrical element), 아날로그 소자(analog element), 및 디지털 소자(digital element) 등에 의해 구현될 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다.  예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
110: 데이터수신부
120: 보수생성부
130: 데이터추출부
100: 데이터 추출 장치

Claims (20)

  1. 제0 내지 제N-1 비트 위치들을 포함하는 비트 위치들에서 임의로 배치된 대상 값들을 포함하는 입력 데이터(input data)를 수신하도록 구성되는 데이터 수신부;
    상기 입력 데이터의 상기 비트 위치들의 비트 값들을 반전하고, 상기 반전된 입력 데이터에 “1”의 값을 부가으로써, 상기 입력 데이터의 보수(complement)를 생성하는 보수 생성부;
    상기 입력 데이터 및 상기 보수를 기반으로, 상기 입력 데이터의 상기 비트 위치들에 존재하는 상기 대상 값들 중, 상기 입력 데이터에서 상기 제0 비트 위치와 가장 가깝거나 또는 상기 제0비트 위치에 위치한 대상 값을 포함하는 비트 위치를 추출하도록 구성된 비트 위치 추출부;
    상기 추출된 비트 위치를 출력하도록 구성된 프로세서; 및
    현재 사이클에서 추출된 상기 비트 위치의 비트 값을 초기화함으로써, 상기 입력 데이터를 변환하고, 다음 사이클에서 사용되도록 상기 변환된 입력 데이터를 출력하도록 구성된 데이터 변환부를 포함하고,
    상기 비트 위치 추출부는 입력된 데이터로부터 상기 대상 값들을 포함하는 상기 비트 위치들을 순차적으로 추출하도록 구성되고,
    상기 데이터 변환부는:
    상기 입력 데이터의 대응하는 비트 값들 및 상기 추출된 비트 위치에 대한 비트간 배타적 논리합 연산을 수행하여 상기 변환된 입력 데이터를 생성하도록 구성된 배타적 논리합(XOR; exclusive OR) 게이트를 포함하는,
    데이터 추출 장치.
  2. 삭제
  3. 제1항에 있어서,
    상기 데이터 수신부는,
    상기 변환된 입력 데이터를 상기 데이터 변환부로부터 수신하여, 상기 보수 생성부, 상기 비트 위치 추출부, 및 상기 데이터 변환부 중 적어도 하나로 전달하는,
    데이터 추출 장치.
  4. 삭제
  5. 제1항에 있어서,
    상기 비트 위치 추출부는,
    상기 입력 데이터에서 상기 대상 값이 나타나는 최우측(rightmost)의 비트 위치를 순차적으로 추출하고,
    상기 최우측의 비트 위치는 상기 대상 값을 포함하고 상기 비트 위치 추출부로 입력된 상기 데이터의 상기 제0 비트 위치에 가장 가까운 비트 위치인
    데이터 추출 장치.
  6. 제1항에 있어서,
    상기 비트 위치 추출부는,
    상기 입력 데이터 및 상기 보수에 대해 비트간 논리곱(bitwise AND) 연산을 수행함으로써, 하나의 비트 위치만 상기 대상 값에 대응하는 값을 갖는 비트 위치 데이터를 생성하도록 구성된 논리곱 게이트(AND gate)를 포함하고,
    상기 비트 위치 추출부는 상기 비트 위치 데이터로부터 상기 제0 비트 위치에 가장 가깝거나 또는 상기 제0 비트 위치에 위치한 상기 대상 값을 포함하는 상기 비트 위치를 추출하도록 구성된 데이터 추출 장치.
  7. 제1항에 있어서,
    상기 보수 생성부는,
    상기 입력 데이터에 대해 비트간 부정(bitwise NOT) 연산을 수행함으로써, 상기 입력 데이터의 상기 비트 값들 각각에 대해 반전된 비트 값을 갖는 반전된 입력 데이터를 생성하도록 구성된 부정 게이트(NOT gate); 및
    상기 반전된 입력 데이터에 대해 1의 값을 부가(add)하여 상기 보수를 생성하도록 구성된 가산기(adder)를 포함하는 데이터 추출 장치.
  8. 제1항에 있어서,
    상기 추출된 비트 위치를 출력하는 출력부
    를 더 포함하는 데이터 추출 장치.
  9. 제8항에 있어서,
    상기 출력부는,
    상기 비트 위치를 이진로그(binary log) 값의 형태로 출력하는,
    데이터 추출 장치.
  10. 제1항에 있어서,
    상기 입력 데이터로부터 상기 대상 값이 존재하는 모든 비트 위치가 추출된 것으로 판단된 경우에 응답하여, 종료 신호를 생성하는 종료 결정부(termination determiner)를 더 포함하고,
    상기 데이터 수신부는,
    상기 입력 데이터에 대해 비트간 부정 연산(bitwise NOT operation)을 수행하고, 부정 연산이 수행된 입력 데이터를 상기 보수 생성부 및 상기 비트 위치 추출부 중 적어도 하나로 전달하도록 구성된
    데이터 추출 장치.
  11. 제1항에 있어서,
    복수의 엘리먼트들을 포함하는 이벤트 센서를 더 포함하고,
    상기 복수의 엘리먼트들에서 이벤트가 발생한 위치들은 상기 데이터 수신부에 의해 수신되는 상기 입력 데이터로서 사용되는
    데이터 추출 장치.
  12. 제0 내지 제N-1 비트 위치들을 포함하는 비트 위치들에 임의로 위치한 대상 값들을 포함하는 입력 데이터(input data)를 수신하는 단계, 단 N은 1보다 큰 정수;
    상기 입력 데이터의 상기 비트 위치들의 비트 값들을 반전하고, 상기 반전된 입력 데이터에 1의 값을 부가함으로써, 상기 입력 데이터의 보수(complement)를 생성하는 단계;
    상기 입력 데이터 및 상기 보수에 기초하여, 상기 입력 데이터에서, 상기 제0 비트 위치와 가장 가깝거나 또는 상기 제0 비트 위치에 위치한 대상 값을 포함하는 비트 위치(bit position)를 추출하는 단계;
    상기 추출된 비트 위치를 출력하는 단계; 및
    상기 입력 데이터의 대응하는 비트 값들 및 상기 추출된 비트 위치들에 대한 비트간 배타적 논리합 연산을 수행하여 상기 입력 데이터를 변환하고, 다음 사이클에서, 상기 변환된 입력 데이터를 사용하는 단계를 포함하고,
    상기 비트 위치를 추출하는 단계는:
    상기 입력 데이터 및 상기 보수에 대한 비트간 논리곱 연산을 수행함으로써, 상기 대상 값에 대응하는 값을 갖는 비트 위치만 포함하는 비트 위치 데이터를 생성하는 단계; 및
    상기 비트 위치 데이터로부터 상기 대상 값을 갖는 최우측 비트 위치를 추출하는 단계를 포함하는
    데이터 추출 방법.
  13. 제12항에 있어서,
    상기 입력 데이터로부터 상기 대상 값이 존재하는 비트 위치를 순차적으로 추출하는 단계
    를 더 포함하는 데이터 추출 방법.
  14. 삭제
  15. 제12항에 있어서,
    상기 최우측 비트 위치는 상기 제0 비트 위치에 가장 가까운 비트 위치이고,
    상기 데이터 추출 방법은
    클럭 사이클에 기초하여, 상기 비트 위치들 각각을 순차적으로 추출하고 출력하는 단계를 더 포함하고,
    상기 출력하는 단계는:
    상기 비트 위치를 이진로그(binary log) 값의 형태로 출력하는 단계를 포함하고,
    상기 데이터 추출 방법은:
    상기 입력 데이터로부터 상기 대상 값이 존재하는 모든 비트 위치가 추출된 것으로 판단된 경우에 응답하여, 종료 신호를 생성하는 단계
    를 더 포함하는 데이터 추출 방법.
  16. 삭제
  17. 삭제
  18. 제12항에 있어서,
    상기 입력 데이터를 수신하는 단계는:
    복수의 엘리먼트들을 포함하는 이벤트 센서로부터 상기 입력 데이터를 수신하는 단계를 포함하고,
    상기 복수의 엘리먼트들 중 이벤트가 발생한 위치들은 상기 입력 데이터로서 사용되는 데이터 추출 방법.
  19. 입력 데이터를 복수의 그룹들로 분류하여 그룹 데이터를 생성하는 그룹화부;
    상기 그룹 데이터로부터 대상 그룹 값의 그룹 비트 위치를 추출하는 그룹 추출부;
    상기 그룹 비트 위치에 기초하여 그룹을 선택하고, 상기 입력 데이터로부터 선택된 그룹에 대응하는 부분 데이터를 선택하는 그룹 선택부;
    상기 선택된 그룹에 대응하는 부분 데이터로부터 대상 값의 비트 위치를 순차적으로 추출하는 데이터 추출부; 및
    추출된 비트 위치를 출력하도록 구성된 프로세서를 포함하고,
    상기 그룹화부는 상기 그룹들 각각이 특정 개수의 비트들을 포함하도록 상기 입력 데이터의 그룹들을 생성하고, 상기 대상 값을 포함하는 비트들이 존재하는지 판별하고, 상기 대상 값을 포함하는 대상 그룹의 상기 그룹 비트 위치를 생성하도록 구성되고,
    상기 그룹 선택부는 상기 그룹에 상기 대상 값의 존재를 가리키는 상기 그룹 비트 위치를 갖는 상기 그룹들만 선택하도록 구성되는 데이터 추출 장치.
  20. 제19항에 있어서,
    상기 그룹 추출부는,
    상기 데이터 추출부가 상기 부분 데이터로부터 대상 값의 모든 비트 위치를 추출한 것으로 판단된 경우에 응답하여, 그룹 대상 값의 다음 그룹 비트 위치를 추출하고,
    상기 그룹 선택부는,
    상기 다음 그룹 비트 위치에 기초하여 다음 부분 데이터를 선택하는,
    그룹에 기초한 데이터 추출 장치.



KR1020160020441A 2016-02-22 2016-02-22 데이터를 추출하는 장치 및 방법 KR102560778B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020160020441A KR102560778B1 (ko) 2016-02-22 2016-02-22 데이터를 추출하는 장치 및 방법
US15/299,010 US9898254B2 (en) 2016-02-22 2016-10-20 Data extraction method and apparatus
EP16195415.1A EP3208708B1 (en) 2016-02-22 2016-10-25 Data extraction method and apparatus
JP2017030429A JP6925823B2 (ja) 2016-02-22 2017-02-21 データを抽出する装置及び方法
CN201710095461.5A CN107102840B (zh) 2016-02-22 2017-02-22 数据提取方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160020441A KR102560778B1 (ko) 2016-02-22 2016-02-22 데이터를 추출하는 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20170098482A KR20170098482A (ko) 2017-08-30
KR102560778B1 true KR102560778B1 (ko) 2023-07-27

Family

ID=57391749

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160020441A KR102560778B1 (ko) 2016-02-22 2016-02-22 데이터를 추출하는 장치 및 방법

Country Status (5)

Country Link
US (1) US9898254B2 (ko)
EP (1) EP3208708B1 (ko)
JP (1) JP6925823B2 (ko)
KR (1) KR102560778B1 (ko)
CN (1) CN107102840B (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108664429B (zh) * 2018-03-30 2020-07-24 无锡睿勤科技有限公司 主从配置沟通协议、提高兼容性的方法以及电子设备
CN111177699B (zh) * 2019-12-23 2022-07-08 恒大恒驰新能源汽车科技(广东)有限公司 一种数据提取方法、秘钥生成方法、解锁方法及装置
CN116932838B (zh) * 2023-09-13 2023-11-24 浙江寰福科技有限公司 基于数据库的数据查询、更新、存储方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050289203A1 (en) * 2004-06-24 2005-12-29 Breternitz Mauricio Jr Efficient execution and emulation of bit scan operations

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3430208A (en) 1966-08-12 1969-02-25 Bell Telephone Labor Inc Arrangement for determining bit position of least significant bit having a predetermined value
US6513053B1 (en) * 2000-01-12 2003-01-28 Arm Limited Data processing circuit and method for determining the first and subsequent occurences of a predetermined value in a sequence of data bits
US20030105786A1 (en) * 2001-11-30 2003-06-05 Athas William C. Method and apparatus for quantifying the number of identical consecutive digits within a string
KR100450750B1 (ko) 2002-04-17 2004-10-01 한국전자통신연구원 향상된 선형 궤환 시프트 레지스터 구조의 유한체 승산기
JP2005063540A (ja) 2003-08-11 2005-03-10 Yoshito Tanaka 自己動作判定機能を有する高速アナログシフトレジスタ
GB0412296D0 (en) * 2004-06-02 2004-07-07 Council Cent Lab Res Councils Imaging device
JP2009273079A (ja) 2008-05-12 2009-11-19 Sony Corp 送信装置、送信方法、受信装置、受信方法、プログラム、および通信システム
CN102870163B (zh) 2010-04-28 2015-06-17 夏普株式会社 移位寄存器电路和显示装置及移位寄存器电路的驱动方法
JP6093207B2 (ja) 2013-03-08 2017-03-08 株式会社メガチップス 線形フィードバックシフトレジスタ
US9323498B2 (en) * 2013-03-13 2016-04-26 Wisconsin Alumni Research Foundation Multiplier circuit with dynamic energy consumption adjustment

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050289203A1 (en) * 2004-06-24 2005-12-29 Breternitz Mauricio Jr Efficient execution and emulation of bit scan operations

Also Published As

Publication number Publication date
CN107102840B (zh) 2023-07-04
US20170244923A1 (en) 2017-08-24
US9898254B2 (en) 2018-02-20
CN107102840A (zh) 2017-08-29
JP6925823B2 (ja) 2021-08-25
EP3208708B1 (en) 2019-11-27
EP3208708A1 (en) 2017-08-23
JP2017151986A (ja) 2017-08-31
KR20170098482A (ko) 2017-08-30

Similar Documents

Publication Publication Date Title
CN110447010B (zh) 在硬件中执行矩阵乘法
Ichihara et al. Compact and accurate digital filters based on stochastic computing
CN115039067A (zh) 包括具有高效预规格化和扩展动态范围的熔合乘法累加的脉动阵列
KR102560778B1 (ko) 데이터를 추출하는 장치 및 방법
JP7292297B2 (ja) 確率的丸めロジック
CN113126953A (zh) 针对浮点处理的方法和装置
CN111950692A (zh) 用于改进的通用化的基于汉明距离的稳健输出编码
CN117813585A (zh) 具有高效输入缩减和扩展阵列性能的脉动阵列
CN111914987A (zh) 基于神经网络的数据处理方法及装置、设备和可读介质
US9841979B2 (en) Method and apparatus for shuffling data using hierarchical shuffle units
JP6367959B2 (ja) 部分文字列位置検出装置、部分文字列位置検出方法及びプログラム
JP6324264B2 (ja) 三値内積演算回路、三値内積演算処理プログラム、及び、三値内積演算回路による演算処理方法
CN110716751B (zh) 高并行度计算平台、系统及计算实现方法
CN104317892B (zh) 可移植可执行文件的时序特征处理方法及装置
KR101418686B1 (ko) 유한체에서 타입 4 가우시안 정규기저를 이용한 이차 미만의 공간 복잡도를 갖는 병렬 곱셈 연산방법 및 그 연산장치
Solomko et al. Study of carry optimization while adding binary numbers in the rademacher number-theoretic basis
KR20230055021A (ko) Nested 와 Overlapped Named Entity 인식을 위한 피라미드 Layered 어텐션 모델
KR20220018199A (ko) 희소성 데이터를 이용하는 연산 장치 및 그것의 동작 방법
KR101614215B1 (ko) 저전력 곱셈기 및 그 동작 방법
KR101893661B1 (ko) 정수문자집합에 대한 문자열의 δ-근사주기와 γ-근사주기 계산 방법
Soni et al. FPGA Implementation of Ternary Multiplier Using Reconfigurable Logic
Jiang et al. Residue-Weighted Number Conversion with Moduli Set {2^ p-1, 2^ p+ 1, 2^{2p}+ 1, 2^ p} Using Signed-Digit Number Arithmetic
RU2557450C1 (ru) Способ преобразования бинарного кода грея в двоичный код
CN118014021A (en) Method for AI reasoning software stack acceleration by using FPGA
Myllari et al. Numerical Symbolic Dynamics: Complexity of Finite Sequences

Legal Events

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