Chirp函數(shù)的Nios Ⅱ嵌入式實現(xiàn)
NiosⅡ的編程主要是基于嵌入式操作系統(tǒng)μC/OS-Ⅱ,μC/OS-Ⅱ是一個完整的、可移植、固化和剪裁的占先式實時多任務(wù)核(Kernel)。從1992年發(fā)布至今,μC/OS-Ⅱ已經(jīng)有了上百個的商業(yè)應(yīng)用案例,在40多種處理器上成功移植。其中Altera提供了對μCO/OS-Ⅱ的完整支持,非常容易使用。
μC/OS-Ⅱ提供以下系統(tǒng)服務(wù):任務(wù)管理(TaskManagement);事件標(biāo)志(Event Flag);消息傳遞(Message Passing);內(nèi)存管理(Memory Management);信號量(Semaphores);時間管理(Time Management)。在應(yīng)用程序中,用戶可以方便地使用這些系統(tǒng)調(diào)用實現(xiàn)目標(biāo)功能。
在該設(shè)計中建立一個主函數(shù)和兩個任務(wù)函數(shù),主函數(shù)的功能:調(diào)用系統(tǒng)任務(wù)初始化函數(shù)OSTaskCreateExt()初始化兩個任務(wù)函數(shù):調(diào)用系統(tǒng)開始函數(shù)OSStart()啟動系統(tǒng)開始工作。
任務(wù)1:實時的改變DDS控制字的輸出,并且保持一段時間,在遍歷完所有的需要頻率以后,延遲調(diào)用系統(tǒng)延遲函數(shù)OSTimeDlyHMSM(),延遲63 s將該使用權(quán)交付給任務(wù)2。
任務(wù)2:為了保證該系統(tǒng)以后能有功能擴(kuò)展,建立一個任務(wù),其僅僅是通過函Jtag_uart接口使用函數(shù)printf(),向電腦發(fā)送一個任務(wù)2已經(jīng)開始工作的提示信息,如果以后需要擴(kuò)展功能則只需修改任務(wù)2即可。程序的具體流程圖如圖6所示。本文引用地址:http://cafeforensic.com/article/152464.htm
在任務(wù)1中實時改變變量i的值步進(jìn)為1,通過定義的Chirp函數(shù)關(guān)于時間和輸出頻率控制字之間的關(guān)系函數(shù)function(),計算得到此時的頻率控制字f,并且將f的值通過API函數(shù)IOWR_ALTERA_AVALON_PIO_DATA()從I/O端口輸出以控制DDS,然后延遲2 s使DDS保持該輸出頻率一段時間,并且通過Jtag_uart端口在Console調(diào)試界面向用戶提示當(dāng)前的信號源的輸出頻率,程序如下:
圖7為QuartusⅡ中生成的嵌入式軟核示意圖。
4 結(jié) 語
該設(shè)計在21controll公司提供的V4.O FPGA/SoPC開發(fā)學(xué)習(xí)套件上面通過仿真驗證,該套件的核心芯片為CycloneⅡ系列:EP2C20F484C8,其具有18 752個邏輯單元(LE)和52個M4K RAM塊,能夠很好地設(shè)計存儲需要的數(shù)據(jù),完全符合設(shè)計要求。通過調(diào)試程序在NiosⅡIDE編程環(huán)境中的Console窗口觀察如圖8所示。證明該程序能夠很好的完成Chirp函數(shù)的功能。
評論