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

Magafunction的用法

admin @ 2014-03-26 , reply:0

概述

Asdesigncomplexitiesincrease,useofvendor-specificintellectualproperty(IP)blockshasbecomeacommondesig……

As design complexities increase, use of vendor-specific intellectual property (IP) blocks has become a common design methodology. Altera provides parameterizable megafunctions that are optimized for Altera device architectures. Using megafunctions instead of coding your own logic saves valuable design time. The Altera-provided functions offer more efficient logic synthesis and device implementation. You can scale the size of the megafunction by setting various parameters.
    上面一段文字摘自Altera文檔。 

   “Altera的Megafunction是重要的設計輸入資源。由於Megafunction是基於Altera底層硬體結構最合理的成熟應用模塊的表現,所以在代碼中盡量使用Megafunction這類IP資源,不但能將設計者從繁瑣的代碼編寫中解脫出來,更重要的是在大多數情況下 Megafunction的綜合和實現結果比用戶編寫的代碼更優。
    Megafunction包括Altera的參數化模塊庫(LPM,library of parameterized modules),器件專有的Megafunction模塊,用Altera MegaCore IP生成工具調用的IP Core,以及Altera Megafunction計劃協作者(AMPP, Altera Megafunction Parterners Program)提供的第三方IP Core。
    特別是針對一些與Altera器件底層結構相關的特性,必須通過Megafunction實現,例如一些存儲器模塊(DPRAM、SPRAM、FIFO、 CAM等),DSP模塊,LVDS驅動器,PLL,高速串列收發器(SERDERS),DDR輸入/輸出(DDIO)等。另外一些諸如乘法器、計數器、加法器、濾波器等電路雖然也可以直接用代碼描述,然後用通用邏輯資源實現,但是這種描述方法不但費時費力,在速度和面積上與Megafunction的實現結果仍然有較大的差距。”
    上面一段文字是從《Altera FPGA/CPLD設計(高級篇)》里摘抄的。這段文字比較全面地概括了採用Altera Megafunction進行設計的優勢和Megafunction包含的IP類型。

    一個好的IP Core要具備可靠、可重用、可配置、可測試的特性,詳細準確的說明文檔也是其重要組成部分。與這些優良特性相對應的往往就是高昂的授權費用——好貨不便宜。說到這裡,大家可能就知道我下面要說什麼了:Altera的Megafunction是好貨白送你。用好Altera的Megafunction只需要使用者認真閱讀文檔並執行必要的配置工作——花些時間、用點心思,就可以用上高質量的IP Core,何樂而不為呢?雖然只有Altera的LPM、部分器件專有的Megafunction模塊是免費的,但是採用這些免費的模塊也足夠滿足大多數設計的需要。畢竟,LPM庫只有25個模塊就號稱可以完成所有的設計。
    7.1版的Quartus II軟體中包含了60個Altera提供的可配置宏單元,26個LPM模塊(包括由基本類型引申得來的常用形式)。分為Arithmetic、Gates、I\O、JTAG-accessible Extensions、Memory Compiler、Storage、Other Megafunctions七大類。 

Magafunction的用法
    一、通過MegaWizard Plug-in Manager設計嚮導得到用戶訂製Megafunction
    調用Megafunction最簡單直觀的方法是使用MegaWizard Plug-in Manager設計嚮導。從Windows開始菜單中的Altera快捷方式目錄下或Quartus II菜單的Tools下都可以打開這一嚮導的GUI界面。
    GUI界面的第一頁有三個選項:

  1. 創建一個新的用戶訂製Megafunction
  2. 編輯一個已有的用戶訂製Megafunction
  3. 複製一個已有的用戶訂製Megafunction

  

    選擇第一項后,GUI界面的第二頁是Megafunction基本配置信息輸入,可以指定Megafunction的類型和輸出文件路徑和類型、名稱。接下來就可以配置指定Megafunction的各項參數了。

  

    配置完畢后,MegaWizard Plug-in Manager生成四類文件:

  1. filename.v:例化和配置源Megafunction的文件,有些甚至是相應功能的HDL描述。設計者可以在代碼中例化該文件。該文件的註釋部分是MegaWizard Plug-in Manager可識別的配置信息,MegaWizard Plug-in Manager由這些配置信息區分普通設計文件和用戶訂製Megafunction文件。
  2. filename_bb.v:用戶訂製Megafunction的黑盒(black-box)描述。主要用於不支持該Megafunction的第三方EDA工具例化和調用,避免出現找不到源文件的情況(當然,也就不能實現其功能)。
  3. filename.bsf:用戶訂製Megafunction的圖形文件,與filename.v關聯,在圖形設計文件中可以例化該文件並通過雙擊啟動MegaWizard Plug-in Manager。
  4. 包含模擬波形的html文件:根據用戶的配置信息得到的模擬波形,可供設計者初步評估該訂製Megafunction的參數配置是否符合需要。 

二、在HDL代碼中直接例化和配置
    Altera的大部分Megafunction的源文件是用AHDL(Altera HDL)寫成的,文件的擴展名是.tdf。在Verilog或VHDL代碼中可以直接例化AHDL編寫的模塊和配置參數。
    例化代碼分為兩部分:埠映射和參數映射。以下面一個lpm_counter為例(Verilog例化代碼,在VHDL中分別對應PORT MAP和GENERIC MAP):

    埠映射部分: 
    lpm_counter lpm_counter_component (
        .clock (clock),
        .q (q),
        .aclr (1'b0),
        .aload (1'b0),
        .aset (1'b0),
        .cin (1'b1),
        .clk_en (1'b1),
        .cnt_en (1'b1),
        .cout (),
        .data ({8{1'b0}}),
        .eq (),
        .sclr (1'b0),
        .sload (1'b0),
        .sset (1'b0),
        .updown (1'b1));

    參數映射部分:
    defparam
        lpm_counter_component.lpm_direction = "UP",
        lpm_counter_component.lpm_port_updown = "PORT_UNUSED",
        lpm_counter_component.lpm_type = "LPM_COUNTER",
        lpm_counter_component.lpm_width = 8;

     在HDL代碼中直接例化Megafunction的好處有以下兩點:

  1. 可以在代碼中直接修改配置參數和埠使用情況。不需要每次修改參數都啟動MegaWizard Plug-in Manager。
  2. 由於在代碼中直接例化源Megafunction模塊,不需要在包含文件列表中包括MegaWizard Plug-in Manager生成的文件。工程文件列表簡明清晰。

    從上面的代碼可以看出,Megafunction的埠和參數都是很複雜的,很難全憑記憶完整的列出;對於一些比較特殊的參數內容(比如string類型的參數),如果不熟悉的話,很容易寫錯甚至不知道該寫哪些內容。

    解決這一問題的方法是,先採用MegaWizard Plug-in Manager生成用戶訂製Megafunction文件,然後參考該文件例化和配置Megafunction的方法,在自己的設計文件中直接例化Megafunction。

    背景資料:

    Altera Megafunctions, 部分Megafunction的文檔,MegaWizard Plug-Ins


[admin via 研發互助社區 ] Magafunction的用法已經有7311次圍觀

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