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

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 如何寫代碼減少邏輯單元的使用數(shù)量

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

            作者: 時(shí)間:2017-10-13 來源:網(wǎng)絡(luò) 收藏

            一....盡量不要使用大于小于這樣的判斷語句, 這樣會明顯增加使用的數(shù)量 .看一下報(bào)告,資源使用差別很大.
            例程: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)改成大于小于,報(bào)告中用了135個
            二.....一定要想盡辦法減少reg寄存器的長度
            上次把[30:0]改到[50:0],報(bào)告里邏輯單元從100多直升到2000多!!!太嚇人了,至于為什么我就不知道了哈!
            三....case語句里一定要加default if一定要加else
            如果是組合邏輯的設(shè)計(jì),不加default或else的話,不能保證所有的情況都有賦值,就會在內(nèi)部形成一個鎖存器,不再是一個純粹的組合邏輯了,電路性能就會下降.
            例如:case({a,b})
            2b11 e=b;
            2b10 e=a;
            endcase
            //不加default,雖然只關(guān)心a=1時(shí)的結(jié)果,但是a=0的時(shí)候,e就會保存原來的值,直到a變?yōu)?
            //那么e要保存原來的值,就要在內(nèi)部生成鎖存器了.

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

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


            關(guān)鍵詞: 邏輯單元 代碼

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉