目的:今天我們通過一個(gè)實(shí)驗(yàn)來認(rèn)識和初步使用鎖相環(huán)模塊ALTPLL,實(shí)驗(yàn)的內(nèi)容是將輸入的50Mhz的時(shí)鐘信號經(jīng)過鎖相環(huán)模塊ALTPLL,輸出一路25MHz的分頻信號、一路100MHz的倍頻信號和一路有3ns相移的50Mhz的時(shí)鐘信號。
說明:我們有三種方式可以驗(yàn)證實(shí)驗(yàn)的正確性,一種方法是通過DE2-70開發(fā)板,將三路輸出信號映射到FPGA的引腳,通過示波器觀察,驗(yàn)證結(jié)果;另外一種方法是利用SignalTapII Logical Analyzer進(jìn)行驗(yàn)證;第三種方法是編寫激勵塊,在軟件QuartusII中調(diào)用Modelsim SE進(jìn)行仿真驗(yàn)證實(shí)驗(yàn)的正確性。本實(shí)驗(yàn)會給出激勵塊,在仿真環(huán)境ModelsimSE中驗(yàn)證實(shí)驗(yàn)結(jié)果。
前兩種方式基于FPGA硬件設(shè)備,第三種方式可以在無硬件的條件下驗(yàn)證實(shí)驗(yàn)的正確性。
1、配置鎖相環(huán)模塊ALTPLL:
1) 打開QuartusII軟件,選擇菜單欄Tool-->Mega Wizard Plug-In Manager,選擇Create a newcustom megafunction,意為創(chuàng)建一個(gè)新的宏功能模塊,然后單擊Next;
2) 在彈出的界面中,右上角選擇器件系列和輸出文件類型(此處選擇CycloneII和Verilog),在左邊框欄中選擇IO文件夾下的ALTPLL,最后選擇輸出文件保存路徑和文件名,按如圖所示設(shè)置后,點(diǎn)擊Next;
3) 在新彈出的界面中,設(shè)置輸入時(shí)鐘inclk0的頻率為50MHz(因?yàn)镈E2-70開發(fā)板的輸入時(shí)鐘為50Mhz),設(shè)置devicespeed grade為6,這個(gè)參數(shù)與具體芯片的型號有關(guān),其他保持默認(rèn),然后點(diǎn)擊Next;
4)設(shè)置輸入輸出信號。在彈出的界面中,按照如圖所示設(shè)置,其中OptionalInput項(xiàng)目下面包含”pllena(使能端,高電平有效)”、”areset(異步清零端,高電平有效)”、”pfdena(相位/頻率檢測器的使能端,高電平有效)”,為了方便操作,我們只選擇了areset異步清零端;同時(shí)LockOutput項(xiàng)目下,選擇”locked”,通過這個(gè)輸出端口可以判斷鎖相環(huán)是否失鎖,高電平表示正常;
5)單擊Next兩次,在彈出的界面中設(shè)置三個(gè)輸出信號c0、c1、c2的參數(shù)(頻率、相位和占空比)。設(shè)置輸出信號c0的頻率為25MHz,相移為零,占空比為50%,c1的頻率為50MHz,相移為4ns,占空比為50%,c2的頻率為100MHz,相移為零,占空比為50%,按照如圖進(jìn)行設(shè)置:
說明:可以通過分頻因子和倍頻因子設(shè)置輸出信號頻率,也可以直接輸入輸入信號頻率,具體使用哪種方法,根據(jù)個(gè)人愛好!
需要選中Use thisclock,圖片中忘記標(biāo)記!
6)設(shè)置輸出文件類型。設(shè)置完c0、c1、c2輸出信號的頻率、相位和占空比等參數(shù)后,點(diǎn)擊兩次Next,在新彈出的界面中選擇需要的輸出文件格式。
說明:MyPll.v文件是我們建立的實(shí)例模塊,需要在頂層模塊中調(diào)用,所以系統(tǒng)默認(rèn)選中;
MyPll_inst.v文件展示了在頂層模塊中引用的方法;
MyPll.bsf文件與原理圖有關(guān);
每個(gè)人可以根據(jù)自己的需要選擇文件,一般情況下保持默認(rèn)即可。
7)點(diǎn)擊Finish,配置完畢。
2、新建頂層文件,引用剛才生成的MyPll.v文件,同時(shí)編寫激勵塊文件,進(jìn)行相關(guān)設(shè)置。
說明:關(guān)于如何建立工程、生成激勵塊文件,可以參考我的另一篇博文!
1)新建工程,并編寫頂層模塊,命名為My_Pll_Top.v具體代碼如下所示:
moduleMy_Pll_Top(areset,inclock0,c0,c1,c2,locked);
inputareset,inclock0;
outputc0,c1,c2,locked;
MyPll MyPll_inst(
.areset(areset),
.inclk0(inclock0),
.c0(c0),
.c1(c1),
.c2(c2),
.locked(locked));
endmodule
2)編寫激勵塊文件,具體代碼如下:
`timescale 1 ns/ 1 ps
moduleMy_Pll_Top_vlg_tst();
regareset;
reginclock0;
wirec0;
wirec1;
wirec2;
wirelocked;
My_Pll_Top i1(
.areset(areset),
.c0(c0),
.c1(c1),
.c2(c2),
.inclock0(inclock0),
.locked(locked)
);
initial
begin
areset =1'b1;
# 100 areset = 0;
# 1000$stop;
$display("Runningtestbench");
end
always
begin
inclock0 = 1'b0;
inclock0 = #10 1'b1;
#10;
end
endmodule
2)將之前生成的MyPll.v文件加入到當(dāng)前項(xiàng)目,然后對整個(gè)工程進(jìn)行編譯,直到編譯通過。
3、進(jìn)行仿真測試,驗(yàn)證實(shí)驗(yàn)結(jié)果。
1)首先在QuartusII中對仿真環(huán)境進(jìn)行設(shè)置(具體設(shè)置可以參考里一片博文);
2)選擇菜單欄Tools-->Run Simulation Tool-->RTLSimulation,等待一會,系統(tǒng)會自動打開Modelsim SE仿真環(huán)境。
3)實(shí)驗(yàn)結(jié)果如圖所示,通過各個(gè)信號的波形,可以觀察到輸入信號inclock0和輸出信號c0、c1、c2之間的關(guān)系:
a、100ns之后,areset變?yōu)榈碗娖剑蠹s90ns之后,輸出信號正常;
b、輸入信號inclock0的頻率為50Mhz, 輸出信號c0的頻率為25Mhz,c1的頻率為50Mhz,c2的頻率為100MHz;
c、輸入信號inclock0和c0、c2同相位,同占空比,輸出信號c1相位滯后3ns;
d、通過分析信號波形,得出實(shí)驗(yàn)結(jié)果和理論一致。
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |