首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明公布】基于NIOS嵌入式处理器控制HPI接口的控制系统_西安电子科技大学_201611008253.9 

申请/专利权人:西安电子科技大学

申请日:2016-11-16

公开(公告)日:2017-04-26

公开(公告)号:CN106597920A

主分类号:G05B19/042(2006.01)I

分类号:G05B19/042(2006.01)I

优先权:

专利状态码:有效-授权

法律状态:2019.07.26#授权;2017.05.24#实质审查的生效;2017.04.26#公开

摘要:本发明公开了一种基于NIOS嵌入式处理器控制HPI接口的控制系统,设置有:NIOS嵌入式处理器,HPI控制逻辑模块,应用根据提供的HPI的时序要求,使用状态机实现流程的控制;HPI接口,是连接到主机并与主机进行通信的并行接口;用于实现对DSP芯片与其他总线或者CPU进行通信和数据交换;主机或其他主控芯片通过HPI接口实现与DSP芯片的片内存储器进行数据或者信息的交换。本发明实现对HPI简便的控制;可以实现灵活的HPI控制,通过简单的控制函数即可实现对HPI方便的控制,并提供较大数据的缓存作用;可以大大简化了对HPI接口设备的控制,加快产品开发周期,简化设计流程。

主权项:一种基于NIOS嵌入式处理器控制HPI接口的控制系统,其特征在于,所述基于NIOS嵌入式处理器控制HPI接口的控制系统设置有:NIOS嵌入式处理器,包括读FIFO和写FIFO信号,NIOS嵌入式处理器给HPI控制逻辑模块的控制信号,以及HPI控制逻辑模块给NIOS嵌入式处理器的反馈信号;HPI控制逻辑模块,根据提供的HPI的时序要求,使用状态机实现流程的控制;HPI接口,连接到主机并与主机进行通信的并行接口;用于实现对DSP芯片与其他总线或者CPU进行通信和数据交换;主机或其他主控芯片通过HPI接口实现与DSP芯片的片内存储器进行数据或者信息的交换。

全文数据:基于NIOS嵌入式处理器控制HPI接口的控制系统技术领域本发明属于嵌入式接口控制技术领域,尤其涉及一种基于NIOS嵌入式处理器控制HPI接口的控制系统。背景技术HPI是HOSTPORTINTERFACE的简称。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:HCNTL01选择访问的HPI寄存器;HWIL:控制访问寄存器的高低半字,必须先高后低;HRW:指示对HPI寄存器进行读,还是写;HCS:HPI的片选信号;HDS1HDS2:两个信号和HCS信号根据图中逻辑产生内部HSTORBE信号,其逻辑关系是要求HDS1和HDS2信号相反,HCS低有效;HSTROBE下降沿的时间点反应的是三个信号中最后跳变的信号;HPI在HSTROBE的下降沿采样控制信号HRW;HRDY:HPI的输出信号,指示当前操作状态,用做硬件流量控制握手信号;HINT:通过HPI,主机与DSP之间互发中断,HINT是HPI送给主机的中断信号;ALE:存在于地址,数据线复用的主机上用来指示地址信号周期;BE:ByteEnable信号。进一步,通过状态及跳转,根据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_DATAdata函数将需要写入的数据,写入到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_DATAdata函数,是将数据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简便的控制;采用模块化,实现了NIOSII软核处理器实现对HPIHOSTPORTINTERFACE控制器的控制。本发明可以实现灵活的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:HCNTL01选择访问的HPI寄存器。HWIL:控制访问寄存器的高低半字,必须先高后低。HRW:指示对HPI寄存器进行读,还是写。HCS:HPI的片选信号。HDS1HDS2:这两个信号和HCS信号根据图中逻辑产生内部HSTORBE信号,其逻辑关系是要求HDS1和HDS2信号相反,HCS低有效。HSTROBE下降沿的时间点反应的是三个信号中最后跳变的信号。HPI在HSTROBE的下降沿采样控制信号HRW,如图2。HRDY:HPI的输出信号,指示当前操作状态,用做硬件流量控制握手信号。HINT:通过HPI,主机与DSP之间可以互发中断。HINT是HPI送给主机的中断信号。ALE:存在于地址,数据线复用的主机上用来指示地址信号周期。BE:ByteEnable信号,这个信号只出现在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接口的控制。在NIOSII处理器层,设计了以下几个函数,如下表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_DATAdata函数将需要写入的数据,写入到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_ADDRunsignedintaddr,设定读、写操作的起始地址,对应是将HPI_START_ADDR设置为指定的值。13,SET_HPI_END_ADDRunsignedintaddr,设定读、写操作的结束地址,对应是将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_DATAdata函数是将数据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.一种基于NIOS嵌入式处理器控制HPI接口的控制系统,其特征在于,所述基于NIOS嵌入式处理器控制HPI接口的控制系统设置有:NIOS嵌入式处理器,包括读FIFO和写FIFO信号,NIOS嵌入式处理器给HPI控制逻辑模块的控制信号,以及HPI控制逻辑模块给NIOS嵌入式处理器的反馈信号;HPI控制逻辑模块,根据提供的HPI接口的时序要求,使用状态机实现流程的控制;HPI接口,与HPI控制逻辑模块连接;所述HPI控制逻辑模块包括,读FIFO即RFIFO,写FIFO即TFIFO,以及核心控制模块即HPI核心控制模块;读FIFO和写FIFO提供数据缓存;核心控制模块实现和HPI接口的交互,对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程序加载操作;通过状态及跳转,根据HPI接口提供的时序图,在每个状态作相应的动作,每个状态机相应的操作如下:1初始化将HCS拉低,HDS1,HDS2置高;然后跳转到2;2将HDS2拉低;跳转到3;3判断是否HPI空闲,即检测HRDY信号是否为低,如果不为低,则在3等待,如果为低,则将数据送到HPI接口的数据线HD,更新地址和计数,然后跳转到4;4将HDS2拉高;并跳转到5;5将HCS拉高,并跳转到6;6判断是否读写到结束地址,如果没有到达,则跳转到1,否则给NIOS嵌入式处理器发送HPI_WR_FINISH信号,并在6中进行循环等待;HCS:HPI的片选信号;HDS1HDS2:两个信号和HCS信号根据逻辑产生内部HSTORBE信号,其逻辑关系是要求HDS1和HDS2信号相反,HCS低有效;HSTROBE下降沿的时间点反应的是三个信号中最后跳变的信号;HPI在HSTROBE的下降沿采样控制信号HRW;HRDY:HPI的输出信号,指示当前操作状态,用做硬件流量控制握手信号;数据线HD:HPI的数据线,在复用模式下,数据线的宽度为CPU位宽的一半;一个HPI访问分为高低半字两次访问;HPI_WR_FINISH:HPI控制逻辑模块完成写操作之后的反馈信号。2.如权利要求1所述的基于NIOS嵌入式处理器控制HPI接口的控制系统,其特征在于,所述读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控制逻辑模块完成写操作之后的反馈信号。3.一种如权利要求1所述基于NIOS嵌入式处理器控制HPI接口的控制系统的控制方法,其特征在于,所述控制方法包括:NIOS嵌入式处理器通过调用相关函数采用管脚信号控制HPI控制逻辑模块,然后HPI控制逻辑模块通过状态机跳转,满足HPI接口实现对HPI接口实现控制。4.如权利要求3所述的控制方法,其特征在于,所述HPI控制逻辑模块对HPI接口的信号包括:数据线HD:HPI的数据线,在复用模式下,数据线的宽度为CPU位宽的一半;一个HPI访问分为高低半字两次访问;HCNTL:HCNTL01选择访问的HPI寄存器;HWIL:控制访问寄存器的高低半字,必须先高后低;HRW:指示对HPI寄存器进行读,还是写;HCS:HPI的片选信号;HDS1HDS2:两个信号和HCS信号根据逻辑产生内部HSTORBE信号,其逻辑关系是要求HDS1和HDS2信号相反,HCS低有效;HSTROBE下降沿的时间点反应的是三个信号中最后跳变的信号;HPI在HSTROBE的下降沿采样控制信号HRW;HRDY:HPI的输出信号,指示当前操作状态,用做硬件流量控制握手信号;HINT:通过HPI,与DSP之间互发中断,HINT是HPI送给主机的中断信号;ALE:存在于地址,数据线复用的主机上用来指示地址信号周期;BE:ByteEnable信号。5.如权利要求3所述的控制方法,其特征在于,所述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_DATAdata函数将需要写入的数据,写入到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_DATAdata函数,是将数据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_EN:HPI的使能信号;高电平有效;HPI_LOAD_FINISH_QUERY函数,是查询是程序加载操作结束,对应是读HPI_LOAD_FINISH信号是否为高;HPI_RST信号是HPI接口控制模块的复位信号;HPI_WR_FINISH函数是查询HPI写数据结束标志位的函数;SET_HPI_LOAD函数是设置HPI控制器中LOAD信号为1的操作函数;HPI_START_ADDR为HPI写入或者读取DSP地址空间的起始地址值;HPI_END_ADDR为HPI写入或者读取DSP地址空间的结束地址值。6.一种应用权利要求1~2任意一项所述基于NIOS嵌入式处理器控制HPI接口的控制系统的嵌入式处理器。

百度查询: 西安电子科技大学 基于NIOS嵌入式处理器控制HPI接口的控制系统

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。