Verilog_Day2_Plus
内容为书中第4章
等式运算符
“==” 与 “===” 的区别
Verilog中存在4种等式运算符:
- == (等于);
- != (不等于);
- === (等于);
- !== (不等于)。
“==”与"==="的异同。
“==” 在操作数的某些位是不定值x或高阻值z时,结果可能为不定值;
“===”也对x和z进行比较,只有两个操作数完全一致时,输出1,否则输出0.
等式运算符的真值
| == | 0 | 1 | x | z |
| 0 | 1 | 0 | x | x |
| 1 | 0 | 1 | x | x |
| x | x | x | x | x |
| z | x | x | x | x |
| === | 0 | 1 | x | z |
| 0 | 1 | 0 | 0 | 0 |
| 1 | 0 | 1 | 0 | 0 |
| x | 0 | 0 | 1 | 0 |
| z | 0 | 0 | 0 | 1 |
在“===”表达式种,输出只可能是 1 或者 0 。在“==”表达式中,输出可能是 0、1或 x 中的一种。
使用移位运算符 “>>”和"<<"的一点注意事项
要注意移位前后变量的位数。
eg: (1) 4'b1001<<1 = 5'b10010 (2) 4'b1001<<2 = 6'b100100 (3) 1<<6 = 32'b1000000...
(4) 4’b1001>>1 = 4'b0100 (5) 4'b1001>>4 = 4'b0000
可以看出在右移过程中,会改变移位以后的值的位数。但是如果事先声明了存储值的变量的长度。则右移位后的位数仍然为声明的位数。如(3)中,由于系统默认32位。相当于预先声明数据长度是32位,则移位后仍然为32位。
位拼接运算符{}
位拼接运算符 “{}” 可以把两个或多个信号的某些位拼接起来进行位运算。
{信号1的某几位,信号2的某几位.....} eg: {a,b[3:0],w,3'b101} 也等于 {a,b[3],b[2],b[1],b[0],w,1'b1,1'b0,1'b1}
{4{w}} 等于 {w,w,w,w}
{b,{3{a,b}}} 等于 {b,a,b,a,b,a,b}
书中P22上方代码就运用了位拼接运算符。
缩减运算符
缩减运算的与、或、非计算是对单个操作数进行或、与、非递推运算。最后结果是1位的二进制数。
缩减运算的具体过程为:第一步先将操作数的第一位与第二位进行或、与、非运算;第二步将运算结果与第三位进行或、与、非运算,依次类推,直至最后1位。
reg [:] B;
reg C;
C=&B;
类似于:
C = ((B[]&B[])&B[])&B[];
问题1:在缩减运算符中,如何进行 非 的运算?
回答:

在缩减(归约)运算符中,只有上面的6种运算符,没有 ~ 运算符。书中有误。参考:(1)http://blog.sina.com.cn/s/blog_88c9ddc5010182mj.html
(2)http://forum.eepw.com.cn/thread/182573/1
赋值语句
非阻塞赋值(b<=a)
非阻塞赋值语句只有当块语句结束后才能完成这次赋值操作;在编写可综合的时序逻辑模块时,常用非阻塞赋值。
阻塞赋值(b=a)
赋值语句执行结束后,块采结束。
例子分析:
always @(posedge clk)
begin
b<=a;
c<=b;
end
在上面例子中使用了非阻塞赋值方法。那么当块语句块执行结束后,才会执行3,4行赋值代码。又因为verilog在块外是并行执行。所以最后结果是,把原来a的值赋给b,同时将原来b的值赋给c(因为并行执行,在将b的值赋给c时,b的值没有更新。)。
问题2:这里面的 “块”是指的begin-end块还是always块?
块语句
快语句有两种: 1:begin_end : 标识顺序执行语句; 2 :fork_join : 用来标识并行执行语句。
在begin-end语句块中,begin-end和fork-join块可以相互嵌套,也可以自我嵌套。如果begin-end中包含有局部声明,则他必须被命名(必须有一个标志)。如果要禁止一个begin-end块,那么被禁止(disasble语句)的begin-end必须有名字。
取块名: begin:块名 fork: 块名 注意:有冒号 :
在Veriloog语言中,所有的变量都是静态的,所有的变量都只有一个唯一的存储地址,因此进入或跳出块并不影响存储在变量内的值。
块名可以允许被其他的语句调用,也可以通过层次名进行调用; 问题2:块名的具体使用方法?,块的嵌套运行时间顺序?
Verilog_Day2_Plus的更多相关文章
随机推荐
- 【Python】Java程序员学习Python(四)— 内置方法和内置变量
<假如爱有天意> 当天边那颗星出现,你可知我又开始想念,有多少爱恋只能遥遥相望,就像月光洒向海面,年少的我们曾以为,相爱的人就能到永远,当我们相信情到深处在一起,听不见风中的叹息,谁知道爱 ...
- Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli; then appstreamcli refresh > /dev/null; fi'
运行sudo apt-get update 时Ubuntu 16.04出现: Problem executing scripts APT::Update::Post-Invoke-Success 'i ...
- KT_登录_流程图
一.需求 关于系统登录功能,需求如下:1.登录需要输入用户名.密码2.如果连续密码输入错误4次,则自动锁定账号5分钟(也就是说5分钟之内不能再登录) 请根据以上需求,画一个登录操作流程图 二.绘图 版 ...
- Oracle特殊恢复原理与实战(DSI系列)
1.深入浅出Oracle(DSI系列Ⅰ) 2.Oracle特殊恢复原理与实战(DSI系列Ⅱ) 3.Oracle SQL Tuning(DSI系列Ⅲ)即将开设 4.Oracle DB Performan ...
- shell命令工作总结
shell命令工作总结: 1.sed命令:1.1.将文本input.txt中含有”姓名”字符串的行中的谢朝辉替换成扎巴依:sed -e '/姓名/s/谢朝辉/扎巴依/g' input.txt1.2.将 ...
- mysql数据库配置文件
一.数据库配置文件 数据库配置文件是很一个很强大的功能,这是数据库管理员经常需要关注的配置文件. my.ini #这是在windows下的配置文件名称. my.conf #这是在linux下的配置 ...
- 使用 FRP 反向代理实现 Windows 远程连接
互联网普及率的日渐攀升与 IPv4 资源的持续减少,现在大部分家庭宽带都不会分配公网 IP ,这使一些网络应用的实现多了些困难,像个人的 NAS 和一些智能家居设备.对于分配公网 IP ,各地运营商的 ...
- Java8新特性 -- Lambda 方法引用和构造器引用
一. 方法引用: 若Lambda体中的内容有方法已经实现了,我们可以使用“方法引用” 要求 方法的参数和返回值类型 和 函数式接口中的参数类型和返回值类型保持一致. 主要有三种语法格式: 对象 :: ...
- Sublime Text 3中文乱码
Sublime Text 3是很好的代码编辑器,没有之一,因为她的性感高亮代码配色,更因为它的小巧,但是它默认不支持GBK的编码格式,因此打开GBK的代码文件,如果里面有中文的话,就会乱码,如下所示: ...
- 1.6 Navigating This Book(本书导航)
1.6 Navigating This Book(本书导航) 如果之前没有接触过Python,那么你应该在第2章和第3章多花一些时间.这两章介绍了Python语言的特性和IPython shell以及 ...