虚拟机:VMware -14.0.0.24051
环 境:ubuntu 18.04.1
脚 本:makefile(点击直达)
应用工具:vcs 和 verdi


文章目录

  • 一、Demand
  • 二、Timeing
  • 三、Design and Functional Verification
  • (1)RTL
  • (2)Test Bench
  • 四、Result
  • (1)8分频(50%,#(8,4))
  • (2)3分频(50%,#(3,3))

一、Demand

  模块可实现2—15倍任意数分频,分频后所得时钟占空比为可整数周期调整。
  偶分频以FDC = 8分频为例(FDC分频系数),采用时钟上升沿计数,则最大计数值为8(0~8,计数器需要4位,0代表目前没有时钟沿来临,8表达已经有8个时钟沿来临),可调的占空比为1/8x100%,2/8x100%…;
  奇分频采用双沿检测,以FDC = 3分频为例,则最大计数值为6,可调的占空比为1/6,2/6…。


二、Timeing


三、Design and Functional Verification

(1)RTL

//-- modified by xlinxdu, 2022/04/26
module div
#(parameter FDC     = 10,parameter TOG_CNT = 5
)(input      clk    ,input      rst_n  ,output reg clk_div
);reg [3:0] cnt;
reg [4:0] cnt_odd;always @(posedge clk or negedge rst_n)beginif(!rst_n)begincnt <= 4'b0;endelse if((FDC%2 == 0) && (cnt < FDC))begincnt <= cnt + 1'b1;endelse if(FDC%2 == 0) begincnt <= 4'b1;end
endalways @(*) beginif((FDC%2 == 0)  && (cnt <= TOG_CNT))beginclk_div = 1'b1;endelse if((FDC%2 == 0) && (cnt > TOG_CNT))beginclk_div = 1'b0;end
endalways @(posedge clk or negedge clk or negedge rst_n)beginif(!rst_n)begincnt_odd <= 5'b0;endelse if((FDC%2 ) && (cnt_odd < 2*FDC))begincnt_odd <= cnt_odd + 1'b1;endelse if(FDC%2 ) begincnt_odd <= 5'b1;end
endalways @(*) beginif((FDC%2) && (cnt_odd <= TOG_CNT))beginclk_div = 1'b1;endelse if((FDC%2) && (cnt_odd > TOG_CNT))beginclk_div = 1'b0;end
endendmodule

(2)Test Bench

//-- modified by xlinxdu, 2022/04/26
`timescale 1ns/1ns
module tb_div;reg clk;reg rst_n;wire clk_div;initial beginclk   = 0;rst_n = 1;#10 rst_n = 0;#10 rst_n = 1;endalways #100 clk = ~clk;div #(8,4) tb_div (.clk(clk), .rst_n(rst_n), .clk_div(clk_div));initial begin$fsdbDumpfile("div.fsdb");$fsdbDumpvars              ;$fsdbDumpMDA               ;#10000 $finish             ;
end endmodule

四、Result

  下面的测试以8分频,50%占空比;3分频,50%占空比为例。通过测试用例传递参数改变分频系数和占空比。

(1)8分频(50%,#(8,4))

(2)3分频(50%,#(3,3))

  • 结果:测试波形与时序一样,数据通路正确,功能验证通过。

注意:注意奇分频时,占空比传递值的计算。


作者:xlinxdu
版权:本文是作者原创,版权归作者所有。
转载:未经作者允许,禁止转载,转载必须保留此段声明,必须在文章中给出原文连接。

05 占空比可调的整数奇偶分频器设计与功能验证(附源码)相关推荐

  1. 05【Verilog实战】AMBA 3 APB接口设计(附源码RTL/TB)

    官方手册:点击下载 脚  本:makefile 工  具:vcs & verdi 写在前面 这个专栏的内容记录的是个人学习过程,博文中贴出来的代码是调试前的代码,方便bug重现. 调试后的程序 ...

  2. (附源码)springboot球鞋调货管理系统 毕业设计 160942

    Springboot球鞋调货管理系统 摘  要 大部分的球鞋销售商和球鞋生产商他们的运营方式还停留在比较古老的时代.固然有一小部分球鞋销售商已经开始运用互联网作业,但是他们的球鞋销售管理系统并非很完美 ...

  3. (附源码)Springboot球鞋调货管理系统 毕业设计160942

    Springboot球鞋调货管理系统 摘 要 大部分的球鞋销售商和球鞋生产商他们的运营方式还停留在比较古老的时代.固然有一小部分球鞋销售商已经开始运用互联网作业,但是他们的球鞋销售管理系统并非很完美, ...

  4. spring boot基于Springboot的球鞋调货管理系统设计与实现 毕业设计-附源码160942

    Springboot球鞋调货管理系统 摘  要 大部分的球鞋销售商和球鞋生产商他们的运营方式还停留在比较古老的时代.固然有一小部分球鞋销售商已经开始运用互联网作业,但是他们的球鞋销售管理系统并非很完美 ...

  5. 怎样用c语言定义高幂整数,位操作运算的奇技淫巧!(附源码)

    位运算 百度百科如下: 程序中的所有数在计算机内存中都是以二进制的形式储存的.位运算就是直接对整数在内存中的二进制位进行操作 位操作的优势 位运算是一种底层的运算,往往比我们普通的运算要快上许多许多 ...

  6. 4种FPGA时钟分频 【附源码】:1.偶数分频;2.奇数分频(占空比50%);3.奇数分频(任意无占空比);4.小数分频;

    题目来源于牛客网,完整工程源码:https://github.com/ningbo99128/verilog 目录 VL37 偶数分频 VL40 奇数分频(占空比50%) VL42 奇数分频(任意无占 ...

  7. STM32增量式pid直流电机调速(内附源码)

    目录 一. 1.硬件组成 2.模块分析 1.TB6612电机驱动模块 2.直流减速电机 3.电源稳压模块 二.接线 三.代码思路讲解(详见源码) 四.STM32cubmx配置 1.系统基础配置:(重要 ...

  8. 占空比可调的分频电路实现

    在时序逻辑电路中,除了实现时钟的奇偶分频,还会涉及到时钟的占空比问题,现就该问题进行如下分析. 实现占空比为50%的分频电路很简单,对于偶分频电路只需将cnt计数到一半时进行输出q的翻转即可.比如8分 ...

  9. 基于STM32F03RCT的多路频率占空比可调PWM输出

    基于STM32F03RCT的多路频率占空比可调PWM输出 1. 准备 1.1. 硬件 1.2. 软件 2. 基础知识 3. CubeMX配置 3.1. 通用配置 3.2. 定时器配置及初始化代码生成 ...

最新文章

  1. Coding-排序(sort)
  2. Windows下Git的安装
  3. 数字内容交易平台php,Demila数字内容交易系统 v1.0
  4. phpmyadmin同时连接多个服务器的数据库
  5. HTML form 标签的 action 属性
  6. 用FTP客户端实现主机和虚拟机之间文件的传输(方法2)
  7. 大家对Java的一些误解
  8. zabbix3.4监控java_CentOS7,zabbix3.4通过,zabbix-Java-gateway监控Tomcat
  9. Python-Anaconda练习candy算子用于边缘提取,再用hough变换检测直线边缘
  10. arm-linux启动,linux启动流程arm
  11. python是什么课程-请问自学 Python 有必要买课程吗?
  12. Coloring Flame Graphs: Code Hues
  13. Windows8、Windows8.1使用便签工具
  14. 人脸识别门禁系统java实现_java实现人脸识别源码【含测试效果图】——前台显示层(index.jsp)...
  15. 12864液晶中文资料JHD529m1
  16. 英语口语收集(三十七)
  17. 计算机应用基础教程在线阅读,计算机应用基础教程
  18. Windows下搭配AirSim环境
  19. テクニカルアーティストに必要な資料集めようぜ!
  20. 【问题解决】Springboot中@Value()读取不到配置文件属性解决方法

热门文章

  1. WARNING:tensorflow:`add_update` `inputs` kwarg has been deprecated.
  2. Processing 网格纹理制作(棋盘格)
  3. Whitelabel Error Page并且报500
  4. matlab微分方程求解并仿真
  5. C++ + ubuntu 调用boost 的一个问题
  6. torch对于tensor的常规操作
  7. Label 相关论文汇总
  8. 园区信息通信基础设施管理方案
  9. 基于Cortex M0+的STM32L0系列简介
  10. 用js将HTML文本导出生成word文档