• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 如何寫代碼減少邏輯單元的使用數量

    如何寫代碼減少邏輯單元的使用數量

    作者: 時間:2017-10-13 來源:網絡 收藏

    一....盡量不要使用大于小于這樣的判斷語句, 這樣會明顯增加使用的數量 .看一下報告,資源使用差別很大.
    例程:always@(posedge clk) begin count1=count1+1; if(count1==10000000) feng=1; //no_ring else if(count1==90000000) begin feng=0; //ring count1=0; endend //這么寫會用107個
    // 如果把這句話if(count1==10000000)改成大于小于,報告中用了135個
    二.....一定要想盡辦法減少reg寄存器的長度
    上次把[30:0]改到[50:0],報告里邏輯單元從100多直升到2000多!!!太嚇人了,至于為什么我就不知道了哈!
    三....case語句里一定要加default if一定要加else
    如果是組合邏輯的設計,不加default或else的話,不能保證所有的情況都有賦值,就會在內部形成一個鎖存器,不再是一個純粹的組合邏輯了,電路性能就會下降.
    例如:case({a,b})
    2b11 e=b;
    2b10 e=a;
    endcase
    //不加default,雖然只關心a=1時的結果,但是a=0的時候,e就會保存原來的值,直到a變為1
    //那么e要保存原來的值,就要在內部生成鎖存器了.

    四....盡量使用Case語句 而不是if--else語句
    復雜的if--else語句通常會生成優先級譯碼邏輯,這將會增加這些路徑上的組合時延用來產生復雜邏輯的Case語句通常會生成不會有太多時延的并行邏輯
    五...組合邏輯的always塊中,要注意所有的輸入全部放入敏感變量表里
    比如:always@(a or b)
    begin
    out=(abc);
    end
    此時生成的不是純的組合邏輯,因為當C變化時, out不會立刻發生變化(需要等到a或b變化,c的變化才會顯現), 所以需要生成一個寄存器來保存C的值.
    連續賦值語句的綜合:從賦值語句右邊提取出邏輯,用于驅動賦值語句左邊的net
    過程賦值語句的綜合:從賦值語句右邊提取出的邏輯,用于驅動賦值語句左邊的reg型變量。注意:iniTIa語句僅用于仿真,不綜合。只有在always中才能被綜合。
    建議組合邏輯用阻塞語句,時序邏輯用非阻塞語句,任何延時控制(如#5)都被綜合工具器忽略。一個模塊中同一個變量不能既有阻塞賦值,又有非阻塞賦值。
    always語句的綜合
    1對于組合邏輯,事件列表必須包括所有always語句中引用的變量,否則會造成綜合的結果與設計功能不匹配。
    2臨時變量可以不用在事件列表中列出。
    if語句的綜合
    特別要注意綜合出鎖存器。always中,某個變量沒有在所有的條件分支中被賦值,就會綜合出鎖存器。
    case語句綜合
    和if語句一樣,不完整的case分支語句也會導致鎖存器的綜合。
    避免方法:
    1)在case語句前,對要賦值的變量賦予初值
    always @ (state or a or b) begin
    q =0;
    case(state)
    3b000: q = A B;
    ……
    2)使用default分支語句
    3)使用綜合指令,具體用法在case關鍵字行的注釋中插入”synthesis full_case“
    并行CASE語句
    通常情況下case語句和if語句一樣會綜合出代有優先權解碼的硬件電路,從上大俠選項優先級逐漸降低。但如果設計者知道case語句中的所有項是互斥的,這時候就使用”parallel_case綜合指令。
    always @(key)
    case(key) //synthesis parallel_case
    4b0001: a = 0;
    endcase

    本文引用地址:http://www.czjhyjcfj.com/article/201710/365676.htm


    關鍵詞: 邏輯單元 代碼

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 德安县| 南京市| 靖西县| 南和县| 呼和浩特市| 湖北省| 纳雍县| 洪洞县| 法库县| 乡城县| 阿荣旗| 汉沽区| 鲁山县| 四子王旗| 赫章县| 永康市| 宁津县| 广河县| 阿城市| 灵宝市| 安陆市| 潢川县| 太湖县| 鄢陵县| 甘肃省| 仙游县| 肇东市| 岳普湖县| 新营市| 无为县| 元氏县| 依安县| 黄陵县| 桐城市| 潮州市| 甘泉县| 黔东| 个旧市| 南江县| 乡城县| 赣州市|