我是用的FPGA做为Host,但是在写的过程中,偶尔出现HRDY老是为高电平,导致主机端总线访问异常,需要重新上电才能恢复HPI的正操作。
因为FPGA在HCS拉低时要检测HRDY,HRDY一直为高,FPGA就死在那儿了,如果HRDY这种偶尔出现高电平的情况避免不了,有没有办法通过FPGA控制让DSP的HRDY恢复正常(不重新上电),或者是DSP自己控制HRDY恢复正常。
FPGA主要流程1、是先初始化HPIC一次,地址为自动增加的方式;2、再写HPIA一次,在写HPID;3、检测HPID是否写了5次,写满了5次就重新写一次HPIA,循环步骤2,否者继续写HPID写到5次
Shine:
用的是哪款芯片? 写 时序是否满足数据手册上HPI时序的spec?
lingshan lan:
回复 Shine:
芯片是TMS320C6713B,系统时钟用的50M,写时序是按照手册上写的,能够写进去,大多数时候是正常的,但是偶尔会出现HRDY一直为高,这种情况一出现就得重新上电。
参看了“HPI接口在TI SOC的应用详解”中提到这种情况有三种:
A. HPI的高低半字访问的顺序访问被其它 HPI访问打断:在复用模式下,一个完整的 HPI访问是由高低半字
两次访问组成,需要严格保证,否则会破坏 HPI的状态机,从而导致不可预期的后果。
B. 主机通过 HPI访问了 DSP内部的保留空间,或者破坏了 DSP的程序,数据空间,导致 DSP运行异常,进
而导致 HPI状态机异常。
C. 主机的 HSTROBE 信号有毛刺,或者信号完整性不好,如下图中 HCS(些案例 HSTROBE 是由 HCS 控
制)的上升沿的回勾,都会导致 HPI 误判断为主机的新的访问的开始,从而打乱了高低半字的访问顺序
要求,导致 HPI状态机的错乱。”
有没有办法让DSP不重新上电可以让HPI复位重新工作,我看了“TMS320C6713B的handbook”和“TMS320C6000 DSP
Host Port Interface (HPI) Reference Guide”都没找到相关的说明,是不是这种情况只能够重新上电?
时序如下:
写HPIA时序(1、每个信号的变化间隔至少为160ns,系统时钟为50M,已经满足了时序图上的4P要求;2、HAS=1,HDS2=1,HPIC的HWOB=1)
写HPIA后以地址自增模式连续写HPID:
整个流程是1、先初始HPIC,2、再写HPIA和HPID,3写满要求的HPID后,重复步骤2
lingshan lan:
回复 Shine:
芯片是TMS320C6713B,系统时钟用的50M,写时序是按照手册上写的,能够写进去,大多数时候是正常的,但是偶尔会出现HRDY一直为高,这种情况一出现就得重新上电。
参看了“HPI接口在TI SOC的应用详解”中提到这种情况有三种:
A. HPI的高低半字访问的顺序访问被其它 HPI访问打断:在复用模式下,一个完整的 HPI访问是由高低半字
两次访问组成,需要严格保证,否则会破坏 HPI的状态机,从而导致不可预期的后果。
B. 主机通过 HPI访问了 DSP内部的保留空间,或者破坏了 DSP的程序,数据空间,导致 DSP运行异常,进
而导致 HPI状态机异常。
C. 主机的 HSTROBE 信号有毛刺,或者信号完整性不好,如下图中 HCS(些案例 HSTROBE 是由 HCS 控
制)的上升沿的回勾,都会导致 HPI 误判断为主机的新的访问的开始,从而打乱了高低半字的访问顺序
要求,导致 HPI状态机的错乱。”
如果假设是又其中的某一种造成的,有没有办法让DSP不重新上电可以让HPI复位重新工作,但我看了“TMS320C6713B的handbook”和“TMS320C6000 DSP Host Port Interface (HPI) Reference Guide”都没找到相关的说明,是不是这种情况只能够重新上电?
具体时序如下:
写HPIA时序(1、每个信号的变化间隔至少为160ns,系统时钟为50M,已经满足了时序图上的4P要求;2、HAS=1,HDS2=1,HPIC的HWOB=1)
写HPIA后以地址自增模式连续写HPID:
整个流程是1、先初始HPIC,2、再写HPIA和HPID,3写满要求的HPID后,重复步骤2