assign和always的用法

assign的用法:
assign一般是显式的连续赋值。
assign是把输出结果放在前面,就是把输入值赋给输出。警惕:很容易把输入写在前面。

assign y=sel?a:b;//当sel是1时,y=a,否则y=b

assign是在endmodule之前,括号之外的,示例:

module top_module (
	input [15:0] in,
	output [7:0] out_hi,
	output [7:0] out_lo
);	
	assign out_hi = in[15:8];	
endmodule

注意:endmodule之前要有“

always的用法

always意思就是一直执行命令

always里面一定要用reg型变量

always里面有沿触发电平触发
语法:
1、 基础用法

always@()
[]

只有一个过程,可以不需要begin end

2、 搭配begin end使用

always@()
begin
	[]
end

需要begin end的情况:有多个过程

always经常搭配时钟信号
3、搭配case使用

always@(posedge clk)
begin
	case(status)
endcase

case中嵌套begin end

always@(*)
	case(sel)
		2'b00:
		begin
			d=4'd10;
		end
		
		2'b01:
		begin
			d=4'd01;
		end
	endcase

always@(*)是包含了沿触发电平触发

4、always和if搭配使用:

always@()
begin
	if()
		xx
	else 
	begin
		if()
			xx
		else 
			xx
	end
end//注意不能缺少end,end要begin对应
endmodule
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值