一种DSP和FPGA紧耦合架构的协同验证方法转让专利

申请号 : CN201310372981.8

文献号 : CN103455401B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 蔡铭黄显晖

申请人 : 浙江大学

摘要 :

本发明公开了一种DSP和FPGA紧耦合架构的协同验证方法,DSP模拟器是建立在通用操作系统之上、基于数据流正确的模拟器,主要实现任务调度、中断处理、中断嵌套功能。采用HDL语言的PLI接口将与FPGA交互的接口写成HDL内部命令,以便FPGA与DSP模拟器进行通信。DSP和FPGA之间的通信采用以套接字为基础的CS模式。本发明弥补了指令级DSP模拟器的速度慢的问题,可以简化DSP和FPGA紧耦合验证过程,提高验证效率。

权利要求 :

1.一种DSP和FPGA紧耦合架构的协同验证方法,其特征在于,包括如下步骤:(1)在基于数据流正确的DSP模拟器运行主算法的进程和用户DSP任务,并且实现任务处理、任务调度、中断响应、中断嵌套功能;

(2)打开底层操作系统上的套接字服务器端,快速的响应FPGA仿真器发起的连接,如果没有连接就继续监听,如果有连接就根据FPGA的中断和读写以及退出命令进行相应处理;

(3)DSP模拟器对读写缓冲区进行检查,如果是FPGA的读写请求,如果是请求写,将缓冲区的时序信息和数据传给FPGA模拟器,如果是请求读,就接收FPGA模拟器发送的时序信息和数据;

(4)在FPGA仿真器周期性的调用PLI接口编写轮询DSP模拟器命令,查看DSP是否对FPGA有操作,如果写操作就把DSP模拟器数据写入FPGA的指定引脚,如果是读操作就把相应引脚数据传给DSP模拟器;

(5)FPGA模拟器利用PLI接口编写的中断命令产生中断信号,通过与DSP端的套接字服务器建立连接,将中断信息传给DSP模拟器;

(6)DSP模拟器根据中断号进行仲裁,如果中断进程的优先级比当前进程高,执行中断程序,如果优先级低于当前进程就忽略中断。

说明书 :

一种DSP和FPGA紧耦合架构的协同验证方法

技术领域

[0001] 本发明涉及FPGA验证和测试领域,尤其涉及一种DSP和FPGA紧耦合架构的协同验证方法。

背景技术

[0002] 自FPGA概念的提出以来,FPGA因其现场可编程、配置灵活、并行运行的特征,有了极为迅速的发展和运用。利用FPGA在DSP系统中替代传统的ASIC芯片,分流DSP芯片运算负载的架构,即FPGA和DSP紧耦合架构。
[0003] 随着架构的广泛应用,其开发也出现困境,这种架构验证一般使用HDL语言编写测试平台,这样过程控制会受到限制,使验证的困难增加。
[0004] DSP模拟器大部分是基于指令集的模拟,它能够支持外部事件和数据,但是这类模拟器的验证主体一般是DSP软件,提供了对软件调试的支持,而在FPGA和DSP紧耦合架构协同仿真中,测试验证主体是FPGA设计,所以DSP模拟器不需要使用指令级模拟,只要数据流正确就可以;同时这种指令模拟器的仿真速度比较慢,大大降低了协同仿真的速度。
[0005] FPGA仿真是对硬件的仿真,模拟器还要将外部的操作反映到硬件引脚,或与硬件引脚相连的总线上,极少的模拟器能实现这种功能,所以模拟器对外部数据和IO的操作不是很灵活。

发明内容

[0006] 本发明的目的是克服现有技术的不足,提供一种DSP和FPGA紧耦合架构的协同验证方法。
[0007] 本发明的目的是通过以下技术方案来实现的:一种DSP和FPGA紧耦合架构的协同验证方法,包括如下步骤:
[0008] (1)在基于数据流正确的DSP模拟器运行主算法的进程和用户DSP任务,并且实现任务处理、任务调度、中断响应、中断嵌套功能。
[0009] (2)打开底层操作系统上的套接字服务器端,快速的响应FPGA仿真器发起的连接,如果没有连接就继续监听,如果有连接就根据FPGA的中断和读写以及退出命令进行相应处理。
[0010] (3)DSP模拟器对读写缓冲区进行检查,如果是FPGA的读写请求,如果是请求写,将缓冲区的时序信息和数据传给FPGA模拟器,如果是请求读,就接收FPGA模拟器发送的时序信息和数据。
[0011] (4)在FPGA仿真器周期性的调用PLI接口编写轮询DSP模拟器命令,查看DSP是否对FPGA有操作,如果写操作就把DSP模拟器数据写入FPGA的指定引脚,如果是读操作就把相应引脚数据传给DSP模拟器。
[0012] (5)FPGA模拟器利用PLI接口编写的中断命令在特定的仿真时刻产生中断信号,通过与DSP端的套接字服务器建立连接,将中断信息传给DSP模拟器。
[0013] (6)DSP模拟器根据中断号进行仲裁,如果中断进程的优先级比当前进程高,执行中断程序,如果优先级低于当前进程就忽略中断。
[0014] 本发明的有益效果是,DSP模拟器是建立在通用操作系统之上、基于数据流正确的模拟器,主要实现任务处理、任务调度、中断处理、中断嵌套功能。这样DSP模拟器运行的速度会大幅度提高。采用HDL语言的PLI接口将DSP模拟器的操作反映到FPGA特定的硬件引脚,或与硬件引脚相连的总线上,提高模拟器对外部数据和IO的操作的灵活性。底层的通信使用通用操作系统中的套接字为基础的CS模式,不需要花时间再去编写DSP和FPGA之间数据通信协议,提高验证效率。

附图说明

[0015] 图1是DSP和FPGA紧耦合架构的协同验证示意图;
[0016] 图2是DSP模拟器的服务器端流程图;
[0017] 图3是DSP模拟器的读写处理流程图;
[0018] 图4是 PLI应用读信息流程图;
[0019] 图5是PLI应用写信息流程图;
[0020] 图6是DSP模拟器中断处理流程图;
[0021] 图7是FPGA中断处理流程图。

具体实施方式

[0022] 本发明DSP和FPGA紧耦合架构的协同验证方法,包括如下步骤:
[0023] (1)在基于数据流正确的DSP模拟器运行主算法的进程和用户DSP任务,并且实现任务处理、任务调度、中断响应、中断嵌套功能。
[0024] (2)打开底层操作系统上的套接字服务器端,快速的响应FPGA仿真器发起的连接,如果没有连接就继续监听,如果有连接就根据FPGA的中断和读写以及退出命令进行相应处理。
[0025] (3)DSP模拟器对读写缓冲区进行检查,如果是FPGA的读写请求,如果是请求写,将缓冲区的时序信息和数据传给FPGA模拟器,如果是请求读,就接收FPGA模拟器发送的时序信息和数据。
[0026] (4)在FPGA仿真器周期性的调用PLI接口编写轮询DSP模拟器命令,查看DSP是否对FPGA有操作,如果写操作就把DSP模拟器数据写入FPGA的指定引脚,如果是读操作就把相应引脚数据传给DSP模拟器。
[0027] (5)FPGA模拟器利用PLI接口编写的中断命令在特定的仿真时刻产生中断信号,通过与DSP端的套接字服务器建立连接,将中断信息传给DSP模拟器。
[0028] (6)DSP模拟器根据中断号进行仲裁,如果中断进程的优先级比当前进程高,执行中断程序,如果优先级低于当前进程就忽略中断。
[0029] 如图1所示,服务器端功能在DSP模拟器中实现,包括就绪表、优先级对应表、读写缓冲、DSP算法进程、初始进程以及通信模块。FPGA模拟器包括HDL设计和PLI应用,PLI应用主要实现仿真结束处理、中断处理、读写处理。两部分的通信是基于linux操作系统的套接字,也可以用其他通用操作系统的套接字实现;
[0030] 如图2所示,DSP模拟器启动后,首先初始化缓、就绪表等数据结构,创建算法进程,建立服务器对套接字端口的侦听,如果是读写I/O进入读写子流程,如果是中断就进入中断子流程,如果是来自FPGA的结束指令,就退出DSP模拟器;
[0031] 如图3所示,DSP的读写处理过程,收到来自FPGA模拟器的轮询后,服务器端查看读写缓存,是否有读写操作,如果有,就发送读写缓存中地址及数据和读写控制等时序信息,此时如果是读I/O或者总线操作,还要等待数据和读写控制等时序信息返回模拟器,而后读写子流程结束;
[0032] 如图4所示,PLI应用读时序流程,首先与服务器建立连接,发送轮询DSP模拟器请求。从服务器端发出的读操作及地址,如果没有接收到,进入重发和错误处理。如果接收到就按照读时序要求对总线操作。由于PLI应用执行时仿真处于停止状态,不能直接在同一次调用中读取不同时刻数据,因此一个在数据总线出现正确数据时PLI应用读取数据并发送给DSP模拟器;
[0033] 如图5所示,PLI应用写时序流程,首先与服务器建立连接,发送轮询DSP模拟器请求。接收到服务器端发出写操作、地址及数据,发送写正确标志。按照写时序要求对总线操作,写入数据。返回模拟器。错误处理采用超时重发方式,重发一定次数后仍没有反馈的,打印错误信息。
[0034] 如图6所示,DSP模拟器中断处理程序,首先将主算法设置为优先级最低,和中断算法一起调度。当中断发生,对优先级仲裁。如果中断优先级高于当前进程程优先级,中断当前运行进程,运行中断进程;否则忽略中断信号。中断线程结束,重新调度算法进程,中断子流程结束。
[0035] 如图7所示,FPGA模拟器产生中断信号,当中断信号发生时模拟器调用写好的函数,然后自动调用PLI应用与DSP模拟器通信。PLI应用中会创建连接,发送中断信息或终止信息,服务器接收到信息后发送接收正确标志,表明通信成功,返回模拟器。如果不成功,进入重发或错误处理。错误处理采用超时重发方式,重发一定次数后仍没有反馈的,打印错误信息。