歡迎您光臨本站 登入註冊首頁

概述

   相比於MCS51,或者ARM,NiosII這種軟核處理器的第一個特別有用的特性是可以方便得添加客戶定製邏輯。這是一個非常有趣並且重要的特性。在這裡,我粗略得介紹一下……

    相比於MCS51,或者ARM,Nios II這種軟核處理器的第一個特別有用的特性是可以方便得添加客戶定製邏輯。這是一個非常有趣並且重要的特性。在這裡,我粗略得介紹一下在Nios II開發環境中如何添加客戶定製邏輯;更加詳細的幫助信息請您參考Altera公司提供的文檔。如果本文能對您有一點點幫助,我都會感到非常高興。

1、準備工作:
    在這前,有幾個準備工作要做:

  1. 需要熟練地創建並使用NiosII系統。
  2. 通開發板至少要有兩路LED輸出,用來觀察PWM的輸出。

     我使用ezNiosDKC6B作為待調試的開發板,向其中添加PWM輸出,因為PWM也確實是一個很有用的功能。你可以舉一反三,在自己的系統中引入客戶邏輯。

2、創建自己的客戶邏輯:
    1.首先,在QuartusII中打開任意一個項目,然後,打開Tools -> Sopc Builder,在這裡,我們只是為了打開sopc builder這個組件而已。
    2.選擇File -> New Component,
 
    3.這樣就會打開New Component先導
 
    4.在HDL Files選項卡中,選擇Add HDL File,然後打開avalon_slave_pwem_source目錄(本站提供),選中下圖中的三個文件(avalon_slave_pwm.v, pwm.v,reg_file.v)。(一次只能選中一個文件,需要按住Crtl鍵,然後依次選擇三個文件,就可以像下圖中,同時選中三個文件了)。然後選擇 打開
 
    5.可以看到添加三個文件,綠色的閃爍的條紋表明系統正在分析該文件。Top Level Module:默認是alalon_slave_pwm.v:alalon_slave_pwm,如果不是,請改正為alalon_slave_pwm。
 
    6.下面進入Signals選項卡,進行輸入、輸出信號的設置。
如下圖,首先把resetn的類型設置為reset_n,
 
    7.請按照設置resetn的方法,設置各個信號。設置完成以後,如下圖所示。
 
    8.然後進入Interfaces選項卡,修改Read Wait = 0, Write Wait = 0,如下圖所示。
 
    9.進入SW Files選項卡,選擇Add SW File,為系統添加SW Files;首先打開 avalon_slave_pwm_source\HAL\inc下的altera_avalon_pwm_routines.h,為系統添加該文件。
 
     10.依次添加avalon_slave_pwm_source\inc\altera_avalon_pwm00.h ,avalon_slave_pwm_source\HAL\src\altera_avalon_pwm_routines.c,並請按照下圖設置 Type。
 
    11.最後選擇Finish,生成系統。系統會在您運行該軟體的目錄下生成一個文件夾:avalon_slave_pwm。

    12.然後,把該文件夾拷貝到系統的默認搜索路徑:安裝路徑\components\下,比如G:\w2k\EDA\FPGA\altera\kits\niosII1_1B131\components,這樣可以省去許多麻煩。

3、使用上述客戶邏輯:
        接下來,請您參考我之前寫的文章“FPGA也瘋狂(五)--Step By Step創建標準(Standard)niosII系統”,生成一個標準系統。比如,我生成一個系統,ezC6Be_PWM,來使用該PWM。
       在sopc_builder中,可以看到,在components列表中,已經有了該組件(如果沒有看到,請選擇File->refrech刷新componments列表)。
 
    1 雙擊avalon_slave_pwm,添加該組件到您的sopc系統中。
 
    2 我為這個sopc系統添加了兩個pwm,分別命名為:avalon_slave_pwm_0以及avalon_slave_pwm_1,如下圖:
 
    3 然後,我修改led_pio,把修改為2,這樣可以釋放出兩個led來給PWM使用。
 
    4 然後,使用上一步生成的sopc系統。比如,我創建了ezC6Be_PWM.bdf來使用sopc_ezC6Be_PWM.bsf。如下圖:
 
    5 我把pwm_out_from_the_avalon_slave_pwm_0接到LED[2],pwm_out_from_the_avalon_slave_pwm_0接到LED[3],這樣可以通過LED的亮度來觀察PWM的輸出。
 
    6 其餘步驟請您參考我之前寫的文章“FPGA也瘋狂(五)--Step By Step創建標準(Standard)niosII系統”,

最後選擇Start Compilation來編譯這個系統。應該又是漫長的等待之後。

    7 常見問題:
 許多朋友可能會遇到如下問題: 
 
   提示找不到register_file,這通常是因為Sopc Builder沒有正確得拷貝文件到當前目錄下,或者QuartusII傻得找不到該文件了。

   請按照如下方法處理:

  1 檢查當前項目的文件夾下(比如我檢查ezC6Be_PWM),是否有如下文件:pwm.v,reg_file.v。如果沒有,可能是創建客戶邏輯的時候有問題,SOPC Builder沒有自動拷貝這些文件,請手動從avalon_slave_pwm_source拷貝一下吧!

  2 如果檢查當前項目的文件夾下(比如我檢查ezC6Be_PWM),已經有如下文件 pwm.v,reg_file.v。那麼是QuartusII傻得找不到該文件了。 請打開QuartusII中的Assignments -> Settings,在Files選項卡中,手動增加pwm.v,reg_file.v兩個文件,即可以解決。
 

4、通過軟體訪問、使用客戶邏輯:
      1。編譯成功之後,可以打開Nios IDE,首先請參考我之前寫的文章“FPGA也瘋狂(五)--Step By Step創建標準(Standard)niosII系統”,基於上述系統(比如我的cpu名字cpu_ezC6Be_PWM),創建一個以 hello_world為模板的項目。我把這個項目命名為ezC6Be_PWM_hello_2pwm_0
   
      2。然後,刪除hello_world.c。把文件hello_2pwm.c(本站提供,在avalon_slave_pwem_source目錄下)拷貝到項目ezC6Be_PWM_hello_2pwm_0的目錄下,比如我把它放到H:\DB2005\project\niosDK\CD\CD1\ Example\ezNiosC6B\ezC6Be_PWM\software\ezC6Be_PWM_hello_2pwm_0中。

      3。請按照如下設置系統library屬性:
 
      4。最後選擇Project -> Build Project,編譯整個項目。


[admin via 研發互助社區 ] Nios II開發環境中如何添加客戶定製邏輯已經有1830次圍觀

http://cocdig.com/docs/show-post-43138.html