Mình viết 3 đoạn code như sau , mỗi đoạn code hoạt động như 1 máy trạng thái với xung CLOCK 50MHz dc cung cấp trên kit DE2 để tạo delay cho việc chuyển trạng thái tự động . Vấn đề mình gặp phải là mình muốn khi nào có tác động của các nút nhấn KEY[0] ,KEY[1] và KEY[2] trên kit DE2 thì các đoạn code tương ứng mới dc hoạt động . Tức là khi nhấn KEY[0] thì hoạt động đoạn code 1 , KEY[1] đoạn code 2 và KEY[2] đoạn code 3.Bạn nào rành về Verilog rất mong dc giúp đỡ đoạn này . Mình viết hoài mà ko chạy . Sau đây là 3 đoạn code của mình(chỉ trích đoạn thôi nhé)!Mời các bạn tham khảo :
Đoạn 1 Khi bấm KEY[0] mình muốn thực hiện đoạn này)
always @(posedge CLOCK_50)
begin
dem=dem+1;
if(dem==1)
begin
LEDR[4]=1'b0;
LEDR[3]=1'b1;
LEDR[2]=1'b0;
LEDR[1]=1'b1;
LEDR[0]=1'b0;
end
if(dem==100000000)
begin
LEDR[4]=1'b1;
LEDR[3]=SW[3];
LEDR[2]=SW[2];
LEDR[1]=SW[1];
LEDR[0]=SW[0];
end
if(dem==125000000)
begin
LEDR[4]=1'b0;
LEDR[3]=SW[3];
LEDR[2]=SW[2];
LEDR[1]=SW[1];
LEDR[0]=SW[0];
end
if(dem==225000000)//delay them 2s
begin
LEDR[4]=1'b1;
LEDR[3]=SW[3];
LEDR[2]=SW[2];
LEDR[1]=SW[1];
LEDR[0]=SW[0];
end
if(dem==250000000)
begin
LEDR[4]=1'b0;
LEDR[3]=SW[3];
LEDR[2]=SW[2];
LEDR[1]=SW[1];
LEDR[0]=SW[0];
end
if(dem==350000000)//delay them 2s
begin
LEDR[4]=1'b1;
LEDR[3]=1'b1;
LEDR[2]=1'b0;
LEDR[1]=1'b1;
LEDR[0]=1'b1;
end
if(dem==375000000)
begin
LEDR[4]=1'b0;
LEDR[3]=1'b1;
LEDR[2]=1'b0;
LEDR[1]=1'b1;
LEDR[0]=1'b1;
end
if(dem==475000000)
begin
dem=0;
LEDR[4]=1'b1;
end
end
Đoạn code 2: (Khi bấm KEY[1] mình muốn làm đoạn này)
always @(posedge CLOCK_50)
begin
dem=dem+1;
if(dem==1)
begin
LEDR[4]=1'b0;
LEDR[3]=1'b1;
LEDR[2]=1'b0;
LEDR[1]=1'b1;
LEDR[0]=1'b0;
end
if(dem==100000000)
begin
LEDR[4]=1'b1;
LEDR[3]=SW[7];
LEDR[2]=SW[6];
LEDR[1]=SW[5];
LEDR[0]=SW[4];
end
if(dem==125000000)
begin
LEDR[4]=1'b0;
LEDR[3]=SW[7];
LEDR[2]=SW[6];
LEDR[1]=SW[5];
LEDR[0]=SW[4];
end
if(dem==225000000)//delay them 2s
begin
LEDR[4]=1'b1;
LEDR[3]=SW[7];
LEDR[2]=SW[6];
LEDR[1]=SW[5];
LEDR[0]=SW[4];
end
if(dem==250000000)
begin
LEDR[4]=1'b0;
LEDR[3]=SW[7];
LEDR[2]=SW[6];
LEDR[1]=SW[5];
LEDR[0]=SW[4];
end
if(dem==350000000)//delay them 2s
begin
LEDR[4]=1'b1;
LEDR[3]=1'b1;
LEDR[2]=1'b1;
LEDR[1]=1'b0;
LEDR[0]=1'b0;
end
if(dem==375000000)
begin
LEDR[4]=1'b0;
LEDR[3]=1'b1;
LEDR[2]=1'b1;
LEDR[1]=1'b0;
LEDR[0]=1'b0;
end
if(dem==475000000)
begin
dem=dem;
LEDR[4]=1'b1;
end
end
Đoạn code 3 cũng tương tự như vậy, chắc mình ko cần phải post lên.Mong anh em giúpđỡ để mình có thể kết hợp 3 đoạn code lại dc. Thank anh em trước !!(Ai có ý kiến khác xin chỉ bảo , mình rất mong dc các anh em giúpđỡ)
Đoạn 1 Khi bấm KEY[0] mình muốn thực hiện đoạn này)
always @(posedge CLOCK_50)
begin
dem=dem+1;
if(dem==1)
begin
LEDR[4]=1'b0;
LEDR[3]=1'b1;
LEDR[2]=1'b0;
LEDR[1]=1'b1;
LEDR[0]=1'b0;
end
if(dem==100000000)
begin
LEDR[4]=1'b1;
LEDR[3]=SW[3];
LEDR[2]=SW[2];
LEDR[1]=SW[1];
LEDR[0]=SW[0];
end
if(dem==125000000)
begin
LEDR[4]=1'b0;
LEDR[3]=SW[3];
LEDR[2]=SW[2];
LEDR[1]=SW[1];
LEDR[0]=SW[0];
end
if(dem==225000000)//delay them 2s
begin
LEDR[4]=1'b1;
LEDR[3]=SW[3];
LEDR[2]=SW[2];
LEDR[1]=SW[1];
LEDR[0]=SW[0];
end
if(dem==250000000)
begin
LEDR[4]=1'b0;
LEDR[3]=SW[3];
LEDR[2]=SW[2];
LEDR[1]=SW[1];
LEDR[0]=SW[0];
end
if(dem==350000000)//delay them 2s
begin
LEDR[4]=1'b1;
LEDR[3]=1'b1;
LEDR[2]=1'b0;
LEDR[1]=1'b1;
LEDR[0]=1'b1;
end
if(dem==375000000)
begin
LEDR[4]=1'b0;
LEDR[3]=1'b1;
LEDR[2]=1'b0;
LEDR[1]=1'b1;
LEDR[0]=1'b1;
end
if(dem==475000000)
begin
dem=0;
LEDR[4]=1'b1;
end
end
Đoạn code 2: (Khi bấm KEY[1] mình muốn làm đoạn này)
always @(posedge CLOCK_50)
begin
dem=dem+1;
if(dem==1)
begin
LEDR[4]=1'b0;
LEDR[3]=1'b1;
LEDR[2]=1'b0;
LEDR[1]=1'b1;
LEDR[0]=1'b0;
end
if(dem==100000000)
begin
LEDR[4]=1'b1;
LEDR[3]=SW[7];
LEDR[2]=SW[6];
LEDR[1]=SW[5];
LEDR[0]=SW[4];
end
if(dem==125000000)
begin
LEDR[4]=1'b0;
LEDR[3]=SW[7];
LEDR[2]=SW[6];
LEDR[1]=SW[5];
LEDR[0]=SW[4];
end
if(dem==225000000)//delay them 2s
begin
LEDR[4]=1'b1;
LEDR[3]=SW[7];
LEDR[2]=SW[6];
LEDR[1]=SW[5];
LEDR[0]=SW[4];
end
if(dem==250000000)
begin
LEDR[4]=1'b0;
LEDR[3]=SW[7];
LEDR[2]=SW[6];
LEDR[1]=SW[5];
LEDR[0]=SW[4];
end
if(dem==350000000)//delay them 2s
begin
LEDR[4]=1'b1;
LEDR[3]=1'b1;
LEDR[2]=1'b1;
LEDR[1]=1'b0;
LEDR[0]=1'b0;
end
if(dem==375000000)
begin
LEDR[4]=1'b0;
LEDR[3]=1'b1;
LEDR[2]=1'b1;
LEDR[1]=1'b0;
LEDR[0]=1'b0;
end
if(dem==475000000)
begin
dem=dem;
LEDR[4]=1'b1;
end
end
Đoạn code 3 cũng tương tự như vậy, chắc mình ko cần phải post lên.Mong anh em giúpđỡ để mình có thể kết hợp 3 đoạn code lại dc. Thank anh em trước !!(Ai có ý kiến khác xin chỉ bảo , mình rất mong dc các anh em giúpđỡ)
Comment