我正在为 fpga 编写输入,并且 dsp 需要与 vhdl 中的双端口内存共享 dpram 控件进行交互。我有外部 IO 从一侧的 SPI 总线到 fpag 以与 dsp 通信,另一方面有一个摄像头到 dsp。所以我的输入就像 Havinf 在每次 FSM 使用 dsp 读取和写入中断后重置 FIFO。
现在我的问题是
- 我想一次启用一些特定的中断并禁用其他中断。
- 当使用逻辑 XOR 函数进行屏蔽时,来自 UART 的其他中断会超时。
- 完成此操作后,相机会收到信号但无法控制。
我使用以下算法来处理所有异步输入:
- 在 event2reg_array_proc 中:将所有输入保存到并行缓冲区“fifo_data_input_array”,每个输入(标志)应放入单独的缓冲区。
- 在 reg_array2fifo_proc2 中:串行读取每个缓冲区并将它们保存在 fifo“fifo320x32”中。
- 在主 FSM 中读取 fifo 的输出并进行适当的处理,每个周期只读取一个值,应该是一个标志。
如果您得到一些即使在处理后仍保留在寄存器中的标志,原因可能是:
- 在 event2reg_array_proc: 和 reg_array2fifo_proc2: 中,如果一个标志(在缓冲区中)已写入 fifo,则应将其从缓冲区中清除。我使用“fifo_cnt”来控制它。您可以使用模拟来检查。
- Line Camera 发送 FRAME_VALID 信号和 LINE_VALID 信号一样,所以你可以用 Line Camera 得到很多 CAM2DSP_FRAME_SYNC_FLAG。
因此,任何人都可以建议任何算法在相机仍在与 DSP 通信时启用特定中断。