verilog阻塞与非阻塞的初步理解(一)
通过两个模块来区别两者。测试平台:Modelsim altera 6.5b
阻塞模块:
- module blocking(clk,a,b,c);
- input[:] a;
- input clk;
- output[:] b,c;
- reg[:] b,c;
- always @(posedge clk)
- begin
- b=a;
- c=b;
- $display("blocking:a=%d,b=%d,c=%d.",a,b,c);
- end
- endmodule
非阻塞模块:
- module non_blocking(clk,a,b,c);
- input[:] a;
- input clk;
- output[:] b,c;
- reg[:] b,c;
- always @(posedge clk)
- begin
- b<=a;
- c<=b;
- $display("non_blocking:a=%d,b=%d,c=%d.",a,b,c);
- end
- endmodule
顶层测试模块:
- `timescale 1ns/100ps
- `include"blocking.v"
- `include"non_blocking.v"
- module top_blocking;
- wire[:] b1,c1,b2,c2;
- reg[:] a;
- reg clk;
- initial
- begin
- clk=;
- forever # clk=~clk;
- end
- initial
- begin
- a='h3;
- $display("________________");
- # a='d7;
- $display("________________");
- # a='d15;
- $display("________________");
- # a='d10;
- $display("________________");
- # a='d2;
- $display("________________");
- # $display("________________");
- $stop;
- end
- non_blocking non_bloking1(clk,a,b2,c2);
- blocking blocking1(clk,a,b1,c1);
- endmodule
运行仿真后结果:
# ________________
# blocking:a= 3,b= 3,c= 3.
# non_blocking:a= 3,b= x,c= x.
# ________________
# blocking:a= 7,b= 7,c= 7.
# non_blocking:a= 7,b= 3,c= x.
# ________________
# blocking:a=15,b=15,c=15.
# non_blocking:a=15,b= 7,c= 3.
# ________________
# blocking:a=10,b=10,c=10.
# non_blocking:a=10,b=15,c= 7.
# ________________
# blocking:a= 2,b= 2,c= 2.
# non_blocking:a= 2,b=10,c=15.
# ________________
可以得出结论:
1,阻塞情况下,display显示的值c=b=a。这说明阻塞赋值是实时更新的。当赋值语句完成后,下一个语句开始,赋值语句的左值就已经发生了变化。
2,非阻塞情况下,display显示的值,b为上一个周期a的值,c为上一个周期b的值。这说明赋值操作是在display语句之后完成的。
verilog阻塞与非阻塞的初步理解(一)的更多相关文章
- Verilog中的阻塞与非阻塞
这篇文档值得阅读 按说阻塞与非阻塞是Verilog中最基本的东西,也是老生常谈.但是最近看到很多程序里用到阻塞语句竟然不是很明白,说到底是从来没有自己仔细分析过.当然一般情况程序中也是推荐用非阻塞的. ...
- JS异步解决方案之概念理解-----------阻塞和非阻塞,同步和异步,并发和并行,单线程和多线程
首先记住一句话,JS是单线程的. 单线程意味着什么?单线程意味着 它不能依靠自己实现异步. JS实现的异步,往往都是靠 浏览器.Node 的机制(事件驱动.回调)实现的. 下面让我这个单身狗 以谈恋爱 ...
- NIO学习笔记,从Linux IO演化模型到Netty—— 究竟如何理解同步、异步、阻塞、非阻塞
我的观点 首先,分开各自理解. 1. 同步:描述两个(或者多个)个体之间的协调关系. 比如,单线程中,methodA调用了methodB,methodB返回后,methodA才往下执行,那么称A同步调 ...
- node.js中对同步,异步,阻塞与非阻塞的理解
我们都知道javascript是单线程的,node.js是一个基于Chrome V8 引擎的 javascript 运行时环境,注意 node.js 不是一门语言,别搞错了. javascript为什 ...
- 正确理解这四个重要且容易混乱的知识点:异步,同步,阻塞,非阻塞,5种IO模型
本文讨论的背景是Linux环境下的network IO,同步IO和异步IO,阻塞IO和非阻塞IO分别是什么 概念说明 在进行解释之前,首先要说明几个概念: - 用户空间和内核空间 - 进程切换 - 进 ...
- 简述linux同步与异步、阻塞与非阻塞概念以及五种IO模型
1.概念剖析 相信很多从事linux后台开发工作的都接触过同步&异步.阻塞&非阻塞这样的概念,也相信都曾经产生过误解,比如认为同步就是阻塞.异步就是非阻塞,下面我们先剖析下这几个概念分 ...
- 网络IO之阻塞、非阻塞、同步、异步总结
网络IO之阻塞.非阻塞.同步.异步总结 1.前言 在网络编程中,阻塞.非阻塞.同步.异步经常被提到.unix网络编程第一卷第六章专门讨论五种不同的IO模型,Stevens讲的非常详细,我记得去年看第一 ...
- socket阻塞与非阻塞,同步与异步、I/O模型,select与poll、epoll比较
1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式: 同步/异步主要针对C端: 同步: 所谓同步,就 ...
- socket阻塞与非阻塞,同步与异步
socket阻塞与非阻塞,同步与异步 作者:huangguisu 转自:http://blog.csdn.net/hguisu/article/details/7453390 1. 概念理解 在进行网 ...
- IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)
IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇) 当你发现自己最受欢迎的一篇blog其实大错特错时,这绝对不是一件让人愉悦的事. <IO - 同步,异步,阻塞,非阻塞 >是我在开始学习e ...
随机推荐
- UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别
继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系:在Java中此类关系通过关键字extend ...
- linux如何查看系统占用磁盘空间最大的文件及让文件按大小排序
[root@localhost web_bak] find / -type f -size +10G在Linux下如何让文件让按大小单位为M,G等易读格式,S size大小排序. [root@loc ...
- ThreadLocal详解(实现多线程同步访问变量)
ThreadLocal翻译成中文比较准确的叫法应该是:线程局部变量. 这个玩意有什么用处,或者说为什么要有这么一个东东?先解释一下,在并发编程的时候,成员变量如果不做任何处理其实是线程不安全的,各个线 ...
- bzoj2959: 长跑
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...
- Android数据存储-通过SharedPreferences实现记住密码的操作
在Android中登陆中,为了实现用户的方便,往往需要根据用户的需要进行记住密码的操作,所以,在Android数据存储中SharedPreferences恰恰可以实现这一点 下面,小编将带领大家通过S ...
- uva11426 gcd、欧拉函数
题意:给出N,求所有满足i<j<=N的gcd(i,j)之和 这题去年做过一次... 设f(n)=gcd(1,n)+gcd(2,n)+......+gcd(n-1,n),那么answer=S ...
- UVa1636 Headshot
数据结构学得心累,做点小题换心情 原题是PDF格式查看的,贴过来好麻烦,果断放弃 已知前一次尝试结果是0,则可以得知: 下一次若仍是0,则遇到了一个00串 下一次若是1,则遇到了一个01串 SHOOT ...
- ubuntu 设置 NAT 转发
针对需求: 嵌入式开发中,经常使用板子和笔记本通过网线直连,如果需要板子连接到外网,就比较尴尬. 最简单方法,可以把板子接到局域网内,我们的笔记本通过局域网交换机连接到板子,可是,这样要很多修改 IP ...
- Linux 下的常用工具
Useful Linux Utilities (This article is under constant construction) ssh 相关文章 How To Change OpenSSH ...
- soapUI使用-DataSource获取oracle库中的参数
soapUI使用-DataSource获取oracle库中的参数 下载mysql和oracle驱动包:http://pan.baidu.com/s/1i3sy1MH 放在Program Files\S ...