0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA同步转换FPGA对输入信号的处理

FPGA设计论坛 来源:未知 2023-02-17 11:10 次阅读
由于信号在不同时钟域之间传输,容易发生亚稳态的问题导致,不同时钟域之间得到的信号不同。处理亚稳态常用打两拍的处理方法。多时钟域的处理方法很多,最有效的方法异步fifo,具体可以参考博主的verilog异步fifo设计,仿真(代码供参考)异步fifo适合处理不同时钟域之间传输的数据组,但有时不同时钟域之间仅仅传递脉冲,异步fifo就显的有点大材小用的,因此单信号的跨时钟域处理通常有, 两级寄存器串联。 脉冲同步器。 结绳法。 采用握手。 我们像主要讨论一下跨时钟域的同步: 我们将问题分解为2部分,来自同步时钟域信号的处理和来自异步时钟域信号的处理。前者要简单许多,所以先讨论前者,再讨论后者。 1.同步时钟域信号的处理 一般来说,在全同步设计中,如果信号来自同一时钟域,各模块的输入不需要寄存。只要满足建立时间,保持时间的约束,可以保证在时钟上升沿到来时,输入信号已经稳定,可以采样得到正确的值。但是如果模块需要使用输入信号的跳变沿(比如帧同步信号),千万不要直接这样哦。

always @ (posedge inputs)

begin

...

end

因为这个时钟inputs很有问题。如果begin ... end语句段涉及到多个D触发器,你无法保证这些触发器时钟输入的跳变沿到达的时刻处于同一时刻(准确的说是相差在一个很小的可接受的范围)。因此,如果写出这样的语句,EDA工具多半会报clock skew > data delay,造成建立/保持时间的冲突。本人曾经也写出过这样的语句,当时是为了做分频,受大二学的数字电路的影响,直接拿计数器的输出做了后面模块的时钟。当初用的开发工具是max+plusII,编译也通过了,烧到板子上跑倒也能跑起来(估计是因为时钟频率较低, 6M ),但后来拿到QuartusII中编译就报clock skew > data delay。大家可能会说分频电路很常见的啊,分频输出该怎么用呢。我一直用的方法是采用边沿检测电路,用HDL语言描述大概是这样:

always @ (posedge Clk)

begin

inputs_reg <= inputs;

if (inputs_reg == 1'b0 && inputs == 1'b1)

begin

...

end

...

end

这是上跳沿检测的电路,下跳沿电路大家依此类推。 2.异步时钟域信号的处理 这个问题也得分单一信号和总线信号来讨论 2.1单一信号(如控制信号)的处理 如果这个输入信号来自异步时钟域(比如FPGA芯片外部的输入),一般采用同步器进行同步。最基本的结构是两个紧密相连的触发器,第一拍将输入信号同步化,同步化后的输出可能带来建立/保持时间的冲突,产生亚稳态。需要再寄存一拍,减少(注意是减少)亚稳态带来的影响。这种最基本的结构叫做电平同步器。 如果我们需要用跳变沿而不是电平又该怎样处理呢,还记得1里面讲的边沿检测电路么?在电平同步器之后再加一级触发器,用第二级触发器的输出和第三级触发器的输出来进行操作。这种结构叫做边沿同步器。

always @ (posedge Clk)

begin

inputs_reg1 <= inputs;

inputs_reg2 <= inputs_reg1;

inputs_reg3 <= inputs_reg2;

if (inputs_reg2 == 1'b1 && inputs_reg3 == 1'b0)

begin

...

end

...

end

以上两种同步器在慢时钟域信号同步入快时钟域时工作的很好,但是反过来的话,可能就工作不正常了。举一个很简单的例子,如果被同步的信号脉冲只有一个快时钟周期宽,且位于慢时钟的两个相邻跳变沿之间,那么是采不到的。这时就需要采用脉冲同步器。这种同步器也是由3个触发器组成。 脉冲同步器 由于脉冲在快时钟域传递到慢时钟域时,慢时钟有时无法采样的信号奈奎是特采样定理,因此需要对信号进行处理,可以让慢信号采样到。脉冲同步器的结果如图:7f76f704-ae70-11ed-bfe3-dac502259ad0.png     2.2总线信号的处理 如果简单的对异步时钟域过来的一组信号分别用同步器的话,那么对这一组信号整体而言,亚稳态出现的几率将大大上升。基于这一观点,对于总线信号的处理可以有两种方式。 如果这组信号只是顺序变化的话(如存储器的地址),可以将其转换为格雷码后再发送,由于格雷码相邻码字只相差一个比特,上面说的同步器可以很好的发挥作用 但是如果信号的变化是随机的(如存储器的数据),这种方法便失效了,这时可以采用握手的方式或者采用FIFO或DPRAM进行缓存。RAM缓存的方式在突发数据传输中优势比较明显,现在高档一点的FPGA中都有不少的BlockRAM资源,且支持配置为DPRAM或FIFO,这种处理方法在通信电路中非常常用。

7f84c05a-ae70-11ed-bfe3-dac502259ad0.jpg

精彩推荐 至芯科技12年不忘初心、再度起航2月11日北京中心FPGA工程师就业班开课、线上线下多维教学、欢迎咨询! 基于FPGA的千兆以太网ARP和UDP的实现 FPGA学习-基于FPGA的图像处理扫码加微信邀请您加入FPGA学习交流群

7f92ad3c-ae70-11ed-bfe3-dac502259ad0.jpg7fa301f0-ae70-11ed-bfe3-dac502259ad0.png

欢迎加入至芯科技FPGA微信学习交流群,这里有一群优秀的FPGA工程师、学生、老师、这里FPGA技术交流学习氛围浓厚、相互分享、相互帮助、叫上小伙伴一起加入吧!

点个在看你最好看


原文标题:FPGA同步转换FPGA对输入信号的处理

文章出处:【微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1625

    文章

    21663

    浏览量

    601670

原文标题:FPGA同步转换FPGA对输入信号的处理

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA复位的8种技巧

    其它输入引脚类似,对 FPGA 来说往往是异步的。设计人员可以使用这个信号FPGA 内部对自己的设计进行异步或者同步复位。 不过在一些提
    的头像 发表于 11-16 10:18 179次阅读
    <b class='flag-5'>FPGA</b>复位的8种技巧

    FPGA无芯片怎么进行HDMI信号输入

    FPGA 在无外部PHY芯片情况下输出HDMI,目前是比较成熟的方案(外部电路需要转换成TMDS电平)。在无PHY芯片情况下怎么进行HDMI信号输入呢?
    的头像 发表于 10-24 18:11 1138次阅读
    <b class='flag-5'>FPGA</b>无芯片怎么进行HDMI<b class='flag-5'>信号</b><b class='flag-5'>输入</b>

    同步与多个FPGA接口的千兆样本ADC

    电子发烧友网站提供《同步与多个FPGA接口的千兆样本ADC.pdf》资料免费下载
    发表于 10-10 11:32 0次下载
    <b class='flag-5'>同步</b>与多个<b class='flag-5'>FPGA</b>接口的千兆样本ADC

    AD采集FPGA做fft处理信号的问题

    是不是就是20KHz呢?这样是不是就能满足每通道采样频率为信号频率的4倍呢? 对采集到的信号进行fft处理,以得到指定频率点的幅度值,指定的频率点都集中在200Hz以内,且都精确到了小数点后一位,也就是说
    发表于 08-29 09:22

    FPGA同步复位和异步复位

    FPGA(Field-Programmable Gate Array,现场可编程门阵列)中的复位操作是设计过程中不可或缺的一环,它负责将电路恢复到初始状态,以确保系统的正确启动和稳定运行。在FPGA设计中,复位方式主要分为同步
    的头像 发表于 07-17 11:12 1313次阅读

    FPGA异步信号处理方法

    FPGA(现场可编程门阵列)在处理异步信号时,需要特别关注信号同步化、稳定性以及潜在的亚稳态问题。由于异步
    的头像 发表于 07-17 11:10 1045次阅读

    FPGA设计经验之图像处理

    的精度 图像处理的算法中,大部分需要采用浮点数运算,而浮点数运算在FPGA中是非常不划算的,因此需要转换成定点数计算,此时会设计到浮点运算转定点运算时精度下降的问题。 3.软件和硬件的合理划分 这里
    发表于 06-12 16:26

    FPGA基础知识学习

    可以执行各种逻辑操作(如与、或、非、异或等),将输入信号转换为输出信号。这些逻辑门通过FPGA内部的互连网络相互连接,从而形成一个复杂的逻辑
    发表于 04-29 23:26

    基于FPGA的多通道高速信号采集与处理平台设计方案

    以核心处理板为核心,由信号源产生的待处理模拟信号通过同轴线缆连接到核心处理板的信号接口,同时,连
    发表于 04-17 11:20 1019次阅读
    基于<b class='flag-5'>FPGA</b>的多通道高速<b class='flag-5'>信号</b>采集与<b class='flag-5'>处理</b>平台设计方案

    fpga仿真是什么

    FPGA仿真是一种验证FPGA设计正确性的过程,主要用来分析设计电路逻辑关系的正确性。在FPGA设计中,仿真测试是把FPGA当作一个功能芯片,给一些
    的头像 发表于 03-15 13:59 1379次阅读

    fpga芯片的主要特点包括 fpga芯片上市公司

    FPGA芯片的主要特点包括以下几个方面: 高性能和实时性:FPGA芯片由数百万个逻辑单元组成,因此具有并行处理能力,其运行速度远超单片机和DSP。这种并行计算能力使得FPGA芯片在数据
    的头像 发表于 03-14 16:46 999次阅读

    高速ADDA模块开箱,FPGA专用,高速信号输出,数模信号转换

    高速ADDA模块开箱,FPGA专用,高速信号输出,数模信号转换,8Bit高速低功耗DA转换,DA速率高达125MSPS,10BitAD
    发表于 03-13 18:25

    FPGA图像处理—VESA标准与视频流介绍

    VESA 视频标准同步信号产生器,是从事FPGA图像领域工程师经常使用到的模块。
    的头像 发表于 02-29 09:56 3327次阅读
    <b class='flag-5'>FPGA</b>图像<b class='flag-5'>处理</b>—VESA标准与视频流介绍

    FPGA输入的时钟信号必须是方波么?正弦波会有影响么?

    FPGA输入的时钟信号必须是方波么?正弦波会有影响么? FPGA是一种可编程逻辑器件,通常用于实现数字电路。输入时钟
    的头像 发表于 01-31 11:31 3250次阅读

    fpga和ad9789是如何同步的?

    我们的设计用到了FPGA和AD9789进行CMOS电平的数字通信。fpga的时钟跟AD9789的时钟是异步的,不知道这样的设计会不会导致fpga和ad9789的通信不稳定,如何避免。fpga
    发表于 12-21 08:29