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
    +关注

    关注

    1611

    文章

    21393

    浏览量

    595527

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

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

收藏 人收藏

    评论

    相关推荐

    FPGA设计经验之图像处理

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

    FPGA基础知识学习

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

    fpga仿真是什么

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

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

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

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

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

    fpga和ad9789是如何同步的?

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

    FPGA项目开发之同步信号和亚稳态

    FPGA项目开发之同步信号和亚稳态 让我们从触发器开始,所有触发器都有一个围绕活动时钟沿的建立(setup time)和保持窗口(hold time),在此期间数据不得更改。如果该窗口中的数据
    发表于 11-03 10:36

    Xilinx FPGA芯片内部时钟和复位信号使用方法

    如果FPGA没有外部时钟源输入,可以通过调用STARTUP原语,来使用FPGA芯片内部的时钟和复位信号,Spartan-6系列内部时钟源是50MHz,Artix-7、Kintex-7等
    的头像 发表于 10-27 11:26 1267次阅读
    Xilinx <b class='flag-5'>FPGA</b>芯片内部时钟和复位<b class='flag-5'>信号</b>使用方法

    FPGA处理的优势有哪些?如何去使用FPGA处理

    传统的、基于通用DSP处理器并运行由C语言开发的算法的高性能DSP平台,正在朝着使用FPGA处理器和/或协处理器的方向发展。这一最新发展能够为产品提供巨大的性能、功耗和成本优势。 尽
    的头像 发表于 10-21 16:55 1665次阅读
    <b class='flag-5'>FPGA</b>协<b class='flag-5'>处理</b>的优势有哪些?如何去使用<b class='flag-5'>FPGA</b>协<b class='flag-5'>处理</b>?

    fpga与dsp通讯怎样同步时钟频率?dsp和fpga通信如何测试?

    或丢失。 为了实现FPGA和DSP的同步时钟频率,可以采用以下两种方式: 1. 外部时钟源同步 通过引入外部时钟源,让FPGA和DSP的时钟信号
    的头像 发表于 10-18 15:28 1377次阅读

    FPGA中只有从专用时钟管脚进去的信号才能接片内锁相环吗?

    是接受外部时钟信号。这些时钟信号是非常重要的,因为它们可以帮助FPGA的内部逻辑和时序同步,并保证系统的稳定性和正确性。 对于这些专用管脚进入的时钟
    的头像 发表于 10-13 17:40 405次阅读

    数字信号处理FPGA实现

    FPGA正在掀起一场数字信号处理的变革。本书旨在讲解前端数字信号处理算法的高效实现。首先概述了当前的FP
    发表于 09-19 06:38

    kv260采用的FPGA型号是什么?

    可重构电路芯片,可以根据需要重新编程为不同的电路配置。FPGA具有逻辑门、存储单元、时序控制单元和输入/输出接口等功能单元,可以用于高速数据处理、数字信号
    的头像 发表于 08-16 11:15 985次阅读

    一种基于FPGA实现的800G信号处理平台设计

    一种基于FPGA 实现的800G信号处理平台
    发表于 07-31 10:23 419次阅读
    一种基于<b class='flag-5'>FPGA</b>实现的800G<b class='flag-5'>信号</b><b class='flag-5'>处理</b>平台设计

    #FPGA FPGA信号异步时钟处理

    fpga图像处理
    奔跑的小鑫
    发布于 :2023年07月27日 10:08:04