具有可编程虚拟端口的处理器的制作方法

文档序号:6440156阅读:221来源:国知局
专利名称:具有可编程虚拟端口的处理器的制作方法
技术领域
本发明总体涉及处理器,更具体而言涉及具有可编程虚拟端口的处理器。
背景技术
在当前的MCU (微控制单元)GPIO (通用输入/输出)和IOMUX (输入/输出复用器)设计中,多个IO引脚通常被定义成具有诸如8位、16位或32位宽度的多个端口,其可作为功能引脚(例如:sc1、spi等)或者通用IO引脚,或者用于功能验证和测试目的。由于不同的系统需求、引脚复用和封装配置,几乎在所有MCU芯片中这些可寻址的端口 /引脚是分立的。分立的端口 /引脚有很多缺点。例如,其需要另外努力来配置端口程序。此外,当端口 /引脚分立时,数据传输性能会降低。如果端口地址是分立的,数据程序必须是位模式,当使用用于模式(pattern)正确性检查的端口时,会降低应用性能并增加了验证和生产测试时间。另外,如果端口总线宽度在芯片之间有改变,则测试软件可能不是可重复使用的。因此,具有可编程非分立的8位(或16位或32位)宽度的虚拟端口是所期望的,其理想地具有和芯片总线同样的宽度,其消除了上面提及的低引脚数量封装中分立端口或非可用端口的缺点。

发明内容
本发明针对一种具有用于发送和接收数据的多个输入/输出(IO)引脚的处理器。该IO引脚被分组成多个预定义端口。处理器还包括具有多个存储位置的存储器映射,其中每个预定义端口具有存储于存储位置之一中的物理地址。处理器还包括具有存储于存储位置之一中的虚拟地址的至少一个 虚拟端口。该至少一个虚拟端口包括从两个或多个预定义端口中选择的IO引脚,使得该至少一个虚拟端口允许同时访问从两个或多个预定义端口中所选择的IO引脚。本发明还针对一种编程处理器的方法,该处理器具有用于发送和接收数据的多个输入/输出(IO)引脚,其中该引脚被分组成多个预定义端口,以及具有多个存储位置的存储器映射,其中每个预定义端口具有存储于存储位置之一中的物理地址。该方法包括:将IO引脚重新映射到一个或多个虚拟端口,其中一个或多个虚拟端口由从两个或多个预定义端口中选择的IO引脚构成,并且虚拟端口中的IO引脚与预定义端口中的IO引脚相对应。此外,每一个虚拟端口具有存储于存储位置之一中的虚拟池址,使得该一个或多个虚拟端口能够同时访问两个或多个预定义端口中的所选IO引脚。本发明还针对一种电子设备,该电子设备包含图形用户界面(⑶I)和通信地耦接至该⑶I的处理器。⑶I可以是使得用户能够向处理器提供指令且能够显示来自处理器的任意信息的任何合适的设备,例如显示屏、键盘和鼠标、电容性的触摸屏或类似物。处理器包含用于发送和接收数据的多个输入/输出(IO)引脚,其中该引脚被分组成多个预定义端口 ;具有多个存储位置的存储器映射,其中每个预定义端口具有存储于存储位置之一中的物理地址;以及具有存储于存储位置之一中的虚拟地址的至少一个虚拟端口,其中该至少一个虚拟端口包括从两个或多个预定义端口中选择的IO引脚。因此,该至少一个虚拟端口使得能够同时访问从两个或多个预定义端口中所选择的IO引脚。本发明的具有可编程虚拟端口的处理器具有多个优点。特别是,本发明的处理器能够将来自不同预定义端口的引脚分组到一个虚拟端口。虚拟端口分配是易于编程的,使得应用代码是小尺寸、高效、易于使用且快速执行的。


当结合附图阅读时,将会更好地理解本发明较佳实施例的下述详细说明。本发明以实例方式说明,但不受附图所限制。图1是具有多个输 入/输出(IO)引脚的处理器俯视图;图2是显示和本发明相关的部件的处理器的功能框图;图3是根据本发明一实施例的存储器映射框图;图4是根据本发明一实施例的具有一个虚拟端口的处理器的原理框图;图5是根据本发明一实施例的具有两个虚拟端口的处理器的原理框图;以及图6是根据本发明一实施例的具有连接到测试器的虚拟端口的处理器的原理框图。
具体实施例方式下文结合附图公开的详细说明旨在作为本发明的当前较佳实施例的描述,而不被认为是代表本发明可实施的唯一形式。需理解的是:相同的或相等的功能可由不同实施例完成,所述实施例被认为包含在发明的精神和范围内。现在参照图1,显示了具有多个输入/输出(IO)引脚10的处理器I的俯视图。如本领域所知,该多个IO引脚10用于发送和接收数据。多个IO引脚10的数量和放置可随处理器I的不同配置以及不同封装选择而变化。例如对于32位的处理器,总线宽度可比用于16位版本处理器的要宽。类似地,某些封装类型将具有比其他封装类型更多的可用引脚,例如BGA封装对比DIP。IO引脚10被分为三类:仅用于执行预先指定功能的引脚;与诸如定时器系统、夕卜部中断或键盘中断的片上外围设备共享的引脚,当不受其他模块控制时被还原到GPIO ;以及起GPIO作用的引脚。IO引脚10中的每一个具有存储器映射(下面参照图2和3描述)中的指定地址和指定位位置。为了执行效率,IO引脚10被分组成预定义端口(例如端口 A和端口 B),其中每个端口含有预定义数量的IO引脚10和存储器映射中的指定地址。一般而言,每个端口具有一组地址,例如,一个用于数据读取/写入,一个用于控制信号,等等。参照图2,示出了只显示与本发明有关的那些部件的处理器I原理框图。处理器I包括中央处理单元化 山20、位于0 似0内的存储器映射(MM) 30、总线接口 40、解码逻辑电路50、多路器或多路复用器60、10引脚/端口控制器70以及IO引脚10。正如之前所提及,IO引脚10被分组成多个预定义端口,其中每个端口具有存储于MM 30中的唯一地址。在操作中,CPU 20经由CPU总线向丽30发送请求。丽30接收该请求并将该请求传送到规定目标,如图2中所示。也就是说,经由总线接口 40从丽30到解码逻辑电路50。解码逻辑电路50读取数据并解码或重排序数据,并向多路复用器60提供解码的数据连同相关的控制信号。基于控制信号,多路复用器60确定解码的数据是否要被提供到IO控制器70。IO控制器70包括一个或多个寄存器和逻辑电路,以控制IO状态、I/O方向、上拉、使能/禁能,并输出将被提供到一个或多个端口的值。图3是丽30的框图。丽30具有多个存储位置,例如寄存器空间31、RAM 32,EEPROM
33、保留空间34-36以及程序空间37-38。正如本领域技术人员所理解的,MM 30的配置可依赖于用户需求而变化。图4是处理器I的解码逻辑电路50、多路复用器60和IO引脚/端口控制器70的更详细原理图。此实施例中,多个IO引脚10可被映射到三个端口:真实端口 PA和PB以及虚拟端口 PX。这三个端口 PA、PB和PX中的每一个具有存储于CPU20的丽30中的唯一端口地址。虚拟端口 PX包含IO引脚10中的属于端口 PA和PB的全部或部分引脚。指定到端口 PA和PB的IO引脚10被映射到丽30中。类似地,指定到虚拟端口 PX的IO引脚10被映射到MM30中,使得每一个IO引脚10具有MM30中的指定地址和指定位位置。在操作中,当CPU 20发送想要针对虚拟端口 PX的总线请求时,CPU 20访问丽30以确定其是否是有效访问,或者生成最终地址,然后将请求传送到相关的接口总线上。然后经由接口总线(地址、写数据(wdata)、读数据(rdata))将虚拟端口 PX地址请求发送到解码逻辑电路50。解码逻辑电路50解码虚拟端口 PX地址请求,随后将之提供到多路复用器60。多路复用器60将解码的信息组合,并向IO引脚端口控制器70提供组合的信息。根据从多路复用器60和IO引脚端口控制器70接收的信息,IO引脚端口控制器70控制虚拟端口 PX的每个引脚的状态,使得虚拟端口 PX中的每个引脚根据来自CPU 20的指令以及丽30中的虚拟端口定义而发送和接收信号。虚拟端口 PX是可编程的。例如,比如位于丽30或解码逻辑电路50中的虚拟端口控制寄存器可用于动态地选择IO引脚10中的不同引脚,并将所选的IO引脚分配到虚拟端口 PX。如果应用程序需要使用来自例如端口 A和端口 B两者的引脚,则该应用程序需要访问端口 PA和端口 PB两者,导致增加的执行时间和总线负载。如果在端口 PA和PB两者中被访问的IO引脚10都被重新映射到虚拟端口 PX,则应用程序只需访问一个端口,即虚拟端口 PX,使得访问更快,其节省了时间,单一的访问也降低了总线负载。现在参照图5,显示了根据本发明一实施例的具有两个虚拟端口的处理器I的示意功能图。更具体而言,处理器I具有四个预定义端口 PA、PB、PC和ro,以及两个虚拟端口PX 80和PY90。虚拟端口 PX 80包括来自物理端口 PA和PB的IO引脚10 (图5中未示),而虚拟端口 PY 90包括来自物理端口 PC和的IO引脚10。这种情况下,弓丨脚端口 PA/PB/PC/PD的某些IO引脚用于多个功能(例如:SCI 100、IIC 102等)。使用两个虚拟端口 PX80和PY 90来代替预定义端口 PA/PB/PC/PD,使简单的、容易的编码成为可能并节省了引脚访问时间。写虚拟端口 PX80而不是引脚端口 PA、PB能够同时驱动端口 PA、PB两者,因此避免了由相继访问PA和PB而引起的任何噪声和假信号。注意到一个虚拟端口并不需要包括来自一个引脚端口的所有IO引脚。例如,如果虚拟端口 PX 80有8位,可通过重新映射端口 A的高5位和端口 B的低3位来定义虚拟端口 PX80。此外,虚拟端口 PX80和PY90中的IO引脚数量可以依据具体应用而不同。另外,虚拟端口 PX80和/或PY90可以具有比总线宽度更小或更少的引脚;因此如果总线宽度足够大,所有的引脚特别是GPIO引脚可被重新映射到一个连续的虚拟端口;因此引脚的任意组合可被同时访问。图6是具有虚拟端口 X80的处理器I的示意图,该虚拟端口 X80用作CPU20和测试器110之间的接口或允许CPU20和测试器110之间的通信,来代替使用预定义端口 A和B提供这种通信。通过访问虚拟端口 X 80,测试器110能够同时测试来自端口 A和端口 B两者的IO引脚。通过访问虚拟端口 X,从测试器110向CUP20下载启动和测试码将比如果访问端口 A和B(其将需要两个和更多周期)会更快。此外,虚拟端口 X的提供允许端口 A和B的快速、并行测试。为了例示和描述,已提供了本发明优选实施例的描述,但是并不旨在作为详尽的或是将本发明限制到公开的形式。本领域技术人员将会懂得的是:可以对上述实施例做出改变而不脱离发明原理的范围。因此可理解的是:本发明并不限于公开的特殊实施例,而是覆盖了由所附权利要求书定义的本发明的精神和范围内的修改。
权利要求
1.一种处理器,包括: 用于发送和接收数据的多个输入/输出(IO)引脚,其中所述引脚被分组为多个预定义端口 ; 具有多个存储位置的存储器映射,其中所述预定义端口中的每个预定义端口具有存储于所述存储位置之一中的物理地址;以及 具有存储于所述存储位置之一中的虚拟地址的至少一个虚拟端口,其中所述至少一个虚拟端口包括从两个或更多个预定义端口中选择的IO引脚,且其中所述至少一个虚拟端口允许同时访问从两个或更多个预定义端口中所选择的IO引脚。
2.按权利要求1的处理器,其中所述至少一个虚拟端口包括通用IO(GPIO)引脚。
3.按权利要求1的处理器,其中所述至少一个虚拟端口具有不同数量的IO引脚。
4.按权利要求1的处理器,其中所述至少一个虚拟端口具有数量小于所述处理器的总线宽度的IO引脚。
5.一种对处理器编程的方法,其中所述处理器包括:用于发送和接收数据的多个输入/输出(10)引脚,其中所述引脚被分组为多个预定义端口 ;以及 具有多个存储位置的存储器映射,其中所述预定义端口中的每个预定义端口具有存储于所述存储位置之一中的物理地址;并且所述方法包括: 将所述多个IO引脚重新映射到一个或更多个虚拟端口,其中所述一个或更多个虚拟端口中的任意虚拟端口包括从两个或更多个预定义端口中选择的IO引脚,并且所述虚拟端口中的一个IO引脚时应于引脚端口中的一个IO引脚; 其中所述一个或更多个虚拟端口中的每个虚拟端口具有存储于所述存储位置之一中的虚拟地址,且其中所述一个或更多个虚拟端口中的每个虚拟端口允许同时访问从两个或更多个预定义端口中所选择的IO引脚。
6.按权利要求5的方法,其中所述重新映射由计算机可执行程序来执行。
7.按权利要求5的方法,其中所述虚拟端口包括GPIO引脚。
8.一种电子设备,包括: 图形用户界面(GUI);以及 与所述⑶I通信地耦连的处理器,其中所述处理器包括: 用于发送和接收数据的多个输入/输出(IO)引脚,其中所述引脚被分组为多个预定义端口 ; 具有多个存储位置的存储器映射,其中所述预定义端口中的每个预定义端口具有存储于所述存储位置之一中的物理地址;以及 具有存储于所述存储位置之一中的虚拟地址的至少一个虚拟端口,其中所述至少一个虚拟端口包括从两个或更多个预定义端口中选择的IO引脚,且其中所述至少一个虚拟端口允许同时访问从两个或更多个预定义端口中所选择的IO引脚。
9.按权利要求8的电子设备,其中所述至少一个虚拟端口包括通用IO(GPIO)引脚。
全文摘要
具有可编程虚拟端口的处理器,包括用于发送和接收数据的多个输入/输出(IO)引脚。该IO引脚被分组成为多个预定义端口,其中的每一个具有存储于存储器映射的存储位置之一中的物理地址。该IO引脚可被重新映射到一个或多个虚拟端口上。
文档编号G06F15/78GK103092810SQ20111040093
公开日2013年5月8日 申请日期2011年11月2日 优先权日2011年11月2日
发明者聂式祥, 陈志军, 程志宏 申请人:飞思卡尔半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1