数字集成电路与系统设计(ASIC设计)
分享
课程详情
课程评价
spContent=2011以来我国集成电路与石油连续多年成为我国最大宗的两类进口商品。其中以高性能微处理器、手机芯片为代表的系统级数字集成电路占到了进口芯片相当大的比重。对国民经济影响巨大的高端系统级芯片是如何设计出来的,面对挑战中国新一代数字集成电路设计师又将在哪里诞生?欢迎在本课程中寻找答案。
—— 课程团队
课程概述

紧急通知:

       近期,发现有部分其它网站和淘宝商户盗取本课程的视频资源并收费谋利。在此特地提醒各位同学,本课程是由电子科技大学制作并授权中国大学MooC发布的免费课程。中国大学MooC为本课程唯一发行渠道。学习本课程只需要按中国大学MooC规定的流程注册、登陆、选课即可。除按规定收取的制作纸质合格证书收费外,本课程的学习观看不收取费用。请各位同学提高警惕,避免受骗上当。也欢迎各位同学向课程组或中国大学MooC网举报盗版行为。


       随着电子系统的微型化与集成化,数字集成电路成为了整个电子系统的核心部件,同时也成为了数字系统的主要实现形式。从消费电子、智能手机到无线通信设备、电子测量仪器的各类电子产品的发展都呈现出“单片化”、“大集成”的趋势。因此数字集成电路与系统设计已从一个专门的领域发展为电子信息领域的工程师都需要掌握的一项基本技能。因而目前国内各工科院校的电子信息工程、微电子科学与工程、集成电路设计与集成系统、通信工程、自动化等相关专业都陆续开设了类似的课程。随着我国对集成电路人才培养的日益重视以及经济结构的升级转型带来的旺盛人才需求,开设此类课程的高校与学习相关知识的学生人数也日益增加。

        课程负责人电子科技大学李广军教授是国内最早开始开设相关课程的老师之一。经过近20年的发展与沿革,本课程先后了多次改革与升级。2007年本课程入选四川省精品课程,2009年本课程入选国家精品课程。

        本课程的学习目的在于使学生熟悉数字集成电路与系统的概念,初步掌握数字集成电路与系统的设计方法和设计流程。课程内容涉及规格书确定、架构设计、RTL编码、验证方法、电路综合等数字集成电路与系统前端设计的多个重要知识点。以veilog HDL语言为基础,针对IC系统前端设计的重要内容和工程设计技术进行了全面深入的讨论。希望各位同学通过本课程的学习,为今后从事数字集成电路与系统设计相关的工作奠定基础。


授课目标

希望通过本课程同学们可以学习到以下内容: 1、数字集成电路与系统设计方法的发展历程; 2、FPGA的工作原理与基本架构; 3、基于Verilog HDL的RTL级描述方法; 4、数字集成电路与系统架构设计方法; 5、数字集成电路与系统验证方法; 6、基于FPGA的数字系统实现方法;

课程大纲

课程介绍

课程介绍

集成电路行业历史与现状

集成电路行业历史与现状

数字集成电路与系统的演进过程

前三讲阶段性测验

数字集成电路与系统的演进过程

揭秘FPGA

揭秘FPGA

系统架构设计入门

系统架构设计入门1

系统架构设计入门2

系统架构设计实例

系统架构相关知识测验

系统架构设计实例1

系统架构设计实例2

系统架构设计实例3

硬件描述语言

硬件描述语言1

硬件描述语言2

硬件描述语言3

硬件描述语言4

硬件描述语言5

硬件描述语言测试

基于硬件描述语言的数字系统设计方法

同步数字系统与可综合设计

描述组合逻辑电路

描述状态机电路1

描述状态机电路2

描述状态机电路3

描述状态机电路4

基于硬件描述语言的数字系统设计方法测试

验证方法学入门

验证方法学入门1

验证方法学入门2

验证方法学入门3

验证方法学入门4

数字信号处理电路设计

数字信号处理电路设计1

数字信号处理电路设计2

数字信号处理电路设计3

数字信号处理电路设计4

预备知识

学习本课程的应已学习过数字电路/数字逻辑设计课程。为确保大家的学习效果,经两个课程组协商,本课程将晚于由我校(电子科技大学)开设的《数字逻辑设计及应用》一个月开课。建议所有愿意参加本课程学习的同学首先学习《数字逻辑设计及应用》的课程内容以学习/复习本门课程所需基础知识。对于完全没有数字电路/数字逻辑设计相关知识背景的同学建议学习《数字逻辑设计及应用》的课程前五章内容之后再开始学习本门课程。


本门课程主要介绍从系统架构定义到寄存器传输级设计的相关知识,属于数字集成电路前端设计相关的知识。如果对数字集成电路电气特性、物理设计等相关知识有兴趣的同学,可以在学习本门课程的同时学习由东南大学单伟伟等老师开设的《VLSI设计基础》一课。


信号处理类芯片和计算机接口芯片是数字集成电路的两大类别,学习相关课程会对理解本课程的内容有所帮助。在这里推荐大家同时学习北京航空航天大学王俊教授课程组开设的《数字信号处理》和哈尔滨工业大学刘洪伟教授课程组开设的《计算机组成原理》。


对于完全没有编程基础的同学,建议先学习大连理工大学朱鸣华教授团队开设的《C语言程序设计》,理解程序设计语言的基本构造思路和语法元素。以降低理解Verilog HDL的难度。


有关Verilog HDL语言介绍的视频很多,但其中能够把问题讲明白的视频不太多。以下推荐NVIDIA工程师、知乎大V龚黎明在B站的视频:http://www.bilibili.com/video/av10522456/

视频总时长不超过3个小时,可以作为本门课程的扩展资料学习。

证书要求

完成全部的课程学习,单元测试占60%,期末考试成绩占40%。由任课教师签发课程结业证书,其中60≤成绩获得合格证书。

参考资料

主要参考书籍:

1、数字集成电路与系统设计,李广军等著,电子工业出版社,ISBN:9787121270932;

2、数字集成电路——电路、系统与设计(第二版),(美)拉贝尔等著,周润德等译,电子工业出版社,ISBN:9787121119828;

3、Verilog HDL高级数字设计(第二版), Michael D.Ciletti 等著,李广军等译,电子工业出版社,ISBN:9787121221934;

4、《数字逻辑基础与Verilog设计》(原书第2版),Stephen Brown等著,夏宇闻等译,机械工业出版社, ISBN:7111203569;


主要参考网站:

1、bbs.eetop.cn

2、http://www.altera.com.cn

3、http://www.chinaaet.com

4、http://www.asic-world.com/

5、http://china.xilinx.com/



常见问题

问题1:我是大一新生,电子科学与技术专业,刚刚学C语言,我能跟上进度吗?

答:建议先学习我校(电子科技大学)开设的另外一门MooC:数字逻辑设计与应用。在这门课程学习完成或至少学习一半以后,再来学习本课程。

问题2:请问老师后面课程中,以哪家为例讲解,这三家FPGA中前两家遇到的见到的多。后面一家在现在实现中没有见到过。请问这前两家fpga有什么不同,从设计和应用上看。除应用设计工具不同外,还有什么不同。谢谢!

答:其实不同公司的FPGA不同的方面很多,但本门课程不会纠结于这些细节。对于我们这门课程的学习只要是讲共性基础,不会涉及到不同。

问题3:当从就业普遍待遇上看,感觉芯片被软件完全碾压啊!水木上跟知乎上到处都是劝EE转CS的言论~~~

答:欢迎大家就这个问题继续展开讨论。

中国芯片的黄金时代是否来临和芯片设计工程师的收入是不是比软件工程师高,工作性质有没有软件好是两个不同的问题。中国芯片的黄金时代是不是来了是和历史上做时间上的纵向比较,而收入有没有软件工程师高是在现在这个时间节点上做横向比较。其实在2000年互联网泡沫破灭之后、传统软件行业陷入低迷之时恰逢中国的芯片行业刚刚起步、大批初创公司出来大把烧钱的时候,芯片设计工程师的收入是完爆软件工程师的。而那时候中国的芯片行业只不过是刚刚起步,从行业状态来说远不如现在的发展状态良好。但在哪个时间节点上面横向比价收入的话就是比软件高。

所以对于行业发展的评价和个人收入的评价以及个人前途的评价要分开看,不要混为一谈。

问题4:这门课程怎样与单片机技术,自动控制技术相互配合学习,包括实验,理论,这些课程有和相似之处?

答:请认真理解视频第一课“课程介绍”。

问题5:老师,请问一下我现在要用Verilog在一个工程文件中实现四位二进制数的加减乘除四种运算,在顶层模块中用一个两位二进制数对不同的运算方式进行选择并调用相关的模块。if-else语句在always语句中,但是always中又不能进行子模块的调用。请问有什么方法可以实现这一功能?

答:这位同学是典型的以软件编程思想来使用硬件描述语言。其实硬件描述语言并没有所谓的层次化、调用这些概念。层次只是我们人为的把一个复杂系统划分成若干个子系统抽象而来的。硬件描述语言是用文字的方式描述一个电路的行为和功能。因此我们从逻辑电路的角度上理解,整个数字系统都是由门和触发器这样基本的元件构成的。整个系统也可以用一个完全是基于门和触发器的二位平面电路图来表示。

而我们划分模块的目的,只是由于这样的电路图会过于复杂,因此我们会把电路划分为若干抽象的“模块”。所以顶层模块和底层模块之间不是什么“调用”关系,而是一个层次化的抽象关系。如果还想不清楚这一点,可以想想74LS系列中规模集成电路的框图符号表示和他们内部包含的门电路之间的关系。

在想清楚了这些问题之后,就应该明白写硬件描述语言之前首先需要有一个逻辑电路设计的“蓝图”,这就是所谓的“架构设计”。这几者之间的关系在课程中已经交代得非常明确了,请学习的时候注意理解,切不可急功近利的直奔写代码而去。

最后具体到这个同学的问题,一种最直观的实现方法就是搞4个运算单元,分别算出4个数加减乘除的结果。然后根据当前的输入来选择输出那种结果。这样就是实现了2个4位2进制数的四则运算。当然,这个方法显然不是最优的,同学们可以下来思考一下有没有更为合理的架构设计方案。


更多精彩讨论请关注:http://blog.chinaaet.com/molf/p/5100052748