文章 ID: 000074260 內容類型: 疑難排解 最近查看日期: 2012 年 09 月 11 日

為什麼我的Nios II C-to-Hardware (C2H) 編譯器會在來原始程式碼包含可變的班次操作員時產生加速器故障時間?

環境

  • Intel® Nios® II 處理器
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    描述

    設計不符合時間的一個可能原因,是它與其他組合邏輯結合了一個或多個管狀移位器。每當換班操作員使用可變的操作操作,即「a = b << c;」Nios® II C2H 會產生槍管式邏輯。C2H 所產生的槍管式邏輯會執行大量的組合多工處理器,這可能會對設計的時間產生顯著影響。 以下兩個範例顯示,原始碼可能會因為槍管移位器而導致計時降級。


    組合移位輸入:

    以下是組合移位輸入到槍管移位器的範例,可能會導致計時降級。

    int a, b, c, d, result, shift_distance;
    result = (a b c d) >> shift_distance;

    新增結果會作為作業方式用於輪班操作員,因此在其中一個新增輸入和「結果」之間會建立一條漫長的計時路徑。若要增加管道數量,請將新增結果指派為暫存變數,如下所示:

    int a, b, c, d, addition_result, shift_distance;
    addition_result = a b c d;
    result = addition_result >> shift_distance;


    組合移位輸出:

    以下是從槍管移位器的組合移位輸出可能導致計時降級的範例。

    int a, b, c, d, result, shift_distance;
    result = (a >> shift_distance) b c d;

    換班結果會被用作新增操作員的作法,因此在「a」和「結果」之間會建立一條漫長的計時路徑。若要增加管道數量,請將移位結果指派為下列變數:

    int a, b, c, d, result, shift_result, shift_distance;
    shift_result = a >> shift_distance;
    result = shift_result b c d;

    相關產品

    本文章適用於 1 產品

    Intel® 可程式裝置

    這個頁面的內容綜合了英文原始內容的人工翻譯譯文與機器翻譯譯文。本內容是基於一般資訊目的,方便您參考而提供,不應視同完整或準確的內容。如果這個頁面的英文版與譯文之間發生任何牴觸,將受英文版規範及管轄。 查看這個頁面的英文版。