新聞中心

        EEPW首頁 > 嵌入式系統 > 牛人業話 > 不同的verilog代碼風格看RTL視圖之二

        不同的verilog代碼風格看RTL視圖之二

        作者: 時間:2015-01-26 來源:網絡 收藏

          這次要說明的一個問題是我在做一個480*320液晶驅動的過程中遇到的,先看一個簡單的對比,然后再討論不遲。

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

          這個程序是在我的液晶驅動設計中提取出來的。假設是x_cnt不斷的增加,8bit的x_cnt加一個周期回到0后,y_cnt加1,如此循環,本意是要讓下面的dout信號只有在x_cnt>=5 & y_cnt=0或者x_cnt<= 4,y_cnt=1這個區間內為1,其它時刻內為0。一般而言會有如下兩種描述,前者是時序邏輯,后者是組合邏輯。當然除了下面兩種編碼風格外,還可以有很多種不同的編碼。這里只是列舉其一說明一下問題。

          Ex2:

          input clk;

          input[7:0] x_cnt,y_cnt;

          output dout;

          reg dout_r;

          always @ (posedge clk)

          if(x_cnt == 8'd5 && y_cnt == 8'd0) dout_r <= 1'b1;

          else if(x_cnt == 8'd6 && y_cnt == 8'd1 ) dout_r <= 1'b0;

          assign dout = dout_r;

          

        點擊看大圖

         

          綜合后使用了<1個macrocells。主要使用的是4個等于比較器。然后每個時鐘的上升沿做一次判斷,仔細看上面的視圖,其實你還可以發現優先級的問題,這個后面再說。

          組合邏輯的代碼:

          input clk;

          input[7:0] x_cnt,y_cnt;

          output dout;

          assign dout = ((x_cnt >= 8'd5 && y_cnt == 8'd0) ||

          (x_cnt < 8'd6 && y_cnt == 8'd1 ));

          

        點擊看大圖

         

          綜合后使用了2個macrocells。用了2個等于比較器,還有2個小于(等于)比較器。但是占用的資源卻比前者多出了一倍多,這個似乎說明了一些問題。其實在這個很簡單的設計里,這種資源占用情況還不是很明顯,我在做整個項目中用了這兩種不同的設計風格后發現:兩種不同的coding style得到的macrocells占用個數差別達到10幾個(這個可能是比較極端的情況)。當然了,這其中更多的因素可能是布局布線后走線等在不同風格代碼下的耗費是不一樣的。總之,前者更值得推薦,就是說能用等于比較器直接賦值(哪怕是用故意生成的鎖存器來保持賦值),也不用小于(大于)比較器。

        比較器相關文章:比較器工作原理




        關鍵詞: verilog RTL

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 花莲市| 林甸县| 石景山区| 房产| 大化| 会昌县| 塔城市| 庄浪县| 舒兰市| 新野县| 怀安县| 庆元县| 黄浦区| 肥城市| 东莞市| 贞丰县| 南部县| 韩城市| 崇州市| 五大连池市| 德保县| 扬州市| 佛学| 新和县| 台山市| 凤山市| 永昌县| 治县。| 岳西县| 西宁市| 连云港市| 梁平县| 青阳县| 平阴县| 海城市| 扎兰屯市| 海南省| 阆中市| 永城市| 宜黄县| 宜都市|