DSP HPI总线与MPC8272总线接口的FPGA实现

时间:2020-09-18 12:38:30 通信工程毕业论文 我要投稿

DSP HPI总线与MPC8272总线接口的FPGA实现

DSP HPI总线与MPC8272总线接口的FPGA实现的毕业论文怎么写,小编为你提供一篇范文参考,希望您喜欢!

 

  论文摘要:通过对TI公司TMS320C6421 DSP HPI接口信号和接口总线时序的分析,以VHDL语言为工具,使用AlteraFPGA芯片EP3C40F780C8,设计完成MPC8272总线和TMS320C6421 DSP HPI总线之间的通信接口,并在实际的产品中得到运用,给出与整个接口设计相关的VHDL源代码。对于类似的DSP HPI接口设计,此文章具有参考和指导意义。

 

  一、HPI概述

 

  HPI(Host-Port Interface)主机接口,是TI高性能DSP上配置的与主机进行通信的片内外设。通过HPI接口,主机可以非常方便地访问DSP的所有地址空间,从而实现对DSP的控制。

 

  TMS320C6421HPI接口是一个16bit宽的并行端口。主机(host)CPU地址空间的访问是通过EDMA控制器实现的。 HPI接口的访问主要通过三个专用寄存器来实现,它们分别是HPI控制寄存器(HPIC)HPI地址寄存器(HPIA)HPI数据寄存器(HPID)

 

  二、HPI接口信号简介

 

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

 

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

 

  如前所述,对HPI的访问需要通过三个寄存器,即HPI地址寄存器(HPIA)HPI数据寄存器(HPID)HPI控制寄存器(HPIC)来实现。HCNTL[10]就是用于选择这三个寄存器的专用引脚。

 

  HCNTL1

 

  HCNTL0

 

  HPI访问类型

 

  0

 

  0

 

  主机可读写HPI控制寄存器HPIC

 

  0

 

  1

 

  主机可读写HPI数据寄存器HPID,读操作或写操作后HPIA自动增1

 

  1

 

  0

 

  主机可读写HPI地址寄存器HPIA

 

  1

 

  1

 

  主机可读写HPI数据寄存器HPID,读操作或写操作后HPIA不变

 

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

 

  HHWIL指示当前的为第一个或是第二个半字传输,但需要注意的是,它并不代表是最高有效的(most significant)还是最低有效的`(least significant),而决定的依据是HPIC中的HWOB位的状态。对于第一个半字,HHWIL必须被驱动为低电平;对于第二个半字,HHWIL必须被驱动为高电平。

 

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

 

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

 

  (5) HRDY (输出准备好)

 

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

 

  当HCS有效,并且HDS1HDS2中仅有一个有效时,内部触发信号HSTROBE有效。这三个信号的组合逻辑其实就是片选和读/写信号构成的组合逻辑,因此,可直接与主机的片选和读/写信号相连。如下图所示:

 

  (7) HAS (地址输入选通)

 

  在TMS320C6421 HPI接口中目前没有用,连接到逻辑高电平。

 

  (8) HINT(向主机输出的中断)

 

  三、HPI接口寄存器简介

 

  如上所述,主机通过HPI接口对DSP的访问实际上是通过三个寄存器来实现的,下面就针对这三个专用寄存器进行介绍。

 

  (1)HPI控制寄存器(HPIC)

 

  HPIC中每一位都有特定的功能,在对HPI进行访问的过程中需要特别注意。简要介绍一下这些功能位的作用。

 

  ①HWOB(半字顺序位)

 

  如果HWOB=1,第一个半字为最低有效;如果HWOB=0,第一个半字为最高有效。HWOB对地址和数据都起作用,如果采用HPI16模式,在访问数据或者地址寄存器之前,应该首先初始化HWOB位。

 

  ②DSPINT(主机产生的Processor-to-CPU中断,用于HPI启动方式中将DSP内核从复位状态中唤醒)

 

  ③HINT(DSP-to-Host中断,即通过向此位写入特定值来产生对主机的中断)

 

  (2) HPI地址寄存器(HPIA)

 

  存放32bit数据,指向将要访问的DSP地址空间中的地址。

 

  (3) HPI数据寄存器(HPID)

 

  在写操作中存放将要写入HPIA所指向地址的数据,在读操作中为HPIA所指向地址中的数据。

 

  四、HPI接口读写时序

 

  ⑴HPI接口读时序

 

  ⑵HPI接口写时序

 

  五、HPI接口硬件设计

 

  从C6421 HPI寄存器的编址方式可以看出,主机需两根地址线寻址到HPI接口的控制寄存器、地址寄存器和数据寄存器,因此选择主机的地址线A29A28连接C6421 HPIHCNTL1HCNTL0。选择主机的地址线A30连接到C6421 HPIHHWIL,作为半字指示选择。HPI的选通由HCSHDS1HDS2三根信号线共同作用,最后的HPI使能信号(STROBE)HDS1异或HDS2后,再与HCS进行与非运算的结果。HCSHDS1HDS2信号由FPGA产生。TAMPC8272传输结束标识,HPIHRDY有效后FPGACPU发送TA,保证HPI数据正确读出。C6416 HPIHINT信号可以直接连接到主机的IRQ引脚上实现HPI对主机的中断信号连接,也可通过FPGA连接到主机,使控制更灵活。

 

  六、地址空间分配

 

  由于C642116位的HPI口,其内部总线为32位,所以每次读写要分两次,一次为高16位,一次为低16位,由HHWIL来选择(0First Half Word 1Second  Half Word),设定HPIC.HWOB = 0(First Half Word =高16位, Second  Half Word = 16)C6421HPI接口映射为MPC82724对地址空间,由MPC8272 CS3控制,配置CS316位宽的GPCM访问模式,如下地址分配:

 

  HPIC0x0D000000(16), 0x0D000002(16)

 

  HPIA: 0x0D000004(16), 0x0D000006(16)

 

  HPID_FIX: 0x0D00000C(16), 0x0D00000E(16)C6421地址由当前的HPIA决定。

 

  HPID_Auto: 0x0D000008(16), 0x0D00000A(16) C6421地址自动加1

 

  七、HPI接口相关VHDL代码

 

  output wire c6421_hasn, c6421_hcsn, c6421_hdsn1, c6421_hdsn2,

 

  assign c6421_hasn  = 1B1;

 

  assign c6421_hcsn  = cs3;

 

  assign c6421_hdsn1 = wen;

 

  assign c6421_hdsn2 = oen;

 

  reg [7:0] st_ta;

 

  reg tax;

 

  wire tax001 = (zzz_cnt==256)  ? 0 : 1 ;

 

  wire tax002 = (zzz_cnt==256+8) ? 0 : 1 ;

 

  wire tax003 = (zzz_cnt==256+16)? 0 : 1 ;

 

  wire tax004 = (zzz_cnt==256+32)? 0 : 1 ;

 

  reg c6421hcsn_start;

 

  always @(posedge clk_cpu)

 

  if (zzz_cnt==5) c6421hcsn_start = 1;

 

  else      c6421hcsn_start = 0;

 

  always @(posedge clk_cpu) begin

 

  if (c6421hcsn_start) begin

 

  st_ta = STA_CHECKRD;

 

  tax  = 1;

 

  end

 

  else if (STA_CHECKRD == st_ta) begin

 

  if (c6421_hrdyn)

 

  st_ta = STA_CHECKRD;

 

  else

 

  st_ta = STA_GEN;

 

  tax = 1;

 

  ;end

 

  else if (STA_GEN == st_ta) begin

 

  st_ta = STA_END;

 

  tax  = 0;

 

  end

 

  else begin

 

  tax = 1;

 

  end

 

  end

 

  assign ta  = (~cs3) ? (tax & tax001 &  tax002 & tax003 & tax004): 1BZ;

 

  MPC8272功能很强大,C6421 HPI接口相对于MPC8272来说为慢速外部设备,TAMPC8272传输结束标识,HPIHRDY有效后FPGACPU发送TA,保证HPI数据正确读出。因此在VHDL程序中设计了状态机,当HRDY信号有效后就立即结束本次访问,否则经过一段时间的延迟后强制结束本次访问,这样可以避免接口长时间占用总线,影响系统性能。

 

  八、结束语

 

  本文使用VHDL语言和FPGA,设计了MPC8272DSP之间的HPI接口。之所以使用FPGA,是因为在系统中FPGA还包含有其他的功能设计。如果只有MPC8272DSP之间的HPI接口设计,使用CPLD即可完成,而不必浪费FPGA的资源。

 

  参考文献:

 

  1TMS320C6421 Fixed-Point Digital Signal Processor datasheetTI公司提供

 

  2TMS320C642x DSP  Host Port Interface (HPI)  Users GuideTI公司提供

【DSP HPI总线与MPC8272总线接口的FPGA实现】相关文章:

1.实现自我评价

2.实现梦想的职场励志语录

3.strlen的几种不同实现方法

4.递归实现回文判断

5.实现成功的职场励志句子

6.实现个人价值的职场励志名言

7.实现自我价值的职场励志名言

8.实现自我价值简历封面

9.实现伟大事业的励志句子