http://www.cnblogs.com/fpga/archive/2009/10/24/1589318.html

占空比为50%的分频

偶数分频比较简单

比如N分频,那么计数到N/2-1,然后时钟翻转,代码如下:


 1 module even(clk_in,clk_out,rst_n);
 2 input clk_in;
 3 input rst_n;
 4 output clk_out;
 5 
 6 parameter N=6;
 7 
 8 reg [3:0] cnt;
 9 reg clk_out;
10 
11 always @(posedge clk_in or negedge rst_n) begin
12 if(!rst_n) begin    
13     cnt<=4'b0000;
14     clk_out<=0;
15 end
16 else if(cnt==(N/2-1)) begin
17 clk_out<=~clk_out;
18 cnt<=4'b0000;
19 end else cnt<=cnt+1; 
20 end
21 endmodule 

实现奇数分频,分别用上升沿计数到(N-1)/2-1,再计数到N-1,再用下降沿计数到(N-1)/2-1,再计数到N-1,,得到两个波形,然后相或即可 代码如下:


 1 module div3(clk,clk_out,rst_n);
 2 input clk,rst_n;
 3 output clk_out;
 4 
 5 reg [3:0] cnt_p,cnt_n;
 6 reg clk_p,clk_n;
 7 parameter N=5;
 8 
 9 always @(posedge clk or negedge rst_n) begin
10   if(!rst_n)
11     cnt_p<=4'h0;
12   else if(cnt_p==N-1)
13     cnt_p<=0;
14   else cnt_p<=cnt_p+1;
15   end
16   
17   always @(negedge clk or negedge rst_n) begin
18   if(!rst_n)
19     cnt_n<=4'h0;
20   else if(cnt_n==N-1)
21     cnt_n<=0;
22   else cnt_n<=cnt_n+1;
23   end
24   
25 always @(posedge clk or negedge rst_n) begin
26   if(!rst_n)
27     clk_p<=1;
28   else if(cnt_p==(N-1)/2-1)
29     clk_p<=~clk_p;
30   else if(cnt_p==(N-1))
31     clk_p<=~clk_p;
32   end
33 
34 always @(negedge clk or negedge rst_n) begin
35   if(!rst_n)
36     clk_n<=1;
37   else if(cnt_n==(N-1)/2-1)
38     clk_n<=~clk_n;
39   else if(cnt_n==(N-1))
40     clk_n<=~clk_n;
41   end  
42  assign clk_out=clk_n|clk_p;
43  endmodule

FPGA时钟分频(转)的更多相关文章

  1. [原创][FPGA]时钟分频之奇分频(5分频)

    0. 简介 有时在基本模块的设计中常常会使用到时钟分频,时钟的偶分频相对与奇分频比较简单,但是奇分频的理念想透彻后也是十分简单的,这里就把奇分频做一个记录. 1. 奇分频 其实现很简单,主要为使用两个 ...

  2. 时钟分频方法---verilog代码

    时钟分频方法---verilog代码 本文以SDI播出部分的工程为例,来说明一种时钟分频的写法.SD-SDI工程中播出时钟tx_usrclk为148.5MHz,但tx_video_a_y_in端的数据 ...

  3. FPGA奇数分频

    在FPGA设计中,分频是很常用的一个基本功能,一般来说,如果需要偶数分频即2次幂的整数倍,这个就很简单了,如2.4.8.16.32.64等这些以2的整数倍的. 这里说的是奇数倍分频,如时钟是100MH ...

  4. FPGA三分频,五分频,奇数分频

    我们在做FPGA设计时,有时会用到时钟频率奇数分频的频率,例如笔者FPGA的晶振为50M,当我们需要10M的时钟时,一种方式可以使用DCM或PLL获取,系统会内部分频到10M,但其实VERILOG内部 ...

  5. FPGA分频与倍频的简单总结(涉及自己设计,调用时钟IP核,调用MMCM原语模块)

    原理介绍 1.分频 FPGA设计中时钟分频是重要的基础知识,对于分频通常是利用计数器来实现想要的时钟频率,由此可知分频后的频率周期更大.一般而言实现偶数系数的分频在程序设计上较为容易,而奇数分频则相对 ...

  6. 7系列FPGA的时钟资源——UG472

    时钟架构总览 7系的FPGA使用了专用的全局(Global)和区域(Regional)IO和时钟资源来管理设计中各种的时钟需求.Clock Management Tiles(CMT)提供了时钟合成(C ...

  7. 基于FPGA的飞机的小游戏

    基于FPGA的飞机的小游戏 实验原理 该实验主要分为4个模块,采用至上而下的设计方法进行设计.由50M的晶振电路提供时钟源,VGA显示控制模块.图形显示控制模块.移动模块的时钟为25M,由时钟分频电路 ...

  8. 实验箱FPGA部分测试报告及A8与FPGA链接测试报告

    其实,我一开始还以为实验箱不会有什么问题只是让我们多学习东西才做这个测试的,结果发现还真的有不少问题. 1.实验准备部分 安装驱动时,win10系统无法正确安装usb-blaster Windows ...

  9. verilog实现奇数倍分频

    在学习FPGA的过程中,最简单最基本的实验应该就是分频器了, 同时分频器也是FPGA设计中使用频率非常高的基本设计之一, 尽管在芯片厂家提供的IDE中集成了锁相环IP, 如altera 的PLL,Xi ...

随机推荐

  1. Java面向对象 IO (一)

     Java面向对象  IO  (一) 知识概要:                (1)IO概述 (2)IO流的常用基类 (3)IO程序的书写 (4)字符流  写入  读取  文本文件的两种读取方式 ...

  2. 读Zepto源码之Stack模块

    Stack 模块为 Zepto 添加了 addSelf 和 end 方法. 读 Zepto 源码系列文章已经放到了github上,欢迎star: reading-zepto 源码版本 本文阅读的源码为 ...

  3. DevOps之软件定义网络SDN

    唠叨话 关于德语噢屁事的知识点,仅提供专业性的精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. <软件定义网络SDN(Software Defined Network)> 关于软 ...

  4. Python数据分析(二): Pandas技巧 (1)

    第一部分: ipython http://www.cnblogs.com/cgzl/p/7623347.html 第二部分: numpy http://www.cnblogs.com/cgzl/p/7 ...

  5. 【学习】原生js学习笔记1:添加class和使input为不可用

    <input type="checkbox" id="new_check" onChange="noUse()" checked> ...

  6. 带你领会 线性代数 微积分的本质 3blue1brown 动画效果帅出天际

    前段时间在 哔哩哔哩 上偶然发现了 3blue1brown 精美的动画,配上生动的讲解,非常适合帮助建立数学的形象思维 其中两大系列,非常值得反复观看: 线性代数的本质(Essence of line ...

  7. canvas+gif.js打造自己的数字雨头像

    前言 昨天 是1024程序员节,不知道各位看官过的怎么样.既然是过节,就要有个过节的样子,比方说,换个头像

  8. iOS之创建一个常驻线程

    // 当创建一个线程,并且希望它一直存在时,但往往我们创建的线程都是执行完成之后也就停止了,不能再次利用,那么如何创建一个线程可以让他可以再次工作呢,这个时候就需要使用到RunLoop了.下面的是我写 ...

  9. Java常用API

    常用Java API 一. java.io.BufferedReader类(用于从文件中读入一段字符:所属套件:java.io) 1. 构造函数BufferedReader(java.io.FileR ...

  10. .6-Vue源码之AST(2)

    上一节获取到了DOM树的字符串,准备进入compile阶段: // Line-9326 function compileToFunctions(template,options,vm) { // 获取 ...