03、国产FPGA 正点原子DFPGL22G开发板测评【学习篇】IP核PLL
[复制链接]
本帖最后由 1nnocent 于 2023-2-4 09:49 编辑
PLL可以产生多个不同频率和不同相位的时钟为系统提供不同的时钟需要,这里先熟悉一下PLL IP核,后续的侧评都用得上。【对于一个简单的设计来说,FPGA 整个系统使用一个时钟或者通过编写代码的方式对时钟进行分频是可以完成的, 但是对于稍微复杂一点的系统来说, 系统中往往需要使用多个时钟和时钟相位的偏移,且通过编写代码输出的时钟无法实现时钟的倍频, 因此学习 PLL IP 核的使用方法是我们学习 FPGA 的一个重要内容。】
这要使用modelsim进行仿真,学习modelsim的使用也是申请这次测评的一个重要原因。
- PLL IP核简介
锁相环作为一种反馈控制电路,其特点是利用外部输入的参考信号控制环路内部震荡信号的频率和相位。 因为锁相环可以实现输出信号频率对输入信号频率的自动跟踪,所以锁相环通常用于闭环跟踪电路。锁相环在工作的过程中,当输出信号的频率与输入信号的频率相等时,输出电压与输入电压保持固定的相位差值,即输出电压与输入电压的相位被锁住,这就是锁相环名称的由来。
PLL 的参考时钟输入源包括:时钟输入管脚输入的时钟、 PLL 的参考时钟输入管脚输入的时钟,全局时钟,区域时钟或 I/O 时钟以及来自内部逻辑的信号。其中 PLL 的参考时钟输入管脚可以让 PLL获得最好的性能,强烈推荐用户使用。本次实验使用时钟输入管脚输入的时钟。
- 程序设计
module pll(
input sys_clk,
input rstn,
output clk_100m,
output clk_100m_180deg,
output clk_50m,
output clk_25m,
output clk_25m_75,
output locked
);
pll_clk the_instance_name (
.pll_rst(~rstn), // input
.clkin1(sys_clk), // input
.pll_lock(locked), // output
.clkout0(clk_100m), // output
.clkout1(clk_100m_180deg), // output
.clkout2(clk_50m), // output
.clkout3(clk_25m), // output
.clkout4(clk_25m_75) // output
);
endmodule
- ModelSim 的使用
主要分为两种情况,第一种就是直接使用ModelSim 软件进行仿真,也就是手动仿真;第二种情况就是通过其它的 EDA 工具如 PDS 调用 Modelsim 进行仿真,这种情况也就是我们通常所说的自动仿真或者联合仿真。不管是手动仿真还是自动仿真,它们都遵循以下 5 个步骤:
1)新建工程。
2)编写 Verilog 文件和 Testbench 仿真文件。
3)编译工程
4)启动仿真器并加载设计顶层
5)执行仿真。
- 仿真波形:
|