作者:MiS603开发团队
日期:20150911
公司:南京米联电子科技有限公司
论坛:www.osrc.cn
EAT博客:http://blog.chinaaet.com/whilebreak
博客园:http://www.cnblogs.com/milinker/
DCM时钟管理器是XILINX FPGA中一项非常重要也是非常珍贵的资源。通过DCM时钟管理器,可以实现时钟的倍频、分频、相移等。
7.1 添加DCM时钟管理IP
Setp1:新建DCM_TEST工程
Step2:添加IP CORE
Step3:添加IP CORE 选择路径并且却名为DCM_CLK
Step4:选择DCM时钟管理模块向导配置
Step5:开发板输入时钟为50MHZ,选择输出时钟为50MHZ ,Source选择Single ended clock capable pin
Step6:设置4路时钟的输出,分别为CLK_OUT1=100M,CLK_OUT2=100M180°,CLK_OUT3=200M,CLK_OUT3=200M180°
Step7:REST 和LOCKED信号都不勾选
Step8:单击NEXT 跳过
Step9:修改默认的时钟名字,方便编程阅读
Step:10单击Generate 生成IP
Step11:产生的IP文件
Step12:双击View HDL Instantiation Template
Step13:打开后,复制代码到DCM_TEST并做修改
Step14:程序主模块
module DCM_TEST
(
input CLK_50M_i,//输出50M时钟
output CLK_100M_O,//输出100M时钟
output CLK_100M180_O,//输出100M时钟 180°相位
output CLK_200M_O,//输出200M时钟
output CLK_200M180_O//输出200M时钟 180°相位
);
DCM_CLK instance_name
(// Clock in ports
.CLK_50M(CLK_50M_i), // IN
// Clock out ports
.CLK_100M(CLK_100M_O), // OUT
.CLK_100M180(CLK_100M180_O), // OUT
.CLK_200M(CLK_200M_O), // OUT
.CLK_200M180(CLK_200M180_O)
);
endmodule
7.2 仿真测试文件
module DCM_TEST_TB;
// Inputs
reg CLK_50M_i;
// Outputs
wire CLK_100M_O;
wire CLK_100M180_O;
wire CLK_200M_O;
wire CLK_200M180_O;
// Instantiate the Unit Under Test (UUT)
DCM_TEST uut (
.CLK_50M_i(CLK_50M_i),
.CLK_100M_O(CLK_100M_O),
.CLK_100M180_O(CLK_100M180_O),
.CLK_200M_O(CLK_200M_O),
.CLK_200M180_O(CLK_200M180_O)
);
initial begin
// Initialize Inputs
CLK_50M_i = 0;
// Wait 100 ns for global reset to finish
#100;
// Add stimulus here
end
#10 CLK_50M_i = ~CLK_50M_i;
endmodule
7.3 仿真结果
7.4 小结
读者可以添加UCF文件,用示波器测试下输出结果。