我开始使用我的第一个商业规模的应用程序,我经常发现自己正在设计,但是停止编码和实现它,因为它似乎是一种巨大的资源利用。当它位于外围设备上时(例如移位寄存器的输出抽头启用),尤其如此。当我考虑通用实现可以获得多大时(tk示例为4k位),情况会变得更糟。最干净的实现会有这些,但在我的脑海中它增加了大量的开销。
我是否可以使用任何一种规则来快速决定设计选项是否值得编码和评估?一般来说,我更少关注触发器的数量,而更多的是关于信号的宽度。这可能只是来自CS背景,其中所有应用程序边界应尽可能小,以防止开销。
答案 0 :(得分:2)
要点1.我们通过玩耍来学习,所以玩!尝试几件事。看看这些工具做了什么。感受一下这个问题。你不会过去这是你不尝试的东西。通常问题不在于你认为的问题。
要点2.您需要为这些决策获取一些背景信息。与FPGA /您的设计的容量相比,为移位寄存器添加一个使能有多大?
要点3.需要考虑两种主要类型的“资源”: - 细胞和时间。
从广义上讲,细胞相对容易。多少次失败?可识别块中的逻辑多少(例如在ALU中:乘法器,加法器等)?通常这是由您尝试的设计定义的。如果没有寄存器,乘法器,加法器等,则无法构建ALU。时间更加微妙,并且总是与细胞交换。你将尝试达到一些性能目标,并认识到那些难以实现的结构是从第1点开始经历的。
需要注意的事项包括:
不要太担心大型总线,如果每个位都是低扇出并且您已为寄存器编制预算。大型总线通常是快速设计中固有的,因为您需要高带宽。它可以更宽广,而不是更高的时钟速度。另一方面,考虑宽总线的控制逻辑,因为它可能有很大的扇出。
不同的工具和目标设备具有不同的特征,因此您必须播放并学习设置规则。总有一个大小与速度(以及这些天与权力')的妥协。您需要了解在每个方向上沿着该曲线移动的因素。这带来了经验。
我是否可以使用任何一种规则来快速决定设计选项是否值得编码和评估?
我能想出的唯一规则是'我有时间吗?不是吗?'
如果有,我会探索。如果不是,我最好只使某事工作。
啊,在截止日期前完成设计的生活!
答案 1 :(得分:1)
这是经验带来的东西。这里有一些指示: