FPGA层次设计修改稿.pptVIP

  • 6
  • 1
  • 约1.61千字
  • 约 14页
  • 2019-09-23 发布于湖北
  • 举报
7.2采用层次化的设计 数字电路设计或ASIC设计是相当有讲究的,众多的工程师们在他们的工程实践中总结了一些相当宝贵的经验,这些经验经过理论分析和提炼,产生了一些在设计中具有指导意义的原则和方法。在工程设计中遵循这些原则和方法,有利于提高设计效率和设计质量,避免走弯路,减少产品开发周期,加快产品的上市进程。 7.2.1 层次化设计的基本思想和原则 层次化设计是一种好的设计方法。采用层次化设计可读性好,调试方便,有利于设计的重复利用等等。一般的层次化设计结构如图7.2.1所示。 从图中可以看出,用于控制的状态机和数据的处理模块一般是分开的,这样做的好处在于控制结构会显得比较简单,查错也比较方便。数据路径可以专门设计,甚至可以使用一些已经有的模块,提高工作效率。对于综合工具来说,综合工具更容易对这种结构进行优化,使设计简洁高效。而一些特殊结构的功能模块如BlockRAM,器件厂商是以Black Box(黑盒)的形式提供给设计者的,使用时只能看到其端口而不能看到其内部,所以这些功能模块与其他的模块有所不同。 在数据路径的设计中,一些算术逻辑如加法器、减法器等,应该尽可能地资源共享,而且使它们处于同一个层次中或同一个模块中。 设计中注意区分不同逻辑类型的电路(例如:状态机,算术逻辑,随机逻辑),使其处于不同模块中。这样的设计有利于综合工具的优化。 7.2.2 相似逻辑设计在一个层次 一个比较差的层次设计如图7.2.2所示。 图中,从框图A中的寄存器A到框图C中的寄存器C的路径中有3个不同的模块,它们的功能不同,但是框图B中的逻辑可能和A或者C中的逻辑A、C相似。那么将这些逻辑布局在一起,对系统是有好处的。综合工具在综合时会对A、B、C逻辑进行优化。但是,图中模块的边界对于综合工具来说是比较模糊的,综合工具不能很好的对A、B、C三个模块进行优化,也不能提取其中相似的逻辑,所以综合的电路冗余逻辑多,而且速度较慢。 再看一个较好的层次设计,如图7.2.3所示。 这个设计对上面图7.2.2中的设计进行了改进,相似逻辑B和C被放在了一起。这样的层次结构使得综合工具很容易提取相似逻辑,使优化可行而且高效。最终的电路会比较简单,而且速度较快。 7.2.3 使用寄存器作为模块的分界线 有两个模块Module1和Module2,它们的关系如图7.2.4所示。 这样的设计是有问题的。首先,综合工具在综合时必须考虑如何将LogicB和LogicC进行优化。让综合工具来判断设计,然后作出决定是一种不明智的选择。因为综合工具的能力是有限的,很有可能判断错误而使设计失败。这里提醒设计者注意:综合工具只能帮助设计者完成设计的细节,提高工作效率,不要妄想综合工具能为你完成设计。 图7.2. 5是对上面设计的改进。 图7.2.5中的模块Module1和Module2都采用了寄存器作为模块设计的边界。这样的设计是不需要综合工具决定模块的边界的,而且不论Module1中的LogicA是否被修改,LogicB综合的结果始终是一致的,也就是说模块的重用性要好。 * * 顶层设计 包括I/O口设计,原器件例化 状态机设计 (One-Hot状态机) (Binary状态机) 数据路径设计 流水线,多路数据选择 串并转换,数学计算等 累加器,计数器,加法器,减法器,移位寄存 标准总线,各种存储器 Building Blocks等 特殊功能模块 Logiblox RAM IP核等 参数可设置的功能模块 FIFOS FIR滤波器 Block RAMs 特殊工艺的功能模块 图7.2.1 层次结构的模块化设计 图7.2.2不好的层次设计 图7.2. 3 较好的层次设计 图7.2.4 不好的模块界限 图7.2. 5 好的模块界限设计

文档评论(0)

1亿VIP精品文档

相关文档