1. 程式人生 > 實用技巧 >【日更計劃035】數字IC基礎題

【日更計劃035】數字IC基礎題

上期答案

[067] 獨熱碼在設計中有什麼好處?

獨熱碼中,狀態轉換時,會有兩位改變,一位清零,一位置一。它的優點時,不需要進行解碼就能知道當前的狀態。獨熱碼會使用更多的觸發器,但是更加少的組合邏輯,在時序電路中不需要用解碼邏輯進行區分狀態。

[068] 在任何一種程式語言中,靜態(static)變數和自動(automatic)變數,區域性(local)變數和全域性(global)變數之間有什麼區別?

區分這些名詞需要兩個概念,作用域(scope)和儲存持續時間(storage duration),前者定義了在何處可以訪問變數,後者定義了在何時可以訪問變數。

  • 按照變數的作用域可以區分區域性(local)和全域性(global)變數。區域性變數的作用範圍有限,盡在宣告它們的程式碼塊中可見。而全域性變數在聲明後在程式的任何位置都可見。
  • 儲存持續時間可以區分自動(automatic)變數和靜態(static)變數。靜態變數的生命周其一直持續到程式結束,因此可以始終訪問。自動變數具有有限的生命週期,只能持續到程式離開定義的塊或者作用域為止。

例如:在以下的systemverilog程式碼中,global_int被宣告為類成員,並且在整個類中具有全域性作用域,而當取消引用該類的物件時,其生命期結束。global_static變數被宣告為靜態變數並具有全域性作用域整個類以及整個程式的生命週期,即使取消引用類的物件也存在。sum變數對於函式compute()是區域性的,並且僅在函式內部可見,並且僅在compute執行時存在, count變數在函式compute()中是區域性變數,僅在函式範圍內可見,但由於它是靜態的,因此即使在多次執行函式compute()之後,它也只有單個副本並保留該值.

class test_class;
    int global_int; //automatic by default
    static global_static; //global static variable
    
    void function compute()
        begin
            static int count; //local static variable
            local int sum; //local automatic variable
            sum = sum +1;
            count = count +sum;
        end
    endfunction
    
endclass

你答對了嗎

本期題目

[069] 什麼是內聯(inline)函式?

[070] 什麼是正則表示式?

歡迎在留言區給出你的答案,正確答案將在下一期公佈,或者到下面的文章獲取答案

面試攻略