一、前言
clk时钟在FPGA开发中具有举足轻重的作用,不管是串口UART,HDMI还是对各种视频编码芯片的驱动等都用到了clk。最近也在学习FPGA的跨时钟域,因此想着先学习一下FPGA的时钟生成。采用IP核clk_wiz可以直接生成的时钟频率范围最大可到4.687MHz-800MHz,但无法直接生成低频率的时钟,为了解决这个问题,可采用时钟分频的方法间接生成。例如,串口用的最多的一个频率是115200,此时可将该频率倍频至clk_wiz可生成的时钟频率范围内,这里取11.52MHz,然后再对该频率进行一百分频即可得到115200的频率。又如要生成9600的频率,可先倍频至9.6MHz,再将clk_wiz生成的频率进行一千分频即可得到9600的时钟频率。采用这种方法理论可以得到任何频率的时钟,而且误差在10Hz以内。经过实测,生成的115200时钟误差为4Hz,生成的9600时钟误差为2Hz,精度较高。(本文使用的软件为Vivado 2018.3,硬件为ZedBoard(xc7020clg484-1),语言为Verilog。)
二、过程
**1、**首先建立一个空的工程,建立过程这里不详细说明,有需要的小伙伴可以查一下教程。随后在左上角找到Flow Navigator->PROJECT MANAGER->IP Catalog,并左击即可打开导入IP核的窗口。在Search栏输入clk,并选择我们需要到的IP核。如下图所示。