名稱:PLL實(shí)驗(yàn)設(shè)計(jì)Verilog代碼Quartus AX301開發(fā)板
軟件:Quartus
語言:Verilog
代碼功能:
PLL 技術(shù)非常復(fù)雜,主要實(shí)現(xiàn)的功能就是倍頻分頻,實(shí)現(xiàn)的原理這里不做講解,FPGA 內(nèi)的PLL 都是一個(gè)硬件模塊(硬核),是 FPGA 中非常重要的資源。
Cyclone IV 和 Cyclone 10 LP 最多能提供了 4 個(gè) PLL(EP4CE6 和 EP4CE10 只有 2 個(gè) PLL)為設(shè)備提供強(qiáng)大的時(shí)鐘管理和外部系統(tǒng)時(shí)鐘管理及高速的 IO 通信, 通過時(shí)鐘輸入, 產(chǎn)生不同頻率和不同相位的時(shí)鐘信號供系統(tǒng)使用。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在AX301開發(fā)板驗(yàn)證,AX301開發(fā)板如下,其他開發(fā)板可以修改管腳適配:
設(shè)計(jì)文檔:
1 文檔簡介
很多初學(xué)者看到板上只有一個(gè) 50Mhz 時(shí)鐘輸入的時(shí)候都產(chǎn)生疑惑,時(shí)鐘怎么才 50Mhz?如果要工作在 100Mhz、150Mhz 怎么辦?在很多 FPGA 芯片內(nèi)部都集成了 PLL,其他廠商可能不叫 PLL,但是也有類似的功能模塊,通過 PLL 可以倍頻分頻,產(chǎn)生其他很多時(shí)鐘。本實(shí)驗(yàn)通過調(diào)用 PLL ipcore 來學(xué)習(xí) PLL 的使用、Quartus 的 IP core 使用方法。
2 實(shí)驗(yàn)環(huán)境
- Windows 10 64 位
- Quartus (Quartus Prime 17.1) Lite Edition
- 黑金 FPGA 開發(fā)板(AX301 開發(fā)板、AX4010 開發(fā)板、AX1006 開發(fā)板、AX1006 開發(fā)板、AX1025 開發(fā)板)
- 示波器
3 實(shí)驗(yàn)原理
PLL 技術(shù)非常復(fù)雜,主要實(shí)現(xiàn)的功能就是倍頻分頻,實(shí)現(xiàn)的原理這里不做講解,F(xiàn)PGA 內(nèi)的PLL 都是一個(gè)硬件模塊(硬核),是 FPGA 中非常重要的資源。
Cyclone IV 和 Cyclone 10 LP 最多能提供了 4 個(gè) PLL(EP4CE6 和 EP4CE10 只有 2 個(gè) PLL)為設(shè)備提供強(qiáng)大的時(shí)鐘管理和外部系統(tǒng)時(shí)鐘管理及高速的 IO 通信, 通過時(shí)鐘輸入, 產(chǎn)生不同頻率和不同相位的時(shí)鐘信號供系統(tǒng)使用。
PLL 的時(shí)鐘輸入可以是 PLL 所在的 Bank 的時(shí)鐘輸入管腳 戒者其他 PLL 的輸出,F(xiàn)PGA 內(nèi)部產(chǎn)生 的信號不能驅(qū)動 PLL。Cyclone IV PLL 產(chǎn)生的時(shí)鐘可以為單端時(shí)鐘信號與差分時(shí)鐘信號, 可以通過 GCLK 網(wǎng)絡(luò)直接驅(qū)動 FPGA 外部的 IO 口。
Cyclone IV 和 Cyclone 10 LP 的單個(gè) PLL 最大能提供 5 路輸出,但是這 5 路輸出是有一定的關(guān)系 的,從 PLL 的結(jié)構(gòu)圖可以看出,5 路輸出不同頻率取決于 C0、C1、C2、C3、C4 的分頻比。
本實(shí)驗(yàn)將 PLL 輸出的不同時(shí)鐘通過 FPGA 的普通 IO 輸出,然后用示波器測量輸出頻率。
4 建立工程
(1)建立一個(gè)“pll_test”工程
(2)添加 PLL IP,如圖所示,“IP Catalog”可以通過工具欄點(diǎn)擊出來,然后搜索“pll”,雙擊“ALTPLL”
(3)在彈出框添加 IP 路徑和頂層文件名,選擇文件類型為 Verilog,注意文件名的擴(kuò)展名,完成以后點(diǎn)擊“OK”按鈕。
(4)在彈出 PLL 參數(shù)配置界面中配置輸入時(shí)鐘頻率為 50Mhz,這個(gè)要和實(shí)際輸入時(shí)鐘頻率一致,界面中我們可以看到有個(gè) PLL 框圖,標(biāo)出了輸入輸出信號,左邊為輸入,右邊為輸出,其中“inclk0"是時(shí)鐘輸入源,"areset"是異步復(fù)位輸入,"c0"是第一個(gè)時(shí)鐘輸出,“l(fā)ocked”是 PLL 鎖定信號,表示已經(jīng)穩(wěn)定輸出了。
(5)在“Output Clocks”選項(xiàng)卡中配置時(shí)鐘輸出,使能“clk c0”,設(shè)置輸出為 25Mhz
(6)使能“clk c1”,設(shè)置輸出為 50Mh
(7)使能“clk c2”,設(shè)置輸出為 75Mhz
(8)使能“clk c3”,設(shè)置輸出為 100Mhz
(9)點(diǎn)擊“Finish”后彈出一個(gè)窗口,提示是否將 IP 添加的工程中,這里點(diǎn)“Yes”
(10)新建一個(gè) pll_test.v 的 Verilog 文件,例化上面的 PLL ip
`timescale 1ns / 1ps
module pll_test(
input clk, input rst_n, output clkout1, output clkout2, output clkout3,
hdlcode.com 8 / 12
hdlcode
output clkout4
);
wire locked;
pll pll_inst
(
// Clock in ports
.inclk0(clk), // IN 50Mhz
// Clock out ports
.c0(clkout1), // OUT 25Mhz
.c1(clkout2), // OUT 50Mhz
.c2(clkout3), // OUT 75Mhz
.c3(clkout4), // OUT 100Mhz
// Status and control signals
.areset(~rst_n), // IN .locked(locked) //The signal of PLL normal operation
); // OUT
endmodule
注意:例化的目的是在上一級模塊中調(diào)用例化的模塊完成代碼功能,在Verilog 里例化信號的 格式如下:模塊名必須和要例化的模塊名一致,包括信號名也必須一致,模塊不模塊之間的連接 信號不能相互沖突,否則會產(chǎn)生編譯錯誤。
(11) 分配管腳并編譯生成 sof 文件(其它開發(fā)板的管腳分配參考對應(yīng)的工程)
AX301、AX4010 管腳分配
5 測量 PLL 輸出波形
這里需要使用示波器來測量,如果沒有示波器,再其他例程中會有 PLL 使用的例程,也能體現(xiàn)出 PLL 的作用。使用示波器測量 FPGA 的 IO 輸出時(shí)要特別小心,如果有高電壓碰到 FPGA 的 IO管腳,會損壞 FPGA 芯片。
我們再在 Programmer 里用 JTAG 工具把 SOF 文件下載到 FPGA 中,接下去我們就可以用示波器來 J2 接口上 Pin3, Pin4, Pin5, Pin6 的輸出時(shí)鐘波形了。
用示波器探頭的地線連接到開發(fā)板上的地(J2 的 Pin1),示波器探頭點(diǎn)中 J2 的 Pin3,示波器測量到的波形為 25Mhz 的方波:
再用示波器探頭點(diǎn)中 J2 的 Pin4,示波器測量到的波形為 50Mhz 的方波:
再用示波器探頭點(diǎn)中 J2 的 Pin5,示波器測量到的波形為 75Mhz 的方波(因?yàn)槭静ㄆ鞯膸捲?因,波形有一定程度的失真):
再用示波器探頭點(diǎn)中 J2 的 Pin6,示波器測量到的波形為 100Mhz 的方波(因?yàn)槭静ㄆ鞯膸捲?因,波形有一定程度的失真):
部分代碼展示:
////////////////////////////////////////////////////////////////////////////////// // // // // // Author: meisq // // msq@qq.com // // ALINX(shanghai) Technology Co.,Ltd // // heijin // // WEB: http://www.alinx.cn/ // // BBS: http://www.heijin.org/ // // // ////////////////////////////////////////////////////////////////////////////////// // // // Copyright (c) 2017,ALINX(shanghai) Technology Co.,Ltd // // All rights reserved // // // // This source file may be used and distributed without restriction provided // // that this copyright statement is not removed from the file and that any // // derivative work contains the original copyright notice and the associated // // disclaimer. // // // ////////////////////////////////////////////////////////////////////////////////// //================================================================================ // Revision History: // Date By Revision Change Description //-------------------------------------------------------------------------------- // 2017/7/19 meisq 1.0 Original //*******************************************************************************/
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1343