KR101182262B1 - 신호처리장치, 신호처리방법 및 기록 매체 - Google Patents

신호처리장치, 신호처리방법 및 기록 매체 Download PDF

Info

Publication number
KR101182262B1
KR101182262B1 KR1020060002602A KR20060002602A KR101182262B1 KR 101182262 B1 KR101182262 B1 KR 101182262B1 KR 1020060002602 A KR1020060002602 A KR 1020060002602A KR 20060002602 A KR20060002602 A KR 20060002602A KR 101182262 B1 KR101182262 B1 KR 101182262B1
Authority
KR
South Korea
Prior art keywords
signal processing
plug
delay element
feedback loop
graph
Prior art date
Application number
KR1020060002602A
Other languages
English (en)
Other versions
KR20060084791A (ko
Inventor
코세이 야마시타
야스시 미야지마
모토유키 타카이
요이치로 사코
토시로 테라우치
토루 사사키
유이치 사카이
Original Assignee
소니 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 소니 주식회사 filed Critical 소니 주식회사
Publication of KR20060084791A publication Critical patent/KR20060084791A/ko
Application granted granted Critical
Publication of KR101182262B1 publication Critical patent/KR101182262B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

잘못해서 지연을 포함하지 않는 피드백 루프가 작성되었을 경우에 대처할 수 있는 신호 처리장치를 제공한다. 복수의 신호 처리 단위 요소로 이루어진 신호 처리를 소프트웨어 처리에 의해 행하는 신호 처리장치이다. 신호 처리 단위 요소를 소프트웨어 처리에 의해 각각 행하는 신호 처리 소프트웨어 모듈의 복수개를 접속해서 회로를 구성하고, 그 회로 구성 정보를, 회로 구성 정보 격납 관리부에 유지해서 관리한다. 회로 구성 정보 격납 관리 수단에 기억되어 있는 상기 복수개의 신호 처리 소프트웨어 모듈의 각각의 신호 처리순서를 결정하기 위해서 신호 처리경로를 탐색하는 경로 탐색 수단을 설치한다. 경로 탐색 수단에 있어서, 복수개의 신호 처리 소프트웨어 모듈로 이루어진 구성 회로중에, 지연 소자가 포함되지 않는 피드백 루프가 생성된 것이 검출되었을 경우에, 사용자에 대하여 경고를 송출하도록 한다.
신호처리장치, 미들웨어, 피드백 루프, 경로 탐색

Description

신호처리장치, 신호처리방법 및 기록 매체{SIGNAL PROCESSING APPARATUS, SIGNAL PROCESSING METHOD, AND RECORDING MEDIUM}
도1은 본 발명에 의한 신호처리장치의 실시예의 주요부의 기능 블록도이다.
도2는 본 발명에 의한 신호처리장치의 실시예를 설명하기 위한 도면이다.
도3은 본 발명에 의한 신호처리장치의 실시예를 설명하기 위한 도면이다.
도4는 본 발명에 의한 신호처리장치의 실시예를 설명하기 위한 도면이다.
도5는 본 발명에 의한 신호처리장치의 실시예를 설명하기 위한 도면이다.
도6은 본 발명에 의한 신호처리장치의 실시예의 플러그인의 구성을 설명하기 위한 도면이다.
도7은 본 발명에 의한 신호처리장치의 실시예의 그래프의 구성을 설명하기 위한 도면이다.
도8은 본 발명에 의한 신호처리장치의 실시예에 있어서의 회로 구성의 일례를 설명하기 위한 도면이다.
도 9는 본 발명에 의한 신호처리장치의 실시예에 있어서의 회로 구성 순서의 예를 설명하기 위한 도면이다.
도10은 본 발명에 의한 신호처리장치의 실시예에 있어서의 회로 구성 순서의 예를 설명하기 위한 도면이다.
도11은 본 발명에 의한 신호처리장치의 실시예에 있어서의 회로 구성 순서의 예를 설명하기 위한 도면이다.
도12는 본 발명에 의한 신호처리장치의 실시예에 있어서의 회로 구성 순서의 예를 설명하기 위한 도면이다.
도13은 본 발명에 의한 신호처리장치의 실시예에 있어서의 경로 탐색 알고리즘을 설명하기 위한 흐름도이다.
도14는 본 발명에 의한 신호처리장치의 실시예에 있어서의 경로 탐색 알고리즘의 일부를 구성하는 초기 경로 탐색 알고리즘을 설명하기 위한 흐름도이다.
도15는 본 발명에 의한 신호처리장치의 제1실시예의 주요부를 설명하기 위한 도면이다.
도16은 본 발명에 의한 신호처리장치의 실시예에 있어서의 경로 탐색 알고리즘의 일부를 구성하는 초기 경로 탐색 알고리즘을 설명하기 위한 도면이다.
도17는 본 발명에 의한 신호처리장치의 실시예에 있어서의 경로 탐색 알고리즘의 일부를 구성하는 초기 경로 탐색 알고리즘의 탐색 결과의 예를 나타내는 도이다.
도18은 본 발명에 의한 신호처리장치의 실시예에 있어서의 경로 탐색 알고리즘의 일부를 구성하는 루프 서치 알고리즘을 설명하기 위한 흐름도이다.
도19는 본 발명에 의한 신호처리장치의 실시예에 있어서의 경로 탐색 알고리즘의 일부를 구성하는 루프 서치 알고리즘을 설명하기 위한 도면이다.
도20은 본 발명에 의한 신호처리장치의 실시예에 있어서의 회로 구성의 동적 변경 처리를 설명하기 위한 흐름도이다.
도21은 본 발명에 의한 신호처리장치의 실시예에 있어서의 리얼 타임 분산 처리를 설명하기 위한 도면이다.
도22는 본 발명에 의한 신호처리장치의 제2실시예의 주요부의 기능 블록도이다.
도23은 도22의 제2실시예에 있어서의 주요부의 처리 동작의 예를 설명하기 위한 흐름도이다.
도24는 도22의 제2실시예에 있어서의 주요부의 처리 동작의 예를 설명하기 위한 흐름도이다.
도25는 도22의 제2실시예에 있어서의 주요부의 처리 동작을 설명하기 위한 도면이다.
도26은 도22의 제2실시예에 있어서의 주요부의 처리 동작을 설명하기 위한 도면이다.
도27은 도22의 제2실시예에 있어서의 주요부의 처리 동작을 설명하기 위한 도면이다.
* 도면의 주요부분에 대한 부호의 설명
1…지시 입력 접수 기능부
2…플러그인 생성 삭제 기능부
3…플러그인 사이 결선 처리 기능부
4…회로 구성 정보 격납 관리 기능부
5…경로 탐색 기능부
6…신호 처리 순서 관리 기능부
7…신호 처리 실행 기능부
8…신호 처리 함수 격납부
9…에러 경고 기능부
10…프리셋 기능부
본 발명은, 복수의 신호 처리 단위 요소로 이루어진 신호처리를 소프트웨어 처리에 의해 행하는 신호처리장치 및 그 신호처리 프로그램, 더구나, 그 신호처리 프로그램을 기록한 기록 매체에 관한 것이다.
최근의 시판의 컴퓨터는 성능이 현저하게 향상되어, 종래에는 어려웠던 동영상이나 음악의 컴퓨터 상에서의 재생이 가능해져 왔다. 특히, 동영상이나 음성의 신호처리를 행하는 애플리케이션에 관해서는, 종래의 DSP(Digital Signal Processor) 등의 전용 신호처리 디바이스나 전용 하드웨어(hardware)를 사용하지 않더라도, 소프트웨어 처리로, 용이하게 리얼 타임 신호처리가 가능해져 왔다.
이들 신호처리 애플리케이션을 유지하는 기술로서, 각종의 신호처리 미들웨어가 존재하고 있다. 예를 들면 Microsoft(등록상표)사제의 Direct Show(비특허문헌 1 참조)나, The MathWorks(등록상표)사제의 MATLAB(비특허문헌 2 참조), Cycling‘74사제의 Max/MSP(비특허문헌 3 참조) 등이 있다.
신호처리 애플리케이션은, 이들의 미들웨어를 이용함으로써, 고도의 기능을 비교적 용이하게 실현할 수 있다. 예를 들면 음성에 대해서 말하면, 녹음?재생, 입출력, 믹싱, 특수효과 등이, 신호처리 애플리케이션에 의해 실현되고 있다. 또한 동영상에 대해서 말하면, 논리니어 편집 등의 고도의 편집기능을 가지는 신호처리 애플리케이션이 실현되고 있다.
또한 이 종류의 미들웨어로서, 플러그인 구조를 가지는 것도 제안되어 있다 (특허문헌 1(일본국 특개 2001-109628 공보) 및 특허문헌 2(일본국 특개평 7-302195호 공보) 참조). 여기에서, 플러그인이란, 기능을 모듈화한 것이며, 소프트웨어 애플리케이션이다. 또, 본 명세서에서는, 신호처리를 취급하므로, 플러그인은, 신호처리 소프트웨어 모듈을 구성하는 소프트웨어 애플리케이션을 가리킨다.
이 플러그인을 사용함으로써, 사용자는, 필요할 때에 필요한 신호처리 소프트웨어 모듈을 애드온해서 이용할 수 있다. 플러그인은, 단체로 사용되어지는 일이 많지만, 최근, 이들의 플러그인을 복수 조합하여, 복합적인 기능을 만들어낼 수있는 새로운 시스템이 몇개 존재하고 있다. 이 복합 플러그인 시스템은, 새로운 부가가치를 만들어 내는 시스템으로서 금후의 주류가 되어 갈 것으로 예상된다.
상기한 특허문헌은 아래와 같다. 또한 비특허문헌은, 다음에 나타내는 어드레스의 사이트에 있어서 설명되어 있다.
[특허문헌1] 일본국 특개 2001-109628 공보
[특허문헌2] 일본국 특개평 7-302195호 공보
[비특허문헌1] http://msdn.microsoft.com/library/defalt.asp?url=/library /en-us/directx9_c/directX/htm/directshow.asp
[비특허문헌2] http://www.mathworks.com/
[비특허문헌3] http://www.cycling74.com/products/maxmsp.html
그렇지만, 현재 존재하고 있는 복합 플러그인 시스템에는, 이하와 같은 몇개의 결점이 있다.
(a) 플러그인을 다단으로 결선하면 처리 지연(레이턴시)이 비례해서 증대한다.
(b) 플러그인 사이의 결선에 제한이 있어, 피드백 루프의 결선을 할 수 없다.
(c) 신호처리 동작중에 플러그인 사이의 결선 상태를 변경할 수 없다.
(d) 처리 속도가 느리기 때문에 많은 기능을 리얼 타임으로 실행하는 것이 어렵다.
(e) 음성과 화상의 동기나 파라미터의 변경에 있어서 샘플 정밀도에서의 제어를 할 수 없다.
(f) 1대의 컴퓨터 상에서 닫힌 형태로밖에 신호처리가 불가능하다.
지금까지, 상기 결점을 부분적으로 해결하는 미들웨어는 몇개 존재하고 있지만, 모든 결점을 동시에 해결할 수 있는 미들웨어는 존재하지 않고 있다. 왜냐하면, 상반하는 문제(어떤 하나의 문제를 해결하면 다른 문제에 악영향을 주는 문제)를 포함하고 있기 때문이다. 예를 들면 상기 (b)과 (d)을 동시에 해결하는 것은 매우 어렵다.
이들 결점이 존재함으로써 종래의 미들웨어의 제품에 조립 이용에 있어서 치명적인 장벽이 되고 있는 케이스도 적지 않다.
따라서, 출원인은, 상기한 문제점을 해결한 신호처리장치를 먼저 제안했다. 이 앞에 제안한 신호처리장치에 의하면, 플러그인 사이의 결선에 제한은 없어, 피드백 루프의 결선이 가능하게 되었다.
이러한 신호처리장치에 있어서, 종래부터 피해서 지나갈 수 없는 문제가 있다. 즉, 일반적인 디지털 신호처리 이론에 있어서의 「시그널 플로우 그래프 중의 피드백 루프에는, 반드시 하나 이상의 지연 소자를 포함할 필요가 있다」고 하는 조건이다.
이것은, 신호처리의 인과성을 만족시키기 위해 필요하다. 예를 들면 상기한 신호처리장치 등을 사용하여, 사용자가, 지연 소자를 포함하지 않는 피드백 루프 회로를 작성하려고 했을 경우, 그것으로는 옳은 신호처리 결과가 얻어지지 얻어지지 않기 때문에, 즉시 그 신호처리 동작을 해제?파기할 필요가 있다. 그렇지 않으면, 이러한 회로는, 옳은 신호처리를 행할 수 없기 때문에, 노이즈 등의 불필요한 신호를 출력해 버리기 때문이다.
단, 이러한 사용자 조작은 일상 자주 있는 것이며, 특히, 「피드백 루프에 지연 소자를 포함할 필요가 있다」고 하는 지식을 갖지 않은 사용자에는, 신호처리장치에 있어서, 신호처리회로의 생성 처리 조작이 번잡해서 이해하기 힘들다고 하는 문제가 있다.
본 발명은, 상기한 문제점에 감안하여, 상기 결점을 해결할 수 있는 신호처리장치를 제공하는 것을 목적으로 한다.
상기한 과제를 해결하기 위해서, 청구항 1의 발명은,
복수의 신호 처리 단위 요소로 이루어진 신호 처리를 소프트웨어 처리에 의해 행하는 신호 처리장치로서,
상기 신호 처리 단위 요소를 소프트웨어 처리에 의해 각각 행하는 신호 처리 소프트웨어 모듈의 복수개와,
상기 신호 처리 소프트웨어 모듈의 생성 또는 삭제 지시, 및 상기 신호 처리 소프트웨어 모듈의 입출력의 접속 지시를 접수하는 지시 입력 접수 수단과,
상기 지시 입력 접수 수단에서 접수된 지시에 따라 복수개의 상기 신호 처리 소프트웨어 모듈의 입출력의 가상적인 접속 상태를 설정하는 가상 접속 수단과,
상기 설정된 상기 복수개의 신호 처리 소프트웨어 모듈의 입출력의 가상적인 접속 상태를 기억해서 관리하는 회로 구성 정보 기억 관리수단과,
상기 회로 구성 정보 기억 관리 수단에 기억되어 있는 상기 복수개의 신호 처리 소프트웨어 모듈의 각각의 신호 처리순서를 결정하기 위해서 신호 처리경로를 탐색하는 경로 탐색 수단과,
상기 경로 탐색 수단에서의 경로 탐색에 의거하여 결정된 신호 처리순서로, 상기 신호 처리 소프트웨어 모듈의 각각을 순차적으로 실행시켜서 상기 신호 처리를 실행하는 신호 처리 실행 수단을 구비하고,
상기 경로 탐색 수단은, 상기 복수개의 신호 처리 소프트웨어 모듈로 이루어진 구성 회로중에, 지연 소자가 포함되지 않는 피드백 루프가 생성되었는지 체크하는 것을 특징으로 하는 신호 처리장치를 제공한다.
이 청구항 1의 발명에 의하면, 신호처리 소프트웨어 모듈로 이루어진 구성 회로 중에, 지연 소자가 포함되지 않는 피드백 루프가 생성된 것이 검출되었을 경우에, 사용자에 대하여 경고를 송출하도록 하므로, 사용자는, 「피드백 루프에 지연 소자를 포함할 필요가 있다」고 하는 지식을 가지지 않아도, 정확한 조치를 강구할 수 있게 된다고 하는 효과가 있다.
청구항 3의 발명은,
복수의 신호 처리 단위 요소로 이루어진 신호 처리를 소프트웨어 처리에 의해 행하는 신호 처리장치로서,
상기 신호 처리 단위 요소를 소프트웨어 처리에 의해 각각 행하는 신호 처리 소프트웨어 모듈의 복수개와,
상기 신호 처리 소프트웨어 모듈의 생성 또는 삭제 지시, 및 상기 신호 처리 소프트웨어 모듈의 입출력의 접속 지시를 접수하는 지시 입력 접수 수단과,
상기 지시 입력 접수 수단에서 접수된 지시에 따라 복수개의 상기 신호 처리 소프트웨어 모듈의 입출력의 가상적인 접속 상태를 설정하는 가상 접속 수단과,
상기 설정된 상기 복수개의 신호 처리 소프트웨어 모듈의 입출력의 가상적인 접속 상태를 기억해서 관리하는 회로 구성 정보 기억 관리수단과,
상기 회로 구성 정보 기억 관리 수단에 기억되어 있는 상기 복수개의 신호 처리 소프트웨어 모듈의 각각의 신호 처리순서를 결정하기 위해서 신호 처리경로를 탐색하는 경로 탐색 수단과,
상기 경로 탐색 수단에서의 경로 탐색에 의거하여 결정된 신호 처리순서로, 상기 신호 처리 소프트웨어 모듈의 각각을 순차적으로 실행시켜서 상기 신호 처리를 실행하는 신호 처리 실행 수단을 구비하고,
상기 경로 탐색 수단은, 상기 복수개의 신호 처리 소프트웨어 모듈로 이루어진 구성 회로중에, 지연 소자가 포함되지 않는 피드백 루프가 생성되었다고 판단할 때, 상기 피드백 루프에 지연 소자를 추가 삽입하는 것을 특징으로 하는 신호 처리장치를 제공한다.
이 청구항 3의 발명에 의하면, 신호처리 소프트웨어 모듈로 이루어진 구성 회로 중에, 지연 소자가 포함되지 않는 피드백 루프가 생성된 것이 검출되었을 경우에, 피드백 루프에 자동적으로 지연 소자가 추가 삽입되므로, 「피드백 루프에 지연 소자를 포함할 필요가 있다」고 하는 지식을 가지지 않는 사용자라도, 피드백 루프를 구비하는 회로를 용이하게 구축할 수 있다고 하는 효과가 있다.
(실시예)
이하, 본 발명에 의한 신호 처리장치의 실시예를, 도면을 참조하면서 설명한다.
[제1실시예]
본 발명에 의한 신호 처리장치의 실시예는, 범용신호 처리 미들웨어이며, 이하, 이 미들웨어를 SSP(Software Signal Processor)라고 부른다. 또, 이하의 실시예의 설명에 있어서는, 신호 처리로서 음성신호 처리의 경우를 예로 든다.
SSP은, 도 2에 나타낸 것과 같이 범용 OS(Operating System)과, 애플리케이션 소프트웨어 사이에 위치하는 것으로, 애플리케이션은, SSP을 이용함으로써 용이하게 고도의 신호 처리기능을 실현할 수 있다. 또한 SSP는 GUI(Graphical User Interface)를 가지는 것을 필요로 하지 않는 미들웨어이므로, 표시장치를 가지지 않는 조립 기기용의 신호 처리 엔진용으로서도 이용할 수 있다.
[실시예의 신호 처리장치의 개요]
본 발명에 의한 신호 처리장치의 실시예의 SSP은, 그래프 구조를 가지는 미들웨어이며, 기본적으로는, 하나의 컴퓨터에 실현되지만, 나중에 설명한 바와 같이, 네트워크를 통해서 접속된 복수대의 컴퓨터에 있어서, 실현하는 것도 가능하다.
SSP로서의 실시예의 신호 처리장치는, 이 예에 있어서는, 소프트웨어로 구성되는 그래프 모듈(이하, 간단히 그래프라고 한다)과, 소프트웨어로 구성되는 플러그인 모듈(이하, 간단히 플러그인이라고 한다)의 2대 요소에 의해 구성되어 있다.
플러그인 모듈은, 신호 처리의 단위 요소, 예를 들면 필터, 이퀄라이저, 게인 제어 등을 실행하는 신호 처리 소프트웨어 모듈이다.
플러그인은, 이 예에서는, 복수의 입력 포트 및 복수의 출력 포트를 가지는 것이 가능해서, 입력 포트로부터 입력된 음성신호에 대하여, 해당 플러그인 고유의 신호 처리를 시행하고, 출력 포트로부터 출력하는 기능을 가진다.
플러그인의 출력 포트를 다른 플러그인의 입력 포트에 접속(하드웨어적으로 결선 접속되는 것이 아니고, 어떤 플러그인의 출력 신호가, 다른 플러그인에 입력되는 것을 의미하는 가상적인 접속 상태가 되는 것. 이하, 간단히 접속이라고 적는다)함으로써, 복수개의 플러그인을 접속하여, 복합적인 신호 처리 기능을 실현하는 것이 가능하다. 여기에서, 플러그인은, 입력 포트와 출력 포트의 조합으로만 접속 할 수 있고, 입력 포트끼리나 출력 포트끼리를 접속할 수는 없다.
그래프는, SSP의 시스템으로서의 역할을 담당하고 있는 부분이며, 복수의 플러그인을 포함하는 기능을 가진다. 그래프는, 각종의 신호처리 함수를 유지하고 있다. 그리고, 그래프는, 사용자로부터의 조작 입력을 받아, 플러그인의 생성, 삭제, 포트간의 결선을 행하고, 그 결과의 회로 구성 정보를 유지한다. 그래프가 유지하는 신호처리 함수에는, 플러그인 생성 삭제 함수가 포함되어 있다. 따라서, 그래프 내부에는, 복수개의 플러그인으로 이루어진 임의의 회로를 구성할 수 있다.
그리고, 그래프는, 해당 그래프의 신호처리 함수가 콜되면, 자기가 받은 시각정보 첨부의 음성 데이터를, 내포하는 플러그인에 순차적으로 건네준다. 플러그인에 음성 데이터나 부수 정보의 입출력을 행하는 것도 그래프의 역할이다.
또한 그래프는, 플러그인의 성질을 가지고 있다. 이 때문에, 그래프는, 플러그인와 마찬가지로, 입출력 포트를 가지고, 다른 플러그인과 서로 접속할 수도 있다. 그리고, 그래프는 복수의 플러그인을 포함할 수 있기 때문에, 그래프를 작성함으로써, 복수의 플러그인으로 이루어진 회로 블록(그래프)을 하나의 플러그인으로서 취급할 수 있다. 이 경우의 플러그인으로서 취급되는 그래프는, 복수의 회로를 모아서 하나의 부품으로서 취급할 수 있는 기능을 가지게 된다.
[그래프의 예]
도 3에, 내부에 복수개의 플러그인을 포함하는 그래프의 일례를 나타낸다. 또, 실시예의 신호 처리 장치로는, 퍼스널컴퓨터로 구성할 수 있고, 사용자의 입출력을 접수하고, 이 퍼스널컴퓨터의 표시부에, 사용자 지시에 따라, 그래프나 플러그인, 그들의 접속 상태를 그래픽 표시할 수 있도록 되어 잇다.
이 도 3의 예에서는, 사용자는, 우선, 최초에 기본이 되는 루트 그래프(200)을 만들고 나서, 이 그래프(200) 내에, 복수의 플러그인(201~204)로 이루어진 회로를 작성하도록 한다. 플러그인(201~204) 각각은, 미리, 퍼스널컴퓨터에 격납되어 있는 것을 선택해서 사용할 수 있다. 여기에서 말하는 격납 상태란 오브젝트 지향에 있어서의 클래스라고 하는 템플릿 상태이며, 아직 실제의 오브젝트는 생성되 지 않고 있는 상태를 가리킨다.
사용자는, 예를 들면 플러그인(201~204)의 각각을, 퍼스널컴퓨터의 격납부에 격납되어 있는 플러그인에서 선택하여, 그래프(200) 내에 동적으로 생성(설치)한다. 여기에서 처음으로 오브젝트 지향에 있어서의 오브젝트가 생성된다. 그리고, 사용자는, 플러그인(201~204)의 출력 포트와 입력 포트와의 결선, 또한 그래프(200)와, 플러그인 201, 204의 결선 등의 지시를 하여, 도 3에 나타나 있는 바와 같은 회로를 구성한다.
그래프(200)는, 내부의 플러그인(201~204)의 회로 구성 정보를 유지한다. 그리고, 사용자가, 루트 그래프(200)의 신호처리 함수를 1회 콜하는 것만으로, 루트 그래프의 신호처리 함수 내에서, 순차적으로, 내포하는 플러그인의 신호처리 함수가 재귀적으로 콜되어, 신호 처리에 관한 계산 처리가 순차적으로 행하여져 간다. 이 재귀적인 신호처리 함수 콜의 전파가, SSP 시스템 바로 그것이다.
도 4는, 내부에 복수개의 플러그인을 포함하는 그래프의 다른 예를 나타낸다. 전술한 바와 같이, 그래프는, 플러그인이기도 한다. 따라서, 그래프는, 내부에 그래프 이외의 플러그인과, 그래프 자신(자식 그래프)을 포함할 수 있는 재귀적인 구조를 취할 수 있다. 또한 다른 플러그인과 마찬가지로 입출력 포트도 가지고 있다. 그래프의 내부는, 그래프 밖에서 보면 블랙박스로 되어 있다. 그래프 내부에는, 복수의 플러그인으로 이루어진 회로 블록이 형성되어 있다.
도 4에 있어서, 그래프(400)이 부모 그래프이다. 이 부모 그래프(400)는, 그 내부에, 자식 그래프인 그래프(401)와 플러그인 405를 유지하고 있다. 또한, 자식 그래프(401)는, 그 내부에 플러그인 402, 플러그인 403, 플러그인 404를 유지하고 있다. 부모 그래프(400)로부터는, 자식 그래프(401) 내부의 플러그인 402, 플러그인 403, 플러그인 404는 보이지 않고, 자식 그래프(401)가 하나의 플러그인으로서 보인다.
사용자는, 우선, 최초로, 루트가 되는 루트 그래프(부모 그래프(400))을 1개 만든다. 사용자는, 이 루트 그래프(400)의 플러그인 생성 삭제 함수를 호출함으로써 루트 그래프 내부에 자식 그래프(401)나 플러그인 405를 생성할 수 있다.
더구나, 사용자는, 자식 그래프(401)의 플러그인 생성 삭제 함수를 호출함으로써 마찬가지로, 플러그인 402, 플러그인 403, 플러그인 404를 생성할 수 있다.
신호 처리 실행을 행하기 위해서는, 사용자는, 우선, 이 루트 그래프(400)의 신호처리 함수를 콜한다. 그러면, 루트 그래프(400)의 신호처리 함수 내에서 순차적으로 내포하는 플러그인으로서의 자식 그래프(401), 플러그인 405의 신호처리 함수가 재귀적으로 콜되어, 계산 처리가 순차적으로 행하여져 간다. 이 재귀적인 신호처리 함수 콜의 순서를 결정하는 것도 그래프의 기능이다.
자식 그래프(401)에서는, 이 자식 그래프(401)의 신호처리 함수가 최초로 콜된다. 그리고, 해당 자식 그래프(401)의 신호처리 함수 내에서, 순차적으로 내포하는 플러그인 402,403,404의 신호처리 함수가 재귀적으로 콜되어, 계산 처리가 순차적으로 행하여져 간다.
SSP 시스템이란 이상과 같은 그래프의 기능 바로 그것이다. 플러그인의 생성 삭제 처리, 플러그인 사이의 결선처리, 플러그인 사이의 데이터 교환 처리, 플러그 인에 대한 시간 정보?음성 정보와 영상정보의 동기 부여 처리, 각 플러그인의 신호처리 함수의 순차적인 호출과 그 호출 순서의 결정 등, 시스템에 필요한 기능을 이 그래프라고 하는 플러그인 자신이 처리하고 있다.
이하의 설명에 있어서, 시스템이라고 하는 단어를 사용할 경우에 있어서의 해당 「시스템」이라고 하는 단어는, 그래프 바로 그것, 및 그래프가 가지는 기능을 가리킨다.
도 5은, 설치예로서의 SSP 미들웨어의 전체 구조를 나타내는 UML(Unified Modeling Language) 클래스도이다. 오브젝트 지향으로 표현하고 있어, 클래스와 인터페이스(API(Application Programming Interface))가 정의되어 있다.
플러그인 클래스(CPlugin)는, 플러그인 인터페이스(IPlu gin)을 계승하고 있어, 플러그인 고유의 인터페이스를 실장하는 것이다. 플러그인 클래스는, 복수의 입력 포트 클래스(CInputPort) 및 출력 포트 클래스(COutputPort)를 유지하고 있다.
또한 플러그인 클래스는, 그 기능에 따라 복수의 종류가 존재하고 있다. 예를 들면, 덧셈을 행하는 플러그인 클래스는, 애더 플러그인(Adder Plu gin) 클래스이며, 곱셈을 행하는 플러그인 클래스는, 멀티플라이어 플러그인(Multiplier Plugin) 클래스이다. 이들 클래스는, 자작 플러그인(CMyPlugin) 클래스로서 분류된다. 자작 플러그인 클래스는 플러그인 클래스를 계승하고 있다. 이 예의 미들웨어 사용자는, 플러그인 템플릿을 사용함으로써, 용 이하게 자작 플러그인을 작성할 수 있다.
다음에 그래프 클래스에 관하여 설명한다. 그래프 클래스(CGraph)는, 복수의 플러그인 클래스를 포함하는 것이다. 그래프 클래스도 플러그인 클래스 같이 플러그인 인터페이스(Plugin Interface(IPlugin))을 계승하고 있어, 그래프 클래스 자신도 플러그인 클래스의 하나이다.
그 때문에 그래프 내부에 또 다른 그래프, 플러그인을 포함한다고 하는 재귀적인 계층 구조를 구성할 수 있다. 이것은, 일반적인 오브젝트 지향 설계 방법인 「디자인 패턴」의 콤포지트 패턴(Composite Pattern)이라고 불리는 구조에 해당하다.
더구나, 그래프는 플러그인의 성질도 겸비하고 있기 때문에, 다른 플러그인 같이 입출력 포트를 가지고, 다른 플러그인과 서로 결선할 수 있다. 그래프 오브젝트를 작성함으로써, 복수의 플러그인 오브젝트로 이루어진 회로 블록을 하나의 부품 오브젝트로서 취급할 수 있다.
그래프 클래스, 플러그인 클래스 모두, 인터페이스(API)가 정의되고 있고, SSP 미들웨어의 클라이언트가 되는 애플리케이션으로부터는, 이 API를 콜함으로써, 이 오브젝트를 제어할 수 있다. 사용자가 SSP 시스템에 대하여 행하는 조작이란, 이 2개의 오브젝트에 대한 조작이다.
[플러그인의 구성에 대해서]
도6은, 플러그인의 구성의 일례를 도시한 도면이다. 상기한 것 같이, 플러그 인은, 신호 처리 소프트웨어 모듈이므로, 이 도 6의 구성의 각 부는, 하드웨어로서 구비하는 것이 아니고, 소프트웨어의 기능으로서 구비하는 것이다.
도 6에 나타낸 것과 같이 플러그인(600)은, 신호 처리부(601)를 구비하는 동시에, 0개 이상의 입력 포트(602)과, 0개 이상의 출력 포트(603)을 가지는 것이 가능하다. 즉, 플러그인(600)은, 입력 포트(602)을 가지지 않을 경우와, 출력 포트(603)을 가지지 않을 경우가 있다는 동시에, 1개 또는 복수개의 입력 포트(602), 출력 포트(603)을 가지는 것이 가능하다.
각 플러그인(600)은, 입력 포트(602) 및 출력 포트(603)을 통해, 다른 플러그인과 신호의 교환, 이 예에서는 음성 데이터의 교환을 할 수 있다. 이 예에 있어서는, 1포트당 1채널분의 음성신호를 입출력한다.
플러그인(600)에 대하여 입력 포트(602) 및 출력 포트(603)의 추가?삭제를, 사용자가 지시함으로써 플러그인(600)이 갖는 입력 포트(602) 및 출력 포트(603)의 수를 신호 처리중이라도 동적으로 변경할 수 있도록 구성되어 있다. 입력 포트(602) 및 출력 포트(603)에는, 추가한 순서에 의해 0~N(N은 임의의 자연수) 및 0~M(M은 임의의 자연수)의 식별 번호가 주어져, 사용자는, 이 식별 번호에 의해, 입력 포트(602)의 하나 및 출력 포트(603)의 하나를 지정할 수 있다.
또한 플러그인(600)은, 내부에 0개 이상의 파라미터 유지부(파라미터 버퍼)(604)를 구비하고, 해당 파라미터 유지부(604)에 0개 이상의 파라미터를 가지는 것이 가능하다. 여기에서, 파라미터란, 신호 처리에 있어서의 효과의 양 등을 설정하는 가변치이며, 사용자에 의해 입력 설정된다. 예를 들면 플러그인(600)이 앰프 인 경우를 예로 들면, 증폭 게인치 등이 그것에 해당한다. 플러그인(600)을 사용하는 사용자는, 플러그인(600)의 파라미터 값을 변경함으로써, 신호 처리의 효과를 바꿀 수 있다.
이 예에서는, 파라미터에는, 0~K(K은 임의의 자연수)의 식별 번호가 할당되어 있다. 사용자는, 임의의 파라미터의 식별 번호를 지정함으로써, 임의의 타이밍에서 파라미터 버퍼의 내용을 변경할 수 있다. 플러그인(600)의 기구로서, 사용자로부터 주어진 파라미터는, 일단, 플러그인(600) 내부의 파라미터 버퍼(604)에 유지된다. 그리고, 시스템(그래프)로부터 주어지는 샘플 데이터에 동기한 시각정보에 의거하여 파라미터가 판독되어서, 신호 처리부(601)로 보내져서, 그것의 신호 처리에 사용할 수 있다.
또한 플러그인(600)에는, 시각정보의 레지스터부(605)을 구비하고, 이 레지스터부(605)에는, SSP 시스템(그래프이다)으로부터, 항상, 시각정보가 입력되고 있다. 이 시각정보란, SSP 시스템을 시작한 시점(그래프의 신호처리 함수를 시작한 시점)을 기점으로 하는 음성 입출력 데이터 샘플의 적산 카운트수이다. 이 적산 카운트수가 SSP 시스템에서 가장 기본이 되는 시각정보이다.
본 실시예의 SSP 시스템에서는, 시각정보와 음성 입출력 데이터는 완전하게 동기되어 있다. 즉, SSP 시스템은, 플러그인(600)에 대하여 음성 데이터와 동시에 시각정보를 준다. 따라서, 시각정보는, 플러그인(600)에 입력되는 음성 데이터의 데이터 샘플의 타임 스탬프의 역할을 하고 있다. 이 때문에, 플러그인(600) 자신은, 이제부터 신호 처리의 대상이 되는 입력 데이터가, 절대 시간으로 무슨 샘플째 인가라고 하는 상세한 시각정보를 알 수 있다. SSP 시스템 내에 존재하는 모든 플러그인은, 이 절대시간을 참조해서 동기되어 있기 때문에, SSP 시스템 내의 회로 전체로서, 샘플 정밀도의 동기신호 처리를 실현할 수 있다.
플러그인(600)은, 내부에 신호 처리부(601)를 가지고 있다. 다른 플러그인으로부터 입력된 음성 데이터는, 입력 포트(602)을 통해서 신호 처리부(601)에 보내진다. 신호 처리부(601)에서는, 입력 포트(602)로부터 얻은 음성 데이터에 대하여, 시각정보나 신호 처리부(601)에 보내져 온 파라미터 값을 참조하면서, 그 플러그인 고유의 신호 처리를 시행한다. 신호 처리부(601)에서 처리된 음성 데이터는, 출력 포트(603)을 경과해서 다른 플러그인에 송신된다.
플러그인(600)에서의 처리는, 시각정보에 동기함으로써, 1샘플 단위 뿐만 아니라, 복수 샘플 단위, 예를 들면 패킷 단위로 행할 수 있다. 플러그인에서는, 처리 단위마다, 신호처리 함수의 콜을 행한다. 따라서, 패킷 단위로 신호 처리를 할 경우에는, 신호처리 함수의 콜이 1패킷으로 1회가 되어, 함수 콜이 적어지는 만큼, 신호 처리 속도가 빨라진다.
[그래프의 구성예]
도7은, 그래프의 일례를 나타내는 구성도이다. 상기한 것 같이, 그래프는, 신호 처리 소프트웨어 모듈이므로, 이 도 7에 있어서의 그래프(700)의 구성의 각 부는, 하드웨어로서 구비하는 것이 아니고, 소프트웨어의 기능으로서 구비하는 것이다.
전술한 바와 같이, 그래프는 플러그인으로서의 성질도 가지는 것이며, 신호 처리부(701)과, 입력 포트(702)과, 출력 포트(703)과, 파라미터 버퍼(704)과, 시각정보의 레지스터부(705)을 구비하고 있다. 신호 처리부(701)은, 해당 그래프 내에 포함되는 플러그인을 판독하는 처리를 행하는 것이다. 입력 포트(702)과, 출력 포트(703)과, 파라미터 버퍼(704)과, 시각정보의 레지스터부(705)의 기능은, 도 6을 사용하여 설명한 플러그인(600)의, 대응하는 부위로 같으므로, 여기에서는, 그 설명은 생략한다. 또, 파라미터 버퍼(704)의 파라미터는, 그래프(700)에 대한 파라미터인 것은 말할 필요도 없다.
다음에 그래프 특유의 기능에 관하여 설명한다.
그래프(700)은, 내부에 플러그인 생성?유지부(706)을 구비하고 있다. 그래프(700)는, 0개 이상의 플러그인을 내부에 포함할 수 있다. 사용자는, 그래프에 대하여 플러그인의 추가?삭제를 지시함으로써 신호 처리중이라도 동적으로 플러그인의 생성?삭제할 수 있다. 신호 처리중의 동적인 플러그인의 생성?삭제에 관해서는 나중에 상세히 설명한다.
그래프(700)에 있어서는, 생성한 플러그인에는 추가한 순서에 의해 0~J(J는 임의의 자연수)의 식별 번호가 주어진다. 이 때문에, 사용자는, 이 식별 번호에 의해 플러그인을 식별할 수 있다. 단, 그래프(700)는, 플러그인 생성?유지부(706)에는, 이 식별 번호의 순서로 플러그인을 유지하고 있는 것은 아니다. 그래프(700) 내의 플러그인은, 후술하는 순차 계산 순서의 순번으로 소트된 상태로, 플러그인 생성?유지부(706)에 유지되어 있다.
사용자는, 그래프(700)에 대하여, 해당 그래프(700)가 내포하는 플러그인 사이의 결선도 지시할 수 있다. 임의의 플러그인의 출력 포트와 임의의 플러그인의 입력 포트의 결선 상태를, 신호 처리중이라도 동적으로 변경하는 것이 가능하다. 이것들은, 사용자가 그래프(700)에 대하여 플러그인의 식별 번호와 포트의 식별 번호를 지정함으로써 실행할 수 있다. 그래프(700)은, 사용자로부터의 결선 변경 지시에 의해, 플러그인의 결선 상태를 변경하는 처리를 행한다.
사용자는, 그래프(700)에 대하여, 신호 처리의 시작을 지시한다. 사용자가, 그래프(700)의 신호처리 함수를 콜하면, 그래프(700)의 신호처리 함수 내에서 순차적으로, 해당 그래프(700)가 내포하는 플러그인의 신호처리 함수가 재귀적으로 콜된다. 신호처리 함수가 콜되면, 플러그인 생성?유지부(706)에, 순차 계산 순서의 순번으로 소트된 상태로 유지되어 있다, 그래프(700)가 내포하는 그래프나 플러그인의 신호 처리부가, 상기 순차 계산 순서를 따라, 순차적으로, 실행 처리된다.
그래프(700)거 내포하는 그래프나 플러그인의 계산 처리가 순차적으로 행하여져 감으로써 그래프(700) 내에 구성된 회로 전체의 복합적인 신호 처리가 실현된다. 이 순차 계산 순서는, 플러그인 사이의 결선구조에 의해, 시스템(그래프(700))이 결정한다.
사용자의 지시에 의해 플러그인의 추가?삭제?입력 포트?출력 포트의 결선 상태의 변경 등, 회로상태에 변경이 있을 경우, 그래프(700)은, 후술하는 것 같은 경로 탐색을 실행함으로써, 자기가 내포하는 플러그인 및 자식 그래프에 대해서 최적의 순차 계산 순서를 자동적으로 구한다. 자식 그래프가 내포하는 플러그인에 관 한 최적의 순차 계산 순서는, 해당 자식 그래프가, 경로 탐색을 실행함으로써 자동적으로 구한다.
상기한 그래프에서 행하여지는 경로 탐색의 결과, 플러그인 생성?유지부(706)의 플러그인 군(플러그인으로서의 자식 그래프를 포함한다)은, 이 최적의 순차 계산 순서의 순번으로 소트된 상태로 유지되어 있다. 그래프가 구비하는 경로 탐색의 알고리즘에 대해서는, 나중에 상세하게 설명한다.
[그래프의 기능 블록도]
도 1은, 신호 처리장치의 제1실시예에 있어서, 그래프가 구비하는 기능을 블록화해서 나타낸 그래프의 구성의 기능 블록도이다. 즉, 그래프는, 지시 입력 접수 기능부(1)과, 플러그인 생성 삭제 기능부(21)과, 플러그인 사이 결선 처리 기능부(3)과, 회로 구성 정보 격납 관리 기능부(4)과, 경로 탐색 기능부(5)과, 신호 처리 순서 관리 기능부(6)과, 신호 처리 실행 기능부(7)과, 신호 처리 함수 격납부(8)과, 에러 경고 기능부(9)를 구비한다.
지시 입력 접수 기능부(1)은, 사용자로부터의 플러그인 생성 혹은 삭제 지시, 입출력 포트의 결선 지시, 파라미터 입력 지시 등을 접수하여, 플러그인 생성 혹은 삭제 지시는, 플러그인 생성 삭제 기능부(21)에 건네 주고, 입출력 포트의 결선 지시는, 플러그인 사이 결선 처리 기능부(3)에 건네 준다. 또한 플러그인 생성 혹은 삭제 지시, 또한 입출력 포트의 결선 지시가 있으면, 지시 입력 접수 기능부(1)은, 경로 탐색 기능부(5)을 기동시켜서, 경로 탐색을 실행시키도록 한다. 또한 지시 입력 접수 기능부(1)은, 파라미터 입력 지시를 접수했을 때에는, 파라미터 버퍼에 입력된 파라미터를 유지하는 기능을 갖추고 있다.
플러그인 생성 삭제 기능부(21)은, 지시 입력 접수 기능부(1)로부터의 플러그인 생성 혹은 삭제 지시를 받고, 플러그인의 생성 혹은 삭제 처리를 행한다. 즉, 플러그인 생성시에는, 생성된 플러그인에 식별 번호를 부여하고, 회로 구성 정보 격납 관리 기능부(4)에, 해당 식별 번호를 포함하는 플러그인의 생성 정보를 건네 준다. 또한 플러그인 삭제시에는, 삭제된 플러그인의 식별 번호와, 그 삭제 의뢰를 포함하는 삭제정보를 회로 구성 정보 격납 관리 기능부(4)에 건네 준다.
플러그인 사이 결선 처리 기능부(3)은, 지시 입력 접수 기능부(1)로부터의 플러그인 사이의 결선 지시를 받고, 해당 결선 지시에 의해 지정된 플러그인의 출력 포트와 입력 포트의 결선정보를 회로 구성 정보 격납 관리 기능부(4)에 건네 준다.
회로 구성 정보 격납 관리 기능부(4)은, 플러그인 생성 삭제 기능부(21)나 플러그인 사이 결선 처리 기능부(3)로부터의 플러그인의 생성 정보, 삭제정보, 결선 정보로부터, 그래프 내에 구성되는 회로 정보를 기억하고, 관리한다.
경로 탐색 기능부(5)은, 지시 입력 접수 기능부(1)로부터의, 플러그인 생성 혹은 삭제 지시, 또한 입출력 포트의 결선 지시에 근거하는 기동 의뢰를 받고, 후술하는 경로 탐색의 알고리즘을, 기동해서 실행한다. 이 경로 탐색의 알고리즘의 실행의 결과, 정해진 플러그인의 순차 계산 순서(신호 처리순서)의 정보를, 신호 처리 순서 관리 기능부(6)에 보낸다. 신호 처리 순서 관리 기능부(6)은, 전술한 도 7에 나타낸 플러그인 생성?유지부(706)에, 해당 신호 처리순서의 순번으로 플러그인의 식별 정보를 나란하게 유지하도록 한다.
신호 처리 실행 기능부(7)은, 도 1에 나타낸 것과 같이 데이터 교환 처리부(71)과, 신호처리 함수 호출부(72)과, 신호 처리 시각 관리부(73)과, 신호 처리 동기 관리부(74)을 구비하고 있다.
신호 처리 실행 기능부(7)은, 지시 입력 접수 기능부(1)을 통해서 입력되는 신호 처리 시작 지시에 의거하여 그래프 내에 구성된 회로에 의한 신호 처리를 시작한다. 사용자가, 그래프(700)의 신호처리 함수의 콜을 지시하면, 신호처리 함수 호출부(72)가, 신호 처리 함수 격납부(8)로부터 지시된 그래프의 신호처리 함수를 판독한다. 신호처리 함수 호출부(72)은, 그래프의 신호처리 함수는, 사용자 지시에 의해 판독을 행하지만, 그래프 내의 각 플러그인의 신호처리 함수는, 상기 그래프의 신호처리 함수 내에서 순서대로, 각각의 플러그인의 신호처리 함수를 재귀적으로 호출한다.
그리고, 신호 처리 실행 기능부(7)의 데이터 교환 처리부(71)은, 회로 구성 정보 격납 관리 기능부(4)의 격납 회로 정보를 참조하여, 회로 구성에 따라, 이 예에서는, 음성 데이터를 순차적으로 플러그인에 건네 주어 가도록 한다.
신호 처리 시각 관리부(73)은, 이 데이터 교환 처리부(71)에 의한 데이터 샘플 단위의 시간을 관리한다. 신호 처리 동기 관리부(74)은, 패킷 단위의 신호 처리시의 패킷 동기처리(예를 들면 패킷의 선두의 관리)나, 전술한 음성 데이터의 처리 타이밍을, 영상 데이터의 프레임에 동기시키는 AV 동기 등을 관리한다.
경로 탐색 기능부(5)은, 신호 처리 실행 기능부(7)에 의한 신호 처리중이라도, 지시 입력 접수부(1)로부터의 그래프 내의 회로 구성의 변경 요구를 접수하고, 변경된 회로 구성에 관한 경로 탐색을 실행하여, 그 탐색 결과를 회로 구성 정보 격납 관리 기능부(4) 및 신호 처리 순서 관리 기능부(6)에 전해준다. 이에 따라 신호 처리 실행 기능부(7)는, 그 후는, 변경된 회로 구성에 있어서, 변경후의 경로 탐색 결과에 근거한 신호 처리 순서로 신호 처리가 실행된다.
그런데, 전술한 바와 같이, 일반적인 디지털 신호 처리 이론에 있어서의 「신호 처리 플로우 그래프중의 피드백 루프에는 반드시 1개 이상의 지연 소자를 포함할 필요가 있다」라고 하는 조건을 만족시도록, 그래프 내에 신호 처리의 회로 구성이 작성될 필요가 있다.
그러나, 사용자가 피드백 루프에 지연 소자를 포함할 필요가 있다고 하는 지식을 가지지 않을 경우에는, 상기한 조건을 만족하지 않는 회로가 그래프 내에 작성될 우려가 있다. 경로 탐색 기능부(5)은, 이렇게 피드백 루프 내에 지연 소자가 포함되지 않는 회로가 그래프 내에 구성되었을 경우에는, 후술하는 것과 같이 초기 경로 탐색 알고리즘에 있어서, 이상한 케이스의 발생으로서, 그것을 감지하도록 한다. 그리고, 경로 탐색 기능부(5)은, 이상한 케이스의 발생을 감지했을 때에는, 에러 발생의 에러 감지 결과를 에러 경고 기능부(9)에 송출한다.
에러 경고 기능부(9)은, 경로 탐색 기능부(5)로부터의 에러 발생의 에러 감지 결과를 받고, 피드백 루프 내에 지연 소자가 포함되지 않는 회로가 그래프 내에 구성되었다고 판별한 경우에는, 예를 들면 「지연이 없는 폐 루프는 만들 수 없습 니다」 등의 경고 메시지를, 음성에 의해 소리를 내거나, 디스플레이에 표시하거나 해서, 사용자에게 경고를 하도록 한다.
사용자는, 이 경고를 받고, 자기가 작성한 회로의 피드백 루프를 검증하여, 적절한 위치에 지연 소자를 추가 삽입하는 수정 조작을 할 수 있다.
[그래프 구조를 가지는 회로 작성 처리]
다음에 본 발명의 실시예에 의한 신호 처리회로의 작성 처리의 흐름을, 도 8의 회로 구성을 그래프 내에 작성할 경우를 예로 들어 설명한다. 이하의 설명에 있어서는, 그래프나 플러그인을 총칭해서 오브젝트라고 부른다. 오브젝트란, 오브젝트 지향에 있어서의 인스턴스를 가리키고, 그래프나 플러그인의 실체 바로 그것이다.
오브젝트 생성시의 각 그래프나 각 플러그인의 디폴트 입출력 포트수(초기값)은 하기와 같다. 또, 사용자는, 오브젝트 생성후에 입력 포트 및/또는 출력 포트를 추가 또는 삭제하는 것이 가능하다.
부모 그래프(800): 입력 포트수 0, 출력 포트수 0
플러그인 801: 입력 포트수 0, 출력 포트수 1
플러그인 802:입력 포트수 1, 출력 포트수 0
자식 그래프(803): 입력 포트수 1, 출력 포트수 1
플러그인 804: 입력 포트수 1, 출력 포트수 1
플러그인 805: 입력 포트수 2, 출력 포트수 2
플러그인 806: 입력 포트수 1, 출력 포트수 1
또, 이하의 설명에 있어서, 입력 포트 및 출력 포트의 뒤의 숫자는, 포트 번호이며, 0,1,2가 사용되고 있다.
[회로 작성 순서]
다음에 도 8의 회로의 작성 순서를, 도 9~도12의 흐름도를 참조하면서 설명한다. 또, 도 9~도12은, 설명의 이해를 쉽게 하기 위해서, 사용자의 지시와, 실시예의 신호 처리장치에 있어서의 처리를 대응시켜서 나타낸 것이다. 도면에 나타내는 것은, 생략하였지만, 실시예의 신호 처리장치는, 표시 화면에, 사용자의 지시 입력에 따른 표시를 행해 가는 것이며, 사용자는, 그 표시 화면을 보면서 조작 입력을 할 수 있는 것이다.
우선, 사용자는, 그래프(800)(부모 그래프)의 오브젝트의 작성 지시를 한다(사용자 지시(1)). 그러면, 신호 처리 장치에는, 루트 오브젝트로서, 부모 그래프(800)을 생성하고, 등록한다(스텝 S101).
다음에, 사용자는, 그래프(800)의 오브젝트에 대하여 플러그인 801 오브젝트의 작성을 지시한다(사용자 지시(2)). 그러면, 신호 처리 장치에서는, 작성된 그래프(800)의 플러그인 생성 삭제 기능에 의해, 그래프(800) 내에 플러그인 801이 생성되어서 등록된다(스텝 S102). 그래프(800) 내의 경로 탐색 기능부(5)은, 이 플러그인의 생성 지시에 의거하여 경로 탐색을 실행한다(스텝 S103).
다음에, 사용자는, 그래프(800)의 오브젝트에 대하여 플러그인 802 오브젝트 의 작성을 지시한다(사용자 지시(3)). 그러면, 신호 처리 장치에서는, 그래프(800)의 플러그인 생성 삭제 기능에 의해, 그래프(800) 내에 플러그인 802가 생성되어서 등록된다(스텝 S104). 그래프(800) 내의 경로 탐색 기능부(5)은, 이 플러그인의 생성 지시에 의거하여 경로 탐색을 실행한다(스텝 S105).
다음에, 사용자는, 그래프(800)의 오브젝트에 대하여 그래프 803 오브젝트(자식 그래프)의 작성을 지시한다(사용자 지시(4)). 그러면, 그래프(800)에서는, 플러그인 생성 삭제 기능에 의해, 그래프(800) 내에 자식 그래프(803)을 플러그인으로서 생성해서 등록한다(스텝 S106). 그래프(800) 내의 경로 탐색 기능부(5)은, 이 플러그인의 생성 지시에 의거하여 경로 탐색을 실행한다(스텝 S107).
다음에, 사용자는, 그래프 803의 오브젝트에 대하여 입력 포트 0(외부)의 작성을 지시한다(사용자 지시(5)). 그러면, 신호 처리 장치에서는, 생성된 자식 그래프(803)의 기능으로서, 입력 포트 0(외부)이 생성되어, 자식 그래프(803) 내에 등록된다(스텝 S111). 그리고, 자식 그래프(803)에서는, 입력 포트 0(외부)에 대응하는 내부의 출력 포트 0(내부)을 자동적으로 생성한다(스텝 S112). 그리고, 자식 그래프(803) 내의 경로 탐색 기능부(5)은, 이 포트 작성 지시에 의거하여 경로 탐색을 실행한다(스텝 S113).
다음에, 사용자는, 자식 그래프(803)의 오브젝트에 대하여, 출력 포트 0(외부)의 작성을 지시한다(사용자 지시(6)). 그러면, 신호 처리 장치에서는, 생성된 자식 그래프(803)의 기능으로서, 출력 포트 0(외부)이 생성되어, 자식 그래프(803) 내에 등록된다(스텝 S114). 그리고, 자식 그래프(803)에서는, 출력 포트 0(외부)에 대응하는 내부의 입력 포트 0(내부)을 자동적으로 생성한다(스텝 S115). 그리고, 자식 그래프(803) 내의 경로 탐색 기능부(5)은, 이 포트 작성 지시에 의거하여 경로 탐색을 실행한다(스텝 S116).
다음에, 사용자는, 자식 그래프(803)의 오브젝트에 대하여, 플러그인 804 오브젝트의 작성을 지시한다(사용자 지시(7)). 그러면, 자식 그래프(803)의 플러그인 생성 삭제 기능에 의해, 자식 그래프(803) 내에 플러그인 804가 생성되어서 등록된다(스텝 S117). 자식 그래프(803) 내의 경로 탐색 기능부(5)은, 이 플러그인의 생성 지시에 의거하여 경로 탐색을 실행한다(스텝 S118).
다음에, 사용자는, 자식 그래프(803)의 오브젝트에 대하여, 플러그인 805 오브젝트의 작성을 지시한다(사용자 지시(8)). 그러면, 자식 그래프(803)의 플러그인 생성 삭제 기능에 의해, 자식 그래프(803) 내에 플러그인 805가 생성되어서 등록된다(스텝 S119). 자식 그래프(803) 내의 경로 탐색 기능부(5)은, 이 플러그인의 생성 지시에 의거하여 경로 탐색을 실행한다(스텝 S120).
다음에, 사용자는, 자식 그래프(803)의 오브젝트에 대하여, 플러그인 806 오브젝트의 작성을 지시한다(사용자 지시(9)). 그러면, 자식 그래프(803)의 플러그인 생성 삭제 기능에 의해, 자식 그래프(803) 내에 플러그인 806이 생성되어서 등록된다(스텝 S131). 자식 그래프(803) 내의 경로 탐색 기능부(5)는, 이 플러그인의 생성 지시에 의거하여 경로 탐색을 실행한다(스텝 S132).
다음에, 사용자는, 그래프(800)의 오브젝트에 대하여, 플러그인 801의 출력 포트 0과 자식 그래프(803)의 입력 포트 0(외부)의 결선을 지시한다(사용자 지시 (10)). 그러면, 그래프(800)에서는, 플러그인 사이 접속 처리 기능부(3)에 의해, 플러그인 801의 출력 포트 0과, 자식 그래프(803)의 입력 포트 0(외부)을 결선하고, 해당 그래프(800) 내에 등록한다(스텝 S133). 그래프(800) 내의 경로 탐색 기능부(5)은, 포트 접속 지시에 의거하여 경로 탐색을 실행한다(스텝 S134).
다음에, 사용자는, 그래프(800)의 오브젝트에 대하여, 자식 그래프(803)의 출력 포트 0(외부)과 플러그인 802의 입력 포트 0의 결선을 지시한다(사용자 지시(11)). 그러면, 그래프(800)에서는, 플러그인 사이 접속 처리 기능부(3)에 의해, 자식 그래프(803)의 출력 포트 0(외부)과, 플러그인 802의 입력 포트 0을 결선하고, 해당 그래프(800) 내에 등록한다(스텝 S135). 그래프(800) 내의 경로 탐색 기능부(5)은, 포트 접속 지시에 의거하여 경로 탐색을 실행한다(스텝 S136).
다음에, 사용자는, 자식 그래프(803)의 오브젝트에 대하여, 자식 그래프(803)의 내부의 출력 포트 0(내부)과 플러그인 804의 입력 포트 0과의 결선을 지시한다(사용자 지시(12)). 그러면, 자식 그래프(803)에서는, 플러그인 사이 접속 처리 기능부(3)에 의해, 자식 그래프(803)의 내부의 출력 포트 0(내부)과, 플러그인804의 입력 포트 0을 결선하고, 해당 자식 그래프(803) 내에 등록한다(스텝 S137). 자식 그래프(803) 내의 경로 탐색 기능부(5)은, 포트 접속 지시에 의거하여 경로 탐색을 실행한다(스텝 S138)
다음에, 사용자는, 자식 그래프(803)의 오브젝트에 대하여, 플러그인 804의 출력 포트 0과 플러그인 805의 입력 포트 0의 결선을 지시한다(사용자 지시(13)). 그러면, 자식 그래프(803)에서는, 플러그인 사이 접속 처리 기능부(3)에 의해, 플 러그인 804의 출력 포트 0과 플러그인 805의 입력 포트 0을 결선하고, 해당 자식 그래프(803) 내에 등록한다(스텝 S141). 자식 그래프(803) 내의 경로 탐색 기능부(3)는, 포트 접속 지시에 의거하여 경로 탐색을 실행한다(스텝 S142).
다음에, 사용자는, 자식 그래프(803)의 오브젝트에 대하여, 플러그인 805의 출력 포트 1과 플러그인 806의 입력 포트 0의 결선을 지시한다(사용자 지시(14)). 그러면, 자식 그래프(803)에서는, 플러그인 사이 접속 처리 기능부(3)에 의해, 플러그인 805의 출력 포트 1과 플러그인 806의 입력 포트 0을 결선하고, 해당 자식 그래프(803) 내에 등록한다(스텝 S143). 자식 그래프(803) 내의 경로 탐색 기능부(5)은, 포트 접속 지시에 의거하여 경로 탐색을 실행한다(스텝 S144).
다음에, 사용자는, 자식 그래프(803)의 오브젝트에 대하여, 플러그인 806의 출력 포트 0과 플러그인 805의 입력 포트 1과의 결선을 지시한다(사용자 지시(15)). 그러면, 자식 그래프(803)에서는, 플러그인 사이 접속 처리 기능부(3)에 의해, 플러그인 806의 출력 포트 0과 플러그인 805의 입력 포트 1을 결선하고, 해당자식 그래프(803) 내에 등록한다(스텝 S145). 자식 그래프(803) 내의 경로 탐색 기능부(5)은, 포트 접속 지시에 의거하여 경로 탐색을 실행한다(스텝 S146).
여기에서, 플러그인 806이 지연을 포함하지 않는 플러그인일 때에는, 전술한 것과 같이 하여, 경로 탐색 기능부(5)의 경로 탐색의 결과로서, 에러 발생의 에러 감지 결과를 얻을 수 있고, 에러 경고 기능부(9)에 의해, 사용자에 대하여 에러 메시지에 의한 경고가 발생한다. 이것을 받은 사용자는, 피드백 루프 내의 플러그인 806의 전단 혹은 후단에 지연 소자를 삽입함으로써 에러가 발생하지 않는 상태가 된다.
또, 플러그인 806이 지연을 포함하는 플러그인일 때에는, 에러 발생의 에러 감지 결과는 얻을 수 없어, 에러 발생의 경고도 발생하지 않는 것은 말할 필요도 없다.
최후에, 사용자는, 자식 그래프(803)의 오브젝트에 대하여, 플러그인 805의 출력 포트 0과 자식 그래프(803)의 내부의 입력 포트 0(내부)의 결선을 지시한다(사용자 지시(16)). 그러면, 자식 그래프(803)에서는, 플러그인 사이 접속 처리 기능부(3)에서, 플러그인 805의 출력 포트 0과 자식 그래프(803)의 내부의 입력 포트 0(내부)을 결선하고, 해당 자식 그래프(803) 내에 등록한다(스텝 S147). 자식 그래프(803) 내의 경로 탐색 기능부(5)은, 포트 접속 지시에 의거하여 경로 탐색을 실행한다(스텝 S148).
이상의 순서에 의해, 도 8의 회로가, 그래프(800) 내에 구성된다. 그리고, 사용자가, 그래프(800)에 대하여, 신호 처리 시작의 지시를 하면, 전술한 것과 같이 하여, 경로 탐색에 의해 정해진 신호 처리순서를 따라, 각 플러그인에서의 신호 처리가 순차적으로 실행된다.
상기한 바와 같이, 본 실시예의 신호 처리장치에 있어서는, 사용자의, 상기한 예의 경우의 합계 16 순서는, 그래프 오브젝트에 대한 조작이므로, 해당 조작마다 회로의 그래프 구조가 변화되기 때문에, 각 순서마다 경로 탐색 알고리즘이, 시스템(그래프)에 의해 자동적으로 실행된다. 그리고, 회로 구성의 생성 처리가 완료했을 때에는, 경로 탐색도 완료하고, 신호 처리순서도 정해진 상태가 된다.
다음에, 도 8의 예에서 작성한 회로의 신호 처리 실행의 흐름을 설명한다.
그래프(800) 내의 플러그인 생성?지지부에는, 경로 탐색 알고리즘에 의해, 최적의 순차 계산 순서로 소트된 상태로 플러그인이 유지되어 있다. 도 8의 예에 있어서, 이미 최적인 순서로 플러그인이 유지되어 있는 것으로 가정하고, 이하에서 신호 처리 실행의 흐름을 설명한다.
(1) 사용자는, 우선, 그래프(800)에 대하여 신호 처리의 시작을 지시한다.
(2) 그러면, 그래프(800)의 신호처리 함수가 실행된다.
(3) 다음에, 그래프(800)의 신호처리 함수 내에서 플러그인 801의 신호처리 함수가 실행된다.
(4) 다음에, 그래프(800)의 신호처리 함수 내에서 자식 그래프(803)의 신호처리 함수가 실행된다.
(4-1) 다음에, 자식 그래프(803)의 신호처리 함수 내에서 플러그인 806의 신호처리 함수가 실행된다.
(4-2) 다음에, 자식 그래프(803)의 신호처리 함수 내에서 플러그인 804의 신호처리 함수가 실행된다.
(4-3) 다음에, 자식 그래프(803)의 신호처리 함수 내에서 플러그인 805의 신호처리 함수가 실행된다.
(5) 다음에, 그래프(800)의 신호처리 함수 내에서 플러그인 802의 신호처리 함수가 실행된다.
상기한 순서에 있어서, 최초의 그래프(800)에 대한 신호 처리의 시작 지시의 순서(1)만이, 사용자의 지시에 의한 것이며, 그 후의 순서 (2)~(5)은, 그래프(800) 및 자식 그래프(803)에 의해 자동적으로 실행되는 것이다.
또, 각 플러그인의 신호처리 함수 내에서는, 하기의 동작이 행하여진다.
(1) 입력 포트로부터 입력 데이터를 받는다.
(2) 입력 데이터에 대하여 신호 처리를 시행한다.
(3) 신호 처리된 입력 데이터를 출력 포트에 출력한다.
[실시예의 경로 탐색 알고리즘]
다음에, 본 실시예에 있어서, 그래프의 처리 기능으로 되어 있는 경로 탐색 알고리즘에 관하여 설명한다.
이하에서 설명하는 경로 탐색 알고리즘은, 실시예의 시스템의 주요부를 구성하는 것이며, 이 경로 탐색 알고리즘에 의해, 그래프가 내포하는 플러그인이, 최적의 순서로 소팅된다. 신호 처리시는, 이 소팅된 순서로, 각 플러그인이 가지는 고유의 신호처리 함수가 순차적으로 호출되어 실행된다.
일반적으로, 신호 처리를 DSP(Digital Signal Processor) 등의 신호 처리 디바이스로 행할 경우, DSP 내부의 ALU(Arithmetic Logical Unit) 등의 연산 회로부에 있어서 순차적으로 계산 처리를 행함으로써 원하는 신호 처리를 실현하고 있다. 이 DSP 등에 의한 순차 처리 방법은, 본 실시예의 미들웨어의 CPU에 의한 연산에 관해서도 같다.
즉, 본 실시예에서는 주어진 회로를 시그널 플로우 그래프로 간주하여, 그 그래프로부터 순차 계산 순서를 탐색하고, 탐색 결과에 근거한 순서로, 순차적으로 계산 처리를 행하도록 한다. 본 실시예의 미들웨어인 SSP은, 이 독자적인 경로 탐색 알고리즘을 가지고 있는 것도 특징으로 한다.
이 경로 탐색 알고리즘을 사용함으로써 피드백 루프를 포함하는 임의의 디지털 회로 구성을, 완전하게 에뮬레이트할 수 있다. 또한, 현실의 하드웨어 회로의 세계에서는 불가능한 동적인 회로 구성의 변경이 실현된다.
본 실시예에 있어서, 이 경로 탐색 알고리즘은, 그래프 모양으로 결선된 플러그인으로 이루어진 회로의 신호 처리를 실현하기 위해서, 어느 플러그인으로부터 순서으로 신호 처리하면 좋을가라는 순차 계산 순서를 구하는 알고리즘이다. 여기에서, 경로 탐색의 대상이 되는, 그래프 내에 구성되는 회로는, 피드백 루프 모양의 회로 구성을 포함하고 있어도 좋다.
이 경로 탐색 알고리즘은, 그래프가 유지하고 있고, 그래프 중의 플러그인 생성?지지부가, 이 경로 탐색 알고리즘을 실행한다.
사용자로부터, 그래프에 대하여, 그래프 구조를 변경하는 조작이 행하여졌을 경우에, 그래프 자신이 자동적으로 경로 탐색을 실행하여, 새로운 순차 계산 순서를 구한다. 회로내에 복수의 그래프가 존재하고 있을 경우에는, 경로 탐색은, 각 그래프 단위로 독립해서 행하여져, 변경이 있었던 그래프만 경로 탐색이 실행된다. 이 경로 탐색은, 매우 단순하기 때문에, 단시간에 완료한다.
본 실시예의 경로 탐색 알고리즘의 상세를 이하에서 설명한다.
본 실시예의 경로 탐색 알고리즘에서는, 그래프 모양으로 형성되어 있는 회 로의 요소인 플러그인을 노드로 간주한다. 노드란, 그래프 이론에 있어서의 마디가 되는 요소이다. 본 실시예에서는 회로는, 노드 사이가 방향을 가지는 화살표로 결합되는 유향 선분 그래프로 표현할 수 있다. 노드를 향하는 화살표를 노드에의 입력, 노드에서 밖으로 형하는 화살표를 노드로부터의 출력으로 정의한다. 본 실시예의 경로 탐색 알고리즘은, 그래프 모양으로 결선된 노드를 순서대로 둘러싸, 신호 순서를 정해 간다. 이하, 본 실시예의 경로 탐색 알고리즘을 노드 스캔 알고리즘이라고 칭한다.
이 노드 스캔 알고리즘은, 경로 탐색의 베이스가 되는 초기 경로 탐색 알고리즘(프라이머리 노드 스캔 알고리븜)과, 경로의 루프 정보를 가미하는 탐색을 행하는 루프 서치 알고리즘으로 이루어진다.
그리고, 본 실시예에 있어서는, 도13에 나타낸 것과 같이 노드 스캔 알고리즘에 있어서는, 우선, 초기 경로 탐색 알고리즘을 행한다(스텝 S151). 그리고, 초기 경로 탐색 알고리즘을 종료하였는가 아닌가 판별해(스텝 S152), 초기 경로 탐색 알고리즘을 정상적으로 종료했다고 판별했을 때에는, 루프 서치 알고리즘을 실행하도록 한다(스텝 S153). 그리고, 이 경로 탐색 알고리즘을 종료한다.
또한 스텝 S152에서, 초기 경로 탐색 알고리즘이 종료하지 않는 것으로 판별했을 때에는, 전술한 바와 같이, 또한 나중에 상세하게 설명하는 것과 같이 하여, 피드백 루프 내에 지연을 포함하지 않은 플러그인이 삽입되어 버린 것에 의한 에러의 발생에 의해, 초기 경로 탐색 알고리즘을 중지 종료하였는가 아닌가 판별한다(스텝 S154).
스텝 S154에서, 초기 경로 탐색 알고리즘은 중지 종료되지 않고 있다고 판별했을 때에는, 스텝 S151로 되돌아가, 초기 경로 탐색 알고리즘을 계속한다. 또한 스텝 S154에서, 초기 경로 탐색 알고리즘은 중지 종료되었다고 판별했을 때에는, 그대로, 이 경로 탐색 알고리즘을 종료한다.
[초기 경로 탐색 알고리즘에 대해서]
이 초기 경로 탐색 알고리즘은, 다음과 같은 「해결해야 할 명제」를 설정하고, 후술하는 것과 같은 「탐색 조건」하에서, 행하는 것이다.
「해결해야 할 명제」
그래프 모양으로 결선된 노드를 순차적으로 더듬어 가는 것을 상정한다. 1회의 순회 또한 하기 조건하에서, 모든 노드를 한번에 통과하고 싶다. 그것이 가능해 지는 순회 순서를 구해라. 단, 순회하는 노드 사이가 그래프로 직접 결선되어 있을 필요는 없고, 노드를 띄엄 띄엄 순회해도 상관없다.
「탐색 조건」
(a) 입력이 없는 노드는 무조건으로 통과할 수 있다.
(b) 지연 소자가 되는 플러그인의 노드는, 무조건으로 통과할 수 있다.
(c) 통과한 노드는 출력이 확정한다.
(d) 노드 A의 입력에 접속되어 있는 전단의 노드 B의 출력이 확정하면, 노드 A의 입력이 확정된다.
(e) 노드의 전체 입력이 확정되면 그 노드를 통과할 수 있다.
또, 노드의 식별자로서 미리 순번으로 고유번호가 할당되어 있다. 이 번호를 노드 넘버(노드 No.)라고 부른다. 이것은 임의의 번호이어도 좋고, 예를 들면 플러그인의 오브젝트의 생성 순서로 노드 넘버를 할당시켜 두면 좋다. 또, 플러그인에는 , LTP(Latency Type Plugin)과, NLTP(Non Latency Type Plugin)의 종류의 타입이 있다. LTP는, 지연 소자가 되는 플러그인이며, 1샘플 이상의 지연이 발생한다. NLTP은, 게이트 소자가 되는 플러그인이며, 지연은 발생하지 않는다.
초기 경로 탐색 알고리즘에 있어서는, 2번째, 3번째로 반복하면서, 상기 명제의 해가 구해질 때까지, 노드의 체크를 행하지만, 각 1차례의 탐색에 있어서, 통과가능한 노드가 반드시 하나는 발견된다고 하는 성질이 있다.
단, 하나만 예외가 있다. 피드백 루프 내에 지연 소자인 LTP가 포함되지 않는 경우에는, 1차례의 탐색에 있어서, 통과가능한 노드를 단 하나도 찾을 수 없다. 이것은, 회로 구성상, 이상한 케이스이다.
일반적인 디지털 신호 처리이론에서는, 인과율을 만족시키기 위해, 피드백 루프 내에 반드시 하나 이상의 지연 소자를 포함할 필요가 있다. 본 실시예에 있어서의 초기 경로 탐색 알고리즘에서는, 사용자가, 이 기본원칙을 지키지 않는 회로를 작성한 경우에는, 상기 예외가 발생한다고 하는 성질이 있다.
따라서, 본 실시예의 초기 경로 탐색 알고리즘에 있어서는, 이 예외 발생을 에러 경고에 이용할 수 있다. 즉, 사용자가 지연 소자를 포함하지 않는 피드백 회로를 작성했을 경우에는, 초기 경로 탐색 알고리즘에 있어서, 상술한 바와 같은 경 로 탐색의 예외 발생이 생기므로, 그 경우를 검출했을 때에는, 회로를 재구성하도록, 시스템으로부터 사용자에게 경고를 발생하도록 한다.
이상의 초기 경로 탐색 알고리즘은, 도14의 흐름도에 의해 실행할 수 있다.
우선, 최초의 노드를 체크하여(스텝 S161), 해당 노드에 대하여 노드 순서 번호(이하, 노드 인덱스라고 부른다)가 부여필인가 아닌가 판별한다(스텝 S162). 부여필이면, 모든 노드에 노드 인덱스가 부여되어 있는가 아닌가 판별해(스텝 S169), 모든 노드에 노드 인덱스가 부여되어 있다고 판별했을 때에는, 이 처리 루틴을 종료한다.
또한 스텝 S169에서, 모든 노드에는, 노드 인덱스를 부여되어 있지 않다고 판별했을 때에는, 다음 노드를 체크하고(스텝 S165), 그 후에 스텝 S162로 되돌아가, 스텝 S162 이후를 반복한다.
스텝 S162에서, 노드 인덱스가 부여필이 아니라고 판별했을 때에는, 무조건으로 통과할 수 있는 노드인가 아닌가, 즉, 플러그인이 LTP인가 아닌가 판별한다(스텝 S163).
이 스텝 S163에서, 무조건으로 통과할 수 있는 노드가 아니라고 판별했을 때에는, 그 노드의 모든 입력이 확정되어 있는가 아닌가 판별한다(스텝 S164). 이 스텝 S164에서, 모든 입력이 확정되어 있지 않다고 판별했을 때에는, 경로 탐색이 한바퀴 돌았는가 아닌가 판별한다(스텝 S165).
이 스텝 S165에서, 경로 탐색이 한바퀴 돌지 않았다고 판별했을 때에는, 다음 노드를 체크하고(스텝 S173), 그 후에 스텝 S162로 되돌아가, 스텝 S162 이후를 반복한다.
또한 스텝 S165에서, 경로 탐색이 한바퀴 돌았다고 판별했을 때에는, 통과가능한 노드를 하나도 찾을 수 없었는가 아닌가 판별한다(스텝 S166). 이 스텝 S166에서, 통과가능한 노드는 찾을 수 있었다고 판별했을 때에는, 모든 노드에 노드 인덱스가 부여되어 있는가 아닌가 판별해(스텝 S172), 노드 인덱스가 부여되지 않고 있는 노드가 있다고 판별했을 때에는, 다음 노드를 체크하고(스텝 S173), 그 후에 스텝 S162로 되돌아가, 스텝 S162 이후를 반복한다. 또한 스텝 S172에서, 모든 노드에 노드 인덱스가 부여되어 있다고 판별했을 때에는, 이 처리 루틴을 종료한다.
또한 이 스텝 S166에서, 통과가능한 노드는 하나도 찾을 수 없었다고 판별했을 때에는, 피드백 루프 내에 지연 소자가 포함되지 않는 것에 의한 에러 발생의 에러 감지 출력을 생성해서 송출한다(스텝 S167). 그리고, 초기 경로 탐색 알고리즘에 의한 경로 탐색을 중지하고(스텝 S168), 이 처리 루틴을 종료한다.
또한 스텝 S163에서, 무조건으로 통과할 수 있는 노드라고 판별했을 때, 또한 스텝 S164에서, 그 노드의 전체 입력이 확정되어 있다고 판별했을 때에는, 해당 노드를 통과해서 해당 노드의 출력을 확정한다(스텝 S169). 그리고, 해당 노드가 접속되어 있는 노드의 입력을 확정한다(스텝 S170). 그리고, 해당 노드에, 노드 인덱스를 부여한다(스텝 S171).
다음에, 모든 노드에 노드 인덱스가 부여되어 있는가 아닌가 판별해(스텝S 172), 노드 인덱스가 부여되지 않고 있는 노드가 있다고 판별했을 때에는, 다음 노드를 체크하고(스텝 S173), 그 후에 스텝 S162로 되돌아가, 스텝 S162 이후를 반복 한다. 또한 스텝 S172에서, 모든 노드에 노드 인덱스가 부여되어 있다고 판별했을 때에는, 이 처리 루틴을 종료한다.
이상과 같이 해서, 피드백 루프 내에 지연 소자가 포함되지 않는 것에 의한 에러 발생의 에러 감지 출력은, 전술한 바와 같이, 에러 경고 기능부(9)에 공급된다. 이 에러 발생의 에러 검출 출력을 받은 에러 경고 기능부(9)는, 전술한 바와 같은 에러 경고 메시지를 사용자에 대하여 알리다.
즉, 예를 들면 도15에 나타낸 것과 같이 플러그인 806으로서 잘못하여 비지연 소자(NLTP)인 플러그인을, 점선으로 나타낸 바와 같이 접속하고, 피드백 루프를 작성하면, 도15의 돌출부로 나타낸 것과 같이 경고 메시지가 화면 표시된다.
사용자는, 이 에러 경고 메시지에 대응하여, 피드백 루프 내에 지연 소자를 삽입하거나, 혹은, 피드백 루프 내의 NLTP을 LTP로 변경하는 등의 수정 조작을 하도록 한다. 따라서, 다음 경로 탐색 알고리즘 실행의 스텝에서는, 에러 경고는 발생하지 않게 된다.
이상과 같은 초기 경로 탐색 알고리즘에 의한 노드 인덱스의 부여의 구체적인 예를, 도16의 플래그의 회로 구성의 경우를 예로 들어 설명한다. 도16에 있어서는, 대상이 되는 노드는, 노드 No. 0~No. 6의 7개이다. 노드 No. 4과 노드 No. 6은 LTP라고 한다. 이 경우의 초기 경로 탐색 알고리즘은, 아래와 같이 된다. 즉, 노드 No. 0에서 노드 No. 6까지, 순차적으로 하기의 체크를 행한다. 노드 No. 0로부터 노드 No. 6까지를 1차례로서, 전채 노드를 통과할 수 있을 때까지, 하기의 체크를 몇차례라도 반복한다.
(1) 노드 No. 0은, 입력이 없으므로 통과 OK. 따라서, 노드 No. 0의 출력(0) 확정.
(2) 노드 No. 1은, 입력(1)이 확정되지 않고 있으므로 패스.
(3) 노드 No. 2은, 입력이 없으므로 통과 OK. 따라서, 노드 No. 2의 출력(0) 확정.
(4) 노드 No. 3은, 모든 입력(0,1,2)이 확정되지 않고 있으므로 패스.
(5) 노드 No. 4은, LTP이므로 통과 OK. 따라서, 노드 No. 4의 출력(0) 확정.
(6) 노드 No. 5은, 입력(0)이 확정되지 않고 있으므로 패스.
(7) 노드 No. 6은, LTP이므로 통과 OK. 따라서, 노드 No. 6의 출력(0) 확정.
이상으로, 1차례째를 종료한다. 다음에, 통과할 수 없어 출력이 확정되지 않는 노드에 대하여, 다음과 같이 하여, 2차례째의 탐색을 행한다.
(1) 노드 No. 1은, 모든 입력(0,1)이 확정되었으므로 통과O K. 따라서, 노드 No. 1의 출력(0) 확정.
(2) 노드 No. 3은, 모든 입력(0,1,2)이 확정되었으므로 통과 OK. 따라서, 노드 No. 3의 출력(0,1,2) 확정.
(3) 노드 No. 5은, 입력(0)이 확정되었으므로 통과 OK. 따라서 확정.
이상과 같이 해서, 모든 노드를 통과해서 출력이 확정되었으므로, 이상에서 탐색이 완료하게 된다. 이 경우, 2차례째에서 탐색이 완료하게 된다.
[초기 경로 탐색 알고리즘에 의한 탐색 결과]
상기한 초기 경로 탐색 알고리즘의 탐색 순서에 있어서, 출력이 확정된 순서로 노드에 번호를 붙여 가면, 경로 탐색 결과가 구해진다. 이 새로운 노드의 순서 번호가 노드 인덱스이다. 도16의 그래프의 회로 구성예의 경우의 탐색 결과를 도17에 나타낸다.
그래프 내에서는, 플러그인은 노드 인덱스순으로, 플러그인 작성?지지부에 격납되어 있다. 경로 탐색 알고리즘이 실행될 때마다, 플러그인 작성?지지부에 있어서의, 해당 플러그인의 격납 순서가 갱신된다. 신호 처리시는, 그래프가 노드 인덱스순으로 각 플러그인의 신호처리 함수를 콜함으로써, 원하는 신호 처리를 실현하고 있다.
또, 상기한 설명에 있어서는, 초기 경로 탐색 알고리즘 중에서 에러 감지 출력을 송출 오프로 하도록 하였지만, 초기 경로 탐색 알고리즘 중이 아니라, 도13의 흐름도의 경로 탐색 알고리즘에 있어서, 초기 경로 탐색 알고리즘의 중지 종료를 감지했을 때에, 도13의 경로 탐색 알고리즘의 일부로서 에러 감지 출력을 송출하도록 하여도 좋다.
[루프 서치 알고리즘에 대해서]
다음에, 루프 서치 알고리즘에 관하여 설명한다. 이것은 신호 처리 실행시에 있어서의 CPU 부하의 개선을 제공하는 알고리즘이다. 신호 처리의 리얼 타임성을 확보하기 위해서는, 중요한 기술이다.
상기한 초기 경로 탐색 알고리즘에서 구한 탐색 결과에 의해서도, 원하는 회 로의 신호 처리는 실현할 수 있다. 그러나, 초기 경로 탐색 알고리즘에서 구한 탐색 결과에서는, 피드백 루프를 포함하는 회로 구성에 있어서는, 반드시 속도성능적으로는 유리하다고는 말할 수 없다고 하는 문제가 있다.
피드백 루프를 포함하는 회로 구성에 있어서는, 「입력이 확정되지 않는 상태에서 출력을 확정하는 것은 불가능하다」고 하는 디지털 신호 처리이론에 있어서의 인과율을 만족시킬 필요가 있다. 그 때문에 피드백 루프를 포함하는 회로에 있어서는, 1샘플 단위로 순차적으로 각 플러그인의 신호 처리를 행할 필요가 있다. 즉, 1샘플 단위로 플러그인에 대하여 음성 데이터의 입출력 및 신호 처리를 행할 필요가 있다는 것이다.
여기에서, 문제가 되는 것은, 신호 처리할 때마다 발생하는 함수 콜이다. 일반적으로, 소프트웨어 처리에 있어서, 함수 콜은 CPU 부하가 높다(코스트가 높다)고 하는 성질이 있다. 소프트웨어의 리얼 타임 신호 처리에 있어서는, 이 함수 콜 회수를 1회라도 적게 한다고 하는 것이, 처리 속도 성능의 향상에 연결된다. 그래서, 함수 콜 회수를 삭감하는 방법이, 처리 속도 성능의 향상을 고려하는 경우에 요구된다.
함수 콜 회수를 절감하는 일반적인 방법으로서는, 복수 데이터 샘플을 1단위로 하는, 예를 들면 패킷 단위의 처리를 들 수 있다. 1샘플씩 처리하는 것이 아니고, 소정수의 복수 데이터 샘플을 블록화해서 한꺼번에 일괄처리하는 방법이다. 예를 들면 패킷 사이즈가 1024 샘플의 경우에는, 1024 샘플의 음성 데이터를 모아서 블록화하여, 1회의 함수 콜로 처리한다. 이렇게 함에 의해, 함수 콜의 회수를 줄일 수 잇다.
그렇지만, 회로에 피드백 루프가 포함되는 경우에는, 상기한 바와 같이, 1샘플 단위로 함수 콜할 필요가 있다. 이 때문에, 패킷 처리를 행할 수 없다.
따라서, 본 실시예의 경로 탐색 알고리즘에서는, 초기 경로 탐색 알고리즘 후에, 이하에 설명하는 루프 서치 알고리즘을 행함으로써, 이 문제를 해결하는 것이다.
일반적으로, 피드백 루프를 포함하는 회로에 있어서, 루프를 형성하는 노드는, 회로 전체의 일부인 것이 많다. 본 실시예에 있어서의 루프 서치 알고리즘은, 이 점을 이용하여, 루프를 구성하는 노드의 군와, 루프를 구성하지 않는 노드의 군을, 신호 처리순서 위에서, 구분하여, 루프를 구성하지 않는 노드의 군에서는, 패킷 처리를 가능하게 하는 것에 의해, 신호 처리 전체로서, 고속화를 꾀하는 것이다.
예를 들면 도16에 나타낸 회로 구성의 경우, 루프를 구성하는 노드는, 노드 No.3, 노드 No.4, 노드 No.6의 3개이며, 전체의 노드수 7개에 대하여 절반 이하이다.
따라서, 루프를 형성하는 노드만 1샘플 단위로 처리하고, 그 이외의 노드를 패킷 단위로 처리함으로써, 속도 열화를 필요 최소한으로 억제할 수 있다. 전체의 회로 구성에 있어서, 루프를 형성하는 노드의 비율이 작으면 작을수록, 더 효과적으로 속도 열화를 억제할 수 있다.
도18에, 이 루프 서치 알고리즘의 처리의 흐름도를 나타낸다. 우선, 폐로 탐 색 알고리즘을 이용하여, 루프를 구성하는 노드를 구한다(스텝 S181). 폐로 탐색 알고리즘은, 일반적인 그래프 이론의 폐로 탐색 알고리즘을 이용할 수 있다. 이 일반적인 그래프 이론의 폐로 탐색 알고리즘은 주지이므로, 여기에서는, 그 상세한 설명은 생략한다.
다음에, 초기 경로 탐색 알고리즘에서 정해진 신호 처리순서에서는, 루프를 구성하는 노드의 사이에, 신호 처리순서로서, 루프를 구성하지 않는 노드가 들어 있는가 아닌가를 체크한다(스텝 S182).
그리고, 루프를 구성하는 노드의 사이에, 신호 처리순서로서, 루프를 구성하지 않는 노드가 들어 있다고 판별했을 때에는(스텝 S183), 루프를 구성하지 않는 노드를, 루프를 구성하는 노드 앞이 되도록, 신호 처리순서를 바꾼다(스텝 S184). 즉, 노드 인덱스의 고침을 행한다.
스텝 S183에서, 루프를 구성하는 노드의 사이에, 신호 처리순서로서, 루프를 구성하지 않는 노드가 들어 있지 않다고 판별했을 때에는, 그대로, 이 루프 서치 알고리즘을 종료한다.
이 루프 서치 알고리즘을, 도16에 나타낸 회로 구성의 경우에 적용했을 경우를 예로 들어, 구체적인 예를 이하에 설명한다.
도16에 나타낸 회로 구성에 대해서, 초기 경로 탐색 알고리즘을 실행한 결과는, 도17에 나타내는 바와 같다. 이 도17의 탐색 결과에 대해서, 폐로 탐색 알고리즘의 탐색 결과인, 루프를 구성하는 노드, 즉, 노드 No.3, 노드 No.4, 노드 No.6을, 사선에서 붙여 나타내면, 도19의 좌측과 같아진다.
이 도19의 좌측의 도면으로부터 분명하게 나타나 있는 바와 같이, 초기 경로 탐색 알고리즘의 탐색 결과에서는, 신호 처리순서로서, 루프를 구성하는 노드의 사이에, 루프를 구성하지 않는 노드인 노드 No.1이 존재하는 것을 알 수 있다. 그 때문에 이대로의 신호 처리순서에서는, 원래 1샘플 단위로 처리를 행할 필요가 없는 노드 No.1도, 1샘플 단위로 처리를 행할 필요가 있다.
그러나, 루프 서치 알고리즘을 적용했을 때에는, 상기 스텝 S184에 있어서, 루프를 구성하지 않는 노드는, 루프를 구성하는 노드 앞이 되도록, 신호 처리순서를 변경한다.
이 경우에, 신호 처리순서가 변경되어도, 초기 경로 탐색 알고리즘의 해결 명제를 만족시키는 것이 필요하다. 그래서, 루프 서치 알고리즘에 있어서는, 신호 처리순서를 변경할 때에는, 변경후에도 초기 경로 탐색 알고리즘의 해결 명제를 만족시킬 것인가 아닌가의 체크를 행하도록 하여도 좋지만, 이 예에서는, 루프의 선두의 노드보다도, 루프를 구성하지 않는 노드를 앞의 신호 처리순서가 되도록 변경 함으로써, 이러한 체크를 불필요하게 하고 있다. 즉, 상기한 순서 변경 방법은 신호 처리의 순서성을 정확하게 유지한다고 하는 성질이 있다.
도16의 예의 경우이면, 노드 No.4과 노드 No.6은, LTP이므로, 입력이 확정되지 않더라도 출력이 확정한다고 하는 성질을 가지고 있다. 이 성질을 이용하면, 노드 No.4과 노드 No.6은, 노드 No.1보다 나중의 처리가 되어도 상관없다.
이 예에서는, 루프 서치 알고리즘에 의해, 도19의 우측에 나타낸 것과 같이 루프를 구성하지 않는 노드인 노드 No.1은, 신호 처리순서를 3번으로 하여, 루프를 구성하는 노드의 선두의 노드 No.4보다도 앞이 되돌고, 신호 처리순서가 변경된다.
이와 같이 되면, 루프를 구성하는 노드는, 도19의 우측에 있어서 사선을 붙여 나타낸 것과 같이 한 덩어리로 된다. 즉, 루프를 구성하는 노드 군은, 신호 처리순서로서 국소화되어 있게 된다.
이 도19의 우측에 나타나 있는 바와 같은 신호 처리순서에서 신호 처리를, 아래와 같이 하여, 실행함으로써 함수 콜을 필요 최소한으로 억제하는 것이 가능하다.
즉,
(1) 노드 인덱스가 1번으로부터 3번의 노드는, 루프 외이므로, 패킷 단위로 처리한다.
(2) 노드 인덱스가 4번으로부터 6번의 노드는, 루프 내이므로, 1샘플 단위로 처리한다.
(3) 노드 인덱스가 7번의 노드는, 루프 외이므로, 패킷 단위로 처리한다.
이상과 같이 해서 신호 처리를 실행하면, 함수 콜을 적게 하여, 신호 처리속도의 열화를 방지할 수 있다. 다음에, 패킷 사이즈를 1024 샘플로 했을 경우의 예를 하기에 든다.
(1) 노드 No.0에, 1024샘플의 데이터를 건네주는 처리를 실행한다.(함수 콜 1회)
(2) 노드 No.2에, 1024샘플의 데이터를 건네주는 처리를 실행한다.(함수 콜 1회)
(3) 노드 No.1에, 1024샘플의 데이터를 건네주는 처리를 실행한다.(함수 콜 1회)
(4) 하기조작 (4-1)~(4-3)을 1024회 반복한다.(함수 콜 3×1024회)
(4-1) 노드 No.4에, 1샘플의 데이터를 건네주는 처리를 실행한다.(함수 콜 1회)
(4-2) 노드 No.6에, 1샘플의 데이터를 건네주는 처리를 실행한다.(함수 콜 1회)
(4-3) 노드 No.3에, 1샘플의 데이터를 건네주는 처리를 실행한다.(함수 콜 1회)
(5) 노드 No.5에 1024샘플의 데이터를 건네주는 처리를 실행한다.(함수 콜 1회)
따라서, 이상의 (1)~(5)의 신호 처리에 의해, 1024 샘플 신호 처리하기 위해서 필요한 함수 콜 회수의 합계는, 3076회가 된다.
가령, 상기한 예에 있어서, 모든 노드를 1샘플씩 처리한 경우의 함수 콜 회수의 합계는, 7168회가 된다. 따라서, 본 실시예의 노드 스캔 알고리즘을 실행하고, 루프를 구성하는 노드 군을 국소화시켜서, 해당 노드 군만은 1샘플마다 함수 콜을 실행하고, 그 밖의 루프를 구성하지 않는 노드는, 패킷 단위로 1회 함수 콜하도록 함으로써, 상기한 예의 경우에는, 약 57%의 함수 콜수가 삭감되게 된다.
또, 본 실시예의 시스템에서는, 패킷 사이즈는, 고정 치가 아니라 동적으로 그 사이즈를 변경하는 것이 가능하다.
[동적인 회로 구성의 변경 처리]
본 실시예의 신호 처리 장치에서는, 전술한 바와 같이, 신호 처리중이여도, 사용자로부터의 그래프의 변경 지시에 따라, 그래프 구조를 동적으로 변경할 수 있다. 그리고, 신호 처리중이여도, 다시, 본 실시예의 경로 탐색 알고리즘(노드 스캔 알고리즘)을 실행함으로써 회로 구성의 변경에 대응할 수 있다.
이 기능에 의해, 예를 들면 실시예의 신호 처리 장치에서 처리되어서 출력된 음성을 사용자가 들으면서도, 실시예의 신호 처리장치를 새로운 회로 구성으로 변경할 수 있다. 이 때문에, 용도로서 라이브 연주장치 등에, 본 실시예를 활용할 수 있다고 하는 메리트가 있다.
도20에, 이 동적인 변경 처리의 흐름도를 나타낸다. 이 흐름도의 실행 주체는, 그래프이다.
우선, 시간 t에서의 신호 처리를 행한다(스텝 S191). 그리고, 신호 처리중이여도, 플러그인 생성 혹은 삭제 지시나, 입력 포트, 출력 포트의 생성 혹은 결선 지시 등, 그래프 변경 요구가 있는가 아닌가 판별한다(스텝 S192).
그리고, 스텝 S192에서, 그래프 변경 요구가 있다고 판별했을 때에는, 그래프는, 경로 탐색의 재실행을 행하는 동시에, 그래프의 회로 구성의 재구성을 행한다(스텝 S193). 그리고, 다음 시간 (t+1)에서의 신호 처리로 이행한다(스텝 S194). 또한 스텝 S192에서, 그래프 변경 요구가 없다고 판별했을 때에는, 그대로, 다음 시간 (t+1)에서의 신호 처리로 이행한다(스텝 S194).
이 스텝 S194 이후는, 스텝 S192~스텝 S193에서 같은 처리를 반복한다(예를 들면 스텝 S195~196).
이 동적인 변경 처리에 있어서도, 스텝 S193, 스텝 S196 등에 있어서의 경로 탐색에서는, 전술한 도13, 도14의 흐름도를 사용한 경로 탐색 알고리즘이 실행되고, 전술한 예와 같은 방법으로 하여, 잘못하여, 지연이 없는 피드백 루프가 추가되었을 경우에는, 에러 경고가 사용자에 대하여 발생한다.
따라서, 사용자는, 이 에러 경고에 따라 지연 소자를 피드백 루프에 삽입하거나,혹은, 플러그인을 NLTP으로부터 LTP로 변경하거나 해서, 올바른 회로를 용이하게 작성할 수 있다.
[리얼 타임 분산 처리]
이상 설명한 실시예의 신호 처리장치는, 보통은, 1대의 컴퓨터에 의해 실현되고, 신호 처리는, 해당 1대의 컴퓨터 상에서 처리된다. 이 처리를, 네트워크를 거쳐서 접속되는 복수대의 컴퓨터로 확장함으로써 리얼 타임으로 CPU 부하의 분산 처리를 행할 수 있다.
이 분산 처리는, 일반적인 컴퓨팅 기술인 분산 오브젝트 기술을 이용함으로써 실현가능하다. COM/DCOM(Component Object Model/Distributed Component Object Model), CORBA(Common Object Request Broker Architecture)라고 하는 기술이 그것에 해당한다.
이하, 주로 윈도즈(등록상표)계의 OS에서 사용되는 COM/DCOM이라고 하는 기술을 이용했을 경우의 예를 나타낸다. 우선, 본 실시예의 미들웨어의 플러그인의 오브젝트를, 모두 COM 오브젝트로서 설치한다. 여기에서, COM 오브젝트란 오브젝트 지향에 있어서의 콤포넌트 모델이며, 위치 투과성을 특징으로 한다. 위치 투과성이란, 예를 들면 로컬 컴퓨터 상에, COM 오브젝트를 생성하는 것고 같이, 리모트 컴퓨터 상에 COM 오브젝트를 생성할 수 있다고 하는 기능이다.
따라서, 위치 투과성을 사용함으로써, 로컬 컴퓨터 상, 리모트 컴퓨터 상의 어느 것인지를 막론하고, 같은 조작에서, 오브젝트의 생성을 행할 수 있다. 이것은 COM 오브젝트인 플러그인의 오브젝트를, 네트워크를 의식하지 않더라도, 복수의 컴퓨터 상에서 통일적으로 생성할 수 있다고 하는 것이다. 플러그인의 생성에 한정되지 않고, 그 밖의 조작도 로컬 컴퓨터 상, 리모트 컴퓨터 상을 막론하고, 통일된 조작성으로 실현된다.
예를 들면 로컬 컴퓨터 상에서, 음성 입출력 플러그인 오브젝트를 배치하고, 리모트 컴퓨터 상에서, 에코 플러그인 오브젝트를 배치하여, 전체로서 하나의 회로를 구성하는 것도 가능하다.
도21에, 리얼 타임 분산 처리될 경우의 그래프의 구성예를 나타낸다. 이 도21의 예는, 네트워크(3000)을 통해서 로컬 컴퓨터(1000)와 리모트 컴퓨터(2000)가 접속되어 있는 상황에 있어서, 루트 그래프(2500)가 정의되어서, 회로가 작성될 경우이다.
이 도21을 참조하여, 이 예의 회로 작성의 흐름을 설명한다. 사용자는, 로컬 컴퓨터(1000)만으로, 회로 작성할 경우와 거의 같은 방법으로 하여, 회로 작성을 행한다. 리모트 컴퓨터(2000)를 의식하는 것은, 일부만이다.
(1) 사용자가, 그래프(2500)의 오브젝트를 작성한다. 이 그래프(2500) 오브젝트는, 로컬 컴퓨터(1000)에 생성된다.
(2) 사용자가, 그래프(2500)의 오브젝트에 대하여, 플러그인 2501 오브젝트의 작성을 지시한다.
(3) 사용자가, 그래프(2500)의 오브젝트에 대하여, 플러그인 2502 오브젝트의 작성을 지시한다.
(4) 사용자가, 그래프(2500)의 오브젝트에 대하여, 플러그인 2503 오브젝트의 작성을 지시한다. 이 경우, 플러그인 생성 함수에, 리모트 컴퓨터(2000)의 식별자를 부여한다.
(5) 사용자가, 그래프(2500)의 오브젝트에 대하여, 플러그인 2504 오브젝트의 작성을 지시한다.
(6) 사용자가, 그래프(2500)의 오브젝트에 대하여, 플러그인 2501의 출력 포트 0과 플러그인 2502의 입력 포트 0의 결선을 지시한다.
(7) 사용자가, 그래프(2500)의 오브젝트에 대하여, 플러그인 2502의 출력 포트 0과 플러그인 2503의 입력 포트 0의 결선을 지시한다.
(8) 사용자가, 그래프(2500)의 오브젝트에 대하여, 플러그인 2503의 출력 포트 0과 플러그인 2504의 입력 포트 0의 결선을 지시한다.
(9) 사용자가, 그래프(2500)의 오브젝트에 대하여, 플러그인 2504의 출력 포 트 0과 플러그인 2502의 입력 포트 1의 결선을 지시한다.
이상으로 회로가 완성이다. 리모트 컴퓨터를 의식하는 부분은 순서(4)만이다. 또, 신호 처리의 실행에 관해서도 로컬 컴퓨터(1000)만의 경우와 특별하게 차이는 없다.
[제2실시예]
제2실시예는, 기본적인 구성은, 제1실시예와 같다. 차이는, 이 제2 실시예에서는 지연을 포함하지 않는 피드백 루프가 생성되었을 경우에, 제1 실시예에서는 에러 경고를 사용자에 대하여 발생하는 것에 대해서, 제2 실시예에서는 에러 경고는 발생하지 않고, 혹은, 에러 경고를 발생한 후로, 자동적으로 필요한 지연 소자를, 피드백 루프에 삽입 추가하도록 하는 점이다.
그리고, 이 제2 실시예에서는 지연 소자를 자동 추가 삽입하는가 아닌가를 프리셋 설정할 수 있는 동시에, 지연 소자를 자동 추가 삽입할 시에는, 그 지연 소자의 지연량과, 해당 지연 소자의 추가 삽입 위치를 프리셋 설정할 수 있도록 하고 있다.
도22은, 신호 처리장치의 제2실시예에 있어서, 그래프가 구비하는 기능을 블록화해서 나타낸 그래프의 구성의 기능 블록도이다. 즉, 그래프는, 제1실시예와 같은 방법으로, 지시 입력 접수 기능부(1)과, 플러그인 생성 삭제 기능부(21)과, 플러그인 사이 결선 처리 기능부(3)과, 회로 구성 정보 격납 관리 기능부(4)과, 경로 탐색 기능부(5)과, 신호 처리 순서 관리 기능부(6)과, 신호 처리 실행 기능부(7) 과, 신호 처리 함수 격납부(8)과, 에러 경고 기능부(9)를 구비하는 동시에, 프리셋 기능부(10)을 구비한다.
또한 이 제2실시예의 경로 탐색 기능부(5)은, 도22에 나타낸 것과 같이 자동지연 소자 추가 수단(51)을 기능 수단으로서 구비하는 것이다.
프리셋 기능부(10)은, 사용자에 의한 「지연 소자를 자동 추가 삽입할 것인가 아닌가를 프리셋 설정」과, 지연 소자를 자동 추가 삽입한다고 했을 경우의, 「지연 소자의 지연량의 프리셋 설정」과, 「지연 소자의 추가 삽입 위치의 프리셋 설정」을 접수하고, 유지한다.
경로 탐색 기능부(5)의 자동 지연 소자 추가 수단(51)은, 경로 탐색 기능부(5)에서, 지연을 포함하지 않는 피드백 루프가 생성된 것을 검출했을 때에, 해당 피드백 루프 내에, 프리셋 기능부(10)에 프리셋되어서 유지되어 있는 지연량을 가지는 지연 소자를, 동일하게 프리셋되어서 유지되어 있는 추가 삽입 위치에 추가하도록 한다.
도23에, 프리셋 기능부(10)에 있어서의 프리셋 처리 동작의 일례의 흐름도를 나타낸다. 즉, 사용자에 의해, 프리셋 설정 기능이 선택되면, 그래프에서는, 프리셋 기능부(10)을 기동한다.
프리셋 기능부(10)에서는, 우선, 사용자에 대하여, 지연이 없는 피드백 루프가 생성되었을 때에 지연 소자를 자동 삽입 추가하는 설정을 할 것인가 아닌가의 조회 메시지를 송출한다(스텝 S201). 사용자는, 이 조회 메시지에 대하여, 지연 소자를 자동 삽입 추가할 것인가 아닌가를 프리셋 설정한다.
따라서, 프리셋 기능부(10)에서는, 이 사용자의 설정 입력을 접수해서(스텝 S202), 지연 소자를 자동 삽입하는 설정인가 아닌가를 판별한다(스텝 S203). 이 스텝 S203에서, 지연 소자를 자동 삽입한다고는 설정되지 않았다고 판별했을 때에는, 프리셋 기능부(9)는, 이 프리셋 처리 루틴을 종료한다.
또한 스텝 S203에서 지연 소자를 자동 삽입하는 것으로 설정된 판별했을 때에는, 삽입되는 지연 소자의 지연량의 설정 입력을 재촉하는 메시지를 송출한다(스텝 S204). 그리고, 사용자에 의한 해당 지연량의 입력 완료를 기다린다(스텝 S205). 지연량의 입력은 되지 않고 프리셋 중지의 조작이 행해졌다고 판별했을 때에는(스텝 S206), 이 프리셋 처리 루틴을 그대로 종료한다.
스텝 S205에서, 지연량의 입력이 완료했다고 판별했을 때에는, 프리셋 기능부(10)는, 추가 삽입되는 지연 소자의 지연량으로서, 설정된 지연량을 설정하도록 유지한다(스텝 S207).
다음에, 프리셋 기능부(10)은, 추가 삽입되는 지연 소자의 삽입 위치의 선택을 재촉하는 메시지를 송출한다(스텝 S208). 이때, 삽입 위치로서는, 피드백 루프 중의 플러그인(NLTP)의 전방(출력측)과, 후방(입력측)이 선택항목으로서 사용자에게 제시된다.
이에 대하여 사용자는 지연 소자를, 피드백 루프 중의 플러그인의 전방 또는 후방의 어느 곳에 삽입할지의 추가 삽입 위치의 선택입력을 하므로, 프리셋 기능부(10)는, 그 사용자의 선택입력을 감시한다(스텝 S209).
그리고, 지연 소자의 추가 삽입 위치의 선택입력을 접수하는 않고, 프리셋의 중지 조작이 행해졌는가 아닌가 판별해(스텝 S210), 프리셋의 중지 조작이 행해졌다고 판별했을 때에는, 이 프리셋 처리 루틴을 종료하고, 프리셋의 중지 조작이 행해지지 않았다고 판별했을 때에는, 스텝 S209로 되돌아가, 지연 소자의 추가 삽입 위치의 선택입력을 기다린다.
스텝 S209에서, 지연 소자의 추가 삽입 위치의 선택입력을 접수했을 때에는, 프리셋 기능부(10)은, 사용자에 의해 설정된 지연 소자의 추가 삽입 위치의 설정 정보를 유지한다(스텝 S211). 그리고, 이 프리셋 처리 루틴을 종료한다.
다음에, 도20의 동적인 변경 처리에 있어서의 스텝 S193, S196 등에서의 경로 탐색의 재실행에, 제2실시예를 적용했을 경우의 흐름도를, 도24에 나타낸다.
즉, 경로 탐색 기능부(5)은, 우선, 초기 경로 탐색 알고리즘을 행한다(스텝 S221). 그리고, 초기 경로 탐색 알고리즘을 종료하였는가 아닌가 판별해(스텝 S222), 초기 경로 탐색 알고리즘을 정상적으로 종료했다고 판별했을 때에는, 루프 서치 알고리즘을 실행하도록 한다(스텝 S223). 그리고, 이 경로 탐색 알고리즘을 종료한다.
또한 스텝 S222에서, 초기 경로 탐색 알고리즘이 종료하지 않는 것으로 판별했을 때에는, 전술한 바와 같이, 지연이 없는 피드백 루프가 생성되어 버린 것에 의한 에러가 발생하였는가 아닌가를 판별한다(스텝 S224).
이 스텝 S224에서, 지연아 없는 피드백 루프가 생성되지 않고 있다고 판별했을 때에는, 스텝 S221로 되돌아가, 초기 경로 탐색 알고리즘을 계속한다. 또한 스텝 S224에서, 지연이 없는 피드백 루프가 생성되어 버렸다고 판별했을 때에는, 지 연 소자의 자동 추가 삽입이 프리셋 설정되어 있는가 아닌가 판별한다(스텝 S225).
이 스텝 S225에서, 지연 소자의 자동 추가 삽입이 프리셋 설정되어서 잇지 않다고 판별했을 때에는, 플러그인의 추가 처리(동적 변경)을 캔슬하고, 사용자에게 에러 경고 메시지를 송출한다(스텝 S226). 그리고, 이 경로 탐색의 처리 루틴을 종료한다.
또한 스텝 S225에서, 지연 소자의 자동 추가 삽입이 프리셋 설정되어 있다고 판별했을 때에는, 프리셋 기능부(10)에 유지되어 있는 프리셋 설정 정보를 참조하여, 자동 추가 삽입하는 지연 소자는, 추가된 지연이 없는 플러그인(NLTP)의 전방에 삽입할 것인가 아닌가를 판별한다(스텝 S227).
이 스텝 S227에서, 삽입 위치가 전방이라고 판별했을 때에는, 사용자가 피드백 루프를 생성하도록 추가한 플러그인의 전방에, 프리셋된 지연량의 지연 소자를 삽입한다(스텝 S228). 또한 이 스텝 S227에서, 삽입 위치가 전방이 아니라 후방이라고 판별했을 때에는, 사용자가 피드백 루프를 생성하도록 추가한 플러그인의 후방에, 프리셋된 지연량의 지연 소자를 삽입한다(스텝 S229).
스텝 S228 혹은 스텝 S229 후에는, 스텝 S221로 되돌아가, 다시, 초기 경로 탐색 알고리즘의 실행을 행한다. 이 때, 지연 소자가 피드백 루프에 자동적으로 추가 삽입됨으로써, 초기 경로 탐색 알고리즘은 정상적으로 종료하게 된다.
이 때의 지연 소자의 추가 삽입의 구체에 관하여 설명한다. 예를 들면 도25 또는 도26에 나타낸 것과 같이 종속접속된 4개의 플러그인(901~904)으로 이루어진 회로에 있어서, 사용자가, 동적 변경의 조작에 의해, 플러그인 903과 플러그인 902 의 사이에, 새로운 플러그인을 접속해서 피드백 루프를 생성한 경우를 생각한다.
이 경우에, 피드백 루프중에 추가 삽입한 플러그인 905가, 비지연 소자인 NLTP의 플러그인일 때에는, 전술한 바와 같이, 지연 소자를 자동적으로 추가 삽입하도록 프리셋 설정이 행해지고 있는 동시에, 해당 지연 소자의 삽입 위치가 전방이면, 도25에 나타낸 것과 같이 플러그인 905의 출력측에, 지연 소자의 플러그인 906이 삽입된다. 이 지연 소자의 플러그인 906의 지연량은, 프리셋된 지연량인 것은 상기한 바와 같다.
또한 지연 소자의 삽입 위치가 후방이면, 도26에 나타낸 것과 같이 플러그인 905의 입력측에, 지연 소자의 플러그인 907이 삽입된다.
또, 플러그인이 추가 접속되지 않고 피드백 루프가 형성되었을 경우에도, 마찬가지로 자동적으로 지연 소자의 플러그인 908이, 예를 들면 도27에 나타낸 것과 같이 삽입된다.
이 제2실시예에 의하면, 음성신호 처리를 하면서 신속한 회로의 변경을 하고 싶을 경우에, 잘못하여 지연이 없는 피드백 루프를 작성한 경우에도 자동적으로 지연 소자가 삽입됨으로써, 초기의 목적을 달성할 수 있다.
예를 들면 라이브 연주 등에, 본 실시예의 신호 처리 툴을 사용할 경우, 소리를 내면서 곡에 맞춰서 신속한 회로의 변경을 행하고 싶을 경우가 있다. 그러한 상황에 있어서, 사용자가 지연 소자를 포함하지 않는 피드백 회로를 가끔 작성해 버린다고 하면, 회로변경을 예정의 타이밍으로 실시할 수 없어, 라이브 연주에 지장을 주는 일이 있지만, 상기한 제2실시예에 의하면, 그러한 문제가 회피된다.
특히, 피드백 루프 회로는, 사운드 이펙터나 사운드 필터 등에서 빈번에 사용되는 회로이며, 라이브 연주시 등에서는 어떻게 하든지 추가 조작 1회로 폐루프 회로를 작성하고 싶을 경우가 있다. 예를 들면 곡의 소절의 단락에 동기해서 한번에 회로를 변경하고 싶을 경우가 있다. 이러한 경우에 있어서도, 전술한 제2실시예에 의하면, 곡에 맞춰서 신속한 회로의 변경을 할 수 있는 것이다.
또, 상기한 제2실시예는, 동적인 회로변경의 경우에 적용한 것이지만, 제1실시예와 마찬가지로, 처음부터 회로 구성을 실행할 때에도 마찬가지로 적용할 수 있는 것은 물론이다.
이상 설명한 제1및 제2실시예에 의하면, 이하와 같은 효과도 얻을 수 있다.
즉, 상기한 실시예에 의하면, 소프트웨어 디지털 신호 처리에 있어서, 신호 처리회로를 다단으로 결선해도 처리 지연이 증가하지 않는 회로를 작성할 수 있다. 또한 피드백 구조를 포함하는 임의의 디지털 신호 처리회로를 작성할 수 있다. 또한 디지털 신호 처리회로의 회로 구성을 동적으로 변경할 수 있다. 이 경우에, 동적으로 갱신가능한 회로요소는,
?플러그인의 추가?삭제
?플러그인 사이의 결선 상태
?플러그인의 입출력 포트의 추가?삭제
?신호 처리시의 패킷 사이즈?샘플링 주파수 등, 신호 처리에 관련되는 파라미터 등이다.
또한 본 실시예의 신호 처리장치의 미들웨어를 짜 넣음으로써, 회로 구성을 동적으로 변경가능한 제품을 만들 수 있다.
또한 작성한 신호 처리회로를 파일에 보존함으로써, 나중에, 신호 처리회로를 복원할 수 있다. 또한, 그 파일을 주고받음으로써, 회로의 교환이나 재이용을 용이하게 행할 수 있다.
또한 신호 처리회로 안에 피드백 루프를 포함하는 회로 구성을 포함하고 있어도, 신호 처리 함수의 호출 회수를 필요 최소한으로 억제할 수 있다. 그 결과, 리얼 타임 신호 처리 실행에 필요한 CPU 부하를 경감할 수 있다.
또한 네트워크를 사용하여, 리얼 타임으로 분산 처리를 행할 수 있다. 네트워크 상에 존재하는 복수의 회로를 리얼 타임으로 동기해서 동작시킬 수 있다.
또, 이상의 실시예에서는 플러그인이나 결선을 추가했을 때에 지연을 포함하지 않는 피드백 루프가 작성되었을 경우에 관하여 설명했지만, 현재의 회로상태에 대하여, 어떠한 추가?삭제?변경 조작을 행하여, 결과적으로 지연 소자를 포함하지 않는 피드백 루프 회로가 형성되었을 경우에도, 본 발명은 마찬가지로 적용가능하다.
또, 이상의 실시예는, 음성신호 처리에 본 발명을 적용한 경우이지만, 본 발명이 처리 대상으로 하는 신호는, 음성신호에 한정되는 것은 아니라는 것은 말할 필요도 없다.
청구항 1의 발명에 의하면, 신호처리 소프트웨어 모듈로 이루어진 구성 회로 중에, 지연 소자가 포함되지 않는 피드백 루프가 생성된 것이 검출되었을 경우에, 사용자에 대하여 경고를 송출하도록 하므로, 사용자는, 「피드백 루프에 지연 소자를 포함할 필요가 있다」고 하는 지식을 가지지 않아도, 정확한 조치를 강구할 수 있게 된다.
또한 청구항 3의 발명에 의하면, 「피드백 루프에 지연 소자를 포함할 필요가 있다」고 하는 지식을 가지지 않는 사용자라도, 피드백 루프를 구비하는 회로를 용이하게 구축할 수 있게 된다고 하는 효과가 있다.

Claims (14)

  1. 복수의 신호 처리 단위 요소로 이루어진 신호 처리를 소프트웨어 처리에 의해 행하는 신호 처리장치로서,
    상기 신호 처리 단위 요소를 소프트웨어 처리에 의해 각각 행하는 신호 처리 소프트웨어 모듈의 복수개와,
    상기 신호 처리 소프트웨어 모듈의 생성 또는 삭제 지시, 및 상기 신호 처리 소프트웨어 모듈의 입출력의 접속 지시를 접수하는 지시 입력 접수 수단과,
    상기 지시 입력 접수 수단에서 접수된 지시에 따라 복수개의 상기 신호 처리 소프트웨어 모듈의 입출력의 가상적인 접속 상태를 설정하는 가상 접속 수단과,
    상기 설정된 상기 복수개의 신호 처리 소프트웨어 모듈의 입출력의 가상적인 접속 상태를 기억해서 관리하는 회로 구성 정보 기억 관리수단과,
    상기 회로 구성 정보 기억 관리 수단에 기억되어 있는 상기 복수개의 신호 처리 소프트웨어 모듈의 각각의 신호 처리순서를 결정하기 위해서 신호 처리경로를 탐색하는 경로 탐색 수단과,
    상기 경로 탐색 수단에서의 경로 탐색에 의거하여 결정된 신호 처리순서로, 상기 신호 처리 소프트웨어 모듈의 각각을 순차적으로 실행시켜서 상기 신호 처리를 실행하는 신호 처리 실행 수단을 구비하고,
    상기 경로 탐색 수단은, 상기 복수개의 신호 처리 소프트웨어 모듈로 이루어진 구성 회로중에, 지연 소자가 포함되지 않는 피드백 루프가 생성되었는지 체크하는 것 을 특징으로 하는 신호 처리장치.
  2. 제 1항에 있어서,
    상기 경로 탐색 수단이, 상기 복수개의 신호 처리 소프트웨어 모듈로 이루어진 구성 회로중에, 지연 소자가 포함되지 않는 피드백 루프가 생성되었다고 판단할 때, 사용자에 대하여 경고를 송출하도록 하는 경고 수단을 더 구비하는 것을 특징으로 하는 신호 처리장치.
  3. 제 1항에 있어서,
    상기 경로 탐색 수단은, 상기 복수개의 신호 처리 소프트웨어 모듈로 이루어진 구성 회로중에, 지연 소자가 포함되지 않는 피드백 루프가 생성되었다고 판단할 때, 상기 피드백 루프에 지연 소자를 추가 삽입하는 것을 특징으로 하는 신호 처리장치.
  4. 제 3항에 있어서,
    상기 복수개의 신호 처리 소프트웨어 모듈로 이루어진 구성 회로중에, 지연 소자가 포함되지 않는 피드백 루프가 생성되었다고 판단할 때, 상기 피드백 루프에 지연 소자를 자동적으로 추가 삽입할 것인가 아닌가의 프리셋 설정 입력을 접수하는 프리셋 수단을 더 구비하고,
    상기 경로 탐색 수단은, 상기 복수개의 신호 처리 소프트웨어 모듈로 이루어진 구성 회로중에, 지연 소자가 포함되지 않는 피드백 루프가 생성되었다고 판단할 때, 상기 프리셋 수단에 의한 상기 프리셋 설정 입력을 참조하여, 상기 피드백 루프에 지연 소자를 자동적으로 추가 삽입한다고 설정되어 있을 때에, 상기 피드백 루프에 지연 소자를 추가 삽입하는 것을 특징으로 하는 신호 처리장치.
  5. 제 3항에 있어서,
    상기 추가 삽입되는 상기 지연 소자의 지연량으로서, 미리 프리셋된 값을 유지하는 유지 수단을 구비하고,
    상기 지연 소자가 포함되지 않는 피드백 루프가 생성되었다고 판단할 때, 상기 피드백 루프중에 상기 유지 수단에 프리셋된 지연량의 지연 소자를 추가 삽입하는 것을 특징으로 하는 신호 처리장치.
  6. 제 3항에 있어서,
    상기 추가 삽입되는 상기 지연 소자의 삽입 위치로서, 미리 프리셋된 위치의 정보를 유지하는 유지 수단을 구비하고,
    상기 지연 소자가 포함되지 않는 피드백 루프가 생성되었다고 판단할 때, 상기 피드백 루프중의 상기 유지 수단에 프리셋된 위치에 지연 소자를 추가 삽입하는 것을 특징으로 하는 신호 처리장치.
  7. 복수의 신호 처리 단위 요소로 이루어진 신호 처리를 소프트웨어 처리에 의해 행하는 신호 처리방법으로서,
    상기 신호 처리 소프트웨어 모듈의 생성 또는 삭제 지시, 및 상기 신호 처리 소프트웨어 모듈의 입출력의 접속 지시를 접수하는 접수 스텝과,
    상기 접수 스텝에서 접수된 상기 지시에 따라 복수개의 상기 신호 처리 소프트웨어 모듈의 입출력의 가상적인 접속 상태를 설정하는 가상 접속 스텝과,
    상기 가상적으로 접속된 복수개의 신호 처리 소프트웨어 모듈의 각각의 신호 처리순서를 결정하기 위해서 신호 처리경로를 탐색하는 경로 탐색 스텝과,
    상기 경로 탐색 스텝에서 결정된 신호 처리순서로, 상기 신호 처리 소프트웨어 모듈의 각각을 순차적으로 실행시켜서 상기 신호 처리를 실행하는 신호 처리 스텝을 구비하고,
    상기 경로 탐색 스텝에 있어서, 상기 복수개의 신호 처리 소프트웨어 모듈로 이루어진 구성 회로중에, 지연 소자가 포함되지 않는 피드백 루프가 생성되었는지 체크하는 것을 특징으로 하는 신호 처리방법.
  8. 제 7항에 있어서,
    상기 경로 탐색 스텝에 있어서, 상기 복수개의 신호 처리 소프트웨어 모듈로 이루어진 구성 회로중에, 지연 소자가 포함되지 않는 피드백 루프가 생성되었다고 판단될 때, 사용자에 대하여 경고를 송출하도록 하는 경고 스텝을 더 구비하는 것을 특징으로 하는 신호 처리방법.
  9. 제 7항에 있어서,
    상기 경로 탐색 스텝에 있어서, 상기 복수개의 신호 처리 소프트웨어 모듈로 이루어진 구성 회로중에, 지연 소자가 포함되지 않는 피드백 루프가 생성되었다고 판단될 때, 상기 피드백 루프에 지연 소자를 추가 삽입하는 것을 특징으로 하는 신호 처리방법.
  10. 제 9항에 있어서,
    상기 복수개의 신호 처리 소프트웨어 모듈로 이루어진 구성 회로중에, 지연 소자가 포함되지 않는 피드백 루프가 생성되었다고 판단할 때, 상기 피드백 루프에 지연 소자를 자동적으로 추가 삽입할 것인가 아닌가의 프리셋 설정 입력을 접수하는 프리셋 설정 스텝을 더 구비하고,
    상기 경로 탐색 스텝에 있어서, 상기 복수개의 신호 처리 소프트웨어 모듈로 이루어진 구성 회로중에, 지연 소자가 포함되지 않는 피드백 루프가 생성되었다고 판단할 때, 상기 프리셋 설정 스텝에서 접수된 프리셋 설정 입력을 참조하여, 상기 피드백 루프에 지연 소자를 자동적으로 추가 삽입한다고 설정되어 있을 때에, 상기 피드백 루프에 지연 소자를 추가 삽입하는 것을 특징으로 하는 신호 처리방법.
  11. 복수의 신호 처리 단위 요소로 이루어진 신호 처리를 컴퓨터가 소프트웨어 처리에 의해 실행하는 프로그램을 기록한 컴퓨터 판독가능한 기록 매체로서,
    상기 프로그램은,
    상기 신호 처리 소프트웨어 모듈의 생성 또는 삭제 지시, 및 상기 신호 처리 소프트웨어 모듈의 입출력의 접속 지시를 접수하는 접수 스텝과,
    상기 접수 스텝에서 접수된 지시에 따라 복수개의 상기 신호 처리 소프트웨어 모듈의 입출력의 가상적인 접속 상태를 설정하는 가상 접속 스텝과,
    상기 가상적으로 접속된 복수개의 신호 처리 소프트웨어 모듈의 각각의 신호 처리순서를 결정하기 위해서 신호 처리경로를 탐색하는 경로 탐색 스텝과,
    상기 경로 탐색 스텝에서 결정된 신호 처리순서로, 상기 신호 처리 소프트웨어 모듈의 각각을 순차적으로 실행시켜서 상기 신호 처리를 실행하는 신호 처리 실행 스텝을 구비하고,
    상기 경로 탐색 스텝에 있어서, 상기 복수개의 신호 처리 소프트웨어 모듈로 이루 어진 구성 회로중에, 지연 소자가 포함되지 않는 피드백 루프가 생성되었는지 체크 하는 것을 특징으로 하는 기록 매체.
  12. 제 11항에 있어서,
    상기 프로그램은,
    상기 경로 탐색 스텝에 있어서, 상기 복수개의 신호 처리 소프트웨어 모듈로 이루어진 구성 회로중에, 지연 소자가 포함되지 않는 피드백 루프가 생성되었다고 판단할 때, 사용자에 대하여 경고를 송출하도록 하는 경고 스텝을 더 구비하는 것을 특징으로 하는 기록 매체.
  13. 제 11항에 있어서,
    상기 경로 탐색 스텝에 있어서, 상기 복수개의 신호 처리 소프트웨어 모듈로 이루어진 구성 회로중에, 지연 소자가 포함되지 않는 피드백 루프가 생성되었다고 판단될 때, 상기 피드백 루프에 지연 소자를 추가 삽입하는 것을 특징으로 하는 기록 매체.
  14. 제 13항에 있어서,
    상기 복수개의 신호 처리 소프트웨어 모듈로 이루어진 구성 회로중에, 지연 소자가 포함되지 않는 피드백 루프가 생성되었다고 판단될 때, 상기 피드백 루프에 지연 소자를 자동적으로 추가 삽입할 것인가 아닌가의 프리셋 설정 입력을 접수하는 프리셋 설정 스텝을 더 구비하고,
    상기 경로 탐색 스텝에 있어서, 상기 복수개의 신호 처리 소프트웨어 모듈로 이루어진 구성 회로중에, 지연 소자가 포함되지 않는 피드백 루프가 생성되었다고 판단될 때, 상기 프리셋 설정 스텝에서 접수된 프리셋 설정 입력을 참조하여, 상기 피드백 루프에 지연 소자를 자동적으로 추가 삽입한다고 설정되어 있을 때에, 상기 피드백 루프에 지연 소자를 추가 삽입하는 것을 특징으로 하는 기록 매체.
KR1020060002602A 2005-01-20 2006-01-10 신호처리장치, 신호처리방법 및 기록 매체 KR101182262B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2005012256A JP4348546B2 (ja) 2005-01-20 2005-01-20 信号処理装置、信号処理プログラムおよび記録媒体
JPJP-P-2005-00012256 2005-01-20

Publications (2)

Publication Number Publication Date
KR20060084791A KR20060084791A (ko) 2006-07-25
KR101182262B1 true KR101182262B1 (ko) 2012-09-17

Family

ID=36816881

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060002602A KR101182262B1 (ko) 2005-01-20 2006-01-10 신호처리장치, 신호처리방법 및 기록 매체

Country Status (4)

Country Link
US (1) US7954113B2 (ko)
JP (1) JP4348546B2 (ko)
KR (1) KR101182262B1 (ko)
CN (1) CN100385393C (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4622611B2 (ja) * 2005-03-24 2011-02-02 ソニー株式会社 信号処理装置
US8132148B2 (en) * 2005-04-29 2012-03-06 Microsoft Corporation XML application framework
US8799857B2 (en) 2005-04-29 2014-08-05 Microsoft Corporation XML application framework
US8640147B2 (en) * 2010-11-11 2014-01-28 International Business Machines Corporation Method and system for virtualizing connection end-points in distributed, component based applications at runtime
US10397064B2 (en) * 2016-04-20 2019-08-27 Servicenow, Inc. System and method for custom graph generation
AT518909A2 (de) 2016-07-29 2018-02-15 Avl List Gmbh Signalflussbasiertes Computerprogramm mit Direct-Feedthrough-Schleifen
US11327802B2 (en) * 2019-07-31 2022-05-10 Microsoft Technology Licensing, Llc System and method for exporting logical object metadata

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005352618A (ja) 2004-06-09 2005-12-22 Sony Corp 信号処理装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5142625A (en) * 1985-06-12 1992-08-25 Minolta Camera Kabushiki Kaisha One-chip microcomputer including a programmable logic array for interrupt control
US4796179A (en) * 1986-08-20 1989-01-03 Integrated Systems, Inc. Multirate real time control system code generator
US5684980A (en) * 1992-07-29 1997-11-04 Virtual Computer Corporation FPGA virtual computer for executing a sequence of program instructions by successively reconfiguring a group of FPGA in response to those instructions
AU5989194A (en) * 1993-09-13 1995-04-03 Taligent, Inc. Object-oriented audio record/playback system
GB9607528D0 (en) * 1996-04-11 1996-06-12 Int Computers Ltd Integrated circuit processor
US6937969B1 (en) * 1999-06-10 2005-08-30 Interuniversitair Microelektronica Centrum (Imec) Method for determining signals in mixed signal systems
JP4318013B2 (ja) 2000-08-31 2009-08-19 ソニー株式会社 コンテンツ編集装置、コンテンツ編集方法及びプログラム格納媒体並びにコンテンツ編集システム
JP2002291011A (ja) * 2001-03-23 2002-10-04 Toshiba Corp 無線装置及び無線装置のハンドオーバ制御方法
US20040045007A1 (en) * 2002-08-30 2004-03-04 Bae Systems Information Electronic Systems Integration, Inc. Object oriented component and framework architecture for signal processing
US20040045009A1 (en) * 2002-08-29 2004-03-04 Bae Systems Information Electronic Systems Integration, Inc. Observation tool for signal processing components
JP2004222040A (ja) 2003-01-16 2004-08-05 Yamaha Corp ディジタルフィルタ
US7587710B2 (en) 2003-02-14 2009-09-08 Siemens Aktiengesellschaft Method for determining the processing sequence of function blocks of an automated system and corresponding automated system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005352618A (ja) 2004-06-09 2005-12-22 Sony Corp 信号処理装置

Also Published As

Publication number Publication date
KR20060084791A (ko) 2006-07-25
JP2006201988A (ja) 2006-08-03
US20060184597A1 (en) 2006-08-17
JP4348546B2 (ja) 2009-10-21
CN100385393C (zh) 2008-04-30
US7954113B2 (en) 2011-05-31
CN1808380A (zh) 2006-07-26

Similar Documents

Publication Publication Date Title
KR101126255B1 (ko) 신호처리장치
KR101260295B1 (ko) 신호처리장치
KR101182262B1 (ko) 신호처리장치, 신호처리방법 및 기록 매체
JP6626823B2 (ja) サブグラフから構成されるデータフローグラフ用のインターフェースの管理
JP5659397B2 (ja) ルールに基づくコンテンツフィルタリングシステムおよび方法
US11106437B2 (en) Lookup table optimization for programming languages that target synchronous digital circuits
US7337430B2 (en) Optimized look-up table calculations in block diagram software
US8701084B1 (en) Preview of auto-fix changes to software code
US20140068567A1 (en) Determining relevant events in source code analysis
US20100005203A1 (en) Method of Merging and Incremantal Construction of Minimal Finite State Machines
CN111368206A (zh) 一种业务推荐方法、装置、服务器及存储介质
US20200265123A1 (en) Automatic cover point generation based on register transfer level analysis
US8713509B2 (en) Circuit design approximation
CN114265846A (zh) 一种数据操作方法、装置、电子设备和存储介质
CN111752912B (zh) 数据处理方法及装置
US8010572B1 (en) Kstore scenario simulator processor and XML file
GB2397905A (en) Method for automatically generating and ordering test scripts
JP6802109B2 (ja) ソフトウェア仕様分析装置、及びソフトウェア仕様分析方法
JP2019144873A (ja) ブロック線図解析装置
US8174540B1 (en) Consistency checking of user-settable isolated parameters in a graphical model
JP6085481B2 (ja) プログラマブル回路、演算処理方法
CN117311673A (zh) 一种数据处理系统、方法、设备及计算机可读存储介质
CN117520413A (zh) 一种数据血缘分析方法、系统、装置及计算机设备
CN113434219A (zh) 工程项目的信息配置方法和设备
CN114860310A (zh) 数据的推荐方法、装置、计算机存储介质以及电子设备

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee