具体实施方式
下面详细描述本发明的实施例。
所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。当然,它们仅仅为示例,并且目的不在于限制本发明。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。此外,本发明提供了的各种特定的器件和结构的例子,但是本领域普通技术人员可以意识到其他器件的可应用于性和/或其他结构的使用。
本发明提供了一种针对FPGA RTL综合中RAM输出寄存的处理方法。下面,将通过本发明的一个实施例对图1所示的针对FPGA RTL综合中RAM输出寄存的处理方法进行具体描述。如图1所示,本发明所提供的针对FPGA RTL综合中RAM输出寄存的处理方法包括:
一个对RAM输出寄存器完整的处理首先要从对RAM输出结构的分析开始,第一步要确定的就是RAM是否还有寄存器,如步骤a,如没有寄存器则处理结束,如步骤b’;在确定寄存器存在后,第二步判断寄存器是否需要压缩,如步骤b,如果不需要那也可直接结束处理,如步骤c’;如果需要则接着进行第三步,根据是否含有异步置位控制端的寄存结构将RAM输出寄存结构分类:即RAM输出寄存结构含有异步置位控制端和RAM输出寄存结构不含有异步置位控制端两类,如果所述RAM输出寄存结构含有异步置位控制端,则不进行任何操作,处理结束。如果所述RAM输出寄存结构不含有异步置位控制端,则需要对RAM输出寄存结构根据是否含有SR和CE进行进一步分类,并根据不同的结构进行不同的操作,具体如下:
所述不含有异步置位控制端的RAM输出寄存结构包括以下八种结构,分别是:
不含有控制端的寄存器、含有异步清零控制端寄存结构、含有同步清零控制端寄存结构、含有异步清零控制端且使能控制端不同于RAM使能端的寄存结构处、含有同步清零控制端且使能控制端不同于RAM使能端的寄存结构、含有异步清零控制端且使能控制端同于RAM使能端的寄存结构、含有同步清零控制端且使能控制端同于RAM使能端的寄存结构、含有同步置位控制端的寄存结构。
对上述八种结构的识别顺序和所执行的操作如图1所示,具体的,首先判断所述不含有异步置位控制端的RAM输出寄存结构是否有异步清零控制端,如步骤c。如果该寄存器没有异步置位控制端,则处理结束,如步骤d’。如果该寄存器没有异步置位控制端,则根据该寄存器是否具有异步、同步清零控制端、时钟使能端,进行相应处理,如步骤d。
步骤d包括:
d1)判断该寄存器是否具有异步清零控制端,且如果该寄存器具有异步清零控制端,则执行第一处理。
第一处理包括:
继续判定是否包含使能控制端,如果没有,则判定结构为含有异步清零控制端寄存结构FDC,需进行如图2所示处理:
原来的FDC的D引脚改为接VCC,即信号为全“1”,FDC的输出引脚Q改为接到与Qnet相连;
增加与逻辑门,所述与逻辑门的两个输入分别来源于RAM的引脚输出和Qnet引线,与逻辑门的输出连接到原FDC的Q引脚;
RAM的工作模式改为同步读,先读。
此步处理完成后,所有针对FPGA RTL综合中RAM输出寄存的处理结束。
如果所述不含有异步置位控制端含有异步清零控制端的RAM输出寄存结构含有使能控制端,则根据使能控制端与RAM使能端是否相同分为:含有异步清零控制端且使能控制端不同于RAM使能端的寄存结构和含有异步清零控制端且使能控制端同于RAM使能端的寄存结构两种寄存结构,分别对两种结构进行如下处理:
对含有异步清零控制端且时钟使能控制端不同于RAM使能端的寄存结构,进行如图4所示处理:
把原RAM单端口结构改为双端口结构,原来的单端口RAM的端口作为第一端口PortA,并且修改为只有写数据、没有读的结构,新增的端口定义为第二端口PortB,第二端口为只读数据、没有写的结构,将引脚接到到新端口上,工作模式改为同步写并且先写模式;增加新的控制端ENB,新控制端来源于时钟使能控制端,工作模式为同步读并且先读模式;
将原来的寄存器的D引脚接VCC,Q引脚Qnet相连接;
增加与逻辑门,两个输入分别来源于RAM的引脚和Qnet引脚,与逻辑门的输出连接到原FDC的Q引脚。
此步处理完成后,所有针对FPGA RTL综合中RAM输出寄存的处理结束。
对含有异步清零控制端且时钟使能控制端同于RAM使能端的寄存结构,进行如图6所示处理:
将原来的寄存器的D引脚接VCC,Q引脚连接Qne引线t;
增加与逻辑门,两个输入分别接RAM的引脚和Qnet引线,与逻辑门的输出连接到原FDC的Q引脚;
RAM增加EN引脚,并且连接到寄存器的时钟使能控制端;
RAM的工作模式改为同步读并且先读。
此步处理完成后,所有针对FPGA RTL综合中RAM输出寄存的处理结束。
d2)如果该寄存器不具有异步清零控制端,则判断该寄存器是否同时具有同步清零控制端和时钟使能端,且如果该寄存器同时具有同步清零控制端和时钟使能端,则执行第二处理。
第二处理包括:
如果所述不含有异步置位控制端含有同步清零控制端的RAM输出寄存结构含有使能控制端,则根据使能控制端与RAM使能端是否相同分为:含有同步清零控制端且使能控制端不同于RAM使能端的寄存结构和含有同步清零控制端且使能控制端同于RAM使能端的寄存结构两种寄存结构,分别对两种结构进行如下处理:
对含有同步清零控制端且时钟使能控制端不同于RAM使能端的寄存结构,进行如图5处理:
将原来的寄存器改为不含有同步清零控制端且时钟使能控制端不同于RAM使能端的寄存结构FDE,FDE输出连接到Qnet2引线上,时钟使能控制端连接到Qnet1引线;
增加或逻辑门,输入为原寄存器的时钟使能控制端和清零控制端连接的信号,输出连接到ctl引脚上;
增加新的寄存器,新寄存器的D引脚连接到ctl引脚上,Q引脚连接到Qnet1引线;
增加多路选择器,数据输入分别来源于RAM的D0引脚和新FDE的Q引脚和Qnet2引线,输出连接到原寄存器的Q引脚;
RAM的直接模式改为同步读并且先读模式,增加SSR引脚,并且接地。
此步处理完成后,所有针对FPGA RTL综合中RAM输出寄存的处理结束。
对含有同步清零控制端且时钟使能控制端同于RAM使能端的寄存结构,进行如图7所示处理:
将原来的寄存器变为FDE,FDE的Q引脚连接到Qnet2引线上,时钟使能控制端连接到Qnet1引线;
增加或逻辑门,两个输入分别为原寄存器的时钟使能控制端和清零控制端连接的信号,输出连接到新的ctl引脚上;
增加新的寄存器,新寄存器的D连接到ctl引脚上,Q引脚与Qnet1引线相连;
增加多路选择器,数据输入分别来源于RAM的D0引脚和新FDE的Q引脚,输出连接到原寄存器的Q引脚;
RAM的直接模式改为同步读并且先读模式,增加SSR引脚,并且连接到寄存器的清零控制端。
此步处理完成后,所有针对FPGA RTL综合中RAM输出寄存的处理结束。
d3)如果该寄存器不同时具有同步清零控制端和时钟使能端,则判断该寄存器是否具有同步清零控制端,且如果该寄存器具有同步清零控制端,则执行第三处理。
第三处理包括:
继续判定所述不含有异步置位控制端的RAM输出寄存结构是否含有同步清零控制端,如果有,则继续判定是否包含使能控制端,如果没有,则判断结构为含有同步清零控制端寄存结构FDR,需进行如图3所示处理:
删除FDR;
为RAM增加SSR引脚;
RAM的模式改为同步读,先读。
处理完成后,所述含有同步清零控制端寄存结构FDC变为不含有控制端的寄存器FD,则相应进行如下处理:
删除FD;
RAM的模式改为同步读,先读此步处理完成后,所有针对FPGARTL综合中RAM输出寄存的处理结束。
d4)如果该寄存器不具有同步清零控制端,则判断该寄存器是否具有时钟使能端,且如果该寄存器具有时钟使能端,则进行第四处理,如果该寄存器不具有时钟使能端,则进行该寄存器不含控制端的处理。
第四处理包括:
删除具有时钟使能端的寄存器;
为RAM增加SSR引脚,设置RAM的SRVAL值为RAM_data_width{1};
将RAM的模式改为同步读,先读;
处理完成后,所述含有同步清零控制端寄存结构FDC变为不含有控制端的寄存器FD,则相应进行如下处理:
删除FD;
RAM的模式改为同步读,先读。
此步处理完成后,所有针对FPGA RTL综合中RAM输出寄存的处理结束。
与现有技术相比,本发明具有以下优点:通过对RAM输出连接的各种寄存结构进行分类处理,解决了RAM在FPGA芯片中,采用FPGA专有宏单元RAMB实现的问题,处理效果达到和Synplify相当的水平。
虽然关于示例实施例及其优点已经详细说明,应当理解在不脱离本发明的精神和所附权利要求限定的保护范围的情况下,可以对这些实施例进行各种变化、替换和修改。对于其他例子,本领域的普通技术人员应当容易理解在保持本发明保护范围内的同时,工艺步骤的次序可以变化。
此外,本发明的应用范围不局限于说明书中描述的特定实施例的工艺、机构、制造、物质组成、手段、方法及步骤。从本发明的公开内容,作为本领域的普通技术人员将容易地理解,对于目前已存在或者以后即将开发出的工艺、机构、制造、物质组成、手段、方法或步骤,其中它们执行与本发明描述的对应实施例大体相同的功能或者获得大体相同的结果,依照本发明可以对它们进行应用。因此,本发明所附权利要求旨在将这些工艺、机构、制造、物质组成、手段、方法或步骤包含在其保护范围内。