天天看點

C6678->SRIO和Virtex6->FPGA

設計的闆子到了SRIO調試階段了,在闆子上,一片V6和兩片6678通過4XSRIO互聯,中間沒有Switch,總算搞定了互相之間的通信。

  首先,感謝Ti論壇提供的SRIO程式範例,但是其硬體平台是EVM闆,更多的隻能用于loopback測試,但是可以在其基礎上修改。

1.初始化DSP的SRIO,主要是對SerDes進行配置,然後是Lane和Speed的配置,最後需要等待FPGA的LinK建立,我們在建立時候碰到一點困難,每次建立并不都是4X,一直沒有找到問題,我們使用了一個别的辦法來保證link為4X。

2.資料發送,DSP上提供的資料發送方法主要有兩種,DirectIO和Message,主要差別為DirectIO需要TX和RX雙方知道位址映射關系,而Message是通過Message中mail資訊得到資料需要儲存的位址,我們使用的為DirectIO方法,6678上提供了8組LSU來進行DirectIO資料發送,每個LSU有6個寄存器,當5th寄存器寫完後,資料會發送出去,第6個寄存器主要用于檢測目前的LSU狀态。LSU還有16(32)個影子寄存器 

3.SWRITE/NWRITE/NREAD:對DSP來說,初始化完SRIO後,FPGA便可以通過SRIO來發送資料,但是要注意,Designer并不知道什麼時候FPGA會發送資料,是以通常會先發送一個DoorBell資訊來告知DSP,FPGA要發送資料了,DoorBell可以觸發中斷,對于NREAD來說,FPGA發送這個指令後,DSP會自動的将請求的資料發送出去,Designer也并不知道資料發送出去,這些都需要DoorBell來支援。

轉載于:https://www.cnblogs.com/fpga/archive/2012/07/13/2590929.html