《夏宇闻 Verilog数字系统设计教程》读书笔记chapter IV——运算符、赋值语句和结构说明语句

4.1 逻辑运算符

  • 逻辑与&&
  • 逻辑或||
  • 逻辑非
    注:无论是逻辑运算、逻辑比较还是逻辑等式等逻辑操作一般发生在条件判断语句中,其输出只有1或0,即成立(真)或不成立(假)。

4.2 关系运算符

  • 小于<
  • 大于>
  • 小于或等于<=
  • 大于或等于>=
    在进行关系运算时,如果声明的关系是假的,则返回值为0,反之返回1;如果某个操作数的值不定,则关系是模糊的,返回值是不定值。

4.3 等式运算符

  • 等于==
  • 不等于!=
  • 等于==
  • 不等于!==

4.4 移位运算符

左移运算符<<和右移运算符>>都用0来填补移出的空位。

  • 4’b1001<<1 = 5’b10010; //左移1位后用0填补低位
  • 1<<6 = 32’b1000000; //左移6位后用000000填补低位
  • 4’b1001>>1 = 4’b0100;//右移1位后,低1位丢失,高1位用0填补
  • 4’b1001>>4 = 4’b0000; //右移4位后,低4位丢失,高4位用0填补
    存疑:为什么左移和右移运算符的运算规则不同?

4.5 位拼接运算符

使用方法:{信号1的某几位,信号2的某几位,…,…,信号n的某几位}

{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}

4.6 缩减运算符

其与或非的运算规则类似于位运算符的与或非规则,但运算过程不同。缩减运算是对单个操作数进行与或非递推运算,最后的运算结果是1位的二进制数。

reg[3:0]B;
reg C;
	C=&B;
	C=(B[0]&B[1]&B[2]&B[3]);

4.7 优先级别

4.8 关键词

是事先定义好的确认符,用来组织语言结构。用小写字母定义,使用时要注意书写。变量的定义不要与关键词冲突。

4.9 赋值语句和块语句

赋值语句

非阻塞(Non_Blocking)赋值<=

(1)在块语句中,上面语句所赋的变量值不能立即就为下面的语句所用;
(2)块结束后才能完成这次赋值操作,而所赋的变量值是上一次赋值得到的;
(3)在编写可综合的时序逻辑模块时,这是最常用的赋值方法。到目前为止,"always"模块内的reg信号都是采用非阻塞赋值方式。

always@(posedge clk)
	begin
		b<=a;
		c<=b;//赋值是在"always"块结束后执行的,C为原来b的值
	end

非阻塞赋值方式的“always”电路图

阻塞(blocking)赋值方式=

(1)赋值语句执行完后,块才结束;
(2)b的值在赋值语句执行完后立刻改变;
(3)在时序逻辑中使用时,可能会产生意想不到的结果。

块语句

顺序块和并行块

顺序块begin_end并行块fork_join
块内语句执行顺序顺序执行同时并行执行
延迟时间相对于前一条语句的执行时间而言相对于程序流程控制进入到块内的仿真时间(用来给赋值语句提供时序)
程序流程控制跳出该语句块的时刻最后一条语句执行完按时间时序排序在最后的语句执行完后/一个disable语句执行时

例:用顺序块和延迟控制组合产生一个时序波形↓

parameter d=50;
reg[7:0] r;
begin	//由一系列延迟产生的波形
	#d	r='h35;
	#d	r='hE2;
	#d	r='h00;
	#d	r='hF7;
	#d	-> end_ware;//触发事件end_ware
end

用并行块和延迟控制组合产生一个时序波形↓

begin	//由一系列延迟产生的波形
	#50	r='h35;
	#100	r='hE2;
	#150	r='h00;
	#200	r='hF7;
	#250	-> end_ware;//触发事件end_ware
end

块名

将名字加在begin或fork后面即可,原因如下:
(1)可以在块内定义局部变量;
(2)可以允许块被其他语句调用,如disable语句。
(3)在verilog语言里,所有的变量都是静态的,即所有的变量都只有一个唯一的存储地址,因此进入和跳出块并不影响存储在变量的值。
因此块名就提供了一个在任何仿真时刻确认变量值的方法。

起始时间和结束时间

顺序块begin_end并行块fork_join
起始时间第一条语句开始执行的时间最后一条语句执行完的时间
结束时间程序流程控制进入块的时间时间排序在最后的语句执行完的时间

在块的嵌入时,块的起始时间和结束时间是很重要的。只有在该块完全执行完后,后面的语句才会执行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值