CN113254372A - 用两阶段配置过程提供可编程微控制器的方法和系统 - Google Patents
用两阶段配置过程提供可编程微控制器的方法和系统 Download PDFInfo
- Publication number
- CN113254372A CN113254372A CN202110638021.6A CN202110638021A CN113254372A CN 113254372 A CN113254372 A CN 113254372A CN 202110638021 A CN202110638021 A CN 202110638021A CN 113254372 A CN113254372 A CN 113254372A
- Authority
- CN
- China
- Prior art keywords
- configuration
- configurable
- memory
- microcontroller
- interface
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 88
- 230000008569 process Effects 0.000 title claims abstract description 56
- 230000015654 memory Effects 0.000 claims abstract description 150
- 238000004891 communication Methods 0.000 claims abstract description 90
- 230000006870 function Effects 0.000 claims description 62
- 230000002093 peripheral effect Effects 0.000 claims description 17
- 238000012545 processing Methods 0.000 claims description 11
- 230000003068 static effect Effects 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 52
- 230000008901 benefit Effects 0.000 description 15
- 238000012795 verification Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 239000004973 liquid crystal related substance Substances 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- PGLIUCLTXOYQMV-UHFFFAOYSA-N Cetirizine hydrochloride Chemical compound Cl.Cl.C1CN(CCOCC(=O)O)CCN1C(C=1C=CC(Cl)=CC=1)C1=CC=CC=C1 PGLIUCLTXOYQMV-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1694—Configuration of memory controller to different memory types
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Logic Circuits (AREA)
Abstract
本申请涉及用两阶段配置过程提供可编程微控制器的方法和系统。本发明的一个实施例公开了一种两阶段配置过程,在第一阶段配置期间配置现场可编程门阵列为包括可配置微控制器,并在第二阶段配置期间配置可配置微控制器。一方面,两阶段配置过程能通过通信总线从第一外部存储位置接收第一配置数据。将第一配置数据存储在第一配置存储器中,用于针对第一阶段配置来将现场可编程门阵列配置为包含可配置微控制器后,通过通信总线从第二外部存储位置获取具有微控制器属性的第二配置数据。随后,将第二配置数据存储在第二配置存储器中,用于针对第二阶段配置编程可配置微控制器。
Description
技术领域
本发明的示例性实施例涉及计算机硬件和软件。更具体地,本发明的示例性实施例涉及片上处理器和/或微控制器(Microcontroller Unit,MCU)。
背景技术
随着数字通信、人工智能(Artificial Intelligence,AI)、物联网(Internet ofThings,IoT)和/或机器人控制的日益普及,对更多、更快的数据的需求不断增加。为处理电子系统或计算机之间的大量数据,通常需要高速接口组件。为正确处理各种不同类型的接口标准或协议,一般会采用各种不同类型的MCU。
传统的MCU包含一个或更多个集成在单个集成电路(Integrated Circuit,IC)中的处理器。传统的MCU包括用于嵌入式应用的存储器设备和逻辑电路,如输入/输出(Input/Output,IO)管理。
在应用方面,MCU可用于管理产品和设备,如汽车控制系统、计算机网络系统、医疗系统、远程控制、车辆控制、机器人应用、机械控制、办公机器、电器、电动工具、玩具等。各种不同类型的外围设备需要不同类型的MCU处理各种数字计算和/或网络行业。在不同的环境下,不同的外围设备可能需要MCU来感测和/或控制电气系统、工业控制、汽车、网络通信等。
传统MCU的缺点是,在一般情况下,特定类型的接口通信需要特定的MCU配置。
发明内容
本发明的一个实施例公开了一种两阶段配置过程(Two-phase ConfigurationProcess,TCP),在第一阶段配置期间配置现场可编程门阵列(Field-Programmable GateArray,FPGA)以包括可配置微控制器(Configurable Microcontroller Unit,CMU),并在第二阶段配置期间配置CMU。一方面,TCP能通过通信总线从第一外部存储位置接收第一配置数据。将第一配置数据存储在第一配置存储器中,用于针对第一阶段配置将FPGA配置为包含CMU,之后,通过通信总线从第二外部存储位置获取具有MCU属性的第二配置数据。随后,将第二配置数据存储在第二配置存储器中,用于针对第二阶段配置对CMU编程。
一方面,CMU包括处理器、I/O端口和可编程微控制器(ProgrammableMicrocontroller,PM)。该处理器被配置为基于一组预定义指令代码与主机中央处理器(Central Processing Unit,CPU)进行通信。I/O端口用于在处理器和外部设备间传输信息。PM通过由PM根据接口编程微码选择的一个或更多个可配置的通信标准,促进I/O端口和一个或更多个外部设备之间的通信接口。
或者,一个实施例公开了提供一种用于识别至少一个嵌入式功能的CMU的过程。例如,通过通信网络搜索到使CMU执行嵌入式功能的位图(bit map)或软件后,一旦找到位图,就通过通信网络下载位图。一旦CMU响应位图进行编程,CMU执行的嵌入式功能就会按照下载的位图进行验证。
通过以下详细描述、附图和权利要求,本发明示例性实施例的其他特征和优点将显而易见。
附图说明
通过以下详细描述和本发明的各种实施例附图,将更充分理解本发明的示例性实施例,然而,这些附图不应被用于将本发明限制到具体的实施例,而仅用于解释和理解。
图1是根据本发明的一个实施例示出的CMU图,该CMU能提供基于可编程微码的通信接口。
图2是根据本发明的一个实施例示出的CMU中使用的可编程处理器的框图。
图3是根据本发明的一个实施例示出的具有可编程端口的CMU的框图。
图4-6是根据本发明的一个实施例示出的包含PM的CMU的框图。
图7是根据本发明的一个实施例示出的CMU中使用的存储器结构的框图。
图8是根据本发明的一个实施例示出的编程PM的可配置开关的框图。
图9-10是根据本发明的一个实施例示出的云编程CMU的过程框图。
图11是根据本发明的一个实施例示出的使用下载的位图对CMU进行编程过程的流程图。
图12是根据本发明的一个实施例示出的能通过CMU提供嵌入式功能的计算机网络图。
图13是根据本发明的一个实施例示出的能处理和/或执行CMU中使用的指令的数字处理系统或组件的框图。
图14是根据本发明的一个实施例示出的通过TCP能包括CMU的可编程半导体器件(Programmable Semiconductor Device,PSD)或FPGA的框图。
图15是根据本发明的一个实施例示出的TCP的逻辑过程的框图。
图16是根据本发明的一个实施例示出的TCP的过程流程图,该TCP用于促进CMU的配置过程。
图17是根据本发明的一个实施例示出的使用TCP对CMU进行编程过程的流程图。
具体实施方式
本发明的实施例在通过一个或更多个可配置MCU提供可选择的接口管理的方法和/或装置的背景下在此进行描述。
以下详细描述的目的是提供对本发明的一个或更多个实施例的理解。本领域的普通技术人员会意识到,以下详细描述仅是说明性的,并不意在以任何方式加以限制。受益于本公开和/或描述的这些技术人员很容易联想到其它实施例。
为清楚起见,本文所述实施方式的常规功能并没有全部展示和描述。当然,可以理解,在任何这种实际实施方式的开发过程中,为了实现开发者的特定目标,例如遵守应用相关和商业相关的限制,可能会做出许多特定于实现方式的决定,而且这些特定目标会因不同的实施方式和不同的开发者而有所不同。此外,可以理解,这些开发工作虽然可能复杂耗时,但对于那些受益于本文公开实施例的本领域普通技术人员而言,这些开发工作只是一项常规的工程工作。
附图中所示的本发明的各种实施例并非按比例绘制。相反,为清楚起见,可以扩大或缩小各种特征的尺寸。此外,为清楚起见,一些图样可能会被简化。因此,附图中可能没有描绘出给定装置(如设备)或方法的所有组件。在整个附图和下面的详细描述中将使用相同的参考标记来指代相同或类似的部件。
根据本发明的实施例,此处描述的组件、过程步骤/或数据结构可以使用各种类型的操作系统、计算平台、计算机程序/或通用机器来实现。此外,本领域的普通技术人员会认识到,在不偏离本文所公开的发明概念的范围和精神的情况下,也可以使用不那么通用的设备,例如硬件设备、现场可编程门列阵(FPGA)、特殊应用集成电路(Application-Specific Integrated Circuit,ASIC)等。如果包含一系列过程步骤的方法是由计算机或机器实现的,并且这些过程步骤可以存储为机器可读的一系列指令,则它们可以存储在诸如计算机存储设备等的有形介质上,例如:只读存储器(Read Only Memory,ROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、闪存(FlashMemory)、跳跃驱动器(Jump Drive)、磁性存储介质(例如:磁带、磁盘驱动器等)、光存储介质(例如:只读光盘存储器(CD-ROM)、数字只读光盘存储器(DVD-ROM)、纸卡和纸带等)以及其他已知类型的程序存储器。
术语“系统”或“设备”在此一般用于描述任何数量的组件、元件、子系统、设备、分组开关元件、分组开关、接入开关、路由器、网络、计算机和/或通信设备或机制,或其组成部分的组合。术语“计算机”包括能够执行指令的处理器、存储器和总线,其中计算机是指一台或一个集群的计算机、个人计算机、工作站、主机或其计算机的组合。
本发明的一个实施例公开了一种能够提供一个或更多个可编程I/O接口的CMU。CMU包括处理器、I/O端口和PM。该处理器被配置为基于一组预定义指令代码与主机CPU进行通信。I/O端口用于在处理器和外部设备之间传输信息。PM通过由PM根据接口编程微码选择的一个或更多个可配置的通信标准,促进I/O端口和一个或更多个外部设备之间的通信接口。
或者,一个实施例公开了提供用于识别至少一个嵌入式功能的CMU的过程。例如,通过通信网络搜索到使CMU执行嵌入式功能的位图或软件后,一旦找到位图,就通过通信网络下载位图。一旦CMU响应位图进行编程,CMU执行的嵌入式功能就会按照下载的位图进行验证。
图1是根据本发明的一个实施例示出的能基于可编程微码提供通信接口的CMU102的框图100。一方面,CMU 102包括可编程处理器110、可编程存储器、可编程I/O组件116以及编程代码存储装置106。一方面,可编程代码存储装置106存储处理器配置代码120、存储器配置代码122以及I/O配置代码126。应当注意,向/从框图100添加或移除一个或更多个块(电路或元件),本发明示例性实施例的基本概念也不会改变。
一方面,处理器110可根据应用进行配置。例如,处理器110可通过存储在可编程代码存储装置106中的可编程微码进行编程,以能执行基于ARM的指令代码。例如,可编程处理器可被编程或配置为能够按照ARM、MIPS、X86或PowerPC微码执行指令。在另一个实施例中,处理器110是能够管理可编程I/O组件116和/或可编程存储器112的常规处理器或固定处理器(不可编程)。可编程处理器的好处是可以为终端用户提供额外的灵活性。
根据应用,存储器112可以是可配置的或静态的存储器设备。在一个实施例中,存储器112是能够根据存储在可编程代码存储装置106中的存储器配置代码122进行编程的可编程存储器。或者,存储器112可被编程为多个不同的存储容量以处理不同的I/O端口。或者,根据应用和用户的偏好,存储器112可被编程为使用板载闪存、静态随机存取存储器(Static Random-Access Memory,SRAM)和/或RAM。在另一个实施例中,存储器112可以是静态或常规的存储器设备,其可以是传统的闪存、SRAM、RAM,或闪存、SRAM和RAM的存储设备组合。
在一个实施例中,I/O组件116包括一组I/O端口和接口微控制器。一方面,接口微控制器是基于可编程代码存储装置106中的I/O配置代码126的PM。PM的功能是通过一组I/O端口促进外部设备和处理器110之间的数据通信或外设接口。例如,外设接口包括但不限于,集成电路总线(Inter-Integrated Circuit,I2C)、串行外设接口(Serial PeripheralInterface,SPI)、通用异步收发器(Universal Asynchronous Receiver/Transmitter,UART)等。采用PM的好处是使CMU能灵活地处理多种接口标准。
在一个示例中,I2C包含多主、多从、单端和串行计算机总线。I2C的典型应用是,其可用于附加低速的外围设备,以进行短距离和板内(intra-board)通信。SPI总线是一种同步串行通信接口规范,用于诸如在嵌入式系统中的短距离通信。在一个示例中,SPI设备以全双工模式,采用主从架构与单个主设备进行通信。主设备发起进行读取和写入的帧(frame)。需要注意的是,SPI总线也可称为四线串行总线,而不是三线、两线或一线串行总线。UART是一种用于异步串行通信的计算机硬件设备,其中的数据格式和传输速度可以配置。在一个示例中,一些电信号电平和方法由UART外部的驱动电路处理。
在一个实施例中,可编程代码存储装置106用于存储编程微码以编程可编程器件,如可编程处理器110、可编程存储器112和/或可编程I/O组件116。一方面,存储装置106将其存储空间划分为三个部分,用于存储处理器配置代码120、存储器配置代码122和I/O配置代码126。或者,存储装置106包含用于存储处理器配置代码120的处理器配置存储器、用于存储存储器配置代码122的存储器配置存储器和/或用于存储I/O配置代码1126的I/O配置存储器。
应当注意,配置代码,如代码120-126,可以从用户、云端和/或提供商处获得。
在一个实施例中,CMU 102的功能是使用处理器110、I/O端口118和PM提供可编程的I/O接口。该处理器被配置为基于一组预定义指令代码与主机CPU进行通信(图1未示出)。一方面,处理器110是一种可编程处理器,能包括硬核(hard macro)或宏代码,可根据处理器可编程代码选择性地执行基于高级精简指令集(Reduced Instruction Set Computing,RISC)计算机(Advanced RISC Machine,ARM)、单字长定点指令平均执行速度(MillionInstructions Per Second,MIPS)、Argonaut RISC核心(Argonaut RISC Core,ARC)、X86或Power的指令集。
I/O端口118用于在处理器和外部设备或外围设备之间传输信息。例如,一个或更多个I/O端口被配置为通过一个或更多个总线耦接到多个外部设备。不同的总线在不同的总线或接口标准下运行。例如,这些标准包括但不限于模拟比较器协议、模数转换器协议、液晶显示器(LCD)接口协议、通用同步/异步收发器(USART)协议、SPI协议和/或两线串行接口(Two-wire Serial Interface,TWI)协议。
耦接处理器的PM通过由PM根据接口编程微码,如I/O配置代码126选择的几个可配置的通信标准中的至少一个,来促进I/O端口118和一个或更多个外部设备之间的通信接口。在一个实施例中,PM包括多个可编程接口,其被配置为根据接口编程微码促进I/O端口118和一个或更多个外部设备之间的通信。在一个示例中,可编程接口被配置为利用I2C,基于一组预定义编程微码,促进I/O端口118与外部设备之间的通信。可编程接口还可配置为采用SPI总线协议,以促进I/O端口118与外部设备之间的通信。在另一个示例中,可编程接口被配置为利用UART接口协议,以促进I/O端口118和外部设备之间的通信。或者,可编程接口可被配置为利用整型(Integer,Int)接口协议,基于预定义编程微码,促进I/O端口118与外部设备之间的通信。此外,可编程接口被配置为利用TWI协议,基于编程微码,促进I/O端口118与一个或更多个外部设备之间的通信。此外,可编程接口还被配置为利用定时器接口协议,基于一组预定义编程微码,促进I/O端口与外部设备之间的通信。
一方面,CMU 102包括耦接处理器的存储器,并且其被配置为存储可从云系统下载的预定义编程微码。在一个示例中,存储器包括闪存,用于通过通信网络从远程位置存储下载的位图。存储器可以包括用于存储数据的SRAM。例如,SRAM是一种能根据存储器可编程代码设置可编程带宽的可配置存储设备。一方面,一些存储器是可配置的,能根据存储器可编程代码配置为单端口和双端口中的一个。
与传统的MCU相比,采用CMU的优点是提供可编程性,因此CMU能根据微码实现多种不同的外设接口协议。
图2是根据本发明的一个实施例示出的CMU中使用的可编程处理器202的框图200。在一个实施例中,处理器202包括可编程处理器222、选择逻辑220、ARM内核210、MIPS内核212、X86内核、PowerPC内核216以及FPGA内核218。应当注意,内核指的是能根据选择的内核210-218中的一个,将可编程处理器222编程成ARM、MIPS、X86、PowerPC或其它FPGA逻辑之一的软件或固件微码。应当注意,向/从框图200添加或移除一个或更多个块(电路或元件),本发明示例性实施例的基本概念也不会改变。
图3是根据本发明的一个实施例示出的具有可编程端口的存储器设备308的框图300。在一个实施例中,存储器设备308可以是可编程存储器或静态非可编程存储器,如常规闪存或SRAM。一方面,存储器设备308包括一组端口302-304、具有n位和m行的存储器阵列310以及可配置逻辑306。在一个实施例中,可配置逻辑306管理或控制单端口和双端口的存储容量大小。应当注意,向/从框图300添加或移除一个或更多个块(电路或元件),本发明示例性实施例的基本概念也不会改变。
应当注意,存储器308可以是使用硬核的SRAM,在某些情况下,它是可以配置的。例如,存储器308可被配置为单端口或双端口。或者,数据宽度可被编程为8、16和/或32位宽。此外,阵列的深度也可配置为1K、2K、16K、32K等。存储器308也可以是使用硬核的闪存,该闪存具有与SRAM一样的访问行为。在一个示例中,闪存和/或SRAM可被CPU以一种存储器寻址方案访问,这使得它就像普通MCU的SRAM和/或闪存方案一样。
图4是根据本发明的一个实施例示出的包含PM的CMU的框图400。框图400包括处理器或CPU 110、存储器112、I/O端口118、编程代码存储装置106和PM 402。可编程代码存储装置106也称为配置组件,存储用于编程PM、处理器110和/或存储器112的处理器配置代码。应当注意,向/从框图400添加或移除一个或更多个块(电路或元件),本发明示例性实施例的基本概念也不会改变。
在一个实施例中,PM 402被配置为使用软件定义的矩阵和逻辑(Software-defined Matrix And Logic,SDML)在外部设备或外围设备和主机之间提供外围数据通信。一方面,SDML是一种能够基于微码执行某些任务的可编程逻辑。示例性的SDML类似于FPGA或可编程逻辑器件(Programmable Logic Device,PLD),其中逻辑或IC在使用前需要进行编程。例如,PM 402可被编程为使用I2C标准编程以促进通信。另外,PM 402被编程为允许一些I/O端口使用SPI总线标准,而另一些I/O端口使用UART接口协议。一方面,PM 402可被编程以方便使用I2C、SPI、UART、Int、TWI和/或定时器接口进行通信。
使用PM 402的优点是,PM 402很灵活,它可被编程以处理MCU的各种接口。使用PM402的另一优点是,它允许用户在系统中安装CMU后更新、删除和/或添加接口协议。
图5是根据本发明的一个实施例示出的包含PM的CMU的框图500。框图500类似于图4所示的框图400,包括处理器或CPU 110、存储器112、I/O端口118、编程代码存储装置106和PM 502。可编程代码存储装置106也称为配置组件,存储用于编程PM、处理器110和/或存储器112的处理器配置代码。应当注意,向/从框图500添加或移除一个或更多个块(电路或元件),本发明示例性实施例的基本概念也不会改变。
在一个实施例中,PM 502是一个可配置器件,能使用I2C、SPI、UART和Int中的一种,在外部设备或外围设备和主机之间提供外围数据通信。PM 502是由一些固定的内核,如I2C 506,加上一些软件定义的逻辑或内核组成的。一方面,PM 502能选择用于数据通信的接口块。在一个示例中,微码可由用户或提供商通过远程位置提供。例如,PM 502可对I2C506进行编程,以处理I/O端口508和处理器110之间的通信。
使用PM 502的优点是它在提供灵活性的同时,降低了可编程逻辑的复杂性。
图6是根据本发明的一个实施例示出的包含PM的CMU的框图600。框图600类似于图5所示的框图500,包括处理器或CPU 110、存储器112、I/O端口118、编程代码存储装置106和PM 602。可编程代码存储装置106也称为配置组件,存储用于编程PM、处理器110和/或存储器112的处理器配置代码。应当注意,向/从框图600添加或移除一个或更多个块(电路或元件),本发明示例性实施例的基本概念也不会改变。
PM 602类似于图5所示的PM 502,是一种可配置器件,能使用定时器、TWI、I2C、液晶显示器和/或其他逻辑中的一种,在外部设备或外围设备与主机之间提供外围数据通信。PM 602是由一些固定的内核,如定时器610,加上一些软件定义的逻辑或内核组成的。一方面,PM 602能选择用于数据通信的接口块。在一个示例中,微码可由用户或提供商通过远程位置提供。例如,PM 602可对块610进行编程,以处理I/O端口606-608和处理器110之间的通信。
使用PM 602的优点在于,能使用硬核和可编程逻辑来提供灵活性。
一方面,CMU实质上提供了一个MCU硬件平台,该平台具有一个主流CPU,如ARM、MIPS、X86等,其中组件由一个可下载的配置文件定义。当用户选择了某些配置,如不同大小的SRAM、闪存、不同的外设或不同的端口数时,可从云端下载具体的配置文件。好处是可以让用户基于灵活的硬件设计进行产品决策。另一个好处是,CMU即使在出厂后也可以升级。此外,通过提供一个共同的平台,会减少硬件制造和/或资源。
对于软件定义的MCU组件,CMU可包括可编程的CPU和可编程的I/O组件。CPU或处理器可以是硬核,如ARM、MIPS、ARC、X86和Power PC等。选择硬核的一个原因是,MCU架构是收敛的。硬核是一种高性价比的方法,在性能和功率平衡上提供了最高的效率。I/O组件也可以是硬核,来提供CMU的输入和输出。在一个示例中,I/O标准可配置为支持不同的I/O标准,如LVCMOS3.3、SSTL2.5、SST1.8等。
图7是根据本发明的一个实施例示出的CMU中使用的存储器结构的框图。框图700示出了能通过端口730从CMU外部接收编程代码或配置代码的可配置MCU或CMU。在收到配置代码或微码后,该代码被存储在存储器单元组732中。应当注意,向/从框图700添加或移除一个或更多个块(电路或元件),本发明示例性实施例的基本概念也不会改变。
框图700还包括配置引擎736,该配置引擎用于根据接收到的代码对可编程器件进行编程。一方面,配置引擎736耦接存储器单元组732。与外部编程器、个人计算机或自动化测试设备(Automatic Test Equipment,ATE)的接口端口730连接到具有一种或多种总线协议的数据总线上,如联合测试行动组(Jtag)、I2C、SPI和/或连接到CPU的数据总线。应当注意,配置引擎736从接口接收数据并将数据传输到存储器单元。
示意图702示出了以系列方式组织的一维存储器单元,其中系列内的数据基于时钟周期从一个单元移到下一个单元。在一个示例中,存储器单元可以是6T SRAM单元或非易失性存储器单元。示意图706示出了作为普通SRAM阵列的二维存储器单元。在一个示例中,每个存储单元可以发出一个控制信号,其值为“0”或“1”。数据从一个转移到下一个。
应当注意,SDML指的是可以由连接和逻辑组成的矩阵。存储单元的输出决定了形成的连接和逻辑。逻辑可在硬核中预定义,随后,存储器单元选择用户期望的逻辑。更高级的方法可使用可编程逻辑,如通用阵列逻辑(GAL)、复杂可编程逻辑器件的宏(CPLD’sMacro)或FPGA的查找表和寄存器。
图8是根据本发明的一个实施例示出的用于编程PM的可配置开关的框图800。框图800包括三个单元802-808,三个开关812-818,三条输入线A、B、C以及一条输出线810。开关812控制输入线A上的数据是否要经过输出线810,开关816控制输入线B上的数据是否要经过输出线810。另外,开关818控制输入线C上的数据是否应进入输出线810。为确定输入线上的哪些数据应进入输出线810,802-808单元中的值决定了应接通哪个开关。例如,如果单元2 806具有“接通”逻辑值,则开关816应接通,输入线B上的数据应通过输出线810。一方面,诸如单元802-808和开关812-818的单元被用于在PM中形成连接和逻辑。
例如,如果单元输出为1,开关接通。否则,开关断开。假设A是I2C输出,B是定时器输出,C是SPI输出。通过将单元值设为“0”或“1”,用户可以选择将使用哪个硬核并输出到O。
图9是根据本发明的一个实施例示出的云编程CMU的过程框图。框图900包括笔记本电脑902、CMU 906、云端908以及服务器910。在一个实施例中,服务器910存储配置文件,其中服务器910可以是供应商服务器。由用户控制的笔记本电脑902能通过云端908从服务器910下载配置文件。随后,该配置文件被用于对连接到笔记本电脑902的MCU 906进行编程。一方面,笔记本电脑902能通过在线提供商搜索配置文件,以根据用户期望配置CMU906。
笔记本电脑920包括ATE 922、云端908以及服务器910,其中ATE容纳多个CMU。ATE922用于促进批量生产,它可同时对多个CMU进行编程。从供应商服务器910下载配置文件或配置微码后,ATE能同时根据下载的配置文件对CMU进行编程。
图10是根据本发明的一个实施例示出的云编程CMU的过程框图。框图1000包括笔记本电脑902、云端908和CMU 906,其中笔记本电脑902通过云端908耦接CMU 906。一方面,笔记本电脑902能通过云端908,经由远程配置操作过程来配置CMU 906。应当注意,向/从框图1000添加或移除一个或更多个块(电路或元件),本发明示例性实施例的基本概念也不会改变。
本发明的示例性实施例包括各种处理步骤,这些步骤将在下文中描述。该实施例的步骤可体现于机器或计算机可执行的指令中。所述指令可用于使得编程有该指令的通用或专用系统执行本发明示例性实施例的步骤。或者,本发明示例性实施例的步骤可由包含执行步骤的硬线逻辑的特定硬件元件执行,或者由经编程的计算机元件和定制的硬件元件的任意组合执行。
图11是根据本发明的一个实施例示出的使用下载的位图对CMU进行编程过程的流程图1100。在方框1102处,能提供CMU的过程或方法识别可配置MCU的第一嵌入式功能,便于基于第一接口协议的主机与外部设备之间的网络接口。例如,确定I2C接口的功能,用于与至少一个外部设备进行通信。或者,确定UART接口功能,用于与至少一个外部设备进行通信。
在方框1104处,用通信网络搜索用于编程可配置MCU的第一位图,执行第一嵌入式功能后,在方框1106处,第一位图一旦定位,就通过通信网络从云系统下载。应当注意,可配置MCU与CMU相同或相似。
在方框1108处,响应第一位图对可配置MCU进行编程后,在方框1110处对CMU编程后的第一嵌入功能进行验证。在一个实施例中,第一位图被存储在本地存储器中。如果第一位图未能验证由CMU执行的第一嵌入式功能,则该过程能搜索与第一嵌入式功能相关的新位图,以对CMU进行编程。一方面,识别CMU的第二嵌入式功能以促进基于第二接口协议的主机与外部设备之间的网络接口后,通过通信网络从云系统下载第二位图。该过程响应第二位图对可配置MCU进行编程或配置。
应该注意,I2C是一种多主、多从、单端、串行计算机总线。它通常用于将速度较低的外围集成电路连接到处理器和微控制器上,进行短距离的板内通信。
或者,SPI总线是一种用于短距离通信的同步串行通信接口规范,主要用于嵌入式系统。SPI总线可用于数据卡和/或液晶显示器。SPI设备可使用主从架构与主站进行双模通信。例如,主设备提供进行读写的帧,而通过选择单独的片选信号(Slave Select,SS)线来支持多个从设备。
图12是根据本发明的一个实施例示出的能通过可配置MCU提供嵌入式功能的计算机网络图。在这种网络环境中,系统1201耦接广域网1202、LAN 1206、网络1204、服务器1205,广域网1202包括互联网或其他专用网络,包括America On-LineTM、SBCTM、MicrosoftNetworkTM以及ProdigyTM。广域网1202还可包括网络骨干、长程线路、互联网服务提供商、各种级别的网络路由器以及计算机之间路由数据的其它手段。
一方面,服务器1204耦接广域网1202,通过局域网(Local Area Network,LAN)1206将数据路由到客户端1210-1212。服务器1204耦接存储装置1222,以提高整体存储器效率。
LAN连接允许客户端系统1210-1212通过LAN 1206互相通信。USB便携式系统1230使用传统网络协议时,可通过广域网1202与客户端计算机系统1210-1212、供应商系统1220和存储装置1222通信。例如,客户端系统1210可直接连接到广域网1202,或通过拨打电话或其他网络传输线路直接连接到广域网1202。或者,客户端1210-1212使用调制解调器池连接广域网1202。
在简要描述了本发明实施例操作的计算机网络的实施例后,图12示出了计算机系统的示例,该系统使用一个或更多个可配置MCU和/或可编程MCU。
图13是根据本发明的一个实施例示出的能使用CMU的数字处理系统框图。计算机系统500可包括处理单元1301、接口总线1312和I/O单元1320。处理单元1301包括处理器1302、主存储器1304、系统总线1311、静态存储设备1306、总线控制单元1305、I/O元件1330和非易失性存储器1385。应当注意,向/从图12添加或移除一个或更多个块(电路或元件),本发明示例性实施例的基本概念也不会改变。
总线1311用于在各种组件和处理器1302之间传输信息以进行数据处理。处理器1302可以是多种通用处理器、嵌入式处理器或微处理器中的任何一种,例如嵌入式处理器、CoreTM Duo、CoreTM Quad、PentiumTM微处理器、MotorolaTM68040、系列处理器或Power PCTM微处理器。
主存储器1304,可以包括多级缓存存储器,存储经常使用的数据和指令。主存储器1304可以是随机存取存储器(Random Access Memory,RAM)、磁性随机存取存储器(Magnetic Random Access Memory,MRAM)或闪存。静态存储器1306可以是ROM,该静态存储器与总线1311耦接,用于存储静态信息和/或指令。总线控制单元1305耦合到总线1311-1312,并且控制能够使用总线,诸如主存储器1304或处理器1302的组件。总线控制单元1305管理总线1311和总线1312之间的通信。大容量存储内存或固态硬盘106,诸如磁盘、光盘、硬盘驱动器、软盘、只读光盘存储器和/或闪存,用于存储大量数据。
在一个实施例中,I/O单元1320包括显示器1321、键盘1322、光标控制设备1323和通信设备1325。显示设备1321可以是液晶设备、阴极射线管(Cathode Ray Tube,CRT)、触摸屏显示器或其它合适的显示设备。显示器1321投影或显示图形规划板的图像。键盘1322可以是常规的字母数字输入设备,用于在计算机系统500和计算机操作员之间交流信息。另一种类型的用户输入设备是光标控制设备1323,例如传统的鼠标、触控鼠标、轨迹球或其他类型的光标,用于在系统1300和用户之间交流信息。
通信设备1325与总线1311耦合,用于通过广域网1202从远程计算机或服务器,如服务器1004或其他计算机,获取信息。通信设备1325可以包括调制解调器或网络接口设备,或其他类似的设备,以方便计算机1300和网络之间的通信。计算机系统1300可通过网络基础设施,如图12中示出的基础设施,耦接一些服务器1204。
在另一个实施例中,公开了一种能够将FPGA配置为CMU的TCP。第一阶段配置过程中,FPGA被编程为包括一个或更多个CMU;第二阶段配置过程中,CMU被配置为包括一个或更多个用户定义的MCU功能。一方面,TCP能通过通信总线从第一外部存储位置接收第一配置数据。将第一配置数据存储在第一配置存储器中,用于为第一阶段配置将FPGA配置为包含CMU之后,通过通信总线从第二外部存储位置获取具有MCU属性的第二配置数据。随后,将第二配置数据存储在第二配置存储器中,用于为第二阶段配置编程CMU。
图14是根据本发明的一个实施例示出的通过TCP,能包括CMU的PSD或FPGA的框图1400。为简化上述讨论,术语“PSD”、“可编程集成电路(PIC)”、“FPGA”、“PLD”均指相同或相似的器件,在下文中可互换使用。框图1400包括多个可编程分区区域(PPR)1402-1408、可编程互连阵列(PIA)1450和区域I/O端口1466。可编程分区区域1402-1408还包括控制单元1410、存储器1412以及逻辑块(LB)1416。需要注意的是,控制单元1410可配置成单个控制单元,同样,存储器1412也可配置成单个存储器以存储配置。应当注意,向/从框图1400添加或移除一个或更多个块(电路或元件),本发明示例性实施例的基本概念也不会改变。
逻辑块1416也称为可配置功能单元(Configurable Function Unit,CFU),包括多个逻辑阵列块(Logic Array Block,LAB)1418,其也称为可配置逻辑单元(ConfigurableLogic Unit,CLU)。例如,每个LAB 1416可进一步配置为包括一组可编程逻辑元件(LogicalElement,LE)、可配置逻辑切片(Configurable Logic Slice,CLS)或宏单元(图14未示出)以及其他电路。在一个示例中,每个LAB可以包括32-512中的任意个可编程LE。I/O引脚(图14未示出)、LAB和LE通过可编程互连阵列1450和/或其它总线(如总线1462或1414)连接,以促进可编程互连阵列1450和可编程分区区域1402-1408之间的通信。
每个LE包括可编程电路,如乘积项矩阵、查找表和/或寄存器等。LE也称为单元、可配置逻辑块(Configurable Logic Block,CLB)、切片、CFU、宏单元等。每个LE可独立配置以执行顺序和/或组合逻辑操作。应当注意,向/从PSD添加或移除一个或更多个块和/或电路,PSD的基本概念也不会改变。
控制单元1410也称为配置逻辑,可以是一个单个控制单元。例如,控制单元1410基于存储在存储器1412中的配置信息来管理和/或配置LAB 1418中的单个LE。应当注意,一些I/O端口或I/O引脚是可配置的,以使其可被配置为输入引脚和/或输出引脚。一些I/O引脚被编程为双向I/O引脚,而其它I/O引脚被编程为单向I/O引脚。诸如单元1410的控制单元被用于根据系统时钟信号处理/或管理PSD操作。
逻辑块1416包括可由终端用户编程的多个LAB。每个LAB包含多个LE,其中每个LE还包括一个或更多个查找表(Lookup Table,LUT)以及一个或更多个寄存器(或D触发器或锁存器)。根据应用,LE可被配置为基于由配置软件实现的预定义功能库执行用户特定功能。在某些应用中,PSD还包括用于执行特定功能的一组固定电路。例如,固定电路包括但不限于处理器、数字信号处理(Digital Signal Processing,DSP)单元、无线收发器等。
可编程互连阵列1450通过诸如总线1414或总线1462之类的各种内部总线耦合到逻辑块1416。在一些实施例中,总线1414或总线1462是可编程互连阵列1450的一部分。每条总线包括用于传输信号的通道或导线。应当注意,术语“通道”、“布线通道”、“导线”、“总线”、“连接”和“互连”均指相同或相似的连接,在此处可互换使用。可编程互连阵列1450还可用于通过I/O引脚和LAB直接或间接地从/向其它设备接收/或传输数据。
存储器1412可包括位于可编程分区区域上的多个存储单元。或者,存储器1412可在PSD中组合成一个单一存储器单元。在一个实施例中,存储器1412是同时用于配置和用户存储器的非易失性存储器存储单元。非易失性存储器存储单元可以是但不限于MRAM、闪存、铁电RAM和/或相变存储器(或硫系化合物RAM)。根据应用,一些存储器1412可被指定、分配或配置为块RAM(Block RAM,BRAM),用于在PSD中存储大量数据。
PSD包括由可编程互连阵列1450互连的大量可编程逻辑块1416,其中每个可编程逻辑块被进一步划分为多个LAB 1418。每个LAB 1418还包括大量LUT、多路复用器和/或寄存器。在配置过程中,用户为每个LUT编程一个真值表,以实现所需逻辑功能。应当注意,每个LAB可被进一步组织成包括多个LE,可视为可配置逻辑单元(Configurable Logic Cell,CLC)或CLS。例如,四输入(16位)LUT从布线结构接收LUT输入(图14未示出)。基于在配置PSD期间编程进LUT的真值表,根据LUT输入的逻辑值,通过LUT的已编程真值表生成组合输出。随后,组合输出在时钟周期结束之前被锁存或缓冲到寄存器或触发器中。
在一个实施例中,控制单元1410包括具有备份缺省配置功能的多重启动(MBC)模块1420。应当注意,具有备份缺省配置功能的多重启动模块1420可放置于可编程集成电路或PSD内的任何位置,以促进具有备份缺省配置功能的多重启动进程。具有备份缺省配置功能的多重启动模块1420的功能是使用用户定义的配置数据或默认配置数据(DefaultConfiguration Data,DCD)来控制配置过程或重启过程。使用具有备份缺省配置功能的多重启动进程的好处是从损坏的或错误的配置数据中复原或恢复可编程集成电路或PSD。
根据应用,可通过存储在第一配置存储器中的第一阶段配置数据对FPGA进行编程,以包含一个或更多个CMU。使用TCP的优点是,一旦FPGA被硬件工程师配置为模拟CMU,软件工程师就可以对CMU进行编程,例如执行用户定义的MCU功能。
图15是根据本发明的一个实施例示出的TCP的逻辑过程的框图1500。框图1500包括用户1502、第一阶段配置1506和第二阶段配置1508。一方面,包括工程师或客户的用户1502通过总线或通信通道1504耦接第一阶段配置1506和第二阶段配置1508。应当注意,向/从框图1500添加或移除一个或更多个块(电路或元件),本发明示例性实施例的基本概念也不会改变。
第一阶段配置1506包括PLD 1510,该PLD被配置或编程为包含至少一个能够处理和执行MCU功能的CMU。在一个实施例中,PLD 1510包括嵌入式处理器1530、多个CLB、I/O块1536、通信块1532和存储器块1520。一方面,存储块1520,被组织成两个部分,其中第一部分M1被指定为第一配置存储器1522,第二部分M2被指定为第二配置存储器1526。在一个示例中,I/O块1536包括用于与外部设备通信的多个I/O引脚。通信块1532可以是I/O块1536的一部分,用于使用一个或更多个现有的通信网络,如无线网络、蓝牙网络或其他类型的通信网络与远程设备或系统进行通信。
嵌入式处理器1530被用于执行基于指令集的逻辑功能。嵌入式处理器1530可以是软件处理器、硬件处理器或两者的组合。例如,嵌入式处理器1530可以是硬核,根据处理器可编程代码选择性地执行基于ARM、MIPS、ARC、X86、Ryzen处理器或Power PC的指令集。
CLB 1416可进一步划分为LUT,该LUT可被编程以执行用户定义的逻辑功能。例如,CLB 1416被配置为具有多个可编程接口的CMU设备,用于通过至少一个可配置的通信标准,来促进I/O端口与一个或更多个外部设备之间的通信。应当注意,CMU的用户定义特性是由存储在第二配置存储器1526中的一组预定义编程微码定义的。
在一个实施例中,存储器块1520是嵌入式闪存,其中嵌入式闪存的一部分M1为容纳PLD配置数据的第一配置存储器1522,嵌入式闪存的第二部分M2为容纳CMU配置数据的第二配置存储器1526。在一个实施例中,闪存被配置为由地址引用的随机访问存储器。例如,第一配置存储器1522存储PLD的配置数据,用于配置PLD 1510,以作为CMU实现功能或仿真。第二可配置存储器1526存储CMU的配置数据,用于对CMU进行编程。或者,存储器块1520可以是SRAM,其中SRAM的一部分被配置为用于促进PLD配置过程的第一配置存储器1522;SRAM的第二部分被配置为用于促进CMU配置过程的第二配置存储器1526。在另一个实施例中,存储器块1520包括用于处理第一和第二配置存储器1522-1526的易失性存储器和非易失性存储器的组合。
第一阶段配置1506包括使用硬件描述语言(Hardware Description Language,HDL)的FPGA配置过程,该过程使用如Verilog或VHDL的HDL来配置FPGA,以包括至少一个CMU。例如,第一阶段配置过程后,FPGA 1510表现为CMU。在操作中,用户1502通过作为总线1504的一部分的通信通道1516,将用HDL编码的配置数据发送到第一配置存储器1522。应当注意,在不同的阶段,通信通道1516-1518均为同一总线1504。应当注意,在第一阶段配置过程中,通信通道1516为总线1504;在第二阶段配置过程中,通信通道1518为总线1504。
通过一组预定义的验证过程验证包含CMU的FPGA后,该过程进入第二阶段配置1508(如标号1528所示)。在一个实施例中,第二阶段配置1508表示FPGA或PLD 1512已被配置成CMU。例如,第二阶段配置1508便于使用汇编语言的编程环境,例如但不限于C语言、Python和JavaScript,用于配置嵌入式MCU和/或嵌入式系统。
当用户1502通过通信通道1518提供汇编语言作为配置CMU的第二配置数据时,CMU如PLD 1512被编程为使用I2C作为接口,以便于I/O端口与一个或更多个外部设备之间按照一组预定义的编程微码进行通信。或者,根据接口编程微码,CMU被编程为使用SPI总线协议,以方便I/O端口与一个或更多个外部设备之间的通信。在另一个实施例中,CMU被编程为使用改进的集成电路总线(Improved Inter-Integrated Circuit,I3C)协议,以根据接口编程微码促进I/O端口与一个或更多个外部设备之间的通信。此外,CMU还可被编程为使用UART、Int、TWI或定时器接口,以方便多个I/O端口与一个或更多个外部设备之间根据接口编程微码进行通信
图16是根据本发明的一个实施例示出的框图1600的流程图,该TCP用于实现CMU的配置过程。在方框1602处,该过程从第一配置存储器中读取用于配置FPGA的第一配置数据或FPGA配置数据。在方框1604处,FPGA被配置为根据第一配置数据表现为或模拟为一个或更多个可配置MCU。在方框1604处,该过程激活验证过程,以验证或确认FPGA的功能。例如,验证过程确定FPGA表现为CMU。
在方框1608处,该过程检查验证过程是否验证了FPGA的功能,FPGA模拟CMU,如果验证过程失败,则该过程继续进行方框1602所示的过程。否则,在完成第一阶段或FPGA配置后,该过程继续进行方框1610所示的过程。接收并存储用户提供的MCU配置数据后,从第二配置存储器中读取第二配置数据。在方框1612处,CMU根据第二配置数据被配置为执行一个或更多个用户定义的MCU逻辑功能。在方框1614处,该过程验证了CMU的功能。在方框1616处,该过程检查第二阶段配置是否成功。如果第二阶段配置失败,则该过程进入方框1610继续配置CMU。否则,如果第二阶段或CMU配置成功,在验证CMU执行了用户定义的功能后,该过程继续进入结束方框。例如,该过程还能识别CMU的第一嵌入式功能,如用于促进主机和外部设备之间通信的接口协议。例如,嵌入式功能包括但不限于用于与至少一个外部设备通信的I2C接口功能或I3C接口功能。
使用TCP的优点是,它允许第一个用户使用硬件语言对FPGA进行编程以模拟CMU;第二个用户使用汇编语言对CMU进行编程以执行用户定义的MCU功能。
图17是根据本发明的一个实施例示出的使用TCP对CMU进行编程的流程图1700。在方框1702处,能配置FPGA和CMU的TCP通过通信总线从第一外部存储位置接收第一配置数据。在一个示例中,第一配置数据是编码在HDL中的FPGA配置信息,用于对FPGA进行编程以模拟CMU。
在方框1706处,第一配置数据被存储在第一配置存储器中,用于配置FPGA以包含至少一个CMU。一方面,FPGA包括本地闪存,其中闪存的一部分被分配给第一配置存储器以存储FPGA配置数据,而闪存的另一部分被分配给第二配置存储器以存储CMU配置数据。例如,本地闪存可存储由第一用户提供的用于配置FPGA或CMU配置数据的第一位图或第一位流。
在方框1708处,通过通信总线从第二外部存储位置获取或接收包括MCU属性或功能的第二配置数据。在一个示例中,第二配置数据也可被称为MCU配置数据。例如,MCU配置数据包含与传输带宽和速度、双向或单向传输、通信协议等有关的信息。
在方框1710处,第二配置数据被存储在第二配置存储器中,用于对CMU进行编程。一方面,第一阶段配置包括通过存储在第一配置存储器中的FPGA配置数据,将FPGA编程为MCU或CMU。在将FPGA配置成CMU后,CMU可由用户进一步配置。例如,该过程能通过存储在第二配置存储器中的MCU配置数据配置CMU,以执行至少一个用户定义的MCU功能。一方面,识别可配置MCU的功能,利用基于第一接口协议的主机与外部设备之间的网络接口后,该过程能搜索或在线搜索第一位图或位流,以便对CMU进行编程,以执行第一嵌入式功能。在一个实施例中,从云系统下载第一位图至第二配置存储器后,针对第一位图进行编程。
应当注意,嵌入式功能包括I2C和/或UART接口功能,用于与至少一个外部设备进行通信。如果第一位图未能验证由CMU执行的第一嵌入式功能,则该过程能搜索与第一嵌入式功能相关的新位图,以对CMU进行编程。确定CMU的第二功能,利用基于第二接口协议的网络接口后,通过通信网络将第二位图从云系统下载到第二配置存储器中。一方面,该过程继续配置CMU,直到CMU能执行用户定义的MCU功能。
虽然已经展示和描述了本发明的特定实施例,但显而易见,基于本文的教导,本领域的普通技术人员可以在不偏离本发明的示例性实施例及其更广泛的方面的情况下进行改变和修改。因此,所附权利要求旨在将所有符合本发明本示例性实施例的真正精神和范围的变化和修改包含在权利要求的范围内。
Claims (26)
1.一种通过两阶段配置过程配置现场可编程门阵列以包含可配置微控制器的方法,所述方法包括:
通过通信总线从第一外部存储位置接收第一配置数据;
将所述第一配置数据存储在第一配置存储器中,用于配置包含可配置微控制器的现场可编程门阵列;
通过所述通信总线从第二外部存储位置获取带有微控制器属性的第二配置数据;以及
将所述第二配置数据存储在第二配置存储器中,用于对可配置微控制器进行编程。
2.根据权利要求1所述的方法,还包括:通过存储在所述第一配置存储器中的现场可编程门阵列配置数据对所述现场可编程门阵列进行编程,使其表现为微控制器,该微控制器能由用户进一步配置。
3.根据权利要求2所述的方法,还包括:通过存储在所述第二配置存储器中的微控制器配置数据,配置所述可配置微控制器,从而在所述现场可编程门阵列被编程时,执行至少一个用户定义的微控制器功能。
4.根据权利要求1所述的方法,还包括:识别可配置微控制器的第一嵌入式功能,以促进基于第一接口协议的主机与外部设备之间的网络接口。
5.根据权利要求4所述的方法,还包括:通过通信网络搜索第一位图,用于对所述可配置微控制器进行编程以执行所述第一嵌入式功能。
6.根据权利要求4所述的方法,还包括:
通过通信网络,利用所述通信总线将所述第一位图从云系统下载到所述第二配置存储器;以及
响应于所述第一位图,对所述可配置微控制器进行编程。
7.根据权利要求6所述的方法,还包括将所述第一位图存储在本地闪存中。
8.根据权利要求4所述的方法,其中,识别第一嵌入式功能包括确定用于与至少一个外部设备通信的集成电路总线接口功能。
9.根据权利要求4所述的方法,其中,识别第一嵌入式功能包括确定用于与至少一个外部设备通信的通用异步收发器接口功能。
10.根据权利要求5所述的方法,还包括:如果第一位图未能验证由所述可配置微控制器执行的所述第一嵌入式功能,则搜索与所述第一嵌入式功能相关联的新位图,从而对所述可配置微控制器进行编程。
11.根据权利要求6所述的方法,还包括:
识别所述可配置微控制器的第二嵌入式功能,以促进基于第二接口协议的主机与外部设备之间的网络接口;
通过通信网络,利用所述通信总线将所述第二位图从云系统下载到所述第二配置存储器中;以及
响应于所述第二位图,对所述可配置微控制器进行编程。
12.一种可编程逻辑器件,其可配置为包含用于处理信息的可配置微控制器,所述可编程逻辑器件包括:
嵌入式处理器,其能基于指令集执行逻辑功能;
多个可配置逻辑块,其耦接到所述嵌入式处理器并通过查找表进行组织,所述查找表能被编程以执行用户定义的逻辑功能;
第一配置存储器,其耦接到所述多个可配置逻辑块并配置为存储可编程逻辑器件配置数据,用于配置所述可编程逻辑器件,以包含所述可配置微控制器;以及
第二配置存储器,其耦接到所述多个可配置逻辑块并被配置为存储可配置微控制器配置数据,用于对所述可配置微控制器进行编程。
13.根据权利要求12所述的可编程逻辑器件,还包括嵌入式闪存,其中所述嵌入式闪存的一部分容纳了用于可编程逻辑器件配置的所述第一配置存储器;所述嵌入式闪存的第二部分容纳了用于可配置微控制器配置的所述第二配置存储器。
14.根据权利要求12所述的可编程逻辑器件,还包括静态随机存取存储器,所述静态随机存取存储器的一部分被配置为用于可编程逻辑器件配置的所述第一配置存储器;所述静态随机存取存储器的第二部分被配置为用于可配置微控制器配置的所述第二配置存储器。
15.根据权利要求12所述的可编程逻辑器件,其中,所述处理器包括硬核,该硬核根据处理器可编程代码选择性地执行基于高级精简指令集计算机、单字长定点指令平均执行速度、Argonaut RISC核心、X86或Power PC的指令集。
16.根据权利要求12所述的可编程逻辑器件,其中,所述多个可配置逻辑块被配置为具有多个可编程接口的可配置微控制器的器件,该可编程接口根据所述第二配置存储器中的一组预定义编程微代码,通过多个可配置通信标准中的至少一个,促进多个输入/输出端口和一个或更多个外部设备之间的通信。
17.根据权利要求16所述的可编程逻辑器件,其中,所述可编程接口被配置为利用集成电路总线,根据所述一组预定义编程微代码促进所述多个输入/输出端口与一个或更多个外部设备之间的通信。
18.根据权利要求16所述的可编程逻辑器件,其中,所述可编程接口被配置为采用串行外设接口总线协议,根据接口编程微码促进所述多个输入/输出端口与一个或更多个外部设备之间的通信。
19.根据权利要求16所述的可编程逻辑器件,其中,所述可编程接口被配置为采用改进的集成电路总线协议,根据接口编程微码,促进所述多个输入/输出端口与一个或更多个外部设备之间的通信。
20.根据权利要求16所述的可编程逻辑器件,其中,所述可编程接口被配置为使用通用异步收发器、整型、两线串行接口和定时器接口协议中的一个,根据接口编程微码来促进所述多个输入/输出端口与一个或更多个外部设备之间的通信。
21.一种通过两阶段配置过程配置现场可编程门阵列以包含可配置微控制器的方法,该方法包括:
从第一配置存储器中读取第一配置数据,用于配置现场可编程门阵列;
根据所述第一配置数据将所述现场可编程门阵列配置为一个或更多个微控制器;
验证了包含所述可配置微控制器的所述现场可编程门阵列的功能后,完成第一阶段的配置;以及
从第二配置存储器中获取第二配置数据,并根据所述第二配置数据配置所述可配置微控制器,以执行一个或更多个用户定义的微控制器逻辑功能。
22.根据权利要求21所述的方法,还包括验证所述可配置微控制器的功能。
23.根据权利要求22所述的方法,还包括验证所述可配置微控制器的一个或更多个用户定义的功能后,完成第二阶段配置。
24.根据权利要求21所述的方法,还包括识别所述可配置微控制器的第一嵌入式功能,以促进基于第一接口协议的主机与外部设备之间的网络接口。
25.根据权利要求24所述的方法,其中,识别第一嵌入式功能包括确定用于与至少一个外部设备通信的集成电路总线接口功能。
26.根据权利要求24所述的方法,其中,识别第一嵌入式功能包括确定用于与至少一个外部设备通信的改进的集成电路总线接口功能。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/988,534 | 2020-08-07 | ||
US16/988,534 US11550281B2 (en) | 2017-05-12 | 2020-08-07 | Method and system for providing programmable microcontroller unit (MCU) using two-phase configuration process |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113254372A true CN113254372A (zh) | 2021-08-13 |
Family
ID=77187087
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110638021.6A Pending CN113254372A (zh) | 2020-08-07 | 2021-06-08 | 用两阶段配置过程提供可编程微控制器的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113254372A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114563691A (zh) * | 2022-04-29 | 2022-05-31 | 南京宏泰半导体科技有限公司 | 一种集成电路高速数字接口通用检测装置及方法 |
TWI833495B (zh) * | 2022-12-09 | 2024-02-21 | 新唐科技股份有限公司 | 用於開發控制器的雲端系統、控制器開發方法與控制器 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101783812A (zh) * | 2009-12-01 | 2010-07-21 | 深圳市蓝韵实业有限公司 | 一种基于网络的fpga配置系统及配置方法 |
CN201562267U (zh) * | 2009-12-01 | 2010-08-25 | 深圳市蓝韵实业有限公司 | 一种基于网络的fpga配置系统 |
CN201570024U (zh) * | 2009-09-18 | 2010-09-01 | 雅格罗技(北京)科技有限公司 | 一种基于现场可编程逻辑的可配置片上系统 |
CN102844764A (zh) * | 2010-04-12 | 2012-12-26 | 交互数字专利控股公司 | 启动过程中的阶段性控制释放 |
CN103777972A (zh) * | 2012-10-24 | 2014-05-07 | 上海联影医疗科技有限公司 | 基于现场可编程门阵列的系统、配置方法以及升级方法 |
CN203812236U (zh) * | 2013-11-29 | 2014-09-03 | 力博特公司 | 一种基于处理器和现场可编程门阵列的数据交换系统 |
CN107958155A (zh) * | 2016-10-17 | 2018-04-24 | 深圳市中兴微电子技术有限公司 | 一种系统初始化方法和装置 |
CN110187827A (zh) * | 2018-02-23 | 2019-08-30 | 三星电子株式会社 | 可编程数据存储装置及可编程网络数据存储系统 |
CN111326199A (zh) * | 2018-12-14 | 2020-06-23 | 西部数据技术公司 | 用于存储器设备的多态编程 |
CN111324299A (zh) * | 2018-12-14 | 2020-06-23 | 西部数据技术公司 | 用于存储器设备的多态编程的映射 |
-
2021
- 2021-06-08 CN CN202110638021.6A patent/CN113254372A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201570024U (zh) * | 2009-09-18 | 2010-09-01 | 雅格罗技(北京)科技有限公司 | 一种基于现场可编程逻辑的可配置片上系统 |
CN101783812A (zh) * | 2009-12-01 | 2010-07-21 | 深圳市蓝韵实业有限公司 | 一种基于网络的fpga配置系统及配置方法 |
CN201562267U (zh) * | 2009-12-01 | 2010-08-25 | 深圳市蓝韵实业有限公司 | 一种基于网络的fpga配置系统 |
CN102844764A (zh) * | 2010-04-12 | 2012-12-26 | 交互数字专利控股公司 | 启动过程中的阶段性控制释放 |
CN103777972A (zh) * | 2012-10-24 | 2014-05-07 | 上海联影医疗科技有限公司 | 基于现场可编程门阵列的系统、配置方法以及升级方法 |
CN203812236U (zh) * | 2013-11-29 | 2014-09-03 | 力博特公司 | 一种基于处理器和现场可编程门阵列的数据交换系统 |
CN107958155A (zh) * | 2016-10-17 | 2018-04-24 | 深圳市中兴微电子技术有限公司 | 一种系统初始化方法和装置 |
CN110187827A (zh) * | 2018-02-23 | 2019-08-30 | 三星电子株式会社 | 可编程数据存储装置及可编程网络数据存储系统 |
CN111326199A (zh) * | 2018-12-14 | 2020-06-23 | 西部数据技术公司 | 用于存储器设备的多态编程 |
CN111324299A (zh) * | 2018-12-14 | 2020-06-23 | 西部数据技术公司 | 用于存储器设备的多态编程的映射 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114563691A (zh) * | 2022-04-29 | 2022-05-31 | 南京宏泰半导体科技有限公司 | 一种集成电路高速数字接口通用检测装置及方法 |
CN114563691B (zh) * | 2022-04-29 | 2022-06-28 | 南京宏泰半导体科技有限公司 | 一种集成电路高速数字接口通用检测装置及方法 |
TWI833495B (zh) * | 2022-12-09 | 2024-02-21 | 新唐科技股份有限公司 | 用於開發控制器的雲端系統、控制器開發方法與控制器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11934167B2 (en) | Method and system for providing programmable microcontroller unit (MCU) using two-phase configuration process | |
US10789197B2 (en) | Methods and system for providing software defined microcontroller unit (MCU) | |
JP7137430B2 (ja) | データ記憶装置及びブリッジ装置 | |
US10671556B2 (en) | Selectable peripheral logic in programmable apparatus | |
US7373432B2 (en) | Programmable circuit and related computing machine and method | |
US6278289B1 (en) | Content-addressable memory implemented using programmable logic | |
JP3587095B2 (ja) | 情報処理装置 | |
US8301818B2 (en) | Virtual hot plugging of devices and virtual devices | |
US7454556B1 (en) | Method to program non-JTAG attached devices or memories using a PLD and its associated JTAG interface | |
CN113254372A (zh) | 用两阶段配置过程提供可编程微控制器的方法和系统 | |
JP2011181078A (ja) | プログラマブル回路、関連計算マシン、並びに、方法 | |
CN115098190A (zh) | 一种提高ssd系统启动速度的方法、装置、终端及存储介质 | |
CN114925644A (zh) | 在边缘系统验证逻辑系统设计的方法、边缘系统 | |
CN110569038B (zh) | 随机验证参数设计方法、装置、计算机设备及存储介质 | |
US11604747B2 (en) | Programmable hardware virtual network interface | |
JP2022054412A (ja) | マイクロセクタインフラストラクチャに基づくロジックファブリック | |
US10970206B2 (en) | Flash data compression decompression method and apparatus | |
US9503096B1 (en) | Multiple-layer configuration storage for runtime reconfigurable systems | |
CN117480498A (zh) | 在运行时间为裸金属服务器动态提供PCIe器件 | |
EP4109311A1 (en) | Fuse recipe update mechanism | |
CN112650709A (zh) | 一种现场可编程门阵列、配置方法和系统 | |
CN108334313A (zh) | 用于大型soc研发的持续集成方法、装置及代码管理系统 | |
US7761845B1 (en) | Method for parameterizing a user module | |
CN111078596A (zh) | Flash芯片控制方法、设备、系统及可读存储介质 | |
US10359946B1 (en) | Systems and methods for operating a flash memory in an integrated circuit |
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 |