设计一个占空比50%的三分频电路。


针对这个分频器,博文的末尾会给出一个反面教材,这是我上次写的一个分频器,看起来很好,其实是不能综合的。针对其中的错误,我令立博文记录之:【 Verilog 】always@()的敏感源中为什么不能双边沿触发?为什么不能双时钟触发?

感谢学习道路上的前辈给予的指导:下面的分频器思路是:

画了个草图:

给出Verilog HDL描述:

module Freq_divide(input clk,input rst_n,output clk_divide);//先写一个占空比为1/3的分频时钟reg clk_1_3;reg [2:0] count;always@(posedge clk or negedge rst_n) beginif(!rst_n) begincount <= 0;clk_1_3 <= 0;endelse if(count == 1) beginclk_1_3 <= ~clk_1_3;count <= count + 1;endelse if(count == 2) begincount <= 0;clk_1_3 <= ~clk_1_3;endelse begincount <= count + 1;clk_1_3 <= clk_1_3;endendreg clk_1_3_r;//下降沿采样上述时钟always@(negedge clk or negedge rst_n) beginif(!rst_n) beginclk_1_3_r <= 0;endelse beginclk_1_3_r <= clk_1_3;endend//产生分频时钟assign clk_divide = clk_1_3 | clk_1_3_r;endmodule

再给出testbench文件以及行为仿真时序图:

`timescale 1ns / 1psmodule clk_divide_tb();reg clk;reg rst_n;wire clk_divide;initial beginclk = 0;forever #2 clk = ~clk;endinitial beginrst_n = 0;#10rst_n = 1;endFreq_divide u0(.clk(clk),.rst_n(rst_n),.clk_divide(clk_divide));endmodule

可见,功能完好;

再给出RTL电路图:

3分频占空比为50的分频器到底为止,下面是一个反面教材:


记住,这种写法万万不可!

对于奇分频电路,我的思路是:

以3分频为例,那么周期为原来的3倍,那么对原时钟clk,经历1.5个时钟上升沿,分频时钟翻转一次即可。

可是这里有一个问题就是如何实现1.5时钟上升沿呢?(上升沿和下降沿都算?)

我们先对原时钟取反,即相位相差180°,得到时钟clk_reverse;之后对时钟clk和clk_reverse的上升沿计数,计数到2,分频时钟翻转一次即可。

Verilog描述为:

module Freq_divide(input clk,input rst_n,output reg clk_divide);wire clk_reverse;assign clk_reverse = ~clk;reg [3:0] count;always @ (posedge clk or posedge clk_reverse or negedge rst_n) beginif(!rst_n) begincount <= 0;endelse if(count < 2) begincount <= count + 1;endelse begincount <= 0;endendalways @ (posedge clk or posedge clk_reverse or negedge rst_n) beginif(!rst_n) beginclk_divide <= 0;endelse if(count == 2) beginclk_divide <= ~clk_divide;endelse beginclk_divide <= clk_divide;endendendmodule

仿真文件:

`timescale 1ns / 1psmodule clk_divide_tb();reg clk;reg rst_n;wire clk_divide;initial beginclk = 0;forever #2 clk = ~clk;endinitial beginrst_n = 0;#10rst_n = 1;endFreq_divide u0(.clk(clk),.rst_n(rst_n),.clk_divide(clk_divide));endmodule

行为仿真时序图:

可见,分频时钟clk_divide周期为原时钟clk的3倍,即完成了3分频的工作。

【Verilog HDL 训练】第 11 天(分频电路)相关推荐

  1. 【Verilog HDL 训练】第 06 天(边沿检测)

    1. 复习verilog语法 [选做题] - reg和wire的区别 寄存器数据类型 Verilog中规定,凡是在程序块中被赋值的变量,都必须是寄存器类型的.(程序块:例如always块) 这里未免还 ...

  2. 【 Verilog HDL 】避免出现锁存器的组合电路描述方式

    无论多么复杂的FPGA设计,如果我们将其中具有存储功能的机构(寄存器.RAM.FIFO等)全部拿掉,那么剩下的若干独立数字电路网络则都是纯组合逻辑电路,对应的,我们称FPGA设计中这些具有存储功能的结 ...

  3. 【Verilog HDL 训练】第 14 天(glitch-free的两个时钟切换电路)

    2019年5月13日 glitch-free的两个时钟切换电路. 可以看到这是一个星期之前的题目了,现在才抽空做,把这篇颠倒个顺序吧,也是最后一天了,以后的题目都是讨论性质的,不会以第多少天的形式来写 ...

  4. 【Verilog HDL 训练】第 05 天(序列检测)

    1. dff和latch有什么区别. 锁存器是一种对脉冲电平(也就是0或者1)敏感的存储单元电路,而触发器是一种对脉冲边沿(即上升沿或者下降沿)敏感的存储电路. "触发器" 泛指一 ...

  5. 【Verilog HDL 训练】第 10 天(PWM 呼吸灯)

    5月8日 PWM 用verilog实现PWM控制呼吸灯.呼吸周期2秒:1秒逐渐变亮,1秒逐渐变暗.系统时钟24MHz,pwm周期1ms,精度1us. 今天的题目我是第一次见,答案借鉴大神的:Veril ...

  6. 【Verilog HDL 训练】第 07 天(串并转换)

    串并转换 1. 复习verilog语法 [选做题] - 文件操作fopen fdisplay fwrite fclose - 生成随机数 random - 初始化 readmemh readmemb ...

  7. 【Verilog HDL 训练】第 04 天(竞争、冒险、译码等)

    1. 什么是竞争和冒险? 记得我刚学FPGA那会,恶补基础知识,其中之一就是竞争与冒险,我参考了<FPGA之道>,记录了几篇博客: [ FPGA ]组合逻辑中的竞争与险象问题(一) 第一篇 ...

  8. 【Verilog HDL 训练】第 13 天(存储器、SRAM)

    存储器. 1. rom,ram,flash,ddr,sram,dram,mram..列举并解释一下这些名词. 2. 用verilog实现一个深度为16,位宽8bit的单端口SRAM.搭建一个仿真环境, ...

  9. 【Verilog HDL 训练】第 09 天(按键消抖)

    5月7日 按键防抖 1. 用verilog实现按键抖动消除电路,抖动小于15ms,输入时钟12MHz. 在编写Verilog代码之前,先分析下一些前提问题,首先是几个按键(1个,多个),我们以1个和三 ...

最新文章

  1. 年终收藏!一文看尽2020年度最出圈AI论文合集
  2. 大体了解Android应用安装过程及原理
  3. 使用Rainbow tables和Ophcrack的组合工具破解Windows密码
  4. python使用tkinter做界面之颜色
  5. s3c6410 jpeg编码 linux,S3C6410 裸机硬件JPEG解码
  6. 加班累到住院,到30岁年薪百万:你所谓的拼命,绝不是职场捷径
  7. Postgresql 按30分钟、小时、天分组
  8. 【OpenCV】OpenCV实战从入门到精通图像的载入、显示与输出
  9. greenplum 替代mysql_转:MySQL到Greenplum迁移分析
  10. ES5 对象的扩展(Object.preventExtensions)、密封(Object.seal)和冻结(Object.freeze)
  11. 说明书中电磁兼容部分指南和制造商的声明怎么写?
  12. WebStorm 2019.1.1 最新注册码
  13. python海龟绘图颜色_Python:海龟绘图(六)——来点颜色看看
  14. BigDecimal取余运算
  15. 012 相关性与线性表示总结;向量组的秩、向量组等价
  16. 【算法】旅行商A*算法
  17. 问题 G: 流连人间的苏苏
  18. bk=1160,求k值,bn是一个集合{2^t+2^s+2^r}且t>s>r>=0程序验证
  19. 解决STM32 硬件IIC死锁在BUSY状态的方法讨论
  20. 图片放大不模糊的解决方法

热门文章

  1. 虚拟话安全:4个基本点
  2. __init__在python中的用法知乎_python使用selenium爬虫知乎的方法示例
  3. python 销量预测模型_如何做电商的销量预测模型?
  4. centos 静态ip_CentOS 6 静态 IP 配置
  5. 每列大于0的个数_二进制中1的个数(剑指offer第十四天)
  6. android教程 - android ui 介绍,多图详解 “Android UI”设计官方教程
  7. java 遇到的问题_Java常见问题汇总(一)
  8. 服务器挖chia用什么系统,Chia是什么?Chia挖矿服務器配置
  9. js两个等号和三个等号_js中两个等号(==)和三个等号(===)的区别
  10. 第十六届全国大学生智能车参赛与防疫承诺书