-
二分频电路Verilog设计
2019-09-27 13:33:372分频电路设计 `timescale 1ns/10ps module div_2(clk,rst,out); input clk,rst; output out; reg q; always@(posedge clk or negedge rst) if(!rst) q<=1'b0; else q<=~q; assign out=q...2分频电路设计
`timescale 1ns/10ps module div_2(clk,rst,out); input clk,rst; output out; reg q; always@(posedge clk or negedge rst) if(!rst) q<=1'b0; else q<=~q; assign out=q; endmodule
测试程序:
module div_2_tb(); reg clk,rst; wire out; div_2 wt (.clk(clk), .rst(rst), .out(out)); initial begin rst <= 0; #20 rst <= 1; #100000 rst <= 0; end initial begin clk = 0; end always begin #10 clk = ~clk; end endmodule
-
8分频verilog线_七、八分频电路Verilog源代码
2020-12-19 23:19:11八分频模块文件:modulediv8(clk_i,clk_o,reset);parameterDIV_N = 8;inputclk_i;inputreset;outputclk_o;regclk_o;integercount;always @(negedge reset or posedge clk_i)beginif(!reset)count<= 0;elseif...八分频
模块文件:
module
div8(clk_i,clk_o,reset);
parameter
DIV_N = 8;
input
clk_i;
input
reset;
output
clk_o;
reg
clk_o;
integer
count;
always @
(negedge reset or posedge clk_i)
begin
if(!reset)
count
<= 0;
else
if(count
== 7)
count
<= 0;
else
count
<= count + 1;
end
always @
(negedge reset or posedge clk_i)
begin
if(!reset)
clk_o <= 0;
else
begin
if(count <= (DIV_N/2 - 1))
clk_o <= 0;
else
clk_o <= 1;
end
end
endmodule
测试文件:
`include
"div8.v"
module div8_t;
reg clk_i;
reg reset;
wire clk_o;
always #10 clk_i = ~clk_i;
initial
begin
#0 reset = 0;clk_i = 0;
#3 reset = 1;
#2000 $stop;
end
div8 div1(.clk_i(clk_i),.clk_o(clk_o),.reset(reset));
endmodule
七分频(占空比2:5)
模块文件:
module
div7(clk_i,clk_o,reset);
parameter DIV_N =
7;
input clk_i;
input reset;
output clk_o;
reg clk_o;
integer count;
always @ (negedge reset or
posedge clk_i)
begin
if(!reset)
count <=
0;
else
if(count == 6)
count <=
0;
else
count <= count +
1;
end
always @ (negedge reset or
posedge clk_i)
begin
if(!reset)
clk_o <= 0;
else
begin
if(count <= (DIV_N+1)/2)
clk_o <= 0;
else
clk_o <= 1;
end
end
endmodule
测试文件:
`include "div7.v"
module
div7_t;
reg
clk_i;
reg
reset;
wire
clk_o;
always #10 clk_i =
~clk_i;
initial
begin
#0 reset = 0;clk_i =
0;
#3 reset =
1;
#2000
$stop;
end
div7
div1(.clk_i(clk_i),.clk_o(clk_o),.reset(reset));
endmodule
-
8分频verilog线_[转载]七、八分频电路Verilog源代码
2020-12-19 23:19:20八分频模块文件:modulediv8(clk_i,clk_o,reset);parameterDIV_N = 8;inputclk_i;inputreset;outputclk_o;regclk_o;integercount;always @(negedge reset or posedge clk_i)beginif(!reset)count<= 0;elseif...八分频
模块文件:
module
div8(clk_i,clk_o,reset);
parameter
DIV_N = 8;
input
clk_i;
input
reset;
output
clk_o;
reg
clk_o;
integer
count;
always @
(negedge reset or posedge clk_i)
begin
if(!reset)
count
<= 0;
else
if(count
== 7)
count
<= 0;
else
count
<= count + 1;
end
always @
(negedge reset or posedge clk_i)
begin
if(!reset)
clk_o <= 0;
else
begin
if(count <= (DIV_N/2 - 1))
clk_o <= 0;
else
clk_o <= 1;
end
end
endmodule
测试文件:
`include
"div8.v"
module div8_t;
reg clk_i;
reg reset;
wire clk_o;
always #10 clk_i = ~clk_i;
initial
begin
#0 reset = 0;clk_i = 0;
#3 reset = 1;
#2000 $stop;
end
div8 div1(.clk_i(clk_i),.clk_o(clk_o),.reset(reset));
endmodule
七分频(占空比2:5)
模块文件:
module
div7(clk_i,clk_o,reset);
parameter DIV_N =
7;
input clk_i;
input reset;
output clk_o;
reg clk_o;
integer count;
always @ (negedge reset or
posedge clk_i)
begin
if(!reset)
count <=
0;
else
if(count == 6)
count <=
0;
else
count <= count +
1;
end
always @ (negedge reset or
posedge clk_i)
begin
if(!reset)
clk_o <= 0;
else
begin
if(count <= (DIV_N+1)/2)
clk_o <= 0;
else
clk_o <= 1;
end
end
endmodule
测试文件:
`include "div7.v"
module
div7_t;
reg
clk_i;
reg
reset;
wire
clk_o;
always #10 clk_i =
~clk_i;
initial
begin
#0 reset = 0;clk_i =
0;
#3 reset =
1;
#2000
$stop;
end
div7
div1(.clk_i(clk_i),.clk_o(clk_o),.reset(reset));
endmodule
-
8分频verilog线_时钟分频系列——分数分频电路的Verilog实现
2020-12-19 23:19:12IC君的第47篇原创文章 (欢迎关注公众号 icstudy)上一篇文章时钟分频系列——偶数分频/奇数分频/分数分频,IC君介绍了各种分频器的设计原理,其中分数分频器较为复杂,这一篇文章IC君再跟大家聊聊分数分频的具体设计...IC君的第47篇原创文章 (欢迎关注公众号 icstudy)
上一篇文章时钟分频系列——偶数分频/奇数分频/分数分频,IC君介绍了各种分频器的设计原理,其中分数分频器较为复杂,这一篇文章IC君再跟大家聊聊分数分频的具体设计实现。
一个分数分频器由两部分组成:以ZN和ZN+1为分频系数的多路分频器,还有一个ACC计数器。
ZN/ZN+1分频器设计
ZN/ZN+1分频器的设计包含了偶分频器和奇分频器,首先定义ZN/ZN+1分频器的模块名字MDIV。下图是MDIV的引脚信号的名字,及功能定义:
废话不多说,Verilog硬件描述语言实现MDIV的代码如下:
MDIV调用方法如下:
具体的仿真波形如下所示:
ACC计数器设计
ACC计数器就是控制做N次ZN分频和M次ZN+1次分频,具体控制过程可以分为以下几种情况:
第1种情况 :先做N次ZN分频,再做M次ZN+1次分频;
第2种情况: 先做M次ZN+1次分频,再做N次ZN分频;
第3种情况 :把N次ZN分频平均插入到M次ZN+1分频中;
第4种情况 :把M次ZN+1次分频平均插入到N次ZN分频中。
组合N次ZN分频和M次ZN+1次分频的情况很多。第1、2种情况前后时钟频率不太均匀,因此相位抖动比较大;
第3、4种情况前后时钟频率均匀性稍好,因此相位抖动会减小。
下面以8.7分频为例子设计ACC计数器模块名ACCT,下图为模块ACCT的引脚:
8.7分频的原理是用3次8分频和7次9分频的对应的时钟总时间来等效原时钟87个周期的总时间。
下图选用前面所述的第3种情况,把3次8分频平均地插入到7次9分频中,这个过程也叫混频。
采用第3种情况设计ACCT的Verilog代码代码如下所示:
代码的92-102行就是第3种情况混频,修改98行的数字可以得到不同的混频。
8.7分频器设计
完成了模块MDIV 和ACCT之后,就可以用组成一个8.7分频器,这个分频器的模块名是FENDIV,框图如下所示:
Verilog代码如下:
最终生成的clkout波形如下所示:
有兴趣的可以试试用MDIV 和ACCT设计一个10.3分频器?
IC君写一篇原创文章非常不容易,麻烦大家去微信公众号 icstudy 转发、分享、点“在看”哦,谢谢!
-
8分频verilog线_分频的verilog语言实现
2020-12-19 23:19:18分频的Verilog实现1.分频:在实际应用中,自己设计的开发板上不会去装多个晶振来产生不同频率的时钟信号,这就要我们在已有的基础上自己来创造设计电路中所需要的时钟信号来,有时候所需要的频率并不是在已有的频率... -
分频电路-verilog
2017-05-20 17:05:591. 2分频module div_2(clk,rst,out); input clk,rst; output out;reg q; always@(posedge clk or negedge rst) if(!rst) q; else q~q; assign out=q; endmodule2. 偶数分频module div_8 (c -
任意奇数分频电路(verilog 实现)
2013-06-01 19:24:12给出了一种奇数分频电路设计方法,采用verilog HDL描述。修改代码中参数可以进行任意奇数分频,包含了设计文档和源代码。 -
verilog 任意比例分频电路的实现_任意分频Verilog实现
2020-12-24 05:01:051.偶数倍(2N)分频使用一模N计数器模块即可实现,即每当模N计数器上升沿从0开始计数至N-1时,输出时钟进行翻转,同时给计数器一复位信号使之从0开始重新计数,以此循环即可。偶数倍分频原理示意图见图1。2.奇数倍(2N+... -
mips cache verilog实现_时钟分频系列——分数分频电路的Verilog实现
2020-10-30 00:31:47IC君的第47篇原创文章 (欢迎关注公众号 icstudy)上一篇文章时钟分频系列——偶数分频/奇数分频/分数分频,IC君介绍了各种分频器的设计原理,其中分数分频器较为复杂,这一篇文章IC君再跟大家聊聊分数分频的具体... -
n分频器 verilog_时钟分频系列——分数分频电路的Verilog实现
2021-01-05 13:09:38IC君的第47篇原创文章 (欢迎关注公众号 icstudy)上一篇文章时钟分频系列——偶数分频/奇数分频/分数分频,IC君介绍了各种分频器的设计原理,其中分数分频器较为复杂,这一篇文章IC君再跟大家聊聊分数分频的具体... -
verilog 任意比例分频电路的实现_Verilog实现之任意分频电路
2020-12-24 05:00:52//偶数分频,直接输出 116 always @ (posedge sclk or negedge s_rst_n) begin 117 if(s_rst_n == 1'b0)begin 118 clk_out_even ;119 clk_out_odd_r ;120 end 121 else begin 122 case (1'b1) 123 fre_en[0] : ... -
verilog分频电路
2020-07-20 13:47:12二分频电路: module div2( input clk, input rst_n, output reg clk_o ); always@(posedge clk or negedge rst_n) begin if(rst_n) clk_o <= 1’b0; else clk_o <= ~clk; end endmodule 八分频电路: module ... -
从计数器到分频电路的解说(Verilog HDL)
2019-02-05 22:30:44本文档主要解说:从计数器到分频电路(Verilog HDL),包括积偶分频。 -
数字电路设计之奇偶分频的verilog实现
2014-07-26 09:30:35奇偶分频使用计数器实现,这种做法感觉很nice,值得看一下! -
verilog 任意比例分频电路的实现_面试题分析 时钟分频电路
2021-01-05 13:09:38老李这次又要来分析常考的面试题了,这次咱们聊聊时钟分频电路。这一类面试题很常见,难度其实不大,看了这一篇,老李保证你能够在面试中自如应付。先说什么是时钟分频(clock divide),我们都知道现在的数字电路都是... -
奇数与偶数分频电路设计及verilog代码实现
2019-08-29 19:33:11Verilog设计(二):分频电路设计 https://blog.csdn.net/qq_26652069/article/details/90759052 基于verilog的分频器设计(奇偶分频原理及其电路实现:上) https://www.cnblogs.com/Fun-with-FPGA/p/4700631.html... -
基于verilog的5分频电路设计
2014-10-11 09:33:09基于verilog的5分频电路设计 -
Verilog之分频电路设计
2021-01-14 22:00:49Verilog之分频电路设计 一. 一个数字系统中往往需要多种频率的时钟脉冲作为驱动源,这样就需要对FPGA的系统时钟(频率较高)进行分频。比如在进行流水灯、数码管动态扫描设计时不能直接使用系统时钟(太快而肉眼无法... -
分频电路(转)
2012-09-07 18:25:05各种分频电路 偶数分频: 偶数分频电路比较简单,... 下面是一个N分频的偶数分频电路Verilog代码: module N_bit_even_divider ( input i_clk, input rst_n, output reg o_clk ); parameter N -
Verilog任意整数分频电路
2016-08-31 21:39:20任意整数分频Verilog代码 -
Verilog语实现奇数倍分频电路
2012-05-25 10:23:07Verilog语实现奇数倍分频电路, 3分频 5分频 7分频 -
verilog实现N分频电路
2019-09-24 10:30:30verilog实现N分频电路: module divn ( input clk, input rst_n, output o_clk ); parameter WIDTH = 3; parameter N = 6; reg [WIDTH-1:0] cnt_p; reg [WIDTH-1:0] cnt_n; reg clk_p; reg clk_n; assign o_clk = (N... -
【FPGA】分频电路设计(Verilog HDL设计)(良心博文)
2018-07-31 12:31:57虽然在实际工程中要产生分频时钟一般采用FPGA的时钟管理器来进行分频、倍频,通过设置一下IP核中的参数即可,这样做有很多别的方法(例如:直接用Verilog HDL设计分频电路)达不到的效果,产生时钟的质量也更好,... -
verilog 任意比例分频电路的实现_verilog 实现任意占空比、任意分频的方法
2021-01-14 05:48:29verilog实现任意占空比、任意分频的方法在verilog程序设计中,我们往往要对一个频率进行任意分频,而且占空比也有一定的要求这样的话,对于程序有一定的要求,现在我在前人经验的基础上做一个简单的总结,实现对一个...