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

天津网络推广网站建设公司非常酷的wordpress主题

天津网络推广网站建设公司,非常酷的wordpress主题,公司做网站的费用记什么科目,wordpress浏览量插件FPGA仿真中阻塞赋值和非阻塞赋值的区别 单独仿真小模块对但将小模块加入整个工程仿真不对就有可能是没有注意到仿真中阻塞赋值和非阻塞赋值的区别 目录 前言 一、简介 二、设计实例 三、仿真实例 1、仿真用非阻塞赋值 2、仿真用阻塞赋值 总结 前言 网上很多人介绍verilo…

FPGA仿真中阻塞赋值和非阻塞赋值的区别

单独仿真小模块对但将小模块加入整个工程仿真不对就有可能是没有注意到仿真中阻塞赋值和非阻塞赋值的区别

目录

前言

一、简介

二、设计实例

三、仿真实例

1、仿真用非阻塞赋值

2、仿真用阻塞赋值

总结


前言

        网上很多人介绍verilog语法中的阻塞赋值和非阻塞赋值几乎都是基于设计module介绍的,很少从testbench仿真module介绍。笔者在仿真的时候,尤记得老师说过仿真时用=和<=没区别,但其实区别很大,如果仿真时不加以区分,单独仿真小模块对但将小模块加入整个工程仿真不对的BUG就可能是仿真用错了赋值。本文将以一个具体的实例介绍testbench中的阻塞赋值和非阻塞赋值。


提示:以下是本篇文章正文内容。

一、简介

        在FPGA设计中,Verilog HDL中的阻塞赋值(Blocking Assignment)非阻塞赋值(Non-blocking Assignment)是两种不同的赋值方式,它们的行为和用途有显著区别,直接影响电路的时序逻辑和组合逻辑的实现。

1. 阻塞赋值(=)
        语法:变量 = 表达式;

执行方式:

        立即执行,赋值语句在当前仿真时间步中按顺序执行,后面的语句必须等待该赋值完成才能继续。

        类似于软件编程中的“顺序执行”。

用途:

        主要用于组合逻辑设计(如always @(*)块)。

        不适用于时序逻辑(可能导致仿真与硬件行为不一致)。

示例:

always @(*) begina = b;  // 阻塞赋值c = a;  // c的值会立即更新为b的值
end

执行后,c直接等于b(因为a = b先完成)。

2. 非阻塞赋值(<=)
        语法:变量 <= 表达式;

执行方式:

        延迟执行,所有非阻塞赋值在当前仿真时间步结束时同时更新。

        赋值操作不会阻塞后续语句的执行。

用途:

        主要用于时序逻辑设计(如always @(posedge clk)块)。

        避免竞争条件,确保寄存器行为正确。

示例:

always @(posedge clk) begina <= b;  // 非阻塞赋值c <= a;  // c获取的是a的旧值(更新前)
end

在时钟上升沿,a和c的更新是并行的:c得到的是a的旧值(非阻塞赋值的典型特征)。

二、设计实例

        设计模块代码如下,完成的是a+b*c的一个功能,假设操作延时都只有一个CLK,所以输入a进来打拍了一次。

module a_add_bmulc(input clk,input [7:0] a,input [3:0] b,input [3:0] c,output reg [8:0] result);reg [7:0] a_delay;
always @(posedge clk)
begina_delay<=a;
endreg [7:0] mul_result;
always @(posedge clk)
beginmul_result<=b*c;
endalways @(posedge clk)
beginresult<=a_delay+mul_result;
endendmodule

三、仿真实例

1、仿真用非阻塞赋值

        仿真时笔者首先使用非阻塞赋值。

initial
begin#(PERIOD*6) a<=1;b<=2;c<=3;#(PERIOD)   a<=4;b<=5;c<=6;#(PERIOD)   a<=0;b<=0;c<=0;#(PERIOD*10)$finish;
end

仿真结果如下:

        和预期相符合,a,b,c同时输入,先计算b*c,a进来先延迟了1个时钟周期,b*c的结果相对于输入b和c也有一个时钟周期的延时,result相对于输入a,b,c有2个时钟周期的延时。

2、仿真用阻塞赋值

        接下来仿真时笔者再改为阻塞赋值。

initial
begin#(PERIOD*6) a=1;b=2;c=3;#(PERIOD)   a=4;b=5;c=6;#(PERIOD)   a=0;b=0;c=0;#(PERIOD*10)$finish;
end

仿真结果如下:

        和预期不符,a_delay直接和a相等了,并没有延迟一个时钟周期,同样的,b*c的结果也没有延迟一个时钟周期,这和电路根本对应不上,但结果result却是对的。

        本文举的例子只是作为一个小模块来说明,实际工程远大于这个模块,如果仿真时不注意区分阻塞赋值和非阻塞赋值,就很有可能产生意想不到的错误噢。结论就是仿真时也尽量使用非阻塞赋值。


总结

        以上就是今天要记录的全部内容,本文介绍了FPGA仿真中阻塞赋值和非阻塞赋值的区别。


文章转载自:

http://XBOZHAD3.LqLfj.cn
http://TpB4U8qm.LqLfj.cn
http://JbixN7FY.LqLfj.cn
http://3fY6Ozuz.LqLfj.cn
http://8gXoRUwY.LqLfj.cn
http://pb2Gzauj.LqLfj.cn
http://rWRFVqRF.LqLfj.cn
http://lLwwfMMU.LqLfj.cn
http://9JlKT9Hl.LqLfj.cn
http://oYswVaWl.LqLfj.cn
http://X27xOWbo.LqLfj.cn
http://hSrQv4kR.LqLfj.cn
http://QTYnULd6.LqLfj.cn
http://NWc8xVMw.LqLfj.cn
http://QfHmxIm5.LqLfj.cn
http://oc1zd4YL.LqLfj.cn
http://n4ycIq2x.LqLfj.cn
http://L9cJPPsV.LqLfj.cn
http://a68Klft8.LqLfj.cn
http://ePcemBDX.LqLfj.cn
http://HX92FQDp.LqLfj.cn
http://jVW9g6YZ.LqLfj.cn
http://e5xH8efO.LqLfj.cn
http://lMnYoj6L.LqLfj.cn
http://Ejh74045.LqLfj.cn
http://n7ZsWhyZ.LqLfj.cn
http://Lo6VRZJw.LqLfj.cn
http://8uSQuPUH.LqLfj.cn
http://XsXhG2C3.LqLfj.cn
http://VnybwEJ5.LqLfj.cn
http://www.dtcms.com/wzjs/741563.html

相关文章:

  • 云南网站seo外包深圳市福田建设股份有限公司网站
  • 金华企业网站建设公司wordpress建站安全性
  • 百度普通版下载苏州企业网站优化
  • 广州网站托管网站开发工作前景
  • 广州网站制作实力乐云seoseo服务
  • php旅游网站开发的功能西安市免费做网站
  • 佛山企业网站建设机构企业培训平台
  • 网站开发需求方案海南网站建设报价方案
  • 台州网站制作注册公司没有地址怎么解决
  • 网站的稳定性广告投放怎么做
  • 高端公司网站设计传智播客php网站开发实例教程
  • 贵阳专业做网站的公司网站制作要用哪些软件
  • 网站设计怎么算侵权上海网站建设口碑最好的公司
  • 在北京大学生做家教的网站wordpress二维码 插件下载
  • 东莞网站建设基础简述企业网站建设的流程
  • 英文网站建设 潍坊中国建筑招聘网官网
  • 现代化专业群建设网站百度网址安全中心怎么关闭
  • 加强网站基础建设wordpress 图片中文名
  • 深圳专业网站做擦边球的网站
  • 宁波网站建设制作多少钱现在最火的推广平台有哪些
  • 云南手机网站建设做网站vs2012能不能做
  • 网站icp是什么意思清远医院网站建设方案
  • 网络存储上做网站wordpress 3.5 漏洞 xss
  • 花都建设网站大型网站建设哪家服务好
  • dedecms 招聘网站asp.net程序做的网站安全吗6
  • 网站诊断分析案例友情链接论坛
  • 建设邮费自己的网站_要不要购买服务器的app策划书模板范文
  • 门户网站主要包括哪些模块张家港网站建设
  • 怎么创建自己的网站平台镜像网站做优化
  • 网站正则表达式怎么做王野天葛优