ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

《Verilog数字系统设计教程》-第四章知识点梳理

2022-03-01 20:31:22  阅读:170  来源: 互联网

标签:语句 知识点 教程 运算 操作数 运算符 Verilog 执行 赋值


第四章 运算符、赋值语句和结构说明语句
4.1逻辑运算符

在verilog HDL语言中存在3中逻辑运算符:
①&& 逻辑与;
②||逻辑或;
③!逻辑非。

逻辑运算符中“&.&.”和“”的优先级别低于关系运算符,“!”高于算术运算符。
为了提高程序的可读性,明确表达各运算符元间的优先关系,建议使用括号。

4.2 关系运算符
关系运算符共有以下四种:

在进行关系运算时,如果声明的关系是假的(flase),则返回值是0 ;如果声明的关系是真的(true),则返回值是1;如果某个操作数的值不定,则关系是模糊的,返回值是不定值。

4.3 等式运算符
在Verilog HDL语言中存在4种等式运算符:

这4个运算符都是双目运算符,它要求有两个操作数。“”和“!=”又称为逻辑等式运算符,其结果由两个操作数的值决定。由于操作数中某些位可能是不定值x和高阻值z,结果可能为不定值x。而“= ”和“!”运算符则不同,它在对操作数进行比较时对某些位的不定值x和高阻值z也进行比较,两个操作数必须完全一致,其结果才是1,否则为0。“=”和“!==”运算符常用于case表达式的判别,所以又称为“case等式运算符”。这4个等式运算符的优先级别是相同的。表4.2列出“.=”的真值表,帮助理解两者间的区别。

4.4 移位运算符
在Verilog HDL中有两种移位运算符:“<<”(左移位运算符)和“>>”(右移位运算符)。其使用方法如下:
a>>n或a<<n;
a代表要进行移位的操作数,n代表要移几位。这两种移位运算都用0来填补移出的空位。

4.5 拼接运算符
用这个运算符可以把两个或多个信号的某些位拼接起来进行运算操作。{}
{信号1的某几位,信号2的某几位,… ,…,信号n的某几位}

4.6 缩减运算符
缩减运算符(reduction operator)是单目运算符,也有与、或、非运算。缩减运算是对单个操作数进行或、与、非递推运算,最后的运算结果是1位的二进制数。
第一步先将操作数的第1位与第2位进行或、与、非运算;第二步将运算结果与第3位进行或、与、非运算,依次类推,直至最后1位。

4.7 优先级别

4.8 关键词

4.9 赋值语句和块语句
在verilog HDL语言中,信号有两种赋值方式:
①非阻塞(Non_Blocking)赋值方式(如b<=a ; )
(1)在语句块中,上面语句所赋的变量值不能立即就为下面的语句所用;
(2)块结束后才能完成这次赋值操作,而所赋的变量值是上一次赋值得到的;
(3)在编写可综合的时序逻辑模块时,这是最常用的赋值方法。
注意:非阻塞赋值符“<=”与小于等于符“<=”看起来是一样的,但意义完全不同,小于等于符是关系运算符,用于比较大小,而非阻塞赋值符用于赋值操作。

②阻塞( blocking)赋值方式(如b =a; )
(1)赋值语句执行完后,块才结束;
(2)b的值在赋值语句执行完后立刻就改变的;
(3)在时序逻辑中使用时,可能会产生意想不到的结果。
块语句通常用来将两条或多条语句组合在一起,使其在格式上看更像一条语句。块语句有两种:一种是begin_end语句,通常用来标识顺序执行的语句,用它来标识的块称为顺序块;另一种是fork_join语句,通常用来标识并行执行的语句,用它来标识的块称为并行块。下面进行详细的介绍。
1.顺序块
顺序块有以下特点:
(1)块内的语句是按顺序执行的,即只有上面一条语句执行完后下面的语句才能执行。(2)每条语句的延迟时间是相对于前一条语句的仿真时间而言的。
(3)直到最后一条语句执行完,程序流程控制才跳出该语句块。
2.并行块
并行块有以下4个特点:
(1)块内语句是同时执行的,即程序流程控制一进入到该并行块,块内语句则开始同时并行地执行。
(2)块内每条语句的延迟时间是相对于程序流程控制进人到块内的仿真时间的。(3)延迟时间是用来给赋值语句提供执行时序的。
(4)当按时间时序排序在最后的语句执行完后或一个disable语句执行时,程序流程控制跳出该程序块。
3.块名
在Verilg HDL语言中,可以给每个块取一个名字,只需将名字加在关键词begin或fork后面即可。这样做的原因有以下几点:
(1)可以在块内定义局部变量,即只在块内使用的变量。(2)可以允许块被其他语句调用,如 disable语句。
(3)在Verilog语言里,所有的变量都是静态的,即所有的变量都只有一个唯一的存储地址,因此进人或跳出块并不影响存储在变量内的值。
基于以上原因,块名就提供了一个在任何仿真时刻确认变量值的方法。
4. 起始时间和结束时间
在并行块和顺序块中都有一个起始时间和结束时间的概念。对于顺序块,起始时间就是第一条语句开始被执行的时间,结束时间就是最后一条语句执行完的时间。而对于并行块来说,起始时间对于块内所有的语句是相同的,即程序流程控制进入该块的时间,其结束时间是按时间排序在最后的语句执行结束的时间。
当一个块嵌人另一个块时,块的起始时间和结束时间是很重要的。
至于跟在块后面的语
句只有在该块的结束时间到了才开始执行。也就是说,只有该块完全执行完后,后面的语句才可以执行。

标签:语句,知识点,教程,运算,操作数,运算符,Verilog,执行,赋值
来源: https://blog.csdn.net/Lee5300/article/details/123215041

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有