1、概述
在基于FPGA的SOC設計中,常使用串口作為通信接口,但直接用FPGA進行串口通信數(shù)據(jù)的處理是比較繁雜的,特別是直接使用FPGA進行串口通信的協(xié)議的解釋和數(shù)據(jù)打包等處理,將會消耗大量的FPGA硬件資源。為簡化設計,降低硬件資源開銷,可以在FPGA中利用IP核實現(xiàn)的嵌入式微處理器來對串口數(shù)據(jù)進行處理。
本文中的設計采用了XILINX的FPGA,可選用的嵌入式微處理器IP核種類繁多,但基于對硬件資源開銷最少的考慮,最終選用了Picoblaze。
嵌入式微處理器PicoBlaze適用于Spartan-II/E、CoolRunner-II和Virtex系列FPGA,運行速度可達到40MIPS以上,提供49個不同的指令,16個寄存器,256個地址端口,1個可屏蔽的中斷。其性能超過了傳統(tǒng)的8bit微處理器。
Picoblaze使用靈活,但其缺點是可尋址的存儲空間非常有限,因此為滿足實際需要本文同時也提出了使用片外SDRAM器件對其存儲能力進行擴展的設計方法。
2、串口收發(fā)接口設計
2.1串口收發(fā)接口硬件設計
嵌入式微處理器PicoBlaze本身并不具備串行接口,因此必須在FPGA中設計串口接收和發(fā)送模塊并通過總線結構與Picoblaze連接。
串口接收和發(fā)送模塊的設計可采用成熟的IP核。實際設計中采用了XLINX的串口收發(fā)IP核,其特點是串口波特率,符號規(guī)則都可以靈活地定制,同時具有16字節(jié)的接收FIFO和16字節(jié)的發(fā)送FIFO。
使用Picoblaze和串口收發(fā)IP核構成的串口收發(fā)系統(tǒng)結構見圖1。
在設計中,發(fā)送模塊、接收模塊和標志寄存器分別有不同的地址,Picoblaze通過地址端口對串口收發(fā)模塊進行訪問。設計中的標志寄存器,可用于指示發(fā)送模塊和接收模塊中FIFO的狀態(tài),Picoblaze通過查詢標志寄存器來完成對串口數(shù)據(jù)的收發(fā)控制。
2.2串口收發(fā)接口軟件設計
串口發(fā)送、接收子程序
Picoblaze通過對標志寄存器的查詢,根據(jù)FIFO的狀態(tài)進行操作。串口發(fā)送和接收子程序流程見圖2。
串口發(fā)送子程序代碼如下:
(1)串口接收子程序
receive:
INPUT s0,uartrxflag;查詢接收FIFO是否非空
AND s0,01
AND s0,s0
JUMP Z,receive;若FIFO為空時繼續(xù)查詢
INPUT rxdata,uartrx;若FIFO非空時讀取數(shù)據(jù)
RETURN
(2)串口接收子程序
translate:
INPUT s0,uarttxflag;查詢發(fā)送FIFO是否為空
AND s0,01
AND s0,s0
JUMP NZ,translate;若發(fā)送FIFO非空時繼續(xù)查詢
OUTPUTtxdata,uarttx;若發(fā)送FIFO為空時寫入數(shù)據(jù)
RETURN
協(xié)議處理子程序
本文應用中的串口通信,采用應答機制,數(shù)據(jù)具有一定的幀結構,Picoblaze需要對命令幀進行拆包處理,并根據(jù)幀的內(nèi)容進行相應的操作,然后發(fā)送響應幀。
根據(jù)幀格式,Picoblaze對串口數(shù)據(jù)的處理流程見圖3。
以上的Picoblaze程序流程所處理的數(shù)據(jù)幀結構是較為簡單的,當需要處理復雜的通信協(xié)議時可以考慮采用多個Picoblaze并行處理。
3存儲器接口設計
Picoblaze的優(yōu)點是資源占用少,使用靈活,但可尋址的地址空間最多為256字節(jié),無法滿足對大量通信數(shù)據(jù)進行存儲的需要。因此本文中采用了SDRAM器件來對Picoblaze的存儲能力進行擴展。
SDRAM器件的管腳分為控制信號、地址和數(shù)據(jù)三類。通常一個SDRAM中包含幾個BANK,每個BANK的存儲單元是按行和列尋址的。SDRAM的具體特性見參考文獻[3]。
SDRAM在使用時需要專用的控制器來產(chǎn)生滿足SDRAM所需的信號。FPGA中SDRAM控制器也有多種IP核可以選用。出于對設計通用性的考慮,本文中采用了一款Altera提供的SDRAM控制器IP核,并增加了必要的設計以滿足與Picoblaze的接口要求。SDRAM控制器IP核的功能、原理見參考文獻[4]。
對Picoblaze與SDRAM控制器的接口設計有以下幾個出發(fā)點:
總線匹配
Picoblaze為8位處理器,數(shù)據(jù)線僅8bit,而SDRAM控制器總線寬度與SDRAM相同,可以為8、16或32bit。因此對于SDRAM控制器的數(shù)據(jù)Picoblaze必須以字節(jié)為單位進行處理。
地址控制
Picoblaze地址線僅8位,無法直接對SDRAM進行尋址。因此Picoblaze對SDRAM的尋址可借鑒先入先出存儲器FIFO的設計,即設計專門的地址計數(shù)器,通過地址計數(shù)器實現(xiàn)對SDRAM的尋址。
時序匹配
Picoblaze的運行速度不超過40MHz,而SDRAM的工作速度通常大于100MHz。因此為了滿足SDRAM的時序要求,要增加必要的緩沖機制。
3.1存儲器接口硬件設計
Picoblaze與SDRAM存儲器接口的硬件原理框圖見圖4。
控制狀態(tài)機控制的地址計數(shù)器為SDRAM控制器提供地址,同時控制狀態(tài)機還控制輸入數(shù)據(jù)緩沖區(qū)和輸出數(shù)據(jù)緩沖區(qū),并且根據(jù)Picoblaze的地址端口數(shù)據(jù)和讀/寫使能信號產(chǎn)生SDRAM控制器的命令字。
(1)SDRAM初始化
每次加電或復位后控制狀
態(tài)機執(zhí)行對SDRAM控制器的初始化操作,設置SDRAM的時間參數(shù)和刷新周期等。
(2)數(shù)據(jù)寫入SDRAM
輸出數(shù)據(jù)緩沖區(qū)由16×8bit的FIFO構成,當Picoblaze向輸出數(shù)據(jù)緩沖區(qū)寫入超過8個字節(jié)后,通過“半滿”信號使控制狀態(tài)機進入SDRAM的長度為8的突發(fā)寫模式,在寫入完成后控制狀態(tài)機將地址計數(shù)器增加8,以準備好下一次的寫入。
(3)數(shù)據(jù)讀取
數(shù)據(jù)讀取時Picoblaze首先向控制狀態(tài)機發(fā)送讀取請求,控制狀態(tài)機進入SDRAM的長度為1的突發(fā)讀模式,并將讀取的數(shù)據(jù)寫入輸入數(shù)據(jù)緩沖區(qū),此后Picoblaze再由輸入數(shù)據(jù)緩沖區(qū)中讀取數(shù)據(jù)。在讀取后,地址計數(shù)器做相應的增加,以實現(xiàn)先入先出功能。
以上的設計方法適用于需要數(shù)據(jù)連續(xù)寫入后再連續(xù)讀取的場合。
控制狀態(tài)機狀態(tài)圖見圖5。
3.2存儲器接口軟件設計
由于在SDRAM控制器與Picoblaze之間增加了控制狀態(tài)機,簡化了Picoblaze的程序設計。
(1)數(shù)據(jù)寫入
數(shù)據(jù)寫入時Picoblaze向輸出數(shù)據(jù)緩沖區(qū)直接寫入數(shù)據(jù)即可。
(2)數(shù)據(jù)讀取
數(shù)據(jù)讀取時Picoblaze首先向控制狀態(tài)機發(fā)出請求,然后等待輸入數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)準備就續(xù)后再讀取。
4結論
本文在XILINX FPGA中采用嵌入式處理器Picoblaze進行SOC設計,以較少的硬件資源實現(xiàn)了對串口通信數(shù)據(jù)的處理,同時采用SDRAM器件對Picoblaze的存儲能力進行擴展。所采用的設計已應用于多個產(chǎn)品中。經(jīng)過了長期的使用和測試證明文中的設計方法穩(wěn)定、可靠,并且具有資源占用少,設計靈活的優(yōu)點。
-
FPGA
+關注
關注
1646文章
22054瀏覽量
618821 -
嵌入式
+關注
關注
5152文章
19678瀏覽量
317798 -
微處理器
+關注
關注
11文章
2383瀏覽量
84218
發(fā)布評論請先 登錄
利用FPGA自帶的IP核實現(xiàn)雙口RAM用于2片MCU進行數(shù)據(jù)交換時多次讀數(shù)據(jù)后RAM中數(shù)據(jù)變?yōu)榱?
采用IP核實現(xiàn)PCI總線接口設計
采用IP核實現(xiàn)PCI總線接口設計
求一種基于FPGA的SOC系統(tǒng)中的串口設計
搭建一個SoC下載到FPGA開發(fā)板中設計實現(xiàn)
在測控系統(tǒng)中用IP 核實現(xiàn)D/A 轉換
在測控系統(tǒng)中用IP核實現(xiàn)D/A轉換
開放核協(xié)議—IP核在SoC設計中的接口技術
在測控系統(tǒng)中用IP核實現(xiàn)D/A轉換

W5100在FPGA系統(tǒng)中實現(xiàn)TCP_IP網(wǎng)絡通信

IP核在SoC設計中的接口技術解析

如何使用FPGA進行仿真系統(tǒng)數(shù)據(jù)采集控制器IP核設計的資料概述

評論