- 相關(guān)推薦
用CPLD實(shí)現(xiàn)DSP與PLX9054之間的連接
摘要:介紹了利用CPLD實(shí)現(xiàn)DSP芯片TMS320C6711b和PCI橋芯片PLX9054之間高速數(shù)據(jù)傳輸?shù)南到y(tǒng)設(shè)計(jì)方法,并給出了相應(yīng)的系統(tǒng)設(shè)計(jì)原理圖,同時(shí)對(duì)該系統(tǒng)的性能進(jìn)行了分析。關(guān)鍵詞:PCI總線(xiàn);TMS320C6711b;HPI(host port interface);局部總線(xiàn);PLX9054
CPLD是一種復(fù)雜的用戶(hù)可編程邏輯器件。它以操作靈活,開(kāi)發(fā)迅速,投資風(fēng)險(xiǎn)低,可多次編程擦寫(xiě)和在系統(tǒng)可編程(In System programmability)等特點(diǎn)而成為一種可優(yōu)化硬件電路設(shè)計(jì)且具競(jìng)爭(zhēng)力的產(chǎn)品。近年來(lái),隨著微電子集成工藝的不斷發(fā)展,各種系列的CPLD可為簡(jiǎn)單PAL綜合設(shè)計(jì)到先進(jìn)實(shí)時(shí)硬件現(xiàn)場(chǎng)升級(jí)等全部范圍內(nèi)的任務(wù)設(shè)計(jì)提供全套的解決方法。本文將給出如何使用Xilinx公司的CPLD器件XC9500LV實(shí)現(xiàn)PLX9054的局部總線(xiàn) (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)合。
圖1
1 設(shè)計(jì)需求
1.1 local bus接口要求
PLX9054是PCI接口專(zhuān)用主從器件,包括通信、網(wǎng)絡(luò)、磁盤(pán)控制、多媒體等高性能接口功能。PLX9054可以以多種方式實(shí)現(xiàn)從pci bus端到local bus端(局部總線(xiàn))的數(shù)據(jù)轉(zhuǎn)移, 如直接傳輸,DMA控制傳輸?shù)。通過(guò)pci bus和local bus之間以六個(gè)可編程FIFO的不同連接可實(shí)現(xiàn)突發(fā)并發(fā)傳輸, 同時(shí)也可通過(guò)串行EEPROM或PCI主控設(shè)備對(duì)PLX9054內(nèi)部的配置寄存器進(jìn)行設(shè)置,其簡(jiǎn)化框圖如圖1所示。圖中,通過(guò)配置EEPROM可設(shè)置PLX9054作為PCI總線(xiàn)的從設(shè)備?工作在C模式下(數(shù)據(jù)、地址總線(xiàn)非復(fù)用),該模式下的local bus數(shù)據(jù)寬度為16bit,同時(shí),通過(guò)使能外部設(shè)備就緒信號(hào)READY還可以禁止無(wú)限爆發(fā)操作(屏蔽BTERM bit)。
Local bus端的讀、寫(xiě)時(shí)序基本相同,圖2所示是其單字讀寫(xiě)操作時(shí)序。以寫(xiě)周期為例,首先,PLX9054通過(guò)置LHOLD信號(hào)有效來(lái)申請(qǐng)local bus的主控權(quán),在收到local bus仲裁的響應(yīng)信號(hào)LHOLDA之后,PLX9054將成為local bus的主控,隨后置ADS信號(hào)為低,使得地址總線(xiàn)信號(hào)LA[31:2]、字節(jié)使能信號(hào)LBE[3:0]和讀寫(xiě)選擇信號(hào)LW/ R 進(jìn)入有效狀態(tài),一個(gè)LCLK周期之后,9054停止驅(qū)動(dòng)ADS,這時(shí),地址總線(xiàn)LA[31:2]上的地址信號(hào)將保持有效直至數(shù)據(jù)線(xiàn)上的數(shù)據(jù)有效并保持一個(gè)LCLK周期。數(shù)據(jù)線(xiàn)LD[15:0]上的數(shù)據(jù)信號(hào)由READY驅(qū)動(dòng), READY表示local bus設(shè)備已經(jīng)準(zhǔn)備好,可以發(fā)送或者接收數(shù)據(jù)。BLAST信號(hào)由PLX9054提供,BLAST信號(hào)為低表示一次傳輸?shù)淖詈笠粋(gè)字節(jié),BLAST的上升沿可用于標(biāo)志一次數(shù)據(jù)傳輸?shù)耐瓿。一個(gè)LCLK周期之后,PLX9054拉低LHOLD?以放棄對(duì)local bus的主控權(quán),此后,local bus仲裁響應(yīng)9054的LHOLD信號(hào),并拉低LHOLDA以收回local bus主控權(quán),這時(shí)的local bus置于閑置狀態(tài)。這里,PLX9054作為local bus主控權(quán)的唯一申請(qǐng)者,只要提出總線(xiàn)申請(qǐng),local bus仲裁就會(huì)立即響應(yīng)該申請(qǐng)。
1.2 HPI口設(shè)計(jì)要求
HPI口是一種數(shù)據(jù)寬度為16bit的并行端口(C64**系列DSP中,HPI口的數(shù)據(jù)寬度達(dá)到32bit)。通過(guò)HPI口,主機(jī)可以直接對(duì)CPU的存儲(chǔ)器空間進(jìn)行操作。在C621*/C671*系列DSP中,沒(méi)有留出專(zhuān)門(mén)的EDMA通道來(lái)執(zhí)行HPI口的訪(fǎng)問(wèn)操作,而是直接將HPI口連接到內(nèi)部的地址產(chǎn)生硬件上,因而提高了對(duì)內(nèi)部存儲(chǔ)空間的訪(fǎng)問(wèn)速度。HPI口內(nèi)部加入了兩個(gè)八級(jí)深度的讀寫(xiě)緩沖,可以執(zhí)行地址自增的讀寫(xiě)操作,提高讀寫(xiě)操作的吞吐量。HPI口為內(nèi)部CPU提供了標(biāo)準(zhǔn)32bit的數(shù)據(jù)接口,同時(shí)為外部主機(jī)也提供了一個(gè)經(jīng)濟(jì)的16bit接口,所以對(duì)外部主機(jī)而言,每次讀寫(xiě)必須執(zhí)行成對(duì)的16bit操作。
(范文先生網(wǎng)m.htc668.com收集整理)
HPI口內(nèi)部有三個(gè)寄存器,分別是控制寄存器(HPIC),地址寄存器(HPIA)和數(shù)據(jù)寄存器(HPID)。這三個(gè)寄存器可以直接被主機(jī)訪(fǎng)問(wèn),主機(jī)每執(zhí)行一次對(duì)CPU內(nèi)部存儲(chǔ)空間的訪(fǎng)問(wèn)都必須先對(duì)控制寄存器和地址寄存器寫(xiě)入相應(yīng)的值,然后才能對(duì)數(shù)據(jù)寄存器進(jìn)行讀寫(xiě)操作。HPI口的外部接口是由數(shù)據(jù)總線(xiàn)HD?15:0?以及一部分用于描述和控制HPI接口的控制信號(hào)組成,這些控制信號(hào)的具體類(lèi)型如下:
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ù)用總線(xiàn)的數(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口的操作,應(yīng)首先使能HCS,變化HDS1或HDS2,可使HSTROBE信號(hào)產(chǎn)生一個(gè)下降沿,HPI口在這個(gè)下降沿采樣控制信號(hào)HCNTL?1:0?、HHWIL和HR/W,同時(shí)在使能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ù)總線(xiàn)HD[15:0]的數(shù)據(jù)并送入HPID,以完成一個(gè)32bit的寫(xiě)入操作。
圖3
對(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ù)載入HPID,HRDY變?yōu)橛行顟B(tài)為止,此時(shí)數(shù)據(jù)線(xiàn)上的數(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ù)讀取。
圖3是HPI的讀、寫(xiě)時(shí)序圖,這里HAS一直接高電平。
2 設(shè)計(jì)實(shí)現(xiàn)
該系統(tǒng)中CPLD的功能主要是完成local bus端和HPI端口之間控制信號(hào)和數(shù)據(jù)總線(xiàn)的連接,并保證數(shù)據(jù)傳輸?shù)目煽啃。通過(guò)以上對(duì)local bus和HPI讀寫(xiě)時(shí)序的分析可見(jiàn),一些關(guān)鍵信號(hào),如HCS、READY、HRDY的時(shí)序設(shè)計(jì)很重要,實(shí)際上,整個(gè)CPLD設(shè)計(jì)的主要任務(wù)也是圍繞這幾個(gè)信號(hào)的設(shè)計(jì)展開(kāi)的。
圖4
由HCS、HDS1和HDS2共同作用產(chǎn)生的HPI口內(nèi)部信號(hào)HSTROBE的上升沿和下降沿,直接控制著送入HPI端口的數(shù)據(jù)信號(hào)和控制信號(hào),而且HSTROBE變化速率決定了數(shù)據(jù)傳輸?shù)乃俾,由此可?jiàn),該信號(hào)是一個(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)備。設(shè)計(jì)時(shí),可用HDS1或HDS2中的一個(gè)固定接至高電平,另一個(gè)用來(lái)控制HSTROBE以產(chǎn)生上升沿和下降沿。筆者在設(shè)計(jì)時(shí)將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í),HDS2信號(hào)同ADS信號(hào)保持一致,并在ADS的下降沿采樣控制信號(hào),在上升沿采樣數(shù)據(jù)信號(hào)。另外,在一次傳輸開(kāi)始之前和結(jié)束之后,HDS2都要保持為高電平。
對(duì)于其它一些控制信號(hào)(如高低字節(jié)標(biāo)志信號(hào)HHWIL),由于它們是隨著HSTROBE上升沿的出現(xiàn)不斷產(chǎn)生0和1的交替變化,所以,可用HDS2作為時(shí)鐘輸入的兩分頻電路來(lái)產(chǎn)生HHWIL;而local bus申請(qǐng)應(yīng)答信號(hào)LHOLDA,則可由LHOLD信號(hào)經(jīng)一個(gè)LCLK的延遲后輸出產(chǎn)生;HCNTL[0:1]接兩根地址線(xiàn),以便由上層驅(qū)動(dòng)程序來(lái)控制對(duì)HPI口內(nèi)部不同寄存器的訪(fǎng)問(wèn),并由LW/ R接反相器來(lái)產(chǎn)生R/ W信號(hào)。其原理圖如圖4所示。
3 結(jié)束語(yǔ)
本文提供的這種設(shè)計(jì)方法經(jīng)過(guò)實(shí)際運(yùn)行檢驗(yàn),可以保證PLX9054和DSP之間的可靠連接,且邏輯關(guān)系簡(jiǎn)單。由于數(shù)據(jù)線(xiàn)可以完全獨(dú)立于CPLD之外直接連接,可有效節(jié)約成本,因而具有較高的實(shí)用價(jià)值和經(jīng)濟(jì)價(jià)值。
【用CPLD實(shí)現(xiàn)DSP與PLX9054之間的連接】相關(guān)文章:
基于DSP與CPLD的I2C總線(xiàn)接口的設(shè)計(jì)與實(shí)現(xiàn)08-06
CPLD在DSP系統(tǒng)中的應(yīng)用設(shè)計(jì)08-06
用CPLD實(shí)現(xiàn)單片機(jī)讀寫(xiě)模塊08-06
用FIFO設(shè)計(jì)A/D與DSP之間的接口08-06
DSP與慢速設(shè)備接口的實(shí)現(xiàn)08-06
用CPLD實(shí)現(xiàn)嵌入式平臺(tái)上的實(shí)時(shí)圖像增強(qiáng)08-06
用CPLD實(shí)現(xiàn)嵌入式平臺(tái)上的實(shí)時(shí)圖像增強(qiáng)08-06