Verilog程序如下,怎么修改可以增大运行的频率?求大神解答
module jsq(clk,rst,rec,dout,Uab);
input clk,rst,Uab;
output dout;
input [23:0]rec;
reg dout,flag;
reg [23:0]cnt;
reg [4:0]cnt_c;
reg Uab_ff0;
wire add_cnt,add_cnt_c;
wire end_cnt,end_cnt_c;
wire dout_12h;
always@(posedge clk or negedge rst)begin
if(rst==0)begin
cnt<=0;
end
else if(add_cnt)begin
if(end_cnt)begin
cnt<=0;
end
else begin
cnt<=cnt+1'b1;
end
end
end
assign add_cnt=flag==1;
assign end_cnt=(add_cnt&&cnt==4999&&(cnt_c==1||cnt_c==2||cnt_c==3||cnt_c==4||cnt_c==5||cnt_c==6||cnt_c==7||cnt_c==8||cnt_c==9||cnt_c==10||cnt_c==11||cnt_c==12||cnt_c==13||cnt_c==14||cnt_c==15||cnt_c==16||cnt_c==17||cnt_c==18||cnt_c==19||cnt_c==20||cnt_c==21||cnt_c==22||cnt_c==23||cnt_c==24||cnt_c==25||cnt_c==26||cnt_c==27||cnt_c==28||cnt_c==29||cnt_c==30))||(add_cnt&&cnt==rec-1&&cnt_c==0);
always@(posedge clk or negedge rst)begin
if(rst==0)begin
cnt_c<=0;
end
else if(add_cnt_c)begin
if(end_cnt_c)begin
cnt_c<=0;
end
else begin
cnt_c<=cnt_c+1'b1;
end
end
end
assign add_cnt_c=end_cnt;
assign end_cnt_c=add_cnt_c&&cnt_c==30;
always@(posedge clk or negedge rst)begin
if(rst==0)begin
dout<=0;
end
else if(dout_12h)begin
dout<=1;
end
else if(end_cnt)begin
dout<=0;
end
end
assign dout_12h=add_cnt&&cnt==2499&&(cnt_c==1||cnt_c==2||cnt_c==3||cnt_c==4||cnt_c==5||cnt_c==6||cnt_c==7||cnt_c==8||cnt_c==9||cnt_c==10||cnt_c==11||cnt_c==12||cnt_c==13||cnt_c==14||cnt_c==15||cnt_c==16||cnt_c==17||cnt_c==18||cnt_c==19||cnt_c==20||cnt_c==21||cnt_c==22||cnt_c==23||cnt_c==24||cnt_c==25||cnt_c==26||cnt_c==27||cnt_c==28||cnt_c==29||cnt_c==30);
always@(posedge clk or negedge rst)begin
if(rst==0)begin
flag<=0;
end
else if(Uab_ff0==0&&Uab==1)begin
flag<=1;
end
else if(end_cnt_c)begin
flag<=0;
end
end
always@(posedge clk or negedge rst)begin
if(rst==0)begin
Uab_ff0<=0;
end
else begin
Uab_ff0<=Uab;
end
end
endmodule
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>