第四章 Verilog HDL行为语句
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
时钟等周期性波形。
(2)repeat:连续执行一条语句n次; (3)while:执行一条语句,直到某个条件不满足; (4)for:有条件的循环语句
芜湖职业技术学院
1. for语句
for语句使用格式: for(表达式1;表达式2;表达式3) 语句; 即: for(循环变量赋初值;循环结束条件;循环变量增 值) 执行语句;
芜湖职业技术学院
例如
芜湖职业技术学院
3. 条件语句使用要点
在使用条件语句时,应注意列出所有条件分支,否则,编译器认为条 件不满足时,会引起一个触发器保持原值。这一点可用于设计时序电路, 例如在计数器设计中,条件满足则加1,否则保持不变;而在组合电路设计 中,应避免这种隐含触发器的存在。当然,一般不可能列出所有分支,因 为每一变量至少有4种取值0、1、z、x。为包含所有分支,可在if语句最后 加上else;在case语句的最后加上default语句。
2. repeat语句
repeat语句的使用格式为:
repeat(循环次数表达式) 语句;
或repeat(循环次数表达式) begin ……
end
芜湖职业技术学院
3. while 和forever语句
While语句
while语句的使用格式如下: while(循环执行条件表达式)语句; 或 while(循环执行条件表达式)begin
本章概述
本章介绍 Verilog HDL 的行为语句,要充分 理解硬件描述语言和硬件电路的关系,熟练掌 握常用的行为语句,基本的行为语句就可以完 成绝大多数电路与系统设计,要对常用语句用 心专研、深入理解,对完成硬件电路设计将是 非常有用的。
芜湖职业技术学院
4.1 赋值语句
Verilog HDL赋值语句包括连续赋值语句和过程赋值语 句两种。
芜湖职业技术学院
阻塞赋值
阻塞赋值语句,从字面上理解,该条语句阻塞了下 面语句的执行,“=”用于阻塞的赋值,凡是在组合 逻辑(如在assign语句中)赋值的请用阻塞赋值。
非阻塞赋值
非阻塞赋值操作符用小于等于号(即<=)表示,只 能用于对寄存器类型变量进行赋值,因此只能用在 “initial ”和“always”等过程块中,不能用在 assign语句中。
芜湖职业技术学院 注意两个方面的问题: (1)连续赋值语句的执行是:只要右边表达式任一个变量有 变化,表达式立即被计算,计算的结果立即赋给左边信号。 (2)连续赋值语句之间是并行语句,因此与位置顺序无关。
2. 过程赋值语句
过程赋值语句多用于对 reg型变量进行赋值。过程赋 值有阻塞赋值和非阻塞赋值两种方式。阻塞语句是顺序 执行的,在该语句结束时就立即完成赋值,那么在前面 的语句没有完成之前,后面的就不能被执行,仿佛被阻 塞了一样,常用于组合逻辑电路设计中;而非阻塞语句 是同时执行的,在整个过程块结束时才完成赋值操作, 即被赋值的变量的值不是立刻就改变的,常用于时序逻 辑电路设计中。
设计者原意是设计一个二输 入与门,但因 if 语句中无 else 语句,在逻辑综合时会认为 else 语句为:“ c=c”, 即保持 不变,形成了一个隐含锁存 器。因此需要加一条语句:
else c=0;
芜湖职业技术学院
4.3 循环语句
在Verilog HDL中存在4种类型的循环语句,可用来控 制语句执行次数。这4种语句分别为: (1)forever :连续地执行语句,多用在“ initial” 块中,以生 成
注:在同一个进程块中,最好不要同时用阻塞赋值和非阻 塞赋值语句。
芜湖职业技术学院
4.2 条件语句
条件语句有 if-else 语句和 case 语句两种,它们都是 顺序语句,应放在always块内。
1. if-else语句
格式与C语言中的if-else语句类似,使用方法有三种:
(1)If(表达式) 语句1; (2)If(表达式) 语句1; else 语句2;
“表达式”一般为逻辑表 达式或关系表达式,也 可能是一位的变量。条 件表达式必须总是被括 起来的。对表达式的值 进行判断,若为0, x或z, 按“假”处理;若为 1 , 按“真”处理,执行指 定语句。
芜湖职业技术学院
2. case语句
相对于 if 语句只有两个分支而言, case 语句是一种多 分支语句,故case语句可用于多条件译码电路,如:描述 译码器、数据选择器、状态机及微处理器的指令译码等。 case语句的使用格式:
1. 连续赋值语句
连续赋值语句用于组合逻辑的建模。等式左边是wire类 型的变量,等式右边可以是常量,或是由运算符如逻辑运 算符、算术运算符参与的表达。例如, wire [3:0] Z, Preset, Clear; //线网说明 assign Z = Preset & Clear; //连续赋值语句
caBiblioteka Baidue (敏感表达式)
值1: 语句1;
值2: 语句2; ……
当敏感表达式的值为值 1时,执行语句1;为n时执 行语句 n; 如果敏感表达式 的值与列出的值都不相同 的话,则执行 default 后面 的语句。 建议 :case 的默认项必须写, 防止产生锁存器。
值n: 语句n;
default:语句n+1; endcase
芜湖职业技术学院
第4章 Verilog HDL行为语句
赋值语句(assign、=、<=) 条件语句(if-else、case) 循环语句(for、forever、repeat、while) 过程语句(initial、always) 块语句(begin-end、fork-join)
芜湖职业技术学院
(3)if(条件表达式1) 语句1; else if (条件表达式2) 语句2; else if (条件表达式3) 语句3; …… else 语句n;
芜湖职业技术学院 例如 if(Sum < 60) begin Grade = C; Total_C = Total _c + 1; end else if(Sum < 75) begin Grade = B; Total_B = Total_B + 1; end else begin Grade = A; Total_A = Total_A + 1; end