【SOC】DMA时钟使用限制

#工作记录#

先给出结论:在使用异步的时候DMA的配置时钟不要快于dma_core_clk。

当使用DMA的时候,寄存器配置使用的是AHB接口,会使用config配置时钟频率。DMA内部还有一个dma_core_clk提供给core使用。DMA针对配置时钟和core时钟有两种工作模式,一种是异步,一种是同步。

当使用同步的时候,不需要将AHB的信号同步到core时钟域。

但是使用异步的时候,针对写寄存器的时候,DMA内部会将write的enable、ack、req信号从config配置时钟域同步到dma_core_clk的时钟域,使用Toggle Type Event Sychronizer来同步脉冲信号。但是在真正写入到寄存器中的时候,会有write_enable信号与write_byte_en、write_data共同参与写入的过程。这3个信号中只有write_enable同步到了dma_core_clk的时钟域,write_byte_en和write_data仍然使用的是config配置时钟。2个不同时钟域的参与写入会出现问题。

分析它为什么这么设计的原因:可能是默认dma_core_clk在异步使用的时候,默认dma_core_clk会快于config时钟,在这种情况下,write_byte_en和write_data使用config时钟也能被正常采样到,不会出错。

你可能感兴趣的:(SoC,fpga开发,单片机,嵌入式硬件,SoC)