《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于NiosII處理器的通用AD IP核的設(shè)計(jì)與實(shí)現(xiàn)
基于NiosII處理器的通用AD IP核的設(shè)計(jì)與實(shí)現(xiàn)
楊鈞友, 袁慧梅
(首都師范大學(xué) 信息工程學(xué)院,, 北京 100048)
摘要: 提出了一種采用基于NiosII處理器的通用AD IP核來(lái)實(shí)現(xiàn)嵌入式數(shù)據(jù)采集系統(tǒng)的新方案,。它能將市面上任意一款A(yù)D芯片制作成IP核并集成到NiosII系統(tǒng)中使用,且整個(gè)IP核的控制與運(yùn)算邏輯由一片F(xiàn)PGA芯片來(lái)完成。
Abstract:
Key words :

摘   要: 提出了一種采用基于NiosII處理器的通用AD IP核來(lái)實(shí)現(xiàn)嵌入式數(shù)據(jù)采集系統(tǒng)的新方案,。它能將市面上任意一款A(yù)D芯片制作成IP核并集成到NiosII系統(tǒng)中使用,,且整個(gè)IP核的控制與運(yùn)算邏輯由一片F(xiàn)PGA芯片來(lái)完成。
關(guān)鍵詞: NiosII 處理器,; 模擬數(shù)字轉(zhuǎn)換,; 知識(shí)產(chǎn)權(quán)核; 數(shù)據(jù)采集系統(tǒng)

    隨著電子技術(shù)的飛速發(fā)展,,嵌入式系統(tǒng)的需求越來(lái)越大,、應(yīng)用領(lǐng)域也越來(lái)越廣泛。數(shù)據(jù)采集是嵌入式系統(tǒng)不可或缺的組成部分,,其性能在某種程度上直接決定了整個(gè)系統(tǒng)能否滿足設(shè)計(jì)的要求,。目前,數(shù)據(jù)采集部分的實(shí)現(xiàn)基本上都是利用單片機(jī)或者ARM片內(nèi)集成好的AD外設(shè),。這種AD外設(shè)的性能參數(shù)往往都已經(jīng)在片上固化好了(即具有不可更改性),,而且與其他片內(nèi)外設(shè)不可分離地組合在了一起,從而使得整個(gè)系統(tǒng)的設(shè)計(jì)具有很大局限性,。加之市面上單片機(jī),、ARM的款式型號(hào)非常有限,使用者不得不在性能與成本上作出折中的選擇來(lái)滿足所設(shè)計(jì)系統(tǒng)的要求,,由于這種設(shè)計(jì)方案是不可更改的,,且應(yīng)用范圍小、可移植性差,,因此往往無(wú)法滿足客戶更高的要求,。
    Nios II是Altera公司開(kāi)發(fā)的第二代可進(jìn)行SOPC設(shè)計(jì)的RISC型處理器軟核,具有定制指令,、硬件加速,、可重配置、低成本和無(wú)與倫比的靈活性等特點(diǎn)[1],?;贜iosII處理器的通用AD IP核是一種全新的設(shè)計(jì)思路與實(shí)現(xiàn)方案,它可以將市面上任意一款A(yù)D芯片制作成IP核并集成到NiosII系統(tǒng)中使用,,具有高性能,、參數(shù)可配置、可移植,、可裁剪等特點(diǎn),,并且具有很高的靈活性、實(shí)用性,,從而更能滿足設(shè)計(jì)的要求,。
 本文提出了一種基于NiosII處理器的通用AD IP核來(lái)實(shí)現(xiàn)嵌入式數(shù)據(jù)采集系統(tǒng)的新方案,,在Altera公司的FPGA芯片CycloneII EP2C35F484C8 上完成了硬件驗(yàn)證,最終應(yīng)用到某數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)中,。
1 通用AD IP核的整體構(gòu)架
   通用AD IP核是針對(duì)所有AD芯片設(shè)計(jì)的,,它可以將市面上任意一款A(yù)D芯片集成到NiosII系統(tǒng)中使用,其整體構(gòu)架如圖1所示,。

    整個(gè)通用AD IP核主要由4個(gè)子模塊組成:AD 控制器模塊,、FIR 濾波器模塊、FIFO 緩存模塊和帶Avalon-MM Slave接口的寄存器文件模塊,。首先AD控制器控制AD芯片對(duì)外界的模擬信號(hào)的采集,,采集到的數(shù)據(jù)送入FIR濾波器進(jìn)行數(shù)字濾波,然后將經(jīng)過(guò)數(shù)字信號(hào)處理后的數(shù)據(jù)存入FIFO緩存中,,當(dāng)FIFO緩存數(shù)據(jù)為滿時(shí),,會(huì)向NIOSII處理器產(chǎn)生一個(gè)中斷,頂層應(yīng)用程序可以通過(guò)中斷服務(wù)程序?qū)IFO中的數(shù)據(jù)讀到內(nèi)存中進(jìn)行處理,。帶Avalon-MM Slave接口的寄存器文件模塊提供了所設(shè)計(jì)的AD IP核的任務(wù)邏輯與Avalon交換結(jié)構(gòu)交換信息的途徑,。有了寄存器文件模塊,NiosII處理器就可以通過(guò)Avalon接口采用“基地址+地址偏移量”的方式來(lái)訪問(wèn)AD IP核內(nèi)部的各寄存器[2],。
2 AD IP核各個(gè)模塊的設(shè)計(jì)與實(shí)現(xiàn)
 由于市面上AD芯片的種類和型號(hào)非常多,不可能在此一一進(jìn)行闡述。本設(shè)計(jì)以一款常用的典型AD芯片TLC549為例,,詳細(xì)闡述針對(duì)這款A(yù)D芯片的IP核的各個(gè)模塊的設(shè)計(jì)與實(shí)現(xiàn),。
2.1 AD控制器模塊的設(shè)計(jì)
 本系統(tǒng)采用AD轉(zhuǎn)換芯片TLC549,它是TI公司生產(chǎn)的一種低價(jià)位、高性能的8位A/D轉(zhuǎn)換器,它能方便地采用三線串行接口方式與各種微處理器連接,構(gòu)成各種廉價(jià)的測(cè)控應(yīng)用系統(tǒng)[3],。
   本文利用有限狀態(tài)機(jī)的方法采用Verilog HDL硬件描述語(yǔ)言設(shè)計(jì)了一個(gè)TLC549控制器,從而完成了對(duì)TLC549 AD芯片的時(shí)序控制,它的狀態(tài)轉(zhuǎn)移圖如圖2所示,。


    由圖2可以看出,狀態(tài)機(jī)一開(kāi)始處于idle狀態(tài)。在下一個(gè)clk時(shí)鐘周期上升沿時(shí)刻進(jìn)入cs_low狀態(tài),,在cs_low狀態(tài)將cs輸出引腳拉低并延時(shí)2 μs,。當(dāng)2 μs延時(shí)完成時(shí),狀態(tài)機(jī)進(jìn)入sclk_low狀態(tài),,在sclk_low狀態(tài)將sclk輸出引腳拉低并延時(shí)0.5 μs,。當(dāng)0.5 μs延時(shí)完成時(shí),狀態(tài)機(jī)進(jìn)入sclk_high狀態(tài),,在sclk_high狀態(tài)將sclk輸出引腳拉高并延時(shí)0.5 μs,同時(shí)讀取串行數(shù)據(jù)線miso上的AD采樣值并將其存入移位寄存器中,。當(dāng)0.5 μs延時(shí)完成時(shí),進(jìn)入finish狀態(tài),,在該狀態(tài)狀態(tài)機(jī)對(duì)已經(jīng)接收到的串行數(shù)據(jù)位數(shù)進(jìn)行判斷,,如果小于8說(shuō)明串行數(shù)據(jù)還沒(méi)有接收完畢,加1并進(jìn)入sclk_low狀態(tài),;如果等于8說(shuō)明8位AD采樣值已經(jīng)接收完畢,,進(jìn)入delay狀態(tài),。在delay狀態(tài)將延時(shí)30μs,當(dāng)30 μs延時(shí)完成時(shí)將進(jìn)入load狀態(tài)。在load狀態(tài),,狀態(tài)機(jī)在data_ready輸出引腳上拉高一個(gè)clk時(shí)鐘周期并在data[7..0]引腳上輸出接收到的8位采樣數(shù)據(jù),。在下一個(gè)clk時(shí)鐘周期上升沿狀態(tài)機(jī)將自動(dòng)進(jìn)入idle狀態(tài),以進(jìn)行下一次AD數(shù)據(jù)采集。由此周而復(fù)始不斷循環(huán)從而完成通過(guò)TLC549 AD芯片實(shí)現(xiàn)對(duì)外界模擬信號(hào)的實(shí)時(shí)采集,。
    本文采用Quartus 軟件集成的Signal Tap II 嵌入式邏輯分析儀軟件對(duì)TLC549控制器模塊進(jìn)行硬件仿真,,波形如圖3所示。

    由圖3可以看出,在cs,、sclk和miso信號(hào)的時(shí)序配合下,,data信號(hào)線上輸出穩(wěn)定的8位AD采樣數(shù)據(jù),經(jīng)過(guò)數(shù)字量到模擬量的轉(zhuǎn)換發(fā)現(xiàn)與外界輸入模擬值一致,,從而完成了TLC549控制器模塊的驗(yàn)證,。
    AD控制器模塊是針對(duì)某一款具體的AD芯片而設(shè)計(jì)的,如果選用不同款式的AD芯片,,則需要參考該芯片的芯片手冊(cè)設(shè)計(jì)針對(duì)該款A(yù)D芯片的AD 控制器模塊,。
2.2 FIR濾波器模塊的設(shè)計(jì)
 在實(shí)際應(yīng)用的數(shù)據(jù)采集系統(tǒng)中,往往需要對(duì)外界模擬輸入信號(hào)進(jìn)行濾波,,以提取信號(hào)中有用的信息,。在本設(shè)計(jì)中這部分的功能是由FIR濾波器模塊來(lái)完成的。FIR濾波器模塊采用Altera公司提供的FIR IP核來(lái)實(shí)現(xiàn),,通過(guò)Simulink軟件中的DSP Builder工具對(duì)其進(jìn)行仿真并最終可以生成底層HDL代碼,。由于TLC549的最高采樣頻率為40 kHz,本文設(shè)計(jì)了一個(gè)低通濾波器,它的采樣頻率為40 kHz,3 dB截止頻率為100 Hz,。在Simulink軟件中建立的FIR IP核的仿真模型如圖4所示,。


    圖4中nco_v8_0模塊和nco_v8_1模塊是2個(gè)數(shù)控振蕩器,分別用于產(chǎn)生100 Hz和1 kHz的正弦信號(hào),,signal add模塊是并行加法器,,它將兩路正弦信號(hào)進(jìn)行疊加并將和信號(hào)輸出。fir_compiler_v8_0模塊是FIR IP核,,它將signal add模塊輸出的和信號(hào)作為輸入,,并將數(shù)字濾波的結(jié)果輸出到示波器進(jìn)行顯示。仿真結(jié)果如圖5和圖6所示,。
    由圖5可以看出:第1路是頻率為100 Hz的正弦信號(hào),,第2路是頻率為1 kHz的正弦信號(hào),第3路是前兩路信號(hào)的疊加,。圖6中顯示的是經(jīng)過(guò)數(shù)字濾波后的波形,,可以看出只有100 Hz的頻率分量存在,1 kHz的信號(hào)被濾除了,,從而完成了對(duì)FIR IP核的功能驗(yàn)證,。通過(guò)圖4中的Signal Compiler工具可以完成該FIR IP核的底層HDL代碼的生成,。

    FIR濾波器模塊采用Altera公司提供的FIR IP核來(lái)實(shí)現(xiàn),具有高性能,、可配置,、可重用等特點(diǎn)。設(shè)計(jì)者只需根據(jù)整個(gè)系統(tǒng)的需求以及所選用AD芯片的采樣速率等參數(shù)確定濾波器的類型與系數(shù),,并對(duì)該IP核進(jìn)行參數(shù)化,、實(shí)例化,即可完成針對(duì)該款A(yù)D芯片的FIR濾波器模塊的設(shè)計(jì),。因此這部分的設(shè)計(jì)對(duì)于不同的AD芯片是相對(duì)獨(dú)立的,,具有很好的通用性。
2.3 FIFO緩存模塊的設(shè)計(jì)
 為了連續(xù)和正確地采集數(shù)據(jù),實(shí)現(xiàn)無(wú)縫緩沖,本設(shè)計(jì)利用了FIFO做數(shù)據(jù)緩存,。由于TLC549是8位的AD芯片,故本設(shè)計(jì)采用1個(gè)512×8 bit 的FIFO來(lái)存儲(chǔ)采樣的數(shù)據(jù),。當(dāng)FIFO中的數(shù)據(jù)存滿時(shí),它會(huì)向Nios II CPU產(chǎn)生一個(gè)中斷信號(hào)。頂層應(yīng)用程序可以通過(guò)中斷服務(wù)程序?qū)IFO中的數(shù)據(jù)讀到內(nèi)存中進(jìn)行處理,。這樣既不會(huì)造成數(shù)據(jù)的丟失,同時(shí)可以保證CPU較高的效率,很好地解決了上述的速度不匹配的問(wèn)題,。
    FIFO緩存模塊的設(shè)計(jì)對(duì)于不同的AD芯片是相對(duì)獨(dú)立的,設(shè)計(jì)者只需根據(jù)所選用AD芯片的精度,、采樣速率,、時(shí)鐘速率等參數(shù)確定FIFO緩存的位寬和深度,并對(duì)FIFO進(jìn)行參數(shù)化,、實(shí)例化,,即可完成針對(duì)該款A(yù)D芯片的FIFO緩存模塊的設(shè)計(jì),因此具有很好的通用性,。
2.4 帶Avalon-MM Slave接口的寄存器文件模塊的設(shè)計(jì)
 本文設(shè)計(jì)的帶Avalon-MM Slave接口[4]的寄存器文件模塊是具有Avalon-MM Slave 從端口的外設(shè)。它內(nèi)部共有2個(gè)8位寄存器,,具體結(jié)構(gòu)和功能如表1所示,。NiosII處理器可以通過(guò)Avalon接口采用“基地址+地址偏移量”的方式來(lái)訪問(wèn)這2個(gè)寄存器,從而實(shí)現(xiàn)對(duì)AD IP核的控制以及AD采樣數(shù)據(jù)的讀取,。


   對(duì)于一些比較復(fù)雜的AD芯片(如AD73360),,往往需要對(duì)其寫(xiě)控制字、讀狀態(tài)字,,這就需要增加寄存器文件模塊中的寄存器個(gè)數(shù)來(lái)完成相應(yīng)的邏輯功能,。Avalon接口采用“基地址+地址偏移量”的方式來(lái)訪問(wèn)寄存器,這樣就可以簡(jiǎn)單地通過(guò)增加地址線的位數(shù)并進(jìn)行譯碼來(lái)實(shí)現(xiàn),,因此對(duì)于各種復(fù)雜的AD芯片具有很好的可擴(kuò)展性和適用性,。
3 整個(gè)IP核在NiosII系統(tǒng)中的硬件測(cè)試
   本設(shè)計(jì)采用Verilog HDL語(yǔ)言建立了一個(gè)頂層文件tlc549_adc_ip.v,通過(guò)對(duì)AD控制器模塊,、FIR濾波器模塊,、FIFO緩存模塊和帶Avalon-MM Slave接口的寄存器文件模塊進(jìn)行實(shí)例化與互連,最終完成了整個(gè)IP核的設(shè)計(jì),,它的模塊圖如圖7所示。


    本文采用C++語(yǔ)言做了一個(gè)基于NiosII處理器的頂層應(yīng)用測(cè)試程序,,利用描點(diǎn)法將不斷采集到的AD數(shù)據(jù)繪制成波形顯示出來(lái),,從而完成對(duì)整個(gè)IP核的硬件功能測(cè)試。測(cè)試過(guò)程中,在AD芯片的模擬輸入端輸入一個(gè)由1 kHz正弦信號(hào)和100 Hz的正弦信號(hào)疊加而成的混合信號(hào),,整個(gè)系統(tǒng)的運(yùn)行結(jié)果顯示在NiosII IDE軟件的Console控制臺(tái)中,,如圖8所示。

    通過(guò)對(duì)圖8中的正弦波形以及采樣到的數(shù)據(jù)進(jìn)行分析與計(jì)算可知,,采集到的信號(hào)頻率是100 Hz,,信號(hào)的幅度與外界的模擬輸入信號(hào)完全一致,從而驗(yàn)證了整個(gè)IP核的功能正確性,。整個(gè)IP核使用5 275個(gè)LE,,占總數(shù)的15.8%,4 096個(gè)存儲(chǔ)單元,,占總數(shù)的0.8%,。系統(tǒng)的主頻能達(dá)到199.64 MHz。
 為了驗(yàn)證AD IP核的通用性與適用性,,本文還針對(duì)另外兩款A(yù)D芯片(AD7476和AD73360)進(jìn)行了IP核制作與測(cè)試,,且測(cè)試信號(hào)與TLC549 IP核的測(cè)試信號(hào)完全相同。
 AD7476 IP核采用了上述通用AD IP核的設(shè)計(jì)方法,,它的AD控制器模塊是針對(duì)AD7476這款 12位串行AD芯片而設(shè)計(jì)的,。FIR濾波器模塊的參數(shù)與TLC549 IP核中的FIR濾波器參數(shù)相同,只是輸入數(shù)據(jù)的位寬設(shè)置為12位,。由于AD7476芯片的采樣速率比較快,所以FIFO 緩存模塊的深度設(shè)置為1 024,位寬設(shè)置為12位,,這樣可以使NiosII CPU的效率更高。
 AD73360 IP核同樣也采用了上述通用AD IP核的設(shè)計(jì)方法,,它的AD控制器模塊是針對(duì)6路16位串行AD芯片AD73360設(shè)計(jì)的,。它的FIR 濾波器模塊的參數(shù)和FIFO 緩存模塊的參數(shù)與TLC549中的相應(yīng)參數(shù)設(shè)置相同,只是把位寬設(shè)置為16位,。由于控制的過(guò)程中需要對(duì)AD73360芯片內(nèi)部的寄存器進(jìn)行讀寫(xiě),,所以在寄存器文件模塊中增加了兩個(gè)寄存器(1個(gè)讀狀態(tài)字寄存器,1個(gè)寫(xiě)控制字寄存器),,從而完成對(duì)AD73360芯片內(nèi)部控制與狀態(tài)寄存器的讀寫(xiě),。
 這兩款A(yù)D IP核與TLC549 IP核的比較如表2所示。由表2可以看出,,本文提出的基于NiosII處理器的通用AD IP核對(duì)于不同精度,、不同采樣速率、不同時(shí)鐘速率,、不同通道數(shù)的AD芯片都適用,,并且具有較高的性能和靈活性,。在實(shí)際應(yīng)用中,如果對(duì)該IP核所占用的資源數(shù)有一定的限制,,可以自行編寫(xiě)FIR濾波器模塊,,這樣能大大降低IP核所占用的資源數(shù),從而實(shí)現(xiàn)整個(gè)IP核的性能與資源之間的平衡,。


參考文獻(xiàn)
[1]     Altera Corp. NiosII處理器參考手冊(cè),2008.
[2]     李蘭英. NiosⅡ嵌入式軟核SOPC設(shè)計(jì)原理及應(yīng)用. 北京:北京航空航天大學(xué)出版社,2006.
[3]      TI Inc. TLC549 datasheet.1996.
[4]     Altera Corp. AVALON總線接口規(guī)范使用手冊(cè),2008.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。