[go: up one dir, main page]

KR102859344B1 - Fpga-based spi communication method and device for performing the same - Google Patents

Fpga-based spi communication method and device for performing the same

Info

Publication number
KR102859344B1
KR102859344B1 KR1020220108596A KR20220108596A KR102859344B1 KR 102859344 B1 KR102859344 B1 KR 102859344B1 KR 1020220108596 A KR1020220108596 A KR 1020220108596A KR 20220108596 A KR20220108596 A KR 20220108596A KR 102859344 B1 KR102859344 B1 KR 102859344B1
Authority
KR
South Korea
Prior art keywords
data
instructions
processor
fpga
slave device
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
KR1020220108596A
Other languages
Korean (ko)
Other versions
KR20240030054A (en
Inventor
남성우
Original Assignee
(주)인텔리안테크놀로지스
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by (주)인텔리안테크놀로지스 filed Critical (주)인텔리안테크놀로지스
Priority to KR1020220108596A priority Critical patent/KR102859344B1/en
Publication of KR20240030054A publication Critical patent/KR20240030054A/en
Application granted granted Critical
Publication of KR102859344B1 publication Critical patent/KR102859344B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

FPGA 기반 SPI 통신 방법 및 이를 수행하는 장치가 개시된다. 다양한 실시예에 따른 SPI(serial peripheral interface) 통신을 수행하는 전자 장치는 데이터들 및 슬레이브 장치로의 상기 데이터들의 전송과 관련되는 정보들 중에서 적어도 하나를 포함하는 인스트럭션들을 생성하는 프로세서; 및 상기 프로세서와 전기적으로 연결되는 FPGA(field programmable gate array)를 포함하고, 상기 FPGA는 상기 프로세서로부터 상기 인스트럭션들을 수신하고, 상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 슬레이브 장치로 상기 데이터들의 전송을 시작하고, 상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 슬레이브 장치로 상기 데이터들을 병렬로 전송할 수 있다.An FPGA-based SPI communication method and a device for performing the same are disclosed. An electronic device for performing SPI (serial peripheral interface) communication according to various embodiments includes: a processor for generating instructions including at least one of data and information related to transmission of the data to a slave device; and an FPGA (field programmable gate array) electrically connected to the processor, wherein the FPGA receives the instructions from the processor, initiates transmission of the data to the slave device based on at least some of the instructions, and transmits the data to the slave device in parallel based on at least some of the instructions.

Description

FPGA 기반 SPI 통신 방법 및 이를 수행하는 장치{FPGA-BASED SPI COMMUNICATION METHOD AND DEVICE FOR PERFORMING THE SAME}FPGA-BASED SPI COMMUNICATION METHOD AND DEVICE FOR PERFORMING THE SAME

아래 개시는 FPGA 기반 SPI 통신 방법 및 이를 수행하는 장치에 관한 것이다.The following disclosure relates to an FPGA-based SPI communication method and a device performing the same.

SPI(serial peripheral interface)는 전이중 통신 모드(full duplex mode)로 동작하는 근거리용 직렬 통신 규격(serial communication standard)으로 마스터 장치(master device)와 슬레이브 장치(slave device)간 통신을 말한다. SPI 통신을 위해서는 MOSI(master out slave input), MISO(mater input slave out), CS(chip select), 및 SLCK(serial clock)와 같은 핀들(pins)이 필요할 수 있다. MOSI는 마스터 장치로부터 슬레이브 장치로 전송되는 데이터를 위한 신호 라인을 의미하고, MISO는 슬레이브 장치에서 마스터 장치로 전송되는 데이터를 위한 신호 라인을 의미하고, CS는 여러 개의 슬레이브 장치 중에서 마스터 장치와 통신하는 슬레이브 장치를 선택하기 위한 신호 라인을 의미하고, SLCK는 동기화를 위한 클럭 신호 라인을 의미할 수 있다.SPI (Serial Peripheral Interface) is a short-distance serial communication standard that operates in full duplex mode and refers to communication between a master device and a slave device. For SPI communication, pins such as MOSI (master out slave input), MISO (master input slave out), CS (chip select), and SLCK (serial clock) may be required. MOSI refers to a signal line for data transmitted from a master device to a slave device, MISO refers to a signal line for data transmitted from a slave device to a master device, CS refers to a signal line for selecting a slave device to communicate with a master device among multiple slave devices, and SLCK refers to a clock signal line for synchronization.

관련 선행기술로, 한국 등록특허공보 제 KR 1447154 B1호(발명의 명칭: FPGA를 이용한 범용 SPI 코어의 동작 방법)가 있다.As a related prior art, there is Korean Patent Publication No. KR 1447154 B1 (Title of invention: Operating method of general-purpose SPI core using FPGA).

위에서 설명한 배경기술은 발명자가 본원의 개시 내용을 도출하는 과정에서 보유하거나 습득한 것으로서, 반드시 본 출원 전에 일반 공중에 공개된 공지기술이라고 할 수는 없다.The background technology described above is technology that the inventor possessed or acquired in the process of deriving the disclosure of the present application, and cannot necessarily be said to be publicly known technology disclosed to the general public prior to the present application.

SPI 통신을 수행하는 마스터 장치는 프로세서(예: ARM coretex-A9과 같은 어플리케이션 프로세서) 및 FPGA(field programmable gate array)를 포함할 수 있다. 프로세서는 데이터들을 FPGA로 전송하고, FPGA는 수신된 데이터를 슬레이브 장치(예: VAIC(vector-amplifier integrated circuit)를 포함하는 위상 배열 안테나 장치(phased array antenna device)로 전송할 수 있다. 프로세서와 FPGA 사이의 데이터 전송 속도는 FPGA와 슬레이브 장치 사이의 데이터 전송 속도보다 빠를 수 있다. 이와 같은 데이터 전송 속도 차이는 마스터 장치 및/또는 슬레이브 장치의 동작 속도를 저하시킬 수 있다.A master device performing SPI communication may include a processor (e.g., an application processor such as an ARM Cortex-A9) and a field programmable gate array (FPGA). The processor may transmit data to the FPGA, and the FPGA may transmit received data to a slave device (e.g., a phased array antenna device including a vector-amplifier integrated circuit (VAIC). The data transfer rate between the processor and the FPGA may be faster than the data transfer rate between the FPGA and the slave device. This difference in data transfer rates may slow down the operating speed of the master device and/or the slave device.

다양한 실시예들은 FPGA에서 슬레이브 장치로 데이터들을 병렬로 전송함으로써 마스터 장치 및 슬레이브 장치의 동작 속도를 향상시킬 수 있다.Various embodiments can improve the operating speed of the master device and slave devices by transmitting data in parallel from the FPGA to the slave devices.

다양한 실시예들은 FPGA에서 수행되는 동작들을 동기 클럭에 기초하여 지연시킴으로써 GPIO를 특정 시간에 트리거링(triggering)할 수 있다.Various embodiments can trigger GPIOs at specific times by delaying operations performed in the FPGA based on a synchronous clock.

다만, 기술적 과제는 상술한 기술적 과제들로 한정되는 것은 아니며, 또 다른 기술적 과제들이 존재할 수 있다.However, technical challenges are not limited to the technical challenges described above, and other technical challenges may exist.

다양한 실시예에 따른 SPI 통신을 수행하는 전자 장치는 데이터들 및 슬레이브 장치로의 상기 데이터들의 전송과 관련되는 정보들 중에서 적어도 하나를 포함하는 인스트럭션들을 생성하는 프로세서; 및 상기 프로세서와 전기적으로 연결되는 FPGA(field programmable gate array)를 포함하고, 상기 FPGA는 상기 프로세서로부터 상기 인스트럭션들을 수신하고, 상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 슬레이브 장치로 상기 데이터들의 전송을 시작하고, 상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 슬레이브 장치로 상기 데이터들을 병렬로 전송할 수 있다.An electronic device performing SPI communication according to various embodiments includes a processor that generates instructions including at least one of data and information related to transmission of the data to a slave device; and a field programmable gate array (FPGA) electrically connected to the processor, wherein the FPGA receives the instructions from the processor, initiates transmission of the data to the slave device based on at least some of the instructions, and transmits the data to the slave device in parallel based on at least some of the instructions.

상기 FPGA는 상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 FPGA의 GPIO(general purpose input/output)의 트리거링(triggering)을 지연시킬 수 있다.The FPGA can delay triggering of a GPIO (general purpose input/output) of the FPGA based on at least some of the instructions.

상기 FPGA는 상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 데이터들의 전송 상태를 확인하고, 상기 데이터들의 전송이 완료될 때까지 상기 GPIO의 트리거링을 지연시킬 수 있다.The FPGA can check the transmission status of the data based on at least some of the instructions among the instructions, and delay triggering of the GPIO until the transmission of the data is completed.

상기 FPGA는 상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 데이터들이 병렬로 전송되는 채널들의 CS(chip select) 라인들 중 어느 하나의 CS 라인을 이용하여 데이터를 전송할 수 있다.The FPGA can transmit data using one of the CS (chip select) lines of the channels through which the data is transmitted in parallel based on at least some of the instructions among the instructions.

다양한 실시예에 따른 SPI 통신을 수행하는 전자 장치는 슬레이브 장치로부터의 데이터들의 수신과 관련되는 정보들 중 적어도 하나를 포함하는 인스트럭션들을 생성하는 프로세서; 및 상기 프로세서와 전기적으로 연결되는 FPGA를 포함하고, 상기 FPGA는 상기 프로세서로부터 상기 인스트럭션들을 수신하고, 상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 슬레이브 장치로부터 상기 데이터들의 수신을 시작하고, 상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 슬레이브 장치로부터 상기 데이터들을 병렬로 수신하고, 상기 데이터들을 상기 프로세서에 전송할 수 있다.An electronic device performing SPI communication according to various embodiments includes a processor that generates instructions including at least one piece of information related to receiving data from a slave device; and an FPGA electrically connected to the processor, wherein the FPGA receives the instructions from the processor, initiates reception of the data from the slave device based on at least some of the instructions, receives the data in parallel from the slave device based on at least some of the instructions, and transmits the data to the processor.

상기 FPGA는 상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 FPGA의 GPIO의 트리거링(triggering)을 지연시킬 수 있다.The FPGA can delay triggering of a GPIO of the FPGA based on at least some of the instructions.

상기 FPGA는 상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 데이터들의 수신 상태를 확인하고, 상기 데이터들의 수신이 완료될 때까지 상기 GPIO의 트리거링을 지연시킬 수 있다.The FPGA can check the reception status of the data based on at least some of the instructions among the instructions, and delay triggering of the GPIO until reception of the data is completed.

상기 FPGA는 상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 데이터들이 병렬로 수신되는 채널들의 CS(chip select) 라인들 중 어느 하나의 CS 라인을 이용하여 데이터를 수신할 수 있다.The FPGA can receive data using one of the CS (chip select) lines of the channels through which the data is received in parallel based on at least some of the instructions.

다양한 실시예에 따른 SPI 통신을 수행하는 전자 장치에 포함되는 FPGA의 동작 방법은 데이터들 및 슬레이브 장치로의 상기 데이터들의 전송과 관련되는 정보들 중 적어도 하나를 포함하는 인스트럭션들을 프로세서로부터 수신하는 동작; 상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 슬레이브 장치로 상기 데이터들의 전송을 시작하는 동작; 및 상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 슬레이브 장치로 상기 데이터들을 병렬로 전송하는 동작을 포함할 수 있다.An operating method of an FPGA included in an electronic device performing SPI communication according to various embodiments may include: receiving instructions from a processor, the instructions including at least one of data and information related to transmission of the data to a slave device; starting transmission of the data to the slave device based on at least some of the instructions; and transmitting the data to the slave device in parallel based on at least some of the instructions.

상기 동작 방법은 상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 FPGA의 GPIO의 트리거링(triggering)을 지연시키는 동작을 더 포함할 수 있다.The above operating method may further include an operation of delaying triggering of a GPIO of the FPGA based on at least some of the instructions among the instructions.

상기 지연시키는 동작은 상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 데이터들의 전송 상태를 확인하는 동작; 및 상기 데이터들의 전송이 완료될 때까지 상기 GPIO의 트리거링을 지연시키는 동작을 포함할 수 있다.The above delaying operation may include an operation of checking the transmission status of the data based on at least some of the instructions among the instructions; and an operation of delaying the triggering of the GPIO until the transmission of the data is completed.

상기 데이터들을 병렬로 전송하는 동작은 상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 데이터들이 병렬로 전송되는 채널들의 CS 라인들 중 어느 하나의 CS 라인을 이용하여 데이터를 전송하는 동작을 포함할 수 있다.The operation of transmitting the above data in parallel may include an operation of transmitting the data using one of the CS lines of the channels through which the data is transmitted in parallel based on at least some of the instructions among the above instructions.

다양한 실시예에 따른 SPI 통신을 수행하는 전자 장치에 포함되는 FPGA의 동작 방법은 슬레이브 장치로부터의 데이터들의 수신과 관련되는 정보들 중 적어도 하나를 포함하는 인스트럭션들을 프로세서로부터 수신하는 동작; 상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 슬레이브 장치로부터 데이터들의 수신을 시작하는 동작; 상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 슬레이브 장치로부터 상기 데이터들을 병렬로 수신하는 동작; 및 상기 데이터들을 상기 프로세서로 전송하는 동작을 포함할 수 있다.An operating method of an FPGA included in an electronic device performing SPI communication according to various embodiments may include: receiving instructions from a processor, the instructions including at least one piece of information related to receiving data from a slave device; starting to receive data from the slave device based on at least some of the instructions; receiving the data from the slave device in parallel based on at least some of the instructions; and transmitting the data to the processor.

상기 동작 방법은 상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 FPGA의 GPIO의 트리거링(triggering)을 지연시키는 동작을 더 포함할 수 있다.The above operating method may further include an operation of delaying triggering of a GPIO of the FPGA based on at least some of the instructions among the instructions.

상기 지연시키는 동작은 상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 데이터들의 수신 상태를 확인하는 동작; 및 상기 데이터들의 수신이 완료될 때까지 상기 GPIO의 트리거링을 지연시키는 동작을 포함할 수 있다.The above delaying operation may include an operation of checking the reception status of the data based on at least some of the instructions among the instructions; and an operation of delaying the triggering of the GPIO until the reception of the data is completed.

도 1은 다양한 실시예에 따른 SPI 통신 시스템을 설명하기 위한 도면이다.
도 2는 다양한 실시예에 따른 FPGA를 설명하기 위한 도면이다.
도 3은 다양한 실시예에 따른 인스트럭션 디스패처를 설명하기 위한 도면이다.
도 4는 다양한 실시예에 따른 SPI 트랜시버를 설명하기 위한 도면이다.
도 5는 다양한 실시예에 따른 인스트럭션 디스패처와 SPI 트랜시버 사이의 버스 인터커넥션을 설명하기 위한 도면이다.
도 6은 다양한 실시예에 따른 FPGA의 동작의 일 예를 설명하기 위한 순서도이다.
도 7은 다양한 실시예에 따른 FPGA의 동작의 일 예를 설명하기 위한 순서도이다.
FIG. 1 is a drawing for explaining an SPI communication system according to various embodiments.
FIG. 2 is a diagram for explaining an FPGA according to various embodiments.
FIG. 3 is a diagram illustrating an instruction dispatcher according to various embodiments.
FIG. 4 is a diagram illustrating an SPI transceiver according to various embodiments.
FIG. 5 is a diagram illustrating a bus interconnection between an instruction dispatcher and an SPI transceiver according to various embodiments.
Figure 6 is a flowchart illustrating an example of the operation of an FPGA according to various embodiments.
Figure 7 is a flowchart illustrating an example of the operation of an FPGA according to various embodiments.

실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.Specific structural or functional descriptions of the embodiments are disclosed for illustrative purposes only and may be modified and implemented in various forms. Therefore, the actual implementation is not limited to the specific embodiments disclosed, and the scope of this specification includes modifications, equivalents, or alternatives within the technical concepts described in the embodiments.

제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.Although terms such as "first" or "second" may be used to describe various components, these terms should be interpreted solely to distinguish one component from another. For example, a first component may be referred to as a second component, and similarly, a second component may also be referred to as a first component.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.When it is said that a component is "connected" to another component, it should be understood that it may be directly connected or connected to that other component, but there may also be other components in between.

단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 문서에서, "A 또는 B", "A 및 B 중 적어도 하나", "A 또는 B 중 적어도 하나", "A, B 또는 C", "A, B 및 C 중 적어도 하나", 및 "A, B, 또는 C 중 적어도 하나"와 같은 문구들 각각은 그 문구들 중 해당하는 문구에 함께 나열된 항목들 중 어느 하나, 또는 그들의 모든 가능한 조합을 포함할 수 있다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.Singular expressions include plural expressions unless the context clearly dictates otherwise. In this document, phrases such as "A or B", "at least one of A and B", "at least one of A or B", "A, B, or C", "at least one of A, B, and C", and "at least one of A, B, or C" can each include any one of the items listed together in that phrase, or all possible combinations thereof. In this specification, it should be understood that the terms "comprises" or "has" and the like are intended to specify the presence of a described feature, number, step, operation, component, part, or combination thereof, but do not exclude the presence or addition of one or more other features, numbers, steps, operations, components, parts, or combinations thereof.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless otherwise defined, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by a person of ordinary skill in the art. Terms defined in commonly used dictionaries should be interpreted to have a meaning consistent with their meaning in the context of the relevant technology, and will not be interpreted in an idealized or overly formal sense unless explicitly defined herein.

이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.Hereinafter, embodiments will be described in detail with reference to the attached drawings. In the description with reference to the attached drawings, identical components are assigned the same reference numerals regardless of the drawing numbers, and redundant descriptions thereof will be omitted.

도 1은 다양한 실시예에 따른 SPI 통신 시스템을 설명하기 위한 도면이다.FIG. 1 is a drawing for explaining an SPI communication system according to various embodiments.

도 1을 참조하면, 다양한 실시예에 따르면, 마스터 장치(110)(예: 전자 장치)와 슬레이브 장치(190)는 SPI(serial peripheral interface)통신을 통해 데이터(예: SPI 데이터)를 송수신할 수 있다.Referring to FIG. 1, according to various embodiments, a master device (110) (e.g., an electronic device) and a slave device (190) can transmit and receive data (e.g., SPI data) through SPI (serial peripheral interface) communication.

다양한 실시예에 따르면, 마스터 장치(110)는 프로세서(130)(예: ARM coretex-A9과 같은 어플리케이션 프로세서(application processor)) 및 FPGA(field programmable gate array)(170)를 포함할 수 있다. 프로세서(130)는 인스트럭션들(instructions)을 생성할 수 있다. 예를 들어, 인스트럭션들은 데이터들을 포함하는 인스트럭션들, 데이터들을 슬레이브 장치(190)로 전송하는데 필요한 정보들을 포함하는 인스트럭션들, 및 슬레이브 장치(190)로부터 데이터들을 수신하는데 필요한 정보들을 포함하는 인스트럭션들 중에서 적어도 하나를 포함할 수 있다. FPGA(170)는 통신(예: AXI4 버스 인터페이스(bus interface))를 통해 프로세서(130)와 인스트럭션들을 송수신할 수 있다. 프로세서(130)와 FPGA(170) 사이의 전송 속도는 FPGA(170)와 슬레이브 장치(190) 사이의 전송 속도보다 빠를 수 있다. 프로세서(130)와 FPGA(170) 사이의 전송 속도와 FPGA(170)와 슬레이브 장치(190) 사이의 전송 속도의 차이로 인해 프로세서(130)는 비효율적으로 동작할 수 있다. 즉, 프로세서(130)는 FPGA(170)로 전송된 데이터가 슬레이브 장치(190)으로 전송된 이후에 다음 동작을 수행할 수 있으므로 효율적으로 동작하기 어려울 수 있다. 다양한 실시예에 따르면, FPGA(170)는 데이터들을 슬레이브 장치(190)와 병렬로 송수신함으로써 프로세서의(130)의 대기 시간을 줄임으로써 프로세서(130)의 동작 효율을 높일 수 있다. FPGA(170)에 대해서는 도 2 내지 도 7을 참조하여 상세히 설명하도록 한다.According to various embodiments, the master device (110) may include a processor (130) (e.g., an application processor such as ARM coretex-A9) and a field programmable gate array (FPGA) (170). The processor (130) may generate instructions. For example, the instructions may include at least one of instructions including data, instructions including information necessary to transmit data to a slave device (190), and instructions including information necessary to receive data from the slave device (190). The FPGA (170) may transmit and receive instructions to and from the processor (130) via communication (e.g., an AXI4 bus interface). The transmission speed between the processor (130) and the FPGA (170) may be faster than the transmission speed between the FPGA (170) and the slave device (190). Due to the difference in the transmission speed between the processor (130) and the FPGA (170) and the transmission speed between the FPGA (170) and the slave device (190), the processor (130) may operate inefficiently. That is, the processor (130) may have difficulty operating efficiently because it may perform the next operation after the data transmitted to the FPGA (170) is transmitted to the slave device (190). According to various embodiments, the FPGA (170) may increase the operating efficiency of the processor (130) by reducing the waiting time of the processor (130) by transmitting and receiving data in parallel with the slave device (190). The FPGA (170) will be described in detail with reference to FIGS. 2 to 7.

다양한 실시예에 따르면, 슬레이브 장치(190)는 SPI 통신을 통해 마스터 장치(110)로 데이터를 전송하고, 마스터 장치(110)로부터 데이터를 수신할 수 있다. 슬레이브 장치(190)는 IC(integrated circuit)를 포함하는 전자 장치일 수 있다. 예를 들어, 슬레이브 장치(190)는 VAIC(vector-amplifier integrated circuit)를 포함하는 위상 배열 안테나(phased array antenna)일 수 있다. VAIC는 신호의 위상(phase)을 설정할 수 있는 증폭기 집적회로(amplifier integrated circuit)을 의미할 수 있다.According to various embodiments, the slave device (190) can transmit data to the master device (110) and receive data from the master device (110) via SPI communication. The slave device (190) may be an electronic device including an integrated circuit (IC). For example, the slave device (190) may be a phased array antenna including a vector-amplifier integrated circuit (VAIC). The VAIC may refer to an amplifier integrated circuit capable of setting the phase of a signal.

도 2는 다양한 실시예에 따른 FPGA를 설명하기 위한 도면이다.FIG. 2 is a diagram for explaining an FPGA according to various embodiments.

도 2를 참조하면, 다양한 실시예에 따르면, FPGA(170)는 프로세서(예: 도 1의 프로세서(130))로부터 인스트럭션들을 수신하고, 인스트럭션들에 기초하여 데이터를 슬레이브 장치(예: 도 1의 슬레이브 장치(190))와 송수신할 수 있다.Referring to FIG. 2, according to various embodiments, the FPGA (170) may receive instructions from a processor (e.g., processor (130) of FIG. 1) and transmit and receive data to and from a slave device (e.g., slave device (190) of FIG. 1) based on the instructions.

다양한 실시예에 따르면, 제1 FIFO(first in first out)(210)(예: AXI stream FIFO)는 TX_FIFO 및 RX_FIFO를 포함할 수 있다. TX_FIFO는 프로세서(예: 도 1의 프로세서(130))로부터 수신되는 인스트럭션들(예: tx_data(201))을 저장할 수 있다. tx_data(201)는 데이터들을 포함하는 인스트럭션들 및/또는 데이터의 송수신과 관련되는 정보를 포함하는 인스트럭션들을 포함할 수 있다. RX_FIFO는 슬레이브 장치(190)로부터 수신되는 데이터들을 포함하는 응답들(예: rx_data(203))을 저장할 수 있다. rx_data(203)는 데이터들을 포함하는 응답들 포함할 수 있다.According to various embodiments, the first FIFO (first in first out) (210) (e.g., an AXI stream FIFO) may include a TX_FIFO and an RX_FIFO. The TX_FIFO may store instructions (e.g., tx_data (201)) received from a processor (e.g., processor (130) of FIG. 1). The tx_data (201) may include instructions including data and/or instructions including information related to the transmission and reception of data. The RX_FIFO may store responses (e.g., rx_data (203)) including data received from a slave device (190). The rx_data (203) may include responses including data.

다양한 실시예에 따르면, GPIO(general purpose input/output)(220)은 FPGA(예: 도 1의 FPGA(170))가 주변 장치(예: 슬레이브 장치(190))와 통신하기 위해 사용되는 다용도 입출력 포트를 의미할 수 있다. FPGA(170)는 인스트럭션들에 기초하여 GPIO를 제어(예: on/off)할 수 있다.According to various embodiments, a GPIO (general purpose input/output) (220) may refer to a multi-purpose input/output port used by an FPGA (e.g., the FPGA (170) of FIG. 1) to communicate with a peripheral device (e.g., a slave device (190)). The FPGA (170) may control (e.g., turn on/off) the GPIO based on instructions.

다양한 실시예에 따르면, 인스트럭션 디스패처(instruction dispatcher)(230)는 인스트럭션들(예: tx_data(201))을 제1 FIFO(210)의 TX_FIFO로부터 읽고, 인스트럭션들을 실행할 수 있다. 인스트럭션 디스패처(230)는 인스트럭션들(예: rx_data(203))을 제1 FIFO(210)의 RX_FIFO에 쓸 수 있다. 인스트럭션 디스패처(230)에 대해서는 도 3을 참조하여 상세히 설명하도록 한다.According to various embodiments, the instruction dispatcher (230) can read instructions (e.g., tx_data (201)) from the TX_FIFO of the first FIFO (210) and execute the instructions. The instruction dispatcher (230) can write instructions (e.g., rx_data (203)) to the RX_FIFO of the first FIFO (210). The instruction dispatcher (230) will be described in detail with reference to FIG. 3.

다양한 실시예에 따르면, SPI 버스 인터커넥션(bus interconnection)(250)를 통해 인스트럭션들이 인스트럭션 디스패처(230)와 SPI 트랜시버들(transceivers)(290-1~290-n) 사이에서 교환될 수 있다. SPI 버스 인터커넥션(250)에 대해서는 도 5를 참조하여 상세히 설명하도록 한다.According to various embodiments, instructions may be exchanged between an instruction dispatcher (230) and SPI transceivers (290-1 to 290-n) via an SPI bus interconnection (250). The SPI bus interconnection (250) will be described in detail with reference to FIG. 5.

다양한 실시예에 따르면, 제2 FIFO들(270-1~270-n) 각각은 TX_FIFO 및 RX_FIFO를 포함할 수 있다. 제2 FIFO들(270-1~270-n)은 인스트럭션들을 저장할 수 있다. 제2 FIFO들(270-1~270-n)에 대해서는 도 5를 참조하여 상세히 설명하도록 한다.According to various embodiments, each of the second FIFOs (270-1 to 270-n) may include a TX_FIFO and an RX_FIFO. The second FIFOs (270-1 to 270-n) may store instructions. The second FIFOs (270-1 to 270-n) will be described in detail with reference to FIG. 5.

다양한 실시예에 따르면, SPI 트랜시버들(290-1~290-n)은 제2 FIFO들(270-1~270-n)의 TX_FIFO로부터 spi_cmd(391)(예: 도 3 및 도 4의 spi_cmd(391))를 읽고, spi_cmd(391)를 실행할 수 있다. spi_cmd(391)는 인스트럭션 tx_data(201)에 포함되어 있는 인스트럭션(또는 커맨드) 일 수 있다. spi_cmd(391)는 슬레이브 장치(190)로 전송되는 데이터를 포함하는 인스트럭션일 수 있다. SPI 트랜시버들(290-1~290-n)은 spi_response(395)(예: 도 4 및 도 5의 spi_response(395))를 제2 FIFO들(270-1~270-n)의 RX_FIFO에 쓸 수 있다. spi_response(395)는 슬레이브 장치(190)로부터 수신되는 데이터를 포함하는 인스트럭션일 수 있다. spi_response(395)는 rx_data(203)에 포함되어 프로세서(130)로 전송될 수 있다. SPI 트랜시버들(290-1~290-n)에 대해서는 도 4를 참조하여 상세히 설명하도록 한다.According to various embodiments, the SPI transceivers (290-1 to 290-n) may read spi_cmd (391) (e.g., spi_cmd (391) of FIGS. 3 and 4) from the TX_FIFO of the second FIFOs (270-1 to 270-n) and execute the spi_cmd (391). The spi_cmd (391) may be an instruction (or command) included in the instruction tx_data (201). The spi_cmd (391) may be an instruction including data to be transmitted to the slave device (190). The SPI transceivers (290-1 to 290-n) can write spi_response (395) (e.g., spi_response (395) of FIGS. 4 and 5) to the RX_FIFO of the second FIFOs (270-1 to 270-n). The spi_response (395) may be an instruction including data received from the slave device (190). The spi_response (395) may be included in rx_data (203) and transmitted to the processor (130). The SPI transceivers (290-1 to 290-n) will be described in detail with reference to FIG. 4.

도 3은 다양한 실시예에 따른 인스트럭션 디스패처를 설명하기 위한 도면이다.FIG. 3 is a diagram illustrating an instruction dispatcher according to various embodiments.

도 3을 참조하면, 다양한 실시예에 따르면, 인스트럭션 디스패처(230)는 인스트럭션들(예: tx_data(201))을 제1 FIFO(210)의 TX_FIFO로부터 읽고, 인스트럭션들을 실행할 수 있다. 인스트럭션 디스패처(230)는 인스트럭션들(예: rx_data(203))을 제1 FIFO(210)의 RX_FIFO에 쓸 수 있다.Referring to FIG. 3, according to various embodiments, the instruction dispatcher (230) can read instructions (e.g., tx_data (201)) from the TX_FIFO of the first FIFO (210) and execute the instructions. The instruction dispatcher (230) can write instructions (e.g., rx_data (203)) to the RX_FIFO of the first FIFO (210).

다양한 실시예에 따르면, 인스트럭션 디스패처(230)는 페치(FETCH)(310) 상태에서 rx_data(203)를 읽을 수 있다. 인스트럭션 디스패처(230)는 인스트럭션 WRITE_IO(330)를 통해 FPGA의 GPIO(예: 도 2의 GPIO(220))를 업데이트 할 수 있다. GPIO(220)의 와이어링(wiring)은 애플리케이션의 요구 사항에 기초하여 따라 결정될 수 있다. 인스트럭션 디스패처(230)는 인스트럭션 READ_IO(350)를 통해 GPIO(220)를 읽고, I/O 결과(I/O result)를 제1 FIFO(예: 도 2의 제1 FIFO(210))의 RX_FIFO에 푸시(push)할 수 있다. 프로세서(예: 도 1의 프로세서(130))는 GPIO(220)를 통해 외부 I/O(external I/O) 및 FPGA(도 1의 FPGA(170))의 상태를 모니터링할 수 있다. 인스트럭션 디스패처(230)는 인스트럭션 PUSH_CMD(370)를 통해 spi_cmd(391)를 제2 FIFO들(예: 도 2의 제2 FIFO들(270-1~270-n))의 TX_FIFO에 쓸 수 있다. 인스트럭션 디스패처(230)는 tx_data(201)에 포함된 select_spi(393)를 이용하여 제2 FIFO들(270-1~270-n) 중에서 하나 이상의 제2 FIFO를 선택하고, 선택된 제2 FIFO에 spi_cmd(391)를 쓸 수 있다. select_spi(393)는 SPI 트랜시버들(예: 도 2 및 도 5의 SPI 트랜시버들(290-1~290-n))의 mux/demux(예: 도 5의 mux/demux)에 대한 선택일 수 있다. 인스트럭션 디스패처(230)는 선택된 제2 FIFO의 TX_FIFO가 가득 차 있는 경우, 여유 공간이 생길 때까지 기다린 후 spi_cmd(391)를 쓸 수 있다. 인스트럭션 디스패처(230)는 인스트럭션 POP_RESPONSE를 통해 제2 FIFO들(270-1~270-n)의 RX_FIFO로부터 spi_response(395)를 팝(pop)할 수 있다. 인스트럭션 디스패처(230)는 tx_data(201)에 포함된 select_spi(393)를 이용하여 제2 FIFO들(270-1~270-n) 중에서 하나 이상의 제2 FIFO를 선택하고, 선택된 제2 FIFO로부터 spi_response(395)를 팝할 수 있다. spi_response(395)는 rx_data(203)의 일부 비트에 놓여(put)지고, 제1 FIFO(예: 도 2의 제1 FIFO(210))의 RX_FIFO에 푸시(push)될 수 있다. 인스트럭션 POP_RESPONSE의 주된 목적은 MISO(예: 도 4의 MISO(456))를 읽기 위한 것일 수 있다. 인스트럭션 디스패처(230)는 선택된 제2 FIFO의 RX_FIFO가 비어 있는 경우, 선택된 제2 FIFO의 RX_FIFO에 spi_response(395)가 저장될 때까지 기다린 후, spi_response(395)를 팝할 수 있다. 따라서, 인스트럭션 디스패처(230)는 제2 FIFO의 TX_FIFO가 비어 있고 LOAD(예: 도 4의 LOAD) 신호를 트리거 할 준비가 될 때가지 지연되도록 구성될 수 있다. FETCH(310), WRITE_IO(330), READ_IO(350), PUSH_CMD(370), 및 POP_RESPONSE(390) 각각은 상이한 수의 클럭(clock)을 사용할 수 있다. 예를 들어, FETCH(310), WRITE_IO(330), 및 READ_IO(350)는 1클럭을 사용하고, PUSH_CMD(370) 및 POP_RESPONSE(390)는 선택된 제2 FIFO가 준비되어 있을 경우 2 클럭을 사용할 수 있다.According to various embodiments, the instruction dispatcher (230) can read rx_data (203) in the FETCH (310) state. The instruction dispatcher (230) can update the GPIO of the FPGA (e.g., GPIO (220) of FIG. 2) through the instruction WRITE_IO (330). The wiring of the GPIO (220) can be determined based on the requirements of the application. The instruction dispatcher (230) can read the GPIO (220) through the instruction READ_IO (350) and push the I/O result to the RX_FIFO of the first FIFO (e.g., the first FIFO (210) of FIG. 2). A processor (e.g., processor (130) of FIG. 1) can monitor the status of an external I/O and an FPGA (e.g., FPGA (170) of FIG. 1) via a GPIO (220). An instruction dispatcher (230) can write spi_cmd (391) to the TX_FIFO of the second FIFOs (e.g., the second FIFOs (270-1 to 270-n) of FIG. 2) via an instruction PUSH_CMD (370). The instruction dispatcher (230) can select one or more second FIFOs among the second FIFOs (270-1 to 270-n) using select_spi (393) included in tx_data (201) and write spi_cmd (391) to the selected second FIFO. select_spi(393) may be a selection for a mux/demux (e.g., mux/demux of FIG. 5) of SPI transceivers (e.g., SPI transceivers (290-1 to 290-n) of FIGS. 2 and 5). The instruction dispatcher (230) may wait until a free space becomes available and then write spi_cmd(391) when the TX_FIFO of the selected second FIFO is full. The instruction dispatcher (230) may pop an spi_response(395) from the RX_FIFO of the second FIFOs (270-1 to 270-n) via the instruction POP_RESPONSE. The instruction dispatcher (230) can select one or more second FIFOs among the second FIFOs (270-1 to 270-n) using select_spi (393) included in tx_data (201) and pop spi_response (395) from the selected second FIFO. The spi_response (395) can be put on some bits of rx_data (203) and pushed to the RX_FIFO of the first FIFO (e.g., the first FIFO (210) of FIG. 2). The main purpose of the instruction POP_RESPONSE may be to read MISO (e.g., MISO (456) of FIG. 4). The instruction dispatcher (230) can wait until the spi_response (395) is stored in the RX_FIFO of the selected second FIFO if the RX_FIFO of the selected second FIFO is empty, and then pop the spi_response (395). Accordingly, the instruction dispatcher (230) can be configured to delay until the TX_FIFO of the second FIFO is empty and ready to trigger a LOAD (e.g., LOAD in FIG. 4) signal. Each of FETCH (310), WRITE_IO (330), READ_IO (350), PUSH_CMD (370), and POP_RESPONSE (390) can use a different number of clocks. For example, FETCH (310), WRITE_IO (330), and READ_IO (350) may use 1 clock, while PUSH_CMD (370) and POP_RESPONSE (390) may use 2 clocks if the selected second FIFO is ready.

도 4는 다양한 실시예에 따른 SPI 트랜시버를 설명하기 위한 도면이다. 도 4는 도 2의 SPI 트랜시버들(290-1~290-n) 중에서 하나의 SPI 트랜시버(290-1)를 예로 들어 SPI 트랜시버들(290-1~290-n)을 설명하는 도면일 수 있다.FIG. 4 is a drawing for explaining an SPI transceiver according to various embodiments. FIG. 4 may be a drawing for explaining SPI transceivers (290-1 to 290-n) using one SPI transceiver (290-1) among the SPI transceivers (290-1 to 290-n) of FIG. 2 as an example.

도 4를 참조하면, 다양한 실시예에 따르면, SPI 트랜시버들(290-1~290-n)은 제2 FIFO들(예: 도2의 제2 FIFO들(270-1~270-n))의 TX_FIFO들로부터 spi_cmd(391)를 읽고, spi_cmd(391)를 실행할 수 있다.Referring to FIG. 4, according to various embodiments, the SPI transceivers (290-1 to 290-n) can read spi_cmd (391) from the TX_FIFOs of the second FIFOs (e.g., the second FIFOs (270-1 to 270-n) of FIG. 2) and execute the spi_cmd (391).

다양한 실시예에 따르면, SPI 트랜시버(290-1)는 페치(FETCH) 상태에서 spi_cmd(391)를 읽을 수 있다. 인스트럭션 SPI_TRANSMIT(462)는 슬레이브 장치(예: 도 1의 슬레이브 장치(190))로 전송되는 데이터 및 비트 카운트(bit count)를 포함할 수 있다. 비트 카운트는 데이터의 길이를 카운트할 수 있다. 다양한 실시예에 따르면, SPI_TRANSMIT(462)는 TRANSMIT_START, TRANSMIT_LOW, 및/또는 TRANSMIT_HIGH에서 실행될 수 있다. TRANSMIT_START, TRANSMIT_LOW, 및 TRANSMIT_HIGH는 MOSI(454)를 제어하거나, MISO(456)를 읽기 위한 상태들일 수 있다. 구체적으로, TRANSMIT_START는 전송(또는 수신) 준비 상태일 수 있다. TRANSMIT_LOW에서는 SLCK(serial clock)(452)가 로우(low)로 유지되고, TRANSMIT HIGH에서는 SLCK(452)가 하이(high)로 유지될 수 있다. SLCK(452)는 동기화를 위한 클럭 신호 라인일 수 있다. SLCK(452)는 비트 카운트에 따라 상승(rise)/하강(fall)할 수 있다. SLCK(452)의 듀티 사이클(duty cycle)은 지연 틱 속성(delay ticks property)에 따라 달리질 수 있다. 지연 틱 속성은 인스트럭션 SPI_SET_PROP(434)에 의해 변경될 수 있다. MOSI(454)는 마스터 장치(예: 도 1의 마스터 장치(110))로부터 슬레이브 장치(190)로 전송되는 데이터를 위한 신호 라인을 의미할 수 있다. MOSI(454)는 SLCK(452)의 폴링 에지(falling edge)에서 하이(high)/로우(low)로 설정될 수 있다. According to various embodiments, the SPI transceiver (290-1) can read spi_cmd (391) in a FETCH state. The instruction SPI_TRANSMIT (462) can include data to be transmitted to a slave device (e.g., slave device (190) of FIG. 1) and a bit count. The bit count can count the length of the data. According to various embodiments, the SPI_TRANSMIT (462) can be executed in TRANSMIT_START, TRANSMIT_LOW, and/or TRANSMIT_HIGH. TRANSMIT_START, TRANSMIT_LOW, and TRANSMIT_HIGH can be states for controlling MOSI (454) or reading MISO (456). Specifically, TRANSMIT_START can be a transmit (or receive) ready state. In TRANSMIT_LOW, SLCK (serial clock) (452) may be maintained low, and in TRANSMIT HIGH, SLCK (452) may be maintained high. SLCK (452) may be a clock signal line for synchronization. SLCK (452) may rise/fall according to the bit count. The duty cycle of SLCK (452) may vary depending on the delay ticks property. The delay ticks property may be changed by the instruction SPI_SET_PROP (434). MOSI (454) may mean a signal line for data transmitted from a master device (e.g., master device (110) of FIG. 1) to a slave device (190). MOSI (454) can be set high/low on the falling edge of SLCK (452).

다양한 실시예에 따르면, 인스트럭션 SPI_RECEIVE(464)는 슬레이브 장치(190)로부터 수신되는 데이터 및 비트 카운트를 포함할 수 있다. SPI_RECEIVE(464)는 TRANSMIT_START, TRANSMIT_LOW, 및/또는 TRANSMIT_HIGH에서 실행될 수 있다. 중복되는 설명은 생략하도록 한다. MOSI(454)는 데이터가 슬레이브 장치(190)으로부터 수신되는 동시에 데이터가 슬레이브 장치(190)으로 전송되는 경우 하이(high)/로우(low)로 변경될 수 있다. MISO(456)는 슬레이브 장치(190)으로부터 마스터 장치(110)로 전송되는 데이터를 위한 신호 라인을 의미할 수 있다. 슬레이브 장치(190)로부터 수신된 데이터는 spi_response(395)에 포함되어 제2 FIFO(예: 도 2의 제2 FIFO(270-1))의 RX_FIFO로 푸시될 수 있다. SPI 트랜시버(290-1)는 제2 FIFO(270-1)의 RX_FIFO가 가득 차 있는 경우, 여유 공간이 생길 때까지 기다린 후 spi_response(395)를 푸시 할 수 있다.According to various embodiments, the instruction SPI_RECEIVE (464) may include data and a bit count received from the slave device (190). SPI_RECEIVE (464) may be executed in TRANSMIT_START, TRANSMIT_LOW, and/or TRANSMIT_HIGH. Duplicate descriptions will be omitted. MOSI (454) may change from high to low when data is received from the slave device (190) and at the same time when data is transmitted to the slave device (190). MISO (456) may mean a signal line for data transmitted from the slave device (190) to the master device (110). The data received from the slave device (190) may be included in spi_response (395) and pushed to the RX_FIFO of the second FIFO (e.g., the second FIFO (270-1) of FIG. 2). The SPI transceiver (290-1) can wait until there is free space and then push spi_response (395) when the RX_FIFO of the second FIFO (270-1) is full.

다양한 실시예에 따르면, 인스트럭션 SPI_CONTROL(470)은 다중(multiple) 하이(high)/로우(low)로 사용될 수 있는 I/O를 포함할 수 있다. SPI 통신을 위해, SPI_CONTROL(470)은 인스트럭션들의 처음과 마지막에 위치할 수 있고, SPI_CONTROL(470) 사이에 SPI_TRANSMIT(462) 및/또는 SPI_RECEIVE(464)가 위치할 수 있다. 예를 들어, 인스트럭션들은 SPI_CONTROL 0x0, SPI_TRANSMIT 0xCAFE, SPI_RECEIVE 16bits, CONTROL 0x1의 순서로 실행될 수 있다.According to various embodiments, the instruction SPI_CONTROL (470) may include an I/O that can be used as multiple high/low. For SPI communication, SPI_CONTROL (470) may be positioned at the beginning and end of the instructions, and SPI_TRANSMIT (462) and/or SPI_RECEIVE (464) may be positioned between SPI_CONTROL (470). For example, the instructions may be executed in the following order: SPI_CONTROL 0x0, SPI_TRANSMIT 0xCAFE, SPI_RECEIVE 16bits, CONTROL 0x1.

다양한 실시예에 따르면, 인스트럭션 SPI_SET_PROP(434)는 SLCK(452)의 듀티 사이클을 포함할 수 있다. SLCK(452)의 듀티 사이클은 2의 거듭 제곱으로 계산될 수 있다. 예를 들어, SLCK(452)의 듀티 사이클에 대한 비트의 값이 3 인 경우, SLCK(452)는 8 클럭의 하이(high) 및 8 클럭의 로우(low)를 유지할 수 있다. SPI_SET_PROP(434)는 전송 속도가 고속으로 변경되고, 읽기 속도가 저속으로 변경될 수 있도록 SPI_RECEIVE(464) 전에 전송될 수 있다.According to various embodiments, the instruction SPI_SET_PROP (434) may include a duty cycle of SLCK (452). The duty cycle of SLCK (452) may be calculated as a power of 2. For example, if the value of the bit for the duty cycle of SLCK (452) is 3, SLCK (452) may remain high for 8 clocks and low for 8 clocks. SPI_SET_PROP (434) may be transmitted before SPI_RECEIVE (464) so that the transfer speed can be changed to a high speed and the read speed can be changed to a low speed.

다양한 실시예에 따르면, RESPONSE_WRITE(490)는 SPI_RECEIVE(464)가 실행될 때 활성화되는 SPI 트랜시버(290-1)의 상태(state)일 수 있다. RESPONSE_WRITE(490)가 활성화 되는 경우, SPI_트랜시버(290-1)는 spi_response(395)를 제2 FIFO(270-1)의 RX_FIFO에 저장할 수 있다.According to various embodiments, RESPONSE_WRITE (490) may be a state of the SPI transceiver (290-1) that is activated when SPI_RECEIVE (464) is executed. When RESPONSE_WRITE (490) is activated, the SPI_transceiver (290-1) may store the spi_response (395) in the RX_FIFO of the second FIFO (270-1).

다양한 실시예에 따르면, LOAD(430)는 인스트럭션들이 실행되는 SPI 트랜시버(290-1)의 상태(state)일 수 있다. SPI 트랜시버(290-1)는 LOAD(430)에서 SPI_CONST(432) 및/또는 SPI_SET_PROP(434)를 실행할 수 있다.According to various embodiments, LOAD (430) may be a state of the SPI transceiver (290-1) in which instructions are executed. The SPI transceiver (290-1) may execute SPI_CONST (432) and/or SPI_SET_PROP (434) in LOAD (430).

다양한 실시예에 따르면, 인스트럭션 SPI_CONST(432)는 인스트럭션 디스패처(예: 도 3의 인스트럭션 디스패처(230))에서 실행될 때, 2 FIFO(270-1)의 TX_FIFO에 특정 값을 푸시할 수 있다. SPI_CONST(432)는 SPI 트랜시버(290-1)에서 실행될 때, 특정 값을 제2 FIFO(270-1)의 RX_FIFO에 전달할 수 있다. 인스트럭션 디스패처(230)는 인스트럭션(예: SPI_POP(미도시))을 실행함으로써, 제2 FIFO(270-1)의 RX_FIFO로부터 특정 값을 읽고, 데이터들의 전송(또는 수신)이 완료되었음을 확인 할 수 있다. 즉, SPI 디스패처(230)는 SPI_CONST(432)를 이용하여 SPI_CONST(432)의 앞에 위치하는 인스트럭션들의 실행 상태를 확인할 수 있다.According to various embodiments, the instruction SPI_CONST (432) may, when executed in an instruction dispatcher (e.g., the instruction dispatcher (230) of FIG. 3), push a specific value into the TX_FIFO of the second FIFO (270-1). The SPI_CONST (432), when executed in the SPI transceiver (290-1), may transfer a specific value to the RX_FIFO of the second FIFO (270-1). The instruction dispatcher (230) may, by executing an instruction (e.g., SPI_POP (not shown)), read a specific value from the RX_FIFO of the second FIFO (270-1) and confirm that transmission (or reception) of data has been completed. That is, the SPI dispatcher (230) can use SPI_CONST (432) to check the execution status of instructions located in front of SPI_CONST (432).

다양한 실시예에 따르면, FETCH(410), LOAD(430), RESPONSE_WRITE(490), SPI_TRANSMIT(462), SPI_RECEIVE(464) 각각은 상이한 수의 클럭을 사용할 수 있다. SPI_CONTROL(470)은 CS(chip select)를 제어하기 전에 인스트럭션에 포함된 정보(예: 지연 시간) 기초하여 실행을 지연할 수 있다.According to various embodiments, FETCH (410), LOAD (430), RESPONSE_WRITE (490), SPI_TRANSMIT (462), and SPI_RECEIVE (464) may each use a different number of clocks. SPI_CONTROL (470) may delay execution based on information contained in the instruction (e.g., delay time) before controlling CS (chip select).

도 5는 다양한 실시예에 따른 인스트럭션 디스패처와 SPI 트랜시버 사이의 버스 인터커넥션를 설명하기 위한 도면이다.FIG. 5 is a diagram illustrating a bus interconnection between an instruction dispatcher and an SPI transceiver according to various embodiments.

도 5를 참조하면, 다양한 실시예에 따르면, 버스 인터커넥션(250)은 mux 및 demux를 포함할 수 있다.Referring to FIG. 5, according to various embodiments, the bus interconnection (250) may include a mux and a demux.

다양한 실시예에 다르면, SPI 트랜시버들(290-1~290-n)은 spi_cmd(391) 및/또는 spi_response(395) 공유할 수 있다. TX_FIFO들(510-1~510-n)은 wr_en(501)(write enble)을 읽고, full(503)(FIFO full)을 쓸 수 있다. RX_FIFO들(560-1~560~n)은 rd_en(505)(read enable)을 읽고, empty(507)(FIFO empty)를 쓸 수 있다. 신호들(예: wr_en(501), full(503), rd_en(505), empty(507)와 같은 신호들)은 mux/demux를 통과하고, 인스트럭션 디스패처(173)로부터의 select_spi(393)에 의해 선택될 수 있다. 인스트럭션 디스패처(173)는 select_spi(393)를 먼저 설정하고, spi_cmd(391) 및/또는 spi_response(395)를 다음 사이클에서 쓰거나 읽을 수 있다.In various embodiments, SPI transceivers (290-1 through 290-n) may share spi_cmd (391) and/or spi_response (395). TX_FIFOs (510-1 through 510-n) may read wr_en (501) (write enable) and write full (503) (FIFO full). RX_FIFOs (560-1 through 560-n) may read rd_en (505) (read enable) and write empty (507) (FIFO empty). Signals (e.g., signals such as wr_en (501), full (503), rd_en (505), and empty (507)) may pass through a mux/demux and be selected by select_spi (393) from the instruction dispatcher (173). The instruction dispatcher (173) first sets select_spi (393), and can write or read spi_cmd (391) and/or spi_response (395) in the next cycle.

다양한 실시예에 따르면, 제2 FIFO들(270-1~270-n)은 POP RESPONSE(예: 도 3의 POP_RESPONSE(390)의 시작 시 1 클럭을 저장(save)하는 옵션(예: first data fall through)을 필요할 수 있다.According to various embodiments, the second FIFOs (270-1 to 270-n) may require an option to save 1 clock at the start of a POP RESPONSE (e.g., first data fall through) (e.g., POP_RESPONSE (390) of FIG. 3).

도 6은 다양한 실시예에 따른 FPGA의 동작의 일 예를 설명하기 위한 순서도이다. 도 6은 FPGA(예: 도 1의 FPGA(170))가 데이터들을 슬레이브 장치(예: 도 1의 슬레이브 장치(190))로 전송하는 동작을 설명하기 위한 도면일 수 있다.Fig. 6 is a flowchart for explaining an example of the operation of an FPGA according to various embodiments. Fig. 6 may be a diagram for explaining an operation in which an FPGA (e.g., FPGA (170) of Fig. 1) transmits data to a slave device (e.g., slave device (190) of Fig. 1).

도 6을 참조하면, 다양한 실시예에 따르면, 동작 610 내지 동작650은 FPGA(170)에 의해 순차적으로 수행될 수 있지만, 이에 한정되는 것은 아니다. 예를 들어, 동작 630과 동작 650의 순서가 바뀌거나, 둘 이상의 동작들이 병렬적으로 수행될 수 있다.Referring to FIG. 6, according to various embodiments, operations 610 to 650 may be sequentially performed by the FPGA (170), but are not limited thereto. For example, the order of operations 630 and 650 may be switched, or two or more operations may be performed in parallel.

동작 610에서, FPGA(170)는 프로세서(예: 도 1의 프로세서(130))로부터 통신(예: AXI4 버스 인터페이스)를 통해 인스트럭션들을 수신할 수 있다. 인스트럭션들은 데이터들을 포함하는 인스트럭션들, 데이터들의 전송과 관련되는 정보들을 포함하는 인스트럭션들을 포함할 수 있다. 예를 들어, 인스트럭션들은 데이터 전송 시작 타이밍에 대한 정보, 데이터들의 전송에 사용되는 CS 라인에 대한 정보, 및 I/O에 대한 정보와 같은 정보들을 포함할 수 있다.In operation 610, the FPGA (170) may receive instructions from a processor (e.g., processor (130) of FIG. 1) via communication (e.g., an AXI4 bus interface). The instructions may include instructions including data, instructions including information related to the transmission of data. For example, the instructions may include information such as information regarding the start timing of data transmission, information regarding the CS line used for the transmission of data, and information regarding I/O.

동작 630에서, FPGA(170)는 인스트럭션들에 기초하여 슬레이브 장치(190)로 데이터들을 전송할 수 있다. 즉, FPGA(170)는 프로세서(130)으로부터 인스트럭션들을 수신한 이후에는 프로세서(130)의 개입없이 인스트럭션들에 기초하여 데이터들을 슬레이브 장치(190)으로 전송할 수 있다. 예를 들어, FPGA(170)는 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 데이터들의 전송을 시작할 수 있다. 예를 들어, FPGA(170)는 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 슬레이브 장치(190)로 데이터들을 병렬로 전송할 수 있다. 구체적으로, FPGA(170)는 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 SPI 트랜시버들(예: 도 2 및 도 5의 SPI 트랜시버들(290-1~290-n)) 중에서 하나 이상의 SPI 트랜시버를 통해 데이터들을 병렬로 전송할 수 있다. 복수의 트랜시버들(290-1~290-n) 각각의 채널은 서로 다를 수 있다. FPGA(170)는 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 데이터들이 전송되는 채널들의 CS(chip select) 라인들 중 어느 하나의 라인을 이용하여 데이터를 전송할 수 있다. 다양한 실시예에 따르면, FPGA(170)는 슬레이브 장치(190)로 복수의 채널들을 통해 데이터들을 병렬로 전송함으로써 프로세서(130)의 동작 효율을 높일 수 있다. 다양한 실시예에 따르면, FPGA(170)는 프로세서(130)로부터 수신되는 인스트럭션들을 수신한 이후에는 프로세서(130)의 개입없이 인스트럭션들에 기초하여 데이터들을 슬레이브 장치(190)로 전송함으로써 효율적으로 동작할 수 있다.In operation 630, the FPGA (170) can transmit data to the slave device (190) based on the instructions. That is, after receiving the instructions from the processor (130), the FPGA (170) can transmit the data to the slave device (190) based on the instructions without intervention of the processor (130). For example, the FPGA (170) can start transmitting the data based on at least some of the instructions. For example, the FPGA (170) can transmit the data to the slave device (190) in parallel based on at least some of the instructions. Specifically, the FPGA (170) can transmit data in parallel through one or more SPI transceivers among the SPI transceivers (e.g., the SPI transceivers (290-1 to 290-n) of FIGS. 2 and 5) based on at least some of the instructions. Each channel of the plurality of transceivers (290-1 to 290-n) may be different. The FPGA (170) can transmit data using any one of the CS (chip select) lines of the channels through which data is transmitted based on at least some of the instructions. According to various embodiments, the FPGA (170) can increase the operating efficiency of the processor (130) by transmitting data in parallel through the plurality of channels to the slave device (190). According to various embodiments, the FPGA (170) can operate efficiently by transmitting data to a slave device (190) based on instructions received from the processor (130) without intervention of the processor (130).

동작 650에서, FPGA(170)는 GPIO(예: 도 2의 GPIO(220))를 제어할 수 있다. 예를 들어, FPGA(170)는 인스트럭션(예: 도 4의 SPI_CONST(432))를 이용하여 제2 FIFO들의 TX_FIFO들(예: 도 5의 TX_FIFO들(510-1~510-n))에 특정 값을 푸시하고, 특정 값을 RX_ FIFO들(예: 도 5의 RX_FIFO들(560-1~560-n))에 전달할 수 있다. FPGA(170)는 RX_FIFO들(560-1~560-n)로부터 특정 값을 읽음으로써 데이터들의 전송상태를 확인하고, 상기 데이터들의 전송이 완료될 때까지 GPIO(220)의 트리거링을 지연시킬 수 있다. FPGA(170)는 데이터들의 전송이 완료되면 GPIO(예: TX_LOAD)를 제어할 수 있다.In operation 650, the FPGA (170) can control a GPIO (e.g., GPIO (220) of FIG. 2). For example, the FPGA (170) can push a specific value to the TX_FIFOs of the second FIFOs (e.g., TX_FIFOs (510-1 to 510-n) of FIG. 5) using an instruction (e.g., SPI_CONST (432) of FIG. 4) and transmit the specific value to the RX_FIFOs (e.g., RX_FIFOs (560-1 to 560-n) of FIG. 5). The FPGA (170) can check the transmission status of data by reading a specific value from the RX_FIFOs (560-1 to 560-n) and delay the triggering of the GPIO (220) until the transmission of the data is completed. FPGA (170) can control GPIO (e.g. TX_LOAD) when data transmission is completed.

도 7은 다양한 실시예에 따른 FPGA의 동작의 일 예를 설명하기 위한 순서도이다. 도 7은 FPGA(예: 도 1의 FPGA(170))가 데이터들을 슬레이브 장치(예: 도 1의 슬레이브 장치(190))로부터 수신하는 동작을 설명하기 위한 도면일 수 있다.Fig. 7 is a flowchart for explaining an example of the operation of an FPGA according to various embodiments. Fig. 7 may be a diagram for explaining an operation in which an FPGA (e.g., FPGA (170) of Fig. 1) receives data from a slave device (e.g., slave device (190) of Fig. 1).

도 7을 참조하면, 다양한 실시예에 따르면, 동작 710 내지 동작770은 FPGA(170)에 의해 순차적으로 수행될 수 있지만, 이에 한정되는 것은 아니다. 예를 들어, 동작 750과 동작 770의 순서가 바뀌거나, 둘 이상의 동작들이 병렬적으로 수행될 수 있다.Referring to FIG. 7, according to various embodiments, operations 710 to 770 may be sequentially performed by the FPGA (170), but are not limited thereto. For example, the order of operations 750 and 770 may be switched, or two or more operations may be performed in parallel.

동작 710에서, FPGA(170)는 프로세서(예: 도 1의 프로세서(130))로부터 통신(예: AXI4 버스 인터페이스)을 통해 인스트럭션들을 수신할 수 있다. 인스트럭션들은 데이터들을 포함하는 인스트럭션들, 데이터들의 전송과 관련되는 정보들을 포함하는 인스트럭션들을 포함할 수 있다. 예를 들어, 인스트럭션들은 데이터 수신 시작 타이밍에 대한 정보, 데이터들의 수신에 사용되는 CS 라인에 대한 정보, 및 I/O에 대한 정보와 같은 정보들을 포함할 수 있다.In operation 710, the FPGA (170) may receive instructions from a processor (e.g., processor (130) of FIG. 1) via communication (e.g., an AXI4 bus interface). The instructions may include instructions including data, instructions including information related to the transmission of data. For example, the instructions may include information such as information regarding a timing for starting data reception, information regarding a CS line used to receive data, and information regarding I/O.

동작 730에서, FPGA(170)는 인스트럭션들에 기초하여 슬레이브 장치(예: 도 1의 슬레이브 장치(190))로부터 데이터들을 수신할 수 있다. 즉, FPGA(170)는 프로세서(130)로부터 인스트럭션들을 수신한 이후에는 프로세서(130)의 개입없이 인스트럭션들에 기초하여 데이터들을 슬레이브 장치(190)로부터 수신할 수 있다. 예를 들어, FPGA(170)는 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 데이터들의 수신을 시작할 수 있다. 예를 들어, FPGA(170)는 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 슬레이브 장치(190)로부터 데이터들을 병렬로 수신할 수 있다. 구체적으로, FPGA(170)는 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 SPI 트랜시버들(예: 도 2 및 도 5의 SPI 트랜시버들(290-1~290-n)) 중에서 하나 이상의 SPI 트랜시버를 통해 데이터들을 병렬로 수신할 수 있다. 복수의 트랜시버들(290-1~290-n) 각각의 채널은 서로 다를 수 있다. FPGA(170)는 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 데이터들이 수신되는 채널들의 CS(chip select) 라인들 중 어느 하나의 라인을 이용하여 데이터를 수신할 수 있다. 다양한 실시예에 따르면, FPGA(170)는 복수의 채널들을 통해 슬레이브 장치(190)로부터 데이터들을 병렬로 수신함으로써 프로세서(130)의 동작 효율을 높일 수 있다. 다양한 실시예에 따르면, FPGA(170)는 프로세서(130)로부터 수신되는 인스트럭션들을 수신한 이후에는 프로세서(130)의 개입없이 인스트럭션들에 기초하여 데이터들을 슬레이브 장치(190)로부터 수신함으로써 효율적으로 동작할 수 있다..In operation 730, the FPGA (170) may receive data from a slave device (e.g., the slave device (190) of FIG. 1) based on instructions. That is, after receiving instructions from the processor (130), the FPGA (170) may receive data from the slave device (190) based on the instructions without intervention of the processor (130). For example, the FPGA (170) may start receiving data based on at least some of the instructions. For example, the FPGA (170) may receive data from the slave device (190) in parallel based on at least some of the instructions. Specifically, the FPGA (170) can receive data in parallel through one or more SPI transceivers among the SPI transceivers (e.g., the SPI transceivers (290-1 to 290-n) of FIGS. 2 and 5) based on at least some of the instructions. Each channel of the plurality of transceivers (290-1 to 290-n) may be different. The FPGA (170) can receive data using any one of the CS (chip select) lines of the channels through which data is received based on at least some of the instructions. According to various embodiments, the FPGA (170) can increase the operating efficiency of the processor (130) by receiving data in parallel from the slave device (190) through the plurality of channels. According to various embodiments, the FPGA (170) can operate efficiently by receiving data from a slave device (190) based on instructions received from the processor (130) without intervention of the processor (130).

동작 750에서, FPGA(170)는 데이터들을 통신을 통해 프로세서(130)로 전송할 수 있다.At operation 750, the FPGA (170) can transmit data to the processor (130) via communication.

동작 770에서, FPGA(170)는 GPIO(예: 도 2의 GPIO(220))를 제어할 수 있다. 예를 들어, FPGA(170)는 인스트럭션(예: 도 4의 SPI_CONST(432))를 이용하여 제2 FIFO들의 TX_FIFO들(예: 도 5의 TX_FIFO들(510-1~510-n))에 특정 값을 푸시하고, 특정 값을 RX_ FIFO들(예: 도 5의 RX_FIFO들(560-1~560-n)에 전달할 수 있다. FPGA(170)는 RX_FIFO들(560-1~560-n)로부터 특정 값을 읽음으로써 데이터들의 수신상태를 확인하고, 상기 데이터들의 수신이 완료될 때까지 GPIO(220)의 트리거링을 지연시킬 수 있다. FPGA(170)는 데이터들의 수신이 완료되면 GPIO(예: TX_LOAD)를 제어할 수 있다.In operation 770, the FPGA (170) can control a GPIO (e.g., GPIO (220) of FIG. 2). For example, the FPGA (170) can push a specific value to the TX_FIFOs of the second FIFOs (e.g., TX_FIFOs (510-1 to 510-n) of FIG. 5) using an instruction (e.g., SPI_CONST (432) of FIG. 4) and transfer the specific value to the RX_ FIFOs (e.g., RX_FIFOs (560-1 to 560-n) of FIG. 5). The FPGA (170) can check the reception status of data by reading a specific value from the RX_FIFOs (560-1 to 560-n) and delay the triggering of the GPIO (220) until the reception of the data is completed. The FPGA (170) can control the GPIO (e.g., TX_LOAD) when the reception of the data is completed.

이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The embodiments described above may be implemented using hardware components, software components, and/or a combination of hardware components and software components. For example, the devices, methods, and components described in the embodiments may be implemented using a general-purpose computer or a special-purpose computer, such as, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate array (FPGA), a programmable logic unit (PLU), a microprocessor, or any other device capable of executing instructions and responding to them. The processing device may execute an operating system (OS) and software applications running on the operating system. Furthermore, the processing device may access, store, manipulate, process, and generate data in response to the execution of the software. For ease of understanding, the processing device is sometimes described as being used alone; however, one of ordinary skill in the art will recognize that the processing device may include multiple processing elements and/or multiple types of processing elements. For example, a processing unit may include multiple processors, or a processor and a controller. Other processing configurations, such as parallel processors, are also possible.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.Software may include a computer program, code, instructions, or a combination of one or more of these, which may configure a processing device to perform a desired operation or may, independently or collectively, command the processing device. The software and/or data may be permanently or temporarily embodied in any type of machine, component, physical device, virtual equipment, computer storage medium or device, or transmitted signal wave, for interpretation by the processing device or for providing instructions or data to the processing device. The software may also be distributed over networked computer systems and stored or executed in a distributed manner. The software and data may be stored on a computer-readable recording medium.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 저장할 수 있으며 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. The method according to the embodiment may be implemented in the form of program commands that can be executed through various computer means and recorded on a computer-readable medium. The computer-readable medium may store program commands, data files, data structures, etc., alone or in combination, and the program commands recorded on the medium may be those specially designed and configured for the embodiment or may be known and available to those skilled in the art of computer software. Examples of the computer-readable recording medium include magnetic media such as hard disks, floppy disks, and magnetic tapes, optical media such as CD-ROMs and DVDs, magneto-optical media such as floptical disks, and hardware devices specially configured to store and execute program commands, such as ROMs, RAMs, and flash memories. Examples of program commands include not only machine language codes such as those generated by a compiler, but also high-level language codes that can be executed by a computer using an interpreter, etc.

위에서 설명한 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 또는 복수의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.

이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 이를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.Although the embodiments described above have been described with limited drawings, those skilled in the art will appreciate that various technical modifications and variations can be applied based on the described embodiments. For example, appropriate results can still be achieved even if the described techniques are performed in a different order than described, and/or components of the described systems, structures, devices, circuits, etc. are combined or combined in a different manner than described, or are replaced or substituted with other components or equivalents.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims also fall within the scope of the claims described below.

Claims (16)

SPI(serial peripheral interface) 통신을 수행하는 전자 장치에 있어서,
데이터들 및 슬레이브 장치로의 상기 데이터들의 전송과 관련되는 정보들 중에서 적어도 하나를 포함하는 인스트럭션들을 생성하는 프로세서; 및
상기 프로세서와 전기적으로 연결되는 FPGA(field programmable gate array)
를 포함하고,
상기 FPGA는,
상기 프로세서로부터 상기 인스트럭션들을 수신하고,
상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 슬레이브 장치로 상기 데이터들의 전송을 시작하고,
상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 슬레이브 장치로 상기 데이터들을 병렬로 전송하고,
상기 프로세서로부터 상기 인스트럭션들을 수신한 이후에는 상기 프로세서의 개입없이 상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 슬레이브 장치로 상기 데이터들을 전송하고,
상기 슬레이브 장치로부터 수신한 특정 값을 읽음으로써 상기 데이터들의 전송 상태를 확인하고,
상기 데이터들의 전송이 완료될때까지 상기 FPGA의 GPIO(general purpose input/output)의 트리거링(triggering)을 지연시키는, 전자 장치.
In an electronic device that performs SPI (serial peripheral interface) communication,
A processor generating instructions including at least one of data and information related to the transmission of said data to a slave device; and
FPGA (field programmable gate array) electrically connected to the above processor
Including,
The above FPGA,
Receive the instructions from the processor,
Initiate transmission of said data to said slave device based on at least some of said instructions,
Transmitting the data in parallel to the slave device based on at least some of the instructions among the above instructions,
After receiving the instructions from the processor, the data is transmitted to the slave device based on at least some of the instructions without intervention of the processor,
Check the transmission status of the data by reading a specific value received from the slave device,
An electronic device that delays triggering of a GPIO (general purpose input/output) of the FPGA until transmission of the above data is completed.
삭제delete 삭제delete 제1항에 있어서,
상기 FPGA는,
상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 데이터들이 병렬로 전송되는 채널들의 CS(chip select) 라인들 중 어느 하나의 CS 라인을 이용하여 데이터를 전송하는, 전자 장치.
In the first paragraph,
The above FPGA,
An electronic device that transmits data using one of the CS (chip select) lines of channels through which the data is transmitted in parallel based on at least some of the instructions among the above instructions.
SPI 통신을 수행하는 전자 장치에 있어서,
슬레이브 장치로부터의 데이터들의 수신과 관련되는 정보들 중 적어도 하나를 포함하는 인스트럭션들을 생성하는 프로세서; 및
상기 프로세서와 전기적으로 연결되는 FPGA
를 포함하고,
상기 FPGA는,
상기 프로세서로부터 상기 인스트럭션들을 수신하고,
상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 슬레이브 장치로부터 상기 데이터들의 수신을 시작하고,
상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 슬레이브 장치로부터 상기 데이터들을 병렬로 수신하고,
상기 데이터들을 상기 프로세서에 전송하고,
상기 프로세서로부터 상기 인스트럭션들을 수신한 이후에는 상기 프로세서의 개입없이 상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 슬레이브 장치로부터 상기 데이터들을 수신하고,
상기 슬레이브 장치로부터 수신한 특정 값을 읽음으로써 상기 데이터들의 수신 상태를 확인하고,
상기 데이터들의 수신이 완료될때까지 상기 FPGA의 GPIO(general purpose input/output)의 트리거링(triggering)을 지연시키는, 전자 장치.
In an electronic device performing SPI communication,
A processor that generates instructions including at least one piece of information related to receiving data from a slave device; and
FPGA electrically connected to the above processor
Including,
The above FPGA,
Receive the instructions from the processor,
Initiate reception of said data from said slave device based on at least some of said instructions,
Receiving the data in parallel from the slave device based on at least some of the instructions among the above instructions,
Transmit the above data to the processor,
After receiving the instructions from the processor, the data is received from the slave device based on at least some of the instructions without intervention of the processor,
By reading a specific value received from the slave device, the reception status of the data is confirmed,
An electronic device that delays triggering of a GPIO (general purpose input/output) of the FPGA until reception of the above data is completed.
삭제delete 삭제delete 제5항에 있어서,
상기 FPGA는,
상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 데이터들이 병렬로 수신되는 채널들의 CS(chip select) 라인들 중 어느 하나의 CS 라인을 이용하여 데이터를 수신하는, 전자 장치.
In paragraph 5,
The above FPGA,
An electronic device that receives data using one of the CS (chip select) lines of the channels through which the data is received in parallel based on at least some of the instructions among the above instructions.
SPI 통신을 수행하는 전자 장치에 포함되는 FPGA의 동작 방법에 있어서,
데이터들 및 슬레이브 장치로의 상기 데이터들의 전송과 관련되는 정보들 중 적어도 하나를 포함하는 인스트럭션들을 프로세서로부터 수신하는 동작;
상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 슬레이브 장치로 상기 데이터들의 전송을 시작하는 동작;
상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 슬레이브 장치로 상기 데이터들을 병렬로 전송하는 동작; 및
상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 FPGA의 GPIO의 트리거링(triggering)을 지연시키는 동작
을 포함하고,
상기 데이터들의 전송을 시작하는 동작은,
상기 프로세서로부터 상기 인스트럭션들을 수신한 이후에는 상기 프로세서의 개입없이 상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 슬레이브 장치로 상기 데이터들을 전송하는 동작
을 포함하고,
상기 지연시키는 동작은,
상기 슬레이브 장치로부터 수신한 특정 값을 읽음으로써 상기 데이터들의 전송 상태를 확인하는 동작; 및
상기 데이터들의 전송이 완료될 때까지 상기 GPIO의 트리거링을 지연시키는 동작
을 포함하는, 동작 방법.
In a method of operating an FPGA included in an electronic device performing SPI communication,
An operation of receiving instructions from a processor, the instructions including at least one of data and information related to the transmission of said data to a slave device;
An operation of initiating transmission of said data to said slave device based on at least some of said instructions;
An operation of transmitting the data in parallel to the slave device based on at least some of the instructions among the instructions; and
An operation of delaying the triggering of the GPIO of the FPGA based on at least some of the instructions among the above instructions.
Including,
The action to start transmitting the above data is:
After receiving the instructions from the processor, an operation of transmitting the data to the slave device based on at least some of the instructions without intervention of the processor.
Including,
The above delaying action is,
An operation of checking the transmission status of the data by reading a specific value received from the slave device; and
An action to delay the triggering of the GPIO until the transmission of the above data is completed.
A method of operation, comprising:
삭제delete 삭제delete 제9항에 있어서,
상기 데이터들을 병렬로 전송하는 동작은,
상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 데이터들이 병렬로 전송되는 채널들의 CS 라인들 중 어느 하나의 CS 라인을 이용하여 데이터를 전송하는 동작
을 포함하는, 동작 방법.
In paragraph 9,
The operation of transmitting the above data in parallel is as follows:
An operation of transmitting data using one of the CS lines of the channels through which the data is transmitted in parallel based on at least some of the instructions among the above instructions.
A method of operation, comprising:
SPI 통신을 수행하는 전자 장치에 포함되는 FPGA의 동작 방법에 있어서,
슬레이브 장치로부터의 데이터들의 수신과 관련되는 정보들 중 적어도 하나를 포함하는 인스트럭션들을 프로세서로부터 수신하는 동작;
상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 슬레이브 장치로부터 데이터들의 수신을 시작하는 동작;
상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 슬레이브 장치로부터 상기 데이터들을 병렬로 수신하는 동작;
상기 데이터들을 상기 프로세서로 전송하는 동작; 및
상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 FPGA의 GPIO의 트리거링(triggering)을 지연시키는 동작
을 포함하고,
상기 데이터들의 수신을 시작하는 동작은,
상기 프로세서로부터 상기 인스트럭션들을 수신한 이후에는 상기 프로세서의 개입없이 상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 슬레이브 장치로부터 상기 데이터들을 수신하는 동작
을 포함하고,
상기 지연시키는 동작은,
상기 슬레이브 장치로부터 수신한 특정 값을 읽음으로써 상기 데이터들의 수신 상태를 확인하는 동작; 및
상기 데이터들의 수신이 완료될 때까지 상기 GPIO의 트리거링을 지연시키는 동작
을 포함하는, 동작 방법.
In a method of operating an FPGA included in an electronic device performing SPI communication,
An operation of receiving instructions from a processor, the instructions including at least one piece of information relating to receiving data from a slave device;
An operation of initiating reception of data from the slave device based on at least some of the instructions among the above instructions;
An operation of receiving the data in parallel from the slave device based on at least some of the instructions among the instructions;
An operation of transmitting the above data to the processor; and
An operation of delaying the triggering of the GPIO of the FPGA based on at least some of the instructions among the above instructions.
Including,
The action to start receiving the above data is:
An operation of receiving the data from the slave device based on at least some of the instructions without intervention of the processor after receiving the instructions from the processor.
Including,
The above delaying action is,
An operation of confirming the reception status of the data by reading a specific value received from the slave device; and
An action to delay the triggering of the GPIO until the reception of the above data is completed.
A method of operation, comprising:
삭제delete 삭제delete 제13항에 있어서,
상기 데이터들을 병렬로 수신하는 동작은,
상기 인스트럭션들 중에서 적어도 일부의 인스트럭션에 기초하여 상기 데이터들이 병렬로 수신되는 채널들의 CS 라인들 중 어느 하나의 CS 라인을 이용하여 데이터를 수신하는 동작
을 포함하는, 동작 방법.
In Article 13,
The operation of receiving the above data in parallel is:
An operation of receiving data using one of the CS lines of the channels through which the data is received in parallel based on at least some of the instructions among the above instructions.
A method of operation, comprising:
KR1020220108596A 2022-08-29 2022-08-29 Fpga-based spi communication method and device for performing the same Active KR102859344B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220108596A KR102859344B1 (en) 2022-08-29 2022-08-29 Fpga-based spi communication method and device for performing the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220108596A KR102859344B1 (en) 2022-08-29 2022-08-29 Fpga-based spi communication method and device for performing the same

Publications (2)

Publication Number Publication Date
KR20240030054A KR20240030054A (en) 2024-03-07
KR102859344B1 true KR102859344B1 (en) 2025-09-12

Family

ID=90271973

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220108596A Active KR102859344B1 (en) 2022-08-29 2022-08-29 Fpga-based spi communication method and device for performing the same

Country Status (1)

Country Link
KR (1) KR102859344B1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102144984B1 (en) * 2020-01-29 2020-08-14 한화시스템(주) Apparatus and method for processing digital signal for next generation active phase ladar

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100858997B1 (en) * 2003-06-30 2008-09-18 피니사 코포레이숀 Propagation Of Signals Between Devices For Triggering Capture Of Network Data
KR101630599B1 (en) * 2015-02-16 2016-06-16 주식회사 이노와이어리스 Serial peripheral interface with control logic for system performance improvement, and method therefor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102144984B1 (en) * 2020-01-29 2020-08-14 한화시스템(주) Apparatus and method for processing digital signal for next generation active phase ladar

Also Published As

Publication number Publication date
KR20240030054A (en) 2024-03-07

Similar Documents

Publication Publication Date Title
EP2565795B1 (en) High priority command queue for peripheral component
CN102197384B (en) Method and system for improving serial port memory communication latency and reliability
EP3008605B1 (en) Using dual phys to support multiple pcie link widths
US8145805B2 (en) Method for re-sequencing commands and data between a master and target devices utilizing parallel processing
US11847083B2 (en) Daisy-chain SPI integrated circuit and operation method thereof
US7461187B2 (en) Bus system and data transfer method
US8423703B2 (en) Data transfer in memory card system
JP2018514867A (en) Central processing unit with DSP engine and improved context switch capability
CN1504900B (en) Control circuit and method for reading data from memory
CN116647247A (en) Signal transceiver and signal receiving and transmitting system suitable for flexible connection
CN112559410A (en) FPGA-based LIO bus extension UART peripheral system and method
US5889959A (en) Fast write initialization method and system for loading channel adapter microcode
JPS6134182B2 (en)
JP6316977B2 (en) Interference test
KR102859344B1 (en) Fpga-based spi communication method and device for performing the same
JP3651588B2 (en) Data processing system with adjustable clock for a segmented synchronization interface
CN108108564B (en) Device and method for improving system starting speed
KR102522990B1 (en) Bridge interface system and method for controlling thereof
US20070131767A1 (en) System and method for media card communication
US20250173279A1 (en) Systems of semiconductor devices and operating methods thereof
US10977196B2 (en) Communication interface control system
US20250087253A1 (en) Multi-circuit control system and reading method for status information thereof
Bhavani et al. ADVANCED SPI CONTROLLER WITH ENHANCED FEATURES FOR VLSI INTEGRATION
KR100532608B1 (en) a bus system having serial/parallel circuitry
US10180847B2 (en) Circuitry for configuring entities

Legal Events

Date Code Title Description
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

D13-X000 Search requested

St.27 status event code: A-1-2-D10-D13-srh-X000

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

E13-X000 Pre-grant limitation requested

St.27 status event code: A-2-3-E10-E13-lim-X000

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U11-oth-PR1002

Fee payment year number: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601