寄存器的空间结构的制作方法

文档序号:6621860阅读:391来源:国知局
寄存器的空间结构的制作方法
【专利摘要】本发明提出了一种寄存器的空间结构,在寄存器的空间内保存有控制器,所述寄存器的空间内还保存有控制器列表,所述控制器列表记录各个控制器的基地址和逻辑ID值。当驱动软件在FPGA上初始化时即可读取到所述控制器列表中的各个控制器的基地址信息和逻辑ID值。这样,就不需要在驱动软件的源代码中定义每个控制器的基地址和逻辑ID值。当控制器的基地址变更或在寄存器中新增控制器时,也不需要同步像现有技术那样去修改驱动软件的源代码。
【专利说明】寄存器的空间结构

【技术领域】
[0001]本发明涉及一种寄存器的空间结构,尤其是逻辑功能数字集成电路的寄存器的空间结构。

【背景技术】
[0002]FPGA (Field — Programmable Gate Array,现场可编程门阵列)是可以根据各自需要而自行构造逻辑功能的数字集成电路。从软件驱动的角度看,是按照指定规则操作FPGA提供的寄存器来实现相应的逻辑功能,比如i2c(Inter — Integrated Circuit,内部集成电路)、spi (Serial Peripheral Interface,串行外设接口)、md1 (Management DataInput/Output,管理数据输入输出)、或10(Input/0utput,输入输出)扩展端口等逻辑功能。也就是FPGA编程实现了类似处理器芯片中各逻辑功能模块的控制器。驱动软件通过操作寄存器中的控制器来实现所需要的逻辑功能。
[0003]驱动软件看到的是实现了不同逻辑功能的控制器的寄存器上下文。寄存器地址的定位为FPGA的基地址+控制器的基地址+控制器内偏移地址。FPGA的基地址是分配给FPGA芯片的寄存器地址空间首地址;控制器的基地址是FPGA内部实现时分配给某控制器(即某个逻辑功能模块)的寄存器空间的首地址,该地址是相对FPGA基地址的偏移值;控制器内偏移地址是控制器内部实现时,寄存器相对于控制器基地址的偏移值。
[0004]当前驱动软件的实现,通常在源代码定义控制器的基地址。控制器的基地址常常可能会出现变更,例如:1)所扩展端口规格增加;2)所扩展逻辑功能的数目增加。当控制器的基地址变更时,驱动软件需要同步作修改,因为驱动软件版本需要和FPGA版本配套才能正确完成功能,否则,会出现不匹配的错误控制操作。而且,如果一个系列的多个产品,尤其不同产品的寄存器中的基地址不同,则驱动软件的源代码也会出现不同,一套相同源代码的驱动软件无法应用于不同产品上,这给软件开发带来难度。


【发明内容】

[0005]本发明需解决的技术问题是提供一种当控制器的基地址发生变更或新增控制器后,驱动软件不用修改也可支持使用的寄存器的空间结构。
[0006]为解决上述的技术问题,本发明设计了一种寄存器的空间结构,在寄存器的空间内保存有控制器,所述寄存器的空间内还保存有控制器列表,所述控制器列表记录各个控制器的基地址和逻辑ID值。
[0007]作为本发明进一步改进,所述控制器列表保存在所述寄存器的空间的末尾。
[0008]作为本发明进一步改进,所述寄存器的空间的开始处保存有控制器列表寻址控制器。
[0009]作为本发明进一步改进,所述控制器列表寻址控制器记录所述控制器列表的基地址和逻辑ID值。
[0010]作为本发明进一步改进,所述相邻的控制器之间不设保留空间。
[0011]作为本发明进一步改进,所述控制器列表的各个控制器的基地址的排列顺序是递减的。
[0012]本发明在寄存器中增加一控制器列表,该控制器列表记录了各个控制器的基地址和逻辑ID值,驱动软件在FPGA上初始化时即可读取到该控制器列表中的各个控制器的基地址信息和逻辑ID值。这样,就不需要在驱动软件的源代码中定义每个控制器的基地址和逻辑ID值。当控制器的基地址变更或在寄存器中新增控制器时,也不需要同步像现有技术那样去修改驱动软件的源代码。由于驱动软件的源代码不需要定义各个控制器的基地址和逻辑ID值相关信息,因而,不需要现有技术因为不同产品中的控制器的基地址和逻辑ID值不同而研发不同的驱动软件,一套驱动软件可以应用于多个产品,为驱动软件开发带来便利。

【专利附图】

【附图说明】
[0013]图1是本发明实施例寄存器的空间以及控制器列表的结构图。

【具体实施方式】
[0014]为了使本领域相关技术人员更好地理解本发明的技术方案,下面将结合附图和本发明实施方式,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本发明一部分实施方式,而不是全部的实施方式。
[0015]本发明提供了一种寄存器的空间结构,其中新增控制器列表,所述控制器列表记录各个控制器的基地址和逻辑ID值。当驱动软件在FPGA上初始化时即可读取到该控制器列表的各个控制器的基地址信息和逻辑ID值,驱动软件获取到各个控制器的基地址和逻辑ID值,即可操作寄存器中的控制器来实现所需要的逻辑功能。
[0016]如图1所示,为本发明寄存器的空间结构的一种实施例,在本实施例中,寄存器的空间内保存有各个控制器,如=FPGA版本信息控制器、I2C控制器1、I2C控制器2、MD1控制器I等等。各个控制器即为实现不同功能的逻辑功能模块,操作各个控制器即可实现相应的逻辑功能。在本实施例中,相邻的控制器之间不设保留空间,而是紧密排列地保存在寄存器的空间内,因而不会造成寄存器空间的浪费,可多节省下未使用的空间用于扩展新的控制器。
[0017]请再参考图1所示,在本实施例中,在寄存器的空间的末尾处保存控制器列表。该控制器列表记录以上各个控制器的基地址和逻辑ID值,如记录FPGA版本信息控制器的基地址为8和逻辑ID值为1、I2C控制器I的基地址为24和逻辑ID值为2、等等。所述控制器列表的各条记录是按照基地址的排列顺序是递减的,即自基地址1024处递减的方向保存各个控制器的基地址和逻辑ID值。本发明各个控制器的基地址和逻辑ID值根据开发人员的设计而定,以上列举的基地址和逻辑ID值只是举例说明而不限于此分配设计。
[0018]控制器列表也是一种逻辑功能模块,因而,在所述寄存器的空间的开始处保存有控制器列表寻址控制器。该控制器列表寻址控制器记录所述控制器列表的基地址和逻辑ID值。在本实施例中,所述控制器列表的基地址为1024,逻辑ID值可随意定义为一个无法识别的值,如0x12345678。当驱动软件首先读取寄存器空间,即可得到根据控制器列表寻址控制器的记录信息得到控制器列表的基地址,碰到无法识别的逻辑ID值,跳过不处理。
[0019]本发明在寄存器中增加一控制器列表,各个控制器的基地址信息和逻辑ID值可以从这个控制器列表获取到,因而,不需要在驱动软件的源代码中去定义,因而在新增控制器和现有的控制器基地址变更时,相应匹配修改控制器列表即可,不需修改驱动软件的源代码;同时,各个控制器的基地址也不需要固定分配,可根据情况相应地调整。由于驱动软件的源代码不需要定义各个控制器的基地址和逻辑ID值相关信息,因而,不需要因为不同产品中的控制器的基地址和逻辑ID值不同而研发不同的驱动软件,一套驱动软件可以应用于多个产品。
[0020]本发明寄存器的空间结构不仅适用于FPGA中,还可应用于CPLD (ComplexProgrammable Logic Device,复杂可编程逻辑器件)中,以及其他逻辑器件中。
[0021]以上仅表达了本发明的一种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【权利要求】
1.一种寄存器的空间结构,在寄存器的空间内保存有控制器,其特征在于,所述寄存器的空间内还保存有控制器列表,所述控制器列表记录各个控制器的基地址和逻辑ID值。
2.根据权利要求1所述寄存器的空间结构,其特征在于,所述控制器列表保存在所述寄存器的空间的末尾。
3.根据权利要求2所述寄存器的空间结构,其特征在于,所述寄存器的空间的开始处保存有控制器列表寻址控制器。
4.根据权利要求3所述寄存器的空间结构,其特征在于,所述控制器列表寻址控制器记录所述控制器列表的基地址和逻辑ID值。
5.根据权利要求1所述寄存器的空间结构,其特征在于,所述相邻的控制器之间不设保留空间。
6.根据权利要求1所述寄存器的空间结构,其特征在于,所述控制器列表按照基地址递减的顺序保存各个控制器的基地址和逻辑ID值。
【文档编号】G06F9/30GK104133659SQ201410367752
【公开日】2014年11月5日 申请日期:2014年7月30日 优先权日:2014年7月30日
【发明者】钟捷群, 刘驰 申请人:上海斐讯数据通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1