XC3S500E怎样用ISE调用ip核程序实现锁相环PLL功能

XC3S500E怎样用ISE调用ip核程序实现锁相环PLL功能,第1张

首先,在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

请确定你的需求再联系


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11796905.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存