首页 > 灵异恐怖 > 四合院:我是雨水表哥 > 第515章 专芯专用

第515章 专芯专用(1/2)

目录

请关闭浏览器的阅读/畅读/小说模式并且关闭广告屏蔽过滤功能,避免出现内容无法显示或者段落错乱。

1967年10月24日,京城已入深秋。

所里的老槐树,叶子黄了大半,风一吹,哗啦啦往下落,在地上铺了薄薄一层。

主楼顶上的高音喇叭照例在中午播报着最新指示,声音从高处传下来,穿过那些飘落的黄叶,传到右附楼走廊里时已经模糊成一片嗡嗡声,像远处河滩上磨石的声音。

没有人关掉它,也没有人认真在听。

吕辰站在办公室窗前,点了一根烟,慢慢抽着。

键合机的动员会已经过去一个多月。各协作单位的人陆续到位,运动平台、光学系统、材料工艺都在按计划推进。

包康建带着哈工大的人已经在6305厂设备中心搭起了实验台,秦世襄那边显微镜和摄像头的选型也基本定了。

方教授的微波辅助对准方案还在论证,但陈光远说“可以先放一放,主通道走通再说”。

但最核心的问题,对准算法,一直没有定论。

用微程序做图像处理,一张256乘256的图,十几万次操作,把午马机搬出来都扛不住。

用硬件做,怎么设计?架构是什么?数据怎么流动?这些问题,理论组论证了快一个月,方案出了四五版,每一版都被推翻重来。

他把烟掐灭,正准备去自动化控制中心,门被推开了。

诸葛彪站在门口:“陈教授到了,第三会议室。”

“到了?什么时候到的?”

“刚到,钱兰已经过去了。”

吕辰拿起笔记本就往外走,二人来到第三会议室,陈教授已经坐在了主位。

他穿着一件藏蓝色的中山装,领口的扣子系得整整齐齐,头发梳得一丝不苟,花白的鬓角在日光灯下泛着银光。

但吕辰注意到,他眼睑下方有一圈青黑,手指关节处还沾着一点墨渍,大概是熬夜写方案时留下的。

面前摊着厚厚一沓图纸,最上面一张画满了框框和数据流,旁边还放着一个搪瓷缸子,里面泡着茶,茉莉花的香味在会议室里弥漫开来。

钱兰坐在他对面,笔记本已经翻开,手里握着笔,随时准备记。

“陈教授。”吕辰走进去,在钱兰旁边坐下。

陈教授抬起头,看了他一眼,嘴角微微动了一下,算是笑了。

“小吕来了,坐。”他低头看了看表,“设计院的筹备工作、午马机的微程序设计,事情堆在一起,键合机的算法拖了几天。今天咱们把它定下来。”

吕辰心里一喜,设计院在筹备了,这是好事。

陈教授翻开第一张图,那是一张巨大的系统架构图,画满了方框和箭头,用不同颜色的笔标注,每一根线条都画得工工整整。

图纸的边角有几处被橡皮擦过的痕迹,擦得不干净,还留着淡淡的铅笔印,说明改过不止一版。

“键合机对准算法,理论组经过充分论证,总算是敲定了初步方案。”他顿了顿,声音里有一丝疲惫,但更多的是笃定,“我们的方案是,把二维问题变成一维流水线。”

吕辰心里一动,往前倾了倾身子。

陈教授拿起一支铅笔,在图上的空白处画了一个简图。

“如果是用微程序做图像处理,一般的思路是先把整帧图像存到内存里,然后逐像素遍历,做各种计算。这需要大量的存储空间和随机访问。”

他在图旁边写了一行字:整帧存储→逐像素遍历→大量RAM+随机访问。然后划掉了。

“硬件做图像处理的思路完全不同。”

他在

“摄像头输出一行像素,硬件就在这一行上实时处理。不存储整帧图像,只存‘必要的最小状态’。”

钱兰在笔记本上飞快地记着,笔尖沙沙作响。诸葛彪把嘴里那根烟拿下来,放在桌上,身体往前倾,眼睛一眨不眨地盯着图纸。

窗外,一片黄叶被风吹起来,贴在玻璃上,停了两秒,又被吹走了。

陈教授翻开第二张图。那是一张图像预处理的数据流图,左边是一个摄像头图标,右边是一系列方框,箭头从左往右流动。

“第一步,图像预处理。”

他用铅笔指着最左边的图标:“摄像头输出的模拟视频信号,通过ADC转换为数字像素流。假设分辨率256乘256,8位灰度,逐行扫描。每行256个像素,每个像素的灰度值0到255。”

他的手指移到第二个方框。

“用滤波降噪,消除单个像素的随机噪声。硬件实现可以用一个3乘3的滑动窗口寄存器。”

他在图上画了一个3乘3的网格。

“像素流→行缓存→3乘3窗口寄存器→排序网络→输出。行缓存需要存储上一行和上两行的像素,每行256个像素,每个8位,共256乘8乘2等于4096位寄存器。”

吕辰听到这里,举起手。

“陈教授,我插一句。”

陈教授停下笔,看着他。

“您用的是均值滤波?”

“对,均值滤波。”

吕辰摇了摇头:“均值滤波需要乘法器。像素值乘系数,再累加,再除法。乘法器在五微米工艺

他在自己笔记本上画了一个简图,推到桌子中间。

“我建议用中值滤波。中值滤波只需要比较器,不需要乘法器。九个像素的值,找中间那个。比较器比乘法器简单得多,面积小、速度快。”

陈教授盯着那张图看了几秒。

他没有立刻回答。

会议室里安静了两秒,只有日光灯的嗡嗡声。

然后他忽然笑了一下,很轻,像是在对自己说。

“你说得对。我想复杂了。”

他用笔在图纸上改了一笔,把“均值滤波”划掉,写上“中值滤波”。

“排序网络,九个数找中值,用九个比较器搭成排序网络。纯组合逻辑,一个时钟周期就能输出结果。”

钱兰在旁边插了一句:“九个比较器,面积大概多大?”

陈教授想了想:“按你们标准单元库里的比较器来算,八位的,大概几十个门。九个,加上连线,几百个门。可以接受。”

他在笔记本上记了一笔,然后继续往下讲。

“接下来是对比度增强。”

他在图上画了一个新的方框。

“焊盘是金属的,反光强,灰度值高。背景是陶瓷或者塑料的,反光弱,灰度值低。对比度增强就是让这种差异更明显。硬件实现用查找表。输入8位灰度,输出8位灰度。映射关系预先算好,固化在ROM里。”

钱兰立刻接话:“256乘8位的ROM,约2048个存储单元。面积很小,没问题。”

陈教授点了点头,手指移到下一个方框。

“最关键的一步,自适应二值化。”

他在方框旁边写了一行字:把灰度图像变成黑白二值图像(0=背景,1=焊盘)。

“为什么不能用固定阈值?因为光照不均匀。芯片中间和边缘的亮度可能不一样,固定阈值会导致中间焊盘能识别、边缘焊盘被漏掉。”

他抬起头,看着三个人。

“所以要用局部自适应阈值。取当前像素周围N乘N区域的灰度均值,以此为阈值。”

他在图上画了一个示意图,一个像素周围围着八个邻居,组成3乘3的区域。

“局部均值的计算不需要乘法器。九个像素的和可以用加法树实现,除以九可以用移位加法近似。”

诸葛彪开口了:“加法树的速度呢?”

“一个时钟周期。”陈教授说,“九个8位数相加,用三级加法树,每级延迟几十纳秒。一兆赫的时钟周期是一微秒,绰绰有余。”

他在纸上算了一下,然后抬起头。

“预处理部分,到此结束。输入模拟视频,输出二值化像素流。全部硬件实现,每一行像素进来,实时处理,实时输出,没有帧延迟。”

他在图纸上画了一条横线,表示第一部分结束。

然后翻开第三张图。

“第二步,特征提取。”

他的声音提高了一些,铅笔在纸上点了几下。

“这是整个算法中最核心、最巧妙的部分。”

吕辰盯着那张图,心跳微微加速。他知道,这才是真正的难点。

陈教授拿起粉笔,在黑板上画了一行二值化的像素:000111110000。

“这一行像素,连续的白像素从第4列到第8列,长度5。我们可以把它压缩成一个线段:start=4,end=8,length=5。”

他在

“硬件实现非常简单,只需要一个状态机加两个计数器。扫描一行像素,遇到从0变1就记录start,遇到从1变0就记录end,输出一个游程。”

钱兰在笔记本上飞快地记着,嘴里小声重复:“状态机加两个计数器。”

陈教授继续往下讲。

“有了游程,下一步是连通域标记。找出哪些游程属于同一个焊盘。”

他在黑板上画了三行像素的示意图,用红笔把重叠的部分圈出来。

“关键观察:当前行的游程和上一行的游程,如果列范围重叠,就属于同一个连通域。硬件实现只需要存储上一行的游程标记结果,每列一个标记。”

诸葛彪皱起了眉头:“每列一个标记?256列,就是256个标记。每个标记需要多少位?”

陈教授想了想:“最多同时有多少个焊盘在一行里?假设焊盘直径10个像素,一行最多二十几个焊盘。用5位标记就够了。256乘5等于1280位寄存器,可以接受。”

他顿了顿,铅笔在纸上点了一下。

“标记的时候有个麻烦,当前行的游程可能同时和上一行的两个游程重叠,那两个游程属于不同的连通域,但被当前行连在一起了。这叫‘等价标记’。”

他在黑板上画了一个“工”字形的例子,然后停顿了一下。

“这个问题,我想了整整一周。”

他的声音很轻,像是在自言自语。会议室里安静了一瞬,三个人都没有说话。

然后他拿起粉笔,在黑板上写了几个字:优先级编码器。

“用优先级编码器做硬件实现。256个prev_bel并行比较,找出第一个非零的。不需要循环,一个时钟周期搞定。”

钱兰道:“这个巧妙。用空间换时间。”

陈教授点了点头,继续往下讲。

“有了连通域标记,下一步是质心计算。”

本章未完,点击下一页继续阅读。

目录
返回顶部