成都做网站多少钱,php源码之家,商城属于电商网站吗,公司网站建设方案模板下载任意小数分频
题目描述 请设计一个可以实现任意小数分频的时钟分频器#xff0c;比如说8.7分频的时钟信号 注意rst为低电平复位 提示#xff1a; 其实本质上是一个简单的数学问题#xff0c;即如何使用最小公倍数得到时钟周期的分别频比。 设小数为nn#xff0c;此处以8.7…任意小数分频
题目描述 请设计一个可以实现任意小数分频的时钟分频器比如说8.7分频的时钟信号 注意rst为低电平复位 提示 其实本质上是一个简单的数学问题即如何使用最小公倍数得到时钟周期的分别频比。 设小数为nn此处以8.7倍分频的时钟周期为例。 首先由于不能在硬件上进行小数的运算比如2.1个时钟这种是不现实的也不存在3.3个寄存器小数分频不能做到分频后每个时钟周期都是源时钟的nn倍也无法实现占空比为1/2因此考虑小数分频其实现方式应当为53个clkout时钟周期是10个clkin时钟周期的8.7倍。
信号示意图 题目解读 其实本质上是一个简单的数学问题即如何使用最小公倍数得到时钟周期的分别频比。 设小数为nn此处以8.7倍分频的时钟周期为例。
首先由于不能在硬件上进行小数的运算比如2.1个时钟这种是不现实的也不存在3.3个寄存器小数分频不能做到分频后每个时钟周期都是源时钟的nn倍也无法实现占空比为1/2因此考虑小数分频其实现方式应当为87个clkout时钟周期是10个clkin时钟周期的8.7倍。
所以很简单根据提示我们可以进行如下假设首先设置有两个整数分频电路一个是奇数一个是偶数设其分频比为a和b然后其分别的时钟占N/M个周期。则我们可以得到 aNbM 87 NM 10 如果使用 8 和 9分频则有 8N9M 87 NM 10 因此 M为7 N为3。
具体步骤 1设计一个计数次数87的计数器即0-86 2分别生成8分频和9分频的计数器计数次数分别为0-6和0-2 3输出波形根据总计数器和8、9分频计数器的数值控制输出脉冲翻转
timescale 1ns/1nsmodule div_M_N(input wire clk_in,input wire rst,output wire clk_out
);
parameter M_N 8d87;
parameter c89 8d24; // 8/9时钟切换点
parameter div_e 5d8; //偶数周期
parameter div_o 5d9; //奇数周期reg [6:0] cnt;
reg [3:0] cnt_e;
reg [3:0] cnt_o;
reg clk_MN;
assign clk_out clk_MN;//总计数器
always (posedge clk_in or negedge rst) beginif(!rst)cnt 6b0;else beginif(cnt M_N - 1b1)cnt 6b0;elsecnt cnt 1b1;end
end always (posedge clk_in or negedge rst) begin if(!rst) begincnt_e 4b0;cnt_o 4b0;end else if(cntc89-1b1) begincnt_o 4d0;if(cnt_e div_e - 1b1)cnt_e 4d0;elsecnt_e cnt_e 1b1;end else if(cntc89-1b1) begincnt_e 4d0;if(cnt_o div_o - 1b1)cnt_o 4d0;elsecnt_o cnt_o 1b1;end
endalways (posedge clk_in or negedge rst) beginif(!rst)clk_MN 1b0;else beginif(cntc89) beginif(cnt_e 4d0 || cnt_e div_e/2)clk_MN ~clk_MN;endif(cntc89) beginif(cnt_o 4d0 || cnt_o (div_o - 1b1)/2)clk_MN ~clk_MN;endend
endendmodule