首先明确一个事实

always@(posedge clk)中的任务没有执行完的情况下是不会在下一个时钟上升沿到来的时候再次重复执行的

再明确另一个事实 在前面不带always的情况下,@(posedge)仅会按顺序执行一次。

task shift_in;
output [7:0] shift;
begin
@ (posedge scl) shift[7] = sda;
@ (posedge scl) shift[6] = sda;
@ (posedge scl) shift[5] = sda;
@ (posedge scl) shift[4] = sda;
@ (posedge scl) shift[3] = sda;
@ (posedge scl) shift[2] = sda;
@ (posedge scl) shift[1] = sda;
@ (posedge scl) shift[0] = sda;
@ (negedge scl)
begin
#`timeslice ;
out_flag = 1; //应答信号输出
sda_buf = 0;
end
@(negedge scl)
#`timeslice out_flag = 0;
end
endtask

上段代码中每一次时钟上升沿到来仅会按顺序执行一行。

如果在一个always语句中嵌套如上task的时候,必须等待task执行完,always语句才会执行完,才能敏感下一次时钟信号再次执行always。

而always语句中的task任务会依次等待8次上升沿和一次下降沿后才会执行完。而此期间的时钟变化不会重复执行always语句。

verilog中关于always语句嵌套task执行顺序和@(posedge clk)执行方式的问题相关推荐

  1. (64)FPGA面试题-在Verilog中,$display语句可以使用哪些不同的选项?

    1.1 FPGA面试题-在Verilog中,$display语句可以使用哪些不同的选项? 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-在Verilog ...

  2. 关于Verilog中begin···end语句执行顺序

    Verilog中分阻塞赋值和非阻塞赋值两种,组合逻辑多用阻塞赋值,此时使用begin···end语句,将一条执行完再执行下一句,即顺序执行. 而时序逻辑多是并行执行,多用非阻塞赋值,begin···e ...

  3. verilog中的initial语句

    首先说说结构化过程语句,在verilog中有两种结构化的过程语句:initial语句和always语句,他们是行为级建模的两种基本语句.其他所有的行为语句只能出现在这两种语句里 与C语言不通,veri ...

  4. Verilog中的条件编译语句 `ifdef、`else、`endif 等

    今天在参考大佬的RS232 Receiver的时候,用到了`ifdef指令,我虽知道它是条件编译指令,但是内容已经忘了差不多了,也不敢胡乱猜测.今天趁此机会总结一下: 一般情况下,Verilog HD ...

  5. Verilog中关于case语句的优先级

    对于这样的组合逻辑电路 always@(X) case(X) X1: X2: -- endcase 如果分支项包含变量X的所有取值情况,并且互相不重复,那么这样的情况,其实没有必要使用综合指令. (一 ...

  6. 关于Verilog 中的for语句的探讨

    在C语言中,经常用到for循环语句,但在硬件描述语言中for语句的使用较C语言等软件描述语言有较大的区别. 在Verilog中除了在Testbench(仿真测试激励)中使用for循环语句外,在Test ...

  7. verilog 中if....else语句以及case语句详细理解

    1.if else: (1)if(表达式)语句: (2)if(表达式) 语句一else语句二 (3)if(表达式1) 语句一:else if(表达式2) 语句2:else if(表达式3) 语句3:e ...

  8. Verilog中if- else if语句和case语句用法:

    一.if语句: 1.两种情况 if(条件语句)begin-- end else begin-- end 2.多种情况 if(条件语句)begin-- end else if(条件语句)begin-- ...

  9. java 类的执行顺序_Java中类的执行顺序

    讲解在代码中: package 类执行顺序; /** * java类执行顺序 * * 1.如果父类有静态成员赋值或者静态初始化块,执行静态成员赋值和静态初始化块 * 2.如果类有静态成员赋值或者静态初 ...

最新文章

  1. AI大咖山世光:AlphaGo Zero的成功并不能复制到人脸识别!
  2. python中字典的练习
  3. android EnMicroMsg.db安卓微信数据库获得密码的源码
  4. sqlite developer注册方法
  5. java异常顺序_网易新闻
  6. golang中container/list包中的坑
  7. hdu 5584 gcd/lcm/数学公式
  8. 常见的一些正则表达式!
  9. ps,pr ,ae,dw等软件简短解析(含安装包)
  10. [笔记]光照系统 实时GI、烘焙GI
  11. 项目的成功标准如何衡量?【一杯咖啡谈项目】
  12. crmeb多商户公测版发布
  13. JAVA医护人员排班系统计算机毕业设计Mybatis+系统+数据库+调试部署
  14. 微信域名防封技术,微信域名总是被屏蔽要怎么解决
  15. pthon之异常、文件练习题
  16. 企立方:拼多多商家运营思路
  17. 电影剪辑属性详解-Flash-网页制作
  18. Python获取12306网站车次
  19. LBM方法中的绝热边界实现形式个人总结
  20. 图片qq浏览器不显示,微信显示问题原因

热门文章

  1. 朴素贝叶斯 php,PHP实现机器学习之朴素贝叶斯算法详解.pdf
  2. JAVASE基础模块三十五( 线程 线程创建的第一种方法 以及线程的一些方法)
  3. 线程池动态调整线程数
  4. IMSI与MSISDN
  5. 网格聚类 Grid Clustering/Grid-based Clustering
  6. 相寻梦里路,飞雨落花中
  7. 清理eclipse中得缓存
  8. 企业网站推广经验分享
  9. Windows8,为荣誉而战
  10. 江小白只用了一招就人众皆知,你觉得神奇,只是你不了解!