<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 一種基于CPLD的單片機與PCI接口設計方案

一種基于CPLD的單片機與PCI接口設計方案

作者: 時(shí)間:2009-11-11 來(lái)源:網(wǎng)絡(luò ) 收藏

內設有13個(gè)8位寄存器用來(lái)保存進(jìn)行一次PCI總線(xiàn)讀寫(xiě)時(shí)所需要的數據,其中pci_address0~pci_address3是讀寫(xiě)時(shí)的地址數據;

一種基于CPLD的單片機與PCI接口設計方案

圖1 簡(jiǎn)化的PCI寫(xiě)操作時(shí)序

pcidatas0~pci_datas3是要往PCI設備寫(xiě)的數據;pci_cbe[3~0]保存地址周期時(shí)的總線(xiàn)命令;pci_cbe[7~4]保存數據周期時(shí)的字節使能命令;pci_data0~pci_data3保存從PCI設備返回的數據;pci_request是PCI總線(xiàn)讀寫(xiě)操作狀態(tài)寄存器,用于向返回一些信息。當往pci_cbe寄存器寫(xiě)入一個(gè)字節的時(shí)候,會(huì )復位中的狀態(tài)機,觸發(fā)進(jìn)行PCI總線(xiàn)的讀寫(xiě)操作;則通過(guò)查詢(xún)pci_request寄存器得知讀寫(xiě)操作完成,再從pci_data寄存器讀出PCI設備返回的數據。

CPLD中狀態(tài)機的狀態(tài)轉移圖如圖2所示。每一個(gè)狀態(tài)對應FRAME與IRD信號的一種輸出,而其它輸入輸出信號線(xiàn)可由這兩個(gè)信號線(xiàn)和pci_cbe的值及TRDY的狀態(tài)決定。當FRAME為有效時(shí),AD[31~0]由pci_address驅動(dòng),而C/BE[3~0]由pci_cbe低4位驅動(dòng);當IRDY有效時(shí),C/BE[3~0]視總線(xiàn)命令,要么由pci_cbe高4位驅動(dòng),要么設為高阻態(tài),而AD[31~0]在pci_cbe[0]為“0” (PCI讀命令)時(shí),設為高阻態(tài),而在pci_cbe[0]為“1” (PCI寫(xiě)命令)時(shí)由pci_datas驅動(dòng)。另外一方面,一旦TRDY信號線(xiàn)變?yōu)榈碗娖?,AD[31~0]線(xiàn)上的數據被送入pci_data寄存器,而C/BE[3~0]線(xiàn)上的數據被送入pci_request寄存器的低4位。

狀態(tài)轉移圖

圖2 狀態(tài)轉移圖

考慮到在不正常情況下,PCI設備不會(huì )對PCI總線(xiàn)作出響應,即TRDY不會(huì )有效,為了不使狀態(tài)機陷入狀態(tài)S2的僵持局面,另外增設了一個(gè)移位計

數器mycounter。當IRD信號有效時(shí),計數器開(kāi)始計數。計數溢出之后,不論PCI總線(xiàn)操作是否完成,狀態(tài)機都會(huì )從狀態(tài)S2轉移到狀態(tài)S3,即結束PCI總線(xiàn)操作。當TRDY有效時(shí),會(huì )立即置位mycounter.cout。

PCI總線(xiàn)操作是否正確完成,可查詢(xún)pci_request的最高位是否為“1”,而IRDY與FRAME的值可分別查詢(xún)pci_request的第4位和第5位。這兩位反映了PCI總線(xiàn)操作所處的狀態(tài),兩位都為“1”時(shí)可以認為PCI總線(xiàn)操作已經(jīng)完成。在實(shí)踐中,如果單片機的速度不是足夠快的話(huà),可以認為PCI總線(xiàn)操作總是即時(shí)完成的。

2 PCI接口實(shí)現

2.1 CPLD VHDL程序

我們針對8位單片機控制PCI以太網(wǎng)卡進(jìn)行了程序,CPLD器件選用Xilinx的XC95216系列。針對以太網(wǎng)卡的特點(diǎn)在邏輯上進(jìn)行了再次簡(jiǎn)化,最終程序將適配進(jìn)XC95261芯片中,并在實(shí)踐中檢驗通過(guò)。

以太網(wǎng)卡僅支持對配置空間和I/O空間的讀寫(xiě)操作,而且這兩個(gè)空間的地址都可以設置在0xFF以?xún)?,所以可以只用一個(gè)pci_address0寄存器,其它地址都直接設為“0”;如果再限制,每次只往網(wǎng)卡寫(xiě)入一個(gè)字節數據,則可以只用一個(gè)pci_datas0寄存器,其它數值在具體操作時(shí)設成與pci_datas0寄存器的一樣即可。



關(guān)鍵詞: CPLD 單片機 PCI接口 設計

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>