当前位置: 首页 > news >正文

打开这个网站rdm响应式网站开发

打开这个网站,rdm响应式网站开发,网站如何交换链接,室内设计师工资一般多少目录 一、前言二、锁存器定义三、verilog中锁存的产生四、verilog中锁存的影响和消除五、FPGA中的锁存器资源 一、前言 在做FPGA设计时,我们要求在组合逻辑设计时,case或者if-else条件要完整,否则会产生锁存。本文主要介绍锁存产生的原因和影…

目录

  • 一、前言
  • 二、锁存器定义
  • 三、verilog中锁存的产生
  • 四、verilog中锁存的影响和消除
  • 五、FPGA中的锁存器资源

一、前言

     在做FPGA设计时,我们要求在组合逻辑设计时,case或者if-else条件要完整,否则会产生锁存。本文主要介绍锁存产生的原因和影响,以及如何规避锁存的产生。

二、锁存器定义

我们回顾一下最基础的数字电路,什么是锁存器:

锁存器(Latch)是一种对脉冲电平敏感的存储单元电路,它们可以在特定输入脉冲电平作用下改变状态。锁存,就是把信号暂存以维持某种电平状态。锁存器是利用电平控制数据的输入,它包括不带使能控制的锁存器和带使能控制的锁存器。

注:很多书本或者介绍中将触发器和锁存器混淆,其实笔者觉得即可以叫锁存器也可以叫寄存器,但由于有了时钟延触发寄存器的产生,我们一般称时钟边沿触发的为触发器,电平触发的为锁存器。

常见的锁存器有多种:
(1)基本的RS锁存器

  基本RS锁存器可由与非门实现或者用或非门实现,下图为采用或非门实现原理图,其中”S“是置位输入端,”R“是复位输入端,”Q“为状态输出端,”Q’“为反相状态输出端。
在这里插入图片描述
(2)门控RS锁存器

  在基本RS锁存器加一级门控,CP=0时一级控制门被封锁,基本锁存器保持原来的状态不变,只有当CP=1时控制门被打开后,输入信号才会被接收,此时其工作情况与基本RS锁存器没什么区别。
在这里插入图片描述
在这里插入图片描述
(3)D锁存器

  将门控SR锁存器进行优化改动,就得到D锁存器。当E=0时锁存数据,E=1时输出跟随输入D变化
在这里插入图片描述

  将两个D锁存器级联,即可产生时钟边沿触发的D触发器,也就是时序电路设计中常用的DFF。

在这里插入图片描述
  从以上描述可知道,D触发器有锁存器演进进化而来,不管是锁存器和触发器,其主要是个存储模块,为了锁存数据,只是锁存数据的方式有些不同,所以很多书上将锁存器称为触发器也没问题。

三、verilog中锁存的产生

在verilog中编辑以下代码,else或case条件赋值不完全:

always @(*) beginif(asel) o_a  = in_a;
end
always @(*) begincase(bsel)2'd0:o_b = 2'd3;2'd1:o_b = 2'd2;2'd2:o_b = 2'd1;endcase
end

或者以下代码,为了完整的if-else,组合逻辑采用信号自己等于自己如 o_a = o_a ;

always @(*) beginif(asel) o_a  = in_a;else o_a  = o_a  ;
end
always @(*) begincase(bsel)2'd0:o_b = 2'd3;2'd1:o_b = 2'd2;2'd2:o_b = 2'd1;default:o_b = o_b;endcase
end

以上两种写法综合后如下图所示,从图中可知o_b 和o_a 均产生了latch LDCE。
对于if else模块,latch的锁存信号为asel,当asel为0时o_a保持不变(锁存),当asel为1时,o_a跟随 in_a变化。case模块同理。
在这里插入图片描述
从以上分析可以得出结论:
当if-else或者case中,各条件未完全正常赋值可导致latch产生
通过修改代码如下:

always @(*) beginif(asel) o_a  = in_a;else o_a  = 1'b0;
end
always @(*) begincase(bsel)2'd0:o_b = 2'd3;2'd1:o_b = 2'd2;2'd2:o_b = 2'd1;2'd3:o_b = 2'd0;endcase
end

以上写法综合后如下图所示,从图中可知if-else产生了正常的选择器。case模块逻辑也正常,因case的写法等同为取反逻辑,所以软件直接优化为LUT取反了,没有产生LDCE。
在这里插入图片描述

四、verilog中锁存的影响和消除

上面描述了锁存的产生,那么锁存一定是错误的吗?也不一定,只是FPGA一般是时序逻辑电路,受时钟驱动,一般存储采用同步的DFF实现。但锁存也是一种有效逻辑,如在时延要求很高时序逻辑无法实现的情况下,锁存也是一种正常的电路逻辑,如第三章中的if-else中,如果确实需要再in_a为0时o_a保持,那么第三章中的if-else逻辑均为正确的逻辑,其实现的就是一个门控锁存器功能(第二章中有描述)。但在FPGA中采用锁存有一些问题:
(1)产生竞争冒险,不利于后续电路,使电路稳定性降低;
(2)给时序分析带来一定挑战,不利于时序分析


至于如何消除latch,前面已经从latch的产生中说明:
有完整的if-else赋值、有完整的case条件赋值,并且不能出现输出信号自己等于自己。

五、FPGA中的锁存器资源

在Xilinx V7芯片对以上代码进行布局布线,发现Latch使用的是存储单元(storage elements)资源,说明FPGA中FF可以被配置为锁存器,这在数据手册中可以看到。同时对照第二章,我们知道锁存器和触发的电路相似,所示Xilinx在做设计时兼容了这两种设计。
在这里插入图片描述
如下图所示,Xilinx每个SILCE有8个存储单元。其中:

  • 有四个存储单元既可以配置为边沿触发的D触发器或者电平敏感的锁存器,D输入可以直接由LUT输出通过AFFMUX、BFFMUX、CFFMUX或DFFMUX驱动,也可以由旁路片输入通过AX、BX、CX或DX输入绕过函数生成器驱动;
  • 另外四个存储单元只能配置为边沿触发的D触发器,D输入可以由LUT的O5输出或通过AX、BX、CX或DX输入的BYPASS切片输入驱动。另外,当上述的4个存储单元被配置为锁存器时,这四个存储单元不能够被使用;

在这里插入图片描述

参考资料:

1、7 Series FPGAs Configurable Logic BlockUser Guide
2、数字电路基础

http://www.dtcms.com/a/463230.html

相关文章:

  • 猪八戒里面做网站骗子很多柳州关键词优化网站
  • 电子商务实网站的建设课件网站开发毕设结论
  • 电商网站页面设计windows中建wordpress
  • 天津重型网站建设推荐外贸信息发布平台
  • 对于消失的数字以及右旋字符数组的题目解析
  • 魏县网站制作html怎么发布网页
  • PPT太丑?用InDesign制作电影级的交互式在线演示文档
  • 利用Blenderprc制作bin-picking 工业小零件数据集
  • 新建网站怎么做c 购物网站开发流程
  • 品牌建设青之见网站推广和优化的原因网络营销
  • 网站你了解的怎样把自己做的网站放到网上
  • 定制网络监控方案优化设计答案六年级
  • 泸州建设厅官方网站塑模毕业设计代做网站
  • 合肥学网站设计人力招聘网站建设
  • MySQL中,IS NULL和IS NOT NULL不会走索引?错!
  • 云网站注册怎么做网站文章
  • 用织梦做网站后面可以改吗网站建设需要购买服务器么
  • 手机做网站软件wix和wordpress哪个好
  • C++ const 用法全面总结与深度解析
  • 哪块行业需要网站建设自己装修怎么出设计图
  • 网站建设流程讯息中国舆情网官网
  • 西安网站建设和推广公司做会计要关注什么网站
  • 律师做推广宣传的网站开发工具的种类及使用方法
  • js class定义类,私有属性,类继承,子类访问父类的方法,重写父类的方法
  • AD21创建集成库
  • 做暧视频网站大全佛山企业名录黄页
  • jmeter接口测试该怎么做?
  • 10.9总结
  • 自己怎么用h5做网站久久结婚网
  • 住房和城乡建设局网站如何制作一个网页链接