一种外部事件触发断点的芯片仿真方法与流程

文档序号:11216604阅读:478来源:国知局
一种外部事件触发断点的芯片仿真方法与流程

本发明属于在线仿真技术领域,特别涉及基于fpga平台的处理器芯片在线仿真的方法。



背景技术:

在芯片仿真器领域,设置仿真断点是必不可少的一项功能。在仿真器设计中,主要是对sfr、sram等的数据/地址总线监控,当其满足断点条件时触发断点,暂停仿真过程。这就要求,用户必须通过cpu或者仿真接口调起相关总线运行时,才能触发断点。

而一些不受总线控制的外部事件(如芯片外设产生的中断,芯片外部输入引脚变化的电平等)变化时,无法触发断点功能,这个给用户造成了很多不便,增加了用户开发难度和周期。

如专利申请201310746037.4公开了一种多核dsp软件仿真器及其物理层软件测试方法,包括:通过调试应用程序接口同时建立多个dsp核的模拟器进程,并实现多核的指令级同步;根据预设需求依次为每个模拟器配置私有内存和外部内存,并将共享内存映射到每个模拟器的私有内存,以实现模拟器对共享内存的访问;调试应用程序接口的观测器接口检测指定的内存区域,当dsp访问这片内存时,观测器调用回调函数,在回调函数中通过调试应用程序接口的信号管理接口触发核间中断,以实现多核间的事件级同步。此外,通过测试脚本的方式引入外部事件和协议栈的高层消息原语,通过测试脚本的方式模拟射频数据,实现物理层软件的集成测试。

然而,该方法通过测试脚本的方式引入外部事件和协议栈的高层消息原语,通过测试脚本的方式模拟射频数据,实现物理层软件的集成测试,还是通过数据总线来触发断点,对芯片外设产生的中断,芯片外部输入引脚变化的电平等情况,无法触发断点功能。



技术实现要素:

基于此,因此本发明的首要目地是提供一种外部事件触发断点的芯片仿真方法,该方法拓展仿真器断点功能,增加对外部事件的监控来触发仿真断点。

本发明的另一个目地在于提供一种外部事件触发断点的芯片仿真方法,该方法对外部事件信号进行滤波,去抖,时钟域切换等预处理,并对其进行监控产生触发信号,且实现简便,成本低廉。

为实现上述目的,本发明的技术方案为:

一种外部事件触发断点的芯片仿真方法,对外部事件信号进行滤波,去抖,时钟域切换等预处理,并对其进行监控产生触发信号;然后将外部事件与内部总线事件交互,与总线触发整合。

具体地说,外部事件触发源的数据输入到预处理模块进行滤波,消抖,时钟域切换等处理;然后进行触发产生断点信息,经过触发产生模块,当外部事件变化时,产生触发断点信息信号,并同步输出变化后的外部事件数据;将外部事件的触发断点信息信号和数据传入仿真断点控制模块与总线触发整合。

进一步,对外部触发源进行预处理,包括并且不限于以下处理方法:

对外部输入引脚的电平信号,进行滤波去抖处理,实质上,在输入电平变化后,使用滤波去抖时钟进行计数,当计数值达到预设值后,输入电平依然保持不变则视为输入电平变化有效,输出变化后的电平,并且清零计数值,等待下一次输入电平变化重新计数;当计数值未达到预设值的时候输入电平就变化了则视为抖动,不改变滤波输出电平,清零计数值,重新计数。

更进一步,上述处理中:(1)滤波时钟可以灵活配置为cpu时钟,或者fpga最快全局时钟。外部输入电平可能也会通过总线到达cpu从而产出相应的程序运行结果,因此使用cpu时钟作为滤波时钟,可以等外部事件引起的程序运行结果完成后再触发仿真断点,暂停仿真,使用户可以看到完整的外部事件触发结果。当一些外部事件产生的结果不会通过总线影响到程序运行的时候,滤波时钟配置为fpga最快全局时钟可以快速产生仿真断点触发,体现实时性,为用户定格外部事件变化瞬间仿真器的运行状态。(2)计数预设值可以配置。当外部引脚接入为按键等外部器件时,其电平变化存在的抖动时间可能不一致,提供可以配置的滤波去抖预设值,可以拓宽滤波去抖的适用范围。

更进一步,所述方法在滤波后,还需要进行跨时钟域处理,当外部事件与相关系统时钟为关系异步的话,需要进行处理;为了能对外部事件数据进行单bit分别监控,跨时钟域也对其进行单bit处理,可以用fpga最快全局时钟或者cpu时钟打两拍,打到内部系统时钟域。总的原则是,不能将异步信号引入断点触发系统。

更进一步,所述触发产生:触发断点信息信号是由外部事件的变化产生的,一个外部事件,产生一个一bit的外部事件触发断点信息信号,高电平有效,维持一个时钟周期。而整个外部事件可能是多bit的,于是,对外部事件增加单bit触发使能控制信号,用户可以分别使能若干bit触发使能,从而精确控制想要监控的具体外部事件细节。

更进一步,对于数据为多bit的外部事件来说,其触发产生模块送给触发控制模块的数据事实上有两个来源,一个是外部触发源,一个是相关内部总线。其每一bit数据可以独立控制,当使能为外部触发时,选择外部输入源,否则选择内部总线。这样外部事件可以和内部总线结合,使得外部事件可以与总线共同作用产生仿真断点。

pc机(上位机ide)首先发送断点信息到fpga(下位机ice),告知在fpga在执行到下一条pc值等于断点时停住;fpga接收数据后,保存断点信息,发送应答指令fspddack,应答指令的数据中包含两个byte数据,第一个byte表明校验结果,第二个byte表明接收数据个数。

断点发送完成后,pc再次发送psfstart命令包,告知fpga开始运行。fpga接收到开始运行指令psfstart后,开始运行,直到断点处停住,发送数据回传指令fsprb给pc,并返回sfr和ram数据;pc端接收到指令和数据,校验结果正确后,如果需要读取更多ram数据,则返回psfcack指令,继续接收数据;如果不需要再读取数据,则返回psfeack指令,表明接收无误,校验结果错误重新建立连接。

触发监控条件设置:

首先由pc端发送触发功能设置命令psftrigset到fpga,各数据都是一个字节。

其中,各数据定义如下:

r_num:触发序号。r_addr:触发地址。r_data_set:触发数据。r_op:触发操作,包含触发条件(等于、大于、小于、大于等于、小于等于、不等)及其之间的关系(与、或)等定义。

本发明所实现的外部事件触发断点的芯片仿真方法,增加外部事件触发仿真断点功能,使用户可以通过改变外部输入引脚的电平或者控制芯片外设产生中断来触发仿真断点,并且,能同时对外部事件与内部总线事件设置监控条件来触发仿真断点,拓展了用户仿真调试的方法,更加全面地监控了仿真器的仿真资源,极大地提高了用户体验,缩短用户的芯片开发周期。

附图说明

图1是本发明所实现的总体架构框图。

图2是本发明所实现的预处理结构框图。

图3是本发明所实现的断点数据产生示意图。

图4是本发明应用于io口触发断点的示意图。

具体实施方式

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

图1所示,为本发明所实现的总体架构框图,图中所示,下位机ice具有外部触发源、预处理模块、触发产生模块、触发控制模块、仿真模块及cpu;上位机的仿真模块及cpu与下位机ide进行通讯。

外部事件触发源的数据输入到预处理模块进行滤波,消抖,时钟域切换等处理;后经过触发产生模块,当外部事件变化时,产生触发信号,并同步输出变化后的外部事件数据;将外部事件的触发信号和数据传入仿真断点控制模块与总线触发整合。

对外部触发源进行预处理,包括并且不限于以下处理方法:

对外部输入引脚的电平信号,进行滤波去抖处理,实质上,在输入电平变化后,使用滤波去抖时钟进行计数,当计数值达到预设值后,输入电平依然保持不变则视为输入电平变化有效,输出变化后的电平,并且清零计数值,等待下一次输入电平变化重新计数;当计数值未达到预设值的时候输入电平就变化了则视为抖动,不改变滤波输出电平,清零计数值,重新计数。

结合图2所示,上述处理中:(1)滤波时钟可以灵活配置为cpu时钟,或者fpga最快全局时钟。外部输入电平可能也会通过总线到达cpu从而产出相应的程序运行结果,因此使用cpu时钟作为滤波时钟,可以等外部事件引起的程序运行结果完成后再触发仿真断点,暂停仿真,使用户可以看到完整的外部事件触发结果。当一些外部事件产生的结果不会通过总线影响到程序运行的时候,滤波时钟配置为fpga最快全局时钟可以快速产生仿真断点触发,体现实时性,为用户定格外部事件变化瞬间仿真器的运行状态。(2)计数预设值可以配置。当外部引脚接入为按键等外部器件时,其电平变化存在的抖动时间可能不一致,提供可以配置的滤波去抖预设值,可以拓宽滤波去抖的适用范围。

进一步,所述方法在滤波后,还需要进行跨时钟域处理,当外部事件与相关系统时钟为关系异步的话,需要进行处理。为了能对外部事件数据进行单bit分别监控,跨时钟域也对其进行单bit处理,可以用fpga最快全局时钟或者cpu时钟打两拍,打到内部系统时钟域。总的原则是,不能将异步信号引入断点触发系统。

如图3所示,触发产生:触发信号是由外部事件的变化产生的,一个外部事件,产生一个一bit的外部事件触发信号,高电平有效,维持一个时钟周期。而整个外部事件可能是多bit的,于是,对外部事件增加单bit触发使能控制信号,用户可以分别使能若干bit触发使能,从而精确控制想要监控的具体外部事件细节。

对于数据为多bit的外部事件来说,其触发产生模块送给触发控制模块的数据事实上有两个来源,一个是外部触发源,一个是相关内部总线。其每一bit数据可以独立控制,当使能为外部触发时,选择外部输入源,否则选择内部总线。这样做的创新点在于,外部事件可以和内部总线结合,使得外部事件可以与总线共同作用产生仿真断点。

pc机(上位机ide)首先发送断点信息到fpga(下位机ice),告知在fpga在执行到下一条pc值等于断点时停住。

fpga接收数据后,保存断点信息,发送应答指令fspddack,应答指令的数据中包含两个byte数据,第一个byte表明校验结果,第二个byte表明接收数据个数。

断点发送完成后,pc再次发送psfstart命令包,告知fpga开始运行。fpga接收到开始运行指令psfstart后,开始运行,直到断点处停住,发送数据回传指令fsprb给pc,并返回sfr和ram数据。

pc端接收到指令和数据,校验结果正确后,如果需要读取更多ram数据,则返回psfcack指令,继续接收数据;如果不需要再读取数据,则返回psfeack指令,表明接收无误。校验结果错误重新建立连接。

触发监控条件设置:

首先由pc端发送触发功能设置命令psftrigset到fpga,各数据都是一个字节。数据的格式如下:

其中,各数据定义如下:

r_num:触发序号。r_addr:触发地址。r_data_set:触发数据。r_op:触发操作,包含触发条件(等于、大于、小于、大于等于、小于等于、不等)及其之间的关系(与、或)等定义。

下面,结合图4所示,为使用外部io口事件触发中断做具体实施例。

图中,ioa_data_in为实际io口输入电平(经过滤波同步预处理),ioa_en为io口输入使能控制寄存器,io_reg为受总线控制的cpu对io口的写寄存器,ioa_data为送到断点控制模块进行断点条件比较的io口寄存器当前值(受io口及总线共同控制)。

对整个ioa输入口,用户可以单独配置每一bit的输入输出状态,当其被配置成输入口时,使能该bit的断点triger功能,同时数据通路选择外部输入;当其被配置成输出口时,除能该bit的断点triger功能,同时数据通路选择总线输入;再与pc端中的ide进行交互,为用户实现外部事件触发及内部事件触发调试功能。

这种方式,具有以下优势:

1、支持单bitio口电平变化触发,用户可以使能单bitpt口作为输入口,当其输入发生变化时,若整个io口数值满足断点触发条件时,触发断点;

2、同时支持外部事件和总线触发,即整个io口可以一部分作为输入,一部分作为输出,输入由外部控制,输出由软件通过总线控制,当两者共同作用导致整个io寄存器满足数据断点条件时,触发断点。

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

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