第四章 交錯式D類放大器控制晶片系統規劃及實現
4.1 發展軟體介紹
在開發整個控制晶片的過程中,會使用到的軟體有Altera公司的FPGA開發軟體,
其包括了Quartus II、SOPC Builder、NIOS II IDE,以及整合模擬軟體Simulink。電路的 設計、合成及時序分析都在Quartus II中完成,SOPC Builder的功能是可快速的架構一 個包含了處理器、週邊裝置、記憶體的系統,NIOS II IDE是一個C/C++的環境,提供 使用者撰寫程式來控制在SOPC Builder中所架構的系統,最後在晶片功能的驗證方面,
除了可將所設計之晶片放在Simulink,模擬功能是否正確外,更可透過RS232介面將 FPGA中的資料傳送回Simulink中,比較實際波形與模擬波形間的差異。
4.1.1 QUARTUS II介紹
Quartus II為一完整平台設計環境,它是可程式化晶片系統設計的綜合性環境,針 對FPGA、CPLD設計提供解決方案。使用圖形化的介面、EDA或是指令列工具及大量 的內建元件庫,提供了設計者快速而方便的電路設計平臺。圖4.1為Quartus II的設計流 程,在此設計流程中,使用者可依不同需求,省略某些步驟或是變動步驟程序。以下 步驟描述Quartus II做FPGA設計的基本流程:
z 建立一個新專案並指定所使用的元件系列。
z 使用文字編輯方式如Verilog HDL、VHDL或Altera硬體描述語言來做單體元件 的設計,或是利用內建的邏輯閘,排列組合已得到所需要之邏輯功能,此外亦
可使用Megafunciton所產生的功能方塊,例如:鎖相迴路、算數運算單元或是 記憶體等來做電路的設計,最後將整個電路存成最上層的方塊圖庫 (*.bdf)。
z 使用Assignment Editor指定FPGA輸出入腳位、Setting對話框指定電路合成所需 要的限制,例如面積、速度等,或使用SOPC Builder來建立嵌入式系統。
z 對設計進行編譯,包含了分析及電路合成設計、配合所選定的FPGA系列做電 路配置及繞線設定、時序的模擬分析等,最後產生可下載至FPGA中的硬體燒 錄檔 (*.sof)以及 (*.pof)。
z 在將硬體燒錄檔下載至FPGA之前,可先使用模擬器對設計進行時序的模擬,
已驗證其功能是否正確,使用者自行設定電路的輸入訊號及模擬時間長短 (*.vwf),以得到模擬輸出以及各元件間傳遞延遲的時間,必要時可在Floor plan中改變邏輯配置,修改各元件間的延遲時間,使符合所需。
z 因為週邊電路大多為類比電路,故在模擬部分,會先搭配Simulink將所設計的 電路與類比元件搭配,確定動作無誤後,才會下載至FPGA中,再使用示波器 觀察輸出波形,或是配合週邊電路測試整體系統是否正確。圖4.2為Quartus II 使用者環境介面,上述各步驟均在此環境下完成。
圖4.2 Quartus II軟體設計平臺
4.1.2 SOPCBUILDER介紹
隨著科技進步,IC的設計將朝向高速、小面積、低功耗、多媒體的功能邁進,也 因此,將整個系統規劃在一個晶片中並非不可能,系統晶片SOC (System on Chips) 就 是在這種情況下產生的。顧名思義,系統晶片就是將整個系統包含於一顆晶片中,其 包括了類比電路、數位電路、記憶體、通訊介面等。然而在整合上,卻面臨了一些問 題,例如類比和數位電路間的雜訊隔離問題,或是因電路複雜度不同,所帶來的製程 問題等。有鑑於此,FPGA製造商Altera公司提供了一種靈活而高效率的解決方案,
SOPC Builder。
SOPC Builder是一套功能強大的系統創造工具,使用者可以自行定義該系統所需之 處理器、週邊裝置、計憶體等,快速的產生硬體描述檔,並可將此系統與所設計的硬 體電路整合至FPGA中,發揮FPGA強大的處理能力。與傳統的設計方式相比,此種設 計方式不僅彈性大,更重要的是效率高。這套軟體提共了一些常用的IP資料庫,使用 者如果有需要,將其加入在系統中就可應用,SOPC Builder可自行設定各元件的記憶體 位址及中斷權限,也可由使用者自行定義。圖4.3為SOPC Builder的使用介面,由左起
依序為可用元件庫、已選用元件庫以及記憶體中斷配置。使用者由可用元件庫中選取 欲使用裝置後,該裝置即一一出現在已選用元件中,滑鼠左鍵雙擊該裝置便可修改其 內部設定,而記憶體的位置及中斷權限可由此軟體自行定義。所有裝置都選用完畢,
按下右下角的產生鍵,就可以產生一個由使用者自行定義的系統了。以圖4.3為例,此 系統包含了一個NIOS處理器、可儲存大量資料的動態記憶體DDR SDRAM、輸出入的 腳位等、串列傳輸介面UART等。
當包含處理器系統的電路設計完成後,可透過Altera的下載線ByteBlaster將硬體設 計燒錄檔下載至FPGA中,然而此時該系統仍然無法正常運作,使用者需在NIOS II IDE 的環境中,撰寫C語言程式來存取、控制該系統,其後才為設計者所使用。也就是說,
SOPC Builder建立了一個系統,而使用者必須撰寫程式來做控制。按此方法,系統設計 者不再需要自行設計各裝置電路,但卻可在幾分鐘之內,就產生了一個可以運用的系 統,並連結至FPGA電路,此軟體提供了一個極有效率的設計捷徑。
圖4.3 SOPC Builder使用介面
4.1.3 NIOSIIIDE介紹
NIOS II IDE為一圖形式介面的軟體發展平臺,在此軟體中可完成專案產生、編輯 程式、組譯、除錯等工作,在此環境下,NIOS II IDE將使用者的程式透過硬體抽象層 的介面轉換,直接與SOPC Builder產生的硬體裝置做溝通。當使用者開啟新專案的同 時,NIOS II IDE會為使用者針對該系統,自動產生硬體抽象層的資料庫,其內為系統 的硬體驅動程式,故使用者僅需編寫C語言來存取使用的裝置,而無需負責硬體電路的 驅動程式撰寫,當然有時可能有使用者自行定義的裝置想加入使用,此時也可按照規 定之語法,編寫該裝置驅動程式便可使用。圖4.4為使用者軟體與硬體間之階層圖。
NIOS II 的工作環境如圖4.5,稱此為工作檯,大致可分為三個區域,分別為檔案 總管區、程式編輯區及處理訊息回報區。在檔案總管區可觀察到該目錄下有哪些已建 立的專案,並且可以打開裝置驅動程式庫,查詢使用該裝置應呼叫何種函數,在程式 編輯區可以編輯C語言的程式,而在處理訊息回報區會顯示目前處理的進度,當程式有 錯誤時亦會回報在此區域中。以下將簡單描述基本的操作流程:
z 建立一個新專案並指定一個由SOPC Builder產生的系統。
z 產生專案,此動作會產生系統資料庫,並編譯所寫的C程式是否正確,最後將 結果回報在訊息回報區中。
z 若專案產生無誤,首先將FPGA的硬體燒錄檔 (*.sof)透過下載線傳送至FPGA 中,然後點選NIOS II IDE中的run指令,選擇是要先以軟體模擬還是直接以 FPGA來執行程式。假若程式確定無誤,此時的NIOS已可正確動作。
z 假若程式執行不如預期,也可用debug功能,針對程式一步一步的除錯,同樣 的除錯功能也可選擇以軟體模擬除錯。
圖4.4 NIOS II系統階層圖
圖4.5 NIOS II軟體工作平臺
4.1.4 SIMULINK介紹
Matlab軟體在今日工程領域應用中非常普遍,為線性及非線性動態系統模擬與分 析上不可或缺的工具軟體,除了內建函數及指令的功能之外,針對特殊應用的領域也 設計了不同的工具盒,Simulink即為其所提供之一。Simulink提供圖形化的使用者界 面,只要在視窗中使用滑鼠做拖曳的動作,就可以像將所有的元件組合起來,而不需 要以程式的方式來描述整個系統,大幅的省略了撰寫程式的時間。
Simulink提供了各式各樣功能的方塊,使用者根據所需建構不同的模型,在此我們 欲建立一個結合數位控制器與受控廠的模擬平臺。當數位控制器以硬體描述語言實現 後,在一般的模擬軟體中,僅能對於數位電路做波形模擬,藉由觀察訊號變化來判定 功能是否正確,而無法與類比的受控廠做結合模擬,也因此在不確定與受控廠結合後 動作會否正常的情況下,增加了將程式燒錄到實際控制平臺上的風險,針對於此,
Simulink提供了非常強的支援功能,可與VHDL的模擬軟體Modelsim連結,做一個整合 性的驗證,使用者僅需在Simulink中加入Modelsim的方塊,並按照所規定的語法定義該 方塊,就可與Simulink的所有方塊做連結。圖4.6為一結合Modelsim方塊與交錯式D類放