1. 程式人生 > >關於除錯PLX9054的一些總結和經驗

關於除錯PLX9054的一些總結和經驗

語言:Verilog HDL & C

軟體環境:Win7 & ISE 14.7

硬體:工控機 & PC & Xilinx FPGA & PLX9054

除錯目的:PLX9054的Local端有3個工作模式:C, J , M。在本次專案中,我們選擇了C模式(pin157與pin156接地)。在C模式下有兩種資料傳輸方式,DMA和直接資料傳輸。我們要往FPGA裡先寫入一組資料(1024個 16bit寬),然後讀出來。直接資料模式有兩種,一種是PCI Target,一種是PCI Initial。我們選擇的是PCI Target(Direct Slave)資料傳輸模式。這樣,PLX9054是PCI的Slave,是FPGA的Master。

除錯過程:選好工作模式和資料傳輸模式之後,就去研究PLX的一些暫存器,以及PCI端記憶體地址到LOCAL端本地地址的地址對映規則。PLX9054有五個暫存器,如下圖所示。

 PCI Register 中存放的是一些比如裝置號和別的暫存器的一些基地址,詳情請參考PLX9054的文件。LOCAL Register存放的是我們要配置的一些暫存器。分別是:

這裡要注意的是,PCIBAR2和LAS0BA。這兩個暫存器,分別儲存了SPACE 0 在PCI端的基地址,和LOCAL端的基地址。一定要注意這中間的區別。我們要配置的是LAS0BA,因為根據文件,LAS0BA的第0位可以決定是否要使用地址編碼,在C模式下,其預設是0,即不採用地址編碼。我們要將其設定成1。LBRD0的作用:Memory Space 0 Local Bus Width. Writing a 00 indicates an 8-bit bus width. Writing a 01 indicates a 16-bit bus width. Writing a 10 or 11 indicates a 32-bit bus width.翻譯過來就是,記憶體空間SPACE 0 的本地匯流排位寬。寫入 00 即用8 -bit。下面自己看 ,我們要寫入01。而根據文件,在C模式下其預設是11,所以需要設定好。

關於PLX9054和FPGA引腳之間時序圖的配置,的確花了我很多時間。首先,我們要找到哪些訊號線和控制線是幹嘛的,我們要理清楚他們之間的關係。這之後,就好用ISE寫Verilog程式碼來配置了。配置好後,再配置UCF檔案,我呼叫了一個RAM的IP Core。所以,IP Core的文件需要讀一讀,重點注意文件中的一個時序圖。


最後我用C程式碼,呼叫了PLX驅動給的一些API函式,對暫存器進行了配置,然後進行了讀寫操作。

總結:部落格寫的是有點簡陋。主要是為了下次如果再除錯9054的時候,好提醒自己一些。通過這次專案,我學習到了很多技術之外的東西,包括該如何讀文件,如何開始一項新的工作。

關於讀文件,這是每一個技術人員或者研究生必須掌握的技能。那麼怎麼讀才好呢。

1.拿到一個專案後,先去從巨集觀上掌握這些東西,比如PLX9054,首先,我們要知道它是幹什麼的,他有哪些工作模式,在這些工作模式下有哪些工作方式。其次,去了解具體工作模式下的一些細節問題。文件是大而全的,你不明白你的目的,往往不知道在看什麼,以及看了根本沒用。

2.遇見問題的了,千萬不要慌張,要上網找資料。你遇見的問題,別人早就遇見了。一定能找到答案的。但是,在找答案之前,一定要明確自己的目的,我要找什麼,一些不相關的東西快速略過,免得被一些無用資訊包圍了。解決不問題。

dp_huang

2015-7-23