這次要說(shuō)明的一個(gè)問(wèn)題是我在做一個(gè)480*320液晶驅動(dòng)的過(guò)程中遇到的,先看一個(gè)簡(jiǎn)單的對比,然后再討論不遲。 這個(gè)程序是在我的液晶驅動(dòng)設計中提取出來(lái)的。假設是x_cnt不斷的增加,8bit的x_cnt加一個(gè)周期回到0后,y_cnt加1,如此循環(huán),本意是要讓下面的dout信號只有在x_cnt>=5 & y_cnt=0或者x_cnt if(x_cnt == 8'd5 && y_cnt == 8'd0) dout_r else if(x_cnt == 8'd6 && y_cnt == 8'd1 ) dout_r [color=] assign dout = dout_r; 綜合后使用了RTL視圖,其實(shí)你還可以發(fā)現優(yōu)先級的問(wèn)題,這個(gè)后面再說(shuō)。 組合邏輯的代碼: [color=] input clk; [color=] input[7:0] x_cnt,y_cnt; [color=] output dout; [color=] assign dout = ((x_cnt >= 8'd5 && y_cnt == 8'd0) || (x_cnt 綜合后使用了2個(gè)macrocells。用了2個(gè)等于比較器,還有2個(gè)小于(等于)比較器。但是占用的資源卻比前者多出了一倍多,這個(gè)似乎說(shuō)明了一些問(wèn)題。其實(shí)在這個(gè)很簡(jiǎn)單的設計里,這種資源占用情況還不是很明顯,我在做整個(gè)項目中用了這兩種不同的設計風(fēng)格后發(fā)現:兩種不同的coding style得到的macrocells占用個(gè)數差別達到10幾個(gè)(這個(gè)可能是比較極端的情況)。當然了,這其中更多的因素可能是布局布線(xiàn)后走線(xiàn)等在不同風(fēng)格代碼下的耗費是不一樣的?傊,前者更值得推薦,就是說(shuō)能用等于比較器直接賦值(哪怕是用故意生成的鎖存器來(lái)保持賦值),也不用小于(大于)比較器。 |