1 【Altera博客大赛】+使用EP4CE22F17I7设计与TMS320C6424的 HPI接口 - youzizhile的博客 - 电子技术论坛 - 广受欢迎的专业电子论坛! - 德赢Vwin官网
注册 登录
电子技术论坛 返回首页

youzizhile的个人空间 https://bbs.elecfans.com/?456533 [收藏] [复制] [分享] [RSS]

博客

【Altera博客大赛】+使用EP4CE22F17I7设计与TMS320C6424的 HPI接口

热度 1已有 775 次阅读2013-12-29 22:08 | Altera博客大赛, Altera博客大赛

times="" new="" roman";mso-hansi-font-family:"times="" roman""="">基于EP4CE22F17I7 FPGAC6424 DSP HPI接口设计

项目是通过EP4CE22F17I7 FPGA做输入数据的缓存转换和对外IO控制,利用DSPHPI接口和FPGA进行通信,使DSP获取相关数据进行后续的处理操作,同时FPGA还可以获取DSP的相应地址的数据指令状态,根据需要进行相应的操作,达到双机相互通信的目的,可以优化电路设计。

下面简单介绍下HPI接口: HPI(Host-Port Interface)主机接口,是TI高性能DSP上配置的与主机进行通信的片内外设。通过HPI接口,主机可以非常方便地访问DSP的所有地址空间,从而实现对DSP的控制。TMS320C6424HPI接口是一个16bit宽的并行端口。主机(host)CPU地址空间的访问是通过EDMA控制器实现的。HPI接口的访问主要通过三个专用寄存器来实现,它们分别是HPI控制寄存器(HPIC)HPI地址寄存器(HPIA)HPI数据寄存器(HPID)HPI接口主要信号简介如下:

(1) HD[150](数据总线)

(2) HCNTL[10](控制HPI访问类型)

HCNT1

HCNT0

备注

0

0

读写HPIC

0

1

读写HPIA

1

0

地址自增模式

1

1

地址固定模式

(3) HHWIL (半字指示选择)

HHWIL指示当前的为第一个或是第二个半字传输,对于第一个半字,HHWIL为低电平;对于第二个半字,HHWIL为高电平。

(4) HR/W (/写操作指示)

HR/W为高电平,表示从HPI接口读;HR/W为低电平,表示向HPI接口写。

(5) HRDY (输出准备好)

(6) HCS,HDS1,HDS2(选通信号)

HCS有效,并且HDS1HDS2中仅有一个有效时,内部触发信号HSTROBE有效。这三个信号的组合逻辑其实就是片选和读/写信号构成的组合逻辑。

读写时序如下所示:

由上图时序和HPI读写数据流可知,主机对HPI 的一次总线访问周期为分三个阶段:主机发起访问,HPI 响应,主机结束访问周期。

A. 主机发起访问:即对HPI 寄存器的读,或者写命令。主机送出的硬件信号为HSTROBE(由HCS, HDS1/2产生),HR/WHCNTL0/1HWIL,以及HD[0:n]HPI HSTROBE 的下降沿采样控制信号HR/WHCNTL0/1HWIL 判断主机的操作命令。

B. HPI 响应:HPI HSTROBE 的下降沿采样控制信号,根据控制信号做出相应的响应。如果是写(HR/W为低)命令,则在HSTROBE 的上升沿将数据线上的信号锁存到HCNTL0/1 HWIL 指向的寄存器。如果是读命令(HR/W 为高),如果是读HPIC,或者HPIA 寄存器,HPI 将寄存器的值直接送到数据总线上;如果读HPIDHPI 先将HRDY 置为忙状态,HPI DMA 将数据从HPIA 指向的内存单元读到HPID,再送到数据线上,并清除HRDY 忙状态,在读HPID 后半字时,数据从寄存器直接送到数据总线上,不会出现HRDY 信号忙状态。

C. 主机结束访问周期:对于写操作,主机将数据送出后,只要满足芯片手册中HPI HCS 的最小宽度要求,即可结束访问周期。对于读HPID 操作,要等HRDY 信号由忙变为不忙,主机才能结束访问周期。两次连续的HPI 操作的间隔,在芯片手册的HPI 时序参数表里有要求,最小间隔为两个HPI 功能模块时钟周期。

下面是Verilog程序模块的相关描述:

module HPI_IN_OUT //端口定义

( input reset,clk,enable,

  input [7:0] IN_DATA,

  input [11:0] ADDR,

  input UB,LB,CS,WR,RD,

  input HRDY,

  output reg [7:0] OUT_DATA,

  output reg [1:0] HCNT,

  output reg HDS1,HDS2,HAS,HCS,HBIL,HINT,HRW

);

关键语句

else if(enable==1&&CS==0&&WR==0&&HRDY==0)//使能、片选、HRDY和写有效时表示写开始

  begin

     cont<=cont+1;

     if(cont==1&&WR_FLAG==0)//传送HPIC的低字节,写HWOB=1

                  begin

                   HCNT=0;

                   HRW=0;

                   HBIL=0;

                   HCS=0;

                   OUT_DATA=1;

                  end

          else if(cont==4&&WR_FLAG==0)//HCS1,指示数据锁存

                         HCS=1;

          else if(cont==6&&WR_FLAG==0)//传送HPIC的高字节,写HWOB=1

                  begin

                   HBIL=1;

                   HCS=0;

                   OUT_DATA=0;

                  end

                else if(cont==10&&WR_FLAG==0)//HCS1,指示数据锁存

                         HCS=1;   

     else if(cont==12&&WR_FLAG==0) //传送HPIA的低字节,写低字节地址为0x50

                   begin

                      HCNT=1;

                      HRW=0;

                      HBIL=0;

                      HCS=0;

                      OUT_DATA=50;  

                   end

    else if(cont==16&&WR_FLAG==0)//HCS1,指示数据锁存

                         HCS=1;

         else if(cont==18&&WR_FLAG==0) //传送HPIA的高字节,写低字节地址为ADDR

                   begin

                      HBIL=1;

                      HCS=0;

                      OUT_DATA=ADDR[7:0];  

                   end

   else if(cont==22&&WR_FLAG==0) //HCS1,指示数据锁存

                         HCS=1;

else if(cont==24&&WR_FLAG==0&&DATA_UL_FLAG==1)//传送HPIA的低字节,写低字节数据为IN_DATA[7:0]

                   begin

                      HCNT=1;

                      HRW=0;

                      HBIL=1;

                      HCS=0;

                      OUT_DATA=IN_DATA; 

                      DATA_UL_FLAG=0;

                   end

               else if(cont==24&&WR_FLAG==0&&DATA_UL_FLAG==0)//传送HPIA的低字节,写低字节数据为IN_DATA[7:0]

                   begin

                      HCNT=1;

                      HRW=0;

                      HBIL=0;

                      HCS=0;

                      OUT_DATA=IN_DATA; 

                      DATA_UL_FLAG=1;

                   end

    else if(cont==26&&WR_FLAG==0)//HCS1,指示数据锁存

       begin

                         HCS=1;

                         WR_FLAG=1;

                  end

  end            

 

 

参考文献:

1.TMS320C6000 EMIF to TMS320C6000 Host Port Interface http://www.ti.com/lit/an/spra536b/spra536b.pdf

2. TMS320C6424 Fixed-Point Digital Signal Processor数据手册

3. HPI接口在 TI SOC的应用详解(http://www.ti.com.cn/cn/lit/an/zhca430/zhca430.pdf

 



路过

雷人
1

握手

鲜花

鸡蛋

刚表态过的朋友 (1 人)

返回顶部