基于 DSP 中 EMIF 端口的光柵尺數(shù)據(jù)采集
2017-8-7 來源:哈爾濱工業(yè)大學(xué)航天學(xué)院 作者:萬勇利 魏 凱 韓紀曉 陳興林
摘 要 : 光柵尺是設(shè)備中常用的位置檢測裝置 , 其測量輸出的信號為數(shù)字脈沖 , 具有檢測范圍大 , 檢測精度高 , 響應(yīng)速度快的特點。C6000 系列 DSP 芯片功耗低 , 而且具有高性能的處理能力 , 而且其 EMIF 接口與可以實現(xiàn)與外部存儲擴展的無縫連接。本文介紹一種利用 EMIF 與 FPGA 的無縫連接 , 實現(xiàn) DSP 對 FPGA 中存儲的光柵尺數(shù)據(jù)采集方法。
關(guān)鍵詞 :DSP;EMIF;FPGA; 光柵尺 ; 數(shù)據(jù)采集
1 引言
DSP 芯片 , 也稱數(shù)字信號處理器 , 是一種特別適合于進行數(shù)字信號處理運算的微處理器 , 其主要應(yīng)用是實時快速地實現(xiàn)各種數(shù)字信號處理算法。DSP 有豐富的外設(shè)資源 , 其中 EMIF 端口更是滿足了DSP 的外部存儲擴展和數(shù)據(jù)交換的需求。通過 EMIF 與外部存儲器連接可以實現(xiàn) DSP 與存儲器的無縫連接 , 對于數(shù)據(jù)有更高效的存取速度 , 而且 64 位數(shù)據(jù)線有極高的數(shù)據(jù)吞吐量。DSP內(nèi)部對 EMIFA 與 EMIFB 進行了統(tǒng)一編址 , 對 EMIF擴展的存儲空間都有相應(yīng)的地址映射 , 通過直接訪問相應(yīng)的地址可以直接獲得存儲在外部擴展存儲器中的數(shù)據(jù) , 配置好 EMIF 外設(shè)后 , 訪問數(shù)據(jù)十分方便。嵌入式設(shè)計中常用作外部 FLASH 擴展、存儲擴展及和 FPGA數(shù)據(jù)交換。
光柵尺 , 也稱為光柵尺位移傳感器 , 是利用光柵的光學(xué)原理工作的測量反饋裝置。光柵尺經(jīng)常應(yīng)用于閉環(huán)伺服系統(tǒng)中 , 可用作直線位移或者角位移的檢測。其測量輸出的信號為數(shù)字脈沖 , 具有檢測范圍大 , 檢測精度高 , 響應(yīng)速度快的特點。利用光柵尺作為位置傳感器可以精確地獲得控制對象的位置信息 , 而且光柵尺獲得的數(shù)據(jù)容易處理 , 通過簡單的精度計算和初始位置選擇就可以得到期望的位置信號。
2 DSP 的 EMIF 端口結(jié)構(gòu)
本文以 TMS320C64x 系列 DSP 進行說明。DSP 的EMIF 接口支持異步存儲器接口、同步突發(fā)靜態(tài)存儲器接口和同步動態(tài)存儲器接口 , 支持程序代碼訪問 64 位寬、32 位寬、16 位寬數(shù)據(jù)訪問。DSP 將 EMIF 接 口 分 為 兩 個 部 分 ,EMIFA 和EMIFB, 其中 EMIFA 可以支持 64 位、32 位、16 位和8 位數(shù)據(jù)訪問 ,EMIFB 支持 16 位和 8 位數(shù)據(jù)訪問。
DSP 將 EMIF 接 口 分 為 兩 個 部 分 ,EMIFA 和EMIFB, 其中 EMIFA 可以支持 64 位、32 位、16 位和8 位數(shù)據(jù)訪問 ,EMIFB 支持 16 位和 8 位數(shù)據(jù)訪問兩
兩個 EMIF 端口的存儲區(qū)均被分為 4 個片選空間 , 都可以單獨進行設(shè)置與擴展。DSP 對外設(shè) EMIF 端口進行統(tǒng)一編址[1], 其地址映射如表 1 所示。

從圖中可以看出 EMIFA 和 EMIFB 分別被分為四個片選區(qū) CE0~CE3, 并且分別分配了地址 , 這樣使得 DSP可以同時與不同的存儲器擴展 , 通過訪問不同的地址區(qū)即可訪問相應(yīng)的外部存儲器 , 大大提高了 EMIF 端口的設(shè)計靈活性又提高了 EMIF 端口的使用效率。EMIF 的端口結(jié)構(gòu)[2]如圖 1 所示。

ECLKIN:EMIF 的外部時鐘輸入 , 可以作為 EMIF對外輸出時鐘頻率。
ECLKOUTn:EMIF 對外輸出時鐘頻率 , 它的選擇基于 EMIF 的輸入時鐘頻率(1/4 或 1/6 的 DSP 內(nèi)部時鐘頻率、外部時鐘頻率)。其中 ECLKOUT1 頻率等于 EMIF 輸入時鐘頻率。ECLKOUT2 可以編程設(shè)置為EMIF 輸入頻率的 1 倍、1/2 或 1/4。時鐘頻率的選擇影響外部存儲擴展存儲速度 , 配置 EMIF 需要注意。
ED:EMIF 的數(shù)據(jù)線。
EA:EMIF 的地址線。

對于 EMIF 的外部存儲 , 它的兩個部分 EMIFA 和EMIFB 可以選擇不同的數(shù)據(jù)位 , 對于 EMIFA 的外部數(shù)據(jù)線位數(shù)選擇[2]。EMIFA 的數(shù)據(jù)線可以選擇 64 位 ,32位 ,16 位和 8 位 , 設(shè)計相當?shù)撵`活 , 可以根據(jù)擴展的存儲芯片的類型進行選擇。EMIFB 的數(shù)據(jù)線可以選擇16 位和 8 位 , 利用 EMIFB 可以進行低數(shù)據(jù)外部存儲的擴展。
EMIFA 常用于與外部傳感器進行大量的數(shù)據(jù)交換 ,而 EMIFB 則可以用作 DSP 芯片的 FLASH 芯片擴展及外部 RAM 擴展。兩部分相結(jié)合 , 可以滿足數(shù)據(jù)存儲交換的需求。
3 EMIF 端口與 FPGA 硬件連接設(shè)計
對于 EMIF 端口的引腳我們需要將其與 FPGA 的通用引腳連接起來 , 以便在 FPGA 內(nèi)進行邏輯編程。其實 ,對于 FPGA 用作 EMIF 的存儲用不到所有的引腳 , 但是為了方便以后的設(shè)計變化 , 我們在原理圖中將 EMIF端口的所有引腳均在 FPGA 中分配了引腳。為了防止沒有用到的 EMIF 引腳的干擾 , 可以將沒有用到的引腳設(shè)為高阻態(tài)。本設(shè)計以 EMIFA 的端口設(shè)計為例進行介紹 ,EMIFB 端口可同樣道理進行設(shè)計。在 Altium Designer 軟件中繪制原理圖。圖 3 為與EMIF 端口相關(guān)元件圖。左側(cè)為 DSP 芯片的 EMIF 引腳分布 , 右側(cè)為 FPGA 與 EMIF 相接管腳。將 DSP 與 FPGA 對應(yīng)管腳相連 , 如圖 2 所示結(jié)構(gòu)。

圖 2 EMIFA 與 FPGA 連接圖
4 DSP 中EMIF 程序配置
在 DSP 中對 EMIF 端口的控制可由 EMIF 對應(yīng)的寄存器進行配置 , 然后利用 DSP 的庫函數(shù)應(yīng)用配置。以EMIFA端口配置為例進行介紹。在DSP中有如下宏定義:
#define EMIFA_FMKS(REG,FIELD,SYM)\
_ P E R _ F M K S ( E M I F A , # # R E G , # #
FIELD,##SYM)
此宏定義可以實現(xiàn)對于 EMIFA 的 REG 寄存器的FIELD 位賦予 SYM 值。這樣可以方便的對 EMIFA 寄存器進行配置。對于本設(shè)計 ,EMIF 只要控制好數(shù)據(jù)線和地址線及片選使能信號、讀寫控制信號即可, 其他的配置可以從簡。以下只給出本設(shè)計的一些關(guān)鍵配置 ,其參數(shù)可以自行調(diào)節(jié)。其他配置位可以根據(jù)技術(shù)手冊進行設(shè)置。
(1) 對于 ENIF 全局控制寄存器 GBLCTL 配置
E M I F A _ F M K S ( G B L C T L , E K2R A T E , HALFCLK) //ECLKOUT2 輸出頻率為 1/2EMIF 輸入時鐘頻率。
EMIFA_FMKS(GBLCTL, EK2HZ, CLK) //ECLKOUT2 輸出不間斷EMIFA_FMKS(GBLCTL, EK2EN, ENABLE) //ECLKOUT2 輸出使能EMIFA_FMKS(GBLCTL, NOHOLD, DISABLE) // NOHOLD 關(guān)閉 ,FPGA 可以發(fā)起對 EMIF 總線占有申請。
(2) 對于 ENIFCE 空間控制寄存器 CECTL 配置
EMIFB_FMKS(CECTL, WRSETUP, OF(2)) // 寫信號到來前 , 地址線、片選使能先、位使能等信號能建立、讀信號完成后使能芯片需要兩個時鐘周期。EMIFB_FMKS(CECTL, WRSTRB, OF(6)) // 寫信號的寬度為 6 個時鐘周期。EMIFB_FMKS(CECTL, WRHLD, OF(2))
//寫信號到來后對地址線和字節(jié)存儲線占用 2 個時鐘周期。EMIFB_FMKS(CECTL, RDSETUP, OF(2)) //讀信號到來前 , 地址線、片選使能先、位使能等信號能建立、讀信號完成后使能芯片需要兩個時鐘周期。
EMIFB_FMKS(CECTL, RDSTRB, OF(6)) //讀信號的寬度為 6 個時鐘周期。
EMIFB_FMKS(CECTL, MTYPE, ASYNC64) // 存儲接口為 64 位同步接口。EMIFB_FMKS(CECTL, RDHLD, OF(2)) // 讀信號到來后對地址線和字節(jié)存儲線占用 2 個時鐘周期。
(3) 其他寄存器配置
由于本設(shè)計沒有使用 SRAM,SDCTL、SDTIM和 S D E X T 默認設(shè)置[3]即可。C E S E C 寄存器也保持默認設(shè)置。
(4) 利用庫函數(shù)應(yīng)用配置
聲明結(jié)構(gòu)體 EMIFA_Config, 并將配置好的寄存器值賦予結(jié)構(gòu)體的各個變量。然后利用庫函數(shù)void EMIFA_config(EMIFA_Config *config);應(yīng)用配置即可。
5 光柵尺數(shù)據(jù)采集設(shè)計
光柵尺傳感器的讀數(shù)頭將讀到的數(shù)據(jù)匯集到采集卡上 , 采集卡可以實現(xiàn)對多路光柵尺數(shù)據(jù)的存儲 , 且按一定的周期刷新各路光柵尺存儲的數(shù)據(jù) , 因此 , 我們需要及時的將采集卡中的各路數(shù)據(jù)取出,送與DSP運算處理。本設(shè)計采用 FPGA 作為中間環(huán)節(jié) , 首先將采集卡上采集到的數(shù)據(jù)存入 FPGA 內(nèi)部的雙口 RAM 中 ,DSP 再通過EMIF 從 FPGA 的雙口 RAM 中讀取數(shù)據(jù)。
接下來對 FPGA 采集光柵尺數(shù)據(jù)的邏輯進行設(shè)計。由于狀態(tài)機條理清晰、運行可靠 , 時序容易把握 , 故本設(shè)計采用三段式狀態(tài)機進行設(shè)計[4][5]。FPGA 對多路光柵尺數(shù)據(jù)采集的狀態(tài)機的狀態(tài)轉(zhuǎn)移圖如圖 3 所示。
在 S0 狀態(tài) , 判斷 5k Hz 上升沿是否到來 , 用此來控制讀取光柵尺數(shù)據(jù)的周期 , 則周期為 200us(遠小于采集卡的刷新周期), 由此決定了 DSP 以 200us 為周期處理讀到的數(shù)據(jù)。在 S1 控制發(fā)向采集卡的地址和發(fā)向雙口 RAM 的地址為起始地址 , 延時 20ns, 等待地址線穩(wěn)定。在 S2 狀態(tài) , 將采集卡上得到的數(shù)據(jù)暫存 , 延時10ns 后 , 在 S3 狀態(tài)再次讀取采集卡同一地址的數(shù)據(jù)并暫存 , 通過 S4 狀態(tài)進行數(shù)據(jù)比較。到 S5, 第三次讀取采集卡同一地址的數(shù)據(jù)并暫存 ,10ns 延時后 , 在 S6 將三次的數(shù)據(jù)比較 , 得到中間值并暫存。這樣使得讀數(shù)可能存在誤碼率消除 , 系統(tǒng)更加穩(wěn)健。在 S7 狀態(tài)將比較的結(jié)果放到雙口 RAM 的數(shù)據(jù)線上 , 并且統(tǒng)計讀數(shù)次數(shù)為 0。延時 10ns, 保證數(shù)據(jù)線的穩(wěn)定 , 之后在 S8 狀態(tài) , 給雙口 RAM 寫信號 , 持續(xù) 10ns, 保證數(shù)據(jù)穩(wěn)定寫入。在 S9 狀態(tài) , 判斷多路光柵尺數(shù)據(jù)是否讀完 , 讀完(sg1=1), 則復(fù)位 S0 狀態(tài) , 否則進入 S10 狀態(tài)。在S10 狀態(tài) , 控制發(fā)向采集卡的地址和發(fā)向雙口 RAM 的地址加 1。S10 到 S18 狀態(tài)是對采集卡上下一路光柵尺數(shù)據(jù)的采集 , 原理與前述相同。在 S18 狀態(tài) , 讀取次數(shù)加 1, 回到 S9 狀態(tài)判斷是否讀取完畢 , 完畢(sg1=1),則復(fù)位 S0, 否則開始下一路光柵尺數(shù)據(jù)讀取。
利用 Signal Tap II 對 FPGA 內(nèi)部邏輯進行監(jiān)控[6]。可得時序圖如圖 4 所示。
圖 中 ,VMEEXAddr 為 FPGA 向 采 集 卡 發(fā) 送的地址 ,VMEEXData 為 FPGA 從采集卡得到的數(shù)據(jù)。VMEEXTo Dsp Addr 為 FPGA 發(fā)向雙口 RAM的 地 址 ,VMEEXTo Dsp Data 為 FPGA 發(fā) 向 雙 口RAM的數(shù)據(jù)。VMEEXTo Write 為雙口 RAM 寫信號。Read Times 為讀取光柵尺的路數(shù) , 從 0 開始。VMEEXTo Dsp Data_1-3 為三次讀取數(shù)據(jù)的暫存值。從圖中可以看出在相應(yīng)的地址內(nèi)有效地寫入了正確的數(shù)據(jù) , 而且實現(xiàn)了多路光柵尺數(shù)據(jù)的讀取 , 時序是正確的。
參考圖 1 所示統(tǒng)一編址 , 在 DSP 中訪問相應(yīng)的 CE片的地址 ,EMIF 可以自動向 FPGA 中設(shè)置的雙口 RAM模塊發(fā)送相應(yīng)地址 , 取得相應(yīng)的數(shù)據(jù)到 DSP, 這樣大大簡化了訪問外部數(shù)據(jù)的步驟而且又很快的速率。通過上位機監(jiān)視 DSP 中處理得到的電機運行位置信息 , 可得到如圖 5 所示的結(jié)果。

圖 3 狀態(tài)機轉(zhuǎn)移圖

圖 4 光柵尺數(shù)據(jù)采集時序圖

圖 5 光柵尺數(shù)據(jù)采集時序圖
由圖可見 ,DSP 處理得到了正確的電機位置信息 ,且在運動過程中位置變化平滑無毛刺 , 故本設(shè)計達到了正確采集光柵尺數(shù)據(jù)的要求 , 方案是正確的。
6 結(jié)束語
本文設(shè)計討論了一種利用 DSP 的 EMIF 讀取多路光柵尺數(shù)據(jù)的設(shè)計方法 , 在實踐中得到良好了應(yīng)用 ,DSP可以準確、可靠地獲得光柵尺傳感器返回的電機位置信號 , 從而為接下來的控制算法打好基礎(chǔ)。在本設(shè)計中 , 我們僅討論利用了 DSP 的 EMIFA 端口 , 對于EMIFB 端口同樣可以加以利用 , 可以用來進行 RAM 或FLASH 擴展。設(shè)計中 , 利用了 FPGA 作為邏輯處理的中間環(huán)節(jié) , 讓其將采集卡的數(shù)據(jù)進行存儲 , 這樣大大減少了 DSP 的訪問壓力。由于本文主要針對 TMS32064X系列 DSP 進行了設(shè)計 , 對于不同系列 DSP 的 EMIF 配置也有不同 , 故讀者在設(shè)計時需要加以注意。
投稿箱:
如果您有機床行業(yè)、企業(yè)相關(guān)新聞稿件發(fā)表,或進行資訊合作,歡迎聯(lián)系本網(wǎng)編輯部, 郵箱:skjcsc@vip.sina.com
如果您有機床行業(yè)、企業(yè)相關(guān)新聞稿件發(fā)表,或進行資訊合作,歡迎聯(lián)系本網(wǎng)編輯部, 郵箱:skjcsc@vip.sina.com
更多相關(guān)信息
業(yè)界視點
| 更多
行業(yè)數(shù)據(jù)
| 更多
- 2025年1月 新能源汽車銷量情況
- 2024年12月 新能源汽車產(chǎn)量數(shù)據(jù)
- 2024年12月 基本型乘用車(轎車)產(chǎn)量數(shù)據(jù)
- 2024年12月 軸承出口情況
- 2024年12月 分地區(qū)金屬切削機床產(chǎn)量數(shù)據(jù)
- 2024年12月 金屬切削機床產(chǎn)量數(shù)據(jù)
- 2024年11月 金屬切削機床產(chǎn)量數(shù)據(jù)
- 2024年11月 分地區(qū)金屬切削機床產(chǎn)量數(shù)據(jù)
- 2024年11月 軸承出口情況
- 2024年11月 基本型乘用車(轎車)產(chǎn)量數(shù)據(jù)
- 2024年11月 新能源汽車產(chǎn)量數(shù)據(jù)
- 2024年11月 新能源汽車銷量情況
- 2024年10月 新能源汽車產(chǎn)量數(shù)據(jù)