基于FPGA的SOC系統中的串口設計

發(fā)布時(shí)間:2010-8-5 15:40    發(fā)布者:lavida
關(guān)鍵詞: FPGA , SoC , 串口設計
1 概述

在基于FPGA的SOC設計中,常使用串口作為通信接口,但直接用FPGA進(jìn)行串口通信數據的處理是比較繁雜的,特別是直接使用FPGA進(jìn)行串口通信的協(xié)議的解釋和數據打包等處理,將會(huì )消耗大量的FPGA硬件資源。  

為簡(jiǎn)化設計,降低硬件資源開(kāi)銷(xiāo),可以在FPGA中利用IP核實(shí)現的嵌入式微處理器來(lái)對串口數據進(jìn)行處理。  

本文中的設計采用了XILINX的FPGA,可選用的嵌入式微處理器IP核種類(lèi)繁多,但基于對硬件資源開(kāi)銷(xiāo)最少的考慮,最終選用了Picoblaze。  
嵌入式微處理器PicoBlaze適用于Spartan-II/E、CoolRunner-II和Virtex系列FPGA,運行速度可達到40MIPS以上,提供49個(gè)不同的指令,16個(gè)寄存器,256個(gè)地址端口,1個(gè)可屏蔽的中斷。其性能超過(guò)了傳統的8bit微處理器。嵌入式微處理器Picoblaze的功能、原理見(jiàn)參考文獻[1]。  
Picoblaze使用靈活,但其缺點(diǎn)是可尋址的存儲空間非常有限,因此為滿(mǎn)足實(shí)際需要本文同時(shí)也提出了使用片外SDRAM器件對其存儲能力進(jìn)行擴展的設計方法。  

2 串口收發(fā)接口設計
2.1 串口收發(fā)接口硬件設計  

嵌入式微處理器PicoBlaze本身并不具備串行接口,因此必須在FPGA中設計串口接收和發(fā)送模塊并通過(guò)總線(xiàn)結構與Picoblaze連接。  

串口接收和發(fā)送模塊的設計可采用成熟的IP核。實(shí)際設計中采用了XLINX的串口收發(fā)IP核,其特點(diǎn)是串口波特率,符號規則都可以靈活地定制,同時(shí)具有16字節的接收FIFO和16字節的發(fā)送FIFO。  

使用Picoblaze和串口收發(fā)IP核構成的串口收發(fā)系統結構見(jiàn)圖1。  
  
在設計中,發(fā)送模塊、接收模塊和標志寄存器分別有不同的地址,Picoblaze通過(guò)地址端口對串口收發(fā)模塊進(jìn)行訪(fǎng)問(wèn)。設計中的標志寄存器,可用于指示發(fā)送模塊和接收模塊中FIFO的狀態(tài),Picoblaze通過(guò)查詢(xún)標志寄存器來(lái)完成對串口數據的收發(fā)控制。  

2.2 串口收發(fā)接口軟件設計  

串口發(fā)送、接收子程序  

Picoblaze通過(guò)對標志寄存器的查詢(xún),根據FIFO的狀態(tài)進(jìn)行操作。串口發(fā)送和接收子程序流程見(jiàn)圖2。  


  
Picoblaze的編程,類(lèi)似于匯編語(yǔ)言。  

串口發(fā)送子程序代碼如下:  

(1)串口接收子程序  
receive:
INPUT s0,uartrxflag;查詢(xún)接收FIFO是否非空
AND s0,01
AND s0,s0
JUMP Z,receive;若FIFO為空時(shí)繼續查詢(xún)
INPUT rxdata,uartrx;若FIFO非空時(shí)讀取數據
RETURN  

(2)串口接收子程序  
translate:
INPUT s0,uarttxflag;查詢(xún)發(fā)送FIFO是否為空
AND s0,01
AND s0,s0
JUMP NZ,translate;若發(fā)送FIFO非空時(shí)繼續查詢(xún)
OUTPUTtxdata,uarttx;若發(fā)送FIFO為空時(shí)寫(xiě)入數據
RETURN  

協(xié)議處理子程序  
本文應用中的串口通信,采用應答機制,數據具有一定的幀結構,Picoblaze需要對命令幀進(jìn)行拆包處理,并根據幀的內容進(jìn)行相應的操作,然后發(fā)送響應幀。  

表1通信數據的命令幀結構  

  
表2通信數據的響應幀結構  

  
根據幀格式,Picoblaze對串口數據的處理流程見(jiàn)圖3。  


  
以上的Picoblaze程序流程所處理的數據幀結構是較為簡(jiǎn)單的,當需要處理復雜的通信協(xié)議時(shí)可以考慮采用多個(gè)Picoblaze并行處理。  

3 存儲器接口設計  

Picoblaze的優(yōu)點(diǎn)是資源占用少,使用靈活,但可尋址的地址空間最多為256字節,無(wú)法滿(mǎn)足對大量通信數據進(jìn)行存儲的需要。因此本文中采用了SDRAM器件來(lái)對Picoblaze的存儲能力進(jìn)行擴展。  

SDRAM器件的管腳分為控制信號、地址和數據三類(lèi)。通常一個(gè)SDRAM中包含幾個(gè)BANK,每個(gè)BANK的存儲單元是按行和列尋址的。SDRAM的具體特性見(jiàn)參考文獻。  

SDRAM在使用時(shí)需要專(zhuān)用的控制器來(lái)產(chǎn)生滿(mǎn)足SDRAM所需的信號。FPGA中SDRAM控制器也有多種IP核可以選用。出于對設計通用性的考慮,本文中采用了一款Altera提供的SDRAM控制器IP核,并增加了必要的設計以滿(mǎn)足與Picoblaze的接口要求。SDRAM控制器IP核的功能、原理見(jiàn)參考文獻。  

對Picoblaze與SDRAM控制器的接口設計有以下幾個(gè)出發(fā)點(diǎn):  
  
總線(xiàn)匹配  

Picoblaze為8位處理器,數據線(xiàn)僅8bit,而SDRAM控制器總線(xiàn)寬度與SDRAM相同,可以為8、16或32bit。因此對于SDRAM控制器的數據Picoblaze必須以字節為單位進(jìn)行處理。   

地址控制  
Picoblaze地址線(xiàn)僅8位,無(wú)法直接對SDRAM進(jìn)行尋址。因此Picoblaze對SDRAM的尋址可借鑒先入先出存儲器FIFO的設計,即設計專(zhuān)門(mén)的地址計數器,通過(guò)地址計數器實(shí)現對SDRAM的尋址。   

時(shí)序匹配  

Picoblaze的運行速度不超過(guò)40MHz,而SDRAM的工作速度通常大于100MHz。因此為了滿(mǎn)足SDRAM的時(shí)序要求,要增加必要的緩沖機制。
   
3.1存儲器接口硬件設計  

Picoblaze與SDRAM存儲器接口的硬件原理框圖見(jiàn)圖4。  

  
控制狀態(tài)機控制的地址計數器為SDRAM控制器提供地址,同時(shí)控制狀態(tài)機還控制輸入數據緩沖區和輸出數據緩沖區,并且根據Picoblaze的地址端口數據和讀/寫(xiě)使能信號產(chǎn)生SDRAM控制器的命令字。  

(1)SDRAM初始化  

每次加電或復位后控制狀態(tài)機執行對SDRAM控制器的初始化操作,設置SDRAM的時(shí)間參數和刷新周期等。  

(2)數據寫(xiě)入SDRAM  

輸出數據緩沖區由16×8bit的FIFO構成,當Picoblaze向輸出數據緩沖區寫(xiě)入超過(guò)8個(gè)字節后,通過(guò)“半滿(mǎn)”信號使控制狀態(tài)機進(jìn)入SDRAM的長(cháng)度為8的突發(fā)寫(xiě)模式,在寫(xiě)入完成后控制狀態(tài)機將地址計數器增加8,以準備好下一次的寫(xiě)入。  

(3)數據讀取  

數據讀取時(shí)Picoblaze首先向控制狀態(tài)機發(fā)送讀取請求,控制狀態(tài)機進(jìn)入SDRAM的長(cháng)度為1的突發(fā)讀模式,并將讀取的數據寫(xiě)入輸入數據緩沖區,此后Picoblaze再由輸入數據緩沖區中讀取數據。在讀取后,地址計數器做相應的增加,以實(shí)現先入先出功能。  

以上的設計方法適用于需要數據連續寫(xiě)入后再連續讀取的場(chǎng)合。  

控制狀態(tài)機狀態(tài)圖見(jiàn)圖5。  

  
3.2 存儲器接口軟件設計  

由于在SDRAM控制器與Picoblaze之間增加了控制狀態(tài)機,簡(jiǎn)化了Picoblaze的程序設計。  

(1)數據寫(xiě)入  
數據寫(xiě)入時(shí)Picoblaze向輸出數據緩沖區直接寫(xiě)入數據即可。  

(2)數據讀取  
數據讀取時(shí)Picoblaze首先向控制狀態(tài)機發(fā)出請求,然后等待輸入數據緩沖區的數據準備就續后再讀取。  

4結論  

本文在XILINX FPGA中采用嵌入式處理器Picoblaze進(jìn)行SOC設計,以較少的硬件資源實(shí)現了對串口通信數據的處理,同時(shí)采用SDRAM器件對Picoblaze的存儲能力進(jìn)行擴展。所采用的設計已應用于多個(gè)產(chǎn)品中。經(jīng)過(guò)了長(cháng)期的使用和測試證明文中的設計方法穩定、可靠,并且具有資源占用少,設計靈活的優(yōu)點(diǎn)。
本文地址:http://selenalain.com/thread-19518-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页