作者HuangJC (吹笛牧童)
看板ask-why
标题[斧正] 关於数位电子的一些问题
时间Sat Jul 18 15:43:50 2009
一开始先离题至庄子秋水篇
http://www.epochtimes.com/b5/1/9/12/c5703.htm
文中提到:
以 道 观 之 , 物 无 贵 贱 ﹔ 以 物 观 之 , 自 贵 而 相 贱 ﹔ 以 俗 观 之 ,
贵 贱 不 在 己 。 以 差 观 之 , 因 其 所 大 而 大 之 , 则 万 物 莫 不 大 ﹔
因 其 所 小 而 小 之 , 则 万 物 莫 不 小
很多题目就是这样
你一直针对它小的地方去谈,去举证,那它就小
一直针对它大的地方去谈,那它就大
一切都是人为的解释;其实题目未必成立咧
通常我们还会扯一个'不只我认为,比如XXX也这麽认为'
那我们再来谈统计或取样偏差吧..
------
数位观念中的 0 或 1 ,表面上可以无误传达
而只要 0 或 1 的位数够高,便是传整张 CD 的音乐也不会失误
我可以说这个对,也可以说错
模仿秋水篇的语气可以说:以其对而对之,则万物莫不对;以其错而错之,则万物莫不错 XD
重点不是在吵架,也不要扯到人身攻击
而是去了解说对的人是在'对'哪一个部份;反之又错哪一部份
要不然不长篇大论哪讲得完?
以下的段落,全有错误的地方;就看要不要挑骨头
数位其实是一种人为的认定,在自然界中并不存在
在 5V 系统中,我们可以认定 2.5V 以上为 1,以下为0
但在 10V 系统中,5V 以上为1,以下为0
所以你根本不能给定我一个电压就说它是 1 还是 0
限缩范围只讨论 5V 系统时,为了良好的杂讯免疫边界
我们可能说 3V以上为 1,2V以下为0;而 3~2V之间为不确定,不应该出现
如果加个史密特触发器,我可以让这个不确定区间跟随上一个值
在实作上,至少有 TTL 及 CMOS 两大晶片群,它们认定的电压是不同的(同样运作5V内时)
所以 TTL 的输出脚直接接到 CMOS 的输入脚会根本无法传递讯号
TTL 说 1,CMOS 可能听到'不确定'
http://forum.phy.ntnu.edu.tw/demolab/phpBB/viewtopic.php?topic=13205
所以数位一定可以无误吗?(除掉打雷闪电的杂讯外)
不..反过来说,不好好处理,数位一定会失误
所有的数位讯号能不能被传递,还是要回到类比领域来讨论
到这里会发觉,和神经元及化学传递,也是有所同有所不同(不管我怎麽说都可以鞭 XD)
那我就不下结论了,大家自己去领会想用什麽字眼
不过人类在设计电子世界时模仿很多自然界的东西
所以尺寸有大小,精粗不同;但真的很像
TTL 不能直接接 CMOS,那怎麽办?
中间要有准位调整线路,偏压
把 TTL 的 1 (2.2V以上),转换成 CMOS 可以接受的 1 (70%*Vcc=3.5V)
这中间是类比工程师的工作,而数位逻辑的处理是数位工程师的工作
在台湾,类比工程师薪水高很多
再来,我们提到电路设计的一些问题
逻辑概念中,我们知道一切逻辑运算可用 and,or,not 来代表
如果我能做出这三种元件,那麽就可以实现数位逻辑
在电子讯号中做出,就可以做逻辑电路
在油压中做出,可以做油压逻辑
在光学讯号中做出,可以做光学逻辑
当然我可以用转换元件全部转到电子来做
比如 C= A & B 这样的逻辑,在光学逻辑里是说 A,B 两点都有光,则 C 射出光
那我可以在 A,B 两点都摆光敏元件,在 C 摆 LED 发光模组
中间的逻辑全用电来做;不过我是说有基础光学元件後,可以更直接不经光电转换来做
油压逻辑以前我是学过的,真的不必用油压及电子转换
全部用油压就做出 and,or,not
但现在这还是主流吗?一切都是成本的考量
就好像汽车方向盘的传动,一直都是直接机械传动
後来终於推出把方向盘角度转成电讯号,直接数学处理,再把结果传至前轮转向的方式
(这种车一但电瓶没电就转不动方向盘,因为没有直接机械连结)
问题都不在可不可以,而在划不划算
油压及光学可以转至电讯处理(也许因为最划算)
那电怎麽办?电就非得做出来不可了
我们真的用三种元件来做吗?可以说对,也可以说不对
其实这三种元件都可以用 NAND(not and) 来组合
NAND: C= !(A&B)
NOT: C= !(A&A) = !A 意指把两脚输入并接在一起
AND: C= !NAND(A,B) = A & B 先做出 NOT,再把 NOT 和 NAND 混合运用
OR: C= NAND(!A,!B) = A | B 先把 A,B 都取 NOT,再把结果放进 NAND
简单画个表列出所有组合就能证明,这就是 OR 逻辑
因此,and,or,not 通通可以用 NAND 组合
我只要设计出 NAND,就三种都能组合出来了
在实务上是有这样做的,硬体线路的设计可以像副程式一样去兜
而我的最基本元件是 NAND,这样可以缩短设计的时间,但未必是最快的电路
一些更特别的逻辑可以直接被设计出来
比如N接点输入的 AND,Multi AND
Z = AND(A,B,C,D,E) 一个直接五点输入的 AND 线路 ----方法 1
= A & ( B & ( C & ( D & E ) ) ) ----方法 2
如果我不想直接设计五端点输入,就得用两端点输入做四次
而如果处理一个 and 运算要一秒,这结果要四秒才出来
= ((A & B) & (C & D)) & E ----方法 3
设计方法不只一种,这种时间可以重叠,这个三秒就出来了
但 Multi-AND 是说,我一秒就要同时处理完多端点 AND 运算呀 XD
以上在科班是基本概念
而我的意思是:
1.我们不一定用最划算的逻辑在设计,有时只为了精简基本元件
全都用 NAND 就设计全部,这在实务上是存在的
2.如果你嫌这样的'不划算'实在太夸张,那麽从头打造一个基本元件是可以的
试想像 1024 个端点输入的 AND 逻辑,全串接在一起要 1023 秒(方法2)
但它也是 2 的十次方,可以用(方法 3) 10秒做出来
更甚至你可以用方法 1,在 1秒内做出来
(至於怎麽做,我不必给线路吧..)
以上顺便回了很久以前的问题
电子世界真的不是用'最划算'在设计的
或者说,着眼的最划算不一样
有人要求执行速度最快
有人要求使用元件数最少
有人要求基本元件种类最少,让工程师脑袋可以最轻松
当只用一种 NAND 基本元件时,我们可以把整个 IC 里用阵列的方式,塞满 NAND
然後我们只计较塞入几个 NAND (一千个?一万个?一亿个?)
以及 NAND 间的线如何连接;这的确简化了开发 IC 的脑力
後来我们把这些线在出厂时全部连上
然後 IC 的使用者(开发端工程师)再把不想要的线烧断,留下想用的线
这动作就是烧程式,且是只能烧一次的程式(烧断的线连不回)
所以基本元件种类少,还是有点用处的;可以在程式不确认时就先出货
而基本元件种类多的话(比如订做 Multi-AND) ,可以有较好的效率
就连 and,or,not 都曾经不想做三个不同的基本元件,而只用 NAND 组出来
那麽有什麽浪费是不可以的?
觉得可以就去做,没人买就被市场淘汰
如此而已
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.59.179.152