《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 用CPLD實(shí)現(xiàn)DSP與PLX9054之間的連接
用CPLD實(shí)現(xiàn)DSP與PLX9054之間的連接
摘要: CPLD為設(shè)計(jì)任務(wù)從最簡(jiǎn)單的PAL綜合設(shè)計(jì)到先進(jìn)的實(shí)時(shí)硬件現(xiàn)場(chǎng)升級(jí)提供了全套的解決方法,。本文討論如何使用Xilinx公司的CPLD器件XC9500LV實(shí)現(xiàn)PLX9054的局部總線 (local bus)和DSP的HPI口之間的實(shí)時(shí)通信,。采用這種設(shè)計(jì)可以以單字或DMA方式完成主機(jī)與DSP之間的高速數(shù)據(jù)傳輸,,傳輸速率達(dá)到16Mb/s??梢詰?yīng)用于實(shí)時(shí)的圖形,、圖像及動(dòng)畫(huà)處理場(chǎng)合。
關(guān)鍵詞: CPLD DSP PLX9054
Abstract:
Key words :

設(shè)計(jì)需求

local bus接口要求

PLX9054是PCI接口專(zhuān)用主從器件,,包括通信,、網(wǎng)絡(luò)、磁盤(pán)控制,、多媒體等高性能接口功能,。PLX9054可以以多種方式實(shí)現(xiàn)從pci總線端到局部總線端的數(shù)據(jù)轉(zhuǎn)移,如直接傳輸,,DMA控制傳輸?shù)?。pci總線和局部總線之間以6個(gè)可編程FIFO連接,可實(shí)現(xiàn)突發(fā)并行傳輸,。通過(guò)串行EEPROM或PCI主控設(shè)備對(duì)PLX9054內(nèi)部的配置寄存器進(jìn)行設(shè)置,。通過(guò)配置EEPROM,設(shè)置PLX9054作為PCI總線的從設(shè)備,,工作在C模式下(數(shù)據(jù),、地址總線非復(fù)用),局部總線數(shù)據(jù)寬度為16bit,,并使能外部設(shè)備就緒信號(hào)READY,,禁止無(wú)限爆發(fā)操作(屏蔽BTERM bit)。

局部總線端的讀,、寫(xiě)時(shí)序基本相同,。以寫(xiě)周期為例說(shuō)明。首先,,PLX9054通過(guò)置LHOLD信號(hào)有效來(lái)申請(qǐng)局部總線的主控權(quán),,在收到局部總線仲裁的響應(yīng)信號(hào)LHOLDA之后,PLX9054成為局部總線的主控,。隨后置ADS#信號(hào)為低,,使得地址總線信號(hào)LA[31:2]、字節(jié)使能信號(hào)LBE[3:0]和讀寫(xiě)選擇信號(hào)LW/R#進(jìn)入有效狀態(tài),。一個(gè)LCLK周期之后,,PLX9054停止驅(qū)動(dòng)ADS#。這時(shí),,地址總線LA[31:2]上的地址信號(hào)將保持有效,,直至數(shù)據(jù)線上的數(shù)據(jù)有效,并保持一個(gè)LCLK周期,。數(shù)據(jù)線LD[15:0]上的數(shù)據(jù)信號(hào)由READY#驅(qū)動(dòng),,在讀,、寫(xiě)操作周期,READY#分別表示局部總線設(shè)備已經(jīng)準(zhǔn)備好發(fā)送或者接收數(shù)據(jù),。BLAST#信號(hào)由PLX9054提供,,BLAST#信號(hào)為低,表示一次傳輸?shù)淖詈笠粋€(gè)字節(jié),,BLAST#的上升沿標(biāo)志一次數(shù)據(jù)傳輸完成,。一個(gè)LCLK周期之后,PLX9054拉低LHOLD,,放棄對(duì)局部總線的主控權(quán),。局部總線仲裁響應(yīng)PLX9054的LHOLD信號(hào),拉低LHOLDA,,收回局部總線主控權(quán),,這時(shí)的局部總線置于閑置狀態(tài)。這里,,PLX9054作為局部總線主控權(quán)的唯一申請(qǐng)者,,只要提出總線申請(qǐng),局部總線仲裁就立即響應(yīng)該申請(qǐng),。

HPI設(shè)計(jì)要求

HPI是一種數(shù)據(jù)寬度為16bit的并行端口,,通過(guò)HPI,主機(jī)可以直接對(duì)CPU的存儲(chǔ)器空間進(jìn)行操作,。HPI內(nèi)部加入了兩個(gè)8級(jí)深度的讀寫(xiě)緩沖,,可以執(zhí)行地址自增的讀寫(xiě)操作,提高了讀寫(xiě)操作的吞吐量,。HPI為內(nèi)部CPU提供了標(biāo)準(zhǔn)32bit的數(shù)據(jù)接口,,而它為外部主機(jī)提供了一個(gè)經(jīng)濟(jì)的16bit接口,所以對(duì)外部主機(jī)而言,,每次讀寫(xiě)必須執(zhí)行成對(duì)的16bit操作,。

HPI內(nèi)部有3個(gè)寄存器,分別是控制寄存器(HPIC),,地址寄存器(HPIA)和數(shù)據(jù)寄存器(HPID),。這3個(gè)寄存器可以直接被主機(jī)訪問(wèn),,主機(jī)每執(zhí)行一次對(duì)CPU內(nèi)部存儲(chǔ)空間的訪問(wèn),,都必須先對(duì)控制寄存器和地址寄存器寫(xiě)入相應(yīng)的值,然后才能對(duì)數(shù)據(jù)寄存器進(jìn)行讀寫(xiě)操作,。HPI的外部接口由數(shù)據(jù)總線HD[15:0]以及一部分用于描述和控制HPI的控制信號(hào)組成,,這些控制信號(hào)包括:

HCNTL[1:0]:控制HPI的操作類(lèi)型。
HHWIL:半字確認(rèn)輸入,,“0”,,“1”分別表示一次字傳輸?shù)牡谝粋€(gè)半字和第二個(gè)半字,。
HR/W#:讀/寫(xiě)選擇。
HRDY#:就緒狀態(tài)標(biāo)志,。
HINT#:中斷標(biāo)志,,DSP向主機(jī)提中斷。
HAS#:區(qū)別地址/數(shù)據(jù)復(fù)用總線的數(shù)據(jù)與地址,。
HDS1#,,HDS2#,HCS#:數(shù)據(jù)選通輸入,,共同作用產(chǎn)生一個(gè)HPI內(nèi)部選通信號(hào)HSTROBE#:
HSTROBE# = [NOT(HDS1# XOR HDS2#)] OR HCS#,。

對(duì)于一個(gè)寫(xiě)HPI的操作,首先使能HCS#,,變化HDS1#或HDS2#,,使得HSTROBE#信號(hào)產(chǎn)生一個(gè)下降沿。HPI這個(gè)下降沿采樣控制信號(hào)HCNTL[1:0],、HHWIL和HR/W#,,使能HCS#的同時(shí),扇出HRDY#,。主機(jī)進(jìn)入等待狀態(tài),,直到HRDY#產(chǎn)生下降沿,表明HPID已清空,,可以接收新的數(shù)據(jù),。這時(shí)HSTROBE#產(chǎn)生一個(gè)上升沿,采樣HD[15:0]上的數(shù)據(jù)送入HPID,,完成第一個(gè)半字的寫(xiě)入,。對(duì)于第二個(gè)半字的寫(xiě)入,由于32bit的HPID已經(jīng)清空,,可以直接寫(xiě)入數(shù)據(jù),,不會(huì)出現(xiàn)未準(zhǔn)備好的情況,所以HRDY#一直保持為低,。與第一個(gè)字節(jié)的寫(xiě)入相同,,在HSTROBE#的下降沿采樣控制信號(hào),HSTROBE#的上升沿采樣數(shù)據(jù)總線HD[15:0]的數(shù)據(jù)送入HPID,,完成一個(gè)32bit的寫(xiě)入操作,。

對(duì)于讀HPI的操作,當(dāng)HCS#變成有效,,在主機(jī)不采用地址自增方式從HPID執(zhí)行讀操作時(shí)(case1),,HPI會(huì)向內(nèi)部地址產(chǎn)生硬件送一個(gè)讀請(qǐng)求。HCS#的下降沿使得HRDY#變?yōu)楦唠娖?,直到?nèi)部地址產(chǎn)生硬件將請(qǐng)求的數(shù)據(jù)裝載進(jìn)HPID,,HRDY#變?yōu)橛行顟B(tài),。數(shù)據(jù)線上的數(shù)據(jù)為讀出的數(shù)據(jù),該數(shù)據(jù)保持有效,,直到HSTROBE#上升沿采樣數(shù)據(jù)后的10ns左右,。在第二次讀操作開(kāi)始時(shí),數(shù)據(jù)已經(jīng)出現(xiàn)在HPID上了,,因此,,第二個(gè)半字的讀操作將不會(huì)遇到未準(zhǔn)備好的情況。在HPID以地址自增的方式進(jìn)行讀操作時(shí),,HCS#在整個(gè)多個(gè)字節(jié)的傳輸過(guò)程中始終保持有效,,一旦完成現(xiàn)在的讀操作,下一地址的數(shù)據(jù)馬上被取出,。因此,,完成現(xiàn)在讀操作的第二個(gè)半字的傳輸之后(在HSTROBE#的第二個(gè)上升沿),由HSTROBE#的下降沿(通過(guò)變化HDS1#或者HDS2#來(lái)產(chǎn)生)扇出HRDY#信號(hào),,用于指示HPI正忙于數(shù)據(jù)的預(yù)讀取,。

設(shè)計(jì)實(shí)現(xiàn)

CPLD的功能是要完成局部總線端和HPI端口之間控制信號(hào)和數(shù)據(jù)總線的連接,并保證數(shù)據(jù)傳輸?shù)目煽啃?。通過(guò)以上對(duì)局部總線和HPI的讀寫(xiě)時(shí)序的分析得知,,一些關(guān)鍵信號(hào),例如HCS#,、READY#和HRDY#的時(shí)序設(shè)計(jì)很重要,,整個(gè)CPLD設(shè)計(jì)的主要任務(wù)也是圍繞這幾個(gè)信號(hào)的設(shè)計(jì)展開(kāi)的。

由HCS#,、HDS1#和HDS2#共同作用產(chǎn)生的HPI口內(nèi)部信號(hào)HSTROBE#的上升沿和下降沿直接控制著送入HPI端口的數(shù)據(jù)信號(hào)和控制信號(hào),,并且HSTROBE#變化的速率決定了數(shù)據(jù)傳輸?shù)乃俾剩虼怂且粋€(gè)非常關(guān)鍵的信號(hào),。這里,,HCS#信號(hào)作為字節(jié)傳輸標(biāo)志信號(hào),在一次數(shù)據(jù)傳輸?shù)倪^(guò)程中始終保持有效,。數(shù)據(jù)傳輸結(jié)束之后,,將HCS#拉高,從而控制HRDY#信號(hào)恢復(fù)到初始狀態(tài),,為下一次讀寫(xiě)操作做好準(zhǔn)備,。HDS1#或者HDS2#中的一個(gè)固定接高電平,變化另外一個(gè)來(lái)控制HSTROBE#產(chǎn)生上升沿和下降沿,。這里將HDS1#固定接高電平,,由ADS#和HRDY#信號(hào)產(chǎn)生邏輯來(lái)控制HDS2#信號(hào),。當(dāng)HRDY#處于無(wú)效狀態(tài),,即HPI端口未準(zhǔn)備就緒時(shí),,HDS2#信號(hào)不變,不采樣任何信號(hào),;當(dāng)HRDY#有效時(shí),,HCS2#信號(hào)同ADS#信號(hào)保持一致,在ADS#的下降沿采樣控制信號(hào),,上升沿采樣數(shù)據(jù)信號(hào),。另外,在一次傳輸開(kāi)始之前和結(jié)束之后,,HDS2#都要保持為高電平,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。