隨著嵌入式技術的發展,基于SoPC技術的嵌入式系統所具有的軟硬件可裁減、可擴充、可升級以及可在線修改的特點越來越受到人們的重視。SoPC系統通常具有以下基本特征:采用大容量可編程邏輯器件來實現,單芯片、低功耗;至少包含1個以上的嵌入式處理器IP核;具有一個或多條片上總線作為系統擴展功能的接口;具有充足的片上可編程邏輯資源,用戶可以根據需要擴充功能部件。
異步串行通信協議(UART)以低成本、高可靠性等優點而廣泛應用于嵌入式系統中,多篇文獻也討論了UART協議的硬件設計方法,但多數只限于討論 UART協議的硬件實現,缺少從SoPC系統的角度論述UART IP核的設計方法。本文以UART IP核和PLB總線為例,討論了在SoPC系統下UART IP核的設計方法,該方法對其他IP核的設計有一定的參考作用。
1 UART協議介紹
UART是一種串行異步通信方式,它采用RS232電平在串行鏈路上進行全雙工的通信,其數據傳輸格式如圖1所示:UART協議在空閑時為高電平,通過發送起始位提示接收方數據傳輸即將開始,接著傳輸8位有效數據位和奇偶檢驗位,最后發送停止位表示一個字符傳輸完成。
2 SOPC UART通信系統介紹
本文設計的SOPC UART通信系統主要包括MicroBlaze處理器、PLB總線、UART IP核和DDR2控制器IP核,如圖2所示。
MicroBlaze處理器是Xilinx公司針對其FPGA器件優化的32位微處理器核,它采用RISC(Reduced Instruction System Computer)架構和哈佛總線結構,具有獨立32位數據和指令總線,能夠高速執行和訪問片上存儲器和片外存儲器上的程序與數據;提供本地塊存儲器總線(LMB)、處理器本地總線(PLB)等總線接口。
PLB總線作為IBM CoreConnect總線協議簇中的一部分,廣泛的應用于IBM PowerPC處理器架構中。該總線具有總線地址空間大,總線吞吐率高,能支持多個主從設備連接等特點。如圖3所示,MicroBlaze處理器通過 PLB總線與UARTIP核、DDR2控制器相互連接,各部件之間通過PLB總線協議進行交互。其中,MicroBlaze處理器作為主設備完成系統控制和UART通信流程控制,UART IP核作為從設備在主設備的控制下完成異步串行通信,DDR2存儲指令和數據。
MicroBlaze處理器和DDR2控制器采用Xilinx公司提供的IP核,UART IP核由用戶編寫邏輯,它是文中設計的主要內容,對此模塊的設計將在下一節進行詳細闡述。
3 UART IP核設計
3.1 PLB Slave Single模塊介紹
如上,UABT IP核作為PLB總線的從設備,必須提供PLB總線接口。但由于PLB總線協議復雜,實現其接口難度較大,Xilinx公司為了使用戶編寫的邏輯能夠方便的連結到PLB總線上,提供了一種PLB總線與用戶邏輯之間的接口模塊(IPIF,IP Interface),利用它簡化了PLB總線接口信號、總線協議和其他接口相關問題。IPIF接口邏輯中最簡單的模塊稱為PLB Slave Single模塊,它提供了一種輕量級的PLB總線接口,為PLB總線主設備提供了解析從設備地址空間,讀寫從設備寄存器/存儲空間等基本服務。本文設計的UARTIP核與MicroBlaze處理器之間僅通過寄存器的讀寫進行交互,PLB Slave Single模塊很好的滿足了該設計要求,因此采用PLB Slave Single模塊與UART邏輯共同構成了UART IP核。PLB Slave Single模塊與UART邏輯之間的連接關系如圖3所示,接口信號說明如表1所示。
在系統中,UART IP核的內部寄存器組映射為處理器的某段地址空間,MicroBlaze處理器通過對該段地址的讀寫實現對UART IP核的訪問。當MicroBlaze處理器訪問UART IP核的某個寄存器時,PLB總線會產生相應的地址信號和讀寫信號,該信號被UART IP核中的PLB Slave Single模塊解析并生成相應的IPIF信號,UART IP核中的UABT邏輯響應該IPIF信號,完成寄存器的讀寫。
3.2 UART IP核寄存器組設計
文中設計的UART IP核提供了5個寄存器,如表2所示。其中發送寄存器和讀接收寄存器完成UART數據的發送和接收。狀態寄存器提供了UART IP核內部狀態,包括接收數據有效,發送FIFO滿,接收FIFO滿,奇偶校驗錯等狀態。控制寄存器提供了UART IP核復位功能。配置寄存器提供了波特率設置,奇偶校驗位設置等功能。
3. 3 UART協議邏輯模塊設計
本文設計的UART協議邏輯模塊主要包括波特率產生模塊,發送模塊,接收模塊,寄存器組等幾個部分,其結構如圖4所示。寄存器組說明如表2,其他幾個模塊的設計如圖4所示。
3. 3.1波特率模塊
波特率模塊根據PLB總線提供的時鐘產生需要的發送時鐘和接收時鐘。由于UABT在發送數據時只需要按照發送波特率將數據串行地發出就可以了,因此發送時鐘就等于發送波特率。而當UART在接收數據時,需要對串行數據進行采樣以判斷接收數據。由于接收方和發送方的時鐘不可能完全同步,所以需要對每一位接收數據持續電平的時間進行分段。分段越多,接收出現誤判的概率就越低,但系統開銷也越大。在實際的設計中通常采用發送時鐘的16倍作為接收時鐘。波特率模塊的分頻功能由兩個16位計數器實現,它將PLB總線時鐘按配置寄存器的設定進行分頻,產生發送時鐘和接收時鐘。
3.3.2發送模塊
發送模塊主要包括發送FIFO和發送單元兩部分,如圖5(a)所示。發送FIFO數據位寬度為8bit,深度為16字節。發送FIFO緩存 MicroBlaze處理器需要發送的數據。當FIFO空間滿時,發送模塊將狀態寄存器中“發送FIFO滿”標志位置1,MicroBlaze處理器通過查詢該位以判斷UART IP核是否可以接收下一個發送數據。
發送單元的設計用有限狀態機的方法實現,其狀態轉換圖如圖5(b)所示。系統在復位后,發送單元處于空閑狀態。當FIFO有發送數據時(Empty管腳為低),發送單元發出讀FIFO操作,并進入數據準備狀態。當數據從FIFO中讀出,發送單元首先發送起始位,進入發送狀態。在發送狀態下,發送單元依次串行發送8比特數據,并計算當前的奇偶校驗碼。在數據發送結束后,若配置寄存器中奇偶校驗位為1,則發送奇偶校驗位。最后發送單元發送停止位,回到空閑狀態,完成次數據發送。
3.3.3接收模塊
接收模塊由接收FIFO和接收單元兩部分組成,如圖6(a)所示。接收FIFO數據位寬度為8bit,深度16字節,它負責緩存接收單元收到的數據,并在收到數據后將狀態寄存器中“接收數據有效”標志位置1.MicroBlaze處理器通過查詢該位來判斷是否有數據到達。
接收單元的設計同樣采用了有限狀態機的方法,其狀態轉換圖如圖6(b)所示。系統在復位后接收單元處于就緒狀態。當接收單元在接收管腳連續檢測到8個低電平時認為起始位有效,進入接收狀態。在接收狀態下,接收單元每16個接收時鐘采集一次接收數據。8個接收數據都采集完成后,接收單元根據配置寄存器中“奇偶校驗位”是否為1決定是否進行奇偶校驗。若奇偶校驗通過,接收單元將接收到的數據寫入接收FIFO.若奇偶校驗未通過接收FIFO滿,接收單元丟棄收到的數據,并在狀態寄存器中置“奇偶校驗出錯”位或“接收FIFO滿”位為1.
4實驗驗證
4. 1系統硬件介紹
本文采用Xilinx公司提供的ML505 V5 FPGA Demo板作為SoPC系統硬件平臺。ML505 FPGA演示驗證板主要由一塊Virtex-5 XC5VLX50T FPGA構成,此外還包括RAM、Flash、以太網接口芯片、USB接口芯片以及ADM3202 RS-232電平轉換芯片等外圍擴展芯片,其中ADM3202電路原理圖如圖7所示。
實驗采用Xilinx公司ISE工具完成UART IP核的邏輯綜合和仿真,仿真波形如圖8所示,發送數據為0x01.UART IP核仿真通過后,用EDK工具提供的Peripheral Import Wizard生成一個采用PLB Slave Single模塊的自定義IP核框架。在該IP核目錄下的user_logic.v文件中例化波特率模塊、發送模塊、接收模塊和寄存器組,并增加相應總線訪同邏輯后即生成了本文設計的UART IP核。
用EDK工具中的Base System Builder wizard新建一個如圖3所示的SoPC系統,如圖9所示。在Port界面下將UART IP核的收發管腳定義為External,并在UCF文件中加入收發管腳的管腳映射描述。在Address界面下生成UART IP核的地址空間,UART通信測試程序將通過該地址空間訪問UART IP核。用EDK工具中Hardware菜單下Generate Bit Stream命令生成該SoPC系統的FPGA配置文件。用該配置文件配置ML505板載FPGA后,即生成了SoPC UART通信系統硬件。
用EDK工具中的Xilinx SDK軟件開發工具編寫相應的UART通信測試程序,編譯后將程序下載至MicroBlaze處理器程序空間。將ML505板串口與PC機串口連接后運行 UART通信測試程序,在PC機上可以觀察到此UART通信系統可以正確的發送和接收UART數據,證明了該UART IP核工作正常。
5結論
文中詳細介紹了一種基于SoPC概念的UART IP核的設計。通過將Xilinx公司提供的PLB Slave Single模塊和本文設計的UART邏輯模塊結合,快速搭建了一個滿足PLB總線接口要求的UART IP核,仿真與綜合結果表明該UART IP核各項功能均達到預期要求。該設計方法既采用了成熟的商業IP核,也利用總線接口模塊將用戶自定義IP核與商業IP核連接成為一個完整的SoPC系統。該方法增加了系統的靈活性、擴展性,同時縮短了系統開發時間,降低了系統開發難度,可為其他嵌入式系統的開發提供有益的參考。
評論
查看更多