关于always块内for循环的执行方式

//该模块主要用来说明for结构在时序逻辑中的执行方式
module for_test(input clk_1,nrst,output now_nine,nrst_pos,output reg[9:1] eq_dly
    );
    integer i;
    parameter eq=1‘b1;
 always @(posedge clk_1 or negedge nrst)
    begin
      if (!nrst)
           for (i=1; i<=9; i=i+1)
               eq_dly[i] <= 0;
       else
         begin
           eq_dly[1] <= eq;
          for (i=1; i<9; i=i+1)  //说明了整个 eq_dly[9:1]=9‘b111111111;并不是一个时钟周期就完成了赋值。而是经过个九个时钟沿!!!!
               eq_dly[i+1] <= eq_dly[i];
         end
    end      

     assign now_nine = !(&(eq_dly));
     assign nrst_pos = !(eq && now_nine); 

endmodule

波形文件如下:

原文地址:https://www.cnblogs.com/shaonianpi/p/9432226.html

时间: 2024-10-15 15:50:57

关于always块内for循环的执行方式的相关文章

Firefox 对条件判断语句块内的函数声明的处理与其他浏览器有差异

标准参考 函数声明和函数表达式 定义一个函数有两种途径:函数声明和函数表达式. 函数声明: function Identifier ( FormalParameterList opt ) { FunctionBody } 函数表达式: function Identifier opt ( FormalParameterList opt ) { FunctionBody } ECMAScript 根据上下文来区分函数声明和函数表达式,假设 "function test(){}" 是一个表达

C++在循环内和循环外定义变量的差异(如何写出高效的for循环)

写这篇文章的原因是我在问答平台看到的一个问题: C++内层循环中定义变量和在外面定义比影响大吗? 问题来自:http://ask.csdn.net/questions/176270 例如: for(int i=0;i<999;i++) { for(int j=0;j<999;j++); } 内层循环每次都定义j会造成多大的消耗呢? 此处我给出的回答是: 这个需要看你具体用什么编译器.不过主流编译器(如vs和gcc)这一块优化都比较好,不会反复分配变量. 看到答案和评论,好像有很多人对这个感兴趣

(转载)你好,C++(23) 4.4.2 工资程序成长记:用数组处理批量数据,用循环结构执行重复动作

你好,C++(23) 4.4.2 工资程序成长记:用数组处理批量数据,用循环结构执行重复动作 4.4  从语句到程序 了解了各种表达式和语句之后,就相当于掌握了写作文要用到的词语和句子,但是,仅有词语和句子是无法构成一篇有意义的文章的.要完成一篇文章,先需要确定这篇文章的结构,是先分述再总述,还是逐层递进论述.定好结构后再按照结构的要求将词语和句子安排到合适的位置,这样才能写出一篇有意义的词句通顺的文章.编写程序就像写文章一样,也同样需要先根据需要处理的事务确定程序的流程控制结构,然后再将那些零

你好,C++(23) 4.4.2 工资程序成长记:用数组处理批量数据,用循环结构执行重复动作

4.4  从语句到程序 了解了各种表达式和语句之后,就相当于掌握了写作文要用到的词语和句子,但是,仅有词语和句子是无法构成一篇有意义的文章的.要完成一篇文章,先需要确定这篇文章的结构,是先分述再总述,还是逐层递进论述.定好结构后再按照结构的要求将词语和句子安排到合适的位置,这样才能写出一篇有意义的词句通顺的文章.编写程序就像写文章一样,也同样需要先根据需要处理的事务确定程序的流程控制结构,然后再将那些零散的语句串联起来描述一个完整的处理事务的过程,从而将多条零散的语句组织成可以完成一定功能的完整

Python学习[day2]while循环以及执行流程、格式化输出、运算符

1. while循环 while 条件: 代码块(循环体) 执行流程: 1. 判断条件是否为真. 如果真. 执行代码块 2. 再次判断条件是否为真...... 3. 当条件为假.执行else 跳出循环. 循环结束 列举几个简单的while循环的例子: (1):求1~100以内所以数的和: num = 1 sum = 0 while  num <= 100: sum = sum + num num += 1 print(sum) (2):求1-2+3-4.......99的所以数的和: num =

循环的执行过程、适用情况和常见错误

循环有3种循环--while循环.for循环.do...while循环.下面分别介绍各个循环的执行过程和适用情况. 1.while循环 (1)适合情况:适合不需要一个新的变量来控制循环是否停止. (2)执行过程:先判断while后面紧跟的括号内的条件是否为真(一般为非0值),为真时执行循环体,一直到条件为假时不执行循环体,直接跳到while循环体后面的代码. (3)常见错误:循环体不改变条件变量的值或循环体无break语句或return语句(continue语句不能跳出循环)时称为死循环,永远也

块内元素和内联元素

块内元素特征: 1.默认独占一行 2.支持所有的CSS属性 内联元素特征: 1.宽高由内容撑开 2.不支持宽高设置 3.一行可以显示多个同类标签 4.不支持上下的margin 5.代码换行被解析 display: inLine-block{ 1.让块在一排显示 2.内联元素支持宽度 3.默认内容撑起宽度 }

java循环练习:由输入的值决定循环的执行次数,循环变量默认从1开始

package practiceGO; import java.util.Scanner; /*   3.由输入的值决定循环的执行次数,循环变量默认从1开始  */ public class Cto { public static void main(String[] args) { Scanner sc = new Scanner(System .in); System.out.println("请输入循环次数:"); int time = sc.nextInt(); for(int

助教:C语言问题收集--scanf()的一些常见问题;switch语句;for循环的执行顺序

scanf函数中的"格式控制"后面应当是变量地址,而不应是变量名. 输入数据时不能规定精度. scanf("%7.2f",&a).这是不合法的.但是,scanf("%3d%3d",&a,&b)这样写可以. 如果在"格式控制"字符串中除了格式说明以外还有其他字符,则在输入数据时在对应位置应输入与这些字符相同的字符. scanf("%d,%d,%d",&a,&b,&