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-5SRIO port3-0
block4MESSAGE接收
block3MESSAGE发送
block2MAU(Memory Access Unit)
block1LSU(Load and Store Unit)
block0MMR(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
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值