• FPGA中信号的跨时钟域处理模板(一)


        在做项目的时,我们经常会使用到多个时钟。每一个时钟在FPGA内部都会形成一个时钟域,如果一个时钟域中要用到另外一个时钟域的信号,也就形成了跨时钟域的操作,这时候要格外小心。

    一、实际使用背景

          假设在项目中需要在clk_b时钟域中用到用到来自clk_a中的信号。那么此信号就需要从clk_a时钟域跨越到clk_b中因此我们要建立一个同步计数器,该设计器从clk_a 中获取信号,然后再clk_b中创建一个新的信号。并从作为输出。模型如下:

    在此设计中、我们假设输入的信号与clk_a和clk_b相比变化缓慢,那么需要做的就是使用两个触发器将信号从clk_a转移到clk_b。

    二、模板

    模块 Signal_CrossDomain(
         输入 clkA,//在该示例中我们实际上不需要clkA,但这是出于完整性的考虑,因为在其他示例中将需要它,
         输入 SignalIn_clkA,
         输入 clkB,
         输出 SignalOut_clkB
    );
    
    //我们使用两级移位寄存器将SignalIn_clkA同步到clkB时钟域
    reg [1:0] SyncA_clkB;
    总是 @(posedge CLKB)SyncA_clkB [0] <= SignalIn_clkA; //注意,我们使用CLKB
     总是 @(posedge CLKB)SyncA_clkB [1] <= SyncA_clkB [0]; //注意,我们使用clkB
    
    分配 SignalOut_clkB = SyncA_clkB [1]; //同步到新的信号(=准备中使用)CLKB域
     endmodule

     三、分析

         这两个触发器具有延迟信号的副作用,例如在一下波形中,可以看到俩个触发器将慢速运动的信号同步或者说是延迟到clk_b时钟域中。其实这种方法我们在同时钟域中也用过,经常用来数据对齐。

     

  • 相关阅读:
    GPS 经纬度
    TP5 分页数据加锚点
    修改layui的表单手机、邮箱验证可以为空怎么实现?
    转录调控实战 | 一文解决转录调控问题 | chIP-seq | ATAC-seq
    管家基因 | Human housekeeping genes
    各国脑计划概览
    原创
    RLE Plots: relative log expression
    Polygenic score
    皮尔逊残差 | Pearson residual
  • 原文地址:https://www.cnblogs.com/lgy-gdeu/p/12356217.html
Copyright © 2020-2023  润新知