Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

Merge

여러 신호를 단일 신호로 결합

  • Merge block

라이브러리:
Simulink / Signal Routing
HDL Coder / Ports & Subsystems

설명

Merge 블록은 여러 입력을 단일 출력으로 결합합니다. 어느 시간에서든 출력값은 구동 블록의 가장 최근에 계산된 출력과 동일합니다. 입력 개수 파라미터를 설정하여 입력 개수를 지정합니다.

Merge 블록을 사용하여 서로 다른 시간에 업데이트된 입력 신호들을 하나의 결합된 신호로 인터리빙할 수 있으며, 이렇게 결합된 신호에는 인터리빙된 값에 개별 ID와 시간값이 유지됩니다. 동시에 업데이트된 신호를 배열 또는 행렬 신호로 결합하려면 Concatenate 블록을 사용하십시오.

Merge 블록 사용에 대한 지침

Merge 블록을 사용할 경우 다음 지침을 따르십시오.

  • 항상 조건부 실행 서브시스템을 사용하여 Merge 블록을 구동하고, 중간에 어떠한 블록도 두지 않습니다.

  • 구동하는 조건부 실행 서브시스템 중 최대 한 개가 스텝 시간에서 실행되어야 합니다.

  • 모든 입력 신호는 동일한 샘플 시간을 가져야 합니다.

  • Merge 블록에 입력되는 신호는 분기하지 마십시오.

  • Merge 블록에 입력되는 신호는 기록하지 마십시오.

  • Merge 블록의 블록 실행 우선 순위는 지정하지 마십시오. 자세한 내용은 Specify Block Execution Order, Execution Priority and Tag 항목을 참조하십시오.

  • Merge 블록을 구동하는 모든 조건부 실행 서브시스템의 Outport 블록에서 비활성인 경우 출력유지로 설정합니다.

  • Model 블록의 출력이 MATLAB Function 블록 또는 Stateflow® 차트에서 생성된 경우 그 출력 포트를 Merge 블록의 입력 포트에 연결하지 마십시오.

  • Merge 블록은 서로 다른 작업의 신호를 루트 Outport 블록에 병합하는 것을 지원합니다.

Merge 블록의 각 입력에서 맨 위에 있는 비가상 소스는 For Iterator Subsystem 또는 While Iterator Subsystem을 포함하지 않는 조건부 실행 서브시스템이어야 합니다.

다음 다이어그램에는 두 개의 조건부 실행 서브시스템에서 신호를 병합하는 올바른 Merge 블록 사용법이 나와 있습니다.

버스 지원

Merge 블록은 버스를 지원하는 블록입니다. 입력은 다음 제한 사항에 따라 가상 또는 비가상 버스 신호일 수 있습니다.

  • 입력 개수는 1보다 커야 합니다.

  • 초기 출력은 0이거나, 0이 아닌 스칼라이거나, 유한한 숫자형 구조체여야 합니다.

  • 서로 다른 포트 너비 허용 체크박스의 선택을 해제해야 합니다.

  • 모든 입력은 버스여야 하고 동등해야 합니다(동일한 계층 구조에 모든 요소의 이름과 특성이 동일해야 함).

Merge 블록에 대한 비가상 버스 입력의 모든 신호는 동일한 샘플 시간을 가져야 합니다. Rate Transition 블록을 사용하여 개별 신호의 샘플 시간 또는 버스의 모든 신호의 샘플 시간을 변경할 수 있습니다.

S-Function 출력 병합하기

Merge 블록은 S-Function 블록의 출력을 저장하는 데 사용되는 메모리가 재사용 가능한 경우에만 S-Function 블록의 신호를 병합할 수 있습니다. S-Function 블록의 재사용 불가 포트를 Merge 블록에 연결하는 모델을 업데이트하거나 시뮬레이션하려고 하면 Simulink®에 오류 메시지가 표시됩니다. ssSetOutputPortOptimOpts 항목을 참조하십시오.

멀티태스킹된 루트 출력

루트 Outport 블록에 연결된 Merge 블록을 사용하면 서로 다른 작업의 신호를 루트 Outport 블록에 동시에 쓸 수 있기 때문에 그러한 신호를 병합할 수 있습니다. 소스의 유니언 샘플 시간이 Merge 블록에 할당됩니다.

Merge 블록의 모든 소스 중 동일한 작업에 있는 소스는 조건부 실행 서브시스템 내에 있어야 하고, 이 조건부 실행 서브시스템은 동일한 시간 스텝에서 동시에 출력되어서는 안 됩니다.

예제

모두 확장

이 예제에서는 두 Atomic Subsystem으로부터의 입력을 갖는 Merge 블록을 보여줍니다.

각 Atomic Subsystem 블록에는 Enabled Subsystem이 포함되어 있습니다. 이는 Merge 블록에 대한 입력을 조건부 실행 서브시스템에서 가져와야 한다는 요구 사항을 충족합니다.

이 예제에서는 너비가 서로 다른 여러 입력 포트를 갖는 Merge 블록을 사용하는 방법을 보여줍니다. Allow unequal port widths를 선택하면 블록은 요소의 개수가 서로 다른 스칼라 입력과 벡터 입력을 받습니다. 출력 신호의 시작을 기준으로 각 입력 신호의 오프셋을 지정할 수 있습니다. 출력 신호의 너비는 다음과 같습니다.

$max(w1+o1, w2+o2, ... wn+on)$

여기서 $wn$은 입력 신호의 너비이고, $on$은 입력 신호의 오프셋입니다.

Merge 블록의 출력 너비는 다음과 같습니다.

$max(2+0,2+1)=3$

이 예제에서 $v1$의 오프셋은 0이고 $v2$의 오프셋은 1입니다. Merge 블록은 $v1$의 요소를 $v3$의 첫 번째 두 개 요소에 매핑하고 $v2$의 요소를 $v3$의 마지막 두 개 요소에 매핑합니다. 스코프 출력에 표시된 것처럼 $v3$의 두 번째 요소만 효과적으로 병합됩니다.

단순 방식 초기화 모드를 사용하는 경우 Allow unequal port widths 체크박스의 선택을 해제해야 합니다. 모든 신호의 입력 포트 오프셋은 0이어야 합니다.

확장 예제

제한 사항

  • Merge 블록에 연결되는 모든 신호는 기능적으로 동일한 신호입니다. 따라서 이러한 신호에는 해당 신호에 최대 한 개의 signal 객체가 연결될 수 있다는 제한 사항이 적용됩니다. 자세한 내용은 Simulink.Signal 항목을 참조하십시오.

  • Merge 블록에 대한 입력이 단일 개시자에서 비롯되는 경우에는 실시간 진단이 실행되지 않습니다. 예를 들어 Merge 블록에 연결된 Function-Call Subsystem을 실행하는 Stateflow 차트가 단일 개시자에 해당할 수 있습니다.

  • 병합 중인 조건부 실행 서브시스템이 비활성화된 경우 그 서브시스템의 아웃포트를 재설정하도록 설정하지 마십시오. 그럼으로써 여러 개의 서브시스템이 동시에 블록을 업데이트할 수 있습니다. 특히 비활성화된 서브시스템은 출력을 재설정하여 Merge 블록을 업데이트하는 반면, 활성화된 서브시스템은 출력을 계산하는 방식으로 블록을 업데이트합니다.

    이 동작을 방지하려면, 병합 중인 각 조건부 실행 서브시스템에 대해 Outport 블록 파라미터 비활성인 경우 출력유지로 설정하십시오.

  • 다음 다이어그램에 나와 있는 것처럼, Merge 블록은 요소가 재정렬되었거나 부분적으로 선택된 입력 신호를 허용하지 않습니다.

    Simulink block diagram including 2 enabled subsystems, each of whose outputs is connected to a Selector block. The outputs of both Selector blocks are connected to a Merge block. One Selector block reorders its input signal before passing it to the Merge block, and the other Selector block selects a subset of its input signal before passing it to the Merge block.

  • 조건부 실행 서브시스템 외부에서 결합된 입력 신호를 블록에 연결하지 마십시오.

버스로 구성된 배열을 Merge 블록에 대한 입력 신호로 사용할 수 있습니다. 단, 다음과 같은 제한 사항이 적용됩니다.

  • 서로 다른 포트 너비 허용 — 이 파라미터의 선택을 해제합니다.

  • 초기 조건 — 다음을 사용하여 이 파라미터를 지정할 수 있습니다.

    • 0. 이 경우, 버스로 구성된 배열의 각 개별 신호는 초기값 0을 사용합니다.

    • 버스로 구성된 배열의 각 개별 신호에 대한 초기 조건을 지정하는 구조체 배열.

    • 버스 유형이 정의하는 각 요소에 대한 초기 조건을 지정하는 스칼라 구조체. 배열의 각 버스에 대해 동일한 초기 조건을 지정하려면 이 기법을 사용하십시오.

포트

입력

모두 확장

다른 입력 신호와 병합되는 첫 번째 입력 신호입니다.

데이터형: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image

다른 입력 신호와 병합되는 n번째 입력 신호입니다.

데이터형: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image

출력

모두 확장

입력 신호에서 병합된 출력 신호입니다.

데이터형: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image

파라미터

모두 확장

병합할 입력 신호의 개수를 지정합니다. 블록은 각 입력 신호의 포트를 생성합니다.

프로그래밍 방식의 사용법

블록 파라미터: Inputs
유형: 문자형 벡터
값: 정수
디폴트 값: '2'

출력 신호의 초기값을 지정합니다. 초기 출력값을 지정하지 않으면 초기 출력은 초기화 모드와 구동 블록에 따라 결정됩니다.

Simplified Initialization Mode에서는 지정되지 않은 초기 출력 값(빈 행렬 [])에 대해 블록이 출력 데이터형의 디폴트 초기값을 사용합니다. 디폴트 초기값에 대한 자세한 내용은 Initialize Signal Values 항목을 참조하십시오. Classic Initialization Mode에서는 지정되지 않은 초기 출력 값(빈 행렬 [])에 대해 블록의 초기 출력이 구동 블록에 대한 가장 최근에 평가된 초기 출력으로 지정됩니다. 이러한 소스의 초기화 순서는 달라질 수 있기 때문에 모델에 대한 시뮬레이션과 코드 생성에서 초기화가 일치하지 않을 수 있습니다.

프로그래밍 방식의 사용법

블록 파라미터: InitialOutput
유형: 문자형 벡터
값: 스칼라 | 벡터
디폴트 값: '[ ]'

블록이 요소 개수가 서로 다른 입력이나 요소 개수가 출력과 다른 입력을 받도록 허용하려면 이 파라미터를 선택합니다. 이 블록에서는 출력 신호의 시작을 기준으로 각 입력 신호의 오프셋을 지정할 수 있습니다. 출력 신호의 너비는 다음과 같습니다.

max(w1+o1, w2+o2, ... wn+on)

여기서 w1, ... wn은 입력 신호의 너비이고, o1, ... on은 입력 신호의 오프셋입니다.

이 파라미터의 선택을 해제하면 Merge 블록은 동일한 차원의 입력만 받고, 입력과 동일한 차원의 신호를 출력합니다.

참고

모델에서 고전 방식 초기화 모드를 사용하지 않는 경우 이 파라미터를 선택하지 마십시오.

프로그래밍 방식의 사용법

블록 파라미터: AllowUnequalInputPortWidths
유형: 문자형 벡터
값: 'off' | 'on'
디폴트 값: 'off'

출력 신호의 시작을 기준으로 각 입력 신호의 오프셋을 지정하는 벡터를 입력합니다.

종속성

이 파라미터를 활성화하려면 서로 다른 포트 너비 허용을 선택하십시오.

프로그래밍 방식의 사용법

블록 파라미터: InputPortOffsets
유형: 문자형 벡터
값: 스칼라 | 벡터
디폴트 값: '[ ]'

블록 특성

데이터형

Boolean | bus | double | enumerated | fixed point | half | image | integer | single | string

직접 피드스루

다차원 신호

가변 크기 신호

아니요

영점교차 검출

아니요

확장 기능

고정소수점 변환
Fixed-Point Designer™를 사용하여 고정소수점 시스템을 설계하고 시뮬레이션할 수 있습니다.

버전 내역

R2006a 이전에 개발됨