马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
module Rank(clk,x_input,ra0,rb0,rc0,rd0,ra1,rb1,rc1,rd1);
input clk;
reg[3:0] state;
input [7:0] x_input;
output[7:0] ra0,rb0,rc0,rd0,ra1,rb1,rc1,rd1;
reg[7:0] va,vb,vc,vd;
reg[7:0] ra0,rb0,rc0,rd0,ra1,rb1,rc1,rd1;
parameter
IDLE0='d0,IDLE1='d1,IDLE2='d2,IDLE3='d3,A='d4,B='d5,C='d6,D='d7,E='d8;
always@(posedge clk)
casex(state)
IDLE0:begin
{va}={x_input};
state<=IDLE1;
end
IDLE1:begin
{vb}={x_input};
state<=IDLE2;
end
IDLE2:begin
{vc}={x_input};
state<=IDLE3;
end
IDLE3:begin
{vd}={x_input};
state<=A;
{ra0,rb0,rc0,rd0}={va,vb,vc,vd};
end
A:begin
sort2(va,vc);
state<=B;
end
B:begin
sort2(vb,vd);
state<=C;
end
C:begin
sort2(va,vb);
state<=D;
end
D:begin
sort2(vc,vd);
state<=E;
end
E:begin
sort2(vb,vc);
{ra1,rb1,rc1,rd1}={va,vb,vc,vd};
state<=IDLE0;
end
default:state<=IDLE0;
endcase
task sort2;
inout[7:0] x,y;
reg[7:0] tmp;
if(x>y)
begin
tmp=x;
x=y;
y=tmp;
end
endtask
endmodule
这是我在网络上看到的泡泡排序法程式码,但是身为新手的我实在看不懂,虽然我知道是用状态机写成但是他的写法跟书上看到的状态机写法不大相同。举个例来说
IDLE0:begin
{va}={x_input};
state<=IDLE1;
end
一般的状态机是用IF判断但是他并没有这么做
可以告诉我这段的意思是什么吗?
另外
A:begin
sort2(va,vc);
state<=B;
end
中的sort2(va,vc)是代表什么呢 |