TMS320C645x DSP SRIO寄存器(一)——基本配置

本文是對TI的TMS320C645x DSP SRIO User’s Guide中5.1~5.9節內容的搬運

外設識別(PID,Peripheral Identification Register)

  • 該寄存器只讀,寫無效 。包含外設的類型(type)、類(class)和修訂(revision)信息,實際應用中可以直接不管。
    PID

外設控制(PCR,Peripheral Control Register)

  • 最需要關心的只有一位,第2位,流控制使能,置一正常工作。只能在最後置一!!!,也就是說當我要使設備開始工作時,我得先配置完其它寄存器,最後再將該位置一。
  • 第0位和第1位控制硬件仿真時的寄存器行爲。第0位置一時,寄存器不受硬件仿真影響,也就是復位後的狀態;
  • 第0位和第1位都爲0時,所有狀態寄存器都被凍結在默認狀態??我猜是仿真時候的暫停也會讓寄存器停止工作,導致接收或者發送數據錯誤。
  • 所以應該就讓它們默認就好了,不需要去操作低兩位。
    PCR

外設設置控制(PER_SET_CNTL,Peripheral Settings Control Register)

  • D30-27:均爲保留值0,只讀。
  • 第26位:SW_MEM_SLEEP_OVERRIDE(Software memory sleep override)
    當使用GLB_EN或者BLK_EN來使能或者shutdown所有模塊(block)或者部分模塊時,配置存儲器進入睡眠模式(0),或者不進入睡眠模式(1),默認爲“1”。
  • 第25位:LOOPBACK
    正常模式(0),迴環測試模式(1)
  • 第24位:BOOT_COMPLETE
    能夠向只讀寄存器寫(0),不能向只讀寄存器寫(1)
    當該位置爲“1”時,啓動端口鏈路初始化,完成初始化後,該位就不再有影響,可以將它置爲“0”,然後對只讀寄存器進行寫操作(但這一般不需要)。只有再次用GLB_EN復位後,該位才能再起作用。
  • D20-12:TX_PRIn_WM(n = 0~2,Transmit Priority Water Mark),n對應用兩位二進制數表示的優先級。其中每三位組成對於某一優先級的包的發送數量閾值。當發送緩衝區中有一定數量的該優先級的包時,再進行發送。一般都設爲0,可以實現最快地讓所有優先級的包通過
  • D11-9:CBA_TRANS_PRI 不知道CBA是什麼ORZ,但應該問題不大。該字段主要用於設置內部總線SRIO的優先級(DSP system transaction priority.)000爲最高優先級,111爲最低優先級
  • 第8位:1X_MODE 該位決定UDI(User Defined Interface)緩衝的設置(是基於優先級還是基於端口) 基於優先級(0)基於端口(1)
    當有多個端口時,比如1x/4p模式,需要將該位置一
    (手冊中2.3.13.2中的表格和示例代碼好像有矛盾,之後去試試……)
  • D7-4:PRESCALER_SELECT 預分頻器選擇
    16種頻率範圍,需要與DMA的頻率對應
    用於設置內部時鐘頻率??不是很清楚是什麼時鐘??可能是內部DMA的時鐘??
    如果後面知道了,再來補充ORZ……
  • D3-0:以前用於使能SERDES的PLL,現在這四位不用了,都置“0”。SERDES的PLL配置採用另外的方法。C6455的CSL示例工程中仍然是利用這四位來使能SERDES的PLL,但在手冊中這四位是不使用的
    PER_SET_CNTL

全局使能(GBL_EN,Peripheral Global Enable Register)

  • 第0位 :EN (Global Enable)外設不工作(0)外設使能(1)
  • 其它位保留且只讀,均爲“0”
    GLB_EN

全局使能狀態(GBL_EN_STAT,Peripheral Global Enable Status)

  • D9-6:對應端口3-0(SRIO port 3-0),對應block8-5
  • D5:MESSAGE接收,對應block4
  • D4:MESSAGE發送,對應block3
  • D3:MAU(Memory Access Unit),對應block2
  • D2:LSU(Load and Store Unit),包含四個LSU,對應block1
  • D1:MMR(Memory-Mapped Registers),對應block0
  • D0:全局狀態
  • 其它位保留且只讀,均爲“0”
    GLB_EN_STAT

模塊n使能(BLKn_EN,Block n Enable Register)

  • 第0位 :EN (Block n Enable)對應模塊不工作(0),對應模塊使能(1)
  • 其它位保留且只讀,均爲“0”

模塊序號與具體模塊的對應關係

模塊序號 對應模塊
block8-5 SRIO port3-0
block4 MESSAGE接收
block3 MESSAGE發送
block2 MAU(Memory Access Unit)
block1 LSU(Load and Store Unit)
block0 MMR(Memory-Mapped Registers)

BLK_EN

模塊n使能狀態(BLKn_EN_STAT,Block n Enable Status Register)

  • 第0位:指示對應模塊工作情況,對應模塊不工作(0),對應模塊使能(1)
  • 其它位保留且只讀,均爲“0”
    BLKn_EN_STAT

設備ID1(DEVICEID_REG1,DEVICEID1 Register)

  • D23-16:8位源設備ID,需要與SRIO的基本設備ID CSR(Base Device ID CSR)保持一致;
    C645x系列DSP不會自動將BASE_ID中的值賦值給DEVICEID_REG1,需要手動賦值。(這TM也太坑了)
  • D15-0:16位源設備ID,同上
    DEVICEID_REG1

設備ID2(DEVICEID_REG2,RapidIO DEVICEID2 Register)

  • D23-16:8位源設備ID,可以直接與DEVICEID1一致。該寄存器中的設備ID用於與接收到的事務包中的目的設備ID進行比對,當接收廣播事務時,可以將該寄存器中的值改爲廣播地址;
  • D15-0:16位源設備ID,同上
    DEVICEID_REG2
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章