原创 菜鸟学verilog

2008-6-24 14:41 3799 8 8 分类: FPGA/CPLD

首先声明,帖子不是我的,在EDACN转过来的,本人学Verilog也就半个月,没有什么经验可谈,也写不出什么好文章。不过看到这篇文章就把他转过来了!


[菜鸟学verilog]之一:我们应该学什么?
菜鸟EDACN生存法则:


1、不要见资料就下载


我们是菜鸟,论坛上80%的资料到了我们手上是废“纸”。只选择你迫切需要的资料(当前碰到问题的solution,或者急缺的资料,手册等等)。EDACN的大大们不容易,办个公益网站还老是因为下载流量超标被罚钱,我们作为绝对受益者不可以怨报德。


2、不要为了赚积分发无意义的回帖,或者上传大量附件/上传别人已经发过的附件。


赚积分的目的无非是为了有EDA元下载资料,如果做到了第一条,那么这条并那么必要。无意义的回帖或者大体积的附件都会占用大量的服务器资源,EDACN是租用的服务供应商的服务器,如此以往必然超标被罚,还得清理空间。很可能许多相当有价值的资源和帖子在空间清理中流失,最终受害最大的还是我们这些缺乏信息的菜鸟。


如果真的有很好的资料,但是体积很大的话可以放到免费网络硬盘上,在论坛上公布网址和提取码,或者让需要的人留下邮箱挨个发送。接受者会很感激你并且帮你评分的,这样获得的EDA元远大于直接上传多个1M+的附件


关于以上两点,现在EDACN的大大们管的不是很严,但是根据偶多年泡BBS的经验,等到东窗事发,服务器供应商跑来罚钱的时候肯定会有严打,到时候惨的还是我们。


----------------------------------正文,这次是真真的正文----------------------------------


先申明,偶是电子信息工程专业大二学生,目前自学verilog中,集成电路方面的基础知识相当不扎实,所以偶滴文章也只适用于背景和我相似的菜鸟们。电路方面有深厚功底但是新接触verilog的强人们不要跑到偶滴帖子里来骂偶。


总则:我们是菜鸟,我们知道的有限,我们可以接受的东西也有限,所以我们该做的不是去搞懂任何我们不懂的东西,而是把我们的精力放在最有用的地方!


1、Verilog语法


似乎是废话-.-,其实verilog的语法非常简单,基本上有C语言基础的人花点工夫,2个星期就可以掌握核心语法。在一开始,task、function、系统任务这一类的东西我们是没有必要去看的。


当然好教材也比较重要,偶刚开始搞了一本《Verilog HDL硬件描述语言》看,看了10多页就看不下去了,因为看到的东西有一半不知所云。所以一定要选择适合初学者的教材。[


小生推荐夏宇闻老师的《verilog数字系统设计教程》,确实是深入浅出滴一本书,而且这本书已经再版了很多次,错误很少(除了某些离奇的印刷错误)。顺带说一句,夏老师人很好的说。


2、流程


置顶帖里westor大大的新手指导帖里提到新手应该了解一下FPGA/CPLD的工业流程。我们了解就足够了,不需要掌握或者做整个流程。


对于我们菜鸟,特别是手上还没有实验板的菜鸟,我们所需要做的只是coding→compile→前仿真→综合布线


不要浪费时间在后仿真上!综合布线只是为了确保我们写出的代码是可综合的,即使后仿真结果和前仿真不一样,我们也未必能找到问题所在,这还会浪费我们大量的时间。


但是要注意的是,一定要仔细阅读综合布线工具的每一个warning和error,弄清楚发生了什么错误,并且找到产生的原因以及解决方法。对于warning最好能搞清楚哪些warning是要命的,哪些是无关紧要的。


新手和高手的区别就在于他们写出的代码是否可综合,而可综合代码的特点是没办法一一列举并且像条例一样照着做的,基本上是靠经验的积累,而这就是一个积累的过程。


3、可综合与数字电路基础


尽管没有一个条例可以保证你写出完全可综合的代码,但是还是有一些基本条例可以遵守的,教材上可以找到一些,论坛上也可以找到一些。


像许多大大说的那样,想要编写出完全可综合的代码,就必须在CODING的同时对于代码所会形成的电路在脑中形成一个印象,这就要求有着扎实的数字电路基础。所以没学过数字电路的一定要先学过再下手,学过数字电路的最好再找两本深厚点的书看看。学院的破烂教学计划里大三才有数字电路,偶滴数字电路是自学滴,所以基础很不扎实,还仰仗大家提携。


4、例程


本来我是想把夏老师的书一气呵成的看完再开始动手的,但是程序这个东西不上机编实在是忘得很快,所以不能光看书,一定要动手CODING。既是学习的过程,也是发现问题,经验积累的过程,每当你发现一个问题并且找到解决方法,恭喜你,你的经验值上升了。


例程的选择没有太大的问题,可以在网络上搜索一下,许多卖实验板的厂家都有一些小的例程,verilog的教材里也往往有一些,也可以生活中随便碰到个什么东西想到了就编一个。和现实的接口对于菜鸟可能有点麻烦,没有实验板的可以忽略这一部分,有的人照着实验板配套的东西开始做就能入门了,偶现在正在编的是一个能实现世面上的电子手表全部功能的小东西。


5、时序


时序是个很深的问题,菜鸟们一个劲往里磕基本上是死路一条。所以碰到实在理解不了的回去复习一下数字电路,还是理解不了就先放一边。夏老师建议新手所有的东西都用同步,因为异步的代码可综合性很差,偶是菜鸟,一直是这么做的。


刚开始编的模块速度都很低,时序要求并不严格。不要在时序问题上钻得太深,但是有些原则性的东西还是要弄明白。比如多个计数器级连的进位信号脉宽。哪些结构的行为代码会忽略一些关键性的延迟。


还有就是一定不要把软件编程的思路带进来,有些东西编出来可以编译前仿也能通过,但是一综合结果就完全不一样了,就是因为一些关键的时间点上出现了没有考虑到的延迟,这些东西都需要经验的积累。设计的时候不要怕麻烦,复杂设计中用always块的时候多画画波形图,考虑上必要的延迟,相信大家都会有所得。


至于不得不用异步的情况,我们暂时不用去考虑,所以也不要把时间浪费在那些太过坚深帖子上。一是无法全部看懂,二是用不上的知识会很快忘掉。


6、CODING STYLE


这确实是个重要的东西,但是不是看资料能看会的,是靠经验的积累和平时CODING的刻意的对自己的约束,比如19写作5’d19,在if后面写上else ;的空语句封闭这个if等等。


所以论坛上CODING STYLE的资料也不必浪费EDA元在上面了,我都下了,都是些很深的东西。


这个帖子不错:http://www.edacn.net/bbs/viewthr ... &extra=page%3D1


7、论坛上对菜鸟最有价值的资料:


EDACN月刊


只出了三期就停了,但是含金量真的很高,可以学到很多东西。但是同样的,看不懂的东西不要浪费太多时间在上面。


软件使用入门级说明书


ModelSim有一个PPT转成的PDF文档,大概5、6百K,论坛上有。QUARTUS有个官方中文手册,182页的PDF,打包后1M多。Synplify也是一个PPT转的PDF,未打包的是600多K,对于用这三个软件的菜鸟来说足够了。不需要下载更多的软件使用说明。


100多个verilog例程


这个是很好的东西,自己看了题目然后编写,写完了再和例程对照,看看差别。


另外,verilog教材一本啃透了再啃另一本,下载N个“来源很NB”的verilog教程毫无意义。


END



写一点给斑竹和管理员大大们的建议。EDACN是个含金量很高的论坛,高手很多,所以很多初学者也趋之若骛,但是高手们往往都很忙,没有精力回答新手们的问题,所以这个坛子里的新手往往很茫然,0回复的提问帖很多。希望专门开一个“菜鸟训练营”之类的版块,共菜鸟们学习和交流,当然如果能搞个“专家答疑”之类的区域就更好了。


小生不才,学verilog两月有余,今天得到高人指点,觉得眼前豁然开朗,终于感觉入了门,外加解决了两个困扰已久的问题,觉得前途一片大好,于是恶胆横生,不自量力写下此文,希望与众菜鸟们共勉。如果条件允许的话我以后会继续把自己学习中获得的一些经验拿出来与大家探讨。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
8
关闭 站长推荐上一条 /3 下一条