微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 一份学习资料中配置PLL部分没看懂

一份学习资料中配置PLL部分没看懂

时间:10-02 整理:3721RD 点击:
PLL_ADV #    (.BANDWIDTH ("OPTIMIZED"),.CLKIN1_PERIOD (CLK_PERIOD_NS), .CLKIN2_PERIOD (1),.CLKOUT0_divIDE (1), .CLKOUT1_divIDE(1),.CLKOUT2_divIDE (6), .CLKOUT3_divIDE (6),)我想问的是PLL_ADV不是一个原语吗?为什么后面加了一个#?另外,之后的BANDWIDTH之类的也不是PLL_ADV的端口号啊。


#是代表实例化这个模块的参数。所以后面的都是参数,不是端口。



   搜噶

謝謝!



   那PLL的 主要 用处 是不是 精确的 相位延迟 以及 频率综合?(然后我可以通过调整PLL模块中的参数实现?)module dll_standard(CLKIN,RESET,CLKOUT);
input CLKIN,RESET;
output CLKOUT;
wire clkfbout;
PLL_BASE a(.CLKIN(CLKIN),
.CLKFBIN(clkfbout),.RST(RESET),
.CLKOUT0(CLKOUT),.CLKOUT1(),
.CLKOUT2(),.CLKOUT3(),.CLKOUT4(),
.CLKOUT5(),.CLKFBOUT(clkfbout));
PLL_BASE-----------------------------说这是个unknown type
#(.CLKOUT0_PHASE(0),
.CLKOUT0_DUTY_CYCLE(0.5),
.CLKOUT0_divIDE(2),
.CLKOUT1_PHASE(90),
.CLKOUT1_DUTY_CYCLE(0.5),
.CLKOUT1_divIDE(2),
.CLKOUT2_PHASE(0),
.CLKOUT2_DUTY_CYCLE(0.25),
.CLKOUT2_divIDE(4),
.CLKOUT3_PHASE(90),
.CLKOUT3_DUTY_CYCLE(0.5),
.CLKOUT3_divIDE(8),
.CLKOUT4_PHASE(0),
.CLKOUT4_DUTY_CYCLE(0.5),
.CLKOUT4_divIDE(8),
.CLKOUT5_PHASE(135),
.CLKOUT5_DUTY_CYCLE(0.5),
.CLKOUT5_divIDE(8),
.CLKFBOUT_PHASE(0),
.CLKFBOUT_MULT(8),
.divCLK_divIDE(1),
.CLKIN1_PERIOD(10.0)
);
endmodule

ERROR:HDLCompiler:806 - "F:\WORK_P\Reed_Solomon_Codec\__ISE_L_RSCodec\_ISE_L_RSCodec_1405151_EN-S_beta\ttt.v" Line 62: Syntax error near ";".
ERROR:HDLCompiler:1059 - "F:\WORK_P\Reed_Solomon_Codec\__ISE_L_RSCodec\_ISE_L_RSCodec_1405151_EN-S_beta\ttt.v" Line 32: PLL_BASE is an unknown type

我是按照sparten6 用户手册上配置的,不知道对不对





我建了一个小模块,然后用这种方法修改模块参数,但是软件报错“Line 71: Syntax error near "endmodule".”
子模块:
module tvb(a,b);
    input a;
    output b;
         parameter a1=1;
         parameter a2=2;
         assign b=a;
endmodule
主模块:
module dll_standard(CLKIN,c);
input CLKIN;
output c;
tvb d(.a(CLKIN),.b(c));
tvb #
(
     .a1(3),
     .a2(3)
)
endmodule



   我建了一个小模块,然后用这种方法修改模块参数,但是软件报错“Line 71: Syntax error near "endmodule".”
子模块:
module tvb(a,b);
    input a;
    output b;
         parameter a1=1;
         parameter a2=2;
         assign b=a;
endmodule
主模块:
module dll_standard(CLKIN,c);
input CLKIN;
output c;
tvb d(.a(CLKIN),.b(c));
tvb #
(
     .a1(3),
     .a2(3)
)
endmodule

你没搞明白verilog如何实例化模块的方法。你这里第一个tvb是对的,第二个是错误的,结尾少了个分号,而且连最起码的实例化名称都没有。
verilog语法基本的实例化规则是:
模块名 [#(参数名及参数值)] 实例化名称(端口声明);
tvb #(.a1(3), .a2(3)) u_tvb(.a(CLKIN), .b(c));

看datasheet

看datasheet

zhe shi shen me ya

谢谢分享!谢谢分享!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top