我正在编写fpga和dsp的交互,它们需要与vhdl中的双端口内存共享dpram控件进行交互。我的外部IO一方面从SPI总线到达fpag,以便与dsp进行通信,另一方面有一个摄像机与dsp进行通信。因此,我的入侵就像Havinf一样,每次FSM用dsp读写Interrpts之后,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通讯时,任何人都可以建议任何算法来启用特定的中断。