新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 實現拆分大組合邏輯的方法

        實現拆分大組合邏輯的方法

        作者: 時間:2018-09-11 來源:網絡 收藏
        圖1是很多為了提高系統時鐘采用的拆分大,但是沒有提供具體如何拆分的實例。我覺得實例才是重要的。但我不明白在寫代碼時,如何知道這樣寫會被綜合成一個很大的邏輯,一些簡單的可以想到(比如大的計數器應該分成多個來做),但是更復雜的實在是不好理解。

        圖1


        可以通過流水線的方式分拆,這也是一種提高芯片速度的一種方式。 在中間插入寄存器,設計成流水。 很典型的例子就是調度器,如果做64調度器,可能中間的延時太長,不能滿足系統速度要求,這時候就可以做成一級16調度,一級4調度,來完成64調度的功能。

        本文引用地址:http://www.104case.com/article/201809/388871.htm


        用加法器做例子,設輸入ABCD輸出OUT 上半部分就是: out = A+B+C+D;
        下半部分就是:
        always @(posedge clk)
        begin
        sumreg1 = sum1;
        sumreg2 = sum2;
        sumreg3 = sum3; end
        assign sum1 = A+B;
        assign sum2 = C+D;
        assign sum3 = sumrge1+sumreg2;
        assign OUT = sumreg3;
        通常建議使用下半部分的算法,如果可以使用流水線。


        通常是這樣的,沒有例子看起來是不好理解,但是一有具體的例子就非常清楚了。我也來學著給個計數器的例子計數255,如果用一個寄存器來計那么需要開的深度為8的,如果拆分為兩個那么只需容量為4的兩個寄存器,所需的邏輯較小,不知道對不對。
        reg[3:0]ad1;
        reg[3:0]ad2;
        always @(posedge clk)
        if(!rest)
        begin
        out=0;
        ad1=0;
        ad2=0;
        end
        else
        if(ad1==15)
        begin
        ad2=ad2+1;
        ad1=0;
        end
        else
        if (ad2==15)
        begin out=1;
        end
        else
        ad1=ad1+1;
        ad1加滿后去觸發ad2加。


        always @(posedge clk)
        if (reset)
        counter0 = 0;
        else
        counter0 = counter0 + 1;
        always @(posedge clk)
        begin
        counterreg0 = counter0;
        if (counterreg0 == 4'b1111)
        outreg0 = 1;
        else
        outreg0 = 0;
        end
        assign counter1 = counterreg1 + outreg0;
        always @(posedge clk)
        begin
        counterreg1 = counter1;
        if (counterreg1 == 4'b1111)
        out = 1;
        else
        out = 0;
        end


        lflhust 寫的程序沒有達到邏輯拆分的目的, 原因很簡單, 那個程序綜合后生成的電路的流水線深度還是1。 zf0579那個程序的流水線深度才是2,達到了拆分的目的。 作邏輯的出發點不是寫HDL代碼,而是在寫代碼前腦子里面要有 你需要實現的邏輯的電路結構。

        作邏輯的出發點不是寫HDL代碼,而是在寫代碼前腦子里面要有。你需要實現的邏輯的電路結構。



        關鍵詞: 組合邏輯 方法

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 景洪市| 瑞昌市| 阿城市| 满洲里市| 东港市| 绵阳市| 福清市| 贺兰县| 昆山市| 武义县| 丘北县| 西青区| 锡林浩特市| 青川县| 宣汉县| 区。| 丘北县| 达孜县| 梧州市| 贞丰县| 庆阳市| 曲周县| 米泉市| 定结县| 莱芜市| 鄂托克前旗| 交城县| 泰顺县| 奇台县| 沂南县| 略阳县| 永新县| 唐海县| 仪陇县| 宁化县| 会同县| 正宁县| 视频| 平湖市| 黄石市| 清远市|