自打老僧加菲说书《IP 核芯志》之后,不知又经历了几度劫数 。正所谓“沧海桑田” ,世间已经不知出了几多自称“茄菲”、“力口菲”和“加菲新”的说书之人了。连虚无镇里、小木庵对面都盖起了一座长春观,号称是全真嫡传,至于其真伪无人考据。
话头回到老和尚那里,加菲本以为自己功德圆满,退归本寺后面勤练“秋风功”非止一日。说书的收入渐渐变薄,似乎在提醒着什么。奈何这个比丘忒是愚钝,竟然茫然不觉。只气得雷音寺的斗战胜佛抓耳挠腮:“……我愚蠢的弟弟啊……”。于是大神趁着净坛使者下凡的机会,捎话给老和尚叫他重新出山、渡人渡己。神仙喜欢玄虚,因此采用了托梦的方法。期间自有一番盛况,不需细讲。加菲得到神谕曰:
“前者汝说核芯志,百喻经中三重楼。欲得学业大圆满,明日门前问黄冠。”
老僧到藏经阁借得《百喻经》 ,翻到《三重楼喻》一看,上面写道:
“往昔之世,有富愚人,痴无所知。到余富家,见三重楼,高广严丽,轩敞疏朗,心生渴仰,即作是念:我有财钱,不灭于彼,云何顷来而不造作如是之楼?即唤木匠而问其曰:‘解作彼家端正舍不?’木匠答言:‘是我所作。’即便语言:‘今可为我造楼如彼。’
是时,木匠即便经地垒墼作楼。愚人见其垒墼作舍,犹怀疑惑,不能了知,而问之言:‘欲作何等?’木匠答言:‘作三重屋。’愚人复言:‘我不欲作下二重之屋,先可为我作最上屋。’木匠答言:‘无有是事!何有不作最下重屋,而得造彼第二之屋?不造第二,云何得造第三重屋?’愚人固言:‘我今不用下二重屋,必可为我作最上者。’时人闻已,便生怪笑,咸作此言:‘何有不造下第一屋而得上者?’
譬如世尊四辈弟子,不能精勤修敬三宝,懒惰懈怠,欲求道果,而作是言:‘我今不用余下三果,唯求得彼阿罗汉果。’亦为时人之所嗤笑,如彼愚者,等无有异。”
加菲思忖道:“这不就是空中楼阁的典故吗?老衲明白了:我佛慈悲,是感觉我的《IP核芯志》(简称《核芯志》)过于高深,不适合入门之人。好吧,这就等待明天的机缘,与之合作讲解简单入门的知识者也。”
花开两朵,各表一枝。
且说小木庵降神事件发生的前几天,在沿着忘情川通往子虚镇的小路上,来了一位骑驴的老道。但见这位道长身材修长、鼻直口方、目若朗星,身穿蓝色的道袍,虽然已经显得有些年头了,但是却还干净贴身。最引人注目的地方是他身后背了一把一尺长的小宝剑。一般宝剑应该是三尺到四尺的样子,这位老道的佩剑却不到寻常之剑的一半长度。俗话说“一寸长一寸强,一寸短一寸险”,可见此人不仅是武林高手,更是高手中的高手。
当然,上面都是行家看到的门道,普通群众自然不知。就在这些“不知”的情况下,道长在长春观前下了驴子,走上台阶进入观中。至于如何通报、如何挂单 等俗事流程,就不一一细说了。据传此人是观中主持师傅降阶而迎的,是武当山来的高手,道号穆子。
几日无事,无非来往辩经论道,说些《道德》和《南华》。直到降神的次日,穆子道长心血来潮,信步走到了小木庵与长春观之间的大路之上。道长想起当年加菲和尚说书的盛况,不禁吟诗一首:
“世人都晓核心好,唯有语言忘记了。巧妙结构何所在,面条一堆变C了!”
道士本是无心之语,却引起了一段说书界的佳话。
正所谓“说者无心,听者有意”,这边一个胖大比丘面有愠色。此僧非是他人,正是按照神谕来寻有缘之人的加菲和尚。老僧正欲发作,又想起神谕上面的话:“黄冠,黄冠莫非就印了此人?”
于是他上前合十,答言道:“善哉善哉,老衲这厢有礼了!刚才闻得仙长之言,似乎对在下的《核芯志》颇有不满啊?”
“非也非也,《核芯志》是一本好书,是教导众人如何打通任督二脉的不二之选。只是实践缺了基本功的教导,施主们没有了正规语言运用的培训。《核芯志》也就成了镜花水月了。”
加菲寻思这正和神谕的前两句,于是问道:“仙长的意思是需要讲一讲Verilog吗?”
“然!”
“仙长不嫌弃,我俩合说一场如何?”
“那自然好!这回书就叫《Verilog传奇》吧!”
“明日仙长可有空闲,到我寮房一同筹划?”
“甚佳,不见不散!”
穆子道长也未料到师傅交给他的任务如此简单就能做到,甚是欣喜若狂。一夜无话,待到第二天天明,即往老加的住处去了。穆子与加菲经过一番讨论,得到了九章的说书结构。据后院小沙弥偷来的草稿显示,书的主要内容是下面这样的。
第一章,用来介绍Verilog语言的基本知识,包括发展历史、设计流程、时序分析、芯片结构和可综合性等。这里的重点是帮大家建立Verilog语言与其他学科之间的联系。另外,还需要帮助大家掌握设计数字逻辑系统需要考量的有关内容。
第二章,除了介绍IEEE有关Verilog语言的标准体系及非RTL级的设计之外,还重点说明了常量、变量及结构化模块的内容,是学习Verilog语言的基础。
第三、四章,分别介绍了用assign和always定义的组合逻辑电路的描述方法。其中包含各种运算符操作的写法,以及条件、多选的描述。最后,以多路选择器为例,说明了如何分析一个组合逻辑电路系统。
第五章,介绍了时序逻辑电路系统的Verilog语言描述方法,包括D触发器及D触发器链的写法。本章还介绍了如何拆分组合电路以适应系统操作时间要求的概念。在此基础上,介绍了三种系统速度与面积平衡的方法:并行化设计、流水线设计与时分复用设计。
第六章,结合工程实践,介绍了经常遇到的若干问题,其中包括复位系统设计、可变移位操作、有限状态机设计、多时钟系统处理及循环操作的处理。
第七章,介绍了与IP核设计有关的灵活编程问题。其中涉及任务与函数的写法、利用宏定义方法改变系统参数、利用参数方法改变系统参数及生成块方法改变系统结构。最后综合运用这几种方法,给出了一个简单的IP核——数字分频系统——设计的例子。
第八章,说明了Verilog语言中不可综合的部分。其一为仿真所需的数据类型、复杂运算和并行块设计;其二包含预编译命令;其三为系统任务与函数。本章还介绍了测试向量的概念及其编写方法,以及Verilog语言与其他语言接口的问题。
第九章,以“直接数字式频率合成器”系统为例,综合前面各章介绍的知识,采用了ROM查找表、折线法和CORDIC算法分别进行了实现。本章不仅希望读者学会如何综合使用Verilog语言,还进一步介绍了部分算法与算法定点化的知识。
以上是后院小沙弥偷出的后世研究穆-加联盟的第一手资料。该资料虽然珍贵,但是难免有缺失,不过也够后世考据者管中窥豹之用了。
据后人研究,本书适合的读者有如下几种。
希望学习Verilog语言的学习者,尤其是在校学生。在本书之前的有关书籍均按照程序语言之体系写作。对于Verilog这种以电路为基础的语言来说,它们会造成某种程度的误解。本书创“电路门”之先河,以电路带语言,便于读者理解。
ASIC前端/FPGA工程师:此类施主的动手能力极强,但是也有很多未建立电路与语言的联系,颇有C style的风格。从此后,“逻辑派”和“语法党”皈依“电路门”者,众。
希望了解具体实现的算法工程师:此类施主有着很好的理论知识,但是因为没有亲手做过与数字逻辑有关的设计,所以经常被某些人(这些人的居心属于主观问题,贫僧不做评论)忽悠。听了二老说的书,您就有了据理力争的本钱。
计算机硬件设计工程师:看完本书,所有忧愁都将消失。数字加速器是啥?如何做?书里都有答案。
数月后,子虚镇的壶友茶社门口高挂告示“穆子加菲连口,电路语言开讲”,下面有一行小字“每晚六点,茶金三文”。据当时《子虚晚报》记载,这场书一共说了九九八十一天,期间还有很多曲折,但观书中慢慢看来。
后世的研究者发现,这两位讲本书颇得汉印的精髓:“疏可跑马,密不插针。”换句话说,本书的顺序虽然符合一般读者认识进步的逻辑,但是绝对不建议读者平均用力阅读。最好的建议之一来源于《如何读<Verilog传奇>》的结论。
本书的内容与其他资料相比,在正文里缺少了如何使用FPGA开发环境与仿真软件的内容。这部分知识在附录C给出了资料的链接。对于不熟悉这些软件使用的读者而言,需要自行下载有关环境与资料,按照里面的材料练习,做到熟练掌握软件的使用。接下来建议采用以下步骤阅读本书。
首先,粗读/跳读第一章到第二章的第二讲,了解基本概念。本书的基本假设是读者都掌握了《数字电子技术》这一门基础课。对于第一章中提到的读者感觉陌生的内容,需要重新复习数字电子技术的内容。
其次,详细阅读第二章第三讲开始到第五章的内容,掌握基本语法。这部分是Verilog语言的基础,掌握这些内容基本就可以完成设计工作了。
接着,阅读第六、七章的内容。这些是进阶内容,需要提高的读者应该特别注意。
接下来到了第八章,这些是做测试和验证的内容。如果读者以设计为主,则略读第一讲到第四讲即可,重点掌握如何自己编写测试向量。对于以测试和验证为主的读者,这一章的介绍是不够的,需要另外的资料作为补充。
第九章是一个复杂的例子,重点是阅读作者的思想、设计过程及代码风格。
最后的几个附录属于索引部分,可读可不读。
如此通读完全文之后,建议读者再回过头来好好研究第一章的第二讲到第五讲的内容,并联系自己的工程实践,相信必有所斩获。