基于NIOS嵌入式处理器控制HPI接口的控制系统的制作方法

文档序号:18272188发布日期:2019-07-27 09:47阅读:210来源:国知局
基于NIOS嵌入式处理器控制HPI接口的控制系统的制作方法

本发明属于嵌入式接口控制技术领域,尤其涉及一种基于NIOS嵌入式处理器控制HPI接口的控制系统。



背景技术:

HPI是HOST PORT INTERFACE的简称。HPI是一个与主机通信的并行接口,主要用于DSP与其他总线或CPU进行通信。NiosⅡ嵌入式处理器是ALTERA公司推出的采用哈佛结构、具有32位指令集的第二代片上可编程的软核处理器,其最大优势和特点是模块化的硬件结构,以及由此带来的灵活性和可裁减性。现在实现控制HPI的方法,在FPGA中主要通过VHDL或Verilog等硬件描述语言实现对含有HPI接口的设备进行控制;灵活性差,模块抽象层次低,开发难度大。还有一种就是通过单片机或者ARM等处理器实现对HPI接口的控制,硬件成本大,开发流程复杂。

综上所述,现在实现控制HPI的方法存在灵活性差,模块抽象层次低,开发难度大,硬件成本大,开发流程复杂。



技术实现要素:

本发明的目的在于提供一种基于NIOS嵌入式处理器控制HPI接口的控制系统,旨在解决现在实现控制HPI的方法存在灵活性差,模块抽象层次低,开发难度大,硬件成本大,开发流程复杂的问题。

本发明是这样实现的,一种基于NIOS嵌入式处理器控制HPI接口的控制系统,所述基于NIOS嵌入式处理器控制HPI接口的控制系统设置有:

NIOS嵌入式处理器,包括读FIFO和写FIFO信号,NIOS嵌入式处理器给HPI控制逻辑模块的控制信号,以及HPI控制逻辑模块给NIOS嵌入式处理器的反馈信号;

HPI控制逻辑模块,根据提供的HPI的时序要求,使用状态机实现流程的控制;

HPI接口,连接到主机并与主机进行通信的并行接口;用于实现对DSP芯片与其他总线或者CPU进行通信和数据交换;主机或其他主控芯片通过HPI接口实现与DSP芯片的片内存储器进行数据或者信息的交换。

进一步,所述读FIFO和写FIFO的控制信号有:

TFIFO_FULL:写FIFO的满信号;

TFIFO_WR_CLK:写FIFO的写时钟;

TFIFO_WR_EN:写FIFO使能信号;

TFIFO_WR_DATA[15:0]:给写FIFO的中送入数据;

RFIFO_RD_CLK:读FIFO的时钟;

RFIFO_RD_EN:读FIFO的使能信号;

RFIFO_EMPTY:读FIFO的空信号,即将读FIFO读空是有效;

RFIFO_RD_DATA[15:0]:从读FIFO中读取的数据;

RFIFO_WRUSEDW[15:0]:读FIFO中所存数据的个数;

其中NIOS给HPI控制逻辑模块的控制信号有:

HPI_EN:HPI的使能信号;高电平有效;

HPI_LOAD:给HPI的加载信号,在进行加载程序时进行调用;

HPI_WR:控制HPI控制逻辑模块进行读写操作,高电平为读,低电平为写;

START_ADDR[31:0]:进行操作的目标地址的起始地址,长度为32位;

END_ADDR[31:0]:进行操作目标地址的结束地址,长度为32位;

HPI控制逻辑模块的反馈信号包括:

HPI_LOAD_FINISH:程序加载完成之后的反馈信号;

HPI_RD_FINISH:HPI控制逻辑模块完成读操作之后的反馈信号;

HPI_WR_FINISH:HPI控制逻辑模块完成写操作之后的反馈信号。

进一步,所述HPI控制逻辑模块包括,读FIFO即图中的RFIFO,写FIFO即图中的TFIFO,以及核心控制模块即图中的HPI核心控制模块;

读FIFO和写FIFO提供数据缓存;核心控制模块实现和HPI接口的交互,对HPI控制逻辑模块信号进行分类,是NIOS嵌入式处理器给HPI控制的信号。

进一步,所述HPI控制逻辑模块,分为三个部分,HPI读单元,HPI写单元,HPI程序加载单元;

HPI读单元,为完成读操作,读操作首先初始化HPI控制逻辑模块,然后设定读操作的地址范围,即设定起始地址和结束地址;完成操作之后,使能HPI控制逻辑模块的读,等待读操作完成,从读FIFO中即可读出刚才设定的地址范围的数据;

HPI写单元,为完成写操作,写操作首先初始化HPI控制逻辑模块,然后设定读操作的地址范围,即设定起始地址和结束地址;完成操作之后,将需要写入的数据写入到写FIFO中即TFIFO中,完成之后,使能HPI写操作,等待HPI写完成信号直到HPI写结束;

HPI程序加载单元,完成HPI程序加载,首先初始化HPI控制逻辑模块,然后将解析之后的程序,通过HPI写操作,写入到目标地址,然后使能HPI程序加载,等待HPI加载完成信号;完成HPI程序加载操作。

本发明的另一目的在于提供一种所述基于NIOS嵌入式处理器控制HPI接口的控制系统的控制方法,所述控制方法包括:

NIOS嵌入式处理器通过调用相关函数实现管脚信号控制HPI控制逻辑模块,然后HPI控制逻辑模块通过状态机跳转,满足HPI接口实现对HPI接口实现控制。

进一步,所述HPI控制逻辑模块对HPI接口的信号包括:

数据线HD:HPI的数据线,在复用模式下,数据线的宽度为CPU位宽的一半;一个HPI访问分为高低半字两次访问;

HCNTL:HCNTL 0/1选择访问的HPI寄存器;

HWIL:控制访问寄存器的高低半字,必须先高后低;

HR/W:指示对HPI寄存器进行读,还是写;

HCS:HPI的片选信号;

HDS1HDS2:两个信号和HCS信号根据图中逻辑产生内部HSTORBE信号,其逻辑关系是要求HDS1和HDS2信号相反,HCS低有效;HSTROBE下降沿的时间点反应的是三个信号中最后跳变的信号;HPI在HSTROBE的下降沿采样控制信号HR/W;

HRDY:HPI的输出信号,指示当前操作状态,用做硬件流量控制握手信号;

HINT:通过HPI,主机与DSP之间互发中断,HINT是HPI送给主机的中断信号;

ALE:存在于地址,数据线复用的主机上用来指示地址信号周期;

BE:Byte Enable信号。

进一步,通过状态及跳转,根据HPI接口提供的时序图,在每个状态作相应的动作,每个状态机相应的操作如下:

(1)初始化将HCS拉低,HDS1,HDS2置高;然后跳转到(2);

(2)将HDS2拉低;跳转到(3);

(3)判断是否HPI空闲,即检测HRDY信号是否为低,如果不为低,则在State3等待,如果为低,则将数据送到HPI的数据线HD,更新地址和计数,然后跳转到(4);

(4)将HDS2拉高。并跳转到(5);

(5)将HCS拉高,病跳转到(6);

(6)判断是否读写到结束地址,如果没有到达,则跳转到State1,否则给NIOS嵌入式处理器发送HPI_WR_FINISH信号,并在State6中进行循环等待。

进一步,所述NIOS嵌入式处理器包括:

HPI_Init()函数,用来初始化HPI控制逻辑模块,信号操作有,将HPI_EN信号拉低,HPI_RST信号拉低;

HPI_Write()函数,用于执行写操作,调用HPI_RST()函数,使HPI控制逻辑模块复位,之后调用HPI_SET_WR()设定HPI控制逻辑模块执行写操作;调用SET_HPI_START_ADDR()函数设定写操作的起始地址,然后调用SET_HPI_END_ADDR()函数,设定写操作的结束地址;完成设定后,调用FIFO_WR_DATA(data)函数将需要写入的数据,写入到HPI的写FIFO中,写完数据之后,调用HPI_EN()函数,然后HPI控制逻辑模块就会将数据从写FIFO中读出,通过HPI接口写入DSP相应的地址;调用HPI_WR_FINISH()函数,查询是否写操作结束,判断结束,即完成写操作;

HPI_Read()函数,用于执行读操作,调用HPI_RST()函数,使HPI控制逻辑模块复位,之后调用HPI_SET_RD()函数设定HPI控制逻辑模块执行读操作,调用SET_HPI_START_ADDR()函数,设定读操作的起始地址,调用SET_HPI_END_ADDR()函数,设定读操作的结束地址;完成设定后,调用FIFO_RD_DATA()函数将需要写入的数据,HPI控制逻辑模块就会将目标地址的数据读出并缓存到RFIFO,即读FIFO中;调用HPI_RD_FINISH_QUERY()函数,判断是否读操作结束,读操作结束之后,只需执行FIFO_RD_DATA()函数即可将数据从读FIFO中读出;

HPI_Program_Load()函数,用于执行程序加载,调用HPI_RST(),复位HPI控制逻辑模块,然后调用HPI_Write()函数,将已经解析的程序分别写入到目标区域,完成之后调用SET_HPI_LOAD()设定HPI进行HPI加载操作,然后调用HPI_EN()函数使能HPI控制逻辑模块,通过HPI_LOAD_FINISH_QUERY()信号查询是否加载完成;

HPI_EN()函数,使能HPI控制逻辑模块,将HPI_EN信号拉低;

HPI_SET_WR()函数,设置HPI控制逻辑模块进行写操作,将HPI_WR信号置高;

HPI_SET_RD()函数,设置HPI控制逻辑模块进行读操作,将HPI_WR信号拉低;

HPI_SET_LOAD()函数,设置HPI控制逻辑模块进行程序加载操作,将HPI_LOAD信号置高;

HPI_RST()函数,将HPI控制逻辑模块复位,将HPI_RST信号置低;

TX_FIFO_CLR()函数,将HPI控制逻辑模块中的写FIFO清空,将TFIFO的clr拉低,然后置高;

RX_FIFO_CLR()函数,将HPI控制逻辑模块中的读FIFO清空,将RFIFO的clr拉低,然后置高;

SET_HPI_START_ADDR,设定读、写操作的起始地址,将HPI_START_ADDR设置为指定的值;

SET_HPI_END_ADDR,设定读、写操作的结束地址,将HPI_END_ADDR信号设置为指定的值;

FIFO_WR_EN()函数,使能FIFO的写操作,将TFIFO_WR_EN置高;

FIFO_RD_EN()函数,使得FIFO的写操作,将RFIFO_RD_EN置高;

FIFO_WR_DISEN()函数,禁止FIFO的写操作,将TFIFO_WR_EN拉低;

FIFO_RD_DISEN()函数,禁止FIFO的读操作,将RFIFO_RD_EN信号拉低;

FIFO_WR_CLK_H()函数,将FIFO的wrclk置高,将TFIFO_WR_CLK置高;

FIFO_WR_CLK_L()函数,将FIFO的wrclk拉低,对应是将TFIFO_WR_CLK拉低;

FIFO_RD_CLK_H()函数,将FIFO的rdclk置高,对应是将TFIFO_WR_CLK置高;

FIFO_RD_CLK_L()函数,将FIFO的rdclk拉低,对应是将TFIFO_WR_CLK拉低;

FIFO_RD_DATA()函数,是从RFIFO即HPI的读FIFO中读取数据,调用FIFO_RD_EN使能读FIFO操作,然后每读一个数据通过调用FIFO_RD_CLK_H()先拉高,然后在调用FIFO_RD_CLK_L()在拉低;

FIFO_WR_DATA(data)函数,是将数据data写入TFIFO即HPI控制逻辑模块的写FIFO中,首先调用FIFO_RD_EN使能读FIFO操作,首先将数据送到HPI_DATA[15:0],然后每读一个数据通过调用FIFO_RD_CLK_H()先拉高,然后在调用FIFO_RD_CLK_L()在拉低;然后一个数据就写入到TFIFO中;

HPI_WR_FINISH_QUERY()函数,是查询是否写操作结束,对应是读HPI_WR_FINISH信号是否为高;

HPI_WR_READ_QUERY()函数,是查询是否读操作结束,对应是读HPI_RD_FINISH信号是否为高;

HPI_LOAD_FINISH_QUERY()函数,是查询是程序加载操作结束,对应是读HPI_LOAD_FINISH信号是否为高。

本发明的另一目的在于提供一种应用所述基于NIOS嵌入式处理器控制HPI接口的控制系统的嵌入式处理器。

本发明提供的基于NIOS嵌入式处理器控制HPI接口的控制系统,通过模块化,和软件抽象,实现对HPI简便的控制;采用模块化,实现了NIOS II软核处理器实现对HPI(HOST PORT INTERFACE)控制器的控制。本发明可以实现灵活的HPI控制,通过简单的控制函数即可实现对HPI方便的控制,并提供较大数据的缓存作用;可以大大简化了对HPI接口设备的控制,加快产品开发周期,简化设计流程;该控制器需要实现NIOS对HPI接口的控制,并实现完备的HPI操作,提供简易的调用接口。

对比分析如下表:

附图说明

图1是本发明实施例提供的基于NIOS嵌入式处理器控制HPI接口的控制系统结构示意图;

图中:1、NIOS嵌入式处理器;2、HPI控制逻辑模块;3、HPI接口。

图2是本发明实施例提供的HPI接口的信号示意图。

图3是本发明实施例提供的HSTROBE信号产生逻辑示意图。

图4是本发明实施例提供的HPI写时序示意图。

图5是本发明实施例提供的写操作状态机示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

下面结合附图对本发明的应用原理作详细的描述。

如图1所示,本发明实施例提供的基于NIOS嵌入式处理器控制HPI接口的控制系统包括:NIOS嵌入式处理器1、HPI控制逻辑模块2、HPI接口3。

NIOS嵌入式处理器1,包括读FIFO和写FIFO信号,NIOS嵌入式处理器1给HPI控制逻辑模块2的控制信号,以及HPI控制逻辑模块2给NIOS嵌入式处理器1的反馈信号。

HPI控制逻辑模块2,根据手册提供的HPI的时序要求,使用状态机实现流程的控制。

HPI接口3,HPI接口3是一种连接到主机并与主机进行通信的并行接口。主要用于实现对DSP芯片与其他总线或者CPU进行通信和数据交换。主机或其他主控芯片可以通过HPI接口3实现与DSP芯片的片内存储器进行数据或者信息的交换。

其中读FIFO和写FIFO的控制信号有:

·TFIFO_FULL:写FIFO的满信号;

·TFIFO_WR_CLK:写FIFO的写时钟;

·TFIFO_WR_EN:写FIFO使能信号;

·TFIFO_WR_DATA[15:0]:给写FIFO的中送入数据;

·RFIFO_RD_CLK:读FIFO的时钟;

·RFIFO_RD_EN:读FIFO的使能信号;

·RFIFO_EMPTY:读FIFO的空信号,即将读FIFO读空是有效;

·RFIFO_RD_DATA[15:0]:从读FIFO中读取的数据;

·RFIFO_WRUSEDW[15:0]:读FIFO中所存数据的个数。

其中NIOS嵌入式处理器1给HPI控制逻辑模块2的控制信号有:

·HPI_EN:HPI的使能信号。高电平有效;

·HPI_LOAD:给HPI的加载信号,在进行加载程序时进行调用;

·HPI_WR:控制HPI控制逻辑模块2进行读写操作,高电平为读,低电平为写;

·START_ADDR[31:0]:进行操作的目标地址的起始地址,长度为32位;

·END_ADDR[31:0]:进行操作目标地址的结束地址,长度为32位;

HPI控制逻辑模块2的反馈信号包括:

·HPI_LOAD_FINISH:程序加载完成之后的反馈信号;

·HPI_RD_FINISH:HPI控制逻辑模块2完成读操作之后的反馈信号;

·HPI_WR_FINISH:HPI控制逻辑模块2完成写操作之后的反馈信号。

HPI控制逻辑模块2,分为三个部分,HPI读单元,HPI写单元,HPI程序加载单元。所述HPI控制逻辑模块2包括,读FIFO即图中的RFIFO,写FIFO即图中的TFIFO,以及核心控制模块即图中的HPI核心控制模块。其中读FIFO和写FIFO主要提供数据缓存,而核心控制模块主要实现和HPI接口的交互。对HPI控制逻辑模块2信号进行分类,是NIOS嵌入式处理器1给HPI控制的信号,紫色信号是HPI控制逻辑模块2给NIOS嵌入式处理器1的反馈信号。黑色为HPI控制逻辑模块2内部信号,绿色为HPI控制逻辑模块2给HPI接口的信号,而黄色则是HPI接口3给HPI控制逻辑模块2的。

HPI读单元,功能为完成读操作,读操作首先初始化HPI控制逻辑模块2,然后设定读操作的地址范围,即设定起始地址和结束地址。完成这些操作之后,使能HPI控制逻辑模块2的读,等待读操作完成,从读FIFO中即可读出刚才设定的地址范围的数据。

HPI写单元,功能为完成写操作,写操作首先初始化HPI控制逻辑模块2,然后设定读操作的地址范围,即设定起始地址和结束地址。完成这些操作之后,将需要写入的数据写入到写FIFO中即TFIFO中,完成之后,使能HPI写操作,等待HPI写完成信号直到HPI写结束。

HPI程序加载单元。该单元完成HPI程序加载,首先初始化HPI控制逻辑模块2,然后将解析之后的程序,通过HPI写操作,写入到目标地址,然后使能HPI程序加载,等待HPI加载完成信号。完成HPI程序加载操作。

HPI控制逻辑模块2对HPI接口3的信号如下:

信号内容为:

数据线HD:HPI的数据线,在复用模式下,数据线的宽度一般为CPU位宽的一半。一个HPI访问分为高低半字两次访问。

HCNTL:HCNTL 0/1选择访问的HPI寄存器。

HWIL:控制访问寄存器的高低半字,必须先高后低。

HR/W:指示对HPI寄存器进行读,还是写。

HCS:HPI的片选信号。

HDS1 HDS2:这两个信号和HCS信号根据图中逻辑产生内部HSTORBE信号,其逻辑关系是要求HDS1和HDS2信号相反,HCS低有效。HSTROBE下降沿的时间点反应的是三个信号中最后跳变的信号。HPI在HSTROBE的下降沿采样控制信号HR/W,如图2。

HRDY:HPI的输出信号,指示当前操作状态,用做硬件流量控制握手信号。

HINT:通过HPI,主机与DSP之间可以互发中断。HINT是HPI送给主机的中断信号。

ALE:存在于地址,数据线复用的主机上用来指示地址信号周期。

BE:Byte Enable信号,这个信号只出现在32位的TIC6000系列DSP上。

下面结合具体的应用对本发明的应用原理作进一步的描述。

通过状态及跳转,根据HPI接口提供的时序图如图3,在每个状态作相应的动作。下边以写操作为例,介绍具体的设计过程和方法。读操作和写操作类似,程序加载单独分析。

设计的状态机如图4:

每个状态机相应的操作如下:

State1:初始化将HCS拉低,HDS1,HDS2置高。然后跳转到State2。

State2:将HDS2拉低。跳转到State3。

State3:判断是否HPI空闲,即检测HRDY信号是否为低,如果不为低,则在State3等待,如果为低,则将数据送到HPI的数据线HD,更新地址和计数,然后跳转到State4。

State4:将HDS2拉高。并跳转到State5。

State5:将HCS拉高,并跳转到State6。

State6:判断是否读写到结束地址,如果没有到达,则跳转到State1,否则给NIOS嵌入式处理器发送HPI_WR_FINISH信号,并在State6中进行循环等待。

程序加载逻辑设计

程序加载,首先将DSP程序编译成可执行的.out文件,然后对.out文件进行解析,获取.out文件转换成16进制的数据。

使用HPI写操作,将.out数据写入到各个程序区中。完成写操作之后。通过调用Load函数,HPI控制逻辑模块对应的操作就是将HPIC寄存器中DSPINT位置高。然后DSP就会从零地址开始执行代码。

NIOS嵌入式处理器部分设计

NIOSII部分需要设计实现操作函数,通过调用函数就可以简单的实现对HPI接口的控制。

在NIOS II处理器层,设计了以下几个函数,如下表1:

表1HPI接口控制函数:

以下对各个函数以及对应的信号处理过程加以叙述。

1,HPI_Init()该函数用来初始化HPI控制逻辑模块,主要信号操作有,将HPI_EN信号拉低,HPI_RST信号拉低。

2,HPI_Write()该函数用于执行写操作,首先调用HPI_RST()函数,使HPI控制逻辑模块复位,之后调用HPI_SET_WR()设定HPI控制逻辑模块执行写操作。然后调用SET_HPI_START_ADDR()函数设定写操作的起始地址,然后调用SET_HPI_END_ADDR()函数,设定写操作的结束地址。完成设定后,调用FIFO_WR_DATA(data)函数将需要写入的数据,写入到HPI的写FIFO中,写完数据之后,调用HPI_EN()函数,然后HPI控制逻辑模块就会将数据从写FIFO中读出,通过HPI接口写入DSP相应的地址。然后调用HPI_WR_FINISH()函数,查询是否写操作结束,判断结束,即完成写操作。函数执行完成。

3,HPI_Read()该函数用于执行读操作,首先调用HPI_RST()函数,使HPI控制逻辑模块复位,之后调用HPI_SET_RD()函数设定HPI控制逻辑模块执行读操作,然后调用SET_HPI_START_ADDR()函数,设定读操作的起始地址,然后调用SET_HPI_END_ADDR()函数,设定读操作的结束地址。完成设定后,调用FIFO_RD_DATA()函数将需要写入的数据,HPI控制逻辑模块就会将目标地址的数据读出并缓存到RFIFO,即读FIFO中。然后调用HPI_RD_FINISH_QUERY()函数,判断是否读操作结束。读操作结束之后,只需执行FIFO_RD_DATA()函数即可将数据从读FIFO中读出。

4,HPI_Program_Load()该函数用于执行程序加载,执行过程为,首先调用HPI_RST(),复位HPI控制逻辑模块,然后调用HPI_Write()函数,将已经解析的程序分别写入到目标区域,完成之后调用SET_HPI_LOAD()设定HPI进行HPI加载操作,然后调用HPI_EN()函数使能HPI控制逻辑模块。然后通过HPI_LOAD_FINISH_QUERY()信号查询是否加载完成。

5,HPI_EN()该函数作用是使能HPI控制逻辑模块,对应就是将HPI_EN信号拉低。

6,HPI_SET_WR()该函数作用是设置HPI控制逻辑模块进行写操作,对应将HPI_WR信号置高。

7,HPI_SET_RD()该函数作用是设置HPI控制逻辑模块进行读操作,对应将HPI_WR信号拉低。

8,HPI_SET_LOAD()该函数作用是设置HPI控制逻辑模块进行程序加载操作,对应的是将HPI_LOAD信号置高。

9,HPI_RST()该函数作用就是将HPI控制逻辑模块复位,对应的是将HPI_RST信号置低。

10,TX_FIFO_CLR()该函数是将HPI控制逻辑模块中的写FIFO清空,对应的信号是将TFIFO的clr拉低,然后置高。

11,RX_FIFO_CLR()该函数是将HPI控制逻辑模块中的读FIFO清空,对应的是将RFIFO的clr拉低,然后置高。

12,SET_HPI_START_ADDR(unsigned int addr),设定读、写操作的起始地址,对应是将HPI_START_ADDR设置为指定的值。

13,SET_HPI_END_ADDR(unsigned int addr),设定读、写操作的结束地址,对应是将HPI_END_ADDR信号设置为指定的值。

14,FIFO_WR_EN()函数使能FIFO的写操作,对应是将TFIFO_WR_EN置高。

15,FIFO_RD_EN()函数使得FIFO的写操作,对应是将RFIFO_RD_EN置高。

16,FIFO_WR_DISEN()函数禁止FIFO的写操作,对应是将TFIFO_WR_EN拉低。

17,FIFO_RD_DISEN()函数禁止FIFO的读操作,对应是将RFIFO_RD_EN信号拉低。

18,FIFO_WR_CLK_H()函数将FIFO的wrclk置高,对应是将TFIFO_WR_CLK置高。

19,FIFO_WR_CLK_L()函数将FIFO的wrclk拉低,对应是将TFIFO_WR_CLK拉低。

20,FIFO_RD_CLK_H()函数将FIFO的rdclk置高,对应是将TFIFO_WR_CLK置高。

21,FIFO_RD_CLK_L()函数将FIFO的rdclk拉低,对应是将TFIFO_WR_CLK拉低。

22,FIFO_RD_DATA()函数是从RFIFO即HPI的读FIFO中读取数据。首先调用FIFO_RD_EN使能读FIFO操作,然后每读一个数据通过调用FIFO_RD_CLK_H()先拉高,然后在调用FIFO_RD_CLK_L()在拉低。这样就读取到一个数据。

23,FIFO_WR_DATA(data)函数是将数据data写入TFIFO即HPI控制逻辑模块的写FIFO中,首先调用FIFO_RD_EN使能读FIFO操作,首先将数据送到HPI_DATA[15:0],然后每读一个数据通过调用FIFO_RD_CLK_H()先拉高,然后在调用FIFO_RD_CLK_L()在拉低。然后一个数据就写入到TFIFO中。

24,HPI_WR_FINISH_QUERY()该函数是查询是否写操作结束,对应是读HPI_WR_FINISH信号是否为高。

25,HPI_WR_READ_QUERY()该函数是查询是否读操作结束,对应是读HPI_RD_FINISH信号是否为高。

26,HPI_LOAD_FINISH_QUERY()该函数是查询是程序加载操作结束,对应是读HPI_LOAD_FINISH信号是否为高。

下面通过对比分析对本发明的应用效果作详细的描述。

DSP在XXX条件的测试设备中,需要对DSP芯片进行程序加载,数据读写等测试。按照项目需求,需要对DSP内部的存储区,以及运算单元进行测试,并通过上位机进行控制和显示。

通过分析,制定了两套方案,方案一,通过纯硬件逻辑实现对HPI接口以及上位机的统计和数据处理。方案二,通过基于NIOSII嵌入式处理器实现对HPI接口的控制。

对比分析,方案一,优点较为成熟,现成案例较多,缺点,抽象层次低,实现难度大,不便于扩展和维护。方案二,优点,抽象层次高,控制方式简便,且易于扩展,例如添加通信模块等等。经过分析比较,采用了第二种方案,也就是本发明所述方案。

按照以上所述方法,实现系统,并经过测试,正式作为产品发布。一下简要介绍测试方法。首先,关于HPI读写的控制,首先通过JTAG观测到DSP内部,一个目标地址范围的数据。然后对控制HPI接口,从目标地址读出数据,对比是否一致。通过测试,本发明可以实现对HPI接口的读操作。对HPI的写操作,首先也是通过JTAG观测DSP内部目标地址的数据,然后对目标地址执行HPI写操作,写入一个特定的数据,然后通过JTAG观测,是否和写入的值一致。通过测试,本发明可以实现对HPI接口的写操作。最后是HPI的程序加载,首先加载的程序作用是在目标地址写入一组连续的数据。首先通过JTAG观测目标地址的数据,然后执行HPI程序加载操作。再次观测目标地址数据。看是否是程序执行的结果。通过测试,可以实现对HPI接口的程序加载操作。通过项目实践,本发明确实可行,满足设计要求。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1