精华内容
下载资源
问答
  • 分频电路Verilog设计

    千次阅读 2019-09-27 13:33:37
    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...

    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
    

     

     

     

     

    展开全文
  • 分频模块文件: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

    展开全文
  • 分频模块文件: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

    展开全文
  • IC君的第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 转发、分享、点“在看”哦,谢谢!

    展开全文
  • 分频Verilog实现1.分频:在实际应用中,自己设计的开发板上不会去装多个晶振来产生不同频率的时钟信号,这就要我们在已有的基础上自己来创造设计电路中所需要的时钟信号来,有时候所需要的频率并不是在已有的频率...
  • 分频电路-verilog

    千次阅读 2017-05-20 17:05:59
    1. 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 HDL描述。修改代码中参数可以进行任意奇数分频,包含了设计文档和源代码。
  • 1.偶数倍(2N)分频使用一模N计数器模块即可实现,即每当模N计数器上升沿从0开始计数至N-1时,输出时钟进行翻转,同时给计数器一复位信号使之从0开始重新计数,以此循环即可。偶数倍分频原理示意图见图1。2.奇数倍(2N+...
  • IC君的第47篇原创文章 (欢迎关注公众号 icstudy)上一篇文章时钟分频系列——偶数分频/奇数分频/分数分频,IC君介绍了各种分频器的设计原理,其中分数分频器较为复杂,这一篇文章IC君再跟大家聊聊分数分频的具体...
  • IC君的第47篇原创文章 (欢迎关注公众号 icstudy)上一篇文章时钟分频系列——偶数分频/奇数分频/分数分频,IC君介绍了各种分频器的设计原理,其中分数分频器较为复杂,这一篇文章IC君再跟大家聊聊分数分频的具体...
  • //偶数分频,直接输出 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),包括积偶分频。
  • 奇偶分频使用计数器实现,这种做法感觉很nice,值得看一下!
  • 老李这次又要来分析常考的面试题了,这次咱们聊聊时钟分频电路。这一类面试题很常见,难度其实不大,看了这一篇,老李保证你能够在面试中自如应付。先说什么是时钟分频(clock divide),我们都知道现在的数字电路都是...
  • Verilog设计(二):分频电路设计 https://blog.csdn.net/qq_26652069/article/details/90759052 基于verilog的分频器设计(奇偶分频原理及其电路实现:上) https://www.cnblogs.com/Fun-with-FPGA/p/4700631.html...
  • 基于verilog的5分频电路设计
  • Verilog分频电路设计

    2021-01-14 22:00:49
    Verilog分频电路设计 一. 一个数字系统中往往需要多种频率的时钟脉冲作为驱动源,这样就需要对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语实现奇数倍分频电路, 3分频 5分频 7分频
  • verilog实现N分频电路

    千次阅读 2019-09-24 10:30:30
    verilog实现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的时钟管理器来进行分频、倍频,通过设置一下IP核中的参数即可,这样做有很多别的方法(例如:直接用Verilog HDL设计分频电路)达不到的效果,产生时钟的质量也更好,...
  • verilog实现任意占空比、任意分频的方法在verilog程序设计中,我们往往要对一个频率进行任意分频,而且占空比也有一定的要求这样的话,对于程序有一定的要求,现在我在前人经验的基础上做一个简单的总结,实现对一个...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 198
精华内容 79
关键字:

分频电路verilog