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