马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
[color=rgba(0, 0, 0, 0.9)]本书聚焦于数字片上系统(SoC)设计领域,从数字集成电路的发展历程与基础知识入手,首先介绍了硬件描述语言Verilog HDL的设计规则和核心EDA工具VIVADO与Design Compiler的使用方法,随后详细讨论了数字SoC设计、验证过程中的关键技术,并对难点问题进行了归纳和总结。 [color=rgba(0, 0, 0, 0.9)]此外,本书提供了多个数字SoC设计、验证的实际案例,循序渐进地向读者展示了数字SoC从规划、设计、仿真、验证再到综合实现的全流程。 [color=rgba(0, 0, 0, 0.9)]本书内容由浅入深,能使读者深刻了解数字SoC设计过程和基本方法,既适合作为微电子与集成电路专业的高年级本科生及从事数字SoC领域研究的研究生的教材,又可为从事相关技术的初期从业人员提供技术参考。 [color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]扫描右上方进入详情 [color=rgba(0, 0, 0, 0.9)]第1章数字集成电路与SoC介绍1 [color=rgba(0, 0, 0, 0.9)]1.1数字集成电路技术1 [color=rgba(0, 0, 0, 0.9)]1.1.1数字集成电路技术的发展历史1 [color=rgba(0, 0, 0, 0.9)]1.1.2数字集成电路技术基础3 [color=rgba(0, 0, 0, 0.9)]1.2SoC21 [color=rgba(0, 0, 0, 0.9)]1.2.1SoC技术简介21 [color=rgba(0, 0, 0, 0.9)]1.2.2SoC设计流程24 [color=rgba(0, 0, 0, 0.9)]1.2.3两种SoC设计流程实例25 [color=rgba(0, 0, 0, 0.9)]第2章数字SoC的设计基础29 [color=rgba(0, 0, 0, 0.9)]2.1硬件描述语言29 [color=rgba(0, 0, 0, 0.9)]2.1.1硬件描述语言与软件编程语言的区别29 [color=rgba(0, 0, 0, 0.9)]2.1.2硬件描述语言的发展历史30 [color=rgba(0, 0, 0, 0.9)]2.1.3Verilog HDL的可重复性30 [color=rgba(0, 0, 0, 0.9)]2.1.4硬件抽象级的模型类型31 [color=rgba(0, 0, 0, 0.9)]2.2Verilog HDL基本语法31 [color=rgba(0, 0, 0, 0.9)]2.2.1模块的基本概念31 [color=rgba(0, 0, 0, 0.9)]2.2.2常量及其数据类型32 [color=rgba(0, 0, 0, 0.9)]2.2.3变量及其数据类型34 [color=rgba(0, 0, 0, 0.9)]2.2.4运算符及表达式35 [color=rgba(0, 0, 0, 0.9)]2.2.5块语句42 [color=rgba(0, 0, 0, 0.9)]2.2.6赋值语句43 [color=rgba(0, 0, 0, 0.9)]2.2.7结构语句 44 [color=rgba(0, 0, 0, 0.9)]2.2.8条件语句和循环语句45 [color=rgba(0, 0, 0, 0.9)]2.2.9testbench的编写48 [color=rgba(0, 0, 0, 0.9)]2.3Verilog HDL与数字电路50 [color=rgba(0, 0, 0, 0.9)]2.3.1数字电路的类型50 [color=rgba(0, 0, 0, 0.9)]2.3.2Verilog HDL的可综合与不可综合51 [color=rgba(0, 0, 0, 0.9)]2.3.3组合逻辑电路的Verilog HDL实例52 [color=rgba(0, 0, 0, 0.9)]2.3.4时序逻辑电路的Verilog HDL实例53 [color=rgba(0, 0, 0, 0.9)]2.3.5状态机的Verilog HDL实例55 [color=rgba(0, 0, 0, 0.9)]第3章FPGA开发工具——VIVADO基础入门59 [color=rgba(0, 0, 0, 0.9)]3.1FPGA与VIVADO基本介绍59 [color=rgba(0, 0, 0, 0.9)]3.1.1FPGA基础原理介绍59 [color=rgba(0, 0, 0, 0.9)]3.1.2以Xilinx7系列为例的 FPGA 内部结构简介60 [color=rgba(0, 0, 0, 0.9)]3.1.3VIVADO操作界面简介67 [color=rgba(0, 0, 0, 0.9)]3.2VIVADO中的仿真72 [color=rgba(0, 0, 0, 0.9)]3.2.1仿真的含义72 [color=rgba(0, 0, 0, 0.9)]3.2.2仿真的分类72 [color=rgba(0, 0, 0, 0.9)]3.3VIVADO中的综合基础72 [color=rgba(0, 0, 0, 0.9)]3.3.1综合的含义72 [color=rgba(0, 0, 0, 0.9)]3.3.2综合策略介绍73 [color=rgba(0, 0, 0, 0.9)]3.4VIVADO中的实现基础77 [color=rgba(0, 0, 0, 0.9)]3.4.1实现的含义77 [color=rgba(0, 0, 0, 0.9)]3.4.2实现的过程简介78 [color=rgba(0, 0, 0, 0.9)]3.5VIVADO中的约束管理81 [color=rgba(0, 0, 0, 0.9)]3.5.1约束的含义81 [color=rgba(0, 0, 0, 0.9)]3.5.2创建约束的两种方式82 [color=rgba(0, 0, 0, 0.9)]3.6VIVADO中的IP核86 [color=rgba(0, 0, 0, 0.9)]3.6.1IP核的概念86 [color=rgba(0, 0, 0, 0.9)]3.6.2IP核的分类86 [color=rgba(0, 0, 0, 0.9)]3.7VIVADO示例——并行乘法器设计、仿真、综合及其IP核的定制与调用89 [color=rgba(0, 0, 0, 0.9)]3.7.1四位二进制并行乘法器设计原理89 [color=rgba(0, 0, 0, 0.9)]3.7.2四位并行乘法器代码编写以及分析90 [color=rgba(0, 0, 0, 0.9)]3.7.3仿真设计文件代码编写92 [color=rgba(0, 0, 0, 0.9)]3.7.4在VIVADO软件中进行乘法器设计92 [color=rgba(0, 0, 0, 0.9)]3.7.5在VIVADO软件中进行仿真操作100 [color=rgba(0, 0, 0, 0.9)]3.7.6在VIVADO软件中进行综合操作107 [color=rgba(0, 0, 0, 0.9)]3.7.7并行乘法器IP核的定制108 [color=rgba(0, 0, 0, 0.9)]3.7.8并行乘法器IP核的调用115 [color=rgba(0, 0, 0, 0.9)]3.8VIVADO示例——全流程实现基于7Z-Lite开发板的流水灯功能119 [color=rgba(0, 0, 0, 0.9)]3.8.1流水灯代码编写119 [color=rgba(0, 0, 0, 0.9)]3.8.2流水灯代码的行为级仿真120 [color=rgba(0, 0, 0, 0.9)]3.8.3综合及引脚约束121 [color=rgba(0, 0, 0, 0.9)]3.8.4流水灯实现过程122 [color=rgba(0, 0, 0, 0.9)]3.8.5流水灯配置文件生成与下载125 [color=rgba(0, 0, 0, 0.9)]第4章Design Compiler的使用127 [color=rgba(0, 0, 0, 0.9)]4.1Design Compiler介绍127 [color=rgba(0, 0, 0, 0.9)]4.1.1ASIC全流程127 [color=rgba(0, 0, 0, 0.9)]4.1.2Design Compiler流程概述128 [color=rgba(0, 0, 0, 0.9)]4.1.3Design Compiler配置129 [color=rgba(0, 0, 0, 0.9)]4.2Synopsys工艺库使用133 [color=rgba(0, 0, 0, 0.9)]4.2.1什么是工艺库133 [color=rgba(0, 0, 0, 0.9)]4.2.2库的结构134 [color=rgba(0, 0, 0, 0.9)]4.2.3库类135 [color=rgba(0, 0, 0, 0.9)]4.2.4库级属性135 [color=rgba(0, 0, 0, 0.9)]4.2.5环境描述137 [color=rgba(0, 0, 0, 0.9)]4.2.6单元描述142 [color=rgba(0, 0, 0, 0.9)]4.2.7延时模型与计算143 [color=rgba(0, 0, 0, 0.9)]4.3设计与环境约束145 [color=rgba(0, 0, 0, 0.9)]4.3.1环境约束145 [color=rgba(0, 0, 0, 0.9)]4.3.2设计约束149 [color=rgba(0, 0, 0, 0.9)]4.3.3时钟约束154 [color=rgba(0, 0, 0, 0.9)]4.3.4综合示例156 [color=rgba(0, 0, 0, 0.9)]4.4优化设计159 [color=rgba(0, 0, 0, 0.9)]4.4.1DC的两种综合模式159 [color=rgba(0, 0, 0, 0.9)]4.4.2DC自动优化的三大阶段160 [color=rgba(0, 0, 0, 0.9)]4.4.3结构级优化161 [color=rgba(0, 0, 0, 0.9)]4.4.4逻辑级优化164 [color=rgba(0, 0, 0, 0.9)]4.4.5门级优化166 [color=rgba(0, 0, 0, 0.9)]4.4.6多个实例解析167 [color=rgba(0, 0, 0, 0.9)]4.4.7编译设计167 [color=rgba(0, 0, 0, 0.9)]4.4.8层次划分169 [color=rgba(0, 0, 0, 0.9)]4.4.9优化时钟网络171 [color=rgba(0, 0, 0, 0.9)]4.4.10优化面积172 [color=rgba(0, 0, 0, 0.9)]第5章高级数字SoC设计与验证173 [color=rgba(0, 0, 0, 0.9)]5.1时钟域173 [color=rgba(0, 0, 0, 0.9)]5.1.1时钟域的基本概念173 [color=rgba(0, 0, 0, 0.9)]5.1.2同步与异步174 [color=rgba(0, 0, 0, 0.9)]5.1.3门控时钟180 [color=rgba(0, 0, 0, 0.9)]5.1.4跨时钟域184 [color=rgba(0, 0, 0, 0.9)]5.1.5非理想时钟194 [color=rgba(0, 0, 0, 0.9)]5.2静态时序分析196 [color=rgba(0, 0, 0, 0.9)]5.2.1静态时序分析基本概念196 [color=rgba(0, 0, 0, 0.9)]5.2.2静态时序分析相关参数197 [color=rgba(0, 0, 0, 0.9)]5.2.3时序路径201 [color=rgba(0, 0, 0, 0.9)]5.2.4关键参数计算202 [color=rgba(0, 0, 0, 0.9)]5.2.5时序违例的修复方法202 [color=rgba(0, 0, 0, 0.9)]5.2.6FPGA时序分析206 [color=rgba(0, 0, 0, 0.9)]5.3数字SoC验证211 [color=rgba(0, 0, 0, 0.9)]5.3.1验证的基本概念 211 [color=rgba(0, 0, 0, 0.9)]5.3.2UVM验证方法学212 [color=rgba(0, 0, 0, 0.9)]5.3.3验证的策略219 [color=rgba(0, 0, 0, 0.9)]5.3.4验证的方法225 [color=rgba(0, 0, 0, 0.9)]5.3.5验证的评估227 [color=rgba(0, 0, 0, 0.9)]5.3.6验证案例228 [color=rgba(0, 0, 0, 0.9)]第6章基于FPGA的数字SoC设计243 [color=rgba(0, 0, 0, 0.9)]6.1设计需求243 [color=rgba(0, 0, 0, 0.9)]6.2设计方案243 [color=rgba(0, 0, 0, 0.9)]6.2.1SoC整体架构243 [color=rgba(0, 0, 0, 0.9)]6.2.2串口简介244 [color=rgba(0, 0, 0, 0.9)]6.2.3AMBA总线简介250 [color=rgba(0, 0, 0, 0.9)]6.2.4ARM Cortex-M0+微处理器简介261 [color=rgba(0, 0, 0, 0.9)]6.3系统设计265 [color=rgba(0, 0, 0, 0.9)]6.3.1系统硬件搭建265 [color=rgba(0, 0, 0, 0.9)]6.3.2C语言控制程序编写268 [color=rgba(0, 0, 0, 0.9)]6.4功能仿真271 [color=rgba(0, 0, 0, 0.9)]6.4.1UART模块仿真271 [color=rgba(0, 0, 0, 0.9)]6.4.2挂载于APB的UART模块仿真278 [color=rgba(0, 0, 0, 0.9)]6.4.3基于Cortex-M0+的SoC仿真278 [color=rgba(0, 0, 0, 0.9)]6.5SoC综合与布局布线281 [color=rgba(0, 0, 0, 0.9)]第7章AES加密模块设计285 [color=rgba(0, 0, 0, 0.9)]7.1AES算法简介285 [color=rgba(0, 0, 0, 0.9)]7.1.1AES加密算法原理285 [color=rgba(0, 0, 0, 0.9)]7.1.2AES加密模块算法实现288 [color=rgba(0, 0, 0, 0.9)]7.2AES算法硬件加速模块设计292 [color=rgba(0, 0, 0, 0.9)]7.2.1整体接口设计292 [color=rgba(0, 0, 0, 0.9)]7.2.2顶层模块设计293 [color=rgba(0, 0, 0, 0.9)]7.2.3输入模块接口设计295 [color=rgba(0, 0, 0, 0.9)]7.2.4输入模块状态机设计295 [color=rgba(0, 0, 0, 0.9)]7.2.5加密核模块接口设计298 [color=rgba(0, 0, 0, 0.9)]7.2.6加密核模块299 [color=rgba(0, 0, 0, 0.9)]7.2.7输出模块接口设计305 [color=rgba(0, 0, 0, 0.9)]7.2.8输出模块设计305 [color=rgba(0, 0, 0, 0.9)]7.3AES算法硬件加速模块仿真307 [color=rgba(0, 0, 0, 0.9)]7.3.1Testbench编写307 [color=rgba(0, 0, 0, 0.9)]7.3.2ModelSim仿真308 [color=rgba(0, 0, 0, 0.9)]7.3.3仿真结果分析315 [color=rgba(0, 0, 0, 0.9)]7.3.4ModelSim仿真中可能出现的问题316 [color=rgba(0, 0, 0, 0.9)]7.3.5其他ModelSim常用操作318 [color=rgba(0, 0, 0, 0.9)]7.4AES算法硬件加速模块综合319 [color=rgba(0, 0, 0, 0.9)]7.4.1脚本文件介绍319 [color=rgba(0, 0, 0, 0.9)]7.4.2设计文件修改324 [color=rgba(0, 0, 0, 0.9)]7.4.3Design Compiler综合操作325 [color=rgba(0, 0, 0, 0.9)]7.4.4综合结果分析329 [color=rgba(0, 0, 0, 0.9)]参考文献334 [color=rgba(0, 0, 0, 0.9)]◆ 前言:◆ [color=rgba(0, 0, 0, 0.9)]进入21世纪以来,以片上系统(System on Chip,SoC)为代表的数字集成电路技术进入了飞速发展阶段。SoC技术经过工业界、学术界的深入研究与反复实践,其兼顾软件灵活性与硬件高效性的优势已经日益显著并获得了广泛认可。随着半导体制造工艺技术的进步,单颗SoC的晶体管集成规模不断扩大。 [color=rgba(0, 0, 0, 0.9)]与此同时,随着SoC技术的应用场景变得更为广泛,SoC所需集成的功能日趋复杂化。因此,掌握复杂SoC的设计能力尤为重要。近年来,我国半导体行业暴露出“缺芯少魂”的软肋。虽然历经数年的努力追赶,我国已经基本掌握了半导体行业的关键技术,但一些关键技术仍与世界一流水平存在差距,实现我国半导体行业的“自主可控”道阻且长。与此同时,随着我国信息技术水平的不断深化与发展,集成电路产业已经成为我国国民经济持续增长、高新技术不断取得新进展的重要支柱。 [color=rgba(0, 0, 0, 0.9)]可以预见,在未来相当长的时间里,芯片技术仍是制约我国发展的“卡脖子”关键技术。然而,我国半导体行业面临技术水平相对落后、关键技术依赖国际产业链、国内现有从业人员技术水平参差不齐、国内相关人才储备不足的困境。在可预见的未来,我国面临半导体行业与世界其他国家脱钩的风险。因此,加快我国半导体行业关键技术人才的培养迫在眉睫。目前我国缺少以工程实践为导向的关于SoC技术的教材与参考书,基于多年来的科研与教学经验,我们发现国内高等院校中数字集成电路领域的理论知识与工程实践存在一定脱节。本书的编写初衷是在数字SoC设计领域,架构一座连接本科生、研究生教学课程至工业界成熟解决方案的桥梁,形成从理论知识到工程实践的清晰脉络。 [color=rgba(0, 0, 0, 0.9)]因此,本书所希望覆盖的读者人群包括完成微电子与集成电路专业基础课程学习的高年级本科生、从事数字SoC设计方向研究的研究生与相关领域的初期从业人员。 [color=rgba(0, 0, 0, 0.9)]数字集成电路设计并非初学者可以在短时间内快速入门的专业,一方面,它既要求从业人员具备扎实的学科基础知识,以此来分析现有的设计案例,掌握成熟的电子设计自动化工具;另一方面,它又要求从业者具备丰富的实践经验,通过大量的工程实践不断加深对理论的理解。 [color=rgba(0, 0, 0, 0.9)]本书的编写风格紧紧围绕以上理念展开。 [color=rgba(0, 0, 0, 0.9)]第1章对数字集成电路与SoC进行介绍,第2~4章关于数字SoC设计基础的内容主要面向刚刚进入本领域学习的人员,如本科生、低年级研究生。第1章针对行业发展历史与基础性知识进行了翔实的介绍,对高年级本科生专业课中与数字集成电路设计相关的内容进行了针对性的知识回顾。第2~4章针对数字SoC设计过程中的硬件描述语言与电子设计自动化工具进行了详细的入门介绍,已经具备数字集成电路基础知识的初学者可以参考其中的案例进行一定的初步摸索实践。第5章针对数字SoC设计中的关键步骤、难点内容进行了针对性的详细讲解。该章的知识性与技术性内容非常深入,不再赘述浅显的知识或常见的问题,因此该章适合高年级的研究生或具备一定开发经验的从业人员进行学习和参考。第6章与第7章讲述基于FPGA与ASIC的数字SoC设计,以简单的片上系统设计项目为案例,对数字SoC设计的流程进行了讲解。这两章内容适合已经完成前5章学习的研究生或具备SoC设计经验的从业人员进行学习和参考。 [color=rgba(0, 0, 0, 0.9)]本书凝结了北京理工大学集成电路与电子学院微电子技术研究所SoC团队近10年的集体智慧与经验,全书由王卫江统稿,由王卫江、薛丞博、高巍、张靖奇共同执笔完成。感谢同事王兴华老师、高巍老师与薛丞博老师提供数字SoC设计领域丰富的工程实践经验总结与多年科研教学材料。感谢来自SoC课题组的博士研究生张靖奇,硕士研究生李泽英、朱翔宇、张拓锋、李志慧、宣卓、黄彦杰、何祥、陈任阳、孟庆旭、刘美兰、孔繁聪、蒲康然、李鸿烁、周炜然、蒋宇杰等同学对本书的编写和出版工作做出的积极努力。由于篇幅有限,对于本书中提及与引用的参考文献作者无法一一列出致谢,他们的工作为本书提供了强有力的理论和工程实践的支撑。在此,向他们一并致以由衷的感谢!由于时间仓促,不足与错误之处望读者批评指正! 王卫江 2023年3月 [color=rgba(0, 0, 0, 0.9)]
|