閱讀 | 訂閱
閱讀 | 訂閱
控制系統(tǒng)

可編程邏輯設計原則之硬件原則

星之球激光 來源:FPGA設計網2011-12-05 我要評論(0 )   

硬件原則主要針對HDL代碼編寫而言。應該明確FPGA/CPLD的邏輯設計所采用的硬件描述語言同軟件語言是有本質區(qū)別的!以Verilog語言為例,雖然Verilog許多語法規(guī)則和C語言相...

硬件原則主要針對HDL代碼編寫而言。應該明確FPGA/CPLD的邏輯設計所采用的硬件描述語言同軟件語言是有本質區(qū)別的!以Verilog語言為例,雖然Verilog許多語法規(guī)則和C語言相似,但是Verilog作為硬件描述語言,他的本質作用在于描述硬件!應該認識到Verilog是采用了C語言形式的硬件的抽象,他的最終實現結果是芯片內部的實際電路。所以評判一段HDL代碼的優(yōu)劣的最終標準是其描述并實現的硬件電路的性能(包括面積和速度兩個方面)。評價一個設計的代碼水平較高,僅僅是說這個設計由硬件向HDL代碼這種表現形式轉換的更流暢、合理。而一個設計的最終性能,在更大程度上取決于設計工程時所構想的硬件實現方案的效率以及合理性。

片面追求代碼的整潔、簡短,這是錯誤的,是與評價HDL的標準背道而馳的!

硬件原則的另外一個重要理解是“并行”和“串行”的概念。硬件系統(tǒng)比軟件系統(tǒng)速度快、實時性高,其重要原因就是硬件系統(tǒng)中各個單元的運算是獨立的,信號流失并行的。而C語言編譯后,其機器指令在CPU的高速緩沖隊列中基本是順序執(zhí)行的,即使有一些并行處理的技術,也是在一定程度上是十分有限的。所以在寫HDL代碼的時候,應該充分理解硬件系統(tǒng)的并行處理特點,合理安排數據流的時序,提高整個設計的效率。





RTL級Verilog描述語法和C語言描述語法的區(qū)別舉例:

1、循環(huán)

在C語言的描述中,為了使代碼執(zhí)行效率高,表述簡潔,經常用到下面的for語句

for(i=0;i<16;i++)

...

Verilog代碼設計中,在RTL級編碼中極少使用FOR循環(huán),因為for循環(huán)會被綜合器展開為所有變量情況的執(zhí)行語句,每個變量獨立占用寄存器資源,每條執(zhí)行語句并不能有效的復用硬件邏輯資源,造成巨大的資源浪費。RTL硬件描述中,遇到類似算法,推薦的方式是先搞清楚設計的時序要求,做一個reg型計數器,在每個時鐘沿累加,并在每個時鐘沿判斷計數器情況,做相應的處理,能復用的處理模塊盡量復用,即使所有操作都不能復用,也采用case語句展開處理。如:

reg [3:0] counter;

always @(posedge clk)

if(syn_rst)

counter <= 4'b0;

else

counter <= counter+1;

always @(posedge clk)

begin

case(counter)

4'b0000:

...

default:

endcase

end



2、條件判斷

C語言中主要有if...else和switch語句,兩者之間的區(qū)別主要在于程序的長短。

Verilog中也有相應的if...else和case語句,但其描述結構就有很大的區(qū)別。if...else語句是有優(yōu)先級的。一般來說第一個if的優(yōu)先級最高,最后一個else優(yōu)先級最低。而case語句是“平行”的結構,沒有優(yōu)先級。
 

 

轉載請注明出處。

暫無關鍵詞
免責聲明

① 凡本網未注明其他出處的作品,版權均屬于激光制造網,未經本網授權不得轉載、摘編或利用其它方式使用。獲本網授權使用作品的,應在授權范圍內使 用,并注明"來源:激光制造網”。違反上述聲明者,本網將追究其相關責任。
② 凡本網注明其他來源的作品及圖片,均轉載自其它媒體,轉載目的在于傳遞更多信息,并不代表本媒贊同其觀點和對其真實性負責,版權歸原作者所有,如有侵權請聯(lián)系我們刪除。
③ 任何單位或個人認為本網內容可能涉嫌侵犯其合法權益,請及時向本網提出書面權利通知,并提供身份證明、權屬證明、具體鏈接(URL)及詳細侵權情況證明。本網在收到上述法律文件后,將會依法盡快移除相關涉嫌侵權的內容。

網友點評
0相關評論
精彩導讀