PCIE_DMA:xapp1052學習筆記

來源:互聯網
上載者:User

標籤:系統   display   ons   代碼   sar   調用   軟核   引用   其他   

Moselsim模擬:

    

    EP為Endpoint部分實現代碼,即常式主代碼。其他的是搭建的模擬環境,主要目的是仿照驅動的行為,將PCIE軟核用起來,主要是做PC端的行為模擬,如DMA配置,DMA讀寫操作及主時鐘,複位等。加入testbench後結構如。

    board:頂層檔案+系統複位

    RP:Root complex的部分。其中rport就是PCIE連接埠部分;rx_usrapp是RX部分,負責發送資料;tx_usrapp是TX部分,負責接收資料;cfg_usrapp是配置部分,配置讀寫使能,錯誤控制等,還有一些常用的任務方便其他模組調用;com_usrapp是載入RX/TX檔案,把RX/TX的資料以dat檔案形式儲存,需要時載入/覆蓋。pl_usrapp物理層控制和狀態部分。

    CLK_GEN_RP/EP:分別是兩個連接埠的時鐘產生訊號。

    其實EP和RP的結構很像的,基本都是對應的關係,所以理解起來工作量不是很大。

 

文法筆記:

    因為CLK_GEN_RP/EP很簡單,沒有什麼扒的必要,所以分分鐘掠過了。接下來是對RP(testbench)的一些平時沒見過的文法的筆記。

    1.module xxx #(

              parameter  xxxx1 = xx,

              parameter      xxxx2 = xx,

              ......

            )

            (

              input          xxxxxx,

              output        xxxx,

               .......

            );

      這個是正常的模組定義。其中前面一個括弧是為參數傳遞準備的定義,後面那個括弧就是常見的輸入輸出連接埠定義。

     xxx #(

              .xxxx1 ( xx),

              .xxxx2 (xx),

              ......

            )

            module_usrname(

              .xxxxxx(xxxxxxx),

              .xxxx(xxxx),

               .......

            );

      這個是調用模組xxx的語句,其中前面一個括弧用於參數傳遞,後面一個括弧用於輸入輸出連接埠的引用。

     2.rport中,對RP的BAR0-BAR5有明確的定義需要記錄下:      

      BAR0 = 32‘hffffff00,
      BAR1 = 32‘hffff0000,
      BAR2 = 32‘hffff000c,
      BAR3 = 32‘hffffffff,
      BAR4 = 32‘h00000000,
      BAR5 = 32‘h00000000,

     3.rx_usrapp中的output分別是trn_rdst_rdy_n和trn_rnp_ok_n,這兩個訊號是由ramdom產生的。不過原來的代碼裡面trn_rdst_rdy_n是始終為0的,實際加入DMA操作的時候可以用trn_rdst_rdy_toggle_count來控制使其有效。其中的狀態機器通過調用usrapp_com中的任務來進行RX中資料的store。

     4.調用TASK方法:

      eg: board.RP.com_usrapp.TSK_READ_DATA(0, `RX_LOG, trn_rd, trn_rrem_n);——是指調用board-RP-com_usrapp裡面的 TSK_READ_DATA任務,其中括弧裡面的是傳遞變數,按照usrapp裡面TSK_READ_DATA定義裡面的input順序來傳遞變數。

     5.$value$plusargs:將運行命令(run-options)中的參數值傳遞給指定的訊號或者字元
      用法:

        if ($value$plusargs("TESTNAME=%s", testname))
        $display("Running test {%0s}......", testname);

        則,當使用的運行命令為:<run-options>+TESTNAME=tst_name時,運行結果為:Running test {tst_name}......

      6.如果想把DMA功能用起來,自行調用pci_exp_usrapp_tx.v中的函數,往DMA控制寄存器中寫入地址、長度等資料,然後啟動DMA讀或者寫。

PCIE_DMA:xapp1052學習筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.