“1%?”
吕辰皱起眉头,“电机控制的精度要求是微米级,1%的误差意味着几十微米的偏移。不行,太大了。”
三人沉默了。
办公室里只有墙上挂钟的“滴答”
声,还有窗外偶尔传来的蝉鸣。
过了好一会儿,吕辰忽然说:“我们换个思路。”
他走到黑板前,把刚才写的公式全都擦掉。
“传统的pId,是用乘法器实现。但乘法器太占面积。我们能不能不用乘法?”
诸葛彪愣了一下:“不用乘法?那怎么实现比例、积分、微分?”
吕辰拿起粉笔,在黑板上画了一个表格。
“用查表。把e(k)当作地址,kpe(k)的结果事先算好,存在Rom里。来一个e(k),直接读Rom,得到kpe(k)。”
钱兰眼睛亮了:“查表式乘法器?”
“对。”
吕辰继续画,“kiΣe(j)也可以查表。Σe(j)是累加和,范围可控,我们可以事先算好不同累加和对应的ki积分值,存在另一片Rom里。”
诸葛彪皱着眉头:“那Rom的容量得有多大?e(k)是字节。两片Rom就是256k。”
吕辰点点头:“所以我们要压缩地址线。e(k)不需要全部16位,可以只取高8位或高1o位。损失一点精度,换来Rom容量指数级下降。”
钱兰在笔记本上飞快地算着:“如果取高8位,地址线8位,深度256。每个结果存16位,就是512字节。三片Rom加起来也就1。5k字节。”
诸葛彪若有所思:“用面积换时间?Rom比乘法器占地方大得多,但度快,一个读周期就能出结果。”
“对。”
吕辰说,“我们现在的瓶颈不是面积。五微米工艺,四十平方毫米,晶体管数量上限大概是五千个。乘法器要用几百个管子,Rom虽然面积大,但一个比特就是一个管子,1。5k字节就是12k比特,也就是一万二千个管子。”
他顿了顿:“但Rom的结构规则,阵列排布,布图密度高。实际占的面积,可能比乘法器大不了多少。”
钱兰补充道:“而且Rom是数字电路,没有模拟电路的那些温漂、失调问题。工艺偏差对Rom的影响也小,只要管子能导通或关断就行。”
诸葛彪想了想,问:“那积分项的累加器怎么办?”
吕辰在黑板上又画了一个框图:“累加器还是要保留。但累加器的输出Σe(j),我们也可以做截断。取高12位,或者高1o位,作为ki-Rom的地址。”
他放下粉笔,看着两人:“这个方案的思路是:用查表代替乘法,用截断压缩地址线,用Rom的大容量换取逻辑的简化。”
诸葛彪沉默了几秒,然后点点头:“可以试试。至少比硬着头皮做乘法器靠谱。”