

源程序:
//總模塊
module FrequencyCounter(
input [1:0] testmode ,
input sysclk ,
input modecontrol,
output
output [6:0] hex0,
output[6:0] hex1,
output[6:0] hex2,
output[6:0] hex3
);
wire sigin11;
assign highfreq=modecontrol;
signalinput signalin(.testmode(testmode),.sysclk(sysclk),.sigin1(sigin11));
Frequency freq(.sigin11(sigin11),.sysclk(sysclk),.modecontrol(modecontrol),.hex0(hex0),.hex1(hex1),.hex2(hex2),.hex3(hex3));
endmodule
//頻率計(jì)模塊
module Frequency(sigin11,sysclk,modecontrol,hex0,hex1,hex2,hex3);
//siginal Input Module
module signalinput(
input [1:0] testmode,//00,01,10,11????4???????3125?250?50?12500Hz???SW1~SW0???
input sysclk,//????50M
output sigin1//??????
);
reg[20:0] state;
reg[20:0] divide;
reg sigin;
assign sigin1=sigin;
initial
begin
sigin=0;
state=21'b000000000000000000000;
divide=21'b0000000_1111_1010_000000;
end
always@(testmode) begin
case(testmode[1:0])
2'b00:divide=21'b0000000_1111_1010_000000;
always@(posedge sysclk)//?divide??
begin
if(state==0)
sigin=~sigin;
state=state+21'b0_00__0000_0000_0000_0000_10;
if(state==divide)
state=27'b000_0000_0000_0000_0000_0000_0000;
end
endmodule
//1Hz clock module
module OneHzClk(sysclk,OneClk);
reg[25:0] state;
reg[25:0] divide;
input sysclk;
output
reg sigin;
assign OneClk=sigin;
initial
begin
sigin=0;
state=26'b00_0000_0000_0000_0000_0000;
divide=26'b10_1111_1010_1111_0000_1000_0000;
//divide=21'b000000_0000_0000_0001000;
end
always@(posedge sysclk)//?divide??
begin
if(state==0)
sigin=~sigin;
state=state+26'b0000_0000__0000_0000_0000_0000_10;
if(state==divide)
state=26'b00_0000_0000_0000_0000_0000_0000;
end
endmodule
//1Hz clk produce control siginal
module ControlSig(OneClk,enable,reset,lock);
input wire OneClk;
output reg enable,reset,lock;
reg countcc;
initial begin
enable=0;
reset=1;
lock=0;
countcc=0;
end
always@(posedge OneClk)
begin
end
endmodule
//10 counter module
module TenCounter(sigin,sigin1,modecontrol,enable,reset,countBCD);