www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]當(dāng)前,隨著嵌入式行業(yè)的不斷發(fā)展,許多公司都提出了新型的計(jì)算機(jī)高速總線,如Arapahoe總線標(biāo)準(zhǔn)和HyperTransport技術(shù),但各協(xié)議互不兼容,沒有形成統(tǒng)一標(biāo)準(zhǔn)。作為傳統(tǒng)的通用局部總線,PCI總線仍然占據(jù)著主流個(gè)人電腦市場,具有頑強(qiáng)的生命力。

當(dāng)前,隨著嵌入式行業(yè)的不斷發(fā)展,許多公司都提出了新型的計(jì)算機(jī)高速總線,如Arapahoe總線標(biāo)準(zhǔn)和HyperTransport技術(shù),但各協(xié)議互不兼容,沒有形成統(tǒng)一標(biāo)準(zhǔn)。作為傳統(tǒng)的通用局部總線,PCI總線仍然占據(jù)著主流個(gè)人電腦市場,具有頑強(qiáng)的生命力。

現(xiàn)在市面上存在著各種PCI接口芯片,如AMCC公司的S5933,PLX的9080系列等。專用芯片可以實(shí)現(xiàn)完整的PCI主設(shè)備與從設(shè)備模式的接口功能,將復(fù)雜的PCI總線接口轉(zhuǎn)化相對簡單的用戶接口,但系統(tǒng)結(jié)構(gòu)受接口芯片的限制,不能靈活地設(shè)計(jì)目標(biāo)系統(tǒng),且成本較高。本文使用符合PCI電氣特性的FPGA芯片進(jìn)行簡化的PCI接口邏輯設(shè)計(jì),實(shí)現(xiàn)了33MHz、32位數(shù)據(jù)寬度的PCI從設(shè)備模塊的接口功能,節(jié)約了系統(tǒng)的邏輯資源,且可以將其它用戶邏輯集成在同一塊芯片,降低了成本,增加了設(shè)計(jì)的靈活性。另外,還給出了Windows9x系統(tǒng)下的設(shè)備驅(qū)動(dòng)程序,可以與應(yīng)用程序接口,形成一個(gè)完整的系統(tǒng)。目前,本系統(tǒng)已經(jīng)被印染企業(yè)應(yīng)用在數(shù)據(jù)采集和處理等方面。

1 系統(tǒng)構(gòu)成與功能描述

系統(tǒng)的總體框圖如圖1所示。

由圖1可見,系統(tǒng)的硬件平臺為一塊PCI卡。此卡的結(jié)構(gòu)十分簡潔,主要由FPGA芯片、RAM芯片和輸出接口三部分組成。其中,F(xiàn)PGA芯片集成了PCI接口模塊和數(shù)據(jù)處理模塊。PCI接口模塊實(shí)現(xiàn)了33MHz工作時(shí)鐘、32位總線寬度的接口功能,支持I/O空間、內(nèi)存空間及配置空間的讀寫和PCI中斷功能。由于簡化的PCI接口占用的邏輯資源較少,可在同一塊芯片中集成其他用戶邏輯。作為一個(gè)應(yīng)用實(shí)例,本文加入了一個(gè)數(shù)據(jù)處理模塊,對PCI接口傳送來的數(shù)據(jù)進(jìn)行處理,通過片外的輸出接口輸出到下位機(jī)。RAM芯片為數(shù)據(jù)處理提供緩存功能。


2 從設(shè)備模式下的簡化PCI協(xié)議的實(shí)現(xiàn)

為了實(shí)現(xiàn)PCI接口的基本功能,必須完成以下幾個(gè)模塊:

(1)PCI配置空間設(shè)置。PCI協(xié)議支持三種地址空間:I/O空間、內(nèi)存空間和配置空間。配置空間提供了支持PCI設(shè)備自動(dòng)配置的機(jī)制,是必需的。

(2)PCI從設(shè)備狀態(tài)機(jī)。PCI總線狀態(tài)機(jī)是具有PCI總線的計(jì)算機(jī)系統(tǒng)狀態(tài)流,是由一個(gè)已知狀態(tài)到另一個(gè)狀態(tài)的條件、時(shí)序的描述。這是PCI接口設(shè)計(jì)中最基本也是最重要的部分。

(3)地址譯碼和命令譯碼。地址譯碼用來確定PCI設(shè)備是否應(yīng)當(dāng)響應(yīng)當(dāng)前總線的操作;命令譯碼則用來指示PCI設(shè)備根據(jù)不同的總線命令作出相應(yīng)的動(dòng)作。

本文采用ALTERA公司的Max+PlusII軟件平臺,硬件描述語言使用ALTERA HDL語言,也可以方便地轉(zhuǎn)換民VHDL或VerilogHDL語言。在此之前,先引入PCI總線信號的定義。

2.1 總線信號定義

根據(jù)PCI總線協(xié)議2.2版,從設(shè)備模式下PCI接口至少包含47根引腳。圖2給出了按功能劃分的引腳分布,左邊是必需引腳。右邊是可選引腳。為簡化起見,本文采用了如下引腳,其他引腳均不使能或置為高阻態(tài)。

(1)由系統(tǒng)提供的33MHz的同步時(shí)鐘信號CLK和復(fù)位信號RST#(#表示低電平有效);

(2)關(guān)于數(shù)據(jù)傳輸?shù)暮诵男盘枺?2位地址/數(shù)據(jù)復(fù)用線AD[31:0]、總線命令/字節(jié)使能復(fù)用線C/BE[3:0]#和偶校驗(yàn)信號PAR;

(3)接口控制信號FRAME#、TRDY#、IRDY#、STOP#、DEVSEL#和IDSEL。其中,F(xiàn)RAME#為數(shù)據(jù)傳輸起止信號,TRDY#為主設(shè)備準(zhǔn)備好信號,IRDY#為從設(shè)備準(zhǔn)備好信號,STOP#為從設(shè)備停止請求信號,DEVSEL#為設(shè)備選擇信號,IDSEL為配置空間讀寫時(shí)的片選信號;

(4)中斷引腳INTA#。

為簡化PCI協(xié)議,本文只實(shí)現(xiàn)了最重要的總線命令,表1給出了所支持的總線命令對應(yīng)的C/BE[3:0]#編碼值。

表1 支持的總線命令

2.2 配置空間設(shè)置

配置空間大小為256字節(jié),前64字節(jié)必需,記錄了PCI設(shè)備的基本住處,比較重要的有:

(1)VendorID、DeviceID和Class Code域:分別表示設(shè)備的生產(chǎn)廠商、設(shè)備編號和類型;

(2)Command和Status域:分別給出了對PCI設(shè)備的控制命令和當(dāng)前狀態(tài);

(3)Base Adress Register域:指示此PCI設(shè)備按I/O方式還是內(nèi)存方式進(jìn)行讀寫以及需要的地址空間大小;

(4)Interrupt Line和Interrupt Pin域:分別指明了設(shè)備使用的斷號和中斷引腳。

在對配置空間的訪問中,用AD[7:2]尋址一個(gè)雙字DWORD。在本設(shè)計(jì)中,配置空間設(shè)置如表2所示。

2.3 簡化的從設(shè)備狀態(tài)機(jī)

在PCI協(xié)議中,標(biāo)準(zhǔn)的從設(shè)備狀態(tài)機(jī)包含五種狀態(tài),而且各狀態(tài)的跳轉(zhuǎn)條件比較復(fù)雜。本文在不違反PCI協(xié)議的前提下,簡化了從設(shè)備的狀態(tài)機(jī),如圖3所示。

圖3中,狀態(tài)轉(zhuǎn)移條件信號a、b、c定義如下:a代表配置空間訪問條件,b代表I/O空間或內(nèi)存空間訪問條件,c代表總線傳輸開始條件。這三個(gè)條件的實(shí)現(xiàn)由后面的命令譯碼模塊給出。

表2 配置空間設(shè)置(均為十六進(jìn)制)

IDLE是系統(tǒng)的缺省狀態(tài),表示總線當(dāng)前空閑。通常,設(shè)備處在IDLE狀態(tài)時(shí),要檢測來自PCI總線和后級設(shè)備的信號,便設(shè)備作出合適的響應(yīng)。設(shè)備處于S_DATA狀態(tài)時(shí)完成第一次數(shù)據(jù)傳輸,直接無條件跳到BACKOFF狀態(tài)。設(shè)備在BACKOFF狀態(tài)時(shí)進(jìn)行多個(gè)數(shù)據(jù)傳輸,直到主設(shè)備斷開訪問。需要注意的是:任何對I/O空間、配置空間以及內(nèi)存空間的突發(fā)傳輸?shù)牡刂烦^了設(shè)備映射地址的范圍時(shí),從設(shè)備要在此狀態(tài)建立STOP信號,斷開訪問。當(dāng)幀信號無效或主設(shè)備終止傳輸時(shí),設(shè)備回到初始的IDLE狀態(tài)。BUS_BUSY狀態(tài)時(shí)總線忙,表示總線正在被其它設(shè)備使用。有兩條轉(zhuǎn)移路徑,若總線仍然被占用,則停留在BUS_BUSY狀態(tài),否則返回空頭狀態(tài)IDLE。

2.4 地址譯碼和命令譯碼模塊

地址譯碼模塊主要檢測PCI地址與本PCI卡的基地址是否匹配,可以通過AD[31:00]信號線上的值與設(shè)備的基地址作比較判斷。如果PCI地址落在設(shè)置的基地址范圍內(nèi),則PCI卡響應(yīng)當(dāng)前的總線操作。

命令譯碼模塊指示PCI卡響應(yīng)不同的總線命令,通過檢測C/BE[3:0]#信號線上的值,與表1列出的總線命令作比較,完成命令譯碼。

 

 

3 Windows9x系統(tǒng)下驅(qū)動(dòng)程序的設(shè)計(jì)

對PCI設(shè)備而言,驅(qū)動(dòng)程序提供了獲取PCI卡的配置空間信息、勾掛PCI中斷、總線數(shù)據(jù)傳輸?shù)裙δ?。本文介紹使用Numega公司的VtooIsD軟件進(jìn)行驅(qū)動(dòng)設(shè)計(jì)的方法。

3.1 尋找PCI卡并讀取配置空間信息

配置空間包含了系統(tǒng)初始化PCI設(shè)備所必需的信息,首先需要遍歷整個(gè)硬件樹結(jié)構(gòu)來尋找指定的PCI設(shè)備。對于每一個(gè)設(shè)備,比較其廠商號(Vendor ID)和設(shè)備編號(Device ID),如果與設(shè)計(jì)的PCI卡的信息匹配,則讀取它的配置空間信息。

3.2 I/O方式下的讀寫操作

I/O方式下的讀寫比較簡單。在得到PCI設(shè)備基地址信息后,通過C++語言中的端口讀寫函數(shù)inpd和outpd即可完成。舉例如下:

Temp=_inpd(gBaseAddresses);//Temp中得到讀出的數(shù)據(jù)

_outpd(gBaseAddresses,Data);//向基地址寫入數(shù)據(jù)

其中,gBaseAddresses為基地址值,Data為寫操作時(shí)的數(shù)據(jù)。

3.3 內(nèi)存方式下的讀寫

對于內(nèi)存方式下的讀寫,一個(gè)重要問題就是地址的映射。因?yàn)橛布O(shè)備讀寫的是物理內(nèi)存,但應(yīng)用程序讀寫的是虛擬地址,所以存在著將物理內(nèi)存地址映射到用戶程序線性地址的問題。

映射功能通過調(diào)用VtoolsD軟件的標(biāo)準(zhǔn)庫函數(shù)完成。根據(jù)給定的物理地址和所要求的空間大小,在系統(tǒng)內(nèi)存中分配相應(yīng)空間。首先,用PageReserve函數(shù)分配當(dāng)前保留頁的線性地址空間,再利用PageCommitPhys函數(shù)的服務(wù)對開始的線性地址空間分配相應(yīng)的物理地址空間。程序如下:

ULONG nPages=_NPAGES_(PhysAddress,SizeInByte);

Linear=PageReserve(PR_SYSTEM,nPages,PR_FIXED);

PageCommitPhys(PAGENUM(Linear),nPages,PAGENUM

(PhysAddress),PC_INCR|PC_WRITEABLE|PC_USER);

LinPageLock(PAGENUM(Linear),nPages,0);

其中,PhysAddress為給定的物理地址,SizeInBytes為需要的空間大小。

建立了物理RAM到系統(tǒng)內(nèi)存的映射后,就可以利用C++語言中的文件操作基類CFile類完成數(shù)據(jù)的讀寫。首先使用CFile類的成員函數(shù)Open打開文件,為保證數(shù)據(jù)讀寫的準(zhǔn)確無誤,必須使用二進(jìn)制方式打開;接下來使用Read和Write成員函數(shù)進(jìn)行文件讀寫;完畢后用Close成員函數(shù)關(guān)閉文件。

3.4 中斷的勾掛和處理

首先在ON_DEVICE_INIT函數(shù)中完成中斷的初始化。即通過前面讀取的PCI設(shè)備的中斷號,使用VPICD_Virtualize_IRQ函數(shù)進(jìn)行中斷勾掛,外調(diào)用VPICD_Physically_Unmask函數(shù)開中斷。

RTCIRQHandle=VPICD_Virtualize_IRQ(&IRQdesc);

VPICD_Physically_Unmask(RTCIRQHandle);

然后在RTCInt_Handler函數(shù)中進(jìn)行中斷處理,可以進(jìn)行各種操作,例如向應(yīng)用程序發(fā)送自定義的消息來通知中斷的發(fā)生。

 

 

3.5 與應(yīng)用程序的通信

一般地,應(yīng)用程序通過CreateFile函數(shù)調(diào)用VxD驅(qū)動(dòng)程序,得到一個(gè)VxD的文件句柄。使用如下的語句可以打開一個(gè)名為mydriver.VXD的文件,得到的句柄保存在hVxD中。

hVxD=CreateFile(.mydriver.VXD,0,0,0,CREATE-NEW,FILE-FLAG-DELETE-ON-CLOSE,0);

通過句柄hVxD和DeviceIoControl函數(shù)就可以與驅(qū)動(dòng)程序進(jìn)行數(shù)據(jù)傳輸。

本文采用ALTERA公司的FLEX6000系列芯片,型號為EPF6016TC144-3,實(shí)現(xiàn)了簡化的從設(shè)備模式PCI協(xié)議,并在Windows9x系統(tǒng)下實(shí)現(xiàn)驅(qū)動(dòng)程序的設(shè)計(jì)。整個(gè)系統(tǒng)工作良好。資源占用情況如下:可用I/O引腳113根,占用51根,占用率45%;可用邏輯單元數(shù)1320個(gè),占用151個(gè),占用率11%。

簡化的PCI協(xié)議的實(shí)現(xiàn)占用較少的邏輯資源,可以靈活方便地進(jìn)行功能添加和改進(jìn),同時(shí)可以在同一塊芯片中集成其他用戶模塊,實(shí)現(xiàn)不同功能,以降低成本。目前,本系統(tǒng)已經(jīng)應(yīng)用在數(shù)據(jù)采集處理、圖像處理等方面。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉