Lattice FPGA 板子 調試筆記


         最近在調試LATTICE  FPGA 做的視頻板子,頗不順利,所以記錄下來作為以后的參考:

  1、FPGA的IO口不是所有的都是雙向的,有些有特殊作用的是單向的。

         在查閱 LatticeECP3-17EAPinout.CSV 之后, 發現在LEF3-17EA-FN484C中,有以下幾個管腳是單向的:

           C4  G7  G6      : jtag 管腳

          C14  C15  B15   B16  :編程管腳

          K1   L5   L1   K6   N17  M18   :PLL的反饋(fb)管腳

          AB2    AB3      : RESERVE

          N15    : XRES

     其中最容易被用掉的是 PLL的反饋管腳,要格外注意。其他的型號和封裝可以參考相應的 .CSV  文件。

    否則提示錯誤: ERROR :  the output port XX is  assigned  to an input dedicated pins [M18] .

 

 2、在將程序下載到外部spi flash時,設置完成之后提示錯誤:

      其中有  Except  Device  ID 0x04002310  READ:0X0000000;  則是說沒有讀到芯片的地址,則有可能是連接flash的讀入線(相對FPGA)有問題。

  尤其要檢查是不是輸入和輸出線連接反了。

  3、在下載程序到FPGA內部時,瀏覽芯片出現錯誤,或下載的時候出現錯誤,提示也如同上面的錯誤,就是讀不到芯片的 ID, 那么可能是JTAG的四根連線出現問題,要詳細檢查。 例如我的是在TMS線上接了一個對地100nf的大電容,則把波形都濾掉了,所以出現錯誤而讀不到數據。

 4、lattice Diamond 在下載的時候 加載bit文件的時候,由於這個軟件不會自動尋到正在編譯的工程目錄下,所以加載的bit文件可能是上個工程的路徑,這樣軟件就會報出一個錯誤: 

    

   這個原因是下載文件的路徑有問題,改為你當前工程的路徑即可。

     

5、關於lattice  DDR3 IP 核的wl_err信號的調試:

          lattice  的DDR3 IP核 在調試的時候要注意,硬件上電之后,DDR3 要復位 200us之上,如果時鍾是74.25M的輸入,則需要計數達到3000個clk,才可以開始初始化。如果是仿真,當然不需要那么久了,假設仿真時鍾是6666ps,就是核內部demo的仿真參數,則如下所示

         

  `timescale  1 ps/ 1 ps

  parameter  c = 6666;
  always
      #(c)   clk = ~clk ;

      那么  復位的時鍾個數計數只要達到100個就可以了(demo 是200個clk周期)。

   那么正確的wl_err的 信號在初始化的時候的波形是這樣的:

            

    就是在init_done 有效的時候,init_start被拉低,wl_err信號保持為低電平,表示核初始化寫調整沒有錯誤,可以正確的讀寫。

   但是吧,有一天,我感覺    c = 6666;  這樣太長了,仿真太慢了,於是我又把C調整為 c = 666; 或者 c 更小 ,我想這樣是不是只要延時時間一樣長,

就可以完成初始化了???於是我就實驗,將c= 666,計數記到 100,甚至 16‘hffff,最后發現wl_err的波形在初始化完成時都是下圖這樣的:

        

      在init_done有效的時候,wl_err被拉高,且一直保持,這就是說,核初始化過程中寫調整有錯誤,這樣的結果是——導致核的讀操作不能被有效的

響應,就是度有效之后,不能讀出數據 。當然這個核是沒法仿真的了。  猜測 可能是 時鍾的 頻率 太快了。

      最后沒辦法,老老實實把 c改為6666 吧。

 

      

          


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM