个人笔记。
Verilog语言的 case语句是以case(条件)开始,endcase结束,begin end作为()。
例:
reg [7:0] st;
always @(posedge i_clk or negedge nrst) begin//
if(!nrst)begin
st<= 16'h0001;
end
else begin
case(st)
16'h0001:begin
a<=b;
st<= 16'h0002;
end
16'h0002:begin
c<=a;
st<= 16'h0001;
end
endcase
end
end
也可用接收的数据作为条件,可以是数字、字母等,只需要发送相应的数据就可执行相应状态。
例:
wire [79:0] recvData; //接收值
reg [79:0] m;
always @(posedge i_clk or negedge nrst) begin//
if(!nrst)begin
m[79:0]<=0;
end
else
begin
case(recvData[8:0])
"1":m[7:0]<=8'h12345678;
"a":m[7:0]<=8'h12345678;
"A":m[7:0]<=8'h12345678;
endcase
end
end
C语言的switch case语句,以switch(条件)开头,case 加常量作为步骤,break作为跳出某一步。
例:
int main(void)
{ st=0;
while(1) //循环
{
switch(st)
{
case 0: a=b;
st=1;
break;
case 1: c=a;
st=0;
break;
}
}
}
通过上述例子可以看出Verilog语言与C语言的case语句实现的功能基本一样,只是表达的方式有所不同。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)