适用于不同类型FPGA电路编程的列地址分配器电路
技术领域
本发明涉及现场可编程门阵列(FPGA)技术领域,更具体地是指一种适用于不同类型FPGA电路编程的列地址分配器电路。
背景技术
现场可编程门阵列(FPGA)具有的用户可编程性和低开发成本等特性使它成为实现现代电路和系统的一种重要技术。与专用集成电路(Application Specific Integrated Circuits,简称ASIC)相比,FPGA的研发成本低和开发周期短等特性,使它成为实现现代数字电路和系统的一种重要核心技术,其市场占有额也在逐年增加。作为FPGA中用于编程的列地址分配器电路,其设计在很大程度上直接影响到FPGA的编程速度和效率。
一般来说,FPGA的编程地址分为三个部分:类地址、块地址和位线地址。类地址表示的是配置的功能类的不同,例如输入输出模块(IOB)、逻辑模块(LB)和存储器模块(RB)等的不同;块地址表示的是同一功能类中块的不同,例如逻辑模块(LB)在编程时分为14个列块或者24个列块,而存储器模块(RB)在编程时分为2个或者4个列块;位线地址表示的是一个列块中编程位线的不同地址,编程位线地址是编程过程中最低的地址,例如一个逻辑模块(LB)中可能有十几到几十个不等的位线,那么就需要位线地址来区别它们。
在编程过程中通常需要分别对FPGA中逐类、逐块、逐位线的编程,即编程的顺序先编程第一个类直至该类编程结束,再对第二个类编程直至该类编程结束,一直到对最后一个类编程直至该类编程结束。也就是对编程时所需要列地址进行有规律的输出,而不同的FPGA的类、块和位线的情形也不同,随着FPGA规模和复杂度的发展,会不断出现新的类,也就将出现新的块和位线。
图1、图2、图3表示的是现有技术中列地址分配器电路的结构示意图。其中,图1是现有技术中列地址分配器电路的结构示意图,0001、0002、0003表示的是传统型类地址跳转模块,0001是对FPGA中第一个类编程的模块,0002是对第二个类编程的模块,0003是对第三个类编程的模块,根据实际FPGA的不同,需要编程的类的数量也不同,但是每个类地址跳转模块的结构都是相近但不相同的;0004是一组(C+M+N)个并行的多路选择器电路,它们的输入是每一个类地址跳转模块的输出,根据多路选择器的控制信号,即地址的<C+M+N:M+N+1>位来判断当前多路选择器的哪个输入有效,除了各个类地址跳转模块的输出外,0004还有一组(C+M+N)位的gnd信号输入,以保证在各个类均不编程时对输出信号置零;0005是一个两输入的或门,作用是在frendreg或clrmem信号有效时输出高电平;0006是一组(C+M+N)个并行的双路选择器,作用是在控制端为“0”时输出(C+M+N)位的far信号,在控制端为“1”时输出0004的输出信号;0007是一组(C+M+N)个并行的双路选择器,作用是在控制端为“0”时输出(C+M+N)位的0006的输出信号,在控制端为“1”时输出(C+M+N)位的cfgdata输入信号;0008是一组(C+M+N)个D触发器,它们均是时钟上升沿触发,异步复位信号的,D端输入是0007的(C+M+N)位输出,Q端输出是(C+M+N)位far输出信号;0009是一组(C+M+N)位的加1加法器,作用是将(C+M+N)位far信号加1,输出(C+M+N)位的mnr信号,0009是全组合逻辑。
图2是现有技术中类地址跳转模块的结构示意图,0101、0102、0103是块地址跳转模块,它们的输入是一组N位的far地址信号,一组(C+M+N)位mnr信号,输出是一组(C+M+N)位地址信号;0101是对本类中第一个块电路编程的地址跳转模块;0102是对本类中第二个块电路编程的地址跳转模块;0103是对本类中第三个块电路编程的地址跳转模块;根据不同的类中块电路的数量的不同,块地址跳转模块的数量也不同,因为跳转的地址不同,所以每一个块地址跳转模块都是结构相似且不相同的;0104是一组(C+M+N)个并行的多路选择器电路,它们的输入是每一个块地址跳转模块的输出,根据多路选择器的控制信号,即地址的<M+N:N+1>位来判断当前多路选择器的哪个输入有效,0104的输出是一组(C+M+N)位地址信号。
图3是现有技术中块地址跳转模块的结构示意图,0201是地址控制电路,作用是当输入的N位far地址等于该块地址的边界值时,输出为1,否则为0;0202是一组(C+M+N)位的双路选择器电路,控制信号为0时,输出信号输出(C+M+N)位mnr信号,控制信号为1时,输出信号时提前预置的跳转地址,即下一个块的起始地址。
由此可见,现有技术中列地址分配器电路使用了大量的多路选择器电路,由于多路选择器电路会占用大量的版图面积和时间延时,特别是多输入多路选择器电路,因此现有技术当应用于大规模多模块的FPGA时候,会占用很大的版图面积并导致关键路径上的延时增加,从而导致工作频率的下降。
发明内容
(一)要解决的技术问题
有鉴于此,本发明的主要目的在于提供一种适用于不同类型FPGA电路编程的列地址分配器电路,以解决大规模多模块FPGA配置电路中列地址分配器电路版图大延时长的问题,达到节约面积提高工作频率的目的。
(二)技术方案
为达到上述目的,本发明提供了一种适用于不同类型FPGA电路编程的列地址分配器电路,该电路包括列末位信号与清零信号控制电路2001、far信号与地址跳转信号选择电路2002、类地址跳转信号选择电路2003、cfgdata信号与地址跳转信号选择电路2004、far信号输出保持电路2005、mnr信号产生电路2006、第一类地址跳转模块2100和第二类地址跳转模块2200。
上述方案中,所述列末位信号与清零信号控制电路2001是一个或门,其输入是frendreg信号和clrmem信号,用于对frendreg信号和clrmem信号做或运算后,将运算结果通过输出端输出给far信号与地址跳转信号选择电路2002的控制端。当frendreg信号和clrmem信号都为低时,所述列末位信号与清零信号控制电路2001向far信号与地址跳转信号选择电路2002输出低电平,当frendreg信号或者clrmem信号为高电平的时候,所述列末位信号与清零信号控制电路2001向far信号与地址跳转信号选择电路2002输出高电平。
上述方案中,所述far信号与地址跳转信号选择电路2002是一组<C+M+N>个二选一选择器,控制端全部连接于列末位信号与清零信号控制电路2001的输出端,0输入端口分别接<C+M+N>位的far信号,1输入端口分别接<C+M+N>位的类地址跳转信号选择电路2003的输出,输出端输出<C+M+N>信号到cfgdata信号与地址跳转信号选择电路2004的0输入端。当控制信号frendreg和clrmem都为0时,所述far信号与地址跳转信号选择电路2002选择<C+M+N>位的far信号输出至cfgdata信号与地址跳转信号选择电路2004,以保持当前的配置地址;当控制信号frendreg和clrmem都为1时,所述far信号与地址跳转信号选择电路2002选择<C+M+N>位的类地址跳转信号选择电路2003输入的信号输出至cfgdata信号与地址跳转信号选择电路2004,以跳转新的地址。
上述方案中,所述类地址跳转信号选择电路2003是一组<C+M+N>个多路选择器,控制端连接far信号的<C+M+N:M+N+1>位,输出端输出<C+M+N>位的信号连接far信号与地址跳转信号选择电路2002的1输入端,输入端分别接收<C+M+N>位的gnd信号、<C+M+N>位的第一类地址跳转模块2100的输出信号、<C+M+N>位的第二类地址跳转模块2200的输出信号。所述类地址跳转信号选择电路2003用于选择类电路跳转模块,负责选择的是控制信号<C+M+N:M+N+1>far,当控制信号为0的时候,选择第1类电路的跳转模块的输出作为类地址跳转信号选择电路2003的输出;当控制信号为x的时候,选择第x+1类电路的跳转模块的输出作为类地址跳转信号选择电路2003的输出;当控制信号的范围超过类电路地址的范围时,选择gnd信号作为类地址跳转信号选择电路2003的输出。
上述方案中,所述cfgdata信号与地址跳转信号选择电路2004是一组<C+M+N>个二选一选择器,控制端全部连接于faren信号,0输入端连接于far信号与地址跳转信号选择电路2002的<C+M+N>位输出,1输入端连接于<C+M+N>位的cfgdata信号,输出<C+M+N>位信号至far信号输出保持电路2005的输入端。当控制信号faren有效时,所述cfgdata信号与地址跳转信号选择电路2004读入<C+M+N>位的cfadata信号,从中读取新的配置起始地址;当faren无效时,所述cfgdata信号与地址跳转信号选择电路2004输出当前的地址跳转信号至far信号输出保持电路2005的输入端。
上述方案中,所述far信号输出保持电路2005是一组<C+M+N>个D触发器,用于保存<C+M+N>位的far信号,其时钟输入端连接clk信号,复位端连接rstn信号,D输入端连接cfgdata信号与地址跳转信号选择电路2004的<C+M+N>位输出端,Q输出端输出<C+M+N>的far信号至mnr信号产生电路2006。
上述方案中,所述mnr信号产生电路2006是一个加法器,用于将far信号加1产生mnr信号,输入是<C+M+N>位的far信号,输出是<C+M+N>位的mnr信号。
上述方案中,所述第一类地址跳转模块2100和所述第二类地址跳转模块2200都是类地址跳转模块,其作用以及结构相似,分别负责不同的类地址的跳转。
上述方案中,所述第一类地址跳转模块2100包括:地址译码电路2101、第一块地址跳转模块2102、第二块地址跳转模块2106,对应于第一块地址跳转模块2102的第一传输门电路2110、对应于第二块地址跳转模块2106的第二传输门电路2111和gnd信号传输门2112。
上述方案中,所述第一类地址跳转模块2100的输入是位数为<M+N:1>位的far信号和位数为<C+M+N>位的mnr信号,该far信号是来自far信号输出保持电路2005的输出端,该mnr信号是来自mnr信号产生电路2006的输出端,输出<C+M+N>位地址信号至地址跳转信号选择电路2003,作为类地址跳转信号选择电路2003的输入之一。
上述方案中,所述第一类地址跳转模块2100用于根据位数为<M+N:1>的far信号进行判断,当far信号中的<M+N:N+1>位选择了某一块地址跳转模块的工作范围时,该块地址跳转模块的输出被连接至第一类地址跳转模块2100的输出端,否则则被切断,当<N:1>位的far信号在块地址跳转模块的工作范围时,块地址跳转模块让<C+M+N>位的mnr信号通过,即让far地址加1跳转,当<N:1>位的far信号在块地址跳转模块的跳转边界时,该块地址跳转模块输出下一块地址跳转模块的起始地址,实现far地址的跳变。
上述方案中,在第一类地址跳转模块2100中,地址译码电路2101的输入是<M+N:N+1>位的far地址信号,输出的是多个控制信号,控制第一传输门电路2110、第二传输门电路2111、gnd信号传输门2112的开关,当输入地址在某一块地址跳转模块工作范围时,地址译码电路2101输出信号,将该块对应的传输门打开,其它的传输门被关闭,当输入地址均不在各个块地址跳转模块的工作范围时,地址译码电路2101输出信号将gnd信号传输门2112打开,将gnd信号接至公共输出线。
上述方案中,在第一类地址跳转模块2100中,第一传输门电路2110、第二传输门电路2111、gnd信号传输门2112分别是一组<C+M+N>位的传输门,它们的输出端连接在一起,作为第一类地址跳转模块2100的输出,gnd信号传输门2112的输入是一组<C+M+N>位的gnd信号,第一传输门电路2110和第二传输门电路2111的输入分别是第一块地址跳转模块2102和第二块地址跳转模块2106的输出,用于控制第一块地址跳转模块2102和第二块地址跳转模块2106输出信号是否连接到第一类地址跳转模块2100的输入端上。
上述方案中,在第一类地址跳转模块2100中,第一块地址跳转模块2102和第二块地址跳转模块2106的作用相同,分别是不同块的地址跳转模块,第一块地址跳转模块2102和第二块地址跳转模块2106的数量取决于第一类地址跳转模块2100中块的数量。
上述方案中,在所述第一块地址跳转模块2102中,其输入端为<N:1>位的far信号和<C+M+N>位的mnr信号,输出端为<C+M+N>位的地址信号,用于当<N:1>位的far信号在本块地址跳转模块的工作范围时,使<C+M+N>位的mnr信号作为输出,实现块地址的加1跳转,当<N:1>位的far信号在本块地址跳转模块的跳转边界时,输出下一块的起始编程地址,实现块地址的块之间的跳转。
上述方案中,所述第一块地址跳转模块2102包括地址控制电路2103、两输入的或门2104和两输入的与门2105,其中:地址控制电路2103用于当输入的N位far地址等于该块地址的边界值时,输出a为1,b为0,否则a为0,b为1;两输入的或门2104的一个输入端是地址控制电路2103的a输出信号,一个输入端是mnr的一个位线;两输入的与门2105的一个输入端是地址控制电路2103的b输出信号,一个输入端是mnr的一个位线。
(三)有益效果
从上述技术方案可以看出,本发明具有以下有益效果:
1、利用本发明,由于在类地址跳转模块中使用了传输门作为块地址跳转模块输出的控制器而不是用多路选择器,所以节省了版图面积,减少了延迟时间,解决大规模多模块FPGA配置电路中列地址分配器电路版图大延时长的问题,达到节约面积提高工作频率的目的。
2、利用本发明,由于在块地址跳转模块中使用了或门作为数值为“1”的地址位的传输控制而不是用多路选择器,所以节省了版图面积,减少了延迟时间,解决大规模多模块FPGA配置电路中列地址分配器电路版图大延时长的问题,达到节约面积提高工作频率的目的。
3、利用本发明,由于在块地址跳转模块中使用了与门作为数值为“0”的地址位的传输控制而不是用多路选择器,所以节省了版图面积,减少了延迟时间,解决大规模多模块FPGA配置电路中列地址分配器电路版图大延时长的问题,达到节约面积提高工作频率的目的。
4、利用本发明,由于在块地址跳转模块中使用了与门和或门作为跳转地址的控制器,所以便于不同跳转地址的设计。
附图说明
图1是现有技术中列地址分配器电路的结构示意图;
图2是现有技术中类地址跳转模块的结构示意图;
图3是现有技术中块地址跳转模块的结构示意图;
图4是依照本发明实施例的适用于不同类型FPGA电路编程的列地址分配器电路的示意图;
图5为依照本发明实施例的适用于不同类型FPGA电路编程的列地址分配器电路中输入输出端口的示意图;
图6、图7、图8是依照本发明实施例的适用于不同类型FPGA电路编程的列地址分配器电路的示意图,其中,图7是图6的子图,图8是图7的子图。
具体实施方式
本发明提供了一种适用于不同类型FPGA电路编程的列地址分配器电路,为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对特定类型FPGA例子的类和块即编程位线进行描述。
图4是依照本发明实施例的适用于不同类型FPGA电路编程的列地址分配器电路的示意图,该电路包括:列末位信号与清零信号控制电路2001、far信号与地址跳转信号选择电路2002、类地址跳转信号选择电路2003、cfgdata信号与地址跳转信号选择电路2004、far信号输出保持电路2005、mnr信号产生电路2006、第一类地址跳转模块2100和第二类地址跳转模块2200。
其中,列末位信号与清零信号控制电路2001是一个或门,其输入是frendreg信号和clrmem信号,且frendreg信号和clrmem信号是图5所示端口分布图上的输入信号,列末位信号与清零信号控制电路2001对frendreg信号和clrmem信号做或运算后,通过输出端输出给far信号与地址跳转信号选择电路2002的控制端。列末位信号与清零信号控制电路2001用于当frendreg信号和clrmem信号都为低时,向far信号与地址跳转信号选择电路2002输出低电平,当frendreg信号或者clrmem信号为高电平的时候,向far信号与地址跳转信号选择电路2002输出高电平。
far信号与地址跳转信号选择电路2002是一组<C+M+N>个二选一选择器,控制端全部连接于列末位信号与清零信号控制电路2001的输出端,0输入端口分别接<C+M+N>位的far信号,1输入端口分别接<C+M+N>位的类地址跳转信号选择电路2003的输出,输出端输出<C+M+N>信号到cfgdata信号与地址跳转信号选择电路2004的0输入端。far信号与地址跳转信号选择电路2002用于当控制信号为0时,即frendreg和clrmem信号都为0时,选择<C+M+N>位的far信号输出至cfgdata信号与地址跳转信号选择电路2004,以保持当前的配置地址,而当控制信号为1时,选择<C+M+N>位的类地址跳转信号选择电路2003输入的信号输出至cfgdata信号与地址跳转信号选择电路2004,以跳转新的地址。
cfgdata信号与地址跳转信号选择电路2004是一组<C+M+N>个二选一选择器,控制端全部连接于faren信号,0输入端连接于far信号与地址跳转信号选择电路2002的<C+M+N>位输出,1输入端连接于<C+M+N>位的cfgdata信号,输出<C+M+N>位信号至far信号输出保持电路2005的输入端,其中faren信号和cfgdata是图5所示端口分布图上的输入信号。cfgdata信号与地址跳转信号选择电路2004用于当控制信号faren有效时,读入<C+M+N>位的cfadata信号,从中读取新的配置起始地址,当faren无效时,输出当前的地址跳转信号至far信号输出保持电路2005的输入端。
far信号输出保持电路2005是一组<C+M+N>个D触发器,其时钟输入端连接clk信号,复位端连接rstn信号,其中clk信号和rstn信号是图5所示端口分布图上的输入信号,D输入端连接cfgdata信号与地址跳转信号选择电路2004的<C+M+N>位输出端,Q输出端输出<C+M+N>的far信号至mnr信号产生电路2006,far信号为图5所示端口分布图上的输出信号。far信号输出保持电路2005用于保存<C+M+N>位的far信号。
mnr信号产生电路2006是一个加法器,输入是<C+M+N>位的far信号,输出是<C+M+N>位的mnr信号,mnr信号产生电路2006用于将far信号加1产生mnr信号。
类地址跳转信号选择电路2003是一组<C+M+N>个多路选择器,控制端连接far信号的<C+M+N:M+N+1>位,输出端输出<C+M+N>位的信号连接far信号与地址跳转信号选择电路2002的1输入端,输入端分别接收<C+M+N>位的gnd信号、<C+M+N>位的第一类地址跳转模块2100的输出信号、<C+M+N>位的第二类地址跳转模块2200的输出信号等。类地址跳转信号选择电路2003用于选择类电路跳转模块,负责选择的是控制信号<C+M+N:M+N+1>far,当控制信号为0的时候,选择第1类电路的跳转模块的输出作为类地址跳转信号选择电路2003的输出,当控制信号为x的时候,选择第(x+1)类电路的跳转模块的输出作为类地址跳转信号选择电路2003的输出,当控制信号的范围超过类电路地址的范围时,选择gnd信号作为类地址跳转信号选择电路2003的输出。
第一类地址跳转模块2100和第二类地址跳转模块2200都是类地址跳转模块,它们的作用以及结构相似,分别负责不同的类地址的跳转;以第一类地址跳转模块2100为例,其包括:地址译码电路2101、第一块地址跳转模块2102、第二块地址跳转模块2106,对应于第一块地址跳转模块2102的第一传输门电路2110、对应于第二块地址跳转模块2106的第二传输门电路2111、gnd信号传输门2112。
第一类地址跳转模块2100的输入是位数为<M+N:1>位的far信号和位数为<C+M+N>位的mnr信号,该far信号是来自far信号输出保持电路2005的输出端,该mnr信号是来自mnr信号产生电路2006的输出端,输出<C+M+N>位地址信号至地址跳转信号选择电路2003,作为类地址跳转信号选择电路2003的输入之一。第一类地址跳转模块2100用于根据位数为<M+N:1>的far信号进行判断,当far信号中的<M+N:N+1>位选择了某一块地址跳转模块的工作范围时,该块地址跳转模块的输出被连接至第一类地址跳转模块2100的输出端,否则则被切断,当<N:1>位的far信号在块地址跳转模块的工作范围时,块地址跳转模块让<C+M+N>位的mnr信号通过,即让far地址加1跳转,当<N:1>位的far信号在块地址跳转模块的跳转边界时,该块地址跳转模块输出下一块地址跳转模块的起始地址,实现far地址的跳变。
在第一类地址跳转模块2100中,地址译码电路2101的输入是<M+N:N+1>位的far地址信号,输出的是多个控制信号,控制第一传输门电路2110、第二传输门电路2111、gnd信号传输门2112等的开关,当输入地址在某一块地址跳转模块工作范围时,地址译码电路2101输出信号,将该块对应的传输门打开,其它的传输门被关闭,当输入地址均不在各个块地址跳转模块的工作范围时,地址译码电路2101输出信号将gnd信号传输门2112打开,将gnd信号接至公共输出线。
在第一类地址跳转模块2100中,第一传输门电路2110、第二传输门电路2111、gnd信号传输门2112分别是一组<C+M+N>位的传输门,它们的输出端连接在一起,作为第一类地址跳转模块2100的输出,gnd信号传输门2112的输入是一组<C+M+N>位的gnd信号,第一传输门电路2110和第二传输门电路2111等的输入分别是第一块地址跳转模块2102和第二块地址跳转模块2106等的输出,用于控制第一块地址跳转模块2102和第二块地址跳转模块2106等输出信号是否连接到第一类地址跳转模块2100的输入端上。
在第一类地址跳转模块2100中,第一块地址跳转模块2102和第二块地址跳转模块2106的作用类似,分别是不同块的地址跳转模块,第一块地址跳转模块2102和第二块地址跳转模块2106的数量取决于第一类地址跳转模块2100中块的数量。
以第一块地址跳转模块2102为例,第一块地址跳转模块2102的输入端为<N:1>位的far信号和<C+M+N>位的mnr信号,输出端为<C+M+N>位的地址信号,用于当<N:1>位的far信号在本块地址跳转模块的工作范围时,第一块地址跳转模块2102使<C+M+N>位的mnr信号作为输出,实现块地址的加1跳转,当<N:1>位的far信号在本块地址跳转模块的跳转边界时,输出下一块的起始编程地址,实现块地址的块之间的跳转。
在第一块地址跳转模块2102中,地址控制电路2103用于当输入的N位far地址等于该块地址的边界值时,输出a为1,b为0,否则a为0,b为1。两输入的或门2104的一个输入端是地址控制电路2103的a输出信号,一个输入端是mnr的一个位线。两输入的与门2105的一个输入端是地址控制电路2103的b输出信号,一个输入端是mnr的一个位线。
每一位mnr地址线都对应一个或门或者与门,规律是当本块地址跳转模块编程结束时输出端所要跳转的地址中,为1的位对应的是或门,为0的对应的是与门,与门或门的顺序和数量由所要跳转的地址决定,例如本块地址跳转模块编程结束时候要跳转到111100001111地址位,那么从高位到低位依次的与门和或门的顺序是:或门,或门,或门,或门,与门,与门,与门,与门,或门,或门,或门,或门。这样,当地址在本块地址跳转模块工作范围内跳转时,a为0,b为1,本模块的输出信号等于属于信号,即<C+M+N>位的mnr信号,因为mnr信号时far信号加1的结果,从而起到地址位加1跳转的作用,当地址跳转至本模块地址跳转模块工作范围的边界值时候,a为1,b为0,输出信号等于相应门的a或b的输入值,起到地址跳转的作用。新型设计用与门和或门替代传统的双路选择器电路,版图面积大小相近,延时减少。
图5是依照本发明实施例的适用于不同类型FPGA电路编程的列地址分配器电路中输入输出端口的示意图,输入端口包括:<C+M+N>位的cfgdata信号,它包含了芯片的配置起始地址;一位的faren信号,faren有效时配置电路读入配置起始地址;一位的frendreg信号,当配置数据输入到一个编程列时其有效,电路在其有效时跳转新的配置地址;一位的clrmem信号,当芯片内部配置单元清零时其有效,电路在其有效时跳转新的配置地址;一位clk时钟信号;一位rstn复位信号。输出端口包括<C+M+N>位的far信号,它是配置电路输出的配置地址。对于传统型和新型的配置电路,输入输出端口是相同的。
当然,它们仅仅为示例,并且目的不在于限制本发明。此外,本发明可以在不同例子中重复参考数字和/或字母,但是本领域普通技术人员可以意识到该列地址分配器电路的结构可以灵活地应用于其他类型FPGA的结构。
实施例一
图6、图7、图8是依照本发明第一个实施例的列地址分配器电路的结构示意图。图7是图6的子图,图8是图7的子图。
图6中,1001、1002、1003表示的是新型类地址跳转模块,1001是对FPGA中第一个类编程的模块,1002是对第二个类编程的模块,1003是对第三个类编程的模块,根据实际FPGA的不同,需要编程的类的数量也不同,但是每个类地址跳转模块的结构都是相近且不相同的;1004是一组<C+M+N>个并行的多路选择器电路,它们的输入是每一个类地址跳转模块的输出,根据多路选择器的控制信号,即地址的<C+M+N:M+N+1>位来判断当前多路选择器的哪个输入有效,除了各个类地址跳转模块的输出外,1004还有一组<C+M+N>位的gnd信号输入,以保证在各个类均不编程时对输出信号置零;1005是一个两输入的或门,作用是在frendreg或clrmem信号有效时输出高电平;1006是一组<C+M+N>个并行的双路选择器,作用是在控制端为“0”时输出<C+M+N>位的far信号,在控制端为“1”时输出1004的输出信号;1007是一组<C+M+N>个并行的双路选择器,作用是在控制端为“0”时输出<C+M+N>位的1006的输出信号,在控制端为“1”时输出<C+M+N>位的cfgdata输入信号;1008是一组<C+M+N>个D触发器,它们均是时钟上升沿触发,异步复位信号的,D端输入是0007的<C+M+N>位输出,Q端输出是<C+M+N>位far输出信号;1009是一组<C+M+N>位的加1加法器,作用是将<C+M+N>位far信号加1,输出<C+M+N>位的mnr信号,1009是全组合逻辑。对于输入数少于4的多路选择器,版图面积和时间延时的损失并不突出,所以继续使用多路选择器电路。
图7是新型类地址跳转模块结构图,1101、1102、1103、1104、1105是新型块地址跳转模块,它们的输入是一组N位的far地址信号,一组<C+M+N>位mnr信号,输出是一组<C+M+N>位地址信号;0101是对本类中第一个块电路编程的地址跳转模块;0102是对本类中第二个块电路编程的地址跳转模块;0103是对本类中第三个块电路编程的地址跳转模块;根据不同的类中块电路的数量的不同,块地址跳转模块的数量也不同,因为跳转的地址不同,所以每一个块地址跳转模块都是结构相似且不相同的;1106、1107、1108、1109、1110是与1101、1102、1103、1104、1105分别对应的传输门,作用是当对应的块地址跳转模块工作时打开传输门,否则则关闭传输门,1106、1107、1108、1109、1110的输出信号连接在一起,同一时刻只有一个门会打开工作;1111是一个传输门,输入是gnd信号,输出连接至1106、1107、1108、1109、1110的共同输出,作用是当本类所有块地址跳转模块均不工作时候打开,将gnd信号接至共同输出端,而当本类中有块地址跳转模块工作时则关闭该传输门;1112是一个地址译码电路,输入是<M+N:N+1>位的far地址信号,输出端是多个控制信号,控制1106、1107、1108、1109、1110、1111等传输门的开关,当输入地址在某一块地址跳转模块工作范围时,1112输出信号,将该块对应的传输门打开,其它的传输门被关闭,当输入地址均不在各个块地址跳转模块的工作范围时,1112输出信号将1111传输门打开,将gnd信号接至公共输出线;新型类地址跳转模块用K个传输门和一组地址译码器替换了原来的K输入多路选择器,节省了版图面积和延时时间。
图8是新型块地址跳转模块结构图,1201是地址控制电路,作用是当输入的N位far地址等于该块地址的边界值时,输出a为1,b为0,否则a为0,b为1;1202是一个两输入的或门,一个输入端是1201的a输出信号,一个输入端是mnr的一个位线;1203是一个两输入的与门,一个输入端是1201的b输出信号,一个输入端是mnr的一个位线;每一位mnr地址线都对应一个或门或者与门,规律是当本块地址跳转模块编程结束时输出端所要跳转的地址中,为1的位对应的是或门,为0的对应的是与门,与门或门的顺序和数量由所要跳转的地址决定;例如本块地址跳转模块编程结束时候要跳转到111100001111地址位,那么从高位到低位依次的与门和或门的顺序是:或门,或门,或门,或门,与门,与门,与门,与门,或门,或门,或门,或门;这样,当地址在本块地址跳转模块工作范围内跳转时,a为0,b为1,本模块的输出信号等于属于信号,即<C+M+N>位的mnr信号,因为mnr信号时far信号加1的结果,从而起到地址位加1跳转的作用,当地址跳转至本模块地址跳转模块工作范围的边界值时候,a为1,b为0,输出信号等于相应门的a或b的输入值,起到地址跳转的作用。新型设计用与门和或门替代传统的双路选择器电路,版图面积大小相近,延时减少。
实施例二
在实施例二中,该列地址分配器电路将用于的FPGA拥有3个类电路:输入输出模块(IOB),逻辑模块(LB)和全局时钟模块(GB)。输入输出模块(IOB)有两个电路块,每个电路块中拥有19个编程位线;逻辑模块(LB)有14个电路块,每个电路块有26个编程位线;全局时钟模块(GB)有3个电路块,每个电路块有8个编程位线。
本实施例中FPGA拥有3个类电路,减1后为2,二进制表达为’b10,最少为2位二进制表达,即C=2;每个类电路中含有的块电路数量不同,最多为14,减1后为13,即’b1101,最少为4位二进制表达,即M=4;每一个类电路的块的位线数量不同,最大值为26,减1为25,二进制表达为’b11001,最少为5位二进制表达,即N=5;表达式MX(line32)表示FPGA中第X个需要编程的功能类中块的数量,第1个需要编程的功能类(IOB)中有2个块,即M1=2,第2个需要编程的功能类(LB)中有14个块,即M2=14,第3个需要编程的功能类(GB)中有3个块,即M3=3;表达式NX(line29)表示FPGA中第X个需要编程的功能类中每一个块的位线的数量减1,第1个需要编程的功能类(IOB)中每一个块的位线数量为19,减1后为18,即N1=18,第2个需要编程的功能类(LB)中每一个块的位线的数量为26,减1后为25,即N2=25,第3个需要编程的功能类(GB)每一个块的位线数量为8,减1后为7,即N3=7。将所有变量带入本发明提供的列地址分配器电路的Verilog代码中即可以得到附录中具体实施例电路的Verilog代码,为了与本发明提供的列地址分配器电路的Verilog代码的行数有区别,实施例电路的Verilog代码从81行开始计数。
Line1描述的是电路模型名称以及输入输出端口列表;
Line2至line7是定义电路的输入输出端口,包括一组(C+M+N)位输入端口,5个一位输入端口,一组(C+M+N)位输出端口;
Line9至line11是定义寄存器变量far和线变量mnr以及两者之间的关系:mnr变量等于far变量加1,mnr变量将用于实现电路输出连续的地址;
Line13描述电路的触发方式:时钟信号clk上升沿触发和复位信号rstn的异步触发;
Line14和line77等begin,end语句为语法需要,限定语句的有效范围;
Line15,line16语句表示,如果复位信号rstn高有效时,电路输出信号far将被复位为0;如果否,并且电路载入使能信号faren有效,电路输出信号far将从外部输入的配置数据cfgdata中读取一组地址;
如果否,line23和line25将发挥作用,表明如果列终止信号frendreg或者存储器清零信号clrmem有效,此时整个编程(清零)的一列已经结束,电路将会判断下一个编程(清零)列的列地址,电路将对输出信号的高C位(高C位为电路功能类的地址,属于第一级的地址)进行检测判断:
若高C位为0(line26),表明电路正在编程(清零)列为第一个要编程(清零)的功能类,然后再判断电路的中间M位(line28),
中间M位为每一个功能类中功能块的地址,属于第二级地址;以line29为例,若中间M位为全0,即M(0),那么电路正在输出的地址是在第一个功能类下面的第一个块中,电路将会判断输出地址的低N位(低N位表示的是每一个块中位线的地址,是第三级地址,也是最低级的地址),以确定电路是否已经将该块全部编程(清零)完毕,语句far[C+M+N:1]<=(far[N:1]==N(N1))?′b_C(0)_M(1)_N(0):mnr的意义是,如果输出地址的低N位是第一个功能类中每个块的编程位线数量,表明该块已经编程结束,输出地址将跳转至第一个类的第二个块的起始地址′b_C(0)_M(1)_N(0),如果输出地址的低N位不是第一个功能类中每个块的编程位线数量,表明该块未编程结束,输出地址将加1,即输出下一相邻的编程位线。Line30至line32与line29含义相近,即在第一个类的不同块间依次跳转;line33的含义是,如果中间M位地址表明当前的块为第一个类的最后一个块,那么对输出地址的跳转将与同类中其他的块不同:若该块未编程(清零)结束,则输出地址加1,即输出相邻的位线地址,若该块编程结束,也就表明第一类编程(清零)结束,那么列地址分配器电路输出的下一地址就应该是下一个类电路编程(清零的起始地址),即line33中的b_C(1)_M(0)_N(0)。
Line37至line46一段代码的作用与line26至line35段代码作用类似,表示对电路第二个类电路的编程(清零)过程中输出地址的跳转情况。
Line59省略号省略的代码部分为对第三个类,第四个类......一直到倒数第二个类的编程。如果要编程(清零)的FPGA只有三个类,那么省略号部分就没有任何代码。
Line61至line70表示对最后一个类电路的编程(清零)时候输出地址的跳转,与line26至line35段类似,不同的是在对该类最后一个块电路编程(清零)结束时,即line68,输出地址将跳转至全零的复位状态,即’b_C(0)_M(0)_N(0),表明编程(清零)过程结束。
Line81描述的是电路模型名称far以及输入输出端口列表;
Line82至line87是定义电路的输入输出端口,包括一组11位输入端口,5个一位输入端口,一组11位输出端口;
Line89至line91是定义寄存器变量far和线变量mnr以及两者之间的关系:mnr变量等于far变量加1,mnr变量将用于实现电路输出连续的地址;
Line93描述电路的触发方式:时钟信号clk上升沿触发和复位信号rstn的异步触发;
Line94和line157等begin,end语句为语法需要,限定语句的有效范围;
Line95,line96语句表示,如果复位信号rstn高有效时,电路输出信号far将被复位为0;如果否,并且电路载入使能信号faren有效,电路输出信号far将从外部输入的配置数据cfgdata中读取一组地址;
如果否,line103和line105将发挥作用,表明如果列终止信号frendreg或者存储器清零信号clrmem有效,此时整个编程(清零)的一列已经结束,电路将会判断下一个编程(清零)列的列地址,电路将对输出信号的高2位(高2位为电路功能类的地址,属于第一级的地址)进行检测判断:
若高2位为0(line106),表明电路正在编程(清零)列为第一个要编程(清零)的功能类,然后再判断电路的中间4位(line108),
中间4位为每一个功能类中功能块的地址,属于第二级地址;以line109为例,若中间4位为全0,即4’b0000,那么电路正在输出的地址是在第一个功能类下面的第一个块中,电路将会判断输出地址的低5位(低5位表示的是每一个块中位线的地址,是第三级地址,也是最低级的地址),以确定电路是否已经将该块全部编程(清零)完毕,语句far[11:1]<=(far[5:1]==5’b10110)?11′b00_0001_00000:mnr的意义是,如果输出地址的低N位是第一个功能类中每个块的编程位线数量,表明该块已经编程结束,输出地址将跳转至第一个类的第二个块的起始地址11′b00_0001_00000,如果输出地址的低N位不是第一个功能类中每个块的编程位线数量,表明该块未编程结束,输出地址将加1,即输出下一相邻的编程位线。line110的含义是,如果中间4位地址表明当前的块为第一个类的最后一个块,那么对输出地址的跳转将与同类中其他的块不同:若该块未编程(清零)结束,则输出地址加1,即输出相邻的位线地址,若该块编程结束,也就表明第一类编程(清零)结束,那么列地址分配器电路输出的下一地址就应该是下一个类电路编程(清零的起始地址),即line110中的11′b01000000000。
Line113至line130一段代码的作用与line106至line111段代码作用类似,表示对电路第二个类电路(LB)的编程(清零)过程中输出地址的跳转情况。
Line32至line138表示对最后一个类电路的编程(清零)时候输出地址的跳转,与line10至line111段类似,不同的是在对该类最后一个块电路编程(清零)结束时,即line137,输出地址将跳转至全零的复位状态,即11′b00000000000,表明编程(清零)过程结束。
图4所示列地址分配器电路的Verilog代码:
实施例二中列地址分配器电路的Verilog代码:
此外,本发明的应用范围不局限于说明书中描述的特定实施例的FPGA类型。从本发明的公开内容,作为本领域的普通技术人员将容易地理解,对于目前已存在或者以后即将开发出的FPGA类型,其中它们执行与本发明描述的对应实施例大体相同的功能或者获得大体相同的结果,依照本发明可以对它们进行应用。因此,本发明所附权利要求旨在将这些类型的FPGA编程电路的列地址分配器电路包含在其保护范围内。