与FPGA中亚稳态的‘量子纠缠’

2023-10-19 22:30
文章标签 量子 fpga 纠缠 亚稳态

本文主要是介绍与FPGA中亚稳态的‘量子纠缠’,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

亚稳态

说实话,这玩意我也是琢磨许久,不搞懂心里难受!!!这也让我觉得匪夷所思的地方!!!

这玩意不搞懂,我是睡不着觉的!!!!

 

为啥会出现亚稳态?组合逻辑有吗?组合逻辑是靠电平触发,每次会有确定的电平值0或1,但组合逻辑会有个竞争冒险现象,这个现象与亚稳态一样是个小祸害,阻碍整个系统变得优秀!!!(我这说的委婉,可能会导致系统奔溃)

那么在时序逻辑中呢?这涉及到很重要的数字器件,那就是触发器,它具有记忆功能还可以储存一位二进制数据。为什么提到触发器呢,因为它是导火索,所有亚稳态都与它有着千丝万缕的联系。触发器工作是通过clk信号采一个值从触发器的输入D端进去,从它的输出Q端出去,并保留一个时钟周期,等待下一个周期clk采样的值从D端进来,再送到Q端,反复操作。所以说Q端的值是上一个周期采样的值。

 

下图是  D触发器


触发器说完,该时序逻辑了,由触发器以及其它时序器件组合成的具有一定逻辑功能的数字电路,这涉及到clk,触发器,那肯定少不了边沿触发,说了这么多,亚稳态的出现就是与边沿触发有关!!!!
一般是时钟的上升沿来对数据的采样,也就是说当时钟的上升沿采样到一个数据的渡劫区,这个是我起的名字,就是数据刚要发生变化时,时钟上升沿过来了,这时候采样就会出现迟疑,不知道是采数据之前的值还是变化后的值,这个时候就会出现不稳定的状态,不是0也不是1。不稳定最终会回到稳定,但是回到稳定的值却是随机的。

亚稳态专业定义是:当clk在采样时数据不满足建立时间和保持时间,就会产生亚稳态。

下面是关于时间参数概念:

  1. 建立时间(Tsu):上升沿到来之前,数据保持不变的时间
  2. 保持时间(Th):上升沿到来之后,数据保持不变的时间
  3. 寄存器内部传输延时(Tco):从D端到Q端的时间
  4. 亚稳态持续/振荡时间(决断)(Tmet)

 

下图很好的解释了亚稳态,以及解决方法:

下图取之《野火 FPGA verilog 开发指南》串口一章!

 

如上图,rx_reg1的值受到亚稳态的祸害,而且Tmet1的时间大于一个时钟周期,re_reg2的值取之rx_reg1的值,可以发现Tmet2的时间缩短了,小于一个时钟周期的值,所以说这是一个解决办法。

rx_reg1是对rx的值打了一拍(这是习惯讲法,实际就是延迟rx一个时钟周期),rx_reg2对rx打了两拍,可以发现,rx_reg2的值变稳态的时间缩短,到下一个时钟上升沿到来时采取的值是稳定的。

注意的是:达到稳定的值是随机的,是不可预知的,与之前输入的数据无关。

 

要怎么解决亚稳态呢?

其实亚稳态是解决不了的,就像误差是消除不了的一样,只能去降低误差,所以我们只能降低亚稳态发生的概率。

在FPGA中,使用一级寄存器对数据的打拍,数据稳定输出的概率为70%~80%,使用两级寄存器对输入数据的打拍,可以稳定输出99%,所以也没必要经过多级寄存器,这个方法只是针对单比特!!!

 

这里只是简单讲了亚稳态的部分,感兴趣同学可以自由上网查看丰富资料!!!!

 

 

 

这篇关于与FPGA中亚稳态的‘量子纠缠’的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/242765

相关文章

理解分类器(linear)为什么可以做语义方向的指导?(解纠缠)

Attribute Manipulation(属性编辑)、disentanglement(解纠缠)常用的两种做法:线性探针和PCA_disentanglement和alignment-CSDN博客 在解纠缠的过程中,有一种非常简单的方法来引导G向某个方向进行生成,然后我们通过向不同的方向进行行走,那么就会得到这个属性上的图像。那么你利用多个方向进行生成,便得到了各种方向的图像,每个方向对应了很多

FPGA编译与部署方法全方位介绍

FPGA编译与部署是FPGA开发中的核心环节,涉及从代码编写、调试到将设计部署到FPGA硬件的全过程。这个流程需要经过创建项目、编写FPGA VI、模拟调试、编译生成比特流文件,最后将设计部署到硬件上运行。编译的特点在于并行执行能力、定制化硬件实现以及复杂的时钟管理。通过LabVIEW的FPGA模块和NI硬件,可以快速完成开发和部署,尤其适用于复杂控制与高性能数据处理系统。 1. FPG

FPGA开发:条件语句 × 循环语句

条件语句 if_else语句 if_else语句,用来判断是否满足所给定的条件,根据判断的结果(真或假)决定执行给出的两种操作之一。 if(表达式)语句; 例如: if(a>b) out1=int1; if(表达式)         语句1; else         语句2; 例如: if(a>b)out1=int1;elseout1=int2; if(表达式1) 语句1; els

FPGA开发:模块 × 实例化

模块的结构 对于C语言,其基本单元为函数。与此类似,Verilog的基本设计单元称之为"模块"(block)。对于整个项目的设计思想就是模块套模块。 一个模块由两个部分组成:一部分描述接口,一部分描述逻辑功能。 每个Verilog模块包含4个部分:端口定义、IO说明、内部信号声明、功能定义。且位于module和endmodule之间,如下: module block(a,b,c);inpu

LabVIEW环境中等待FPGA模块初始化完成

这个程序使用的是LabVIEW环境中的FPGA模块和I/O模块初始化功能,主要实现等待FAM(Field-Programmable Gate Array Module,FPGA模块)的初始化完成,并处理初始化过程中的错误。让我们逐步分析各部分的功能: 1. Wait for FAM Initialization框架 此程序框架用于等待I/O模块成功初始化。如果在5秒钟内模块没有完成配

FPGA随记——小说 可综合和不可综合

当然我在网络上找到了些可综合和不可综合的解释 感觉也很有参考价值: https://wenda.so.com/q/1378362174074040 综合就是把你写的rtl代码转换成对应的实际电路。 比如你写代码assign a=b&c; EDA综合工具就会去元件库里拿一个二输入与门出来,然后输入端分别接上b和c,输出端接上a 假如你写了很多这样的语句 assign a=b&c; assig

Xilinx系FPGA学习笔记(五)ROM的IP核学习

系列文章目录 文章目录 系列文章目录前言ROM IP分布式ROM生成ROM配置创建COE文件 块ROM生成如何快速生成Example Design 两种ROM对比 前言 最近在学习小梅哥的xilinx型FPGA开发板,一边学习一边记录,简化整理一下笔记 ROM IP 在 Memories &Storage Elements 下可以看到有两个与 ROM 相关的

基于FPGA的开源项目:FOC/SHA/USB/JPEG等

文章目录 [1. USB 1.1控制器](https://github.com/WangXuan95/FPGA-USB-Device)[2. FOC控制算法](https://github.com/WangXuan95/FPGA-FOC)[3. BSV高级硬件描述语言入门指南](https://github.com/WangXuan95/BSV_Tutorial_cn)[4. 基于XDMA的

LCD彩条显示——FPGA学习笔记10

部分素材来自原子哥 一、LCD简介         基本原理:在两块平行玻璃板中填充液晶材料,通过电场控制液晶分子旋转从而达到透光和遮光的目的。

LabVIEW开发FPGA方法与FIFO数据丢失处理

开发基于NI 7975R FPGA的系统涉及一系列流程,包括驱动安装、LabVIEW项目设置、开发调试、编译和与Windows系统的通信。重点在于FIFO的正确配置,避免数据丢失是关键环节之一,尤其是在使用高速数据流传输时。以下将详细介绍这些过程,并重点讨论FIFO数据丢失的原因与解决方案。 FPGA开发流程 驱动安装与工具准备:开发FPGA需要安装LabVIEW FPGA模块以及N