[Verilog][初学]语法基础(5)结构语句、赋值语句、条件语句

做一些关于Verilog的简要笔记,方便日后快速复习,如有错漏希望您能够不吝赐教

1. 结构语句
initial语句在模块中只执行一次,常用于产生测试信号,或者赋初值

initial begin
	sys_clk			<= 1'b0;
	sys_rst_n		<= 1'b0;
	#20	sys_rst_n	<= 1'b1;	//延时20ns后执行
	#20	sys_rst_n	<= 1'b0;	//再延时20ns后执行
end

always语句在模块中一直不断地重复活动,由敏感列表中的边沿或电平判断块是否执行,列表中的每个条件用or连接。
边沿触发用于描述时序逻辑,电平触发用于描述组合逻辑。
组合逻辑:任何时候输出仅取决于该时刻的输入
时序逻辑:输出取决于当前输入以及电路原本的状态,即具备记忆能力

always @(a or b or c or d or e)begin
	out = a ? (b+c) : (d+e);
end
//或者如下表达,@(*)表示对语句块内所有输入变量敏感
always @(*)begin
	out = a ? (b+c) : (d+e);
end

2. 赋值语句
阻塞赋值b=a
在同一个always块中,后面的赋值语句是在前一个赋值语句结束后才开始赋值的。
表述组合逻辑
非阻塞赋值b<=a
在计算非阻塞赋值语句的RHS以及更新LHS期间,允许其他非阻塞赋值语句同时计算RHS和更新LHS。(RHS——right_hand_side)
只能用于initial和always等过程块中对寄存器类型(register)的变量进行赋值。
表述时序逻辑,仅在跳变沿时发生变量赋值。

注意:不要在一个块中同时使用两种赋值方式。且一个变量只能在一个always块中被赋值。

3. 条件语句
只能在过程语句块中使用,如initial、always
if_else
可以进行嵌套,也可以用if(a)begin....end来包含多个语句。
且 0、x、z按照假处理
case
分支表达式值需要互不相同
表达式的位宽需要相等
casez不考虑z
casex不考虑z和x
如下举例:

reg [7:0] sel;
casez(sel)
	8'b1100_zzzz : 语句1;
	8'b1100_xxzz : 语句2;
	default		 : 语句3;
endcase
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值