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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 在SoPC上實現(xiàn)的波形發(fā)生器

          在SoPC上實現(xiàn)的波形發(fā)生器

          ——
          作者:作 者:國防科學技術(shù)大學 步凱 徐欣 時間:2007-01-26 來源:《單片機與嵌入式系統(tǒng)應(yīng)用》 收藏


          引 言

          本文引用地址:http://www.ex-cimer.com/article/20774.htm

          sopc可編程片上系統(tǒng)是一種特殊的嵌入式微處理器系統(tǒng)。首先,它是片上系統(tǒng)(soc),即由單個芯片完成整個系統(tǒng)的主要邏輯功能;其次,它是可編程系統(tǒng),以fpga為硬件基礎(chǔ),具有靈活的設(shè)計方式,可裁減、可擴充、可升級,并具備軟硬件系統(tǒng)在線可編程的功能。

          ip(intellectual property)知識產(chǎn)權(quán)是soc設(shè)計中非常重要的內(nèi)容。資源復(fù)用(ip reuse)是指在集成電路設(shè)計過程中,通過繼承、共享或購買所需的部分或全部知識產(chǎn)權(quán)內(nèi)核(ip core)進行設(shè)計、綜合和驗證,從而加速流片設(shè)計過程的設(shè)計方法。ip技術(shù)包含兩個方面的內(nèi)容:ip核的生成和ip核的重用。本設(shè)計中采用vhdl語言,構(gòu)建一個功能強大的完整dds模塊,并根據(jù)ibm coreconnect總線連接規(guī)范,在dds模塊外面添加opb(onchip peripheral bus)片上外設(shè)總線接口,封裝為自定義ip,添加到硬件系統(tǒng)中。

          對于本設(shè)計來說,利用sopc和ip的優(yōu)勢是可以利用最少的元器件,創(chuàng)建一個易配置、易擴展、易修改并且易于繼承使用的集成系統(tǒng)。該系統(tǒng)的創(chuàng)建是基于xilinx公司提供的嵌入式開發(fā)工具包edk(embedded development kit)來實現(xiàn)的。edk自帶了microblaze軟核和powerpc硬核微處理器及大量免費ip,有利于構(gòu)建簡易系統(tǒng)。針對microblaze及powerpc提供的c語言編譯器,可使系統(tǒng)的功能實現(xiàn)更加簡易。對基于microblaze的系統(tǒng),microblaze通過opb總線與外設(shè)ip及外部存儲器控制接口相連接,通過lmb(local memory bus)總線與fpga片上塊存儲器bram(block ram)相連接,還可以通過emc(external memory control)等存儲器控制ip擴展片外ram或rom。

          1 系統(tǒng)的架構(gòu)

          本設(shè)計采用sopc可編程片上系統(tǒng)的思想,利用xilinx的spartan3系列xc3s400 fpga,通過edk開發(fā)工具包的集成開發(fā)環(huán)境xps(xilinx platform studio)完成了fpga硬件系統(tǒng)設(shè)計及基于此硬件系統(tǒng)的軟件開發(fā)。圖1是基于edk的系統(tǒng)開發(fā)設(shè)計流程圖,設(shè)計分為硬件設(shè)計和軟件設(shè)計兩部分。硬件設(shè)計符合基于hdl硬件描述語言的eda開發(fā)流程,是根據(jù)硬件系統(tǒng)合理使用總線ip和外設(shè)ip,并為各個實例定義地址范圍以及輸出端口和時鐘,經(jīng)過綜合及布線后形成硬件配置文件。軟件設(shè)計與傳統(tǒng)的嵌入式軟件開發(fā)設(shè)計類似,是在硬件設(shè)計的基礎(chǔ)上根據(jù)處理器所支持的指令集以及編譯環(huán)境編寫程序代碼,然后對代碼編譯燒寫及調(diào)試。

          該設(shè)計通過fpga實現(xiàn)所有數(shù)字部分。系統(tǒng)的示意圖如圖2所示。





          在fpga內(nèi)部,以microblaze為控制核心,以dds ip為波形發(fā)生功能實現(xiàn)核心,同時加入了其他的ip核,諸如調(diào)試用的mdm(microprocessor debug module),用于與pc進行通信的uart(universal asynchronous receiver & transmitter)通用異步傳輸模塊,以及l(fā)cd顯示和4×4按鍵控制模塊,實現(xiàn)了系統(tǒng)的高度集成。fpga硬件系統(tǒng)為數(shù)字系統(tǒng)產(chǎn)生數(shù)字量,外圍電路加上高速數(shù)模轉(zhuǎn)換器件dac902,把波形數(shù)據(jù)轉(zhuǎn)換為模擬波形,即實現(xiàn)了完整的可編程片上系統(tǒng)的波形發(fā)生器。

          2 硬件系統(tǒng)的具體實現(xiàn)

          本設(shè)計以32位microblaze軟核處理器為系統(tǒng)的核心部分,負責指令的執(zhí)行。各種ip包括自主編寫的以及edk自帶的,使用xps下的add/edit cores工具,通過相應(yīng)類型的總線連接到microblaze上。其中uart、lcd、gpio和自主編寫的dds的ip都是通過opb(onchip peripheral bus)片上外設(shè)總線連接到處理器上的。程序存儲器ram則是由fpga內(nèi)部的bram實現(xiàn),并通過lmb(local memory bus)本地存儲器總線與microblaze相連接。自主編寫的ip與總線間的接口符合coreconnect規(guī)范,實現(xiàn)了ip間的無縫結(jié)合,方便了數(shù)據(jù)的讀寫及時序控制。圖3給出了在fpga內(nèi)部由各種ip組合成的可編程硬件系統(tǒng)。

          硬件系統(tǒng)所包含的器件如圖3右部分所示。microblaze_0是該系統(tǒng)的cpu,其中的debug_module為調(diào)試模塊,dlmb_cntlr和 ilmb_cntlr為片上bram控制器。lmb_bram為片上bram,它通過lmb總線與 bram控制器相連,接受cpu的讀寫訪問。ddfs是為實現(xiàn)dds編寫的ip模塊。rs232為uart模塊,用于與其他設(shè)備的通信以及程序調(diào)試。lcd ip負責128×64點陣液晶的顯示控制。 col和row是例化后的gpio接口,用于連接4×4鍵盤。

          2.1 microblaze軟核處理器

          microblaze是xilinx提供的32位微處理器ip核,是哈佛結(jié)構(gòu)的risc微處理器,有較高的性能。它可以在性價比很高的spartaniii系列fpga上實現(xiàn)。edk為其提供了mbgcc,支持c及c++語言。 microblaze架構(gòu)如圖4所示。

          該處理器含有32個32位的通用寄存器,2個專用寄存器,獨立的32位數(shù)據(jù)和指令總線,并與ibm的opb總線完全兼容,具有32位的指令寬度支持三個操作數(shù)和兩種尋址模式,以及可選的硬件乘除法及浮點運算單元。

          2.2 dds ip的實現(xiàn)

          數(shù)字直接頻率合成技術(shù)(direct digital frequency synthesis,簡稱dds或ddfs)的基本原理是利用采樣定理,通過查表法產(chǎn)生波形,其基本電路原理如圖5所示。

          dds的頻率及步進容易控制,且合成的頻率取決于累加器及查找表的速度,采用fpga可以很好的發(fā)揮這項優(yōu)勢,獲得精細的步進及寬頻帶。使用hdl硬件描述語言,可以很方便的描述出dds的fpga硬件實例。在基本的dds模塊上,添加相應(yīng)的控制寄存器,通過向不同的寄存器內(nèi)寫入相應(yīng)的控制字,實現(xiàn)頻率以及幅度的可控性。最后通過ibm coreconnect技術(shù),在dds模塊外面添加總線接口,作為自定義ip,成功地將其掛載到系統(tǒng)總線上,便可以方便的對其進行讀寫操作,實現(xiàn)dds模塊與microblaze的通信。圖6是從用戶邏輯到成為符合ibm coreconnect技術(shù)規(guī)范的dds ip的實現(xiàn)過程。

          dds的vhdl代碼作為子模塊與opb_core_ssp0_ref.vhd模塊共同構(gòu)成opb_dds ip core,其中ipif(ip interface )符合ibm coreconnect規(guī)范,負責dds邏輯與opb總線之間的通信。在edk中,通過create/import ip工具把opb_dds添加到系統(tǒng)中,并為其分配地址,建立端口連接,之后就可以使用該ip了。dds ip配合控制程序可產(chǎn)生各種波形,并對頻率、幅度進行精確的控制。

          2.3 其余部分

          系統(tǒng)所需要的lcd顯示、dac控制等模塊,均通過與生成dds ip相同的方式,編寫為符合ibm coreconnect總線規(guī)范的ip,以供使用。

          在硬件系統(tǒng)構(gòu)建完畢之后,使用platgen工具生成網(wǎng)表文件和bitgen工具生成相應(yīng)的硬件配置文件。若將工程導(dǎo)入到ise軟件中,可以進行優(yōu)化設(shè)置,還可以將工程導(dǎo)入到其他的綜合工具如synplify pro進行實現(xiàn)。ip核的編寫是在ise中完成的。無論對于整個系統(tǒng)還是一個單獨的ip,都可以利用modelsim工具進行行為及時序仿真。最后,為此系統(tǒng)描寫xbd(xilinx board description)板級描述文件,通過此文件,edk可以通過bsb(base system builder)模式自動生成基本的硬件系統(tǒng),并對所添加的端口進行約束,這樣可以實現(xiàn)資源的繼承性使用。



          3 軟件系統(tǒng)的實現(xiàn)

          edk提供了免費的gnu c compiler,可以支持標準c。同時,edk為多種ip以api的形式提供了驅(qū)動函數(shù),有利于程序的開發(fā)。xps所集成的軟件工程管理工具允許在一個硬件平臺上同時開發(fā)多個軟件工程。完成軟件代碼的編寫后,使用edk集成的xmd和gdb調(diào)試器對代碼進行仿真和調(diào)試,也可以配合chipscope(片內(nèi)邏輯分析儀)進行硬件及軟件的協(xié)同調(diào)試。xmd通過mdm模塊和jtag口連接目標板上的cpu,gdb可以對程序進行單步調(diào)試或斷點設(shè)置。針對本設(shè)計及應(yīng)用,編寫了系統(tǒng)控制及液晶顯示程序。程序編譯后生成為elf文件,通過update bitstream工具把程序同硬件配置文件合成為download.bit文件,把此文件下載到目標板后,fpga首先根據(jù)硬件配置信息建立硬件系統(tǒng),并把程序代碼映射到片內(nèi)bram中,最后啟動microblaze,運行程序。

          4 總結(jié)

          本系統(tǒng)基于fpga,以microblaze為核心,加入具有良好特性的dds ip,并輔以必要的外圍電路,構(gòu)成了高度集成化的系統(tǒng)。另外,sopc系統(tǒng)的柔性配置,使得可以基于此系統(tǒng)擴展片外存儲器,并可以實現(xiàn)rtos操作系統(tǒng)的移植,以實現(xiàn)更豐富的功能和完成更復(fù)雜的任務(wù)。



          關(guān)鍵詞:

          評論


          相關(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); })();