我们在做FPGA设计时,有时会用到时钟频率奇数分频的频率,例如笔者FPGA的晶振为50M,当我们需要10M的时钟时,一种方式可以使用DCM或PLL获取,系统会内部分频到10M,但其实VERILOG内部也完全能实现,所以我们还是来了解一下。

有这样一个欢乐的时钟了,我们要得到以下的分频效果:

奇数分频的难点就在于,三分频要求1.5倍的时钟时间翻转一次,这样整体的周期时间是原来的3倍,即三分频。五分频亦类似。而恰恰verilog不允许你在两个always模块里对同一reg赋值。

那怎么得到三分频的时钟呢?请看下图

如果生成这样一个占空比2/3,周期三倍于时钟的信号(2行)。同时产生一个超前或落后于它半个Clock周期时间的信号(3行),对两信号做与运算

,得到的结果就恰好是三分频的时钟(4行);而Verilog中恰好不允许你在两个always模块里对同一reg赋值,但允许你在Clock的Posedge和Negedge分别对两个不相关的信号赋值。

  1. assign clkout=state1[1]&state2[1];
  2. always@(posedge clk)
  3. begin
  4. case(state1)
  5. begin
  6. 2'b01:state<=2'b10;
  7. 2'b10:state<=2'b11;
  8. 2'b11:state<=2'b01;
  9. endcase
  10. end
  11. always@(negedge clk)
  12. begin
  13. case(state2)
  14. 2'b01:state<=2'b10;
  15. 2'b10:state<=2'b11;
  16. 2'b11:state<=2'b01;
  17. endcase
  18. end

同样的,五分频

  1. assign clkout=state1[1]&state2[1];
  2. always@(posedge clk)
  3. begin
  4. case(state1)
  5. begin
  6. 3'b010:state<=3'b011;
  7. 3'b011:state<=3'b100;
  8. 3'b100:state<=3'b101;
  9. 3'b101:state<=3'b110;
  10. 3'b110:state<=3'b111;
  11. 3'b111:state<=3'b010;
  12. endcase
  13. end
  14. always@(negedge clk)
  15. begin
  16. case(state2)
  17. 3'b010:state<=3'b011;
  18. 3'b011:state<=3'b100;
  19. 3'b100:state<=3'b101;
  20. 3'b101:state<=3'b110;
  21. 3'b110:state<=3'b111;
  22. 3'b111:state<=3'b010;
  23. endcase
  24. end

什么原理呢?其实这样想挺好理解的:

三分频,每1.5个时钟周期就要翻转一次,因此我们通过时钟上升沿构造低电平占1个时钟周期,高电平占2个时钟周期的信号,再通过时钟的下降沿产生相同的信号,这相当与把原信号右移了半个时钟周期,相与后高电平被削掉了半个周期,低电平添了半个周期,就产生了1.5个时钟周期翻转一次的效果。

五分频类似。

由此猜测11分频可以由上升沿构造低电平占5个时钟周期,高电平占6个时钟周期的信号产生,我们来验证一下

验证是的啦

转载自:http://blog.csdn.net/lt66ds/article/details/10035187

FPGA三分频,五分频,奇数分频的更多相关文章

  1. FPGA奇数分频

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

  2. NeHe OpenGL教程 第三十五课:播放AVI

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  3. 第三百五十六天 how can I 坚持

    一年了,三百五十六天.写个算法算下对不对. 今天突然想买辆自行车了.云马智行车,还是捷安特,好想买一辆. 网好卡.貌似少记了一天呢,357了.好快. 睡觉了,还没锻炼呢,太晚了. 1458748800 ...

  4. 第三百五十五天 how can I 坚持

    快一年了,三百五十五天了,等写个程序算算时间,看看日期和天数能不能对的上,哈哈. 计划还是未制定,天气预报还是没有写完,立马行动,发完这个博客,立马行动. 计划:设计模式1个月,三大框架3个月,计算机 ...

  5. JAVA之旅(三十五)——完结篇,终于把JAVA写完了,真感概呐!

    JAVA之旅(三十五)--完结篇,终于把JAVA写完了,真感概呐! 这篇博文只是用来水经验的,写这个系列是因为我自己的java本身也不是特别好,所以重温了一下,但是手比较痒于是就写出了这三十多篇博客了 ...

  6. Java进阶(三十五)java int与integer的区别

    Java进阶(三十五)java int与Integer的区别 前言 int与Integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而Integer是对象 ...

  7. Gradle 1.12用户指南翻译——第三十五章. Sonar 插件

    本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  8. SQL注入之Sqli-labs系列第三十四关(基于宽字符逃逸POST注入)和三十五关

    开始挑战第三十四关和第三十五关(Bypass add addslashes) 0x1查看源码 本关是post型的注入漏洞,同样的也是将post过来的内容进行了 ' \ 的处理. if(isset($_ ...

  9. “全栈2019”Java多线程第三十五章:如何获取线程被等待的时间?

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

随机推荐

  1. 调整WebLogic的时间

    控制台显示的时区为GMT,于是考虑调整WebLogic的时区,查询WebLogic的相关参数后,初步的调整方式为:修改相关域下的bin目录中的startWebLogic.cmd脚本.添加"- ...

  2. 翻译记忆软件-塔多思TRADO经典教程_4

    SDL Trados是世界上最流行的计算机辅助翻译(CAT) 软件,在全球拥有20万多客户,全球500强企业有超过90%的公司都在使用SDL Trados来为日常的本地化翻译工作服务.我们的使命是以强 ...

  3. Android动态设置字体颜色

    步骤: 1.在values目录下的strings.xml文件中加入颜色:比方 <color name="ccc">#ccc</color> 2.假设你直接这 ...

  4. Wide - Residual - Inception Networks for R eal - time O bject D etection

    本文的提出了一个WR-inception网络结构.只需更小的内存消耗和更小的计算量. 作者使用了一种微结构,整个宏观网络都是由这个微结构组成. 微结构 微结构的种类如下: 基本的残差结构(3*3,3* ...

  5. 【Oracle】ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

    早上使用PL/SQL连接Oracle的时候,报错如下 解决办法: 找到文件listener.ora,新增以下红色区域,注意:路径需要根据自己的Oracle安装路径自行设置 # listener.ora ...

  6. spring boot更换日志为log4j2

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring- ...

  7. java中的Checked Exception和Unchecked Exception的区别

    Java 定义了两种异常: - Checked exception: 继承自 Exception 类是 checked exception.代码需要处理 API 抛出的 checked excepti ...

  8. CentOS关闭休眠和屏保模式

    CentOS关闭休眠和屏保模式   本人因为特殊需求,想让某台Linux主机始终显示某个程序,显示器不能关机或者休眠或进入屏保模式. 环境:Ubuntu 11.10 最小化模式安装并安装有轻量级桌面o ...

  9. MYSQL在Win下免安装zip

    mysql对于Win测试简单zip安装即可了解my.in配置文件的妙处(show variables),本地搭建mysql服务测试引擎! 01.下载 https://dev.mysql.com/dow ...

  10. Android基于TCP的局域网聊天通信

    概述 在同一局域网内,两台设备通过TCP进行通信聊天. 详细 代码下载:http://www.demodashi.com/demo/10567.html 一.准备工作 开发环境 jdk1.8 Ecli ...