用VHDL中的fpga中断处理

时间:2012-11-14 12:47:16

标签: vhdl interrupt fpga interrupt-handling vhd

我正在为fpga和dsp编写插件需要与vhdl中的双端口内存共享dpram控件进行交互。 我有外部IO来自SPI总线,一端到fpag与dsp通信,另一方面有一个摄像头到dsp。 因此,我的intrups就像Havinf一样,每当FSM读取和写入带有dsp的接口时,FIFO就会复位。

现在我的问题是

  1. 我想一次启用一些特定的interupts并禁用其他的。
  2. 使用逻辑XOR功能进行屏蔽时,来自UART的其他中断将暂停。
  3. 完成此操作后,相机会收到信号,但无法控制。
  4. 我使用以下算法来处理所有异步输入:

    1. 在event2reg_array_proc中:将所有输入保存到并行缓冲区“fifo_data_input_array”,每个输入(标志)应放入单独的缓冲区。
    2. 在reg_array2fifo_proc2中:按顺序读取每个缓冲区并将其保存在fifo“fifo320x32”中。
    3. 在主FSM中读取fifo的输出并进行适当的处​​理,每个周期只读出一个值,它应该是一个标志。
    4. 如果你得到一些标志,即使在处理后仍然保持登记状态,原因可能是:

      1. 在event2reg_array_proc:和reg_array2fifo_proc2:中,如果在fifo中写入了一个标志(在缓冲区中),则应该从缓冲区中清除它。我使用“fifo_cnt”来控制它。您可以使用模拟进行检查。
      2. Line Camera发送FRAME_VALID信号与LINE_VALID信号相同,因此您可以使用Line Camera获得大量CAM2DSP_FRAME_SYNC_FLAG。
      3. 当相机仍在与DSP通信时,任何人都可以建议任何算法来启用特定的中断。

1 个答案:

答案 0 :(得分:1)

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