設計背景:
在我們設計工程中我們會用到100M,500M等時鐘,如果我們的晶振達不到我們就需要倍頻,再上一個文檔中我們了解到了分頻,可是倍頻我們改怎么做了,這里我們就用了altera的IP核鎖相環。
今天我們將去學習簡單的IP核的調用和生成。
設計原理:
本次的設計我們調用IP核鎖相環了生成一個200M的時鐘,下面我們就來學習和使用簡單的IP核。
設計架構圖:
設計流程:
新建工程打開tools,然后選擇:
然后出現下面的界面,第一個句是建立新的IP核,第二個打開你建立好的以便于我們修改,第三個是復制一個,我們選擇第一個選擇,建立一個,然后下一步.
然后跳出下面的界面,我們選擇下面的
然后在右邊選擇我們的語言verilog ,然后給我們建立的IP核起一個名字。
然后跳出下面的界面,inclk0位輸入我們默認為50M,areset位復位高電平有效,c0位輸出,locked位輸出標志位,然后輸入我們100M改為50M,下一步。
為了只觀的看到各個引腳的情況,我們下一步,不進行操作。
我們可以改我們的輸出時鐘為多少,可以改輸出時鐘的相位,占空比,我們寫入輸出位200M,占空比為50%,然后下一步。
之后不停的下一步,出現下面的界面,就點擊完成Finish,這樣就完成了IP核的建立。
之后我們打開我們生成的IP核代碼,然后例化。
設計代碼:
設計模塊
0modulepll(clk,clk_200M,rst_n,locked);
1inputclk;
2inputrst_n;
3
4outputclk_200M;
5outputlocked;
6
7
8 my_pll my_pll_inst(//例化IP核
9 .areset(~rst_n),
10 .inclk0(clk),
11 .c1(clk_200M),
12 .locked(locked)
13);
14endmodule
測試模塊
0`timescale1ns/1ps
1
2modulepll_tb();
3regclk;
4regrst_n;
5
7wireclk_200M;
8wirelocked;
9initialbegin
10 clk=1'b1;
11 rst_n=1'b0;
12 #200.1rst_n=1'b1;
13
14 #2000.1$stop;
15
16 end
17
18 always#10clk=~clk;
19 pll pll_dut(
20 .clk(clk),
21 .rst_n(rst_n),
23 .clk_200M(clk_200M),
24 .locked(locked)
25 );
26endmodule
仿真圖:
????
在仿真中我們看一看到我們生成的時鐘是200M,然后我們可以用鎖相環生成的標志位給用200M時鐘的電路當復位,如下:
-
FPGA
+關注
關注
1630文章
21777瀏覽量
604706 -
鎖相環
+關注
關注
35文章
589瀏覽量
87829
發布評論請先 登錄
相關推薦
評論