Nexys3學習手記6:ClockingWizard探秘_第1頁
Nexys3學習手記6:ClockingWizard探秘_第2頁
Nexys3學習手記6:ClockingWizard探秘_第3頁
Nexys3學習手記6:ClockingWizard探秘_第4頁
Nexys3學習手記6:ClockingWizard探秘_第5頁
已閱讀5頁,還剩1頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Nexys3學習手記6:ClockingWizard探秘這一節,我們首先會來了解下Nexys3上的主角兒XC6SLX16(Spartan-6家族)的時鐘資源,當然不會照搬ug382.pdf(建議大家去瀏覽一遍)的內容湊篇幅,但身為“菜鳥”的特權同學也只能夠蜻蜓點水般和大家簡單說個大概。當然了,最重要的也是咱們這些實干家們最擅長的就是要教會大家如何快速的例化一個可以立即使用的ClockingWizardIP。

首先我們需要有點理論依托,那么好好讀讀ug382是個不錯的選擇。其中提到的幾個概念是我們需要區分清楚的,對應文檔中的三個章節提到了三組概念,即ClockResources、ClockManagementTechnology和Phase-LockedLoops。單從字意上理解,ClockResources即時鐘資源,從廣義上來講,時鐘資源不僅包括了文檔中重點闡述的器件內部時鐘專用的布線資源、IO資源和buffer資源,也包括了后面兩章所提到的CMTblock(ClockManagementTiles)中包含的DCM(DigitalClockManagers)和PLL(Phase-LockedLoops)。一個CMTblock包括了兩個DCM和一個PLL,通常Spartan-6器件中都有數個CMTblock。DCM是基于DLL的時鐘管理單元,即用數字方式實現時鐘頻率的倍頻、分頻或相移輸出,有較大的局限性。早期的Xilinx器件中大都是基于DLL或DCM技術進行時鐘管理,而Spartan-6器件則在此基礎上引入了PLL(鎖相環),基于PLL的模擬時鐘管理方式顯然要靈活方便許多。PLL的配置使用也很簡單,只要在ISE中添加ClockingWizard的IP核并進行GUI配置,最后例化到工程源碼中即可。

在第一個工程的基礎上,我們添加一個ClockingWizard的IP核。菜單欄上點擊ProjectàNewSource…,彈出如圖1所示的Wizard中,選擇sourcetype為IP(COREGenerator&ArchitectureWizard),Filename輸入myclocking,然后點擊Next。圖1新建IP核

稍等片刻,當IP目錄出現的時候,選擇FPGAFeaturesandDesignàClockingàClockingWizard,如圖2所示,接著點擊Next,再點擊Finish等待ClockingWizard配置頁面出現。圖2IP目錄

ClockingWizard配置頁面出現后,根據需要開啟相應的接口信號,并且輸入相關的參數完成設置。詳細的使用參考在ClockingWizard的菜單Documents下羅列出的幾個文檔,如圖3所示。圖3ClockingWizard參考文檔

本實例只簡單的設置輸入時鐘為100MHz,輸出4個頻率分別為100MHz、50MHz、25MHz和12.5MHz的時鐘。在page1和page2分別設置如圖4和圖5所示。圖4page1輸入時鐘設置圖5pgae2輸出時鐘設置

完成以上配置后,點擊右下角的Generate按鈕生成IP核源代碼。當ISE的Console窗口出現信息“INFO:ProjectMgmt-Parsingdesignhierarchycompletedsuccessfully.”時,已經完成代碼生成。此時在Hierarchy下面出現了一個新的名為myclocking.xco的文件,此時若選中該文件,則Processes下相應出現如圖6所示的COREGenerator功能選項。圖6COREGenerator功能選項

我們接下來要做的是將myclocking例化到頂層代碼中,雙擊ViewHDLInstantiationTemplate,復制HDL例化模板(如下的代碼段)到頂層文件中。//BeginCuthereforINSTANTIATIONTemplate//INST_TAG

myclockinginstance_name

(//Clockinports

.CLK_IN1(CLK_IN1),

//IN

//Clockoutports

.CLK_OUT1(CLK_OUT1),

//OUT

.CLK_OUT2(CLK_OUT2),

//OUT

.CLK_OUT3(CLK_OUT3),

//OUT

.CLK_OUT4(CLK_OUT4),

//OUT

//Statusandcontrolsignals

.RESET(RESET),//IN

.LOCKED(LOCKED));

//OUT//INST_TAG_ENDEndINSTANTIATIONTemplate

在頂層文件中,修改信號接口(對應括號內的信號)與實際接口相匹配。在本實例中,將使用clocking輸出的4個不同頻率時鐘分別進行分頻驅動4個LED,實現4個不用時鐘和計數器分頻的LED同時閃爍的效果。此外,也分別用4個時鐘的二分頻信號驅動另外4個LED,用戶可以觀察這4個LED亮度有所不同,若是用示波器測量對應IO輸出的波形,則其頻率分別是50MHz、25MHz、12.5MHz和6.25MHz。

修改后的頂層源代碼如下:moduletestled(

clk,rst_n,

led

);

inputclk;

//100MHzinputrst_n;

//低電平復位信號

output[7:0]led;

//連接到LED指示燈

wireclk_100m;

//clocking輸出100MHzwireclk_50m;

//clocking輸出50MHzwireclk_25m;

//clocking輸出25MHzwireclk_12m5;

//clocking輸出12.5MHzwireclk_locked;

//clocking輸出完成標志位

////IP核ClockingWizard例化//BeginCuthereforINSTANTIATIONTemplate//INST_TAG

myclockinguut_myclocking

(//Clockinports

.CLK_IN1(clk),

//IN

//Clockoutports

.CLK_OUT1(clk_100m),

//OUT

.CLK_OUT2(clk_50m),

//OUT

.CLK_OUT3(clk_25m),

//OUT

.CLK_OUT4(clk_12m5),

//OUT

//Statusandcontrolsignals

.RESET(!rst_n),//IN

.LOCKED(clk_locked));

//OUT//INST_TAG_ENDEndINSTANTIATIONTemplate

//reg[24:0]cnt0;//100MHz時鐘分頻計數器

always@(posedgeclk_100mornegedgerst_n)

//異步復位

if(!rst_n)cnt0<=25'd0;

elsecnt0<=cnt0+1'b1;//寄存器cnt0循環計數

assignled[0]=cnt0[24];

//reg[23:0]cnt1;//50MHz時鐘分頻計數器

always@(posedgeclk_50mornegedgerst_n)//異步復位

if(!rst_n)cnt1<=24'd0;

elsecnt1<=cnt1+1'b1;//寄存器cnt1循環計數

assignled[1]=cnt1[23];

//reg[22:0]cnt2;//25MHz時鐘分頻計數器

always@(posedgeclk_25mornegedgerst_n)//異步復位

if(!rst_n)cnt2<=23'd0;

elsecnt2<=cnt2+1'b1;//寄存器cnt2循環計數

assignled[2]=cnt2[22];

//reg[21:0]cnt3;//12.5MHz時鐘分頻計數器

always@(posedgeclk_12m5ornegedgerst_n)

//異步復位

if(!rst_n)cnt3<=22'd0;

elsecnt3<=cnt3+1'b1;//寄存器cnt3循環計數

assignled[3]=cnt3[21];

////4個clocking輸出時鐘2分頻寄存器,用于示波器觀察

assignled[7:4]={cnt0[0],cnt0[1],cnt0[2],cnt0[3]};

endmodule

Hier

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論