在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: weijiaming

[原创] 大家好,我是《Verilog编程艺术》的作者,欢迎大家的反馈和提问

[复制链接]
 楼主| 发表于 2014-7-17 20:27:35 | 显示全部楼层
@yintengfei  and @kob       谢谢二位的夸奖!

=============================
在Amazon网上,有两个很负面的评价:
1.  东拼西凑,纯属骗钱(评价2星)
     整本书东拼西凑,翻译了几篇论文,弄了些spec,有些干脆就没翻译直接放进来。
     这样也可以出书,作者和编辑的态度实在可疑。
2.  仓促成文,错字不少(评价2星)
     有些内容很不错,但相当一部分在滥竽充数,有不少别字,整体来说,
     还是不错的,有利于初学者规范一下自己。

=============================
回应:
1.  拼凑是真的,骗钱是假的,本人至今还没拿到一分钱呢!
     有些论文是翻译的,但是这些都是非常高级的获奖的论文,本人受益匪浅,
     至于别人,有没有如此感受就不知道了?
     书中的Spec和设计代码是货真价实的,是本人在某项目中亲自设计的,经过了FPGA和芯片的验证。
     这些Spec当初就是写的英文,不太多,应该能看懂吧,所以就直接放了进去。
     我的态度用不着怀疑,我没打算骗各位的钱。
2.  本书的编写一点也不仓促,因为本人去年休息了半年。
     欢迎各位指出本书错误,至于错字,本人是发现了几个,但是没有到“不少的”的地步
3.  如果您想购买本书,请三思而后行,请寻找便宜的卖家,免得说我骗你们的钱!
发表于 2014-7-18 09:03:19 | 显示全部楼层
回复 1# weijiaming


   书看了,但是配不上这个价格
发表于 2014-7-20 17:36:06 | 显示全部楼层
哈哈,楼主写的这本书在我们学校的图书馆可以借阅了,威武SDU图书馆!!!!
发表于 2014-7-28 15:46:23 | 显示全部楼层
可以试读啊,这样谁去看啊
 楼主| 发表于 2014-8-1 08:19:56 | 显示全部楼层
本帖最后由 weijiaming 于 2014-8-2 07:16 编辑

下面这些文字本来是想放到书稿中,但是后来没有放。

+++++++++++++++++++++++++++++++++++++++++++++
我的心中总是想写一些东西出来,可是坐在电脑前,又写不出来多少,只能用小纸片随时记录,随时总结。
一个人的设计思想受到多方面的影响,来自于我们在大学里的学习,来自于我们在工作里的学习,来自于我们个人生活的影响。
初始的影响很重要,当你写第一行程序的时候,也许就意味着十年后你的代码的样子,这也可以看做是蝴蝶效应,这也许是在夸大。下面看一个萨苏女儿吃奶粉的例子。
萨苏是旅日作家,他的女儿在日本医院出生后,日本护士过来和他说他的女儿需要喝婴儿奶粉。护士说奶粉有七八种,而且在住院期间都是免费提供的,于是萨苏问是不是越贵的奶粉越好,护士说是,于是萨苏为了占点小便宜就选择了最贵的奶粉。可是出院以后,萨苏的女儿却对姥姥姥爷买好的奶粉不屑一顾,饿得哇哇叫也不肯迁就一下。萨苏只好到超市买了那种高价的奶粉,5分钟后,他的女儿已经嘬着大奶瓶子,喝得咕咚咕咚的。萨苏终于明白了,敢情人家不是送的免费奶粉,而是钓鱼的鱼饵。每年那些奶粉厂商都求爷爷告奶奶地向医院提供免费奶粉,就是为了让小孩喝了免费奶粉之后不再去喝其它的奶粉。
我小时候上图画课就很费劲,因为不会画,歪歪扭扭的。到大学学数字电路时,写作业画卡诺图,我就用手直接画表,可是教我们的老师是一个迂腐严谨认真的老头,结果是重写作业,虽然我的运算过程和结果都是正确的,我有点不好意思,都已经二十岁了。到了现在,我依旧不太会画图,太费劲,但是有时不得不画,慢慢来吧。
再说一下普通物理实验课,我们在大学时都要做普通物理实验,每做一个实验就写一个实验报告。我在那时觉得这门课与计算机软件没有多大关系,觉得没什么用。但是现在看来很有用,普通物理实验是一门科学实验课程,是后续专业实验的基础,也是学生实验素质的基础。我们可以受到严格的、系统的实验技能训练,掌握进行科学实验的基本知识、方法和技巧,还可以培养我们敏锐的观察能力和严谨的思维能力,培养我们的分析问题和解决问题的能力,特别是与科学技术发展相适应的综合能力和创新精神。我们的设计和调试程序的能力是不是也能从这门课里受到影响呢?
如果你还在读书上课,那么就珍惜你的时间,不要混下去,要好好学习每一门课,打好你的基础,虽然有些老师的水平不怎么样。

我在大学学的是计算机软件,我的第一门程序设计课是《Fortran77结构化程序设计》,谭浩强编的。结构化程序设计的观点就是没有goto语句,因为goto语句会把程序搞得乱七八糟、难以维护、容易出错,如果画常规的流程图,那么就是想用goto就用goto。但是在这本书里是用NS框图表示程序流程,结果是想加goto是一件根本不可能的事。那时候我还在看Fortran程序习题集,我仔细研究这两本书里的程序,噢,这个问题是这么解决的,是这么回事,我也要这么写程序,虽然现在看来那些程序非常简单。
我后来又学习了Pascal、8051汇编、i386汇编、C语言和dBase/Foxpro,这些语言都在贯穿着结构化的设计思想,即使是针对汇编语言。
我在软件工程课里又知道了,因为软件危机(极度复杂、开发漫长、错误不断、维护困难)使得软件工程诞生,要求按工程化的思想开发软件,需求分析、概要设计、详细分析、编码和测试(模块测试、组合测试和系统测试),一步一步来,瀑布式开发,要产生大量的文档。我的生活也许受到了软件工程的影响,我炒菜做饭要一步一步来,我收拾家务要整洁合理、物放有序。
在这上学期间我做了一些小软件,我对我写的程序很满意,因为运行很可靠,层次化、函数化、格式化,很容易阅读理解。
我毕业后第一个工作是做税务管理软件,用Powerbuilder+Oracle,即使是很烦心,我写的程序都是有条理的,没有变得乱七八糟。

后来我转向做了三年的GCC的移植工作,GCC是著名的C/C++编译器,具有以下特点:
1.不仅支持C/C++,也支持Fortran、Pascal、Objective-C、Java、Ada和其他语言。
2.支持众多的处理器,有i386、arm、mips、powerpc,还有你没听说过的处理器,这说明它移植方便。
3.众多优化选项,可生成高质量的目标代码。
4.由一整套工具组成,cc1、as、ld、ar、ranlib、objdump、objcopy、gdb、libc、glibc等。
5.通过脚本配置,然后编译,就可以生成你所要的编译器。
GCC内在的机制很重要,非常值得学习,例如:
1.GCC为了支持多种语言,具有一个中间语言表示层。各种语言在做完词法分析、语法分析和语义分析后,就生成了中间语言,然后在中间语言上优化,最后生成目标代码。
2.GCC为了支持多种处理器,设计MD机制,用Lisp语言表示中间语言要对应的目标代码,用于描述目标处理器的指令格式,如何针对目标处理器优化,如何生成汇编语言。
3.GCC为了支持多种不同的目标文件格式(ELF、COFF、BIN、SREC等),设计了BFD机制,BFD把不同类型的目标文件抽象成一个统一的模型,这样就可以以一种统一的接口来处理不同的目标文件,最后根据需要生成不同的目标文件。
在这三年间,我们把GCC移植到了3个处理器,我阅读了大量的C代码,研究CPU的指令格式,研究目标文件格式,耐心细致地调试程序。

2001-11-11,这是光棍节,我改学Verilog,虽然也是编程序,但是初期也很困难,要熟悉体系结构,要考虑并行执行,要看波形文件,要考虑setup和hold问题。但是过了几个月之后,我开始逐渐深入,我从更深的细节知道处理器是什么玩意儿,而且开始设计这些玩意儿。随着我对Verilog的学习,我又增加了很多困惑,而且有些困惑困扰了我很多年,例如阻塞赋值和非阻塞赋值,虽然知道如何使用,但是只是知其然,不知其所以然。直到我阅读了Cliff Cummings的论文,我对阻塞赋值和非阻塞赋值才真正地理解,真是醍醐灌顶,茅塞顿开呀。进一步我仔细地研究了Cliff Cummings所有关于Verilog的论文,我发现我的Verilog境界有了很大的提高,我有一种踌躇满志的感觉。
我是在本科和研究生学习的是计算机软件,经过几年的数据库软件的设计,三年的GCC编译器的移植设计,阅读了大量的C代码,这些对Verilog编码有用吗?有用,而且是非常有用,因为程序设计是相通的,只是换了另一种语言罢了。与我同时期,公司里有多位做软件开发的人员转到Verilog设计和测试。因为我有了这些程序设计的经验,如结构化设计、模块化设计、C语言设计、软件工程的学习、大量代码的阅读、严格整洁的编码、严谨细致耐心的工作,所以这些经验都对我的Verilog程序设计有重大的帮助,如模块划分、编码风格、定位bug。我想连续几天看一个网表仿真的波形,这需要极大的耐心吧。
想一想我在18年前的时候,我曾经仔细学习并研究过C++,只是在1994年毕业设计和1995年中的一个项目中用过,然后就没有再用过,所以我以为我这辈子就不会用到C++了。可是我在近一段时间学习Systemverilog的时候,我发现我学的C++还是很有用,很多概念自然而然地就理解了。
发表于 2014-8-4 21:06:52 | 显示全部楼层
考虑入手
发表于 2014-8-13 03:23:13 | 显示全部楼层
看看,考虑当中
发表于 2014-8-13 14:21:24 | 显示全部楼层
窃以为"程序"这个词不太适合于verilog的代码. 因为verilog大部分都不是按照规程,按序执行的. Verilog只是一种语言.
 楼主| 发表于 2014-8-18 22:03:56 | 显示全部楼层
@surprise
不要把Verilog看得如此狭隘,Verilog不只是用于设计电路,也用于验证电路,只不过验证的能力有点弱罢了,所以才发展出了SystemVerilog。
如果你能够看到优秀的IP代码,就会看到验证代码很多是用行为级描述(Task,Function,disable等),而且是顺序执行的。
发表于 2014-8-19 11:42:44 | 显示全部楼层
看了前面的各种评论。我也想说几句。
1. 有些人说书是拼凑出来的,我不同意,这本书是对各种资料的经过思考的综合使用。
   哪些东西有用,哪些东西写出来是废话是经过作者思考的。这是一个去芜存菁的过程,
   一般人做不到。
2. verilog是一种很灵活的语言,功能强大,但是用不好就写不出好的设计,尤其是可综合风格的设计。
  我觉得这本书给大家提供了很多用好verilog的建议以及为什么这么用,
   只有经过了长期的工程实践和阅读了大量文档,代码之后,才能给出这么丰富具体的建议。
3. 另外这本书其实还讲了很多全芯片项目规划,文档管理,DFT,测试验证的东西,
   这些东西不是刚入门的工程师能够体会的,但却是决定一个项目成败的关键环节。

我认为这本书是不可多得的一本好书,比那些半生不熟,东拼西凑的书强的多。
主要适合有一点verilog基础的人,参加过一两个实际的项目,知道自己在哪里犯糊涂的人看。
另外这本书也适合作为数字前端的辅导书,有些东西记不清了可以随时查看。

最后,再顶一下,加油,Jiaming!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-24 15:03 , Processed in 0.021861 second(s), 5 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表