Verilog学习笔记基本语法篇(六)········ 循环语句

在Verilog中存在着4种类型的循环语句,用来控制执行语句的执行次数。

1)forever语句: 连续执行的语句。

2)repeat语句:  连续执行n次的语句。

3)while语句:    执行语句,直至某个条件不满足。

4)for 语句:      三个部分,尽量少用或者不用for循环。

各语句的格式与注意事项:

1)forever格式:

forever   语句;

或:forever   begin 多条语句 end

常用于产生周期性的波形,用来作为仿真测试信号。它与always的不同之处是不能独立在程序中,必须写在initial块中。

2)repeat格式:

repeat(表达式)   语句;

或:repeat(表达式)   begin 多条语句 end

在repeat中,其表达式常为常量表达式。(可实现乘法器P60)

3)while格式:

while(表达式)   语句;

或:while(表达式)   begin 多条语句 end

4)for的格式:

for(表达式1;表达式2;表达式3)

语句;

执行过程与 c 语言中的for循环相同,注意表达式之间要用分号分割。

时间: 2024-12-20 04:29:28

Verilog学习笔记基本语法篇(六)········ 循环语句的相关文章

Verilog学习笔记基本语法篇(八)········ 结构说明语句

Verilog中的任何过程都可以属于以下四种结构的说明语句; 1) initial;  2) always;  3) task;   4) function; 1) initial说明语句: 一个程序中的 initial 和 always 的次数是不受限制的,他们都是在仿真的一开始同时开始运行的.initial 只执行一次,而 always语句则是不断地重复活动,直到仿真活动结束.但是always 后面的过程快是否运行,则要看他的触发条件是否满足,满足则运行一次,再满足再运行,直至仿真结束. 格

Verilog学习笔记基本语法篇(七)········ 生成块

生成块可以动态的生成Verilog代码.可以用于对矢量中的多个位进行重复操作.多个模块的实例引用的重复操作.根据参数确定程序中是否包含某段代码.生成语句可以控制变量的声明.任务和函数的调用.还能对实例引用进行全面的控制.在编程时,应用关键字generate_endgenerate来说明生成的实例范围. 生成实例可以是一下的以下一种或多种类型: 1)模块 :  2)用户定语原语 : 3)门级原语 :  4)连续赋值语句:   5)initial 和 always 块. 生成实例中语序的数据类型:

Verilog学习笔记基本语法篇(十二)········ 编译预处理

h Verilog HDL语言和C语言一样也提供编译预处理的功能.在Verilog中为了和一般的语句相区别,这些预处理语句以符号"`"开头,注意,这个字符位于主键盘的左上角,其对应的上键盘字符为"~",这个符号并不是单引号"'".这里简单介绍最常用的`define `include `timescale. 1)宏定义`define 用一个指定的标识符(名字)来代表一个字符串,其的一般形式为: `define 标识符(宏名) 字符串(宏内容) 如:

Verilog学习笔记基本语法篇(二)·········运算符

Verilog HDL的语言的运算符的范围很广,按照其功能大概可以分为以下几类: (1)算术运算符 +,-,*,/,% 优先顺序 !~ *  /   % +    - <<    >> <    <=  >   >= ==  !==  === !=== & ^  ^~ | && || ?: 最高优先级别 ↓ ↓ ↓ ↓ 最低优先级别 (2)赋值运算符 =,<= (3)关系运算符> ,<,>=,<= (4)

Swift学习笔记(语法篇)-- String与Character类型

一: String概述 不同于Objective-C中的NSString与NSMutableString,在Swift中,存储String类型的数据能否改变,取决于定义数据是var还是let,var是变量,能改变String的长度,增加,修改,删除其中的每一个字符等操作,而let是常量,一旦定义后就不能再修改其内容. Swift的String类型是值类型,如果你创建了一个新的String类型的数据,当它被赋值传递时会进行值拷贝,产生一个副本. 二:Character概述 String其实是作为一

ZMAN的学习笔记之Python篇:装饰器

年前工作事务比较繁琐,我只能用零碎的时间继续学习Python,决定开一个系列的博文,作为自己深入学习Python的记录吧.名字也取好了,就叫<ZMAN的学习笔记之Python篇>~开篇是关于装饰器的,春节假期码的字哈哈~就让我们开始吧! 本文的例子都是自己想的,如果不是很合适,请大家提出宝贵意见哈~谢谢啦! 一.为什么要用“装饰器” 比如我们写了如下一段代码: # 打印0~99 def func(): for i in range(100): print(i) 我们想要监测执行这个函数花费了多

现代C++学习笔记之一入门篇:智能指针(C++ 11)

原始指针:通过new建立的*指针 智能指针:通过智能指针关键字(unique_ptr, shared_ptr ,weak_ptr)建立的指针 在现代 C++ 编程中,标准库包含智能指针,该指针用于确保程序不存在内存和资源泄漏且是异常安全的. 在现代 C++ 中,原始指针仅用于范围有限的小代码块.循环或者性能至关重要且不会混淆所有权的 Helper 函数中. 1 void UseRawPointer() 2 { 3 // Using a raw pointer -- not recommended

设计模式学习笔记(目录篇)

设计模式学习笔记(目录篇) 为了方便查看,特此将设计模式学习笔记系列单独做一个目录. 1   设计模式学习笔记(一:命令模式) 2   设计模式学习笔记(二:观察者模式) 3   设计模式学习笔记(三:装饰模式) 4   设计模式学习笔记(四:策略模式) 5   设计模式学习笔记(五:适配器模式) 6   设计模式学习笔记(六:责任链模式) 7   设计模式学习笔记(七:外观模式) 8   设计模式学习笔记(八:迭代器模式) 9   设计模式学习笔记(九:中介者模式) 10  设计模式学习笔记(

嵌入式学习笔记008-裸奔篇之串口

串口是个好东西,前几篇裸奔程序由于没有串口,自己调试都是有led等来表示的,比较"苦逼",终于可以用串口了~~~,这里主要采用上一篇博文(嵌入式学习笔记007-裸奔篇之定时器),也就是串口也是用中断实现的,而且也只是在前一篇博文增加串口的初始化uart0_init(),以及在中断处理函数增加对串口的处理.只要稍微改造前一篇博文就是一个通用的中断处理程序! 这里主要实现在串口输入一个字符,接受后+2再发送到串口,所以在串口输入a 会返回c---. 由于code都有相应的注释,读者自行查看