2012-11-14 2 views
1

FPGA 용 입력을 작성 중이며 dsp가 vhdl의 이중 포트 메모리 공유 dpram 컨트롤과 상호 작용해야합니다. 외부 I/O는 SPI 버스의 한 쪽에서 fpag에 연결되어 dsp와 통신하고 다른쪽에는 dsp에 연결된 카메라가 있습니다. 그래서 내 intrups는 Havinf FIFO가 리셋 될 때마다 FSM이 dsp로 interrpts를 읽고 쓰는 것과 같습니다.FPGA에서 VHDL로 인터럽트 처리

이제 내 문제는 내가 다른 사람을 한 번에 몇 가지 특정 interrupts를을 사용하거나 사용하지 않도록 할

  1. 입니다.
  2. 논리 XOR 기능으로 마스킹을 할 때 UART에서 오는 다른 인터 럽트는 타임 아웃을합니다.
  3. 이렇게하면 카메라가 신호를 수신하지만 제어 할 수 없습니다.

내가 모두 asynchron 입력을 처리하기 위해 다음 알고리즘을 사용 event2reg_array_proc에서

  1. : 버퍼 병렬 모든 입력 저장 "fifo_data_input_array", 각 입력 (플래그)는 별도의 버퍼에 투입한다.
  2. reg_array2fifo_proc2에서 : 각 버퍼를 순차적으로 읽고 fifo "fifo320x32"로 저장하십시오.
  3. 주 FSM에서 FIFO의 출력을 읽고 적절한 처리를 수행하고, 각 사이클마다 하나의 값만 읽습니다. 하나의 플래그 여야합니다. 당신도 처리 후 레지스터에 남아있는 몇 가지 플래그를 얻을 경우

, 이유가 될 수 있습니다

event2reg_array_proc에서
  1. : 및 reg_array2fifo_proc2 :, (버퍼) 하나 개의 플래그가 FIFO에 기록 된 경우 버퍼에서 지워야합니다. 나는 이것을 제어하기 위해 "fifo_cnt"를 사용한다. 시뮬레이션을 사용하여 확인할 수 있습니다.
  2. 라인 카메라는 LINE_VALID 신호와 동일한 FRAME_VALID 신호를 보내므로 라인 카메라로 많은 양의 CAM2DSP_FRAME_SYNC_FLAG를 얻을 수 있습니다.

카메라가 여전히 DSP와 통신하는 동안 특정 인터럽트를 활성화하는 알고리즘을 제안 할 수 있습니다.

답변

1

귀하의 질문에 적절한 대답을하기에 충분하지 않은 단어가 있습니다. 그러나 한 가지 점은 분명합니다. XOR은 인터럽트 마스크에 적합하지 않습니다! 인터럽트 처리기의 논리에 따라 AND 또는 OR 중 하나를 선택하는 것이 좋습니다.