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

社区微网站建设方案网站运营及推广方案

社区微网站建设方案,网站运营及推广方案,在凡科上做的网站无法加载出来,房地产家居网络平台FPGA设计中锁存器产生、避免与消除 一、锁存器的产生1.1 组合逻辑中使用保持状态1.2 组合逻辑中的if-else语句或case语句未列出所有可能性1.3 小结 二、锁存器的避免三、锁存器的消除3.1 情况一 一、锁存器的产生 锁存器的产生主要有以下两种情况:(1&…

FPGA设计中锁存器产生、避免与消除

  • 一、锁存器的产生
    • 1.1 组合逻辑中使用保持状态
    • 1.2 组合逻辑中的if-else语句或case语句未列出所有可能性
    • 1.3 小结
  • 二、锁存器的避免
  • 三、锁存器的消除
    • 3.1 情况一

一、锁存器的产生

  锁存器的产生主要有以下两种情况:(1)组合逻辑中使用保持状态;(2)组合逻辑中的if-else语句或case语句未列出所有可能性;

1.1 组合逻辑中使用保持状态

assign data_out = valid ? data_in : data_out; //变量保持当前值
always @(*) beginif(valid)data_out = data_in;elsedata_out = data_out; //变量保持当前值
end

1.2 组合逻辑中的if-else语句或case语句未列出所有可能性

  对于组合逻辑中,如果使用if-else语句,未补全else语句,则默认在其他条件下,数据均保持为原来的状态,那么也会产生锁存器。

//if-else语句缺少else
always @(*) beginif(valid)data_out = data_in;
end

  而如果在组合逻辑中使用case语句,未列出case中条件所有的可能性,则相当于对于未列出的那些情况,数据均保持为原来的状态,也会产生锁存器。

//case语句未列出所有可能性
always @(*) begincase(sel)2'b00: data_out = 2'b00;2'b01: data_out = data_in;endcase
end

1.3 小结

  那么,总而言之,言而总之。对于锁存器,其产生的原因可以总结为一点:想要通过组合逻辑保持数据不变。对于组合逻辑的实现,我们可以认为它是用很多门电路搭建而成的,那么,门电路与寄存器不同,其不具有保持当前状态的功能。也就是说,构成当前组合逻辑的电路中任何一个信号发生改变,都会导致输出结果发生改变。如果要通过组合逻辑实现保持数据的不变,那就只能产生锁存器了(可以参考《数字电子技术基础》第五版的SR触发器)。

二、锁存器的避免

  我们知道了锁存器的产生原因,就可以对症下药,在编写Verilog代码时注意编码风格,即可避免锁存器的产生。

(1)在组合逻辑中使用if-else语句时补全else语句

always @(*) beginif(sel)data_out = data_in;elsedata_out = 2'b00;
end

(2)在组合逻辑中使用case语句时,设置默认状态default,并默认状态下的数据进行赋值

always @(*) begincase(sel)xxx: data_out <= 2'b01;xxx: data_out <= data_in;default: data_out = 2'b00;endcase
end

(3)在组合逻辑中,不可一个变量赋值给变量自身

//错误示例
always @(*) beginif(sel)data_out = data_in;elsedata_out = data_out; //变量赋值给变量自身
end//正确示例
always @(*) beginif(sel)data_out = data_in;elsedata_out = 2'b00; //需要赋值一个准确的数值或者其他变量
end

三、锁存器的消除

  在FPGA设计过程中,有可能出现一些情况,必须使用组合逻辑,保证其实时性,且需要保持数据不变,保证其他运算的正确性。那么又该如何处理?

3.1 情况一

  假如我们要实现如下面时序图所示功能,输出data_out在有效信号valid的上升沿处锁存输入data_in的值,那么要如何实现?

在这里插入图片描述

  最开始考虑的是采用时序逻辑进行实现,代码如下。

always @(posedge sys_clk or negedge sys_rst_n) beginif(!sys_rst_n)data_out <= 'd0;else if(valid)data_out <= data_in;elsedata_out <= data_out;
end

  那么,采用时序逻辑实现,会导致延迟一怕,无法在有效信号valid的上升沿锁存数据,如下图所示。
在这里插入图片描述

  于是考虑使用组合逻辑进行实现,代码如下。

assign data_out = valid ? data_in : data_out;

  但是组合逻辑要实现保持状态,必然会产生锁存器。综合后会再Messages界面会警告出现锁存器,同时在Schematic中也可以看到出现了锁存器,如下图所示。而在我们的设计中,我们是不希望出现锁存器的,因为其不利于时序分析。

在这里插入图片描述
在这里插入图片描述

  那么,也可以采用组合逻辑+时序逻辑的方式实现,通过多使用一部分寄存器资源,来实现在valid上升沿处进行数据采样,且不产生锁存器,代码如下。重新综合后,可见锁存器消失,同时可以对齐进行仿真,时序符合前面的要求。

reg     [3:0]    r_data_in;always @(posedge sys_clk or negedge sys_rst_n)if(!sys_rst_n)r_data_in <= 'd0;elser_data_in <= data_in;assign data_out = valid ? data_in ? r_data_in;

在这里插入图片描述

http://www.dt0577.cn/news/35422.html

相关文章:

  • 苏州网站建设推广服务seo引擎搜索
  • 全球网站排名网站制作代码
  • 怎么样的网站合适做城市代理网站优化外包多少钱
  • 关于招聘的网站开发图互联网推广营销
  • 苍南县龙港哪里有做网站公司网站推广怎么做
  • 个人博客网站的设计与实现免费发布广告
  • 自己的网站怎么做美工重庆网站搜索排名
  • 做商品网站需要营业执照江门网站优化公司
  • 做网站需要域名还需要什么优化大师会员兑换码
  • 仿《爱美眉》网站 dede国内搜索网站排名
  • 网上做博彩网站代理赚钱吗百度网站官网入口
  • 软件公司宣传册设计样本厦门百度快照优化排名
  • 珠海做网站哪家最专业外贸企业网站推广
  • 深圳网站公司招聘b2b采购平台
  • 最专业微网站建设公司搜索网
  • 网站有哪些推荐产品网络推广深圳
  • 网站在线客服公众号怎么做快推广app下载
  • 使用阿里云做镜像网站网络营销师培训费用是多少
  • 网站备案授权书范本制作网站公司
  • 珠海建设网站的公司简介百度移动端排名软件
  • ftp网站模板世界球队最新排名
  • 中国物联网企业排名成都官网seo厂家
  • 网站费用单蚁坊软件舆情监测系统
  • phpwind 做企业网站百度页面推广
  • 做改网站信阳百度推广公司电话
  • 做排名的网站哪个好企业宣传方式
  • 网站建设与管理心得9 1短视频安装
  • 快速优化网站排名的方法大量微信群推广代发广告
  • 黑镜主题 wordpress网站推广优化教程
  • 长沙影楼网站建设优化绿松石什么意思