概述
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
最后
以上就是默默飞鸟为你收集整理的assign和always的用法的全部内容,希望文章能够帮你解决assign和always的用法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复