资源预览内容
第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
第9页 / 共10页
第10页 / 共10页
亲,该文档总共10页全部预览完了,如果喜欢就下载吧!
资源描述
FPGA 学习笔记之嵌入式锁相环模块 ALTPLL 的配置和调用2016/2/11背景:Quartus II 13.0sp1 (64-bit)、Modelsim SE-64 10.1c、DE2-70目的:今天我们通过一个实验来认识和初步使用锁相环模块 ALTPLL,实验的内容是将输入的 50Mhz 的时钟信号经过锁相环模块 ALTPLL,输出一路 25MHz 的分频信号、一路 100MHz的倍频信号和一路有 3ns 相移的 50Mhz 的时钟信号。说明:我们有两种方式可以验证实验的正确性,一种方法是通过 DE2-70 开发板,将三路信号从 FPGA 的引脚输出,通过示波器观察,验证结果;另外一种方法是编写激励块,在软件 Quartus II 中调用 Modelsim SE 进行仿真验证实验的正确性。本实验会给出激励块,在仿真环境 Modelsim SE 中验证实验结果。1、 配置锁相环模块 ALTPLL:1) 打开 Quartus II 软件,选择菜单栏 ToolMega Wizard Plug-In Manager,选择 Create a new custom megafunction,意为创建一个新的红功能模块,然后单击 Next;2) 在弹出的界面中,右上角选择器件系列和输出文件类型(此处选择 Cyclone II 和Verilog) ,在左边框栏中选择 IO 文件夹下的 ALTPLL,最后选择输出文件保存路径和文件名,按如图所示设置后,点击 Next;3) 在新弹出的界面中,设置输入时钟 inclk0 的频率为 50MHz(因为 DE2-70 开发板的输入时钟为 50Mhz),设置 device speed grade 为 6,这个参数与具体芯片的型号有关,其他保持默认,然后点击 Next;4)设置输入输出信号。在弹出的界面中,按照如图所示设置,其中 Optional Input 项目下面包含”pllena(使能端,高电平有效 )”、 ”areset(异步清零端,高电平有效)”、 ”pfdena(相位/频率检测器的使能端,高电平有效)”,为了方便操作,我们只选择了 areset 异步清零端;同时 Lock Output 项目下,选择”locked”,通过这个输出端口可以判断锁相环是否失锁,高电平表示正常;5)单击 Next 两次,在弹出的界面中设置三个输出信号 c0、c1、c2 的参数(频率、相位和占空比) 。设置输出信号 c0 的频率为 25MHz,相移为零,占空比为 50%,c1 的频率为50MHz,相移为 4ns,占空比为 50%, c2 的频率为 100MHz,相移为零,占空比为 50%,按照如图进行设置:说明:可以通过分频因子和倍频因子设置输出信号频率,也可以直接输入输入信号频率,具体使用哪种方法,根据个人爱好!需要选中 Use this clock,图片中忘记标记!6)设置输出文件类型。设置完 c0、c1、c2 输出信号的频率、相位和占空比等参数后,点击两次 Next,在新弹出的界面中选择需要的输出文件格式。说明:MyPll.v 文件是我们建立的实例模块,需要在顶层模块中调用,所以系统默认选中;MyPll_inst.v 文件展示了在顶层模块中引用的方法;MyPll.bsf 文件与原理图有关;每个人可以根据自己的需要选择文件,一般情况下保持默认即可!7)点击 Finish,配置完毕。2、新建顶层文件,引用刚才生成的 MyPll.v 文件,同时编写激励块文件,进行相关设置。说明:关于如何建立工程、生成激励块文件,可以参考我的另一篇博文!1)新建工程,并编写顶层模块,命名为 My_Pll_Top.v 具体代码如下所示:module My_Pll_Top(areset,inclock0,c0,c1,c2,locked);input areset,inclock0;output c0,c1,c2,locked;MyPll MyPll_inst(.areset(areset),.inclk0(inclock0),.c0(c0),.c1(c1),.c2(c2),.locked(locked);endmodule2)编写激励块文件,具体代码如下:timescale 1 ns/ 1 psmodule My_Pll_Top_vlg_tst();reg areset;reg inclock0; wire c0;wire c1;wire c2;wire locked;My_Pll_Top i1 ( .areset(areset),.c0(c0),.c1(c1),.c2(c2),.inclock0(inclock0),.locked(locked);initial begin areset = 1b1; # 100 areset = 0;# 1000 $stop; $display(Running testbench); end always begin inclock0 = 1b0;inclock0 = #10 1b1;# 10; endendmodule2)将之前生成的 MyPll.v 文件加入到当前项目,然后对整个工程进行编译,直到编译通过。3、进行仿真测试,验证实验结果。1)首先在 Quartus II 中对仿真环境进行设置 (具体设置可以参考里一片博文);2)选择菜单栏 ToolsRun Simulation ToolRTL Simulation,等待一会,系统会自动打开Modelsim SE 仿真环境。3)实验结果如图所示,通过各个信号的波形,可以观察到输入信号 inclock0 和输出信号c0、 c1、 c2 之间的关系 : a、 100ns 之后,areset 变为低电平,大约 90ns 之后,输出信号正常;b、输入信号 inclock0 的频率为 50Mhz, 输出信号 c0 的频率为 25Mhz,c1 的频率为50Mhz,c2 的频率为 100MHz ;c、输入信号 inclock0 和 c0、c2 同相位,同占空比,输出信号 c1 相位滞后 3ns;d、通过分析信号波形,得出实验结果和理论一致。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号