uart fifo 需要时钟域交叉和格雷码吗?

问题描述 投票:0回答:1

如果 UART 模块有单时钟输入(称为

axi_aclk
),则波特率时钟是根据除数寄存器(
axi_aclk
DLL
)从
DLM
生成的。

下面以xmit fifo的时钟为例(fifo的写端口由

axi_clk
驱动,读端口由
baudclk
驱动:

        +------------>---------------------+
        |                                  |
        |                                  v
--> axi_aclk ---> [baudrate generator]     +-->[xmt fifo] <--
                         |                                  ^
                         |                                  |
                         +----------------------------------+
                                        baudclk

我的问题是,在这种情况下,

xmt fifo
的实现是否需要时钟域交叉逻辑(以及用于读/写指针的格雷码),为什么?

verilog fifo
1个回答
0
投票

这两个时钟可能是同步的。 Baudclk可以通过门控时钟来实现。例如,屏蔽 4 个 axi_aclk 时钟脉冲中的 3 个以生成 4 分频 baudclk。

           _   _   _   _   _   _   _   _   _   _
axi_aclk _| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_
           _               _               _
baudclk  _| |_____________| |_____________| |_____


axi_aclk -> clk buffer -+---------------> DFF (axi_aclk)
                        |
                        +-> clk gating -> DFF (baudclk)

在axi_aclk上创建时钟树,axi_aclk和baudclk域的DFF将被平衡。

© www.soinside.com 2019 - 2024. All rights reserved.