專利名稱:一種基于cpld的spi通信端口的制作方法
技術領域:
本發(fā)明涉及同步串行通信技術領域,尤其涉及一種應用于實時嵌入式控制系統(tǒng)的SPI通信端ロ。
背景技術:
目前在電氣自動化控制裝置中,廣泛采用各種通信手段以完成上層與底層控制器、底層控制器以及控制芯片之間的信息傳遞,并實現(xiàn)相應的控制功能;各種通信功能的設計與實現(xiàn)已成為自動化裝置設計的重要組成部分。本發(fā)明以一種超聲波電機運動控制裝置為應用背景,給出了基于CPLD的多SPI端ロ通信技術。 串行同步外設端ロ(SPI)通常也稱為同步外設端ロ,具有信號線少、協(xié)議簡單、傳輸速度快的特點,因此該端ロ被大量用在微控制器與外圍執(zhí)行芯片的通信中。目前SPI通信方式已被普遍接受,帶有SPI端ロ的芯片越來越多,如Flash、RAM、A/D轉換、LED顯示、控制專用DSP芯片等。采用運動控制專用DSP芯片DSP56F801設計了一種超聲波電機運動控制裝置。DSP56F801芯片內(nèi)含ー個SPI通信端ロ。由于該超聲波電機需要采用兩相四路對稱PWM信號來實現(xiàn)驅(qū)動控制,而DSP芯片無法直接產(chǎn)生所需PWM信號,采用軟件方法又會占用大量的DSP計算時間,于是設計了基于可編程邏輯器件(CPLD)的對稱PWM信號發(fā)生器。該信號發(fā)生器在DSP的控制下,可以實現(xiàn)輸出兩相PWM控制信號的占空比及相位差調(diào)節(jié)。同時采用具有SPI接ロ的可編程振蕩器LTC6903,實現(xiàn)在DSP控制下的PWM控制信號頻率調(diào)節(jié)。由此可見,為了實現(xiàn)DSP對PWM控制信號占空比、相位差及頻率的控制,需要采用適當?shù)耐ㄐ欧绞綄崿F(xiàn)DSP與CPLD及LTC6903之間的控制信息傳遞。基于這ー需求,本發(fā)明在分析SPI數(shù)據(jù)傳輸時序關系的基礎上,設計并實現(xiàn)了基于CPLD的多SPI接ロ通信。另外,關于CPLD實現(xiàn)對稱PWM信號發(fā)生器以及超聲波電機驅(qū)動電路等內(nèi)容,可參考申請?zhí)枮?201010286489. 5,201010286490. 8,200710054583. 6 等相關專利文件。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種基于CPLD的SPI通信接ロ,用以實現(xiàn)DSP與CPLD及LTC6903之間的控制信息傳遞問題。
為實現(xiàn)上述目的,本發(fā)明的方案是一種基于CPLD的SPI通信端ロ,包括采用CPLD實現(xiàn)的主機SPI端ロ,以及采用CPLD實現(xiàn)的外設SPI端ロ,主機SPI端ロ用于連接DSP的SPI端ロ,外設SPI端ロ用于連接基于CPLD的PWM信號發(fā)生器和可編程振蕩器的SPI端ロ ;所述主機SPI端ロ包括波特率發(fā)生器和主機移位寄存器,外設SPI端ロ包括外設移位寄存器和鎖存器;主機移位寄存器串行通訊連接外設移位寄存器,外設移位寄存器通過鎖存器,鎖存器用于連接基于CPLD的PWM信號發(fā)生器,主機移位寄存器還連接所述可編程振蕩器的SPI端ロ ;所述波特率發(fā)生器為所述主機移位寄存器、外設移位寄存器、所述可編程振蕩器的SPI端ロ提供同步時鐘信號。所述DSP 為 DSP56F801。所述可編程振蕩器為LTC6903。所述主機移位寄存器和外設移位寄存器均由D觸發(fā)器和計數(shù)器構成。所述鎖存器包括用于分別鎖存A相占空比控制字、B相占空比控制字、調(diào)相控制字3個數(shù)字量的三個鎖存元件(LI、L2、L3)。SPI端ロ通信可以構建用于控制的小型高速同步通信網(wǎng)絡,這種網(wǎng)絡的結構簡單且成本較低,可廣泛應用于控制器與控制器或控制器與外圍芯片之間的控制信息傳遞。本發(fā)明在對SPI端ロ通信時序進行細致分析的基礎上,給出了基于CPLD的多SPI端ロ通信具體實現(xiàn)方法,并進行了實驗驗證,效果良好。
圖I是多SPI端ロ通信框圖;圖2基于CPLD的SPI接ロ的移位寄存器;圖3基于CPLD的SPI接ロ的移位寄存器(局部);圖4是使能/[目號的時序圖(聞電平有效);圖5是進位信號的輸出時序圖;圖6是數(shù)據(jù)選址和鎖存的CPLD結構;圖7是SPI傳輸數(shù)據(jù)波形;圖8是SPI傳輸數(shù)據(jù)波形(加入延時)。
具體實施例方式下面結合附圖對本發(fā)明做進ー步詳細的說明。SPI是ー個同步協(xié)議接ロ,所有的傳輸都參照ー個共同的時鐘。在同一個SPI端ロ可以實現(xiàn)一個主機芯片與多個從機芯片相連,這時主機通過觸發(fā)從設備的片選輸入引腳來選擇從設備,沒有被選中的從設備將不參與SPI傳輸。SPI主要使用4個信號主機輸出/從機輸入(MOSI)、主機輸入/主機輸出(MISO)、串行時鐘信號SCLK和外設芯片選擇信號
(SS)。主機和外設都包含一個串行移位寄存器,主機通過向它的SPI串行移位寄存器寫入一個字節(jié)來發(fā)起一次傳輸。寄存器是通過MOSI引腳將字節(jié)傳送給從設備,從設備也將自己移位寄存器中的內(nèi)容通過MISO信號線返回給主機。這樣,兩個移位寄存器中的內(nèi)容就被交換了。外設的寫操作和讀操作是同步完成的,因此SPI成為ー個很有效的串行通信協(xié)議。本發(fā)明所設計的多SPI端ロ的通信網(wǎng)絡,其結構如圖I所示。為了使信號發(fā)生器輸出可調(diào)頻、調(diào)壓和調(diào)相輸出的兩相四路PWM波,需要DSP向CPLD電路輸出參數(shù),這四個控制參數(shù)的傳遞是在小型的通信網(wǎng)絡中實現(xiàn)。在該網(wǎng)絡中DSP的SPI只是進行數(shù)據(jù)輸出端ロ的寫操作,即輸出電壓控制字、相位控制字和頻率控制字。數(shù)據(jù)流程主機DSP向CPLD傳輸數(shù)據(jù),在傳輸數(shù)據(jù)時,數(shù)據(jù)在MOSI引腳上輸出,同時數(shù)據(jù)在時鐘信號的作用下實現(xiàn)同步移位輸出。由于不需要從機向主機回送任何數(shù)據(jù),主機在數(shù)據(jù)傳輸結束之后,結束這次傳送。由于SPI端ロ工作時沒有應答信號,并且數(shù)據(jù)在發(fā)送時無需校驗位,所以要求主、從器件的數(shù)據(jù)發(fā)送與接收必須完全符合設定的SPI時序要求,否則數(shù)據(jù)傳輸將出現(xiàn)錯誤。
I、移位寄存器設計本發(fā)明設計了ー個12位的SPI串行接收端ロ,即圖I中“移位寄存器”,具體如圖2所示,是由12個D觸發(fā)器Dl D12和I個計數(shù)器CTl組成的,實現(xiàn)數(shù)據(jù)的移位接收和串并轉換。為使圖形清晰,圖3給出了圖2的局部放大圖,圖3中僅給出了前4個D觸發(fā)器Dl D4和計數(shù)器CTl與輸入信號之間的連接關系。每個D觸發(fā)器都具有相似的輸入信號連接關系,將圖3與圖2對照,容易確定其余8個D觸發(fā)器D5 D12的連接關系。參看圖3、圖2,下面以Dl為例來說明信號連接關系。觸發(fā)器Dl的數(shù)據(jù)輸入端D連接移位寄存器的數(shù)據(jù)輸入信號MOSI。參看圖1,MOSI信號由主機(如上述,在本發(fā)明中,主機為DSP)發(fā)出,是長度為16位的串行傳輸數(shù)據(jù),其最高位為Bitl5,最低位為BitO。數(shù)據(jù)傳輸吋,MOSI串行數(shù)據(jù)信號的傳輸順序是,先高位、后低位;即,最先傳送的是最高位Bitl5,隨后依次為Bitl4、Bitl3等,最后是最低位BitO。觸發(fā)器Dl的數(shù)據(jù)輸出端Q作為移位寄存器的一個輸出信號q0,同時,連接到下一個觸發(fā)器D2的數(shù)據(jù)輸入端D,作為D2的輸入數(shù)據(jù)信號。依次類推,觸發(fā)器D2的數(shù)據(jù)輸出 端Q提供移位寄存器的一個輸出信號ql,同時,連接到下一個觸發(fā)器D3的數(shù)據(jù)輸入端D,等等,直到觸發(fā)器Dll的數(shù)據(jù)輸出端Q提供輸出信號qlO,并連接到最后ー個觸發(fā)器D12的數(shù)據(jù)輸入端D,而觸發(fā)器D12的數(shù)據(jù)輸出端Q直接作為移位寄存器的一個輸出信號qll,不再連接到其它觸發(fā)器。這樣,12個D觸發(fā)器Dl D12的12個數(shù)據(jù)輸出端,給出了移位寄存器的12個輸出信號q0 qll。再看觸發(fā)器的其它信號連接關系。所有12個觸發(fā)器的時鐘信號輸入端(圖2、圖3中,觸發(fā)器符號左側居中位置的“ロ”所示)都與來自主機的時鐘信號SCLK連接。時鐘信號SCLK與MOSI串行數(shù)據(jù)信號相對應。SCLK變化ー個周期,MOSI傳送一位數(shù)據(jù)。所有12個觸發(fā)器的使能輸入端ENA(高電平有效)、清零輸入端CLRN(低電平有效)都與移位寄存器的輸入信號ENb相連。輸入信號ENb是數(shù)據(jù)傳送的使能信號,圖4表明了 ENb (圖4下端ch2信號)與SCLK信號(圖4上端chi信號)之間的時序關系。如圖4所示,當MOSI需要開始傳送數(shù)據(jù)時,ENb先變?yōu)楦唠娖?;這樣,按照上述觸發(fā)器使能信號的連接關系,所有12個觸發(fā)器都被使能,準備好接收數(shù)據(jù)。當MOSI數(shù)據(jù)傳送完畢一段時間之后,ENb變?yōu)榈碗娖剑?2個觸發(fā)器的清零輸入端均輸入低電平,觸發(fā)器輸出被清零,準備好進行下一次數(shù)據(jù)傳輸。計數(shù)器CTl為16進制計數(shù)器,其使能輸入端ENl連接ENb,計數(shù)時鐘輸入端CLK連接SCLK,輸出為信號ql2,用作下文所述鎖存器的鎖存使能輸入信號。計數(shù)器CTl對輸入時鐘信號SCLK進行計數(shù),采用上升沿計數(shù)方式。在第16個時鐘信號上升沿到來時,也就是MOSI的16位數(shù)據(jù)傳送完畢的時刻,輸出ql2跳變?yōu)楦唠娖剑瓜挛乃鲦i存器開始鎖存,從而保證數(shù)據(jù)的正確接收和鎖存。圖5表明了 ql2(圖5下端ch2信號)與SCLK信號(圖5上端chi信號)之間的時序關系。數(shù)據(jù)傳輸?shù)木唧w過程為在傳輸數(shù)據(jù)之前,移位寄存器中12個觸發(fā)器、計數(shù)器CTl的初始狀態(tài)均為“清零”狀態(tài),12個輸出信號q0 qll均為O ;計數(shù)器CTl的計算值為0,輸出ql2也為O。為啟動一次16位數(shù)據(jù)的傳輸過程,ENb先變?yōu)楦唠娖?,使?2個D觸發(fā)器和計數(shù)器CT1。隨后,MOSI信號開始串行傳送數(shù)據(jù),傳送順序是先高位后低位;同時,與MOSI信號同步的SCLK信號開始出現(xiàn)高、低變化的時鐘信號。
在時鐘信號SCLK的第一個周期結束時刻,MOSI信號也同時完成了第一位串行數(shù)據(jù)(即,待傳送的16位數(shù)據(jù)中的最高位Bitl5)的傳送。這時,觸發(fā)器Dl的輸出信號qO等于Bitl5 ;觸發(fā)器D2的輸出信號ql等于前ー時刻的q0,即初始的“O”;其后的觸發(fā)器D3 D12的輸出信號q2 qll亦均為O。同時,計數(shù)器CTl的計數(shù)值加1,0+1 = 1,輸出ql2為O0如此類推,在時鐘信號SCLK的第十二個周期結束時刻,觸發(fā)器Dl D12的輸出信號qO qll依次為MOSI輸入16位信號的Bit4 Bitl5位。計數(shù)器CTl的計數(shù)值為12,輸出ql2為O。在時鐘信號SCLK的第十三個周期結束時刻,觸發(fā)器DI D12的輸出信號qO qll依次為MOSI輸入16位信號的Bit3 Bitl4位。S卩,由MOSI輸入的最高位Bitl5被舍棄。在時鐘信號SCLK的第十六個周期結束時刻,觸發(fā)器DI D12的輸出信號qO qll依次為MOSI輸入16位信號的BitO Bitll位。由MOSI輸入的最高四位Bitl2 Bitl5被舍棄。同時,計數(shù)器CTl的計數(shù)值為16,輸出ql2跳變?yōu)楦唠娖?,如圖5所示。至此,一次數(shù)據(jù)傳輸結束,MOSI串行輸入的16位信號的低12位,即BitO Bitll,被轉換為qO qll的并行輸出信號,實現(xiàn)了“串并轉換”。隨后,在下文所述鎖存器對qO qll數(shù)據(jù)鎖存后,ENb變?yōu)榈碗娖?,所?2個觸發(fā)器的清零輸入端均輸入低電平,觸發(fā)器輸出被清零,準備好進行下一次數(shù)據(jù)傳輸。應指出的是,本設計只需要傳輸數(shù)據(jù)中的低12位,故設計為12個D觸發(fā)器,并將高4位數(shù)據(jù)舍去。若需要全部16位數(shù)據(jù),只需在圖2所示電路中再添加4個D觸發(fā)器即可,電路結構不變。同樣,若需實現(xiàn)I 16位的任意位數(shù)的數(shù)據(jù)傳輸,只需增、減圖2所示電路中的D觸發(fā)器個數(shù),使之與期望傳輸?shù)臄?shù)據(jù)位數(shù)相等即可。2、鎖存器設計如圖I結構框圖所示,鎖存器位于上述移位寄存器之后,用來在表征“數(shù)據(jù)已經(jīng)準備好,可以鎖存”的信號ql2的控制下,對移位寄存器的輸出數(shù)據(jù)qO qll進行鎖存操作。最簡單的情況下,鎖存器的設計,只需要將ql2連接到一個鎖存器的鎖存使能輸入端,再將qO qll連接到鎖存器的數(shù)據(jù)輸入端就可以了。當ql2變?yōu)楦唠娖綍r,使能有效,鎖存器對qO qll進行鎖存,于是,鎖存器輸出與qO qll相同。但是,如前所述,本設計需要利用這ー個SPI串行數(shù)據(jù)傳輸通道,實現(xiàn)DSP對PWM信號的占空比、相位差的控制,其中,占空比又分為A相、B相兩個不同的占空比數(shù)值。即,需要傳輸A相占空比控制字、B相占空比控制字、調(diào)相控制字等3個不同的數(shù)據(jù)信息。這樣,為了區(qū)分這3個不同的數(shù)據(jù)信息,設置SPI串行傳送數(shù)據(jù)的低兩位(即上述移位寄存器輸出的ql、q0)為地址選擇位,并定義如下低兩位ql、q0是“11”時,上述移位寄存器輸出的q2 qll是10位的調(diào)相控制字;當?shù)蛢晌籷l、q0是“01”吋,q2 qlO是用來調(diào)節(jié)A相占空比的9位A相占空比控制字;當?shù)蛢晌籷l、q0是“10”時,q2 qlO是用來調(diào)節(jié)B相占空比的9位B相占空比控制字。為實現(xiàn)上述這樣的3種不同數(shù)據(jù)的選擇與分別鎖存,設計了圖6所示的鎖存器電路。圖6中,三個3輸入的與門A1、A2、A3和兩個非門NI、N2,用來實現(xiàn)數(shù)據(jù)選擇操作,其輸入都是ql2、ql、qO。三個與門Al、A2、A3的輸出信號分別連接到對應的鎖存器LI、L2、L3的鎖存使能輸入端gate。當gate輸入信號為高電平時,對輸入數(shù)據(jù)進行鎖存。
三個鎖存器LI、L2、L3依次用來鎖存上述3個不同的數(shù)據(jù)信息10位的調(diào)相控制字、9位的A相占空比控制字、9位的B相占空比控制字。因而,三個鎖存器LI、L2、L3的輸入數(shù)據(jù)端data口分別連接q2 qll(圖6所示q[11..2])、q2 qlO(圖6所示q[10. .2])、q2 qlO (圖 6 所示 q [10. . 2])。而其輸出,分別被稱為 P [9. . O]、ra [8. . O]、rb [8. · O]。應指出的是,根據(jù)不同應用場合所需傳輸數(shù)據(jù)種類、位數(shù)等的不同,只需對上述設計略加修改即可。3、DSP 與 LTC6903 的接 ロ 配置由于LTC6903芯片本身具有SPI接ロ,在設計中需要在DSP的程序中設置相應的SPI寄存器,LTC6903采用上升沿接收,且接收時高位在前。所以需要DSP設置為下降沿傳輸,傳輸時高位在前。在傳輸?shù)倪^程中數(shù)據(jù),在脈沖信號的下降沿時間數(shù)據(jù)發(fā)生變化,傳輸數(shù)據(jù);在脈沖信號的上升沿數(shù)據(jù)穩(wěn)定,便于LTC6903鎖存數(shù)據(jù)。傳輸時序如圖7所示,從圖中可以看出所要傳輸?shù)臄?shù)據(jù)是十六進制數(shù)019A,下降沿數(shù)據(jù)發(fā)生變化,上升沿數(shù)據(jù)穩(wěn)定,傳輸16位數(shù)據(jù),有16個脈沖。實驗結果表明,DSP的配置是與LTC6903的SPI接ロ工作時序 相匹配的。SPI端口數(shù)據(jù)傳輸中,主設備的時鐘信號出現(xiàn)與否決定數(shù)據(jù)傳輸?shù)拈_始。一旦檢測到時鐘信號即開始傳輸,時鐘信號無效后傳輸結束,這期間從設備必須被使能。時鐘信號的起停狀態(tài)很重要。DSP56F801的SPI端ロ的時鐘起停狀態(tài)如表I所示,在設計中設置的SPI控制寄存器的CPOL和CPLA位是“11”。SCLK空閑時為高電平,傳輸中數(shù)據(jù)變化發(fā)生在下降沿,穩(wěn)定在上升沿。表I時鐘信號的起停狀態(tài)和數(shù)據(jù)傳輸格式
權利要求
1.一種基于CPLD的SPI通信端ロ,其特征在于,包括采用CPLD實現(xiàn)的主機SPI端ロ,以及采用CPLD實現(xiàn)的外設SPI端ロ,主機SPI端ロ用于連接DSP的SPI端ロ,外設SPI端ロ用于連接基于CPLD的PWM信號發(fā)生器和可編程振蕩器的SPI端ロ ;所述主機SPI端ロ包括波特率發(fā)生器和主機移位寄存器,外設SPI端ロ包括外設移位寄存器和鎖存器;主機移位寄存器串行通訊連接外設移位寄存器,外設移位寄存器通過鎖存器,鎖存器用于連接基于CPLD的PWM信號發(fā)生器,主機移位寄存器還連接所述可編程振蕩器的SPI端ロ ;所述波特率發(fā)生器為所述主機移位寄存器、外設移位寄存器、所述可編程振蕩器的SPI端ロ提供同步時鐘信號。
2.根據(jù)權利要求I所述的ー種基于CPLD的SPI通信端ロ,其特征在于,所述DSP為DSP56F801。
3.根據(jù)權利要求I或2所述的ー種基于CPLD的SPI通信端ロ,其特征在于,所述可編程振蕩器為LTC6903。
4.根據(jù)權利要求I所述的ー種基于CPLD的SPI通信端ロ,其特征在于,所述主機移位寄存器和外設移位寄存器均由D觸發(fā)器和計數(shù)器構成。
5.根據(jù)權利要求I所述的ー種基于CPLD的SPI通信端ロ,其特征在于,所述鎖存器包括用于分別鎖存A相占空比控制字、B相占空比控制字、調(diào)相控制字3個數(shù)字量的三個鎖存元件。
全文摘要
本發(fā)明涉及一種基于CPLD的SPI通信接口,用以實現(xiàn)DSP與CPLD及其它芯片之間的信息傳遞。包括采用CPLD實現(xiàn)的主機SPI端口,以及采用CPLD實現(xiàn)的外設SPI端口,主機SPI端口用于連接DSP的SPI端口,外設SPI端口用于連接基于CPLD的PWM信號發(fā)生器和可編程振蕩器的SPI端口。采取硬件和軟件相結合的措施,可以確保SPI通信中數(shù)據(jù)流的同步,實現(xiàn)可靠通信。本發(fā)明給出的SPI多端口通信方法基于CPLD實現(xiàn),易移植,易于實現(xiàn)功能擴展,可廣泛應用于各種采用SPI通信方式的自動化裝置。
文檔編號G06F13/38GK102693200SQ20121000890
公開日2012年9月26日 申請日期2012年1月12日 優(yōu)先權日2012年1月12日
發(fā)明者劉博 , 史敬灼, 姚春麗, 徐迎曦, 王曉節(jié) 申請人:河南科技大學