【Verilog HDL 训练】第 11 天(分频电路)
设计一个占空比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 天(分频电路)相关推荐
- 【Verilog HDL 训练】第 06 天(边沿检测)
1. 复习verilog语法 [选做题] - reg和wire的区别 寄存器数据类型 Verilog中规定,凡是在程序块中被赋值的变量,都必须是寄存器类型的.(程序块:例如always块) 这里未免还 ...
- 【 Verilog HDL 】避免出现锁存器的组合电路描述方式
无论多么复杂的FPGA设计,如果我们将其中具有存储功能的机构(寄存器.RAM.FIFO等)全部拿掉,那么剩下的若干独立数字电路网络则都是纯组合逻辑电路,对应的,我们称FPGA设计中这些具有存储功能的结 ...
- 【Verilog HDL 训练】第 14 天(glitch-free的两个时钟切换电路)
2019年5月13日 glitch-free的两个时钟切换电路. 可以看到这是一个星期之前的题目了,现在才抽空做,把这篇颠倒个顺序吧,也是最后一天了,以后的题目都是讨论性质的,不会以第多少天的形式来写 ...
- 【Verilog HDL 训练】第 05 天(序列检测)
1. dff和latch有什么区别. 锁存器是一种对脉冲电平(也就是0或者1)敏感的存储单元电路,而触发器是一种对脉冲边沿(即上升沿或者下降沿)敏感的存储电路. "触发器" 泛指一 ...
- 【Verilog HDL 训练】第 10 天(PWM 呼吸灯)
5月8日 PWM 用verilog实现PWM控制呼吸灯.呼吸周期2秒:1秒逐渐变亮,1秒逐渐变暗.系统时钟24MHz,pwm周期1ms,精度1us. 今天的题目我是第一次见,答案借鉴大神的:Veril ...
- 【Verilog HDL 训练】第 07 天(串并转换)
串并转换 1. 复习verilog语法 [选做题] - 文件操作fopen fdisplay fwrite fclose - 生成随机数 random - 初始化 readmemh readmemb ...
- 【Verilog HDL 训练】第 04 天(竞争、冒险、译码等)
1. 什么是竞争和冒险? 记得我刚学FPGA那会,恶补基础知识,其中之一就是竞争与冒险,我参考了<FPGA之道>,记录了几篇博客: [ FPGA ]组合逻辑中的竞争与险象问题(一) 第一篇 ...
- 【Verilog HDL 训练】第 13 天(存储器、SRAM)
存储器. 1. rom,ram,flash,ddr,sram,dram,mram..列举并解释一下这些名词. 2. 用verilog实现一个深度为16,位宽8bit的单端口SRAM.搭建一个仿真环境, ...
- 【Verilog HDL 训练】第 09 天(按键消抖)
5月7日 按键防抖 1. 用verilog实现按键抖动消除电路,抖动小于15ms,输入时钟12MHz. 在编写Verilog代码之前,先分析下一些前提问题,首先是几个按键(1个,多个),我们以1个和三 ...
最新文章
- 年终收藏!一文看尽2020年度最出圈AI论文合集
- 大体了解Android应用安装过程及原理
- 使用Rainbow tables和Ophcrack的组合工具破解Windows密码
- python使用tkinter做界面之颜色
- s3c6410 jpeg编码 linux,S3C6410 裸机硬件JPEG解码
- 加班累到住院,到30岁年薪百万:你所谓的拼命,绝不是职场捷径
- Postgresql 按30分钟、小时、天分组
- 【OpenCV】OpenCV实战从入门到精通图像的载入、显示与输出
- greenplum 替代mysql_转:MySQL到Greenplum迁移分析
- ES5 对象的扩展(Object.preventExtensions)、密封(Object.seal)和冻结(Object.freeze)
- 说明书中电磁兼容部分指南和制造商的声明怎么写?
- WebStorm 2019.1.1 最新注册码
- python海龟绘图颜色_Python:海龟绘图(六)——来点颜色看看
- BigDecimal取余运算
- 012 相关性与线性表示总结;向量组的秩、向量组等价
- 【算法】旅行商A*算法
- 问题 G: 流连人间的苏苏
- bk=1160,求k值,bn是一个集合{2^t+2^s+2^r}且t>s>r>=0程序验证
- 解决STM32 硬件IIC死锁在BUSY状态的方法讨论
- 图片放大不模糊的解决方法
热门文章
- 虚拟话安全:4个基本点
- __init__在python中的用法知乎_python使用selenium爬虫知乎的方法示例
- python 销量预测模型_如何做电商的销量预测模型?
- centos 静态ip_CentOS 6 静态 IP 配置
- 每列大于0的个数_二进制中1的个数(剑指offer第十四天)
- android教程 - android ui 介绍,多图详解 “Android UI”设计官方教程
- java 遇到的问题_Java常见问题汇总(一)
- 服务器挖chia用什么系统,Chia是什么?Chia挖矿服務器配置
- js两个等号和三个等号_js中两个等号(==)和三个等号(===)的区别
- 第十六届全国大学生智能车参赛与防疫承诺书