专利名称::用于调试可编程芯片的装置及现场可编程门阵列芯片的制作方法
技术领域:
:本发明涉及硬件可编程技术,尤其涉及一种用于调试可编程芯片的装置、现场可编程门阵列(FieldProgrammableGateArray,简称FPGA)芯片及复杂可编程逻辑器件(ComplexProgrammableLogicDevice,简称CPLD)芯片。
背景技术:
:FPGA是一种集成度很高的新型高性能可编程芯片,适用于高速、高密度的高端数字逻辑电路设计领域。FPGA具有内部可编程(Programmable)电路功能,即,可以通过石更^f牛4苗述"i吾言(HardwareDescriptionLanguage,简-尔HDL)和专用设计工具,在其内部灵活地实现极其复杂的电路功能。图1为FPGA的开发和设计流程图。图中"功能需求"提出了FPGA芯片应该完成的电路功能要求。设计的第一阶段ll,FPGA设计人员根据电路功能要求,通过硬件描述语言,将需要实现的电路行为描述为语言行为。目前常用的硬件描述语言主要是硬件描述语言(简称Verilog语言)和非常高速集成电路硬件描述语言(theVeryHighSpeedIntegratedCircuit(VHSIC)HardwareDescriptionLanguage,简称VHDL语言)。在设计的第二阶段12,FPGA设计人员对语言行为进行综合(Synthesis)。即,将语言行为转化为门级电路行为。综合又分为逻辑综合和物理综合两种。其中,逻辑综合实现语言行为到门级电路行为的转化,并对电路进行优化;物理综合在转化和优化的同时,还考虑到了具体芯片的最终布局,能根据不同芯片的内部资源特点,综合出特定的门级电路。目前的综合工具基本都提供物理综合。在设计的第三阶段13,FPGA设计人员利用可编程芯片产商提供的实现工具,将门级电路行为转化为实际的功能电路,形成实际电路的网表描述文件。实现(Implementation)可分为两个主要操作布局(Placing)和布线(Routing)。布局操作用于确定门级电路行为中包含的具体器件例如寄存器、存储器在芯片中的具体位置;布线操作用于确定各个具体器件之间的具体走线。在设计的第四阶段14,FPGA设计人员将电路的网表描述文件映射到实际的芯片中,从而使FPGA芯片具有相应的电路功能。在FPGA芯片的设计和开发过程中,设计调试是确保设计正确性和高效性的一个关键。如果调试手段不科学,将可能拖延开发进程,也会给芯片设计留下隐患。目前常用的调试方式有如下几种第一种调试方式是对设计进行仿真调试,以确保设计最起码的正确性。在可编程设计中,仿真调试一般分为功能仿真(FunctionalSimulation)、综合后仿真和布局布线后仿真。功能仿真是在设计的第一阶段对语言行为进行的仿真;综合后仿真是在设计的第二阶段,对综合后产生的门级电路行为进行的仿真;布局布线后仿真是在设计的第三阶段,对实际的功能电路进行的仿真,这种仿真也可以称为时序仿真(TimingSimulation)。在一些产商提供的设计流程中,将布局布线后仿真细分为布局后仿真和布线后仿真。功能仿真是对语言行为的仿真,注重于^r测语言描述上的正确性,也就是检测逻辑功能上的正确性。这种仿真并没有考虑到实际电路中必然会出现的逻辑门延时和布线延时的因素。综合后仿真是对综合后产生的门级电路行为进行的仿真。这时的布线延时估算是根据芯片产商提供的时序模型得到的,由于不是实际的电路,布线延时存在不确定性。布局布线后仿真是对电路网表进行的仿真。这是最贴近实际电路的一种仿真,因为这时的器件布局和器件间的布线都已经确定,因此逻辑门延时和布线延时的估算相对较为准确。虽然通过仿真调试,特别是通过布局布线后仿真调试后,设计的正确性能够得到最起码的保证。但是仿真调试存在着如下的缺点①仿真调试平台(TestBenches)建立的合理性无法保i正为了实现全面的仿真测试,需要建立一个完整的仿真测试平台。这样的一个平台需要对每一个接口都建立一个仿真调试模块,如图2。对于一个高速接口的接口1仿真测试模块20来说,基本需要接口仿真模型21、接口仿真模型21及数据验证模块23三个要素。其中,接口仿真模型21用来完成接口的物理层仿真;数据激励模块22用来生成测试数据;数据验证模块23用来对接收的数据进行验证。由于数据激励模块需要根据系统需求编写,同时需要编写验证模块,对系统数据进行验证,因此,存在测试数据的合理性问题。即,测试数据应具有随机特性,而人为生成的激励数据显然无法满足这个要求。即使使用伪随机数据,由于仿真的时间长度收到限制,测试数据的随机特性仍然受到极大限制。这样,调试数据的合理性直接影响到了测试平台建立的合理性。②仿真调试的时间受到限制由于仿真工具一般按照时间格来对功能电路进行计算,来获得各个时刻的电平翻转情况。而时间格一般为IOO皮秒或者IO皮秒,因此,设计人员无法对自己的逻辑设计进行长时间仿真调试。在FPGA的在高速电路设计中,仿真工具需要对仿真对象进行100皮秒级的运算,才能正确反映内部功能电路的电平翻转情况。而100皮秒级的运算将耗费大量的内存存储资源和CPU的运算资源,因此,通过仿真工具反映电路秒级的变化比较困难。③仿真的真实性受到限制以上三种仿真调试方法都是针对设计文件的仿真,不是针对实际芯片的测试,因此真实性受到限制。当一款FPGA芯片面市时,芯片产商会相应的^是供该^l芯片的时序模型和芯片中包含如存储器、DSP运算单元等等各种资源的仿真模型。设计人员进行的仿真调试操作都是基于这些时序模型和仿真模型的电路运行推测。而在实际的芯片中,随着产生批次的不同,内部构造和资源性能的优良也存在差别,仿真体现不出这些个例的性征。也就是说,仿真只能确保在芯片仿真模型基础之上的正确性,而不能保证在实际芯片中的正确性。正是由于仿真调试存在着以上的不足,对于设计人员来说,仿真调试只能是确保设计正确的必要条件,而不是充分条件。第二种调试方式FPGA芯片内部信号监测。FPGA芯片内部信号监测是指根据某个触发条件,对芯片内部的某个信号进行单独监测。这里有两种方法一种是将内部信号引到芯片的I/O端口进行监测;另一种是通过内部专用的功能模块监测内部信号,然后将结果通过调试端口传送给调试主机。目前,FPGA芯片产商都提供了相应的工具来实现以上两种方法的监测调试。例如Xilinx公司的Chipscope和Altera公司的SignalTap,都能方便的实现对内部信号的监测。这种内部信号的监测属于设计过程中的微观调试手段。可帮助设计人员锁定某个信号在某种情况下的变化情况,从而完成信号级的故障调试。因此,这种调试手段最大的缺点就是一次只能观察少数几个信号。第三种调试方式是芯片结构电路测试。结构电路测试通过对内部的电路结构进行全面的测试,以保证该电路实现的正确性。1986~1988年,以欧洲和北美会员为主的联合测试行动组织(JointTestActionGro叩,简称JTAG)率先开展了边界扫描技术的研究,提出了一系列JTAG边界扫描标准草案。1990年美国电气电子工程师学会(InstituteofElectricalandElectronicEngineers,简称IEEE)和JTAG共同推出了边界扫描标准IEEEStd1149.1。IEEEStd1149.1的主要思想是通过在芯片管脚和芯片内部逻辑电路之间,即芯片的边界上,增加边界扫捕单元来实现对芯片管脚状态的串行设定和读取,从而提供芯片级、板级和系统级的标准测试框架。芯片扫描机制可实现下列目标测试电路板上不同芯片之间的连接;测试芯片及电路板的功能;应用边界扫描寄存器完成其他测试功能,如特征分析等。在FPGA芯片的应用中,JTAG边界扫描技术完成以下三个操作将逻辑设计电i各映射到FPGA芯片中;;险查映射的正确性;将FPGA芯片中的逻辑设计回读。通过上述三个操作可知,在FPGA芯片的开发设计中,结构电路测试并没有对设计人员的逻辑设计进行测试和调试,而只关心从网表到实际电路的映射准确性。从上述的三种调试方式可以看出,在目前的FPGA开发和设计中,还需要一种基于FPGA芯片实际电路功能的调试手段。这种调试手段不是基于FPGA芯片的仿真模型,并且能够一次性观察较多的信号状态,从而帮助设计人员准确定位故障位置。现有技术中,基于FPGA芯片实际电路功能的调试手段有两种。一种是通过一种接口结构将FPGA核心嵌入集成电路,FPGA芯片加以配置和测试。如申请号为02825008.7的专利申请《关于嵌入式字段可编程门阵列核心的接口结构》。该专利申请中,被耦合到该FPGA核心的微控制器具有一般指令集,该指令集提供对该FPGA核心内的所有资源的访问。这样,依据来自主机接口的指令,允许为该FPGA核心执行高级服务。主机接口提供可适应的緩冲器单元,以允许该FPGA核心被容易地嵌入不同的集成电路。该专利申请提供的技术方案用于特定用途集成电3各(ApplicationSpecificIntegratedCircuit,简称ASIC)中FPGA功能模块的调用接口设计。另一种是通过高速收发器对FPGA芯片加以调试。如申请号为200610149473.3的专利申请《FPGA、FPGA配置、调试系统和方法》。该专利申请通过探测信号选择单元从待测逻辑单元中的多个探测点获取探测点处的探测信号;通过高速串行收发机将探测信号转变为高速串行的信号并且发送到外部,实现了对FPGA芯片内部功能模块的调试和配置。上述两种调试手段均存在通用性差的问题。第一种调试手段由于涉及到微控制器(MicroControlUnit,简称MCU)、微处理器和片上总线的应用,微处理器需要经过片上总线、主机接口模块和微控制器,才能到达FPGA功能模块,实现对FPGA功能模块的配置,使得结构复杂,通信环节过多,因此很难在低端FPGA芯片应用中实现,从而影响了该方法的通用性。并且,环节过多,意味着调试系统本身存在的故障风险将加大。第二种调试手段涉及高速收发器接口的应用,例如Xilinx公司的FPGA芯片中的Rocket1/0接口,或者Altera公司的收发器。这些高速收发器只有在较高配置的FPGA芯片中才具备,因此,第二种调试手段在低端FPGA芯片中的应用受到限制。其次,由于高速收发器的使用,增加了第二种调试手段的配置调试系统与外部调试主机之间连接的复杂性。调试主机不能通过通用串行总线,而必须通过高速接口,例如千兆以太网口,实现数据通信,也影响了通用性。并且,由于第二种调试手段没有实现调试命令集。因此不能根据具体的调试命令进行特定的配置、调试操作或者提供激励信号,也不能根据具体的调试命令将特定的测试结果数据提交给调试主机,导致使用者必须自行完成这些复杂操作,同样影响了第二种调试手段的通用性。为适应不同的应用环境,需要通过配置接口对FPGA芯片的电路功能进行参数配置。例如,在数据接口的设计中,设计人员希望能够设置接口先进先出(FirstInFirstOut,FIFO)的溢出水线高低,以确定接口何时需要数据流量控制。在低数据率的应用环境下,设计人员可以将水线设置的较高,在平滑数据流的同时不必担心FIFO溢出;而在高数据率的应用环境下,设计人员需要将水线设计的较低,以避免FIFO溢出。现有技术中,通用的FPGA参数配置构架如图3所示。FPGA芯片31通过配置接口与数字信号处理器芯片(DigitalSignalProcessor,简称DSP芯片)或者《鼓处理器芯片(MicroProcessingUnit,简称MPU芯片)32相连。配置接口可以是LocalBus接口,也可以是内部集成电路(Inter-IntegratedCircuit,简称IIC)总线以及其他接口类型。DSP/MPU芯片32通过通用接口例如RS232串行接口与PC主机33相连。这样,通过PC主机33就可以对FPGA芯片31内部逻辑设计的配置空间进行设置。虽然这种配置构架可以在DSP/MPU芯片内部实现复杂的通信协议,例如Telnet协议(TELecommunicationNETwork),实现PC机的远程配置等复杂功能,但是,这种配置构架增加了数据通信环节,也就增加了设计环节,增加了设计风险。这种配置构架不仅需要FPGA硬件设计,还需要DSP/MPU芯片的软硬件设计。并且,这种配置架构使用DSP/MPU芯片,提高了产品成本,特别是在FPGA的中小型应用中,这点尤为明显。
发明内容本发明的目的在于提出一种用于调试可编程芯片的装置、FPGA芯片及CPLD芯片,以提高调试可编程芯片装置的通用性,并降低复杂度。为实现上述目的,本发明提供了一种用于调试可编程芯片的装置,包括物理层,与所述可编程芯片外部的调试主机相连,用于与所述调试主机进行命令数据交互;译码操作模块,用于对所述物理层接收到的命令数据进行译码;编码操作模块,用于将包含信号状态信息的命令信息组合成命令数据,通过所述物理层发送给所述调试主机;命令操作模块,用于根据所述译码操作模块译码得到的命令信息执行调试操作,获取信号的状态信息,并将所述包含信号状态信息的命令信息发送给所述编码操作模块;调试接口,用于为所述命令操作模块提供获取信号状态信息的接口。本发明还提供了一种包括上述用于调试可编程芯片的装置及调试接口的FPGA芯片,所述装置通过所述调试接口获取所述FPGA芯片中逻辑设计的信号状态信息。本发明还提供了一种包括上述用于调试可编程芯片的装置及调试接口的CPLD芯片,所述装置通过所述调试接口获取所述CPLD芯片中逻辑设计的信号状态信息。上述方案中,用于调试可编程芯片的装置结构简单,且无需耗费硬件资源,大大剮氐了复杂度,便于在j雄可编程芯片中实现,大大提高了调i緣置的通用性。下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。图1为FPGA的开发和设计流程图;图2为现有技术中的仿真测试平台结构示意图;图3为现有技术中通用的FPGA参数配置构架图;图4为本发明用于调试可编程芯片的装置实施例一的结构示意图;图5为本发明用于调试可编程芯片的装置实施例一中命令译码模块的结构示意图6为本发明用于调试可编程芯片的装置实施例一中命令译码模块51的操作流程图7为本发明用于调试可编程芯片的装置实施例一中命令编码模块的结构示意图8为本发明用于调试可编程芯片的装置实施例一中命令编码模块71的操作流程图9为本发明用于调试可编程芯片的装置实施例一中命令操作模块的结构示意图10为本发明用于调试可编程芯片的装置实施例一中命令识别与分发模块92的操作流程图11为本发明用于调试可编程芯片的装置实施例一中调试命令服务子模块的操作流程图12为本发明用于调试可编程芯片的装置实施例一中调试接口45的结构示意图13为本发明用于调试可编程芯片的装置实施例二的结构示意图;图14为本发明用于调试可编程芯片的装置实施例二中配置从接口的结构示意图15为本发明用于调试可编程芯片的装置实施例二中配置命令服务子模块的操作流程图16为本发明用于调试可编程芯片的装置实施例二中配置主接口135的读操作时序图17为本发明用于调试可编程芯片的装置实施例二中配置主接口135的写操作时序图18为本发明用于调试可编程芯片的装置实施例的命令格式示意图19为本发明用于调试可编程芯片的装置实施例在CPLD芯片中实现的结构示意图20为利用内嵌MPU来实现用于调试可编程芯片的装置的结构框图。具体实施例方式图4为本发明用于调试可编程芯片的装置实施例一的结构示意图。用于调试可编程芯片的装置包括物理层41、译码操作模块42、编码操作模块43、命令操作模块44及调试接口45。物理层41与所述FPGA芯片外部的调试主机46相连,用于与所述调试主机46进行命令数据交互;译码操作模块42用于对所述物理层41接收到的命令数据进行译码;编码操作模块43用于将包含信号状态信息的命令信息组合成命令数据,通过所述物理层41发送给所述调试主机46;命令操作模块44用于根据所述译码操作模块42译码得到的命令信息执行调试操作,获取信号的状态信息,并将所述包含信号状态信息的命令信息发送给所述编码操作模块43;调试接口45用于为命令操作模块44提供从应用逻辑模块47获取信号状态信息的接口。译码操作模块42与编码操作模块43位于调试装置的数据链路层。物理层41可采用串口、通用串行总线、统一接口总线等,与调试主机46如PC机进行通信。本实施例中,物理层41包括通用异步收发器(UniversallyAsynchronousReceiver-Transmitter,简称UART)串口及串口控制器两部分,采用UART串口作为通信接口。其中,UART串口是硬件连接接口,符合RS232电气标准;串口控制器是基于硬件连接接口的通信协议实现模块,这里采用UART协议。由于大多数的PC机都配置有RS232标准接口,具有接口通用性。因此,采用UART串口有利于提高调试平台的通用性。并且,在PC机上,基于UART协议的应用程序开发已经非常成熟。目前大多数的软件开发工具例如VirtualC++、BorlandC++Bulider等都提供了UART通讯协议类,这样,能够方便的实现对底层硬件的驱动,从而使得应用程序开发人员能够开发针对UART串口的应用程序。本实施例中,数据链路层可进一步包括译码FIFO緩存区,如图5所示。译码操作模块52与译码FIF0緩存区53合成为命令译码模块51。其中,译码FIFO緩存区53用于暂存来自串口控制器数据接收端的命令数据。由于串口的数据传输效率较低,译码操作模块52可等待一个完整的命令数据传输完毕后,再发起对这个命令数据的分析操作,以保证命令执行的准确性。译码操作模块52根据命令格式,对命令数据进行译码,分析出命令关键字和命令参数等命令信息,提交给命令处理层。命令译码模块51的操作流程如图6所示,具体包括步骤61、当检测到命令起始位时,将译码FIFO緩存区53清空,并等待新的命令数据输入。步骤62、当检测到命令结束位时,则表示译码FIFO緩存区53内保存了一个完整的命令数据,因此将该命令数据读出。步骤63、将读出的命令数据根据命令格式进行译码,分析出其中的关键字和参数等命令信息,并设置CODE-EN-1,通知命令处理层有新的命令请求。步骤64、如果检测到CODE-GET-1,表示命令处理层已经接收了该命令请求,则设置CODE_EN=0,等待新的命令数据。本实施例中,数据链路层还可进一步包括编码FIFO緩存区,如图7所示。编码操作模块72与编码FIF0緩存区73合成为命令编码模块71。其中,编码操作模块72接收命令处理层提供的命令关键字等命令信息,并根据命令格式,将这些信息组合成命令数据发送给编码FIF0緩存区73。编码FIFO緩存区73用于暂存待发送给串口控制器发送端的命令数据。在物理层为数据传输效率较低的串口时,暂存来自命令编码模块71的高速命令数据,能够确保数据传输的准确性。图8为命令编码模块71的操作流程图,具体包括步骤81、检测到ACK—EN=1时,命令处理层表示有命令应答发送请求。检测到C0DE_IDLE=1时,表示命令编码模块71处于空闲状态。如果满足以上这两个条件,则命令编码模块71接收命令信息,并设置ACK_GET=1,CODE-IDLE-0,通知命令处理层已经获取命令信息,并进入操作忙状态。步骤82、命令编码模块71根据预先定义的命令格式,将命令信息组合成命令数据。步骤83、命令编码模块71将命令数据写入到编码FIF0緩存区73中。步骤84、编码FIFO緩存区73只要有命令数据,就需要读出并写入到串口控制器数据接收端。步骤85、当检测到命令结束位,则表示緩存区内的命令数据已经全部发送完毕,设置CODE—IDLE=1,ACK-GET=0,等待新的命令应答发送请求,获取新的命令信息。命令操作模块44及调试接口45位于调试装置的命令处理层。命令处理层接收数据链路层提交的命令信息格式的命令请求,完成命令操作,并将命令应答以命令信息的格式发送给数据链路层。上述实施例中,命令操作模块可包括命令识别与分发模块、命令服务模块。如图9所示,图9为本发明用于调试可编程芯片的装置实施例一中命令操作模块的结构示意图。命令操作模块91包括命令识别与分发模块92、命令服务模块93两部分。其中,命令识别与分发模块92接收命令译码模块的命令信息,并根据命令关键字识別命令类型,从而将命令信息发送给特定的命令服务子模块。命令服务模块93接收命令信息,并完成对应的命令操作,将命令执行结果返回给命令识别与分发模块92。命令识别与分发模块92在获取命令服务子模块的执行结果后,将执行结果连同命令信息发送给命令编码模块。命令识别与分发模块92的操作流程如图IO所示,具体包括步骤101、若检测到CODE—EN=1,表示命令译码模块发送了新的命令信息。若^f企测到BRN-IDLE=l,表示命令识别与分发模块92处于空闲状态。如果这两个条件都满足,则命令识别与分发模块92读取新的命令信息。步骤102、设置C0DE-GET-1,表示已经获取命令信息;设置BRN-IDLE=1,表示进入操作忙状态;设置BRN-GET-0,清零等待执行结果。步骤103、根据命令关键字识别命令,并将命令信息提交给命令服务模块。步骤104、如果检测到C0MPLETE=1,表示命令服务模块已经完成命令操作,则获取命令执行结果,并发送给命令编码模块。步骤105、设置BRN_GET=1,表示已经接收到命令服务模块的执行结果;设置ACK-EN-1,通知命令编码模块,命令应答发送请求有效。步骤106、如果检测到ACK—GET=1,表示命令编码模块已经接收到命令应答发送请求,则设置ACK-EN-O,BRN-IDLE-O,CODE—GET=0,等待新的操作请求命令信息。命令服务模块93由一系列命令服务子模块组成,每个子模块对应一个特定的命令。因此有多少命令,就有多少命令服务子模块。在本调试配置平台,命令主要有两类调试命令和配置命令,因此命令服务子模块也可以分为两类调试命令服务子模块和配置命令服务子模块。调试命令服务子模块的操作流程如图ll所示,包括步骤lll、调试命令服务子模块接收到命令信息后,通过调试接口"获取信号的状态信息;步骤112、将获取的信号状态信息即执行结果发送给命令识别与分发模块92,并设置COMPLETED,表示完成调试命令操作。步骤113、若检测到BRN—GET=1,表示命令识别与分发模块92已接收到执行结果,则设置COMPLETE-O,等待新的调试命令。调试接口45如图12所示,可为一个调试向量组,设计人员可将需要观察的一系列信号输出给调试接口45的各个调试向量。当设计人员需要获知这些信号的状态时,可发送调试命令,由命令服务模块通过调试接口45获取这些信号状态,转发给数据链路层,从而通过物理层转发给调试主机。本实施例中,用于调试可编程芯片的装置中的调试接口最多可同时查看16个测试向量,每个测试向量包含8个信号。这样,通过调试装置最多可以同时观察128个信号的状态信息。上述实施例中,用于调试可编程芯片的装置结构简单,且无需耗费硬件资源,大大降低了复杂度,便于在低端可编程芯片中实现,大大提高了调试装置的通用性。图13为本发明用于调试可编程芯片的装置实施例二的结构示意图。本实施例与上述实施例的不同在于,调试FPGA芯片的装置还可包括配置主接口135,对FPGA芯片内部的电路功能进行灵活配置。调试FPGA芯片的装置作为FPGA芯片的一个功能模块子核设置于FPGA芯片中,对FPGA芯片中的应用逻辑模块或逻辑设置模块进行调试和配置。相应地,应用逻辑模块或逻辑设置模块中设置有平台接口136,与调试FPGA芯片的装置进行交互。平台接口136包括配置从接口137和调试从接口138。配置从接口137与配置主接口135进行交互,配合配置主接口135的操作,为配置操作提供接口;调试从接口138与调试接口进行交互,为调试操作提供接口。配置从接口137如图14所示,可包括配置控制器141、配置空间静态随才几存J渚单元(Staticrandomaccessmemory,简称SRAM)142和酉己置接口通信从模块143。配置控制器141在每次系统复位后读取配置空间SRAM142内部的配置命令信息提供给系统初始化模块。系统初始化模块根据配置命令信息完成系统初始化操作。配置空间SRAM142为存储器单元,用来存储一系列的配置命令信息。具体的配置命令信息由设计人员根据系统具体功能确定。即,设计人员可以自行定义配置空间中的各种配置信息。本实施例中,调试FPGA芯片的装置缺省默认的配置空间的大小为256字节。接口通信从模块143实现接口通信协议,作为从设备接收来自接口通信主模块的读写操作命令。通过配置从接口137,设计人员能够利用调试平台的配置主接口135来实现对FPGA芯片内部电路功能的灵活配置。调试FPGA芯片的装置的物理层131还可接收来自PC主机的配置命令数据,并将配置命令数据发送给数据链路层。命令译码模块132对物理层131接收到的配置命令数据进行译码,将译码得到的命令信息发送给命令操作模块134执行。命令操作模块134中的命令识别与分发模块还可识别配置命令并分发给相应的命令服务子模块。命令操作模块134中的命令服务模块还包括配置命令服务子模块,执行命令识别与分发模块分发的配置操作命令。命令操作模块134中,配置命令服务子模块的操作流程如图15所示,包括步骤151、接收命令译码模块发送的命令信息,通过配置主接口135获取读写操作结果;并设置C0MPLETE-1,表示完成读写操作;步骤153、若检测到BRN_GET=1,表示命令识别与分发模块已经接收到执行结果,则设置COMPLETE=0,等待新的读写操作命令即配置命令。配置主接口135可为通信总线的主设备接口,可以主动发起读写操作。配置主接口135的读操作时序如图16所示。配置主接口135的C0N-REQ和CON-RNW为高电平时,提出读请求;配置从接口137控制器响应请求,设置CON-ADDRACK为高,并记下CON—ADDR中的寄存器地址即读取目标的地址;配置从接口137将数据传输到读操作数据总线CON-RDDATA上,同时设置CON—RDACK为高,通知配置主接口135取走数据。配置主接口135的写操作时序如图17所示。配置主接口135的CON—REG置为高电平,C0N-R冊置为低电平时,提出写请求;配置从接口137控制器响应请求,CON—ADDRACK为高,并记下目标地址及待写数据,即C0N-ADDR中的寄存器地址和CO丽TDATA中的寄存器数据;配置从接口137将CON-WTACK置为高电平,表示写操作完毕。为了让上述装置实施例中的用于调试可编程芯片的装置在外部主机的控制下,完成一系列的调试和配置操作,需要制定一个通信协议,以便让外部调试主机发送的操作命令能被调试装置接收,并准确解码和执行,同时使调试装置返回的执行结果被外部调试主机接收,并准确解码。该通信协议包括对命令格式和命令集的规定。命令格式命令符合美国信息交换标准代码(AmericanStandardCodeforInformationInterchange,简称ASCII码)要求的字符串。命令格式如图18所示,分为五个部分1)起始位命令以ASCII码的0x02作为起始位,表示命令数据的开始。2)命令长度位命令长度位为3个字节,表示命令数据的长度N。这里的长度N是指从命令长度位结束开始到命令结束位之间的数据长度,主要用于达到纠错的目的,因此,可以省去。命令长度位是一个三位ASCII码字符串,例如N=25,则C0C1C2="025",相应的十六进制数据为0x300x320x35。3)命令关键字位命令关键字位表示该命令的类别,一种命令只有唯一关键字。命令关键字是一个四位ASCII码字符串,以逗号结束。例如测试命令的关键字位为"TST,",相应的十六进制数据为0x540x530x540x20。4)命令参数位命令参数位表示该命令的操作参数或者该命令的操作结果,也是一段ASCII码字符串。命令参数位内可以容纳多个操作参数,它们以逗号隔开。例如某命令有两个参数20和3,则命令参数位为"20,3,",相应的十六进制数据为0x320x300x200x330x20。5)结束位命令以ASCII码的0x03作为结束位,表示命令数据的结束。调试FPGA芯片装置的命令数据在经过数据链路层时,起始位、命令长度位和结束位被剥离,其命令关键字位和命令参数位被提取出来,作为命令信息提交给命令处理层。因此,在下文的命令说明中,只对命令的关键字位和命令参数位进行说明。命令集当调试FPGA芯片的装置仅能实现调试功能时,只需调试命令即可。当调试FPGA芯片的装置既能实现调试功能又能实现配置功能时,命令集包含调试命令和配置命令两类。调试命令用来获取设计人员感兴趣的信号状态;配置命令用来配置设计人员的逻辑配置空间。1)调试命令调试命令为TST命令,如表1所示。表1TST命令语法结构<table>tableseeoriginaldocumentpage22</column></row><table>命令正确应答TST,0,10,30,1,命令错误应答TST,0,2)配置命令配置命令包括GET命令、SET命令和RST命令。其中,GET命令用于读取配置空间中特定寄存器的内容;SET命令用于设置配置空间中特定寄存器;RST命令用于在实现配置操作之后,启动逻辑设计中的初始化模块,从而用新的配置信息来配置电路功能。GET命令、SET命令和RST命令的语法结构描述分别如表2、表3和表4所示。表2GET命令语法结构<table>tableseeoriginaldocumentpage22</column></row><table>参数1表示寄存器在配置空间中的地址。如果配置从接口模块中的配置空间的大小为256字节,<table>tableseeoriginaldocumentpage23</column></row><table>表3SET命令语法结构<table>tableseeoriginaldocumentpage23</column></row><table>表4RST命令语法结构<table>tableseeoriginaldocumentpage23</column></row><table>上述装置实施例中,用于调试可编程芯片的装置可在FPGA芯片内部实现,也可以在复杂可编程逻辑器件(ComplexProgrammableLogicDevice,简称CPLD)芯片内部实现。如图19所示,CPLD芯片包括实现逻辑设计191和用于调试可编程芯片的装置192。实现原理详见上述装置实施例一及实施例二。用于调试可编程芯片的装置也可以借助FPGA芯片内嵌的MPU来实现。目前大多数的FPGA芯片生产商都提供内嵌有MPU的FPGA芯片,例如Xilinx的部分芯片内嵌有PowerPC硬核或者Microblaze软核;Altera的FPGA芯片内嵌Nios软核。如图20所示,图2Q为利用内嵌MPU来实现的用于调试可编程芯片的装置的结构框图。其中,物理层中,串口控制器204包括串口数据发送FIFO及串口数据接收FIFO。数据链路层的命令编码器201和命令译码器202,以及命令处理层的和命令操作模块203都通过软件实现在MPU中。利用内嵌的MPU实现用于调试可编程芯片的装置能够节省大量的FPGA芯片的逻辑资源和存储器资源,并且可在MPU内部实现复杂的通信协议,从而为远程配置等一些复杂功能的实现提供前提。但是,这种实现方式需要建立一个嵌入式应用系统,也就是说需要完成以下几个任务需要片外存储设备保存MPU程序,包含引导程序和应用程序;需要编写特定的引导程序,实现MPU的启动;需要编写应用程序完成调试配置平台的应用。上述实施例用于调试可编程芯片的装置最多可同时观察128个信号的状态。设计人员可以将需要查看的敏感信号引入调试装置的调试接口,一旦需要查看这些信号的状态,就可以通过调试装置的TST命令获知这些信号的状态,从而为确定故障位置提供了最全面的信息。进一步地,用于调试可编程芯片的装置通过配置主接口能够实现FPGA芯片、CPLD芯片等可编程芯片内部电路功能的灵活配置,使得可编程芯片内部的电路功能随着应用环境的改变而灵活改变。如果需要通过外部的DSP/MPU芯片实现远程配置,那么用于调试可编程芯片的装置提供的这种配置功能,使得设计人员能够在项目设计早期,建立起独立闭环测试环境,而不必依赖DSP/MPU芯片的开发进度。本发明用于调试可编程芯片的装置复杂度低,是可编程芯片中一个规模较小的功能模块,所需的逻辑资源较少,能够灵活集成在设计人员的逻辑设计中,大大提高了通用性高,降低了复杂度。此外,本发明用于调试可编程芯片的装置无需耗费额外的硬件资源,相对于利用DSP/MPU实现配置的设计方案,大大降低了成本。并且,本发明用于调试可编程芯片的装置提供了简单易用的调试配置命令,使用方便,进一步提高了调试装置的通用性。本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。权利要求1.一种用于调试可编程芯片的装置,其特征在于,包括物理层,与所述可编程芯片外部的调试主机相连,用于与所述调试主机进行命令数据交互;译码操作模块,用于对所述物理层接收到的命令数据进行译码;编码操作模块,用于将包含信号状态信息的命令信息组合成命令数据,通过所述物理层发送给所述调试主机;命令操作模块,用于根据所述译码操作模块译码得到的命令信息执行调试操作,获取信号的状态信息,并将所述包含信号状态信息的命令信息发送给所述编码操作模块;调试接口,用于为所述命令操作模块提供获取信号状态信息的接口。2、根据权利要求1所述的用于调试可编程芯片的装置,其特征在于,所述物理层包括通用接口及通用接口控制器。3、根据权利要求2所述的用于调试可编程芯片的装置,其特征在于,所述通用接口为串口、串行总线或通用接口总线。4、根据权利要求1所述的用于调试可编程芯片的装置,其特征在于,还包括译码先进先出緩存区,用于緩存所述物理层接收到的命令数据;所述译码操作模块还用于对所述译码先进先出緩存区中的命令数据进行译码。5、根据权利要求1所述的用于调试可编程芯片的装置,其特征在于,还包括编码先进先出緩存区,用于緩存所述编码操作模块组合成的命令数据;所述物理层还用于将所述编码先进先出緩存区中的命令数据发送给所述调试主才几。6、根据权利要求1所述的用于调试可编程芯片的装置,其特征在于,所述命令操作模块包括命令识别与分发模块,用于识别、分发所述译码操作模块发送的命令信息;调试命令服务模块,用于根据所述命令识别与分发模块分发的命令信息执行调试操作,获取信号的状态信息,并将包含信号状态信息的命令信息通过所述命令识别与分发模块发送给所述编码操作模块。7、根据权利要求1所述的用于调试可编程芯片的装置,其特征在于,所述物理层与调试主机交互的命令数据依次包括起始位、命令关键字位、命令参数位及结束位。8、根据权利要求7所述的用于调试可编程芯片的装置,其特征在于,所述起始位与命令关键字位之间还包括命令长度位。9、根据权利要求1所述的用于调试可编程芯片的装置,其特征在于,所述命令数据包括调试命令,所述调试命令的命令关键字为TST,命令应答中,正确应答为TST,调试向量1,…,调试向量n,1,;错误应答为TST,0,。10、根据权利要求l-9中任一项所述的用于调试可编程芯片的装置,其特征在于,所述命令操作模块还用于根据所述译码操作模块译码得到的命令信息执行配置操作,并将执行结果连同相应的命令信息发送给所述编码操作模块;所述用于调试可编程芯片的装置还包括配置主接口,用于为所述命令操作模块执行配置操作提供接口,向FPGA芯片中的逻辑设计模块发起读写操作。11、根据权利要求10所述的用于调试可编程芯片的装置,其特征在于,所述命令数据包括配置命令,所述配置命令的命令关键字为GET,操作参数为寄存器在配置空间中的地址;命令应答中,正确应答为GET,所述操作参数,所述寄存器的值,1,;错误应答为GET,所述操作参数,0,;或者,所述配置命令的命令关键字为SET,操作参数包括第一操作参数和第二操作参数;所述第一操作参数为寄存器在配置空间中的地址;所述第二操作参数为所述寄存器的值;命令应答中,正确应答为SET,所述第一参数,所述第二参数,1,;错误应答为SET,所述第一参数,所述第二参数,0,;或者,所述配置命令的命令关键字为RST,命令应答者,正确应答为RST,1,;错误应答为RST,0,。12、一种包括上述权利要求1-11中任一项所述用于调试可编程芯片的装置的现场可编程门阵列芯片,其特征在于,包括调试接口;所述装置通过所述调试接口获取所述现场可编程门阵列芯片中逻辑设计的信号状态信息。13、根据权利要求12所述的现场可编程门阵列芯片,其特征在于,还包括配置从接口,所述装置通过所述配置从接口对所述现场可编程门阵列芯片中的逻辑设计模块进行参数配置。14、根据权利要求13所述的现场可编程门阵列芯片,其特征在于,所述配置/人*接口包括配置空间静态随机存储单元,用于存储所述装置发送的配置命令信白.配置控制器,用于在所述现场可编程门阵列芯片的逻辑设计系统复位后读取所述配置命令信息;配置接口通信从模块,用于接收来自所述装置的读写操作命令。15、一种包括上述权利要求1-11中任一项所述用于调试可编程芯片的装置的复杂可编程逻辑器件芯片,其特征在于,包括调试接口;所述装置通过所述调试接口获取所述复杂可编程逻辑器件芯片中逻辑设计的信号状态信息。16、根据权利要求15所述的复杂可编程逻辑器件芯片,其特征在于,还包括配置从接口,所述装置通过所述配置从接口对所述复杂可编程逻辑器件芯片中的逻辑设计模块进行参数配置。17、根据权利要求16所述的复杂可编程逻辑器件芯片,其特征在于,所述配置从接口包括配置空间静态随机存储单元,用于存储所述装置发送的配置命令信自配置控制器,用于在所述复杂可编程逻辑器件芯片的逻辑设计系统复位后读取所述配置命令信息;配置接口通信从模块,用于接收来自所述装置的读写操作命令。全文摘要本发明涉及一种用于调试可编程芯片的装置及现场可编程门阵列芯片,装置包括与所述可编程芯片外部的调试主机相连的物理层、译码操作模块、编码操作模块、命令操作模块及用于为所述命令操作模块提供获取信号状态信息的接口的调试接口。现场可编程门阵列芯片包括上述用于调试可编程芯片的装置及调试接口。本发明还涉及一种复杂可编程逻辑器件芯片,包括上述用于调试可编程芯片的装置及调试接口。上述方案中,用于调试可编程芯片的装置结构简单,且无需耗费硬件资源,大大降低了复杂度,便于在低端可编程芯片中实现,大大提高了调试装置的通用性。文档编号G06F17/50GK101369001SQ20081022451公开日2009年2月18日申请日期2008年10月17日优先权日2008年10月17日发明者彭少宁,彭鼎祥申请人:北京星网锐捷网络技术有限公司