| 
 
| module dj (clk_27m,rst_n,fangxiang,sudu,outf,outs,count_gd,HEX1,HEX2,HEX3,HEX4); input clk_27m;
 input rst_n;
 input fangxiang;
 input sudu;
 input count_gd;
 output outf,outs;
 output [6:0]HEX1,HEX2,HEX3,HEX4;
 reg outf;
 wire outs;
 reg en;
 /************************************/
 
 /*************************************/
 always @ ( negedge rst_n or posedge clk_27m)
 if (!rst_n)
 outf<=0;
 else outf<=(fangxiang?1:0);
 /*************************************/
 reg delay;
 always @ (sudu)
 case (sudu)
 4'b0001:delay<=9'd100;
 4'b0011:delay<=9'd200;
 4'b0111:delay<=9'd300;
 4'b1111:delay<=9'd400;
 endcase
 /*************************************/
 speed_control u1(.clk(clk_27m),.rst(rst_n),.yanchi(delay),.shuchu(outs));
 
 /*************************************/
 reg count;
 always @ (posedge clk_27m )
 if (!rst_n) count<=0;
 else if (count==27000000)
 begin en<=1;count<=0;end
 else
 begin en<=0;count<=count+1;end
 /*************************************/
 reg [3:0]    cs_ge;
 reg [3:0]    cs_shi;
 reg [3:0]    cs_bai;
 reg [3:0]    cs_qian;
 always @ (negedge count_gd)
 if (!rst_n)
 begin
 cs_ge <= 4'd0;
 cs_shi <= 4'd0;
 cs_bai <= 4'd0;
 cs_qian <= 4'd0;
 end
 else if (en)
 begin
 cs_ge <= 4'd0;
 cs_shi <= 4'd0;
 cs_bai <= 4'd0;
 cs_qian <= 4'd0;
 end
 else
 begin
 if(cs_ge==4'd9 && cs_shi<4'd10 && cs_bai<4'd10 && cs_qian<4'd10)
 begin
 cs_ge <= 4'd0;
 cs_shi <= cs_shi + 4'd1;
 if(cs_shi == 4'd9 && cs_bai<4'd10 && cs_qian<4'd10)
 begin
 cs_shi <= 4'd0;
 cs_bai <= cs_bai + 4'd1;
 end
 if(cs_bai == 4'd9 && cs_qian<4'd10)
 begin
 cs_bai <= 4'd0;
 cs_qian <= cs_qian + 4'd1;
 end
 end
 else if(cs_qian==4'd10 && cs_bai==4'd9 && cs_shi==4'd9 && cs_ge==4'd9)
 begin
 cs_ge <= 4'd0;
 cs_shi <= 4'd0;
 cs_bai <= 4'd0;
 cs_qian <= 4'd0;
 end
 else
 begin
 cs_ge <= cs_ge + 4'd1;
 end
 end
 /***************************************/
 reg [6:0]HEX01,HEX02,HEX03,HEX04;
 always @ (cs_qian)
 case (cs_qian)
 4'd0:HEX01=7'd192;
 4'd1:HEX01=7'd249;
 4'd2:HEX01=7'd164;
 4'd3:HEX01=7'd176;
 4'd4:HEX01=7'd153;
 4'd5:HEX01=7'd146;
 4'd6:HEX01=7'd130;
 4'd7:HEX01=7'd1248;
 4'd8:HEX01=7'd128;
 4'd9:HEX01=7'd144;
 endcase
 always @ (cs_bai)
 case (cs_bai)
 4'd0:HEX02=7'd192;
 4'd1:HEX02=7'd249;
 4'd2:HEX02=7'd164;
 4'd3:HEX02=7'd176;
 4'd4:HEX02=7'd153;
 4'd5:HEX02=7'd146;
 4'd6:HEX02=7'd130;
 4'd7:HEX02=7'd1248;
 4'd8:HEX02=7'd128;
 4'd9:HEX02=7'd144;
 endcase
 always @ (cs_shi)
 case (cs_shi)
 4'd0:HEX03=7'd192;
 4'd1:HEX03=7'd249;
 4'd2:HEX03=7'd164;
 4'd3:HEX03=7'd176;
 4'd4:HEX03=7'd153;
 4'd5:HEX03=7'd146;
 4'd6:HEX03=7'd130;
 4'd7:HEX03=7'd1248;
 4'd8:HEX03=7'd128;
 4'd9:HEX03=7'd144;
 endcase
 always @ (cs_ge)
 case (cs_ge)
 4'd0:HEX04=7'd192;
 4'd1:HEX04=7'd249;
 4'd2:HEX04=7'd164;
 4'd3:HEX04=7'd176;
 4'd4:HEX04=7'd153;
 4'd5:HEX04=7'd146;
 4'd6:HEX04=7'd130;
 4'd7:HEX04=7'd1248;
 4'd8:HEX04=7'd128;
 4'd9:HEX04=7'd144;
 endcase
 assign HEX1=HEX01;
 assign HEX2=HEX02;
 assign HEX3=HEX03;
 assign HEX4=HEX04;
 /***************************************/
 endmodule
 module speed_control (clk,rst,yanchi,shuchu);
 input clk;
 input rst;
 input  yanchi;
 output shuchu;
 wire shuchu;
 reg shuch;
 reg wahaha;
 always@(posedge clk)
 if (!rst)
 shuch<=0;
 else if(wahaha==yanchi)
 begin shuch<=1;wahaha=0;end
 else begin shuch<=0;wahaha<=wahaha+1;end
 
 assign shuchu=shuch;
 endmodule
 这是测试的脚本
 initial
 begin
 rst_n=0;
 #10 rst_n=1;
 fangxiang=1;
 clk_27m=0;
 count_gd=0;
 sudu=4'b0001;
 end
 always
 
 begin
 #10 clk_27m=~clk_27m;
 #10 count_gd=~count_gd;
 end
 谢谢了
 | 
 |