色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 高速PCI信號采集卡設(shè)計與實現(xiàn)綜合實例之:樣機(jī)的調(diào)試方法和技巧

          高速PCI信號采集卡設(shè)計與實現(xiàn)綜合實例之:樣機(jī)的調(diào)試方法和技巧

          作者: 時間:2017-06-04 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://cafeforensic.com/article/201706/348782.htm

          13.8樣機(jī)的調(diào)試方法和技巧

          不管是復(fù)雜的電子系統(tǒng)還是簡單的電路,樣機(jī)的調(diào)試都是有一些基本步驟的。對于本案例的信號采集設(shè)備同樣如此。

          最先進(jìn)行的就是電源系統(tǒng)的調(diào)試,包括是否有短路、斷路,是否有虛焊,各電壓系統(tǒng)是否正常,電源模塊輸出電流是否足夠驅(qū)動負(fù)載等。只有電源系統(tǒng)正常工作,才能談得上實現(xiàn)系統(tǒng)功能。

          完成了電源系統(tǒng)的調(diào)試后,PCI信號采集卡的下一個工作就是對PCI954進(jìn)行配置。用戶可以通過編程器或者PLXMon工具在線進(jìn)行燒寫。這個配置過程保證主機(jī)操作系統(tǒng)能夠識別出硬件設(shè)備。

          主機(jī)能夠正確地識別硬件設(shè)備后,需要進(jìn)行設(shè)備驅(qū)動程序的安裝。

          通過上述步驟,主機(jī)已經(jīng)可以正確地識別設(shè)備,并為用戶提供了可供操作的API接口。接下來要做的調(diào)試工作就是硬件工程師要完成的邏輯設(shè)計和軟件工程師要完成的應(yīng)用軟件設(shè)計。但這兩部分并不能絕對分開進(jìn)行設(shè)計,因為不管是對設(shè)備的I/O操作還是DMA操作都需要進(jìn)行地址空間映射,因此都需要在軟件和硬件上進(jìn)行相應(yīng)的設(shè)計。

          在本系統(tǒng)的調(diào)試和軟件聯(lián)調(diào)中,我們使用了兩個簡單的例子來驗證系統(tǒng)是否能夠正常的工作。一個是直接用控制的實例,另一個是通過應(yīng)用軟件控制的實例。

          13.8.1沒有PCI控制的

          本實例僅用FPGA內(nèi)部邏輯對LED進(jìn)行控制,實現(xiàn)跑馬燈。通過本實例可以檢驗FPGA的兩種配置模式是否正常工作,同時可以學(xué)習(xí)使用軟件開發(fā)和配置FPGA的流程。

          如圖13.23是本實例的系統(tǒng)框圖。

          圖13.23跑馬燈系統(tǒng)框圖

          其中計數(shù)分頻器是通過計數(shù)器將晶振的40MHz時鐘進(jìn)行分頻,產(chǎn)生的低頻時鐘作為LED狀態(tài)機(jī)的控制時鐘。LED狀態(tài)機(jī)使用4個狀態(tài)分別表示4個LED的亮滅,狀態(tài)轉(zhuǎn)換通過狀態(tài)機(jī)的時鐘上升沿觸發(fā),實現(xiàn)跑馬燈。

          下面是這個實例FPGA內(nèi)的主要Verilog源代碼。

          //--計數(shù)分頻-------------------------------------

          always@(posedgeclkin)

          count=count+1; //分頻計數(shù)器

          assignclk=count[24]; //狀態(tài)機(jī)時鐘

          //--LED控制--------------------------------

          always@(posedgeclk)begin

          case(state)//跑馬燈狀態(tài)控制量

          2d0: led=4b0001; //D1亮

          2d1: led=4b0010; //D2亮

          2d2: led=4b0100; //D3亮

          2d3: led=4b1000; //D4亮

          endcase

          state=state+1;//跑馬燈狀態(tài)變化

          end

          13.8.2基于PCI控制的跑馬燈

          本實例使用應(yīng)用程序通過PCI總線()來對FPGA內(nèi)部邏輯參數(shù)進(jìn)行配置,實現(xiàn)對LED的控制。通過本實例可以檢驗開發(fā)板的驅(qū)動以及PCI的實時控制,同時學(xué)習(xí)應(yīng)用程序和進(jìn)行通信的方法。

          如圖13.24所示為本實例的系統(tǒng)框圖。

          圖13.24基于PCI控制的跑馬燈系統(tǒng)框圖

          其中PCI本地控制器實現(xiàn)與的接口通信,獲取LED控制應(yīng)用程序發(fā)出的觸發(fā)信號。LED控制器包含LED狀態(tài)機(jī)并接受PCI本地控制器的觸發(fā)信號,通過判別LED觸發(fā)的類型決定啟動單個LED控制或LED狀態(tài)機(jī)。

          下面是這個范例FPGA內(nèi)的主要Verilog源代碼。

          //--計數(shù)分頻-------------------------------------

          always@(posedgeclkin)

          count=count+1; //分頻計數(shù)器

          assignclk=count[24]; //狀態(tài)機(jī)時鐘

          //--LED控制--------------------------------

          always@(posedgeclk)begin

          case(LEDByControl) //狀態(tài)控制量

          8d1: led=4b0001; //PCI控制D1亮

          8d2: led=4b0010; //PCI控制D2亮

          8d3: led=4b0100; //PCI控制D3亮

          8d4: led=4b1000; //PCI控制D4亮

          8d5: case(state) //跑馬燈狀態(tài)控制量

          2b00: led=4b0001; //跑馬燈D1亮

          2b01: led=4b0010; //跑馬燈D2亮

          2b10: led=4b0100; //跑馬燈D3亮

          2b11: led=4b1000; //跑馬燈D4亮

          endcase

          default:led=4b0000; //跑馬燈全滅

          endcase

          state=state+1; //跑馬燈狀態(tài)變化

          end

          //--PCI本地控制器-------------------------------

          always@(posedgeclkin)

          lholda=lhold; //PCI本地總線占用請求及應(yīng)答

          always@(posedgeclkinornegedgelrst)begin

          if(!lrst)begin//PCI9054復(fù)位

          readyflag=1b0;

          LEDByControl[7:0]=8b0;

          end

          elseif(!adslwrblastla[13:0]==14b1)

          readyflag=1b1;//開始發(fā)起LED控制字IO配置

          elseif(adslwrblastreadyflag==1b1la[13:0]==14b1)

          readyflag=1b1;//捕獲發(fā)起操作

          elseif(adslwr!blastreadyflag==1b1la[13:0]==14b1)begin

          LEDByControl[7:0]=ld[31:24];//進(jìn)行LED控制字IO配置操作

          readyflag=1b0;

          end

          else begin

          LEDByControl[7:0]=LEDByControl[7:0];//保持LED控制字

          readyflag=1b0;

          end

          end

          在進(jìn)行FPGA的邏輯設(shè)計時,采用一種叫做虛擬邏輯分析儀的技術(shù),可以增強(qiáng)我們診斷系統(tǒng)的能力。AlteraFPGA提供的虛擬邏輯分析儀稱為SignalTap,Xilinx中也有同樣功能的產(chǎn)品稱為ChipScope。

          SignalTapII邏輯分析儀是Altera第二代系統(tǒng)級調(diào)試工具,能夠獲取、顯示可編程片上系統(tǒng)(SOPC)的實時信號,幫助工程師在其系統(tǒng)設(shè)計中觀察硬件和軟件的交互作用。在可編程邏輯市場上,SignalTapII邏輯分析儀專用于軟件,與其他嵌入式邏輯分析儀相比,它支持的通道數(shù)最多,抽樣深度最大,時鐘速率最高。

          如圖13.25所示為控制其中一個LED時的PCI本地時序圖。

          圖13.25控制1個LED的PCI本地時序圖

          如圖13.26所示為控制4個LED進(jìn)行跑馬燈時的PCI本地時序圖。

          圖13.26控制4個LED跑馬燈的PCI本地時序圖



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉