用雙端口RAM實(shí)現(xiàn)與PCI總線接口的數(shù)據(jù)通訊
采用雙端口RAM實(shí)現(xiàn)DSP與PCI總線芯片之間的數(shù)據(jù)交換接口電路。
本文引用地址:http://www.ex-cimer.com/article/83198.htm提出了一種使用CPLD解決雙端口RAM地址譯碼和PCI接口芯片局部總線仲裁的的硬件設(shè)計(jì)方案,并給出了PCI總線接口芯片寄存器配置實(shí)例,介紹了軟件包WinDriver開發(fā)設(shè)備驅(qū)動(dòng)程序的具體過程。
隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,為滿足外設(shè)間以及外設(shè)與主機(jī)間的高速數(shù)據(jù)傳輸,Intel公司于1991年提出了PCI總線概念。PCI總線是一種能為主CPU及外設(shè)提供高性能數(shù)據(jù)通訊的總線,其局部總線在33MHz總線時(shí)鐘、32位數(shù)據(jù)通路時(shí),數(shù)據(jù)傳輸速率最高可達(dá)133Mbps。實(shí)際應(yīng)用中,可通過PCI總線實(shí)現(xiàn)主機(jī)與外部設(shè)備的高速數(shù)據(jù)傳輸,有效解決數(shù)據(jù)的實(shí)時(shí)傳輸和存儲(chǔ)問題,為信號(hào)的實(shí)時(shí)處理打下良好基礎(chǔ)。
本文主要提供一種基于PCI總線的數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)方案,其中雙口RAM起橋梁作用,完成上位機(jī)與外圍主控單元之間的數(shù)據(jù)握手。
1 雙端口RAM實(shí)現(xiàn)PCI總線接口方案
本系統(tǒng)主要用于解決上位機(jī)與外圍控制單元的數(shù)據(jù)傳輸問題。上位機(jī)運(yùn)行信息診斷程序,通過PCI總線與外圍控制單元以一定速率傳輸數(shù)據(jù),在主機(jī)中實(shí)時(shí)監(jiān)控并保存數(shù)據(jù)。由于實(shí)現(xiàn)高速實(shí)時(shí)數(shù)據(jù)傳輸,數(shù)據(jù)量大,所以在PCI局部總線上插入一個(gè)高速雙端口RAM。雙端口RAM一端作為PCI總線接口的本地端存儲(chǔ)器,一端作為DSP目標(biāo)存儲(chǔ)器。需要傳輸保存的數(shù)據(jù)經(jīng)DSP處理后借助雙端口RAM和PCI總線接口完成了上位機(jī)與DSP的數(shù)據(jù)握手。本文提出的雙端口RAM實(shí)現(xiàn)PCI總線接口方案如圖1。
考慮到PCI總線接口對(duì)局部總線的控制時(shí)序比較復(fù)雜,需要譯碼和控制電路來實(shí)現(xiàn)局部總線的訪問及控制。本系統(tǒng)使用CPLD解決雙口RAM的地址訪問競(jìng)爭(zhēng)沖突問題。需解決的主要問題有:①PCI接口電路設(shè)計(jì);②CPLD地址譯碼和總線仲裁;③PCI總線驅(qū)動(dòng)程序開發(fā)。
2 PCI接口電路設(shè)計(jì)
PCI卡的設(shè)計(jì)一般采用兩種方案。一種是根據(jù)PCI協(xié)議在FPGA或CPLD中實(shí)現(xiàn)PCI總線接口控制器,但是由于PCI協(xié)議的復(fù)雜性,使得開發(fā)難度大、周期長(zhǎng);另一種使用現(xiàn)成的PCI接口芯片,用戶開發(fā)難度降低,只把重點(diǎn)放在PCI接口芯片局部總線的接口設(shè)計(jì)和PCI總線配置空間的初始化,而不用速度考慮PCI總線規(guī)范上眾多的協(xié)議規(guī)范,加快了開發(fā)時(shí)間。
本數(shù)據(jù)傳輸系統(tǒng)使用PLX公司的PCI 9030總線接口芯片,以CPLD完成邏輯控制及與外設(shè)的連接,整個(gè)系統(tǒng)的硬件框圖如圖 2。其中雙端口RAM采用IDT71V321,CPLD選用XILINX公司的XC9536CPLD芯片,EEPROM選用NS公司的93CS56,控制單元DSP選用TMS 320LF2407A。
2.1 PCI 9030內(nèi)部結(jié)構(gòu)及其數(shù)據(jù)傳輸
PCI 9030是PLX公司開發(fā)的PCI總線目標(biāo)接口芯片。其特點(diǎn):低功耗,PQFP176針封裝,符合PCI V2.2規(guī)范;在PCI總線上是從設(shè)備,但在局部總線上是主設(shè)備;PCI 9030支持突發(fā)傳輸,有5個(gè)PCI總線到局部總線地址空間,9個(gè)可編程的通用I/O,4個(gè)可編程的片選,支持熱插拔。PCI 9030主要由PCI總線接口邏輯、局部總線接口邏輯、串行E2PROM接口邏輯和內(nèi)部邏輯組成,結(jié)構(gòu)框圖見圖3。
PCI 9030支持PCI主設(shè)備直接訪問局部總線上的設(shè)備,數(shù)據(jù)傳輸方式分為內(nèi)存映射的突發(fā)傳輸和I/O映射的單次傳輸,并且由PCI基址寄存器設(shè)置在PCI內(nèi)存和I/O空間中的合適位置,另外局部映射寄存器允許PCI地址空間轉(zhuǎn)換到局部地址空間。
2.2 配置實(shí)例
系統(tǒng)訪問的雙口RAM存儲(chǔ)空間為2KB,要求將這個(gè)存儲(chǔ)器空間映射到局部地址空間0,采用內(nèi)存方式映射,存儲(chǔ)器的數(shù)據(jù)寬度為 8位,并且不采用突發(fā)傳輸,讀寫時(shí)不可預(yù)取。下面介紹這個(gè)地址空間各個(gè)寄存器的具體配置過程。
(1)配置地址范圍寄存器
根據(jù)PCI配置寄存器與LAS0RR的對(duì)應(yīng)關(guān)系以及雙口RAM的地址空間800H,取7FFH的補(bǔ)碼得到FFFFF800H。又因?yàn)榘凑赵O(shè)計(jì)要求,要映射到內(nèi)存空間的任何位置并且設(shè)置為不可預(yù)取的,這樣LASORR寄存器后3位應(yīng)該為000H。所以LAS0RR的值應(yīng)該最終確定為FFFFF800H。
(2)配置基址寄存器
該寄存器的基址必須是地址空間范圍的整數(shù)倍,在本例中必須是2K的整數(shù)倍,可將基地址定為 00004000H,又由于基址寄存器位0為空間使能位,所以應(yīng)將這一位設(shè)置1;至于位 2、位3,由于是映射到內(nèi)存空間,設(shè)為00H即可。所以LAS0BA的值最終被確定為00004001H。
評(píng)論