<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于FPGA的嵌入式系統(tǒng)設(shè)計(jì)

          基于FPGA的嵌入式系統(tǒng)設(shè)計(jì)

          作者: 時(shí)間:2009-09-17 來源:網(wǎng)絡(luò) 收藏

          設(shè)計(jì)輸入主要有原理圖輸入和HDL輸入兩種方式,一般開發(fā)商都同時(shí)支持兩種輸入方式。有些熟悉硬件設(shè)計(jì)的工程師開始喜歡利用原理圖進(jìn)行設(shè)計(jì),這種方法非常直觀,但基于可移植性和規(guī)范化方面的考慮,絕大部分深入設(shè)計(jì)和ASIC設(shè)計(jì)的工程師最終都將統(tǒng)一到HDL平臺(tái)上來。

          設(shè)計(jì)仿真包含功能仿真和時(shí)序仿真兩項(xiàng)主要內(nèi)容,功能仿真忽略了綜合和布局布線導(dǎo)致的時(shí)延等因素,僅僅從邏輯上進(jìn)行仿真,這對(duì)設(shè)計(jì)思路的驗(yàn)證是有幫助的,但必須通過時(shí)序仿真作進(jìn)一步驗(yàn)證,發(fā)現(xiàn)并修正時(shí)序問題。

          設(shè)計(jì)綜合將HDL語言生成用于布局布線的網(wǎng)表和相應(yīng)的約束。綜合效果直接導(dǎo)致設(shè)計(jì)的性能和邏輯門的利用效率,因此,許多可編程邏輯器件開發(fā)商都支持第三方綜合和仿真工具,著名的有:Synplicity、Synopsys和ModelSim等。

          布局布線工具利用綜合生成的網(wǎng)表,在內(nèi)部進(jìn)行布局布線,并生成可用于配置的比特流文件。布局布線工具與可編程邏輯器件工藝及其布線資源密切相關(guān),一般由可編程邏輯器件開發(fā)商直接提供。

          隨著可編程邏輯器件容量的不斷增大和設(shè)計(jì)性能要求的不斷提高,對(duì)傳統(tǒng)的開發(fā)工具提出了挑戰(zhàn)。以Xilinx公司為例,應(yīng)IP Core開發(fā)和集成的需要,開發(fā)了IP Core使用工具Core Generator和IP Core包裝工具IP Capture;提供了模塊化設(shè)計(jì)工具M(jìn)odular Design用于超大規(guī)模設(shè)計(jì)的團(tuán)隊(duì)項(xiàng)目開發(fā);用片內(nèi)邏輯分析儀ChipScope ILA進(jìn)行片內(nèi)邏輯調(diào)試;Xpower則用于設(shè)計(jì)功耗分析并得出相應(yīng)的解決方案;還有System Generator結(jié)合Simulink甚至可以簡(jiǎn)單地實(shí)現(xiàn)數(shù)字信號(hào)處理模型(如FIR濾波器和FFT等)的FPGA硬件實(shí)現(xiàn)。此外,一些有爭(zhēng)議的設(shè)計(jì)工具,如基于C語言的FPGA開發(fā)工具DK1等為超大容量FPGA設(shè)計(jì)和復(fù)雜邏輯設(shè)計(jì)提供了值得嘗試的途徑。

          3.2 處理器IP Core:Micro Blaze與PPC405將處理器IP Core嵌入到可編程邏輯器件是基于FPGA的的前提條件,目前,國內(nèi)外許多單位已成功的將51單片機(jī)、arm和PPC 等處理器內(nèi)核嵌入各種可編程邏輯器件并進(jìn)行了應(yīng)用系統(tǒng)的設(shè)計(jì),其中最著名的要數(shù)Xilinx公司的Micro Blaze和Altera公司的Nois了。Xilinx從Pico Blaze到Micro Blaze,再到PPC405,完成了從8位單片機(jī)到32位微處理器的逐步完善和性能提升。

          Micro Blaze 是一個(gè)專門為Xilinx FPGA優(yōu)化的RISC嵌入式軟處理器,符合IBM Core Connect標(biāo)準(zhǔn),能夠與PPC405系統(tǒng)無縫連接,Micro Blaze軟處理器內(nèi)核的結(jié)構(gòu)如圖2所示,


          圖2 Micro Blaze IP Core結(jié)構(gòu)框圖

          它具備以下基本特征:32個(gè)32bit通用寄存器硬件乘法器(僅限Virtex II系列)

          32bit地址總線和32bit數(shù)據(jù)總線三操作數(shù)32bit指令字,兩種尋址模式獨(dú)立的片內(nèi)程序32bit總線和數(shù)據(jù)總線片內(nèi)總線遵循OPB(On- chip Peripheral Bus)標(biāo)準(zhǔn)通過LMB(Local Memory Bus)訪問片內(nèi)Block RAM Micro Blaze是一個(gè)非常簡(jiǎn)化,但有具有較高性能的軟處理器內(nèi)核,他可以在性價(jià)比很高的Spartan II(-E)系列FPGA上實(shí)現(xiàn),系統(tǒng)時(shí)鐘頻率為75MHZ,僅占用400個(gè)Slice資源,相當(dāng)于10萬門FPGA容量的三分之一,而10萬門的 Spartan II系列FPGA的批量目標(biāo)市場(chǎng)價(jià)格僅為10美元左右,非常適合消費(fèi)類嵌入式產(chǎn)品應(yīng)用需求。

          在Xilinx最新一代FPGA Virtex II Pro中,嵌入了IBM公司的PPC405 RISC結(jié)構(gòu)硬處理器(如圖3所示),


          圖3 PPC405 IP Core結(jié)構(gòu)框圖

          該處理器內(nèi)核具備以下基本特征:32位、Harvard結(jié)構(gòu),300MHZ以上工作頻率支持IBM Core Connect總線標(biāo)準(zhǔn)符合PowerPC UISA標(biāo)準(zhǔn)低功耗:0.9mW/MHZ硬件乘法和除法單元32個(gè)32bit通用寄存器16KB雙端口程序緩存16KB雙端口數(shù)據(jù)緩存內(nèi)存管理單元(MMU)支持獨(dú)立的調(diào)試和跟蹤接口PPC405硬處理器內(nèi)核性能上與現(xiàn)有的EPPC Core完全一致,含有PPC405 Core 的Virtex II Pro系列FPGA還附加了Gbit收發(fā)器和18×18硬件乘法器以及龐大的可編程邏輯資源,非常適合于通信、圖像信號(hào)處理以及復(fù)雜應(yīng)用系統(tǒng)的設(shè)計(jì),并提供了更加靈活的設(shè)計(jì)模式。

          3.3 基于Micro Blaze和PPC405 Core的SOPC軟硬件開發(fā)

          基于嵌入式處理器內(nèi)核的SOPC系統(tǒng)開發(fā)是一個(gè)軟硬件協(xié)同設(shè)計(jì)的過程,一方面,它極大地提高了系統(tǒng)設(shè)計(jì)的靈活性和快速的設(shè)計(jì)迭代周期,使整個(gè)開發(fā)過程變得更加可控;另一方面,一些新的調(diào)試和設(shè)計(jì)問題,如邏輯分析儀和數(shù)字示波器的接入等,對(duì)調(diào)試設(shè)備和調(diào)試手段提出了更高的要求,為了盡可能避免問題的產(chǎn)生,要求有更好的設(shè)計(jì)工具和集成開發(fā)環(huán)境,保證IP Core資源的可用性和設(shè)計(jì)實(shí)現(xiàn)的一致性,讓設(shè)計(jì)工程師從煩瑣的內(nèi)部時(shí)序調(diào)試中解放出來。



          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();