可提高設(shè)計性能的HDL編程風(fēng)格與技巧
發(fā)布時間:2008/5/27 0:00:00 訪問次數(shù):546
    
    可提高設(shè)計性能的hdl編程風(fēng)格與技巧
    
    通過熟悉器件架構(gòu),選擇合適的硬件平臺和硅片特性,并借助配置恰當(dāng)且性能優(yōu)良的實現(xiàn)工具,設(shè)計人員就能獲得較高的設(shè)計性能。不過,在提高設(shè)計性能的眾多方法中最容易被忽視的也許就是為目標(biāo)器件編寫高效的hdl代碼。本文所討論的編程風(fēng)格與技巧可提高設(shè)計性能。
    
    使用復(fù)位對性能的影響
    
    很少有哪種系統(tǒng)級的選擇能夠像復(fù)位選擇那樣對性能、面積和功率產(chǎn)生如此重要的影響。一些系統(tǒng)架構(gòu)師規(guī)定必須使用系統(tǒng)全局異步復(fù)位。采用賽靈思的fpga架構(gòu),復(fù)位的使用和類型將對代碼性能產(chǎn)生重要影響。
    
    
    
    圖1:綜合工具選用2個lut。圖2:更靈活的lut接口。
    
    在目前所有的賽靈思fpga架構(gòu)中,查找表(lut)單元就像邏輯、rom/ram或移位寄存器(srl或移位寄存器lut)那樣是可配置的。綜合工具可以根據(jù)rtl代碼推斷出采用某一種結(jié)構(gòu)。不過,為了將lut用作移位寄存器,代碼中不能描述復(fù)位功能,因為srl本身沒有復(fù)位功能。這也意味著具有復(fù)位功能的移位寄存器代碼不能獲得最佳實現(xiàn)(移位寄存器之間需要多個觸發(fā)器和相關(guān)路徑),而沒有復(fù)位功能的代碼則可以獲得快速而緊湊的實現(xiàn)結(jié)果(使用srl)。
    
    這兩種情況對面積和功率的影響更明顯一些,但對性能的影響不很明顯。一般而言,采用觸發(fā)器生成的移位寄存器不會成為設(shè)計中的關(guān)鍵路徑,因為寄存器之間的時序路徑通常沒有足夠的長度成為設(shè)計中最長的路徑。而資源(觸發(fā)器和布線)的額外消耗會對其它設(shè)計部分的布局和布線選擇產(chǎn)生負(fù)面影響,因而可能導(dǎo)致更長的布線路徑。
    
    專用乘法器和ram模塊
    
    乘法器通常用于dsp設(shè)計。但由于賽靈思的fpga架構(gòu)中包含有乘法專用資源,因此在許多設(shè)計中都有乘法器的應(yīng)用。這些乘法器除了執(zhí)行乘法操作外,還提供其它功能。同樣地,實際上不管哪種應(yīng)用,每個fpga設(shè)計都會用到大小不一的ram。
    
    賽靈思fpga包含幾個ram模塊,在設(shè)計中可以用作ram、rom、大型lut甚至通用邏輯。使用乘法器和ram資源可獲得更加緊湊、具有更高性能的設(shè)計,不過復(fù)位選擇對性能既有正面的,也有負(fù)面的影響,具體取決于使用的復(fù)位類型。ram和乘法器模塊只包含同步復(fù)位,因此如果這些功能的代碼用異步復(fù)位編寫,那么這些模塊中的寄存器就無法使用了。這對性能的影響是非常嚴(yán)重的。例如,virtex-4器件的全管線式乘法器采用異步復(fù)位設(shè)計時,頻率最高只能達(dá)到200mhz,而將代碼改成同步復(fù)位后,性能可提高兩倍以上,頻率可達(dá)500mhz。
    
    
    
    圖3:綜合工具選用3個lut。
    
    要從兩個方面看待與ram有關(guān)的問題。與乘法器類似,virtex-4塊ram具有可選的輸出寄存器,使用它們可以減少ram的時鐘到輸出時間,提高整體設(shè)計速度。但這些寄存器只提供同步復(fù)位,不提供異步復(fù)位,因此當(dāng)代碼中的寄存器采用異步復(fù)位描述時就無法使用這些寄存器。
    
    第二個問題來自ram被用作lut或通用邏輯時。有時基于面積和性能方面的考慮,將配置為rom或通用邏輯的多個lut壓縮進(jìn)單個塊ram是非常有益的。這可通過人工設(shè)定結(jié)構(gòu),或以自動方式將部分邏輯設(shè)計映射到未用的ram存儲區(qū)來實現(xiàn)。因為塊ram具有同步復(fù)位功能,因此當(dāng)使用同步復(fù)位(或沒有復(fù)位)時,無需改變已經(jīng)定義好的設(shè)計功能就可實現(xiàn)通用邏輯的映射。但當(dāng)采用異步復(fù)位描述時,這就不可能實現(xiàn)。
    
    通用邏輯
    
    異步復(fù)位對通用邏輯結(jié)構(gòu)也會產(chǎn)生影響。由于所有的賽靈思fpga通用寄存器都具有將復(fù)位/置位編程為異步或同步的能力,因此設(shè)計人員可能認(rèn)為使用異步復(fù)位沒什么不妥。但這種假設(shè)通常是錯誤的。如果沒有使用異步復(fù)位,那么置位/復(fù)位邏輯就可以被置為同步邏輯。這樣一來,就可釋放額外的資源用于邏輯優(yōu)化。
     <
    
    可提高設(shè)計性能的hdl編程風(fēng)格與技巧
    
    通過熟悉器件架構(gòu),選擇合適的硬件平臺和硅片特性,并借助配置恰當(dāng)且性能優(yōu)良的實現(xiàn)工具,設(shè)計人員就能獲得較高的設(shè)計性能。不過,在提高設(shè)計性能的眾多方法中最容易被忽視的也許就是為目標(biāo)器件編寫高效的hdl代碼。本文所討論的編程風(fēng)格與技巧可提高設(shè)計性能。
    
    使用復(fù)位對性能的影響
    
    很少有哪種系統(tǒng)級的選擇能夠像復(fù)位選擇那樣對性能、面積和功率產(chǎn)生如此重要的影響。一些系統(tǒng)架構(gòu)師規(guī)定必須使用系統(tǒng)全局異步復(fù)位。采用賽靈思的fpga架構(gòu),復(fù)位的使用和類型將對代碼性能產(chǎn)生重要影響。
    
    
    
    圖1:綜合工具選用2個lut。圖2:更靈活的lut接口。
    
    在目前所有的賽靈思fpga架構(gòu)中,查找表(lut)單元就像邏輯、rom/ram或移位寄存器(srl或移位寄存器lut)那樣是可配置的。綜合工具可以根據(jù)rtl代碼推斷出采用某一種結(jié)構(gòu)。不過,為了將lut用作移位寄存器,代碼中不能描述復(fù)位功能,因為srl本身沒有復(fù)位功能。這也意味著具有復(fù)位功能的移位寄存器代碼不能獲得最佳實現(xiàn)(移位寄存器之間需要多個觸發(fā)器和相關(guān)路徑),而沒有復(fù)位功能的代碼則可以獲得快速而緊湊的實現(xiàn)結(jié)果(使用srl)。
    
    這兩種情況對面積和功率的影響更明顯一些,但對性能的影響不很明顯。一般而言,采用觸發(fā)器生成的移位寄存器不會成為設(shè)計中的關(guān)鍵路徑,因為寄存器之間的時序路徑通常沒有足夠的長度成為設(shè)計中最長的路徑。而資源(觸發(fā)器和布線)的額外消耗會對其它設(shè)計部分的布局和布線選擇產(chǎn)生負(fù)面影響,因而可能導(dǎo)致更長的布線路徑。
    
    專用乘法器和ram模塊
    
    乘法器通常用于dsp設(shè)計。但由于賽靈思的fpga架構(gòu)中包含有乘法專用資源,因此在許多設(shè)計中都有乘法器的應(yīng)用。這些乘法器除了執(zhí)行乘法操作外,還提供其它功能。同樣地,實際上不管哪種應(yīng)用,每個fpga設(shè)計都會用到大小不一的ram。
    
    賽靈思fpga包含幾個ram模塊,在設(shè)計中可以用作ram、rom、大型lut甚至通用邏輯。使用乘法器和ram資源可獲得更加緊湊、具有更高性能的設(shè)計,不過復(fù)位選擇對性能既有正面的,也有負(fù)面的影響,具體取決于使用的復(fù)位類型。ram和乘法器模塊只包含同步復(fù)位,因此如果這些功能的代碼用異步復(fù)位編寫,那么這些模塊中的寄存器就無法使用了。這對性能的影響是非常嚴(yán)重的。例如,virtex-4器件的全管線式乘法器采用異步復(fù)位設(shè)計時,頻率最高只能達(dá)到200mhz,而將代碼改成同步復(fù)位后,性能可提高兩倍以上,頻率可達(dá)500mhz。
    
    
    
    圖3:綜合工具選用3個lut。
    
    要從兩個方面看待與ram有關(guān)的問題。與乘法器類似,virtex-4塊ram具有可選的輸出寄存器,使用它們可以減少ram的時鐘到輸出時間,提高整體設(shè)計速度。但這些寄存器只提供同步復(fù)位,不提供異步復(fù)位,因此當(dāng)代碼中的寄存器采用異步復(fù)位描述時就無法使用這些寄存器。
    
    第二個問題來自ram被用作lut或通用邏輯時。有時基于面積和性能方面的考慮,將配置為rom或通用邏輯的多個lut壓縮進(jìn)單個塊ram是非常有益的。這可通過人工設(shè)定結(jié)構(gòu),或以自動方式將部分邏輯設(shè)計映射到未用的ram存儲區(qū)來實現(xiàn)。因為塊ram具有同步復(fù)位功能,因此當(dāng)使用同步復(fù)位(或沒有復(fù)位)時,無需改變已經(jīng)定義好的設(shè)計功能就可實現(xiàn)通用邏輯的映射。但當(dāng)采用異步復(fù)位描述時,這就不可能實現(xiàn)。
    
    通用邏輯
    
    異步復(fù)位對通用邏輯結(jié)構(gòu)也會產(chǎn)生影響。由于所有的賽靈思fpga通用寄存器都具有將復(fù)位/置位編程為異步或同步的能力,因此設(shè)計人員可能認(rèn)為使用異步復(fù)位沒什么不妥。但這種假設(shè)通常是錯誤的。如果沒有使用異步復(fù)位,那么置位/復(fù)位邏輯就可以被置為同步邏輯。這樣一來,就可釋放額外的資源用于邏輯優(yōu)化。
     <
熱門點擊
- Xtreme PCB軟件允許多位工程師同時布
- ALLEGRO布線缺點之我見
- PCB LAYOUT技術(shù)大全---初學(xué)者必看
- 利用FPGA實現(xiàn)異步FIFO設(shè)計
- 統(tǒng)一的電路仿真驗證平臺的設(shè)計
- 多芯片封裝:高堆層,矮外形
- PowerPCB修改整體文字大小
- 用等效性檢查驗證連續(xù)改變
- SoC原型驗證技術(shù)的研究
- 視頻窗口控制器設(shè)計
推薦技術(shù)資料
- 泰克新發(fā)布的DSA830
- 泰克新發(fā)布的DSA8300在一臺儀器中同時實現(xiàn)時域和頻域分析,DS... [詳細(xì)]
- CV/CC InnoSwitch3-AQ 開
- URF1DxxM-60WR3系
- 1-6W URA24xxN-x
- 閉環(huán)磁通門信號調(diào)節(jié)芯片NSDRV401
- SK-RiSC-SOM-H27X-V1.1應(yīng)
- RISC技術(shù)8位微控制器參數(shù)設(shè)
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究