CN109684152A - 一种risc-v处理器指令下载方法及其装置 - Google Patents

一种risc-v处理器指令下载方法及其装置 Download PDF

Info

Publication number
CN109684152A
CN109684152A CN201811593647.4A CN201811593647A CN109684152A CN 109684152 A CN109684152 A CN 109684152A CN 201811593647 A CN201811593647 A CN 201811593647A CN 109684152 A CN109684152 A CN 109684152A
Authority
CN
China
Prior art keywords
instruction
data
memory
processor
risc
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201811593647.4A
Other languages
English (en)
Other versions
CN109684152B (zh
Inventor
王凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Inspur Smart Computing Technology Co Ltd
Original Assignee
Guangdong Inspur Big Data Research Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangdong Inspur Big Data Research Co Ltd filed Critical Guangdong Inspur Big Data Research Co Ltd
Priority to CN201811593647.4A priority Critical patent/CN109684152B/zh
Publication of CN109684152A publication Critical patent/CN109684152A/zh
Application granted granted Critical
Publication of CN109684152B publication Critical patent/CN109684152B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/263Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种RISC‑V处理器指令下载方法及其装置,基于现场可编程门阵列FPGA开发板,包括:通过IO接口接收测试指令并保存至指令存储器中;生成切换指令,将指令存储器切换为由待测试的精简指令集计算RISC‑V处理器进行操作;控制待测试的RISC‑V处理器在复位后,读取指令存储器内的测试指令并运行。本发明不依赖于jtag接口和nand‑flash,而是通过通用的IO接口和指令存储器进行指令下载,提高了RISC‑V处理器测试的通用性;本发明还公开了一种基于上述方法的FPGA开发板。

Description

一种RISC-V处理器指令下载方法及其装置
技术领域
本发明涉及处理器调试技术领域,特别是涉及一种RISC-V处理器指令下载方法及其装置。本发明还涉及一种FPGA开发板。
背景技术
在CPU(Central Processing Unit,中央处理器)设计中,可以依据开放的RISC-V架构设计自己所需要的CPU,即超低功耗RISC-V(精简指令集计算)处理器(蜂鸟E203)。在对处理器进行设计和调测过程中,需要将处理器烧录至开发板上,并通过开发板的接口下载上层测试指令来进行测试和调试。由于FPGA(Field-Programmable Gate Array,现场可编程门阵列)具有速度快、效率高、灵活稳定、集成度高等优点,所以在硬件逻辑验证与设计过程中,通常采用FPGA开发板来进行处理器测试。
目前在对FPGA开发板上的RISC-V处理器进行测试时,裸机程序必须通过开发板上jtag(Joint Test Action Group,联合测试工作组)接口下载,之后缓存与开发板上包含的nand-flash(闪存)最后由RISC-V处理器读取nand-flash中的程序,来完成裸机程序的调试。但是,这种方案中,指令下载必须依赖nand-flash和jtag接口,因此对于FPGA开发板的规格存在限制要求,不包含jtag接口和nand-flash的FPGA开发板即无法使用,因此通用性差。
因此,如何提供一种通用性强的RISC-V处理器指令下载方法及其装置以及一种FPGA开发板是本领域技术人员目前需要解决的问题。
发明内容
本发明的目的是提供一种RISC-V处理器指令下载方法及其装置,不依赖于jtag接口和nand-flash,而是通过通用的IO接口和指令存储器进行指令下载,提高了RISC-V处理器测试的通用性;本发明的另一目的是提供一种基于上述方法的FPGA开发板。
为解决上述技术问题,本发明提供了一种RISC-V处理器指令下载方法,基于现场可编程门阵列FPGA开发板,包括:
通过IO接口接收测试指令并保存至指令存储器中;
生成切换指令,将所述指令存储器切换为由待测试的精简指令集计算RISC-V处理器进行操作;
控制所述待测试的RISC-V处理器在复位后,读取所述指令存储器内的测试指令并运行。
优选地,所述通过IO接口接收测试指令并保存至指令存储器之后,生成所述切换指令之前,还包括:
读取所述指令存储器中保存的所述测试指令进行数据校验;校验通过后,生成所述切换指令。
优选地,所述通过IO接口接收测试指令并保存至指令存储器的过程,包括:
通过IO接口接收测试指令后对其进行串-并转换,得到并行数据并进行缓存;
检验缓存的并行数据是否达到第一预设数据量,若达到,读取所述并行数据并将其写入所述指令存储器内保存。
优选地,所述读取所述指令存储器中保存的所述测试指令进行数据校验的过程,包括:
判断所述指令存储器内存储的未校验的并行数据是否达到第二预设数据量,若达到,读取所述指令存储器内的所述未校验的并行数据进行缓存;
对缓存的所述未校验的并行数据进行并-串转换,得到未校验的串行数据;
对所述未校验的串行数据进行数据校验。
优选地,所述指令存储器内存储的未校验的并行数据达到第二预设数据量后,对所述未校验的并行数据进行数据校验过程,包括:
从所述未校验的并行数据中读取第三预设数据量的未校验并行数据进行缓存,将读取的未校验并行数据进行并-串转换后,对得到的未校验的串行数据进行数据校验;所述第二预设数据量为所述第三预设数据量的整数倍;
校验完成后,判断所述指令存储器内是否包含未校验的并行数据,若包含,则继续从所述未校验的并行数据中读取第三预设数据量的未校验并行数据;若不包含,则校验结束。
优选地,在将所述测试指令写入所述指令存储器的过程中,还包括:
对写入所述指令存储器的测试指令进行数据监测,将待写入的测试指令写入所述指令存储器后,判断实际写入的测试指令是否等于所述待写入的测试指令,若相等,则写入正确;若不相等,则写入错误,执行写入错误处理程序。
为解决上述技术问题,本发明还提供了一种RISC-V处理器指令下载装置,基于FPGA开发板,包括:
接收模块,用于通过IO接口接收测试指令并保存至指令存储器中;
所述切换模块,用于生成切换指令,将所述指令存储器切换为由待测试的精简指令集计算RISC-V处理器进行操作;
复位控制模块,用于控制所述待测试的RISC-V处理器复位后,读取所述指令存储器内的测试指令并运行。
优选地,还包括:
读取模块,用于读取所述指令存储器中保存的所述测试指令并发送至校验模块;
所述校验模块,用于对读取的测试指令进行数据校验;校验通过后,触发所述切换模块。
优选地,所述接收模块包括:
串-并转换单元,用于通过IO接口接收测试指令后对其进行串-并转换,得到并行数据并发送至接收缓存单元;
所述接收缓存单元,用于对所述并行数据进行缓存;
第一判断单元,用于检验接收缓存单元内缓存的并行数据是否达到第一预设数据量,若达到,触发写入单元;
所述写入单元,读取并行数据并将其写入指令存储器内保存。
为解决上述技术问题,本发明还提供了一种FPGA开发板,包括:
程序存储器,用于存储计算机程序;
指令存储器,用于存储测试指令;
处理器,用于执行所述计算机程序时实现如以上任一项所述的RISC-V处理器指令下载方法的步骤;
待测RISC-V处理器。
本发明提供了一种RISC-V处理器指令下载方法及其装置,通过通用的IO接口接收测试指令,并将其保存至指令存储器中,之后通过切换指令将指令存储器切换为由待测试的RISC-V处理器进行操作,这样使得RISC-V处理器复位后能够读取指令存储器内的测试指令并运行,从而使RISC-V处理器完成指令下载及运行的目的。可见,在本发明中,指令下载过程不依赖于jtag接口和nand-flash,而是从通用的IO接口下载指令后保存与通用的指令存储器中,由于IO接口和指令存储器为各种型号的FPGA开发板均包含的组件,因此,本发明降低了处理器测试对FPGA的规格要求,提高了RISC-V处理器测试过程的通用性。本发明还提供了一种基于上述方法的FPGA开发板。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种RISC-V处理器指令下载方法的过程的流程图;
图2为本发明提供的另一种RISC-V处理器指令下载等方法的过程的流程图;
图3为本发明提供的一种RISC-V处理器指令下载装置的结构示意图;
图4为本发明提供的一种RISC-V处理器指令下载装置的具体结构示意图。
具体实施方式
本发明的核心是提供一种RISC-V处理器指令下载方法及其装置,不依赖于jtag接口和nand-flash,而是通过通用的IO接口和指令存储器进行指令下载,提高了RISC-V处理器测试的通用性;本发明的另一核心是提供一种基于上述方法的FPGA开发板。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种RISC-V处理器指令下载方法,基于现场可编程门阵列FPGA开发板,参见图1所示,图1为本发明提供的一种RISC-V处理器指令下载方法的过程的流程图;该方法包括:
步骤s1:通过IO接口接收测试指令并保存至指令存储器(Instrction TightlyCoupled Memory,ITCM)中;
这里的测试指令是由FPGA开发板通过自身IO接口从上位机PC机处接收的。IO接口为通用接口,正常情况下任何规格的开发板均具有IO接口,因此,相比非通用的jtag接口,本发明使用IO接口接收测试指令,通用性更强。
步骤s2:生成切换指令,将指令存储器切换为由待测试的精简指令集计算RISC-V处理器进行操作;
可以理解的是,待测试的RISC-V处理器是设置于FPGA开发板上的,在未切换之前,指令存储器由FPGA开发板上的其余处理器控制,这部分处理器接收IO接口接收的测试指令进行处理并写入指令存储器内,由于此时测试指令可能尚未写入完成,故这种情况下,待测试的RISC-V处理器无法对指令存储器进行读取。测试指令接收完毕后,通过切换指令,将指令存储器切换为由待测试的RISC-V处理器进行操作,使得此时待测试的RISC-V处理器能够正常对指令存储器内的测试指令进行读取,从而完成了RISC-V处理器的指令下载操作。由于指令存储器为通用组件,相比目前必须从非通用的nand-flash中读取测试指令的方式,通用性更强。
步骤s3:控制待测试的RISC-V处理器在复位后,读取指令存储器内的测试指令并运行。
可以理解的是,处理器中的程序在接收之后,必须首先对处理器进行复位,然后才能对新接收的程序进行运行。这是由于指令存储器ITCM和boot空间类似,想要读取存储于其中的数据的话,自身必须先复位,再读取。
本发明提供了一种RISC-V处理器指令下载方法,通过通用的IO接口接收测试指令,并将其保存至指令存储器中,之后通过切换指令将指令存储器切换为由待测试的RISC-V处理器进行操作,这样使得RISC-V处理器复位后能够读取指令存储器内的测试指令并运行,从而使RISC-V处理器完成指令下载及运行的目的。可见,在本发明中,指令下载过程不依赖于jtag接口和nand-flash,而是从通用的IO接口下载指令后保存与通用的指令存储器中,由于IO接口和指令存储器为各种型号的FPGA开发板均包含的组件,因此,本发明降低了处理器测试对FPGA的规格要求,提高了RISC-V处理器测试过程的通用性。
作为优选地,通过IO接口接收测试指令并保存至指令存储器之后,生成切换指令之前,还包括:
步骤s20:读取指令存储器中保存的测试指令进行数据校验;校验通过后,生成切换指令。
可以理解的是,FPGA开发板接收的测试指令,不一定绝对正确,因此为了保证RISC-V处理器能够获取正确的指令运行,在将指令存储器切换至RISC-V处理器控制之前,需要首先对指令存储器内存储的测试指令进行数据校验,验证测试指令的数据格式和逻辑等是否存在错误,若不存在,才能允许RISC-V处理器读取测试指令运行,若存在错误,则不能将指令存储器切换至RISC-V处理器控制,并需要进行告警提醒等来告知工作人员出现了测试指令错误的情况,从而方便工作人员及时处理,且避免RISC-V处理器运行错误的测试指令,提高处理器测试的准确性。
作为优选地,步骤s1的过程包括:
步骤s11:通过IO接口接收测试指令后对其进行串-并转换,得到并行数据并进行缓存;
可以理解的是,测试指令程序在上位机内转换为二进制文件,之后上位机通过串口将二进制文件发送至FPGA开发板,由于串行数据传输时速度较慢,因此为了提高数据传输速度,本实施例在接收测试指令后,对其进行串-并转换,将其转换为了并行数据,即测试指令在FPGA开发板内主要以并行数据的方式进行传输。
步骤s12:检验缓存的并行数据是否达到第一预设数据量,若达到,读取并行数据并将其写入指令存储器内保存。
可以理解的是,通过采用暂时缓存并行数据,等到并行数据达到一定数据量后,再统一写入指令存储器的方式,相比实时传输并行数据的方式来说,数据传输的效率更高,且能够降低对数据传输通道的占用时间。其中,这里的并行数据可以为8位宽的数据,即每组并行数据为8bit,这里的第一预设数据量可以为8组并行数据,即8x8bit。当然,本发明不限定并行数据的位宽,也不限定第一预设数据量的具体数值。另外,在其他实施例中,也可不对并行数据进行检验,而是每得到一组并行数据即写入指令存储器内,具体采用哪种方式,本发明不作具体限定。
在优选实施例中,在步骤s12中并行数据达到第一预设数据量之后,将并行数据写入指令存储器之前,还包括:
将并行数据的数据格式转换为指令存储器存储数据的数据格式,然后再将转换后的并行数据写入指令存储器内。例如,可以将8bit数据转为64bit数据格式并调整其大小端,使其符合ITCM存储的数据格式要求。当然,这里如何进行格式转换与指令存储器的格式要求有关,本发明对此不作限定。
作为优选地,参见图2所示,图2为本发明提供的另一种RISC-V处理器指令下载等方法的过程的流程图;步骤s20的过程包括:
步骤s201:判断指令存储器内存储的未校验的并行数据是否达到第二预设数据量,若达到,进入步骤s202;若未达到,重复本步骤操作;
步骤s202:读取指令存储器内的未校验的并行数据进行缓存;
其中,假设每次读取25KB的未校验的并行数据,在对其进行缓存时,可以每次依次缓存8x 8bit,即读取25KB数据后,首先发送8x 8bit进行缓存,之后将这8x 8bit发送至后续进行并-串转换,然后再缓存8x 8bit数据;或者也可每次一次性将25KB的数据进行缓存。具体如何缓存与缓存单元的存储空间大小有关,本发明不作限定。另外,数据缓存后,缓存单元可以每次均将自身保存的全部数据统一发送至后端进行并-串转换,或者也可以按组每次发送8bit的数据,一旦缓存单元内存在空白存储空间,则继续接收数据进行缓存。当然,缓存单元如何发送数据进行并-串转换,本发明不作具体限定。
步骤s203:对缓存的未校验的并行数据进行并-串转换,得到未校验的串行数据;
可以理解的是,由于数据校验必须对全部数据进行校验,因此若对并行数据进行校验的话,则必须通过多个进程并行处理,进程占用较多,因此,本实施例采用将其转换为串行数据后,由一个进程串行校验的方式。
步骤s204:对未校验的串行数据进行数据校验,校验通过后,进入步骤s2。
可以理解的是,若指令存储器一旦接收到一组并行数据即对其进行校验的话,读取未校验的并行数据的操作会非常频繁,对开发板内的线程占用也较多,因此,本实施例通过设定第二预设数据量,使得只有当指令存储器内的并行数据达到一定程度后,再触发校验读操作,读取未校验的并行数据,从而减小对线程的占用频率。其中,第二预设数据量通常大于一组并行数据的数据量。例如,假设ITCM容量为64KB,第二预设数据量可以为50KB,当然,本发明对此不作限定。
进一步的,指令存储器内存储的未校验的并行数据达到第二预设数据量后,对未校验的并行数据进行数据校验过程,包括:
从未校验的并行数据中读取第三预设数据量的未校验并行数据进行缓存,将读取的未校验并行数据进行并-串转换后,对得到的未校验的串行数据进行数据校验;第二预设数据量为第三预设数据量的整数倍;
校验完成后,判断指令存储器内是否包含未校验的并行数据,若包含,则继续从未校验的并行数据中读取第三预设数据量的未校验并行数据;若不包含,则校验结束。
可以理解的是,本实施例中,每次仅读取第三预设数据量的未校验并行数据进行校验,分批次对未校验并行数据进行校验,从而使得FPGA开发板内,用于缓存从指令存储器内读取的未校验并行数据的存储单元的存储空间可以不必设置过大,从而减少了存储资源的浪费。其中,第三预设数据量通常大于一组并行数据的数据量。例如,假设第二预设数据量为50KB,第三预设数据量可以为25KB,当然,本发明对此不作限定。
另外,这里的数据校验操作,可以通过在FPGA开发板内设置校验程序,然后由这些校验程序进行;也可以由上位机进行,若由上位机进行的话,则将未校验并行数据从指令存储器内读取出来后,需要通过IO接口发送至上位机,并通过IO接口接收上位机返回的校验结果。并且,由于之前上位机是通过串口将测试指令发送至FPGA开发板的,因此,这种情况下必须将未校验并行数据转换为串行数据再返回上位机。具体采用哪种校验方式,本发明不作限定。
作为优选地,在将测试指令写入指令存储器的过程中,还包括:
对写入指令存储器的测试指令进行数据监测,将待写入的测试指令写入指令存储器后,判断实际写入的测试指令是否等于待写入的测试指令,若相等,则写入正确;若不相等,则写入错误,执行写入错误处理程序。
可以理解的是,数据写入是存在误差的,写入指令存储器的数据可能存在写入错误,因此在写入测试指令后,本实施例对写入的测试指令进行了验证,判断其是否正确,若写入错误,则进行相应的错误处理程序进行处理,从而提高了指令存储器内保存的数据的正确性。
另外,判断实际写入的测试指令是否等于待写入的测试指令的过程,可以是将实际写入的测试指令读取出来,与之前待写入的测试指令进行比对,看其是否相同;或者也可以是对写入的测试指令进行其他验证等,本发明对此不作限定。另外,这里的错误处理程序,可以是继续将待写入的测试指令写入下一存储位置,或者可以是删除之前写入的错误的测试指令,或者是发出告警提醒工作人员等,本发明对此不作限定。
其中,本发明上述提到的测试指令包括用于测试RISC-V处理器的裸机程序,程序类型为C程序。当然,本发明不限定测试指令的程序类型以及内容。
本发明还提供了一种RISC-V处理器指令下载装置,基于FPGA开发板,参见图3所示,图3为本发明提供的一种RISC-V处理器指令下载装置的结构示意图;该装置包括:
接收模块1,用于通过IO接口接收测试指令并保存至指令存储器中;
切换模块2switch,用于生成切换指令,将指令存储器切换为由待测试的精简指令集计算RISC-V处理器进行操作;
复位控制模块3,用于控制待测试的RISC-V处理器复位后,读取指令存储器内的测试指令并运行。
作为优选地,该装置还包括:
读取模块,用于读取指令存储器中保存的测试指令并发送至校验模块;
校验模块,用于对读取的测试指令进行数据校验;校验通过后,触发切换模块2。
作为优选地,接收模块1包括:
串-并转换单元recv-shift-register,用于通过IO接口接收测试指令后对其进行串-并转换,得到并行数据并发送至接收缓存单元;具体功能可以为支持波特率50~256000B/s,实现串口UART串行数据接收并转为8位并行数据;当然,本发明不限定并行数据的位数以及波特率;
接收缓存单元rx-fifo,用于对并行数据进行缓存;
第一判断单元,用于检验接收缓存单元内缓存的并行数据是否达到第一预设数据量,若达到,触发写入单元;
写入单元itcm-wr-logic,读取并行数据并将其写入指令存储器内保存;写入单元按照RISCV的ITCM存储器的协议,完成对ITCM的写操作。
作为优选地,读取模块包括:
第二判断单元,用于判断所述指令存储器内存储的未校验的并行数据是否达到第二预设数据量,若达到,触发读取单元;
读取单元itcm-rd-logic,用于读取所述指令存储器内的所述未校验的并行数据并发送至读取缓存单元;读取单元按照RISCV的ITCM存储器的协议完成对ITCM的读操作。
读取缓存单元tx-fifo,用于对读取的未校验的并行数据进行缓存;
并-串转换单元txmit-shift-register,用于对缓存的所述未校验的并行数据进行并-串转换,得到未校验的串行数据并发送至校验模块。具体功能可以为支持波特率50~256000B/s,实现8位并行数据和串口UART串行数据协议的转换;当然,本发明不限定并行数据的位数以及波特率。
另外,串-并转换单元recv-shift-register还连接有recv-logic模块,该模块符合UART16550协议,用于实现协议接收数据逻辑;并-串转换单元txmit-shift-register还连接有txmit-logic模块,该模块符合UART16550协议,用于实现协议发送数据逻辑。
recv-logic模块和txmit-logic模块的输入端均连接有波特率产生逻辑模块baud-rate-gen-logic的输出端,波特率产生逻辑模块用于产生配置的波特率并发送至recv-logic模块和txmit-logic模块。波特率产生逻辑模块的输入端连接有分频模块divisor-latch的输出端,分频模块用于产生16倍采集时钟。
作为优选地,该装置还包括:
数据格式转换模块,用于将并行数据的数据格式转换为指令存储器存储数据的数据格式,然后再将转换后的并行数据写入指令存储器内。
其中,uart2itcm-convert模块可以包括上述第一判断单元、数据格式转换模块以及第二判断单元的功能。另外,接收缓存单元rx-fifo和uart2itcm-convert之间还包括有输入同步模块rx-sync,用于实现输入数据的时钟同步;读取缓存单元tx-fifo和uart2itcm-convert之间还包括有输出同步模块tx-sync,用于实现输出数据的时钟同步。
作为优选地,该装置还包括:
数据检查模块dat-check,用于检测写入指令存储器的测试指令是否有误。
基于以上实施例,参见图4所示,图4为本发明提供的一种RISC-V处理器指令下载装置的具体结构示意图。为方便理解,以下为本发明提供的一种具体实施例中,各个模块和单元的具体工作过程:
上位机将C程序转为二进制文件并通过串口将二进制文件发送给串-并转换单元recv-shift-register。recv-shift-register按照UART16550协议对二进制源程序接收,并进行串-并转换后将其转为8位宽并行数据后存储于接收缓存单元rx-fifo;
uart2itcm_convert模块检测到rx_fifo中数据达到8组时,会读取rx-fifo中的8组数据,将其转为itcm存储数据的数据格式后,通过写入单元itcm-wr-logic,按照ITCM的写逻辑,写入到ITCM中;
ITCM容量为64KB,uart2itcm_convert模块检测到ITCM写入的数据达到50KB时,触发校验读,uart2itcm_convert模块通过读取单元itcm-rd-logic每次读取25KB的数据发送至tx_fifo缓存;
tx_fifo每次接收8x8bit数据进行缓存,并通过并-串转换单元txmit-shift-register将缓存的8组数据进行并-串转换,转换完毕后的串行数据通过IO接口发送至上位机,由上位机PC端软件完成数据校验;
校验通过后,接收上位机发送的通过信息后,生成切换指令控制切换模块2switch切换至处理器(例如E203)操作ITCM,复位E203,运行从ITCM内读取的C程序。
其中,图4中的rxd为IO接口接收的串行数据,txd为IO接口向外发送的串行数据。Itcm_clk为向ITCM写入数据时的时钟信号;Itcm_dat为向ITCM写入的数据;Itcm_wen为Itcm_write enable,即向ITCM内写入数据的写入允许信号;Itcm_wem为Itcm_writeenable mask,即向ITCM内写入数据的写使能屏蔽信号;Itcm_rdat为从ITCM读取的数据;CPU_sig为ITCM与CPU之间传输的信号;U2i_sig为ITCM与FPGA开发板中程序处理器之间传输的信号;ITCM_sig为写入ITCM或从ITCM读取的数据。
本发明采用异步收发串口设计,主要实现了RISC-V处理器的外部指令下载功能设计,应用于开源RISC-V(E203-SOC)工程中,与ITCM存储器模块相连接,实现了可以从外部使用通用IO接口直接下载C程序的操作,并且可将指令存储器中的缓存指令读取,做校验操作。
本发明解决了在对RISC-V处理器进行测试时,不包含jtag接口和闪存flash的FPGA开发板无法从外部下载CPU裸机程序和指令的问题,采用通用IO接口和ITCM存储,可以广泛应用于所有FPGA开发平台,有效的解决了E203-SOC工程移植性问题,有利于后期对RISC-V E203SOC的开发和改进,节省了SOC(System on Chip,系统级芯片)设计后期的研发周期。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本发明还提供了一种FPGA开发板,包括:
程序存储器,用于存储计算机程序;
指令存储器,用于存储测试指令;
处理器,用于执行计算机程序时实现如以上任一项的RISC-V处理器指令下载方法的步骤;
待测RISC-V处理器。
以上的几种具体实施方式仅是本发明的优选实施方式,以上几种具体实施例可以任意组合,组合后得到的实施例也在本发明的保护范围之内。应当指出,对于本技术领域的普通技术人员来说,相关专业技术人员在不脱离本发明精神和构思前提下推演出的其他改进和变化,均应包含在本发明的保护范围之内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (10)

1.一种RISC-V处理器指令下载方法,基于现场可编程门阵列FPGA开发板,其特征在于,包括:
通过IO接口接收测试指令并保存至指令存储器中;
生成切换指令,将所述指令存储器切换为由待测试的精简指令集计算RISC-V处理器进行操作;
控制所述待测试的RISC-V处理器在复位后,读取所述指令存储器内的测试指令并运行。
2.根据权利要求1所述的方法,其特征在于,所述通过IO接口接收测试指令并保存至指令存储器之后,生成所述切换指令之前,还包括:
读取所述指令存储器中保存的所述测试指令进行数据校验;校验通过后,生成所述切换指令。
3.根据权利要求2所述的方法,其特征在于,所述通过IO接口接收测试指令并保存至指令存储器的过程,包括:
通过IO接口接收测试指令后对其进行串-并转换,得到并行数据并进行缓存;
检验缓存的并行数据是否达到第一预设数据量,若达到,读取所述并行数据并将其写入所述指令存储器内保存。
4.根据权利要求3所述的方法,其特征在于,所述读取所述指令存储器中保存的所述测试指令进行数据校验的过程,包括:
判断所述指令存储器内存储的未校验的并行数据是否达到第二预设数据量,若达到,读取所述指令存储器内的所述未校验的并行数据进行缓存;
对缓存的所述未校验的并行数据进行并-串转换,得到未校验的串行数据;
对所述未校验的串行数据进行数据校验。
5.根据权利要求4所述的方法,其特征在于,所述指令存储器内存储的未校验的并行数据达到第二预设数据量后,对所述未校验的并行数据进行数据校验过程,包括:
从所述未校验的并行数据中读取第三预设数据量的未校验并行数据进行缓存,将读取的未校验并行数据进行并-串转换后,对得到的未校验的串行数据进行数据校验;所述第二预设数据量为所述第三预设数据量的整数倍;
校验完成后,判断所述指令存储器内是否包含未校验的并行数据,若包含,则继续从所述未校验的并行数据中读取第三预设数据量的未校验并行数据;若不包含,则校验结束。
6.根据权利要求1-5任一项所述的方法,其特征在于,在将所述测试指令写入所述指令存储器的过程中,还包括:
对写入所述指令存储器的测试指令进行数据监测,将待写入的测试指令写入所述指令存储器后,判断实际写入的测试指令是否等于所述待写入的测试指令,若相等,则写入正确;若不相等,则写入错误,执行写入错误处理程序。
7.一种RISC-V处理器指令下载装置,基于FPGA开发板,其特征在于,包括:
接收模块,用于通过IO接口接收测试指令并保存至指令存储器中;
所述切换模块,用于生成切换指令,将所述指令存储器切换为由待测试的精简指令集计算RISC-V处理器进行操作;
复位控制模块,用于控制所述待测试的RISC-V处理器复位后,读取所述指令存储器内的测试指令并运行。
8.根据权利要求7所述的装置,其特征在于,还包括:
读取模块,用于读取所述指令存储器中保存的所述测试指令并发送至校验模块;
所述校验模块,用于对读取的测试指令进行数据校验;校验通过后,触发所述切换模块。
9.根据权利要求8所述的装置,其特征在于,所述接收模块包括:
串-并转换单元,用于通过IO接口接收测试指令后对其进行串-并转换,得到并行数据并发送至接收缓存单元;
所述接收缓存单元,用于对所述并行数据进行缓存;
第一判断单元,用于检验接收缓存单元内缓存的并行数据是否达到第一预设数据量,若达到,触发写入单元;
所述写入单元,读取并行数据并将其写入指令存储器内保存。
10.一种FPGA开发板,其特征在于,包括:
程序存储器,用于存储计算机程序;
指令存储器,用于存储测试指令;
处理器,用于执行所述计算机程序时实现如权利要求1至6任一项所述的RISC-V处理器指令下载方法的步骤;
待测RISC-V处理器。
CN201811593647.4A 2018-12-25 2018-12-25 一种risc-v处理器指令下载方法及其装置 Active CN109684152B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811593647.4A CN109684152B (zh) 2018-12-25 2018-12-25 一种risc-v处理器指令下载方法及其装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811593647.4A CN109684152B (zh) 2018-12-25 2018-12-25 一种risc-v处理器指令下载方法及其装置

Publications (2)

Publication Number Publication Date
CN109684152A true CN109684152A (zh) 2019-04-26
CN109684152B CN109684152B (zh) 2023-03-24

Family

ID=66189384

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811593647.4A Active CN109684152B (zh) 2018-12-25 2018-12-25 一种risc-v处理器指令下载方法及其装置

Country Status (1)

Country Link
CN (1) CN109684152B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111881636A (zh) * 2020-07-07 2020-11-03 广芯微电子(广州)股份有限公司 一种基于risc-v芯片的仿真调试方法及装置
CN112099853A (zh) * 2020-09-17 2020-12-18 广东高云半导体科技股份有限公司 基于fpga实现的risc-v处理器、fpga芯片及片上系统
CN117827286A (zh) * 2024-03-05 2024-04-05 先进计算与关键软件(信创)海河实验室 Risc-v架构二进制转译文件复用方法、装置及存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020065646A1 (en) * 2000-09-11 2002-05-30 Waldie Arthur H. Embedded debug system using an auxiliary instruction queue
US20030217306A1 (en) * 2002-05-17 2003-11-20 Harthcock Jerry D. Self-programmable microcomputer and method of remotely programming same
CN101329385A (zh) * 2008-08-01 2008-12-24 炬力集成电路设计有限公司 一种片上系统的调测系统、调测方法以及片上系统
CN102436385A (zh) * 2011-11-15 2012-05-02 电子科技大学 一种可编程逻辑器件配置文件在线更新装置
WO2013109234A2 (en) * 2011-11-03 2013-07-25 Intel Corporation Method to accelerate message signaled interrupt processing
CN103942070A (zh) * 2014-04-01 2014-07-23 江西三川水表股份有限公司 一种运用m_bus总线进行模块程序烧录的方法及装置
US20150278131A1 (en) * 2014-03-26 2015-10-01 Kay Hesse Direct memory access controller with general purpose inputs and outputs
US20160359896A1 (en) * 2015-06-05 2016-12-08 International Business Machines Corporation Application testing for security vulnerabilities
WO2018018978A1 (zh) * 2016-07-25 2018-02-01 深圳市中兴微电子技术有限公司 一种通用串行总线控制器验证方法、系统及设备
CN107852379A (zh) * 2015-05-22 2018-03-27 格雷研究有限公司 用于现场可编程门阵列的定向二维路由器和互连网络、以及所述路由器和网络的其他电路和应用

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020065646A1 (en) * 2000-09-11 2002-05-30 Waldie Arthur H. Embedded debug system using an auxiliary instruction queue
US20030217306A1 (en) * 2002-05-17 2003-11-20 Harthcock Jerry D. Self-programmable microcomputer and method of remotely programming same
CN101329385A (zh) * 2008-08-01 2008-12-24 炬力集成电路设计有限公司 一种片上系统的调测系统、调测方法以及片上系统
WO2013109234A2 (en) * 2011-11-03 2013-07-25 Intel Corporation Method to accelerate message signaled interrupt processing
CN102436385A (zh) * 2011-11-15 2012-05-02 电子科技大学 一种可编程逻辑器件配置文件在线更新装置
US20150278131A1 (en) * 2014-03-26 2015-10-01 Kay Hesse Direct memory access controller with general purpose inputs and outputs
CN103942070A (zh) * 2014-04-01 2014-07-23 江西三川水表股份有限公司 一种运用m_bus总线进行模块程序烧录的方法及装置
CN107852379A (zh) * 2015-05-22 2018-03-27 格雷研究有限公司 用于现场可编程门阵列的定向二维路由器和互连网络、以及所述路由器和网络的其他电路和应用
US20160359896A1 (en) * 2015-06-05 2016-12-08 International Business Machines Corporation Application testing for security vulnerabilities
WO2018018978A1 (zh) * 2016-07-25 2018-02-01 深圳市中兴微电子技术有限公司 一种通用串行总线控制器验证方法、系统及设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
BOB HU: "蜂鸟E203快速上手说明", 《网址:HTTPS://GITHUB.COM/SI-RISCV/E200_OPENSOURCE》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111881636A (zh) * 2020-07-07 2020-11-03 广芯微电子(广州)股份有限公司 一种基于risc-v芯片的仿真调试方法及装置
CN111881636B (zh) * 2020-07-07 2021-05-04 广芯微电子(广州)股份有限公司 一种基于risc-v芯片的仿真调试方法及装置
CN112099853A (zh) * 2020-09-17 2020-12-18 广东高云半导体科技股份有限公司 基于fpga实现的risc-v处理器、fpga芯片及片上系统
CN112099853B (zh) * 2020-09-17 2021-10-29 广东高云半导体科技股份有限公司 基于fpga实现的risc-v处理器、fpga芯片及片上系统
CN117827286A (zh) * 2024-03-05 2024-04-05 先进计算与关键软件(信创)海河实验室 Risc-v架构二进制转译文件复用方法、装置及存储介质
CN117827286B (zh) * 2024-03-05 2024-04-26 先进计算与关键软件(信创)海河实验室 Risc-v架构二进制转译文件复用方法、装置及存储介质

Also Published As

Publication number Publication date
CN109684152B (zh) 2023-03-24

Similar Documents

Publication Publication Date Title
CN102360329B (zh) 总线监控与调试控制装置及进行总线监控与总线调试的方法
US5596734A (en) Method and apparatus for programming embedded memories of a variety of integrated circuits using the IEEE test access port
CN102541707B (zh) 复用jtag接口的fpga片内逻辑分析仪系统和方法
CN108519889B (zh) 一种基于jtag标准的fpga程序远程升级系统及方法
CN109684152A (zh) 一种risc-v处理器指令下载方法及其装置
JP4398008B2 (ja) Jtagポートを介したメモリユニットの入出力処理の制御のための方法及び装置
CN107451025B (zh) 控制存储芯片的测试方法及系统
US20030046610A1 (en) Microcomputer and debugging system
CN109144932A (zh) 一种基于dsp的快速动态配置fpga的装置及方法
CN113434162B (zh) 远程在线更新fpga多版本程序的方法
CN102306127B (zh) 一种ddriii内存识别和初始化方法
CN101785066B (zh) 可编程诊断存储器模块及测试方法
CN105718339A (zh) 一种fpga/cpld 远程调试系统及方法
CN108802601A (zh) 环路传输的芯片测试方法、装置及计算机设备
CN103246588B (zh) 一种自校验串行总线控制器和自校验串行总线实现方法
CN108664264A (zh) 一种基于cpu通过jtag方式远程更新fpga的装置和方法
CN202267954U (zh) 总线监控与调试控制装置
CN103376777A (zh) 控制器的Modbus通讯接口的测试方法及上位机
CN104461796B (zh) 用于嵌入式8051cpu的jtag调试模块及调试方法
CN117499503A (zh) 一种支持远程调试的协议转换器及远程调试方法
CN116737078A (zh) 一种快速闪存读写系统、方法、设备及介质
CN116257037A (zh) 控制器测试程序的生成方法、系统、电子设备及存储介质
CN101998135A (zh) 移动电视信号采集及播放系统、控制方法
CN100365606C (zh) 安全数字存储卡数据的存储器直接存取方法及其接口电路
CN112882876A (zh) 一种pld器件远程调试和配置系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant