初级会员
- 积分
- 79
- 金钱
- 79
- 注册时间
- 2018-10-18
- 在线时间
- 15 小时
|
1金钱
module encoder(clk,rst_n,a_in,b_in,count,dire);
input clk;
input rst_n;
input a_in;
input b_in;
output reg [15:0] count;
output reg dire;
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)begin
cp<=1'b0;
end
else begin
state[1]<=a_in;
state[0]<=b_in;
prestate<=state;
if((prestate==2'b00)&&(state==2'b10))begin
cp<=1'b1;dire<=1'b1;
end
else if((prestate==2'b10)&&(state==2'b11))begin
cp<=1'b1;dire<=1'b1;
end
else if((prestate==2'b11)&&(state==2'b01))begin
cp<=1'b1;dire<=1'b1;
end
else if((prestate==2'b01)&&(state==2'b00))begin
cp<=1'b1;dire<=1'b1;
end
else if((prestate==2'b00)&&(state==2'b01))begin
cp<=1'b1;dire<=1'b0;
end
else if((prestate==2'b01)&&(state==2'b11))begin
cp<=1'b1;dire<=1'b0;
end
else if((prestate==2'b11)&&(state==2'b10))begin
cp<=1'b1;dire<=1'b0;
end
else if((prestate==2'b10)&&(state==2'b00))begin
cp<=1'b1;dire<=1'b0;
end
else
begin
cp<=1'b0;
end
end
end
always@(cp or rst_n)
if(!rst_n)begin
count<=16'd0;
end
else if(cp==1'b1)begin
count<=count+1'b1;
end
endmodule
先不管方向,这种应该没错吧
|
|