差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
5._时钟分频 [2017/03/05 01:47] zhijun [Verilog代码] |
5._时钟分频 [2019/09/06 11:49] (当前版本) gongyu |
||
---|---|---|---|
行 1: | 行 1: | ||
- | =====时钟分频===== | + | #### 时钟分频 |
+ | |||
+ | --- | ||
在之前的实验中我们已经熟悉了小脚丫的各种外设,掌握了verilog的组合逻辑设计,接下来我们将学习时序逻辑的设计。 | 在之前的实验中我们已经熟悉了小脚丫的各种外设,掌握了verilog的组合逻辑设计,接下来我们将学习时序逻辑的设计。 | ||
\\ | \\ | ||
- | ====硬件说明==== | + | |
- | ------- | + | #### 硬件说明 |
+ | |||
+ | --- | ||
时钟信号的处理是FPGA的特色之一,因此分频器也是FPGA设计中使用频率非常高的基本设计之一。一般在FPGA中都有集成的锁相环可以实现各种时钟的分频和倍频设计,但是通过语言设计进行时钟分频是最基本的训练,在对时钟要求不高的设计时也能节省锁相环资源。在本实验中我们将实现任意整数的分频器,分频的时钟保持50%占空比。 | 时钟信号的处理是FPGA的特色之一,因此分频器也是FPGA设计中使用频率非常高的基本设计之一。一般在FPGA中都有集成的锁相环可以实现各种时钟的分频和倍频设计,但是通过语言设计进行时钟分频是最基本的训练,在对时钟要求不高的设计时也能节省锁相环资源。在本实验中我们将实现任意整数的分频器,分频的时钟保持50%占空比。 | ||
\\ | \\ | ||
行 17: | 行 21: | ||
\\ | \\ | ||
- | ====Verilog代码==== | + | #### Verilog代码 |
------ | ------ | ||
行 67: | 行 72: | ||
if(!rst_n) | if(!rst_n) | ||
clk_p<=0; | clk_p<=0; | ||
- | else if (cnt_p<(N>>1)) //N>>1表示左移一位,相当于除以2去掉余数 | + | else if (cnt_p<(N>>1)) //N>>1表示右移一位,相当于除以2去掉余数 |
clk_p<=0; | clk_p<=0; | ||
else | else | ||
行 144: | 行 149: | ||
//module调用例化格式 | //module调用例化格式 | ||
- | divide #(.WIDTH(4),.N(10)) u1 ( //#后面的()中为参数传递,如果不传递参数就是所调用模块中的参数默认值 | + | divide #(.WIDTH(4),.N(11)) u1 ( //#后面的()中为参数传递,如果不传递参数就是所调用模块中的参数默认值 |
//divide表示所要例化的module名称,u1是我们定义的例化名称,必须以字母开头 | //divide表示所要例化的module名称,u1是我们定义的例化名称,必须以字母开头 | ||
.clk (clk), //输入输出信号连接。 .clk表示module本身定义的信号名称;(clk)表示我们在这里定义的激励信号 | .clk (clk), //输入输出信号连接。 .clk表示module本身定义的信号名称;(clk)表示我们在这里定义的激励信号 | ||
行 154: | 行 159: | ||
</code> | </code> | ||
- | ====引脚分配==== | + | #### 引脚分配 |
- | ------- | + | |
+ | --- | ||
小脚丫上的系统时钟连接到FPGA的C1脚,时钟为12MHz。你可以通过仿真波形观察分频时钟(注意仿真的时间是有限的,所以分频时钟频率需要较高)。如果我们想通过眼睛观察LED的闪烁,那么需要设置参数N和WIDTH得到一个频率较低的时钟(例如N=12000000,WIDTH=24,分频时钟周期为1秒)。 | 小脚丫上的系统时钟连接到FPGA的C1脚,时钟为12MHz。你可以通过仿真波形观察分频时钟(注意仿真的时间是有限的,所以分频时钟频率需要较高)。如果我们想通过眼睛观察LED的闪烁,那么需要设置参数N和WIDTH得到一个频率较低的时钟(例如N=12000000,WIDTH=24,分频时钟周期为1秒)。 | ||
\\ | \\ | ||
行 167: | 行 174: | ||
\\ | \\ | ||
- | ====小结==== | + | #### 小结 |
------ | ------ | ||
- | 在本实验学习了如何进行任意整数的分频设计,我们产生各种时钟,通过修改程序还能实验调整输出时钟的频率、相位以及占空比,非常灵活。在下个实验我们将进一步了解时序逻辑,如何利用时钟来进一步设计,请看最常见的[[6.LED流水灯|流水灯]]。 | + | 在本实验学习了如何进行任意整数的分频设计,我们产生各种时钟,通过修改程序还能实验调整输出时钟的频率、相位以及占空比,非常灵活。同时学习了如何编写testbench文件,了解verilog中如何例化module,在后面的学习中将会经常用到。在下个实验我们将进一步了解时序逻辑,如何利用时钟来进一步设计,请看最常见的[[6. LED流水灯|流水灯]]。 |