FPGA奇数和偶数分频器和半整数及任意小数分频器设计(Verilog程序)

余年寄山水
893次浏览
2021年01月24日 17:20
最佳经验
本文由作者推荐

描写花的佳句-1500

2021年1月24日发(作者:旅游的好地方)
Engineer

Lhrace
Author:
---Engineer Lhrace

1

半整数
分频占空比不为
50%
//
说明:设 计的史上最好用的半整数分频占空比不为
50%
,包含设计思路

module div_5(clk,clk_div,cnt1,cnt2,temp1,temp2);//N+0.5
input clk;
output clk_div;
output reg[31:0]cnt1,cnt2;
output reg temp1,temp2;
initial begin temp1=0;temp2=1;end


//
首先进行初始化,
temp1=0;temp2=1
parameter N=5;

//
设定分频系数为
N+0.5
always @(posedge clk)

//temp1
上升沿跳变

begin
if(cnt1==2*N)

//
2*N

begin cnt1[31:0]<=32'd0;end
else begin cnt1[31:0]<=cnt1[31:0]+32'd1;end
if(cnt1==32'd0) begin temp1<=1;end


/
/
高电平时间为
N+1;

if(cnt1==N+1) begin temp1<=0;end



//
低电平时间为
N;
end
always@(negedge clk)

//temp2
下降沿跳变

begin
if(cnt2==2*N)

//
2*N
begin cnt2[31:0]<=32'd0;end
else begin cnt2[31:0]<=cnt2[31:0]+32'd1;end
if(cnt2==32'd0) begin temp2<=0;end




//
低电平时间为
N;

if(cnt2==N) begin temp2<=1;end



//
高电平时间为
N+1;
end
assign clk_div=temp1&&temp2;

//
逻辑与

endmodule

//
如果要进行
N+0.5
分频

//
思路:总的来说要进行
N+1+N=2N+1
次分频

//
在时钟的上升沿和下降沿都进行跳变

//
上升沿进行占空比为
N+1

N
的时钟
temp1;
//
下降沿进行 占空比为
N

N+1
的时钟
temp2;
//
最后
div=temp1&&temp2
即可得到所需要的半整数分频

分频
5.5
仿真结果

Engineer

Lhrace

2
、奇数分频
占空比为
50%
//
说明:奇数分频。

module div_5(clk,clk_div,cnt1,cnt2,temp1,temp2);//
input clk;
output clk_div;
output reg[31:0]cnt1,cnt2;
output reg temp1,temp2;
parameter N=5;

//
设定分频系数

always @(posedge clk)
begin
if(cnt1==N-1)

//
N-1
进行
N
计数

begin cnt1[31:0]<=32'd0;end
else begin cnt1[31:0]<=cnt1[31:0]+32'd1;end
if(cnt1==32'd0) begin temp1<=1;end


//
if(cnt1==(N-1)/
2) begin temp1<=0;end


//
当计数到
(N-1)/
2
时翻转

end
always@(negedge clk)
begin
if(cnt2==N-1)

//N-1
begin cnt2[31:0]<=32'd0;end
else begin cnt2[31:0]<=cnt2[31:0]+32'd1;end
if(cnt2==32'd0) begin temp2<=1;end




//;
if(cnt2==(N-1)/
2) begin temp2<=0;end



//
当计数到
(N-1)/
2
时翻转
;

end
assign clk_div=temp1||temp2;

//
逻辑或

endmodule

描写花的佳句-1500


描写花的佳句-1500


描写花的佳句-1500


描写花的佳句-1500


描写花的佳句-1500


描写花的佳句-1500


描写花的佳句-1500


描写花的佳句-1500