宋何娟 周樂
摘要:該文采用自頂向下的Top-Down設(shè)計方法,詳細描述了基于SPI協(xié)議的并行控制接口的設(shè)計與驗證,包括接口的模塊劃分、模塊設(shè)計、接口驗證,并列出了驗證過程的仿真波形,此款接口已成功應(yīng)用于serdes芯片,具有實際的工程意義。
關(guān)鍵詞:SPI;Top-Down設(shè)計方法;并行接口
中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1009-3044(2015)07-0048-02
Abstract:According to Top-Down design theory,the thesis described the design and verification ofthe parallel control port which bases SPI protocol,including the divided of the modules,the design of the modules and the verification of the interface.It also presented the simulation waveform during verification.Presently,theparallel control port had been applied in the serdes chip ,showing the validity in the enginerring application.
Key words: SPI; Top-Down design theory; parallel control port
1 引言
SPI是Motorola公司推出的一種同步串行接口技術(shù),是一種高速、全雙工、同步的通信總線[1],并且連線簡單,有利于節(jié)省布局布線空間,現(xiàn)在越來越多的芯片集成了這種通信協(xié)議。本項目設(shè)計了基于此種SPI協(xié)議的并行控制接口,采用自頂向下的設(shè)計方法,下面并將詳細描述此接口的設(shè)計和驗證。
2概述
基于SPI協(xié)議實現(xiàn)的并行控制接口(parallel control port——簡稱CR port),基本的邏輯框圖見圖1,這里采用5根線來實現(xiàn)SPI協(xié)議端的數(shù)據(jù)收發(fā)。sclk為時鐘信號,sdi為輸入數(shù)據(jù),sdi_en為輸入數(shù)據(jù)有效信號,低有效。sdo為輸出數(shù)據(jù),sdo_en為輸出數(shù)據(jù)有效信號,低有效。
3模塊設(shè)計
本設(shè)計包括4個基本模塊:串并轉(zhuǎn)換模塊、并串轉(zhuǎn)換模塊、功能轉(zhuǎn)換模塊和CR port模塊。
串并轉(zhuǎn)換模塊由一個18位的移位寄存器實現(xiàn)[2],移位寄存器移完一個數(shù)據(jù)包,即18bits輸出一次,輸入使能信號sdi_en為低電平時,串行數(shù)據(jù)sdi在同步時鐘sclk的作用下完成串并轉(zhuǎn)換。
并串轉(zhuǎn)換模塊是串并轉(zhuǎn)換模塊的逆過程,與串并轉(zhuǎn)換模塊類似。
功能轉(zhuǎn)換模塊對串并轉(zhuǎn)換后的18bits數(shù)據(jù)進行判斷,首先把18bits的并行數(shù)據(jù)進行分離,高2位為字頭w1w0,低16位為地址或數(shù)據(jù),同時產(chǎn)生讀、寫控制信號。字頭w1w0與對應(yīng)的數(shù)據(jù)包分四種情況:00,代表空操作; 01,代表寫寄存器的地址;10,代表讀寄存器的地址;11,代表寫入寄存器的數(shù)據(jù)。
CR port模塊對SPI協(xié)議處理過的經(jīng)過功能轉(zhuǎn)換的數(shù)據(jù)進行處理,在狀態(tài)機的控制下通過尋址、讀、寫相應(yīng)的寄存器來讀、寫數(shù)據(jù),實現(xiàn)并行控制端口的功能。
如要實現(xiàn)寫一個寄存器的操作過程如下:cr_data_in[15:0]寫入數(shù)據(jù)值,cr_cap_data變高,等待cr_ack變高,說明數(shù)據(jù)寫入成功,此時cr_cap_data拉低,則數(shù)據(jù)寫入結(jié)束,cr_ack拉低,然后cr _write變高,等待cr_ack變高,說明寫寄存器操作成功,此時cr _write拉低,則表明寫寄存器操作結(jié)束,cr_ack拉低。
4驗證
基于SPI協(xié)議的并行控制接口的驗證,我們搭建了驗證平臺,平臺通過寫任務(wù)、系統(tǒng)函數(shù)等方式自動生成需要的測試激勵[3],再采用比較輸入數(shù)據(jù)和輸出數(shù)據(jù)一致性的方法,判斷驗證功能的正確性。
首先使用了5個task,用來產(chǎn)生具有SPI協(xié)議的數(shù)據(jù),從而為SPI協(xié)議端提供相應(yīng)的信號。同樣,采用類似的任務(wù)完成寄存器數(shù)據(jù)的讀寫,最后,通過比較cr_data_in和cr_data_out的一致性,驗證基于SPI協(xié)議的CR port功能的正確性。
可見:地址為16h0012的寄存器寫入值16h0123,對地址為16h0012的寄存器進行讀操作,在M4點,得到輸出數(shù)據(jù)16h0123。結(jié)論:寄存器讀寫操作正確。
5 小結(jié)
本文詳述了一種基于SPI協(xié)議的CR port接口的設(shè)計與驗證,采用自頂向下的設(shè)計方法,包括接口定義、模塊劃分、模塊設(shè)計以及接口驗證。此接口電路已經(jīng)成功應(yīng)用于serdes芯片,于2014年與serdes芯片一起流片成功,具有實際的工程意義。
參考文獻
[1] 楊承富, 徐志軍.SPI總線接口的FPGA設(shè)計與實現(xiàn)[J].軍事通信技術(shù),2004,25(2):72-76.
[2] 易志明,林凌,郝麗宏,等.SPI 串行總線接口及其實現(xiàn)[J].自動化與儀器表,2002(6):45-46.
[3] Mark Glasser, Adam Rose, Tom Fitzpatrick 等著,王欣等譯.高級驗證方法學(xué)[M].電子科技大學(xué)出版社,2007 :127- 128.