1

我正在为 fpga 编写输入,并且 dsp 需要与 vhdl 中的双端口内存共享 dpram 控件进行交互。我有外部 IO 从一侧的 SPI 总线到 fpag 以与 dsp 通信,另一方面有一个摄像头到 dsp。所以我的输入就像 Havinf 在每次 FSM 使用 dsp 读取和写入中断后重置 FIFO。

现在我的问题是

  1. 我想一次启用一些特定的中断并禁用其他中断。
  2. 当使用逻辑 XOR 函数进行屏蔽时,来自 UART 的其他中断会超时。
  3. 完成此操作后,相机会收到信号但无法控制。

我使用以下算法来处理所有异步输入:

  1. 在 event2reg_array_proc 中:将所有输入保存到并行缓冲区“fifo_data_input_array”,每个输入(标志)应放入单独的缓冲区。
  2. 在 reg_array2fifo_proc2 中:串行读取每个缓冲区并将它们保存在 fifo“fifo320x32”中。
  3. 在主 FSM 中读取 fifo 的输出并进行适当的处​​理,每个周期只读取一个值,应该是一个标志。

如果您得到一些即使在处理后仍保留在寄存器中的标志,原因可能是:

  1. 在 event2reg_array_proc: 和 reg_array2fifo_proc2: 中,如果一个标志(在缓冲区中)已写入 fifo,则应将其从缓冲区中清除。我使用“fifo_cnt”来控制它。您可以使用模拟来检查。
  2. Line Camera 发送 FRAME_VALID 信号和 LINE_VALID 信号一样,所以你可以用 Line Camera 得到很多 CAM2DSP_FRAME_SYNC_FLAG。

因此,任何人都可以建议任何算法在相机仍在与 DSP 通信时启用特定中断。

4

1 回答 1

1

您的问题措辞不够明确,无法正确回答。但有一点很清楚:XOR 不是中断掩码的好选择!根据中断处理程序的逻辑,AND 或 OR 将是更好的选择。

于 2012-11-15T09:16:41.243 回答