新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 牛人業(yè)話 > 不同的verilog代碼風(fēng)格看RTL視圖之二

不同的verilog代碼風(fēng)格看RTL視圖之二

作者: 時(shí)間:2015-01-26 來源:網(wǎng)絡(luò) 收藏

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

本文引用地址:http://2s4d.com/article/268630.htm

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

  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;

  

點(diǎn)擊看大圖

 

  綜合后使用了<1個(gè)macrocells。主要使用的是4個(gè)等于比較器。然后每個(gè)時(shí)鐘的上升沿做一次判斷,仔細(xì)看上面的視圖,其實(shí)你還可以發(fā)現(xiàn)優(yōu)先級的問題,這個(gè)后面再說。

  組合邏輯的代碼:

  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 ));

  

點(diǎn)擊看大圖

 

  綜合后使用了2個(gè)macrocells。用了2個(gè)等于比較器,還有2個(gè)小于(等于)比較器。但是占用的資源卻比前者多出了一倍多,這個(gè)似乎說明了一些問題。其實(shí)在這個(gè)很簡單的設(shè)計(jì)里,這種資源占用情況還不是很明顯,我在做整個(gè)項(xiàng)目中用了這兩種不同的設(shè)計(jì)風(fēng)格后發(fā)現(xiàn):兩種不同的coding style得到的macrocells占用個(gè)數(shù)差別達(dá)到10幾個(gè)(這個(gè)可能是比較極端的情況)。當(dāng)然了,這其中更多的因素可能是布局布線后走線等在不同風(fēng)格代碼下的耗費(fèi)是不一樣的??傊罢吒档猛扑],就是說能用等于比較器直接賦值(哪怕是用故意生成的鎖存器來保持賦值),也不用小于(大于)比較器。

比較器相關(guān)文章:比較器工作原理




關(guān)鍵詞: verilog RTL

評論


相關(guān)推薦

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

關(guān)閉