基于SparkRoad的数字电路学习(前言)
“硬件描述语言”?
当我还在大学一年级的时候,如果对我发问:为何“硬件”?我多半联想到 CPU、存储器、光刻机这样的高科技,或者是连接线、蓝牙鼠标、硬盘这样的外设,可它们像黑匣子一样让人摸不着头脑,按键一按,主机开始运作了,手指一点,手机内部的芯片就开始响应我的操作了,我明白是声光热力电的物理构成了这些复杂设备,但怎么实现对他们运行的控制?怎样更改它们的性能?我却不甚了解,更不必说用“语言”去描述了。
或许我们可以从那些高科技的弯弯绕跳出来,思考一些简单而有趣的事。
上礼拜四,我正享受着独属于我自己的快乐时光——狂刷刘慈欣的《三体》,大刘在《三体》中构想了一种叫人列计算机的东西。
原文如下:
冯·诺伊曼指着下方巨大的人列回路开始介绍:“陛下,我们把这台计算机命名为‘秦一号’。请看,那里,中心部分,是 CPU,是计算机的核心计算元件.由您最精锐的五个军团构成,对照这张图您可以看到里面的加法器、寄存器、堆栈存贮器……
叫它‘硬盘’,那是由三百万名文化程度较高的人构成,您上次坑儒时把他们留下是对了,他们每个人手中都有一个记录本和笔,负责记录运算结果……
合上书,仍不由得感慨大刘笔下的人列计算机科幻而震撼,人列计算机是由人的动作作为描述语言去模仿现代意义上硬件运行模式,而除去科幻的面子,打开理性的里子,现实中我们则是在尽可能地尝试用硬件的工作去模仿人的思考与行为,而硬件描述语言自然成为了合适的工具。让我们再把目光放远些,在这里,所有撇去人因情感导致的不定因素的理性行为,我们是不是可以都先经过简化提炼,再通过硬件描述语言去描述并将其呈现在开发环境上呢?不妨从一些日常小事入手吧,比如说,我手头上每个礼拜四都例行争取的某平台“疯狂星期四”活动。
按照惯例,某平台都会在星期四为答谢新老顾客,推出一些优惠活动,但是并不是见者有份,而是要拼手速,拼运气!往往那些给力的活动单品还未到饭点就会被一抢而空,打上“售罄”字样,所以,从某鸡官方在星期四的某个时刻按下活动开始键开始,这场“抢答”活动便拉开帷幕。
但试想如果各位作为平台官方估计也会头疼吧,比如对于我最喜欢吃的吮指原味鸡,假设总量限定且只剩下最后一块时,全平台多少顾客都在等着抢,那究竟该花落谁家呢?
对于这个“原味鸡”问题,我们可以尝试用硬件描述语言模拟实现。假设当前店面有顾客 16 人,他们中可能有想要点单原味鸡的人,且顾客必须通过 app 下单拼手速来买下最后这一块美味,率先下单成功的顾客会被记录下信息并报号通知取餐,一旦有顾客率先下单成功,则其余意向购买原味鸡的顾客不能再购买原味鸡。为了保证美味的新鲜口感,如果一小时内没有顾客下单购买原味鸡,则一小时结束后,这最后一块原味鸡将会下架,不可再购买。并且考虑到平台的使用过度,可能不定期产生平台故障,导致购买失败,所有顾客必须要重新返回下单页面抢购。
为了模拟出这样一套流程,我们必然会遇到很多问题,比如顾客误点怎么避免、短时间接受的多个顾客下单信息怎么确认先后顺序、某一顾客下单成功后抢单程序怎么结束、顾客信息怎么通知、平台故障后怎么重新开始抢单程序等等,而这些问题都可以使用硬件编程语言解决,那在这个系列开始之前,不妨让我们先回顾一下相关知识体系和注意事项。
硬件编程语言并不是独立存在的,而算是一种辅助工具,追溯到本科开始的电子专业的学习更能窥知一二。电子专业的知识体系若是一座宫殿,那数字电路技术基础(下文均简称数电)无疑才是构成这座宫殿的几块重要基石,与之相照应的有模拟电路技术基础、VLSI(Very Large Scale Integrate circuit),为之服务的有数字电路实验和一系列的硬件描述语言,但一路走来,尤其在本科与硕士学习对接的过程中,我却倍感知识在数电、数电实验、硬件描述语言三者未能很好地形成交集,一如在数电和数电实验因为知识量大、学习时长短,所以颇为无奈地只能更多专注于偏理论的题目,现实感更强、复杂程度更高的工程问题鞭长莫及,而真正应该动手实践的数电实验受制于书本知识和教授方式,仍停留在 74 系列芯片的使用,与现实使用脱钩,学生无不需要自学渡己,往往其实在过来人眼中很简单的小项目在自学的过程中反而困难无比,将又是劝退一批同学。
鉴于此,接下来这个系列中,并不打算赘述基础的数电相关的理论基础知识,它们如同单词背诵书中打头阵的 abandon ,几乎在每一本相关专业书籍中都有介绍,而尝试以这个“原味鸡”问题为线索,分知识点学习硬件描述语言基础知识,从最基础的变量到模块,从组合逻辑到时序逻辑等等,最后再回过头来实现这样一个流程。并且希望能在 Verimake 的帮助下,基于 SparkRoad 开发板从自己学习的角度实现对数电、数电实验、硬件描述语言尽可能的结合,哪怕是简简单单的小项目,从题目需求到理论设计再到代码编写,最终到实物复现地跑通,对于新手知识体系的搭建和使用也会受益匪浅,以帮助相关专业的同学更轻松地走进这座电子学宫殿。当然对于那些基础知识,也会附注一些经典的路径方便有需要的同学查找温习。
接下来,就让我们开启这个系列的学习之旅吧!