首先,在ISE14.4中新建一个工程。
2
点击New project...后,会出现create a new project对话框,在标红的方框内起个名字,英文。
3
起好名字后,点击next。然后出现如下对话框,根据芯片手册,将标红的部分,设置正确,点击next.
4
出现如下对话框,不用修改,点击finish。
5
在左上角Hierarchy 方框内,如下图所示。
6
在上图方框内,右击,选择New Source,出现如下对话框。先点击Verilog
Module, 再起个名字,再将add to project 勾选上,按照图片内箭头一步步进行。然后点击next。
出现如下对话框,直接next。
之后,出现如下对话框,也不用修改,直接点击finish。
如下图所示,可以开始编写程序设置PLL了。在标红1处填写端口,2处写描述语言。
如下图所示,红色方框内,为要填写的内容。
保存后,左上角Hierarchy处,变成如下图所示,鼠标右击pll_test1.v文件。
右击pll_test1后,点击New source ,出现如下对话框,选择
IP(CORE Generator&Architecture Wizard),起个名字(此处起名需注意要与程序中子模块名字一致,如本程序,为pll_ip),勾选上add to project ,点击next。
然后出现如下对话框,选择Clocking Wizard ,点击next,再点击finish。
出现如下图所示,在标红的部分,修改为所输入的时钟(本例为50),别处不用修改,点击next。
然后出现如下对话框,在红框1中选择要输出的端口,红框2中修改要输出的值,然后点击next。
第三页不用修改,直接点击next,第四页与不用修改,直接点击next,第五页也不用修改,直接点击next,第六页也不用修改,点击generate.在下图中标红部分看页数。
OK,到这时就已经完成工作啦,自己添加UCF文件,下载到板子上试试吧。
spartan6里面虽然含有独立的PLL和DCM,但是已经不直接支持你通过IPcore独立的使用了,取而代之是叫做“Clocking Wizard”,它帮你决定是用pll还是dcm还是全用。如果你执意用pll,只能通过原语,pll原语如下:
PLL_BASE #(
.BANDWIDTH("OPTIMIZED"), // "HIGH", "LOW" or "OPTIMIZED"
.CLKFBOUT_MULT(1), // Multiply value for all CLKOUT clock outputs (1-64)
.CLKFBOUT_PHASE(0.0),// Phase offset in degrees of the clock feedback output (0.0-360.0).
.CLKIN_PERIOD(0.0), // Input clock period in ns to ps resolution (i.e. 33.333 is 30
// MHz).
// CLKOUT0_DIVIDE - CLKOUT5_DIVIDE: Divide amount for CLKOUT# clock output (1-128)
.CLKOUT0_DIVIDE(1),
.CLKOUT1_DIVIDE(1),
.CLKOUT2_DIVIDE(1),
.CLKOUT3_DIVIDE(1),
.CLKOUT4_DIVIDE(1),
.CLKOUT5_DIVIDE(1),
// CLKOUT0_DUTY_CYCLE - CLKOUT5_DUTY_CYCLE: Duty cycle for CLKOUT# clock output (0.01-0.99).
.CLKOUT0_DUTY_CYCLE(0.5),
.CLKOUT1_DUTY_CYCLE(0.5),
.CLKOUT2_DUTY_CYCLE(0.5),
.CLKOUT3_DUTY_CYCLE(0.5),
.CLKOUT4_DUTY_CYCLE(0.5),
.CLKOUT5_DUTY_CYCLE(0.5),
// CLKOUT0_PHASE - CLKOUT5_PHASE: Output phase relationship for CLKOUT# clock output (-360.0-360.0).
.CLKOUT0_PHASE(0.0),
.CLKOUT1_PHASE(0.0),
.CLKOUT2_PHASE(0.0),
.CLKOUT3_PHASE(0.0),
.CLKOUT4_PHASE(0.0),
.CLKOUT5_PHASE(0.0),
.CLK_FEEDBACK("CLKFBOUT"), // Clock source to drive CLKFBIN ("CLKFBOUT" or "CLKOUT0")
.COMPENSATION("SYSTEM_SYNCHRONOUS"), // "SYSTEM_SYNCHRONOUS", "SOURCE_SYNCHRONOUS", "EXTERNAL"
.DIVCLK_DIVIDE(1), // Division value for all output clocks (1-52)
.REF_JITTER(0.1),// Reference Clock Jitter in UI (0.000-0.999).
.RESET_ON_LOSS_OF_LOCK("FALSE") // Must be set to FALSE
)
PLL_BASE_inst (
.CLKFBOUT(CLKFBOUT), // 1-bit output: PLL_BASE feedback output
// CLKOUT0 - CLKOUT5: 1-bit (each) output: Clock outputs
.CLKOUT0(CLKOUT0),
.CLKOUT1(CLKOUT1),
.CLKOUT2(CLKOUT2),
.CLKOUT3(CLKOUT3),
.CLKOUT4(CLKOUT4),
.CLKOUT5(CLKOUT5),
.LOCKED(LOCKED), // 1-bit output: PLL_BASE lock status output
.CLKFBIN(CLKFBIN), // 1-bit input: Feedback clock input
.CLKIN(CLKIN), // 1-bit input: Clock input
.RST(RST)// 1-bit input: Reset input
)
// End of PLL_BASE_inst instantiation
请确定你的需求再联系
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)