DSP Builder Advanced Blockset 버전 17.1 이전의 문제로 인해 Simulink®가 BusStimulus 블록 앞에서 다른 버스 블록을 실행하는 경우 다음 오류가 나타날 수 있습니다.
- 사용되지 않는 BusSlave 블록에 대한 쓰기 활성화는 절대로 주장하지 않습니다.
- 모든 버스 블록의 다른 출력은 나중에 한 번의 클럭 주기로 발생합니다.
DSP Builder에서 버스 블록(예: RegField 블록)은 BusStimulus 블록에 따라 달라집니다. 따라서 Simulink는 다른 버스 블록 앞에서 BusStimulus 블록을 실행해야 합니다. 그러나 Simulink는 이러한 종속성에 대해 알지 못하므로 Simulink는 임의 순서로 이러한 블록을 자유롭게 실행할 수 있습니다.
설계와 관련이 없는 변경으로 인해 버스 블록의 실행 순서가 변경될 수 있습니다. 예를 들어, 추가 범위 블록을 추가했기 때문에 자동 검증을 위해 버스 지연 시간에 의존한 설계가 실패하기 시작할 수 있습니다. 추가 블록은 BusStimulus 블록 앞에 RegField 블록을 배치하여 실행 순서를 변경하여 실행 순서를 변경할 수 있습니다.
이 문제를 해결하려면 BusStimulus 블록의 우선 순위를 DSP Builder 설계가 포함된 하위 시스템 블록보다 낮은 값으로 설정합니다. 예를 들어 BusStimulus 블록 우선순위를 0으로 설정하고 DSPBA 하위 시스템 블록을 1로 설정합니다. Simulink는 일관된 버스 작동을 보장하는 하위 시스템의 모든 것 앞에서 BusStimulus 블록을 실행해야 합니다.
실행 순서를 보려면 주 메뉴 표시줄에서 표시 -> 블록 -> 정렬 실행 순서를 선택합니다.
블록의 우선 순위를 설정하려면: 블록을 마우스 오른쪽 버튼으로 클릭하고 속성: 우선 순위 필드가 일반 탭에 있습니다
참고: 우선 순위 값은 낮은 값이 먼저 실행된다는 의미의 실행 순서와 유사합니다. 그러나 우선 순위 값은 하위 시스템에 걸쳐 있지 않다는 점에서 실행 순서와 다르며, 이 이유는 해당 시스템에 포함된 버스 블록이 아닌 DSP Builder 하위 시스템에 우선 순위를 설정해야 하는 이유입니다.