CN118311916B - 一种可编程逻辑系统和微处理器 - Google Patents
一种可编程逻辑系统和微处理器 Download PDFInfo
- Publication number
- CN118311916B CN118311916B CN202410743533.2A CN202410743533A CN118311916B CN 118311916 B CN118311916 B CN 118311916B CN 202410743533 A CN202410743533 A CN 202410743533A CN 118311916 B CN118311916 B CN 118311916B
- Authority
- CN
- China
- Prior art keywords
- programmable logic
- module
- register
- microcode
- logic system
- 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.)
- Active
Links
- 238000013461 design Methods 0.000 claims abstract description 11
- 238000003491 array Methods 0.000 claims abstract description 10
- 238000000034 method Methods 0.000 claims abstract description 10
- 230000008569 process Effects 0.000 claims abstract description 9
- 230000006870 function Effects 0.000 claims description 21
- 230000004044 response Effects 0.000 claims description 9
- 238000004891 communication Methods 0.000 claims description 5
- 230000003068 static effect Effects 0.000 claims description 4
- 238000013500 data storage Methods 0.000 claims description 3
- 238000001514 detection method Methods 0.000 claims description 2
- 230000001960 triggered effect Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000011423 initialization method Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 102100028043 Fibroblast growth factor 3 Human genes 0.000 description 1
- 101150102734 ISR1 gene Proteins 0.000 description 1
- 102100024061 Integrator complex subunit 1 Human genes 0.000 description 1
- 101710092857 Integrator complex subunit 1 Proteins 0.000 description 1
- 108050002021 Integrator complex subunit 2 Proteins 0.000 description 1
- 101710092886 Integrator complex subunit 3 Proteins 0.000 description 1
- 102100025254 Neurogenic locus notch homolog protein 4 Human genes 0.000 description 1
- 208000034530 PLAA-associated neurodevelopmental disease Diseases 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 101150031250 retm gene Proteins 0.000 description 1
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
- G05B19/0423—Input/output
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/20—Pc systems
- G05B2219/24—Pc safety
- G05B2219/24215—Scada supervisory control and data acquisition
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Microcomputers (AREA)
Abstract
本公开的实施例涉及一种可编程逻辑系统和微处理器,可编程逻辑系统包括:输入输出模块,被配置为可编程逻辑系统与数据库之间的信息通道,以获取用于可编程逻辑模块的可编程逻辑数据;可编程逻辑模块,包括多个可编程逻辑阵列,所述可编程逻辑模块被配置成基于来自输入输出模块的可编程逻辑数据,将所述多个可编程逻辑阵列编写为设计器件;微码引擎模块,被配置成执行微码指令集,以实现对第一寄存器模块和第二寄存器模块操作和控制;第一寄存器模块,被配置成当所述上位机对所述可编程逻辑系统进行操作时,存储和处理可编程逻辑模块的配置和状态信息;以及第二寄存器模块,被配置成嵌入在可编程逻辑模块中并连接到微码引擎模块。
Description
技术领域
本发明涉及集成电路领域,具体涉及一种可编程逻辑系统和微处理器。
背景技术
工业级系统对产品的稳定性要求非常的高,需要对产品各种状态进行实时性很高的监测和控制,比如单板功耗、温度以及芯片运行状态等等。一般系统会使用单片机或者其他类似的简单微码引擎进行监控上位机、下位机。因为单片机设计难度低,功能全面,且成本低,应用非常广泛。但是对于一些实时性要求非常高的任务,单片机无法满足系统要求。为了完成这样的任务,通常会引入可编程逻辑系统或可编程逻辑阵列来实现期望电路从而连接到上位机、下位机。
数字逻辑运算在数字系统中有着广泛的应用,它是进行高速计算,特别是信号处理等方面应用时不可或缺的。尤其是在高性能微处理器、数字信号处理器、图形图像系统、科学计算以及某些特定数据处理设备中更是不可或缺的组成部分,有着举足轻重的地位。
可编程逻辑器件是作为一种通用集成电路产生的,他的逻辑功能按照用户对器件编程来确定,特别是FPGA芯片(Field-Programmable Gate Array,即现场可编程门阵列)为其中的代表,FPGA芯片中包含有大量的逻辑单元(Logic Element,简称为LE),用户可以通过对这些逻辑单元的自由组合以实现不同的逻辑电路功能,在实现数字逻辑时,事先将相应的结果(例如,输入与输出的对应关系等)烧录至存储单元内形成查找表(Look-Up-Table,简称为LUT),从而在相同的电路情况下实现了不同的逻辑功能,由于基于LUT的FPGA具有很高的集成度,其器件密度从数万门到数千万门不等,可以完成极其复杂的数字逻辑电路功能,所以适用于高速、高密度的高端数字逻辑电路设计领域。不过,以FPGA为代表的可编程逻辑器件存在一些明显不足,例如:高度定制性,存储空间有限、程序可扩展性及可移植性不佳等,特别地,如上所述,FPGA所实现的数字逻辑是有赖于LUT的建立,因此,要实现所需的数字逻辑,在实际应用中,FPGA会存在冗余逻辑电路(FPGA中某些逻辑单元中的某些部分经常不会被使用甚至可能从不被使用),导致成本较高,而且也带来了一定的功耗问题。
另一方面,微码引擎可以将复杂的逻辑分成许多小的任务,而每个任务又都可以用某个(些)指令集完成,因此,复杂的工作可以由软件来实现。该方法的好处是,只要微码引擎速度够快,就可以完成复杂的工作。此外,由于是使用软件来实现逻辑,因此,可以通过修改软件来改变逻辑实现。但是,微码引擎处理需要软件中断来驱动完成,受限于微码引擎这种架构,即使微码引擎速度够快,在软件运行时仍可能存在实时性等问题。
然而根据不同的系统需求,可能需要选定可编程逻辑阵列或中央处理单元不同的内置功能,有时会因为可编程逻辑阵列或中央处理单元本身的限制,导致系统设计的功能难于实现,做出妥协。
因此为了实现特定的系统需求,需要使可编程逻辑电路还能实现部分代码运算功能。目前的可编程逻辑系统通常只包括可编程逻辑阵列,而不包括可实现代码功能的微码引擎。
因此,需要一种可编程逻辑系统可以同时实现可编程逻辑的电路设计功能和微码代码功能。
发明内容
针对上述问题,本公开提供了一种可编程逻辑系统和微处理器。可编程逻辑系统将可编程逻辑和微码引擎结合在一起,从而可发挥基于可编程逻辑单元的平面逻辑控制技术和基于数据处理单元的时域逻辑控制技术的优点,提高了电路的灵活性,节省成本且确保实时性,降低能耗。
根据本公开的第一方面,提供了一种可编程逻辑系统,所述可编程逻辑系统连接到上位机、下位机以及数据库,其特征在于,所述可编程逻辑系统包括:输入输出模块,被配置为可编程逻辑系统与数据库之间的信息通道,以获取用于可编程逻辑模块的可编程逻辑数据;可编程逻辑模块,包括多个可编程逻辑阵列,所述可编程逻辑模块被配置成基于来自输入输出模块的可编程逻辑数据,将所述多个可编程逻辑阵列编写为设计器件;微码引擎模块,被配置成执行微码指令集,以实现对第一寄存器模块和第二寄存器模块操作和控制;第一寄存器模块,被配置成当所述上位机对所述可编程逻辑系统进行操作时,存储和处理微码引擎模块的配置和状态信息;以及第二寄存器模块,被配置成嵌入在可编程逻辑模块中并连接到微码引擎模块,以存储和处理微码引擎模块和可编程逻辑模块的配置和状态信息。
在一些实施例中,第二寄存器模块还被配置成同时受控于微码引擎模块以及可编程逻辑模块,以及响应于可编程逻辑模块和微码引擎模块同时改变第二寄存器模块的值,优先存储和处理微码引擎模块的配置和状态信息。
在一些实施例中,可编程逻辑系统还包括:高级高性能总线模块,被配置成实现对上位机和下位机的通信,其中所述高级高性能总线模块包括:高级高性能总线下位机接口,被配置成接收可编程逻辑系统初始化所需的微码和系统参数并下载到所述微码引擎模块以及可编程逻辑模块,高级高性能总线上位机接口,被配置成生成上位机控制信号,并且基于所生成的上位机控制信号实现对上位机的总线控制功能;以及时钟控制模块,被配置成提供所述可编程逻辑系统的系统时钟控制以及中断服务程序触发模式。
在一些实施例中,时钟控制模块包括:一个或多个计数单元,所述计数单元为固定位数的计数单元,并且配置有固定位数的初始寄存器和比较寄存器。
在一些实施例中,一个或多个计数单元被组合为高倍计时单元,所述高倍计时单元的位数是固定位数的倍数。
在一些实施例中,中断服务程序触发模式包括:响应于所述初始寄存器和比较寄存器的赋值,触发中断服务程序信号;响应于所述可编程逻辑模块的逻辑运算,触发中断服务程序信号;所述微码引擎模块确定所触发的中断服务程序信号的优先级;以及所述微码引擎模块基于所确定的中断服务程序信号的优先级,执行中断服务程序信号对应的中断服务程序。
在一些实施例中,可编程逻辑系统还包括:先进先出模块,被配置成缓存来自上位机的数据或者经微码引擎模块处理后的数据,其中所述先进先出模块包括缓存单元,所述缓存单元被配置成暂存数据,以显示数据溢出和欠流的检测。
在一些实施例中,可编程逻辑系统还包括:中断请求模块,被配置成生成用于上位机的中断请求信号并且管理不同中断源的优先级,以使较高优先级的中断请求优先响应。
在一些实施例中,可编程逻辑系统还包括:与微码引擎连接的数据存储模块,被配置为静态随机存取存储模块SRAM、动态随机存取存储模块DRAM、或闪存Flash。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素。
图1示出了根据本发明的实施例的可编程逻辑系统100的示意图。
图2示出了根据本发明的实施例的可编程逻辑系统初始化方法的流程图。
图3示出了根据本发明实施例的可编程逻辑模块的示意图。
图4示出了根据本发明实施例的一个先进先出单元的示意图。
图5示出了根据本发明实施例的中断服务程序触发的示意图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
图1示出了根据本发明的实施例的可编程逻辑系统100的示意图。如图1所示,可编程逻辑系统100包括通用输入输出模块GPIO、可编程逻辑模块内的可编程逻辑阵列PLA、微码引擎模块Micro Engine、第一寄存器模块M-registers、第二寄存器模块R-registers,静态随机存取存储器Sram,高级高性能总线下位机接口AHB Slave,高级高性能总线上位机接口AHB Master,先进先出模块FIFO,时钟控制模块Times以及中断请求模块Interrupt。
在一个实施例中,可编程逻辑系统100包括第一寄存器M-registers。下位机通过高级高性能总线下位机接口AHB slave可以对第一寄存器M-registers进行操作。
可编程逻辑系统100内部还包括第二寄存器R-registers。第二寄存器R-registers是通用的微码引擎的寄存器,但部分第二寄存器R-registers同时嵌入在PLA中。
第二寄存器R-registers同时受控于微码引擎模块和可编程逻辑模块内的可编程逻辑阵列PLA。响应于微码引擎模块和可编程逻辑模块两者同时对第二寄存器R-registers操作,微码引擎模块有优先权,即优先处理和存取微码引擎模块的信息数据。
如图1所示,微码引擎模块也可对第一寄存器M-registers进行操作。响应于高级高性能总线下位机接口AHB-slave和微码引擎模块同时对第一寄存器M-register进行操作,则微码引擎模块有优先级,即优先处理和存取微码引擎模块的信息数据。
如图1所示,可编程逻辑系统100包括先进先出模块FIFO。先进先出模块FIFO是可编程逻辑系统100对外通讯的缓存器。先进先出模块FIFO可以缓存从上位机来的数据,也可以缓存经微码引擎处理后的数据。
先进先出模块FIFO包括一个或多个先进先出单元。多个先进先出单元可以独立工作,也可以由多个FIFO来缓存多个信道,也可以合成大一些的FIFO来实现深度缓存功能。
如图1所示,可编程逻辑系统100包括时钟控制模块。时钟控制模块由一个或多个记时器单元组成。多个记时器单元可以独立工作,提供多路时间信息,也可以合成比较长的计时功能,实现长时间计时。
可编程逻辑系统100的核心为可编程逻辑模块。可编程逻辑模块,可编程逻辑模块包括多个可编程逻辑阵列,所述可编程逻辑模块配置成基于来自输入输出模块的可编程逻辑数据,将所述多个可编程逻辑阵列编写为设计器件。可编程逻辑阵列(ProgrammableLogic Array)是系统的关键可编程逻辑实现单元,有一系列逻辑阵列组成。通过对PLA进行编程,就可实现不同的逻辑功能。
通用输入输出模块GPIO作为可编程逻辑系统100与外部数据库的接口,负责数据的输入和输出。它能够接收来自数据库的指令,并将其转换为可编程逻辑模块所需的逻辑数据。下面将具体描述本发明实施例中所涉及的各个模块和单元。
在一个实施例中,高级高性能总线下位机接口可以实现可编程逻辑模块内的可编程逻辑阵列PLA的编程,将微码下载到微码引擎模块,设置可编程逻辑系统100的参数设置,并且同第一寄存器M-register进行读写通讯。
可编程逻辑系统100在高级高性能总线下位机接口AHB Slave上可以有多个,例如3个,存储器地址空间。3个存储器地址空间分别存储第一寄存器M-Register地址空间,可编程逻辑模块内的可编程逻辑阵列PLA的编程地址空间及微码引擎空间。第一寄存器M-Register的地址空间可以配置为可编程逻辑系统100的寄存器。第一寄存器M-Register可以是可编程逻辑系统100的具体的功能寄存器,也可以是顶层寄存器,例如使能寄存器,复位寄存器或设置寄存器。设置寄存器可以是先进先出FIFO模式设置寄存器,计时模块设置寄存器等等。可编程逻辑模块内的可编程逻辑阵列PLA的编程地址空间可以是用于可编程逻辑模块内的可编程逻辑阵列PLA的存储器。微码引擎空间可以是用于微码的存储空间。其他存储可由被配置为静态随机存取存储模块SRAM、动态随机存取存储模块DRAM、或闪存Flash的数据存储模块来实现。
微码引擎空间、可编程逻辑模块内的可编程逻辑阵列PLA的编程地址空间及可编程逻辑系统100的参数的设置在系统初始化时进行下载,从而能在正常运算中提供微码引擎的代码及逻辑功能。在正常运算中,可编程逻辑系统100不进行参数下载,从而保证功能一致性。
图2示出了根据本发明的实施例的可编程逻辑系统初始化方法200的流程图。如图2所示,在步骤202,可编程逻辑系统进入系统编程模式。在步骤204,获取可编程逻辑系统的编程参数和第一寄存器M-Register地址空间。随后开始可编程逻辑模块的编程。在步骤206,基于通用输入输出模块,向可编程逻辑模块内的可编程逻辑阵列PLA的编程地址空间移入第一字长的数据、随后向可编程逻辑模块内的可编程逻辑阵列PLA的编程地址空间移入第二字长的数据、随后向可编程逻辑模块内的可编程逻辑阵列PLA的编程地址空间移入第三字长的数据直至向可编程逻辑模块内的可编程逻辑阵列PLA的编程地址空间移入整行数据。在步骤208,判断是否整个可编程逻辑模块内的可编程逻辑阵列PLA的编程已完成。响应于整个可编程逻辑模块内的可编程逻辑阵列PLA的编程已完成,进入到步骤210,否则继续回到步骤206,向可编程逻辑模块内的可编程逻辑阵列PLA的编程地址空间移入数据。在步骤210,获取用于微码引擎模块的微码到微码引擎空间,从而完成整个可编程逻辑系统的初始化。
在一个实施例中,由于微码引擎模块对第一寄存器M-registers也可以操作并且还有高优先级,高级高性能总线下位机接口AHB Slave在系统设计上需设计有握手逻辑机制来保证第一寄存器M-registers的正确性。
具体来说,握手逻辑机制是第一寄存器M-register与高级高性能总线下位机接口AHB Slave之间的通信方式,两者用来通信的信号就是握手信号。本发明可使用的一个握手信号是 valid 和 ready。假设高级高性能总线下位机接口AHB Slave向第一寄存器M-register发送数据,高级高性能总线下位机接口AHB Slave不知道第一寄存器M-register什么时候可以接收数据,第一寄存器M-register也不知道高级高性能总线下位机接口AHBSlave什么时候会发送数据,那么它们之间可以先通过握手机制通信。高级高性能总线下位机接口AHB Slave将 valid 信号置1,告诉第一寄存器M-register,数据准备就绪,请查收。第一寄存器M-register此刻正处于忙碌状态无法接收数据,第一寄存器M-register将ready 信号保持为0。第一寄存器M-register空闲后,将 ready 信号置1接收设备1的数据。高级高性能总线下位机接口AHB Slave看到第一寄存器M-register的 ready 为1,确定第一寄存器M-register已经接收好数据了,将valid 置0同时撤销数据,准备下一次发送。可以看到因为有握手控制,可以确保数据的正确传输,不会丢失。跨时钟域的握手设计就是利用握手控制这种优势,从而避免因为跨时钟域引起的数据传输错误。
在一个实施例中,第二寄存器R-register同样存在地址空间。第二寄存器R-register是用于微码引擎运行空间。高级高性能总线下位机接口AHB Slave不能直接控制第二寄存器R-register。但微码引擎模块可以通过微码来对第一寄存器M-register和第二寄存器R-register进行操作,从而达到下位机对第二寄存器的间接控制。
在一个实施例中,高级高性能总线上位机接口支持标准的单地址模式(singleaddress operation mode)和连续地址模式。高级高性能总线上位机接口包括配置寄存器和地址寄存器。高级高性能总线上位机接口的地址寄存器可以配置成地址空间的任何地址。在单地址模式,每一个高级高性能总线的操作都需要配置此地址。
但在连续地址模式的操作中,只要配置首个操作的地址即可。例如,当数据可操作时,地址寄存器的地址可自动加1。对16位操作,地址寄存器的地址可自动加2。对32位操作,地址寄存器的地址可自动加4。进一步地,对于16位和32位操作,地址必须对齐16位和32位地址位。
在一个实施例中,可编程逻辑模块(Programmable Logic Array)是由逻辑块(LB)及输入输出块(IO)组成的矩阵。
图3示出了根据本发明实施例的可编程逻辑模块的示意图。如图3所示,逻辑块一共包括48个逻辑块LB单元(即,8行×6列)。本领域技术人员可以了解的是,逻辑块的单元数可以根据实际应用需要而改变,例如可以是M×N个(即,M行×N列,M、N为正整数)。
在可编程逻辑模块的相应的每行及每列端口,都有一个输入输出块IO块。这些逻辑块及IO模块是由一些水平及垂直连接例程(routines)来连接的。出于简洁起见,例程没有在图3中示出。
逻辑块LB包括逻辑表(lookup table)和相应的寄存器Lookup。IO块及例程routine是实现把外部信号接到逻辑块LB的接口,或把逻辑块LB内部信号或寄存器接到外部。
外部信号包括通用输入输出模块的输入输出和对上位机的中断。在系统的初始化和参数设置过程中,需要对可编程逻辑模块进行初始化,从而外部信号通过IO块,例程Routine到达LB,实现特定的功能后,信号又通过例程Routine,IO块到达外部,从而实现可编程的逻辑功能。
在一个实施例中,部分或全部LB的寄存器配置成第二寄存器R-Register的一部分,使得微码引擎也能观察和控制这些R-Register。通过第二寄存器R-Register,可编程逻辑模块和微码引擎模块有了交互逻辑,实现更优化的可编程性。
在一个实施例中,微码引擎模块可以是客制指令集的实时运行的引擎,其可以是单个时钟周期执行的引擎。微码引擎模块的指令集包括数据传送指令、算数指令、逻辑指令、分支指令、控制指令和控指令等指令。
数据传送指令可包括ASSIGN:可以实现向第二寄存器R-REGISTER赋值8比特,4比特或单比特立即数;MOV:可以实现第二寄存器R-REGISTER与第二寄存器R-REGISTER以及第二寄存器R-REGISTER与第一寄存器M-REGISTER之间的数据移动,可以进行8比特,4比特或单比特的数据移动操作。
算数指令可包括SUB:可以实现第二寄存器R-REGISTER减去立即数或第二寄存器R-REGISTER之间的减法操作;ADD:可以实现第二寄存器R-REGISTER加上立即数或第二寄存器R-REGISTER之间的加法操作;XOR:可以实现第二寄存器R-REGISTER异或立即数或第二寄存器R-REGISTER之间的异或操作。
逻辑指令可包括AND:可以实现第二寄存器R-REGISTER和立即数的按位与操作或第二寄存器R-REGISTER之间的按位与操作;OR:可以实现第二寄存器R-REGISTER和立即数的按位或操作或第二寄存器R-REGISTER之间的按位或操作;NOT:可以实现第二寄存器R-REGISTER的按位取反操作;SHIFT:可以实现第二寄存器R-REGISTER的左移或右移操作。
分支指令可包括JST:根据相应第二寄存器R-REGISTER域段的数值选择跳转地址;JMP:直接跳转地址;JIMM:若第二寄存器R-REGISTER数值等于立即数则跳转到某一地址;JIMMN:若第二寄存器R-REGISTER数值不等于立即数则跳转到某一地址;控制指令:INT0,INT1,INT2,INT3:上位机中断请求;RETM:微码中断服务程序结束。
空指令可包括NOP:空过一个指令周期。
每个微码需用两个时钟周期完成一个指令,周期包括decode周期和execute周期。例如,除了第一个指令instruction1,所有指令都是顺序执行指令。在这个例子中,instruction1是跳转指令且跳转成功。在cycle2时,引擎执行instruction1 execute,应为跳转成功,引擎在下一个周期会忽视instruction2 decode,执行NOP指令并且切换地址为instruction6。
在一个实施例中,用于微码引擎的微码主要包括三个部分,其分别是INTIIAL,MAIN和ISR。INITIAL是系统的初始设定。MAIN是每个微码必不可少的部分,MAIN部分都会以JMP MAIN结束,从而形成一个完整的循环。中断服务程序ISR是主要的程序执行单元,可以有多个微码触发。每个中断服务程序ISR都会的结束必须执行中断服务程序ISR退出指令,使微码回到MAIN的循环。地址标号主要是为微码可读性,但MAIN是必不可少的。中断服务程序ISR是不可嵌套的,微码必须执行完整段的微码后,跳到MAIN以后才可以执行下一段微码。在ISR执行过程中,不会响应其他中断服务程序ISR请求,哪怕是请求中断优先级高,但会有机制记住所有的请求。中断服务程序ISR请求是有优先级的,如果同时有多个中断服务程序ISR请求,优先级高的中断服务程序ISR会先执行。
在一个实施例中,可编程逻辑系统包括由一个或多个先进先出单元组成的先进先出模块。每个先进先出单元FIFO可以设置为发射TX FIFO或接收RX FIFO。这个设置是在系统初始化的过程中完成的。TX/RX是相对高级高性能总线而言的。例如如设置为TX FIFO,上位机通过AHB对FIFO进行写操作;而如设置为RX FIFO,高级高性能总线对FIFO则是进行读操作的。
在一个实施例中,FIFO单元的位宽和深度是固定的。每个FIFO单元可以独立工作,也可组合起来成为先进先出模块,或者深度加深先进先出单元,或者位宽加宽的先进先出单元。二个和二个以上的FIFO可以组合成一个增容的FIFO。组合后的FIFO的特性同单个FIFO一样,就是FIFO的容积增加了。二个FIFO组合,它的容积就是单个FIFO的二倍,三个组合就是三倍。最多可将所有FIFO进行组合,FIFO的容积增大到它的极限。
如果独立工作,它有FIFO的接口地址,接口数据,有FIFO 满和空信号标志信号及FIFO深度标志信号。如果组合工作,则组合后的FIFO有它的接口地址,接口数据,有FIFO 满和空信号标志信号及FIFO深度标志信号。
图4示出了根据本发明实施例的一个先进先出单元的示意图。当一个FIFO独立使用时,它的接口如图4所示。FIFO可以被设置为发射TX或接收RX模式。
在高级高性能总线有FIFO复位,FIFO数据,FIFO当前深度,FIFO满和空信号等信号端口。如果FIFO被设置为TX,这些信号就变为FIFO TX复位,FIFO TX数据,FIFO TX深度及FIFO TX满和空信号。相反,如果FIFO被设置为RX,这些信号就变为FIFO RX复位,FIFO RX数据,FIFO RX深度及FIFO RX满和空信号。
如图4所示,FIFO的读、写地址是相同的,如FIFO设置为TX, 并且FIFO是非满,对FIFO的写操作就可以把数据写入FIFO。如FIFO是满,对FIFO的写操作仍然可以把数据写入FIFO,但FIFO的OVERFLOW 标志位将会被置1。如设置系统的错误中断,则会产生中断。FIFO的标志信号FIFO深度,空满都是只读信号,不要对其进行写操作。如FIFO设置为RX, 并且FIFO是非空,对FIFO的读操作就可以把数据读出FIFO。
在一个实施例中,可编程逻辑系统包括时钟控制模块。时钟控制模块可以包括一个或多个计时器Timers。每个计时器Timer都可以独立工作,也可以组合工作。单个计时器Timer是一个固定位数计数单元,有一个固定位数初始值寄存器。在系统初始化中,需要对计时器的初始值寄存器进行赋值。当计时器Timers使能后,计数器就开始向下计数,当计数器计数到零时,就会产生一个脉冲的计数触发,并且重新回到初始值开始向下计数。计时器Timer也会有一个比较寄存器,在系统初始化中,对此寄存器赋值并对比较寄存器功能使能时,计数值同比较计数器一致时,计时器Timer也会产生一个脉冲的计数触发。
二个和二个以上的计时器Timers可以组合成高位的计时器timer。如二个N位的计时器Timers可以组合成一个2N位的计时器Timer,三个timers组合成一个3N位计时器timer,四个timers组合成一个4N位计时器timer等等。
如上所述,可编程逻辑系统的逻辑功能是由两个不同的电路来实现的,即可编程逻辑模块内的可编程逻辑阵列PLA及微码引擎模块,虽然两者都可以实现给定的逻辑,他们要么需要较多的资源要么需要较多的时钟周期。把两者结合起来,可以优化资源和时间。中断服务程序ISR的触发是沟通两者的桥梁。
中断服务程序ISR的触发源来自两个地方,一个是计时器Timer的计数触发。另一个是可编程逻辑模块内的可编程逻辑阵列PLA的逻辑电路部分产生的触发。这些触发信号都以单脉冲形式给到中断服务程序ISR的控制单元。
图5示出了根据本发明实施例的中断服务程序触发的示意图。如图5所示,中断服务程序ISR触发源逻辑可包括多个ISR触发源。如图5中的16个ISR的触发源优先级总是从0往后排, ISR0最高,ISR1次高,ISR2再次之。
计时器Timer的计数触发信号首先会给到可编程逻辑模块内的可编程逻辑阵列PLA,这些信号会由可编程逻辑模块内的可编程逻辑阵列PLA做优先级的逻辑排序,或者更进一步同其他可编程逻辑模块内的可编程逻辑阵列PLA逻辑做产生中断服务程序ISR触发。可编程逻辑模块内的可编程逻辑阵列PLA逻辑单元本身也可以产生单脉冲形式的信号来触发ISR。
在一个实施例中,中断服务程序ISR支持直接触发模式。如果微码在运行过程中,在有中断服务程序ISR触发信号且没有执行其他中断服务程序ISR服务时,微码会立即响应中断服务程序ISR请求,程序转到ISR触发信号对应的中断服务程序ISR服务程序。如果同时有多个ISR触发信号请求且没有执行其他中断服务程序ISR服务时,微码会立即响应中断服务程序ISR请求,根据中断服务程序ISR的优先级设定,程序转到中断服务程序ISR请求号优先级最高的触发信号对应的中断服务程序ISR服务程序,其余中断服务程序ISR请求将会进入等待模式。当前的中断服务程序ISR服务程序完成时,微码会再次检查所有中断服务程序ISR的请求,并执行中断服务程序ISR请求优先级最高的请求。
在一个实施例中,可编程逻辑系统可以中断请求模块,中断请求模块配置成生成用于上位机的中断请求信号并且管理不同中断源的优先级,以使较高优先级的中断请求优先响应。中断请求信号可以使得上位机的运行中断,其可以是脉冲信号或电平信号。中断请求信号是由可编程逻辑模块内的可编程逻辑阵列PLA的输入输出IO模块输出产生。
本发明还公开了一种微处理器,所述微处理器包括如前各个实施例所示的数字逻辑电路。配置有前述数字逻辑电路的微处理器不仅可实现可编程逻辑模块和微码引擎模块两者都能对逻辑状态寄存单元执行逻辑操作的目的,而且其本身为芯片级技术,大大提高了芯片的集成度,芯片设计合理,结构简单,减小芯片面体,同时降低了芯片的开发难度和芯片的成本,具有广阔的市场前景。
上述实施例仅例示性说明本申请的原理及其功效,而非用于限制本申请。任何熟悉此技术的人士皆可在不违背本申请的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本申请所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本申请的权利要求所涵盖。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种可编程逻辑系统,所述可编程逻辑系统连接到上位机、下位机以及数据库,其特征在于,所述可编程逻辑系统包括:
输入输出模块,被配置为可编程逻辑系统与数据库之间的信息通道,以获取用于可编程逻辑模块的可编程逻辑数据;
可编程逻辑模块,包括多个可编程逻辑阵列,所述可编程逻辑模块被配置成基于来自输入输出模块的可编程逻辑数据,将所述多个可编程逻辑阵列编写为设计器件;
微码引擎模块,被配置成执行微码指令集,以实现对第一寄存器模块和第二寄存器模块操作和控制;
第一寄存器模块,被配置成当所述上位机对所述可编程逻辑系统进行操作时,存储和处理微码引擎模块的配置和状态信息;以及
第二寄存器模块,被配置成嵌入在可编程逻辑模块中并连接到微码引擎模块,以存储和处理微码引擎模块和可编程逻辑模块的配置和状态信息。
2.根据权利要求1所述的可编程逻辑系统,其特征在于,所述第二寄存器模块还被配置成同时受控于微码引擎模块以及可编程逻辑模块,以及响应于可编程逻辑模块和微码引擎模块同时改变第二寄存器模块的值,优先存储和处理微码引擎模块的配置和状态信息。
3.根据权利要求2所述的可编程逻辑系统,其特征在于,所述可编程逻辑系统还包括:
高级高性能总线模块,被配置成实现对上位机和下位机的通信,其中所述高级高性能总线模块包括:
高级高性能总线下位机接口,被配置成接收可编程逻辑系统初始化所需的微码和系统参数并下载到所述微码引擎模块以及可编程逻辑模块,
高级高性能总线上位机接口,被配置成生成上位机控制信号,并且基于所生成的上位机控制信号实现对上位机的总线控制功能;以及
时钟控制模块,被配置成提供所述可编程逻辑系统的系统时钟控制以及中断服务程序触发模式。
4.根据权利要求3所述的可编程逻辑系统,其特征在于,所述时钟控制模块包括:
一个或多个计数单元,所述计数单元为固定位数的计数单元,并且配置有固定位数的初始寄存器和比较寄存器。
5.根据权利要求4所述的可编程逻辑系统,其特征在于,所述一个或多个计数单元被组合为高倍计时单元,所述高倍计时单元的位数是固定位数的倍数。
6.根据权利要求4所述的可编程逻辑系统,其特征在于,所述中断服务程序触发模式包括:
响应于所述初始寄存器和比较寄存器的赋值,触发中断服务程序信号;
响应于所述可编程逻辑模块的逻辑运算,触发中断服务程序信号;
所述微码引擎模块确定所触发的中断服务程序信号的优先级;以及
所述微码引擎模块基于所确定的中断服务程序信号的优先级,执行中断服务程序信号对应的中断服务程序。
7.根据权利要求1-6中任一项所述的可编程逻辑系统,其特征在于,所述可编程逻辑系统还包括:
先进先出模块,被配置成缓存来自上位机的数据或者经微码引擎模块处理后的数据,其中所述先进先出模块包括缓存单元,所述缓存单元被配置成暂存数据,以显示数据溢出和欠流的检测。
8.根据权利要求7所述的可编程逻辑系统,其特征在于,所述可编程逻辑系统还包括:
中断请求模块,被配置成生成用于上位机的中断请求信号并且管理不同中断源的优先级,以使较高优先级的中断请求优先响应。
9.根据权利要求8所述的可编程逻辑系统,其特征在于,所述可编程逻辑系统还包括:
与微码引擎连接的数据存储模块,被配置为静态随机存取存储模块SRAM、动态随机存取存储模块DRAM、或闪存Flash。
10.一种微处理器,其特征在于,
包括:
如权利要求1至9中任一项所述的可编程逻辑系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410743533.2A CN118311916B (zh) | 2024-06-07 | 2024-06-07 | 一种可编程逻辑系统和微处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410743533.2A CN118311916B (zh) | 2024-06-07 | 2024-06-07 | 一种可编程逻辑系统和微处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN118311916A CN118311916A (zh) | 2024-07-09 |
CN118311916B true CN118311916B (zh) | 2024-08-06 |
Family
ID=91724922
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410743533.2A Active CN118311916B (zh) | 2024-06-07 | 2024-06-07 | 一种可编程逻辑系统和微处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118311916B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN119536101B (zh) * | 2025-01-21 | 2025-04-08 | 中科亿海微电子科技(苏州)有限公司 | 一种芯片用多线程微码控制电路 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1828522A (zh) * | 2005-03-01 | 2006-09-06 | 华晶科技股份有限公司 | 具有一微码引擎的中央处理单元 |
CN109902061A (zh) * | 2019-02-03 | 2019-06-18 | 旋智电子科技(上海)有限公司 | 数字逻辑电路及微处理器 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5043879A (en) * | 1989-01-12 | 1991-08-27 | International Business Machines Corporation | PLA microcode controller |
US6725364B1 (en) * | 2001-03-08 | 2004-04-20 | Xilinx, Inc. | Configurable processor system |
US20210326135A1 (en) * | 2021-06-25 | 2021-10-21 | Dheeraj Subbareddy | Programmable Fabric-Based Instruction Set Architecture for a Processor |
-
2024
- 2024-06-07 CN CN202410743533.2A patent/CN118311916B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1828522A (zh) * | 2005-03-01 | 2006-09-06 | 华晶科技股份有限公司 | 具有一微码引擎的中央处理单元 |
CN109902061A (zh) * | 2019-02-03 | 2019-06-18 | 旋智电子科技(上海)有限公司 | 数字逻辑电路及微处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN118311916A (zh) | 2024-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5944813A (en) | FPGA input output buffer with registered tristate enable | |
US6961841B2 (en) | Multiprocessor computer architecture incorporating a plurality of memory algorithm processors in the memory subsystem | |
JP2502960B2 (ja) | マイクロコンピュ−タ、ならびにマイクロコンピユ−タおよびマイクロコンピユ−タ・ネットワ−クを動作させる方法 | |
US4181934A (en) | Microprocessor architecture with integrated interrupts and cycle steals prioritized channel | |
US7822881B2 (en) | Process for automatic dynamic reloading of data flow processors (DFPs) and units with two- or three-dimensional programmable cell architectures (FPGAs, DPGAs, and the like) | |
US7617383B2 (en) | Circular register arrays of a computer | |
US20210406437A1 (en) | Programmable chip, design method and device | |
US20030093662A1 (en) | Process for automatic dynamic reloading of data flow processors (DFPS) and units with two- or three-dimensional programmable cell architectures (FPGAS, DPGAS, and the like) | |
US4378589A (en) | Undirectional looped bus microcomputer architecture | |
KR101056153B1 (ko) | 배리어 동작들의 조건부 브로드캐스트를 위한 방법 및 장치 | |
US6460131B1 (en) | FPGA input output buffer with registered tristate enable | |
CN118311916B (zh) | 一种可编程逻辑系统和微处理器 | |
US4197589A (en) | Operation sequencing mechanism | |
US5410721A (en) | System and method for incrementing a program counter | |
US7624209B1 (en) | Method of and circuit for enabling variable latency data transfers | |
Leibson et al. | Configurable processors: a new era in chip design | |
US5742842A (en) | Data processing apparatus for executing a vector operation under control of a master processor | |
US5317750A (en) | Microcontroller peripheral expansion bus for access to internal special function registers | |
US6230238B1 (en) | Method and apparatus for accessing misaligned data from memory in an efficient manner | |
US7636817B1 (en) | Methods and apparatus for allowing simultaneous memory accesses in a programmable chip system | |
EP0020972B1 (en) | Program controlled microprocessing apparatus | |
US7178009B2 (en) | Different register data indicators for each of a plurality of central processing units | |
JP2006515446A (ja) | 関連アプリケーションを相互参照するカルテシアンコントローラを有するデータ処理システム | |
US7149827B1 (en) | Methods and apparatus for tristate line sharing | |
JP5701930B2 (ja) | 半導体装置 |
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 |