在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<abbr id="27omo"></abbr>

<menu id="27omo"><dl id="27omo"></dl></menu>
    • <label id="27omo"><tt id="27omo"></tt></label>

      新聞中心

      EEPW首頁 > 模擬技術 > 設計應用 > SOPC設計中自定義IP的開發(fā)

      SOPC設計中自定義IP的開發(fā)

      —— Developing Self-definition IP in SOPC Design
      作者:張春生 宋磊 薛雷 防空兵指揮學院(鄭州 450052) 時間:2011-02-18 來源:電子產品世界 收藏
      3  自定義IP開發(fā)實例
      這里以一個在控制系統(tǒng)中常用的脈沖寬度調制電路(PWM)為實例,設計一個PWM用戶邏輯并利用EDK將它集成系統(tǒng)中。我們事先假定FPGA中已經存在一個基于Microblaze的嵌入式系統(tǒng),在此前提下將PWM外設集成到OPB總線上,并進行功能驗證。
      假設PWM的具體設計要求如下:
      ◇ 要求信號周期可調。
      ◇ 脈沖的寬度可調。
      ◇ 可以控制PWM的輸出使能。
      ◇ PWM直接通過一個FPGA管腳輸出。
      按照以上設計要求,我們設定PWM外設共有3個寄存器,分別為:
      (1) Clock_Divisor 決定信號周期的32位寄存器
      (2) Duty_Cycle 控制信號占空比的32位寄存器
      (3) Control 控制寄存器,使能輸出,32位,只有最低位有效
      3.1  模塊功能設計
      PWM外設的核心是一個計數器,由Clock_Divisor控制計數周期,當計數器的計數值大于Clock_Divisor寄存器的值時,計數器清零,否則在時鐘信號觸發(fā)下,輸出使能控制位為1時計數器加1計數;PWM模塊的輸出是計數器的計數值與Duty_Cycle比較的結果,當輸出使能有效并且計數值大于Duty_Cycle寄存器的值時,輸出為1,否則輸出為零。
      3.2  模塊集成
      在XPS集成開發(fā)環(huán)境中,集成了一個creat/import peripheral wizard 工具,利用該向導工具就能輕松地創(chuàng)建或導入一個用戶自定義的外設。在向導中我們只需選擇與總線的接口是3個32位的寄存器即可,向導完成后,工程目錄(project)中會自動生成drivers和pcores兩個文件夾,兩個文件夾中包含了自定義外設的相關信息,drivers文件夾里以應用程序接口函數(API)的形式提供了自定義外設的驅動程序,以完成對外設的讀寫和測試, 用戶在開發(fā)包含自定義外設的高層應用軟件時就可以直接調用這些接口函數。
      在pcores文件夾底下有三個文件比較重要:user_logic、MPD和PAO文件,user_logic文件是集成工具生成的用戶模板文件,該文件中給出了自定義邏輯與OPB總線的接口信號,用戶只需根據接口信號的驅動要求,在用戶模板中就能完成模塊的功能設計。PWM外設與總線的接口描述如下:
      entity user_logic is
      generic
      (   總線協議參數設置,不允許用戶修改
      C_AWIDTH : integer := 32;
      C_DWIDTH : integer := 32;
      C_NUM_CS : integer := 1;
      C_NUM_CE : integer := 3
      );
      port
      (
      pwm_out    : out std_logic;    --這是PWM模塊的輸出端口
      -- 以下是總線接口信號,不允許用戶修改或刪除,否則模塊集成時將會出錯
      Bus2IP_Clk : in     std_logic;
      Bus2IP_Reset : in     std_logic;
      Bus2IP_Addr : in     std_logic_vector(0 to C_AWIDTH-1);
      Bus2IP_Data : in     std_logic_vector(0 to C_DWIDTH-1);
      Bus2IP_BE : in     std_logic_vector(0 to C_DWIDTH/8-1);
      Bus2IP_CS : in     std_logic_vector(0 to C_NUM_CS-1);
      Bus2IP_RdCE : in     std_logic_vector(0 to C_NUM_CE-1);
      Bus2IP_WrCE : in     std_logic_vector(0 to C_NUM_CE-1);
      IP2Bus_Data : out     std_logic_vector(0 to C_DWIDTH-1);
      IP2Bus_Ack : out     std_logic;
      IP2Bus_Retry : out     std_logic;
      IP2Bus_Error : out     std_logic;
      IP2Bus_ToutSup     : out std_logic
      );
      end entity user_logic;
      其中Bus2IP_WrCE是處理器用來對外設的寄存器進行編址的信號,該信號與寄存器地址映射關系如表1所示。

      本文引用地址:http://www.biyoush.com/article/116965.htm
      其中C_BASEADDR是系統(tǒng)給外設分配的基地址,通過該地址,處理器就能訪問外設的寄存器,在本例中系統(tǒng)分配給PWM外設的地址為0x7da00000。
      MPD和PAO分別是處理器外設描述文件和外設分析文件,通過這兩個文件集成開發(fā)工具XPS就能找到外設的各組成模塊并正確識別它們。完成這兩個文件的修改后,再次啟動向導,并把MPD和PAO文件作為向導工具的輸入,就能將PWM這一自定義邏輯集成到總線上去,其修改方法是:
      (1)在MPD文件中例化PWM的端口,格式如下:
      PORT pwm_out = "", DIR = O
      (2)在PAO文件中聲明已經完成PWM功能描述的用戶模板,格式如下:
      lib pwm_v1_00_a user_logic vhdl


      關鍵詞: SOPC IP核

      評論


      相關推薦

      技術專區(qū)

      關閉