圖3是GCI接口時序圖,DCL是數據時鐘信號,FSC是幀同步信號,DD/DU是數據輸出/輸入信號。根據此時序圖,我們可以編寫相關HDL代碼實現PCM串行數據的接收和發送。
3.4 IDE硬盤的控制
IDE接口的硬盤驅動器提供了兩種數據傳輸模式:PIO模式和DMA模式。由于PIO模式控制相對容易,提供了一種編程控制輸入輸出的快速傳輸方法。該模式采用了高速的數據塊I/O,以扇區為單位,用中斷請求方式與CPU進行批量數據交換。在扇區讀寫操作時,一次按16位長度通過內部的高速PIO數據寄存器實現傳輸。通常情況下,數據傳輸以扇區為單位,每傳輸一扇區數據產生一個中斷。
如果CPU要對硬盤進行寫數據操作,首先CPU把必要的參數寫入對應的地址寄存器,等待DRDY有效,然后將操作碼寫入命令寄存器,同時驅動器設置狀態寄存器的DRQ位,表示準備好接收數據,CPU通過數據寄存器將數據寫入扇區緩沖區,當扇區緩沖區填滿后,驅動器清除DRQ位,并置位BSY。驅動器將扇區緩沖區中的數據寫入磁盤,當寫盤結束,清除BSY位,發中斷請求信號INTRQ,CPU接收到中斷信號后,讀驅動器狀態寄存器,同時將中斷信號INTRQ清除。
如果CPU要對硬盤進行讀數據操作,首先將參數寫入地址寄存器和特性寄存器(如果需要),然后把命令碼寫入命令寄存器,命令開始執行。這時驅動器置狀態寄存器中的BSY=1,同時將硬盤上指定扇區內的數據送入扇區緩沖區。當扇區緩沖區準備好數據后,置位DRQ,清BSY,發中斷請求信號INTRQ。CPU檢測到中斷后,讀取狀態寄存器,測試ERR位,若等于1則轉入出錯處理,否則若DRQ位為1,CPU從扇區緩沖區中讀取數據,數據讀完后,驅動器復位DRQ位,然后驅動器重新設置BSY位[3]。
4 軟件設計
軟件設計包括配置生成SOPC系統、嵌入式操作系統的移植、語音壓縮算法的設計、應用級代碼編寫及調試等部分。下面對其作簡單介紹。
4.1 配置生成SOPC系統
SOPC是SoC技術和可編程邏輯技術結合的產物,是一種特殊的嵌入式系統。首先它是SoC,即可以由單個芯片完成整個系統的主要邏輯功能;其次,它還是可編程系統,具有靈活的設計方式,可裁減、可擴充、可升級,并具備一定的系統可編程功能。SOPC 設計技術涵蓋了嵌入式系統設計技術的全部內容,包括:以處理器和實時多任務操作系統(RTOS)為中心的軟件設計技術、以PCB和信號分析為基礎的高速電路設計技術、軟硬件協同設計技術。
本文所設計的自動語音記錄系統(AVRS)是建立在以Stratix器件EP1S125基礎上的SOPC,在QuartusII中我們利用SOPC Builder工具來配置生成片上系統。SOPC Builder是一個功能強大的基于圖形界面的片上系統的定義和定制工具,可以在短時間內完成用戶定制的SOPC設計。根據應用的需要,從SOPC Builder庫中選擇IP模塊、存儲器、外圍接口和處理器,并且配置生成一個高集成度的嵌入式系統。
在配置生成片上系統時,SOPC Builder會自動產生一些必需的仲裁邏輯來協調系統中各個部件的工作。我們首先將系統的工作頻率設為50MHz,根據系統的硬件要求可以得到如圖4所示的系統配置圖,利用SOPC Builder編譯生成包括C/C++語言頭文件、外圍接口驅動的諸多文件,極大地方便了后續應用軟件的開發。
4.2 μC/OS-II操作系統移植
μC/OS-II是一種源代碼公開、結構小巧、具有可剝奪實時內核的實時操作系統。其內核提供任務調度與管理、時間管理、任務間同步與通信、內存管理和中斷服務等功能。μC/OS-II適合于小型控制系統,具有執行效率高、占用空間小、實時性能優良和可擴展性強等特點,加之它穩定、可靠,現已被廣泛應用在航空、醫療器械、工業控制等領域[4]。
μC/OS-II設計時就充分考慮到在不同平臺上移值的需求,將同平臺相關的部分局限在一個很小范圍內,對于不同的平臺只需對下面一些函數和宏進行重寫。
OS_ENTER_CRITICAL和OS_ENTER_CRITICAL:這是兩個宏,用來進行臨界段保護。在本設計中使用匯編代碼關中斷來實現。
OS_TASK_SW:這是一個用于進行任務切換的宏。本設計中利用CPU的軟件中斷方式
實現,也就是說調用此宏產生軟件中斷,然后由相應的中斷處理程序來具體實現任務上下文保護和任務切換。
OSIntCtxSw:實現中斷級任務切換,用純匯編實現。
OSCtxSw:實現用戶級上下文切換,用純匯編實現。
OSTickISR:為系統定時器中斷的處理函數,用純匯編實現。
OSTaskStkInit:用來創建任務時,對任務堆棧進行初始化。
4.3 語音壓縮算法的設計
語音壓縮算法的設計實現基于DSP Builder、Matlab和Simulink等工具。DSP Builder是Altera公司推出的一個面向DSP開發的系統級工具。它是作為Matlab的一個Simulink工具箱出現的。Matlab是功能強大的數學分析工具,廣泛用于科學計算和工程計算,可以進行復雜的數字信號處理系統的建模、參數估計、性能分析。Simulink是Matlab的一個組成部分,用于圖形化建模仿真。
我們在設計中首先利用Matlab強大的系統設計、分析能力和DSP Builder提供的模塊(或IP核)完成頂層系統設計及系統仿真測試,實現了ADPCM、G.729壓縮算法,并驗證了語音壓縮算法的正確性,然后通過DSP Builder中的Signal Compiler將Simulink模型文件自動轉換成VHDL的RTL表述和工具命令語言(TCL)腳本,再進行RTL級的功能仿真,并配合QuartusⅡ軟件進行綜合、適配與時序仿真。
4.4 應用級代碼編寫及調試
在QuartusⅡ中進行VHDL代碼的編寫以實現對系統各部分的控制,最后進行RTL級的功能仿真,并進行綜合、適配與時序仿真。在形成對指定FPGA進行編程配置的SOF文件之前可以將設定好的嵌入式邏輯分析儀Signal TapⅡ一同適配并下載到FPGA芯片中去,然后通過Matlab的Simulink窗口可觀測到通過JTAG口來自于Signal TapⅡ測得的芯片中DSP硬件模塊的實時工作波形,從而實現硬件仿真和調試。
5 結束語
本文所設計的自動語音記錄系統(AVRS)最突出的特點是采用FPGA和SOPC技術進行的設計相當快速。由于SOPC開發環境的完備功能,可以把注意力集中在系統整體構架和功能上來,而無需過多的考慮細節性的電路設計,同時還可以得到比較好的系統穩定性和可靠性。
自動語音記錄系統(AVRS)已經進行了初步的仿真試驗,能夠達到非常好的實用效果,可滿足金融、保險、電力、





