卢思萌 信1411011001频率计设计 第 - 36 - 页 共 46 页
clk1<=0; q<=0; end
else if(q==49999999) begin clk1<=1; q<=q+1; end else
q<=q+1;
always @(posedge CLOCK_50 or negedge reset) if(!reset) begin clk2<=0; p<=0; end else if(p==4999999) begin p<=p+1; clk2<=1; end
- 36 -
卢思萌 信1411011001频率计设计 第 - 37 - 页 共 46 页
else if(p==9999999) begin clk2<=0; p<=0; end else p<=p+1;
always @(posedge in) if(!reset) begin clk4<=0; o<=0; end else begin
case({SW1,SW2}) 2'b11://1hz begin
if(o<13500000)
begin o<=o+1;clk4<=1;end else if(o==27000000) o<=0;
- 37 -
卢思萌 信1411011001频率计设计 第 - 38 - 页 共 46 页
else
begin clk4<=0;o<=o+1;end end 2'b10://10hz begin
if(o<1350000)
begin o<=o+1;clk4<=1;end else if(o==2700000) o<=0; else
begin clk4<=0;o<=o+1;end end 2'b01://10hz begin
if(o<135000)
begin o<=o+1;clk4<=1;end else if(o==270000) o<=0; else
begin clk4<=0;o<=o+1;end end
2'b00://1000hz begin
if(o<13500)
- 38 -
卢思萌 信1411011001频率计设计 第 - 39 - 页 共 46 页
begin o<=o+1;clk4<=1;end else if(o==27000) o<=0; else
begin clk4<=0;o<=o+1;end end endcase end
always @(posedge clk4 or negedge reset) if(!reset) begin of<=0; a<=0; b<=0; c<=0; end else if(!of) begin if(!clk1) begin a<=0; b<=0;
- 39 -
卢思萌 信1411011001频率计设计 第 - 40 - 页 共 46 页
c<=0; end if(clk1) begin
if(a==9&&b==9&&c==9) begin a<=0; b<=0; c<=0; of<=1; end
else if(b==9&&a==9) begin c<=c+1; a<=0; b<=0; end else if(a==9) begin a<=0; b<=b+1; end
- 40 -