任意的verlog奇数和偶数分频
下面展示一些 内联代码片
。
/******************
作者:robetwu
时间:2020/7/9
运行环境:Quartus II 13.0
*******************/
module Five_div(
input clk,rst_n,
output reg clk_div//5分频时钟只能用于奇数分频
);
reg clk_pose;
reg clk_nege;
reg clk_oushu;
parameter fenpin=7;//fenpin值
parameter div1=fenpin/2;
parameter div2=fenpin-1;
reg [3:0]fenpinjs;
reg [3:0]fenpinjs_oushu;
//以下为奇数分频运算
always@(posedge clk or negedge rst_n)
if(!rst_n)
clk_pose<=0;
else if(fenpinjs==div1||fenpinjs==div2)
clk_pose<=~clk_pose;
else
clk_pose<=clk_pose;
always@(negedge clk or negedge rst_n)
if(!rst_n)
clk_nege<=0;
else if(fenpinjs==div1||fenpinjs==div2)
clk_nege<=~clk_nege;
else
clk_nege<=clk_nege;
always@(posedge clk or negedge rst_n)
if(!rst_n)
fenpinjs<=0;
else if(fenpinjs==(fenpin-1))
fenpinjs<=0;
else
fenpinjs<=fenpinjs+1;
//以下为偶数分频计算
always@(posedge clk or negedge rst_n)
if(!rst_n)
begin
fenpinjs_oushu<=0;
clk_oushu<=0;
end
else if(fenpinjs_oushu==(fenpin/2-1))
begin
fenpinjs_oushu<=0;
clk_oushu<=~clk_oushu;
end
else
fenpinjs_oushu<=fenpinjs_oushu+1;
//分频结果
always@(*)
if(fenpin%2==1)
clk_div=clk_pose|clk_nege;//奇数分频结果
else
clk_div=clk_oushu;//偶数分频结果
endmodule
## modelsim结果如下
7分频的结果如下
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200715010624362.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0OTE3NDIx,size_16,color_FFFFFF,t_70)
6分频结果如下
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020071501063964.png)