然后就是顶层模块clock; 同理, // module clock(clk,seg,latch,key_in);//key_in input clk; input[3:0] key_in; output [7:0]seg; output [5:0]latch; reg[23:0]timed;// reg clk1;//1hz reg [31:0]count;// count for 1s(1hz) reg [23:0]temp;// reg [3:0]d1,d2,d3; wire [3:0]key_out;// disp t(.clk(clk),.dat(timed),.seg(seg),.latch(latch));// assign key_out=(d1|d2|d3);//elimilate dithering always@(posedge clk) // begin d1<=key_in; d2<=d1; d3<=d2; end always@(posedge clk)//50Mhz~1hz begin if(count==32'd25000000) begin clk1<=~clk1; count<=0; end else count<=count+1'b1; end always@(key_out)// begin temp=timed;// if(key_out[0]==0)// temp=0; else if(key_out[1]==0)// temp[23:16]=temp[23:16]+1'b1; else if(key_out[2]==0)// temp[15:8]=temp[15:8]+1'b1; else if(key_out[3]==0)// temp[7:0]=temp[7:0]+1'b1; end always@(posedge clk1)// begin timed=temp;// begin timed[3:0]<=timed[3:0]+1'b1;// if(timed[3:0]==4'h9) begin timed[7:4]<=timed[7:4]+1'b1;// timed[3:0]<=0; if(timed[7:4]==4'h5) begin timed[11:8]<=timed[11:8]+1'b1;// timed[7:4]<=0; if(timed[11:8]==4'h9) begin timed[15:12]<=timed[15:12]+1'b1;// timed[11:8]<=0; if(timed[15:12]==4'h5) begin timed[19:16]<=timed[19:16]+1'b1;// timed[15:12]<=0; if(timed[19:16]==4'h9) begin timed[23:20]<=timed[23:20]+1'b1;// timed[19:16]<=0; end if(timed[23:16]==8'h23)//24 begin timed[23:16]<=0; end end end end end end end endmodule 程序在板子上跑得比较正确 放上跑在板子上的图 (1: |
|