基于NiosII處理器的通用AD IP核的設(shè)計與實現(xiàn)
2.4 帶Avalon-MM Slave接口的寄存器文件模塊的設(shè)計
本文設(shè)計的帶Avalon-MM Slave接口[4]的寄存器文件模塊是具有Avalon-MM Slave 從端口的外設(shè)。它內(nèi)部共有2個8位寄存器,具體結(jié)構(gòu)和功能如表1所示。NiosII處理器可以通過Avalon接口采用“基地址+地址偏移量”的方式來訪問這2個寄存器,從而實現(xiàn)對AD IP核的控制以及AD采樣數(shù)據(jù)的讀取。本文引用地址:http://m.butianyuan.cn/article/151966.htm
對于一些比較復雜的AD芯片(如AD73360),往往需要對其寫控制字、讀狀態(tài)字,這就需要增加寄存器文件模塊中的寄存器個數(shù)來完成相應的邏輯功能。Avalon接口采用“基地址+地址偏移量”的方式來訪問寄存器,這樣就可以簡單地通過增加地址線的位數(shù)并進行譯碼來實現(xiàn),因此對于各種復雜的AD芯片具有很好的可擴展性和適用性。
3 整個IP核在NiosII系統(tǒng)中的硬件測試
本設(shè)計采用Verilog HDL語言建立了一個頂層文件tlc549_adc_ip.v,通過對AD控制器模塊、FIR濾波器模塊、FIFO緩存模塊和帶Avalon-MM Slave接口的寄存器文件模塊進行實例化與互連,最終完成了整個IP核的設(shè)計,它的模塊圖如圖7所示。
本文采用C++語言做了一個基于NiosII處理器的頂層應用測試程序,利用描點法將不斷采集到的AD數(shù)據(jù)繪制成波形顯示出來,從而完成對整個IP核的硬件功能測試。測試過程中,在AD芯片的模擬輸入端輸入一個由1 kHz正弦信號和100 Hz的正弦信號疊加而成的混合信號,整個系統(tǒng)的運行結(jié)果顯示在NiosII IDE軟件的Console控制臺中,如圖8所示。
通過對圖8中的正弦波形以及采樣到的數(shù)據(jù)進行分析與計算可知,采集到的信號頻率是100 Hz,信號的幅度與外界的模擬輸入信號完全一致,從而驗證了整個IP核的功能正確性。整個IP核使用5 275個LE,占總數(shù)的15.8%,4 096個存儲單元,占總數(shù)的0.8%。系統(tǒng)的主頻能達到199.64 MHz。
為了驗證AD IP核的通用性與適用性,本文還針對另外兩款AD芯片(AD7476和AD73360)進行了IP核制作與測試,且測試信號與TLC549 IP核的測試信號完全相同。
AD7476 IP核采用了上述通用AD IP核的設(shè)計方法,它的AD控制器模塊是針對AD7476這款 12位串行AD芯片而設(shè)計的。FIR濾波器模塊的參數(shù)與TLC549 IP核中的FIR濾波器參數(shù)相同,只是輸入數(shù)據(jù)的位寬設(shè)置為12位。由于AD7476芯片的采樣速率比較快,所以FIFO 緩存模塊的深度設(shè)置為1 024,位寬設(shè)置為12位,這樣可以使NiosII CPU的效率更高。
AD73360 IP核同樣也采用了上述通用AD IP核的設(shè)計方法,它的AD控制器模塊是針對6路16位串行AD芯片AD73360設(shè)計的。它的FIR 濾波器模塊的參數(shù)和FIFO 緩存模塊的參數(shù)與TLC549中的相應參數(shù)設(shè)置相同,只是把位寬設(shè)置為16位。由于控制的過程中需要對AD73360芯片內(nèi)部的寄存器進行讀寫,所以在寄存器文件模塊中增加了兩個寄存器(1個讀狀態(tài)字寄存器,1個寫控制字寄存器),從而完成對AD73360芯片內(nèi)部控制與狀態(tài)寄存器的讀寫。
這兩款AD IP核與TLC549 IP核的比較如表2所示。由表2可以看出,本文提出的基于NiosII處理器的通用AD IP核對于不同精度、不同采樣速率、不同時鐘速率、不同通道數(shù)的AD芯片都適用,并且具有較高的性能和靈活性。在實際應用中,如果對該IP核所占用的資源數(shù)有一定的限制,可以自行編寫FIR濾波器模塊,這樣能大大降低IP核所占用的資源數(shù),從而實現(xiàn)整個IP核的性能與資源之間的平衡。
評論