Verilog任意整数分频器
Verilog任意整数分频器
- Verilog任意整数分频器
- 偶数分频
- 奇数分频
- 两种情况结合一下
在实际设计中有的时候需要简单的任意整数分频器,整数分频器主要解决两种情况下的分频,一个是偶数分频,另一个是奇数分频
偶数分频
偶数分频比较简单,可以使用一个计数器来实现,对输入时钟进行计数,当计数器的值为N/2-1时,将输出翻转,同时将计数器清零即可。(N为分频系数)
module EvenDiv_v100(
N,
fin,
rst,
fout
);input [4:0] N;
input fin,rst;output reg fout;reg [4:0] cnter;
always @(posedge fin or posedge rst)
beginif(rst) begincnter<=5'd0;fout<=1'b0;endelse if(cnter>=({1'b0,N[4:1]}-1))begincnter<=5'd0;fout<=~fout;endelsecnter<=cnter+5'd1;
endendmodule
奇数分频
奇数分频稍微复杂一些,针对需要输出为50%占空比的情况下,要采用两个计数器分别对输入时钟的上升沿和下降沿计数,计数到(N-1)/2时对输出进行翻转,继续计数到N-1的时候对输出进行再次翻转同时清空计数器,将两个计数器(分别是上升沿和下降沿)输出结果相或输出即可。
module OddDiv_v100(
N,
fin,
rst,
fout);input [4:0] N;
input fin,rst;output wire fout; assign fout=PosOut|NegOut;reg [4:0] PosCnter,NegCnter;
reg PosOut,NegOut;always @(posedge fin or posedge rst)
beginif(rst)beginPosOut<=1'b0;PosCnter<=5'd0;endelse if(PosCnter==(N-1)/2)beginPosCnter<=PosCnter+5'd1;PosOut<=~PosOut;endelse if(PosCnter==(N-1))beginPosCnter<=5'd0;PosOut<=~PosOut;endelsePosCnter<=PosCnter+5'd1;
endalways @(negedge fin or posedge rst)
beginif(rst)beginNegCnter<=5'd0;NegOut<=1'b0;endelse if(NegCnter==(N-1)/2)beginNegCnter<=NegCnter+5'd1;NegOut<=~NegOut;endelse if(NegCnter==(N-1))beginNegCnter<=5'd0;NegOut<=~NegOut;endelseNegCnter<=NegCnter+5'd1;
endendmodule
两种情况结合一下
将上述对奇数和偶数分频逻辑集合一下,可以直接判定输入分频系数N为奇数或偶数来决定输出奇数分频结果或者偶数分频结果
module FrequencyDivision_v100(
N,
fin,
rst,
fout
);input [4:0] N;input fin,rst;output wire fout; assign fout=N[0]?OddFout:EvenFout;reg [4:0] EvenCnter,OddCnter1,OddCnter2;
reg EvenFout,OddFout1,OddFout2;wire OddFout; assign OddFout=OddFout1|OddFout2;//==============Even Frequency Division===========//
always @(posedge fin or posedge rst)
beginif(rst)beginEvenCnter<=5'd0;EvenFout<=1'b0;endelse if(EvenCnter>=({1'b0,N[4:1]}-1))beginEvenCnter<=5'd0;EvenFout<=~EvenFout;endelseEvenCnter<=EvenCnter+5'd1;
end//==============Odd Frequency Division===========//
always @(posedge fin or posedge rst)
beginif(rst)beginOddFout1<=1'b0;OddCnter1<=5'd0;endelse if(OddCnter1==(N-1)/2)beginOddCnter1<=OddCnter1+5'd1;OddFout1<=~OddFout1;endelse if(OddCnter1==(N-1))beginOddCnter1<=5'd0;OddFout1<=~OddFout1;endelseOddCnter1<=OddCnter1+5'd1;
endalways @(negedge fin or posedge rst)
beginif(rst)beginOddCnter2<=5'd0;OddFout2<=1'b0;endelse if(OddCnter2==(N-1)/2)beginOddCnter2<=OddCnter2+5'd1;OddFout2<=~OddFout2;endelse if(OddCnter2==(N-1))beginOddCnter2<=5'd0;OddFout2<=~OddFout2;endelseOddCnter2<=OddCnter2+5'd1;
endendmodule
Verilog任意整数分频器相关推荐
- Verilog实现---1/x任意整数分频器通用代码
目录 1.偶数分频 2.奇数分频 3.代码文件说明 4.端口说明 5.测试&波形 6.代码 7.Reference 1.偶数分频 对于占空比为50%,分频系数为N的偶数分频,其核心思想是使用计 ...
- <Verilog实现数字分频器> 偶数分频器
一,内容介绍 分频器是数字电路的常见IP,将高频时钟分为低频时钟信号以供外设使用. 下面我们用verilog实现一个偶数分频器 进一步结合奇数分频器组合为整数分频器 再一步升级为小数分频器 二,数字分 ...
- 任意整数分频(图文并茂)
上一篇文章讲解了如何进行任意的奇分频和任意的偶分频,这篇文章主要讲解占空比为50%的任意整数分频(奇分频和偶分频),下面首先以6分频和5分频来回顾一下奇偶分频. 偶分频 偶分频时最简单的,通过下图就可 ...
- matlab x为整数,关于matlab中用什么字符表示任意整数
matlab做除法,怎么取整数? 方法一: floor(a/b);就是舍去小数点. ceil(a/b)就是舍去小数点+1的数. 方法二: fix(x)截尾取整 fix(x)不超过x的最大整数 ceil ...
- java 五个数字_关于java:五个任意整数找出其中第二大的数字
package comxaqf.w02_objectoriented.a_saturday1030; import java.util.Scanner; /** [题6] 6.五个任意整数,找出其中第 ...
- 20210916:Verilog的整数类型易错点
Verilog的整数类型表示易错点 对比类型 仿真结果 易错点分析 总结 对比类型 分析以下四个值的结果: wire [31:0] A; wire [31:0] B; wire [31:0] C; w ...
- C语言随笔小算法:取出一个任意整数的每一位数值
C语言随笔小算法:取出一个任意整数的每一位数值 代码: #include "stdlib.h" #include "stdio.h"//将val的各位取出来 i ...
- mysql编写1到n的奇数和_编写程序。输入任意整数n,计算1到n的奇数和
编写程序.输入任意整数n,计算1到n的奇数和以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 编写程序.输入任意整数n,计 ...
- python求1到n的奇数和_编写程序。输入任意整数n,计算1到n的奇数和。C语言编写程序 输入整数N 显...
编写程序.输入任意整数n,计算1到n的奇数和. C语言编写程序 输入整数N 显 www.zhiqu.org 时间: 2020-11-23 解题思路:循环判断1到N的每一个数: 若除以2是结果为整数,也 ...
最新文章
- OpenCV+python:读取图片和视频详细信息
- FPGA中LVDS差分高速传输的实现
- matlab中表示拉普拉斯分布_CHAPT1:场论;电磁学和微波学的基本的数学手段和表示...
- 需要在Emulator上模拟来电 效果
- Linux监听进程是否存在,并加入定时任务
- dubbo Trace 日志追踪
- 视频上传、转码、切面、存储的思路
- WebGIS中一种根据网格索引判断点面关系的方法
- PHP专家陪练营试听课程下载
- 蓝桥杯算法提高 盾神与条状项链
- mysql驱动有什么用_什么是数据库驱动?
- 鸿海精密收购东芝闪存业务志在必得 或出价270亿美元
- 22万抢注“活动”双拼域名,95后创业者却因困意失之交臂
- 计算机cpu对什么访问最快,CPU直接访问的存储器是什么?
- Linux内核设计与实现 第18章 调试
- 【Bug】无法访问Windows Installer服务
- 黑马最新Android P2P金融项目开发实战 视频+项目源码
- 微信小程序手机号输入3和7位空格,删除时删除空格
- xdlove的暑期实践总结(大二篇)
- Python 教你绘制个人旅行地图,就是那么牛
热门文章
- 192.168.8.1手机登陆_192.168.1.1手机登陆设置
- mysql无法存储微表情、微信昵称包含微表情无法存储数据库
- 【生产力汇总】毕业论文写作必备工具,高效自动化
- 【Unity】如何让粒子系统显示在UI上呢?
- Django(bug)——Manager isn‘t available ‘auth.User‘ has been swapped for ‘authentication.UserInfo‘
- moment(‘time‘,‘YYYY-MM-DD HH:mm:ss‘)和moment(‘time‘).format(‘YYYY-MM-DD HH:mm:ss‘)的区别
- painter X Artists’ Oils(艺术家油彩)画笔
- 太牛逼了!用 Python 实现抖音上的“人像动漫化”特效,原来这么简单!
- 惠普局域网共享打印机设置_win7惠普32位系统局域网设置打印机共享的对策
- Android4.0 默认静、动态桌面设置