gấp lắm ạ... sắp tới em sắp phải nộp bài tập ạ.. em làm bài tập là đếm số từ 00-10 bằng nút bấm. em có đọc qua và sử dụng state machines ạ
em viết như sau :
module TKMS(clk,rst,x,led1,led2);
input clk,x,rst;
output [6:0] led1,led2;
reg [6:0] led1,led2;
parameter state00=00,state01=01,state02=02,state03=03,state0 4=04,state05=05,state06=06,state07=07,state08=08,s tate09=09,state10=10;
reg [1:0] state,nxt_state;
always @(state)
begin
case(state)
state00: begin
if(x) nxt_state=state01;
else nxt_state=00;
end
01: begin
if (x) nxt_state=state02;
end
02: begin
if(x) nxt_state=state03;
end
03: begin
if(x) nxt_state=state04;
end
04: begin
if(x) nxt_state=state05;
end
05: begin
if(x) nxt_state=state06;
end
06: begin
if(x) nxt_state=state07;
end
07: begin
if(x) nxt_state=state08;
end
08: begin
if(x) nxt_state=state09;
end
09: begin
if(x) nxt_state=state10;
end
state10:begin
if(x) nxt_state=state00;
end
always@(posedge clk or posedge rst)
begin
if (rst) state=state00;
else state=nxt_state;
end
always@(state)
begin
case(state)
state00:begin
led1=7'b1000000; //chuc
led2=7'b1000000; //donvi
end
state01:begin
led1=7'b1000000;
led2=7'b1111001;
end
state02:begin
led1=7'b1000000;
led2=7'b0100100;
end
state03:begin
led1=7'b1000000;
led2=7'b0110000;
end
state04:begin
led1=7'b1000000;
led2=7'b0011001;
end
state05:begin
led1=7'b1000000;
led2=7'b0010010;
end
state06:begin
led1=7'b1000000;
led2=7'b0000010;
end
state07:begin
led1=7'b1000000;
led2=7'b1111000;
end
state08:begin
led1=7'b1000000;
led2=7'b0000000;
end
state09:begin
led1=7'b1000000;
led2=7'b0010000;
end
state10:begin
led1=7'b1111001;
led2=7'b1000000;
end
endcase
endmodule
code em nạp đc lên broad rồi nhưng khi chạy thì chỉ có led hiện sáng 00 , còn khi em bấm nút thì nó ko tăng ạ ... ( em dùng chân 51 nối với công tắc nối với nguồn 3.3v) em vào sửa cái state00 thành 01 thì led cũng chỉ hiện sáng 01 mà bấm nút nó ko tăng ạ.. ai rành về cái này sửa dùm em với ạ....led thì ổn mà bấm nút nó thế nào ấy ạ
em viết như sau :
module TKMS(clk,rst,x,led1,led2);
input clk,x,rst;
output [6:0] led1,led2;
reg [6:0] led1,led2;
parameter state00=00,state01=01,state02=02,state03=03,state0 4=04,state05=05,state06=06,state07=07,state08=08,s tate09=09,state10=10;
reg [1:0] state,nxt_state;
always @(state)
begin
case(state)
state00: begin
if(x) nxt_state=state01;
else nxt_state=00;
end
01: begin
if (x) nxt_state=state02;
end
02: begin
if(x) nxt_state=state03;
end
03: begin
if(x) nxt_state=state04;
end
04: begin
if(x) nxt_state=state05;
end
05: begin
if(x) nxt_state=state06;
end
06: begin
if(x) nxt_state=state07;
end
07: begin
if(x) nxt_state=state08;
end
08: begin
if(x) nxt_state=state09;
end
09: begin
if(x) nxt_state=state10;
end
state10:begin
if(x) nxt_state=state00;
end
always@(posedge clk or posedge rst)
begin
if (rst) state=state00;
else state=nxt_state;
end
always@(state)
begin
case(state)
state00:begin
led1=7'b1000000; //chuc
led2=7'b1000000; //donvi
end
state01:begin
led1=7'b1000000;
led2=7'b1111001;
end
state02:begin
led1=7'b1000000;
led2=7'b0100100;
end
state03:begin
led1=7'b1000000;
led2=7'b0110000;
end
state04:begin
led1=7'b1000000;
led2=7'b0011001;
end
state05:begin
led1=7'b1000000;
led2=7'b0010010;
end
state06:begin
led1=7'b1000000;
led2=7'b0000010;
end
state07:begin
led1=7'b1000000;
led2=7'b1111000;
end
state08:begin
led1=7'b1000000;
led2=7'b0000000;
end
state09:begin
led1=7'b1000000;
led2=7'b0010000;
end
state10:begin
led1=7'b1111001;
led2=7'b1000000;
end
endcase
endmodule
code em nạp đc lên broad rồi nhưng khi chạy thì chỉ có led hiện sáng 00 , còn khi em bấm nút thì nó ko tăng ạ ... ( em dùng chân 51 nối với công tắc nối với nguồn 3.3v) em vào sửa cái state00 thành 01 thì led cũng chỉ hiện sáng 01 mà bấm nút nó ko tăng ạ.. ai rành về cái này sửa dùm em với ạ....led thì ổn mà bấm nút nó thế nào ấy ạ
Comment