標籤:
回到quartus,我們建立一個Verilog檔案,將之前複製的代碼粘貼進去,儲存檔案為led.v。為了後面的編譯,需要將nioscpu的Quartus IP File(.qip)加入項目中,點擊Assignments->Settings,在File中將nioscpu.qip加入,如所示,點擊Add,再點擊OK。
接下來,我們建立鎖相環PLL,給Nios提供時鐘。
單擊Tools->MegaWizard Plug-In Manager,點擊Next,,搜尋PLL,選擇ALTPLL,在右邊的輸出檔案地址中補上pll,點擊Next:
接著page 1設定如下:
器件速度等級選8,輸入時鐘設為50M(因為開發板晶振為50M),點擊Next,在page 2上把2個鉤去掉,:
接著一直點擊Next,直到設定clk c0,如所示設定,將c0輸出頻率設為100M,這是提供給Nios軟核的時鐘,與我們之前在Nios中設定的100M時鐘頻率相對應。
接下來我們還需要設定SDRAM的時鐘頻率,點擊Next,如所示,
首先將Use this clock勾選,然後將Enter output clock parameters設定為2,這樣實際頻率就是100MHz。由於電路板及晶片的訊號延遲等原因,我們需要對時鐘相移進行調節,以達到 SDRAM 的時鐘與軟核之間的協調。我們將 Clock phase shift 設定為-73(具體原因請參考Nios那些事兒)。
設定好以後,點擊Finish,出現Quartus Ⅱ IP Files的對話方塊,點擊Yes,PLL構建就完成了。接著在led.v檔案中對pll進行執行個體化,並補全整個工程,結果如所示,可能有人要問:為什麼要用CLOCK,LED和RESET等名字呢?這先賣個關子,後面再解釋。
接下來,我們對管腳進行分配。將隨開發板一起的資料開啟,找到AX301.tcl檔案,將它複製到工程目錄下。在quartus中點擊Tools->Tcl scripts,如所示:
點擊AX301.tcl,在Preview中我們看到,E15腳被設定為RESET,E1腳被設定為CLOCK,在LED對應的引腳中也有4個腳。大家可以去查看電路圖看看對應的對不對。舉個例子,如所示,E1腳對應CLOCK,而CLOCK正是對應於50M的晶振輸入的,可見tcl檔案中的設定是正確的。我們在Tcl scripts中點擊Run,再點擊OK,再點擊Close。這時我們點擊Assignments –> Pin planner,就可以看到管腳分配已經OK。
最後對工程進行設定,點擊Assignments->Device,在出現的頁面中點擊Device and Pin Options,在Configuration選項卡中鉤選Use configuration device,選擇EPCS16,如所示:
接著在Unused Pins中選擇As input tri-stated,這個主要是防止蜂鳴器響,如所示,
然後在Dual-Purpose Pins中把所有Value都設定為Use as regular I/O,如所示,
然後點擊OK。最後開始編譯,編譯完成後退出。
Nios學習筆記2——流水燈實驗