发表于2024-12-20
手把手教你学FPGA设计——基于大道至简的至简设计法
本书介绍利用硬件描述语言(VerilogHDL)设计数字系统的方法,提出计数器、状态机、FIFO的三大架构,采用理论与实践相结合的方式,详细介绍各个架构的实现步骤———“八步法”,并配以相应的项目练习。在书的后半部分,介绍模块划分的基本方法,总结并提出了模块间的交互架构,在项目实践中给出了温度监控系统、边缘检测系统等综合性项目的模式。本书可作为高等院校电子工程类、自动控制类、计算机类等专业的教材,亦可供FPGA相关行业的爱好者和从业人员自学与参考。
手把手教你学FPGA设计——基于大道至简的至简设计法
序随着微电子技术的发展,可编程门阵列(FPGA)技术已经成为信息产业最热门的技术之一,其应用范围遍及电子、通信、自动化、医疗、军事和航空航天等多个热门领域。在数字集成电路设计领域,前端验证工作通常依托FPGA,并由那些精通硬件构架的FPGA系统工程师来完成。因此,FPGA技术的设计和开发已成为当前发展迅速的朝阳行业之一。作者曾在华为海思、展讯通信等集成电路设计企业参与了FPGA大型项目的开发设计,近年来又在明德扬科技教育公司从事FPGA的教学培训,从而有机会深入研究和采用多种教学方法进行试验,以便把那些构成FPGA设计基础的知识模块和工具平台,变成FPGA学习者能够实际运用的方法,而更重要的是能够帮助学习者消化核心功能及其设计流程。于是,本书便应运而生,旨在为FPGA学习者提供一种FPGA的至简设计方法。与一些将FPGA设计的理论知识和软件工具作为叙述重点的教程不同,本书的重点不在于介绍FPGA设计“是什么”,而侧重于引导学习者“怎么做”。经过这样设计后的内容可以引起学习者浓厚的兴趣,并使学习者在短时间内快速掌握FPGA设计方法,正如诺贝尔文学奖获得者、法国作家AnatoleFrance的精辟格言:“教学的全部艺术就是唤醒年轻心灵的天然好奇心。”
黄君凯
2016年10月于广州暨南园
前言
随着我国工业智能化的发展,工业企业的个性化需求剧增。相应的,对FPGA/IC行业人才的需求,特别是高端人才的需求也随之剧增。然而,目前国内的FPGA/IC教育相对落后:高等院校缺乏项目经验丰富的教师;现有教材陈旧,无法跟上最新技术的发展;学习资料缺乏,大都重视软件操作示范,不重视设计理念传授等。这些客观因素使学生对FPGA/IC望而生畏,即使有大量学生立志学好FPGA/IC设计,但多数不得要领,最终放弃学习。由于失去了群众基础,导致国内缺乏高素质的FPGA人才,从而对我国工业智能化的发展产生了一定的影响。为了扩大FPGA/IC设计的群众基础,降低FPGA/IC设计的学习门槛,明德扬科技教育公司(简称明德扬)结合培训班、企业内训,以及多年国内顶尖企业的工作经验,研发出一套FPGA/IC设计流程———“至简设计法”。“至简设计法”是明德扬丰富项目经验的结晶,它将高级的设计技巧转化成几条规则,掌握了这些规则就相当于拥有多年的经验。“至简设计法”流程中的每一步都简单易操作,容易上手,便于掌握。掌握“至简设计法”,可以实现0仿真、0调试、一次成功的设计,极大地提高了工作效率。明德扬致力于打造“最简单、最实用、最高效”的FPGA/IC设计法,不遗余力地为普及FPGA/IC设计,提升客户竞争力,提高我国该行业整体的设计能力做贡献。很多同学在刚开始学习FPGA/IC设计时都会走弯路,下面是两位学员的学习经历与心得。学员一:“①买一本书,花大量的时间学习语法;②到网上搜一些资料,类似“大全”、“玩转”之类的速成之法;③买一个开发板,看代码、下载例程看现象。”学员一的情况具有普遍性,作为一个刚接触FPGA的初学者,这似乎是必经之路,很多学员在来明德扬学习之前就以这样的方式学了大约半年的时间。当然,这样的学习方法不是说学不好,而是很难学好,或者需花费很长的时间。以看书学习为例,可以说书是根源,学习任何知识都离不开书,书作为一个知识体系,要求全面、系统,但作为初学者就没有必要学得那么全面、系统了。很多学员在学Verilog时,就是拿一本书,仔仔细细地看,花费了不少时间,但效果却不理想。我们都知道,Verilog的很多语法是不能综合的,而这些语法也没有实际的电路与之对应,当然在具体的逻辑设计时也是不能用的,但书上并不会很明确地指出。再举一个例子,也是很多人都犯过的一个错误:以普通信号作为always的敏感信号列表。当我们这样写的时候,根本不会意识到这是错误的,因为书上就是这么教的。有经验的工程师都知道,对于Verilog语法,书上是一个全集,很多用法作为知识点是对的,但在实际应用中就是错误的。因此,太依赖书本的学习,反而会学得全而不好,还浪费时间。学员二:“一开学我立马就买了当时很多人推荐的某一品牌的一款开发板,但却不知道怎么学,上来就死抠代码,感觉好费劲啊!一方面我当时的基础确实很差,本科时候就没写过任何代码;另一方面看别人写的代码本来就费解,而卖家的视频也是蜻蜓点水一带而过,视频上提到的问题不是我的问题,我想解决的问题视频中又没说,反正我的困惑与卖家的视频就不在一个频道上,可能我的问题人家压根儿就觉得不是问题,因为我当时就是不折不扣的零基础。就这样,我混混沌沌地看了好多天代码,最终还是云里雾里。当时有人跟我讲过要去仿真看波形,而不是看代码,但是装什么软件,怎么装,软件怎么用,我一点都不知道。确实蛮痛苦的。”以上两位同学遇到的问题,相信大多数初学者也遇到过,也很受困扰。明德扬在培训学员的过程中发现了一个普遍存在的问题:不同的人,代码风格往往也是不一样的。而一套优秀的代码规范,对团队、企业有非常强的指导意义,可以给他人提供一个可读性强、便于维护纠错的环境,这可以大大提高团队、企业的工作效率。而市面上大多数FPGA教材往往并不重视代码规范,大篇幅的软件使用、语法知识和大量理论知识令初学者望而生畏,其实很多语法在实际工程中并没有机会用到。另外,很多FPGA书籍都会讲一个个独立的项目如何实现,以及针对不同项目的相应设计思路,但却缺少一套通用的设计方法,这样同学们最多只能学一个项目会一个项目,而不能举一反三。也正是因为如此,才有这本书创作的初衷。为了帮助更多的FPGA学习者更好地理解FPGA设计的精髓,提高学习效率,明德扬提出了“至简”的设计思想,并创作了这本书。大道至简与至简设计法“大道至简”出自老子的《道德经》:“万物之始,大道至简,衍化至繁。”大道至简是指大道理(基本原理、方法和规律)是极其简单的,简单到一两句话就能说明白,把复杂冗繁的表象层层剥离之后就是事物最本质的东西。所谓“真传一句话,假传万卷书”。一门技术一门学问,弄得很深奥是因为没有看穿实质,就像FPGA的学习,搞得很复杂是因为没有抓住代码的关键。1.大道至简,抓住根本大道理是极其简单的,简单到一两句话就能说明白。事情难就难在简单,简单不是敷衍了事,也不是单纯幼稚,而是最高级的智慧和成熟睿智的表现。
至简设计法是明德扬通过多年的教学经验找到的学习FPGA的关键和根本方法。FPGA学习既不能花大量时间在软件工具/语法上,也不能花精力在独立的知识点上,而应花费80%的时间在20%的核心功能上。什么是核心功能?至简设计中一个完整的设计流程就是核心功能。注意,这里说的是“设计”流程,而非项目流程。市面上的FPGA设计教程大部分讲的都是项目流程,即介绍功能→新建项目→加入设计文件→编译工程→配置引脚→上板。这些流程都是介绍软件是怎么用的,而最重要的———设计文件是如何设计的,都没有详细介绍。至简设计法的设计流程,讲的是实现一个功能的过程,是将功能转化成代码的过程。不仅简单的UART/SPI/VAG/IIC/摄像头采集,甚至复杂的边缘检测/SDRAM接口/软件无线电等,都可以采用这个设计流程将功能转化成代码。2.大道至简,衍化至繁大道至简是一种哲学,无论是做人还是做事它都会给人以指导。在当今这个大千世界中,我们要学会把复杂变成简单,用智慧创造“简单”,在变迁中不断地升华。至简设计法是先将复杂的模块划分成简单的模块,再用模块设计流程设计出来。FPGA学习的过程,就是不断地将复杂的模块,划分成简单模块,再用至简设计法设计的过程。不断地重复这个过程,像搭积木一样一层层地堆砌,最终就能通过简单的规则做出复杂的设计。3.大道至简,凝聚智慧大道至简,经过整合创新,跳出原来的框框,去粗取精,抓住关键和根本,挥动奥卡姆剃刀,剔除无效的、可有可无的、非本质的东西,提炼出精华。至简设计法,看似简单的几个规则,然而总结归纳出这些规则,却需要相当大的智慧:必须要有众多领域的项目经验,才能获知各领域的设计需求和要点;必须要有丰富的工作经验,才能拥有高超的设计技巧;必须要有丰富的教学经验,明白学习的难点和重点,明白学生思考的方式,才能将高超的设计技巧转成可学习和操作的流程;必须要有很大的智慧,不断地归纳和总结,才能将这些流程和步骤变得简单易用。至简设计法,是结合以上要点,经过明德扬多年探索的智慧结晶。在此,我希望与更多FPGA学习者分享,让更多的人应用此设计方法,在FPGA设计学习和做实际项目中得心应手,为推进国家产业智能化发展贡献绵薄之力。
本书共8章,分为三篇,其中每篇对应的章和具体内容介绍如下:第一篇包括第1~4章,主要介绍FPGA设计核心———模块。本书提出把模块分为三大类型,即计数器架构、状态机架构及FIFO架构,并配有项目设计练习。第二篇包括第5、6章,主要介绍模块的由来———模块划分。本书总结了两大类常见的模块划分应用场合,即FPGA内部模块之间的交互和FPGA与外设的交互,并配有实践练习。第三篇包括第7、8章,主要介绍基于OV7670的图像采集,以及基于SDRAM的VGA显示控制器。应用前两篇提到的三大架构及模块划分来完成这个工程,进一步深化对前面内容的理解。本书特点1.注重设计思路本书重点讲项目实现的整体思路,而并非讲某一具体项目的实现。2.设计理念本书提出了“至简”的设计理念,一次只考虑一个问题。3.优秀的代码风格及规范本书提供的代码风格统一,代码的规范是资深从业人员从多年工作经验中总结、提练,并结合明德扬就业培训班培训成果所得到的。优秀的代码风格对团队、企业都有非常大的指导意义。
4.注重实践本书选择以案例的形式进行编写,所有方法均用例子阐述,并配有丰富的项目实践练习。5.不罗列知识点坚持项目中遇到什么问题就解决(讲解)什么问题,避免罗列知识点,让FPGA学习者集中精力学习FPGA设计的核心。如何学习本书至简设计法的目的,是对程序编写工作中易出现的混乱状态进行规范化,以达到简便、有序、快捷的效果。本书通过例题引出概念,并详举大量实际案例进行分析、对比,帮助读者理解至简设计法的设计思想,清晰直观地学习和掌握该方法。此外,作者对于“二八定律”在FPGA设计方面的应用有独到见解:采取“权值阶梯模式”,即强调核心功能的学习、巩固和使用,以及一般功能在实际中边做边学的模式,来达到在最短的时间能独立完成项目的效果。另外,希望读者在完成项目时,先根据功能要求自己试着构思、编写代码,再与给出的思路、代码相比较,这样读者才能深刻理解至简设计法,并把这套设计思想真正运用到实践中去。从明德扬就业培训班的培训成果来看,只要耐心学完整套设计思想,就能独立完成项目设计。设计者拿到一个新项目,知道从哪里下手,且编写的代码可综合,逻辑缜密,在设计过程中对逻辑变化考虑周全,就可在短时间内调试成功并上板实现。本书虽然没有语法篇,但通篇用到的语法都是比较简单、常用的,有一定Verilog基础的读者读起来必定毫无障碍,而初学者也不必担心看不懂,明德扬会推出配套视频,介绍用到的语法知识点。另外,软件使用篇也包括在配套视频中,主要包括QuartusII,Modelsim,Gvim的使用。本书可作为高等院校电子工程类、自动控制类、计算机类等专业的教材,亦可供FPGA相关行业的爱好者和从业人员自学与参考。感谢参与本书部分内容编写及在编写过程中提供宝贵建议的黄君凯、崔苗、李国庆和陈泽熹。还要感谢北京航空航天大学出版社的编辑老师们,在他们的大力支持和帮助下本书才得以与广大读者见面。由于作者水平有限,难免存在错误和遗漏之处,恳请各位读者批评指正。同时,也欢迎大家就FPGA开发相关技术与作者交流,联系邮箱:book@mdyedu.com。配套视频、开发板购买地址以及例程源码和相关资料下载地址:http://www.mdyedu.com/。潘文明易文兵2016年12月于深圳明德扬科技教育有限公司
手把手教你学FPGA设计——基于大道至简的至简设计法 下载 mobi pdf epub txt 电子书 格式 2024
手把手教你学FPGA设计——基于大道至简的至简设计法 下载 mobi epub pdf 电子书非常好 注重讲方法 很实用
评分66666666666
评分非常好
评分非常不错!!!
评分给外婆了7是我了人快也破了0搜搜诺摸摸摸
评分内容很充实
评分东西还可以,不错
评分包装太简单了,书角都压破了…
评分很不错的书,给一个好评
手把手教你学FPGA设计——基于大道至简的至简设计法 mobi epub pdf txt 电子书 格式下载 2024