2013-01-31 2 views
1

내가 원하는 것은 한 모듈에서 다른 모듈로 이벤트를 보내는 것과 같습니다 (버튼을 누르는 것 같은 느낌). 하지만 내가 검색 한 것처럼 그것은 다른 방법으로 수행되어야하는 것 같습니다. 왜냐하면 av 이벤트 트리거/통지를 보내는 표준 방법을 찾지 못했기 때문입니다.SystemC의 모듈에 이벤트 트리거 보내기

간단한 모델은 2 개의 mudules, 1 Generator 및 1 Controller로 구성됩니다. Generator가 컨트롤러의 내부 부울을 true로 설정할 수있게하려고합니다. (센서에 등록이 있음을 나타냅니다.) 컨트롤러에는 지난 번에 등록이 있었을 때 작동하는 스레드가 있으며 bool을 false로 재설정합니다 (5 초 대기 시간 동안 더 많은 센서 등록을 무시하고 폐기 함).

if(sensor_activity) 
{ 
    doStuff(); 
    wait(5, SC_SEC); 
    sensor_activity = 0; 
} 

신호를 생성기에서 컨트롤러로 어떻게 보내야합니까?

+0

하나의 해결책은 발생기가 트리거를 나타내는 데 1 밀리 초라고합시다. 그러나 느껴진다. – Moberg

+0

한 모듈에서 포트를 빼내 다른 포트에 연결하면 ... – Ifor

+0

내가 1 백분의 1을 보내면 처음 것만 감지 할 것이다. 내가 그 사람들과 어떻게 함께해야한다는 뜻이야? 어떤 유형/포트/채널입니까? – Moberg

답변

0

버퍼를 사용하십시오. 이미 가지고있는 값을 쓰더라도 트리거됩니다.

0

이렇게 많은 방법이 있습니다.

  1. Systemc는 기본적으로 C++입니다. 따라서 생성자는 컨트롤러의 공개 함수를 호출하여 내부 이벤트를 알리고 필요한 스레드를 트리거합니다.
  2. 컨트롤러가 내부 이벤트를 알리는 포트에 민감한 프로세스를 만들어 필요한 스레드를 트리거합니다. 생성기에서 포트에 씁니다.
  3. 전역 sc_event 변수를 선언하십시오. 이제 생성기에서이를 알리고 컨트롤러의 스레드를 트리거하는 데이를 사용하십시오.
+0

1 : 그 생각을하지 않았거나 옵션 일 수 있습니다. 2 : 쓰기가 발생했는지 어떻게 알 수 있습니까? 3 : 글로벌 이벤트가 적합하지 않습니다. – Moberg

+0

# 2의 경우, 내가 말한 것처럼, 컨트롤러에서 프로세스를 포트에 민감하게 만듭니다. 생성기에서 포트에 쓰여진 값을 토글하면 자동으로 프로세스가 트리거됩니다. – zehawk

+0

그래서 토글을 보내 발신자에게 로컬 값을 유지해야합니까? – Moberg