|
//测频率控制器
module testctl(clkk,cnt_en,rst_cnt,load);
inputclkk;
outputcnt_en,rst_cnt,load;
reg rst_cnt;
reg div2clk;
always @(posedge clkk)
begin
div2clk=~div2clk;
end
always @(clkk or div2clk)
begin
if((clkk=='b0)&(div2clk=='b0))
rst_cnt='b1;
else tst_cnt='b0;
end
assign load=~div2clk;
assign cnt_en=div2clk;
endmodule
//10进制计数器
module cnt10(clk,rst,ena,outy,cout);
input clk,rst,ena;
output[3:0] outy;
output cout;
reg[3:0] outy;
always @(posedge clk)
begin
if(rst) outy='b0000;
else if(ena)
begin
if(outy<'b1001) outy=outy+1;
elseouty='b0000;
end
end
assign cout=outy[3]&outy[0];
endmodule
//4位锁存器
module reg4b(load,din,dout);
input[3:0]din;
input load;
output[3:0] dout;
reg[3:0] dout;
always @(posedge load)
begin
dout=din;
end
endmodule
//顶层源程序
module plj4(f1hz,fin,doutt,coutt);
input f1hz,fin;
output[15:0]doutt;
output coutt;
reg[15:0] doutt;
wire[3:0] cnt_ent,rst_cntt,loadt;
wire[3:0] couty1,couty2,couty3,couty4;
wire cout1,cout2,cout3;
testctl u1(f1hz,cnt_ent,rst_cntt,loadt);
cnt10 u2(fin,rst_cntt,cnt_ent,outy1,cout1);
cnt10 u3(cout1,rst_cntt,cnt_ent,outy2,cout2);
cnt10 u4(cout2,rst_cntt,cnt_ent,outy3,cout3);
cnt10 u5(cout3,rst_cntt,cnt_ent,outy4,coutt);
reg4b u6(loadt,outy1,doutt[3:0]);
reg4b u6(loadt,outy1,doutt[7:4]);
reg4b u6(loadt,outy1,doutt[11:8]);
reg4b u6(loadt,outy1,doutt[15:12]);
endmodule
测频率控制器那段不怎么看得懂呢 大家帮帮忙啊 谢谢
能再给我个程序就更好了 |
|