Обработка прерываний с помощью fpga в VHDL

Я пишу интерфейсы для fpga и dsp, которые должны взаимодействовать с двухпортовой памятью, разделяемой элементом управления dpram в vhdl. У меня есть внешние входы-выходы, поступающие от шины SPI на одной стороне к fpag для связи с dsp, а с другой стороны есть камера для dsp. Так что мои вторжения похожи на Havinf, когда FIFO сбрасывается после каждого чтения и записи прерываний с помощью dsp.

Теперь моя проблема

  1. Я хочу включать некоторые прерывания за раз и отключать другие.
  2. При выполнении маскировки с помощью логической функции XOR другие прерывания, поступающие от UART, имеют таймаут.
  3. Когда это сделано, камера получает сигнал, но не может управляться.

Я использую следующий алгоритм для обработки всех асинхронных входов:

  1. В event2reg_array_proc: сохранить все входные данные в параллельные буферы «fifo_data_input_array», каждый вход (флаг) должен быть помещен в отдельный буфер.
  2. В reg_array2fifo_proc2: последовательно считывать каждый буфер и сохранять их в формате FIFO «fifo320x32».
  3. В основном автомате считывает вывод из FIFO и выполняет соответствующую обработку, каждый цикл считывает только одно значение, это должен быть один флаг.

Если вы получаете несколько флагов, которые остаются в регистре даже после обработки, причиной может быть:

  1. В event2reg_array_proc: и reg_array2fifo_proc2:, если один флаг (в буфере) был записан в fifo, он должен быть очищен из буфера. Я использую "fifo_cnt", чтобы управлять этим. Вы можете использовать симуляцию для проверки.
  2. Линейная камера отправляет сигнал FRAME_VALID так же, как и сигнал LINE_VALID, поэтому вы можете получить много CAM2DSP_FRAME_SYNC_FLAG с линейной камерой.

Так что любой может предложить какой-либо алгоритм для включения определенных прерываний, пока камера все еще обменивается данными с DSP.


person user1823723    schedule 14.11.2012    source источник


Ответы (1)


Ваш вопрос сформулирован недостаточно четко, чтобы на него можно было дать правильный ответ. Но одно ясно: XOR - не лучший выбор для маски прерывания! Лучше выбрать И или ИЛИ в зависимости от логики обработчика прерывания.

person user_1818839    schedule 15.11.2012