文章目录
那么在上一章节当中,我们对分频器的相关理论知识做了一个系统性的讲解,那么重点讲解了我们的偶数分频,并且通过实验工程使用分频和降频两种方法,设计并实现了将系统时钟进行六分频的偶数分频电路,而且通过了上板验证。那么既然有偶数分频就一定存在奇数分频,那么本章节的主要内容就针对我们的奇数分频。
在分频功能的实现方式上,我们的奇数分频和偶数分频有很大的差别。那么偶数分频使用计数器计数就可以实现,而我们的奇数分频相对于偶数分频要更复杂一些。
那么在上一章节当中已经对分频器的相关理论知识做了系统性的讲解,那么这儿就不再进行理论知识的讲解,我们直接开始实战演练。
1 实战演练
1.2 设计规划
1.2.1 实验目标
在实战演练部分我们使用实验工程,采用与六分频相同的方法就是:降频和分频的方法,设计并实现一个对系统时钟进行五分频的奇数分频电路。
1.2.2 硬件资源
同样的使用我们的扩展 I/O 口,输出我们生成的分频时钟,使用逻辑分析仪对它进行测量,来验证我们的实验工程。
1.3 程序设计
实验目标和验证方法了解了之后,我们开始程序的设计。
首先是搭建文件体系

然后打开 doc 文件夹,新建一个 Visio 文件,用来绘制模块框图和我们的波形图

1.3.1 模块框图
那么首先开始模块框图的设计。那么模块框图的设计可以参照我们的六分频。那么输入信号和输出信号与我们六分频是一样的,那么输入信号只有时钟信号和我们的复位信号,那么输出信号是连接到我们开发板的扩展 I/O 口,方便我们的测量

模块框图绘制完成,接下来开始波形图的绘制。
1.3.2 波形绘制
我们刚才已经提到了:我们将采用与六分频相同的方法来实现我们的分频器。第一种方法就是分频的方法,第二种方法是降频的方法。首先是分频的方法。
我们先来绘制输入信号的波形

那么输入信号的波形绘制完成。
我们先来看一下我们六分频它的波形是怎么绘制的。那么使用分频的方法来实现的六分频,它的波形是这样的

计数器初值为 0 从 0 开始计数,每个时钟周期自加一,计数到最大值是 2 计数到最大值波形进行反转一次,就生成了我们输出的时钟信号。
但是我们的五分频不太适合这种方法,因为我们不可能计数到 2.5 对它进行一个反转;所以说,我们这儿的计数值最大值应该计数到 4,就是 0~4 计数五次,刚好对应我们的五分频;那么计数器它的初值同样为 0 那么在时钟的上升沿进行计数,那么下一个就是 1 那么后面就是 2、3 那么它计数到最大值是 4 那么 0~4 是 5 次计数,刚好与五分频对应

那么计数器的波形绘制完成,那么接下来开始我们输出波形的绘制。那么输出信号的波形如何绘制呢?
我们先来尝试一下。首先给它一个初值为 0 当我们的计数器处于 0~2 的计数范围时让它保持低电平,那么计数到 2 时把它拉高为高电平,然后让它保持这个高电平;当计数到 4 的时候再把高电平拉低,然后在下一个循环 0~2 的计数范围内还是让它保持低电平。这样我们尝试着绘制了一下输出信号的波形

那么这样看似是分频,但是它的占空比并不是 50%。
那么通过观察我们发现,输出信号我们采用的是上升沿采样。那如果我们使用下降沿采样呢?我们来试一下:初值仍为 0 使用下降沿采样,那么计数到 2 时,然后在下降沿将它变为高电平,然后让它保持高电平;当我们计数值为 4 且在时钟的下降沿,把它拉低;这儿添加一条参考线

那么这儿我们采用下降沿采样的方式,尝试着绘制了我们的输出信号的波形。
但是通过观察我们发现:它的占空比也不是 50% 其实它可以看作是第一次绘制波形,向左平移了半个时钟周期。这也不是我们想要的输出信号的波形。那么输出信号的波形应该是什么样子呢?
它应该是这个样子

初值还是低电平,那么在 ❶ 这个位置把它拉高,然后保持一段时间的高电平;到 ❷ 这个位置给它拉低,然后保持它的低电平;到 ❸ 这个位置给它拉高。那么这个波形才是我们想要的输出信号的一个波形,那么这个波形应该怎么得到呢?
通过观察我们发现:如果说我们前面绘制的两路输出信号的波形,在组合逻辑下进行一个或运算就可以得到这个波形。0 与 0 或运算结果是 0,那么 0 与 1 或运算还是 1。刚好能够实现一个占空比为 50% 的五分频信号。
那 ❶ 到 ❸ 是它的一个时钟周期,刚好对应我们五个系统时钟的周期,那么这个波形就实现了我们系统时钟的五分频。
我们来把它整理一下

本文介绍了奇数分频器的实战演练,包括设计规划、程序设计(涉及模块框图和波形绘制)、代码编写(使用Verilog实现),以及通过实验验证了五分频电路的工作原理。作者还探讨了使用降频方法实现五分频,并展示了上板验证的过程。后续章节将讨论PLL在时钟处理中的应用。
最低0.47元/天 解锁文章
6559





