新書推薦:
《
现代吴语的研究(中华现代学术名著3)
》
售價:NT$
296.0
《
天下的当代性:世界秩序的实践与想象(新版)
》
售價:NT$
352.0
《
德国天才4:断裂与承续
》
售價:NT$
500.0
《
妈妈的情绪,决定孩子的未来
》
售價:NT$
194.0
《
推拿纲目
》
售價:NT$
1836.0
《
精致考古--山东大学实验室考古项目论文集(一)
》
售價:NT$
1112.0
《
从天下到世界——国际法与晚清中国的主权意识
》
售價:NT$
347.0
《
血色帝国:近代英国社会与美洲移民
》
售價:NT$
265.0
|
編輯推薦: |
本书通过大量实例由浅入深地介绍了数字电路和数字系统设计中的重要概念和知识要点。本书分两大部分。*部分重点关注数字电路设计层面,偏重基础。第2章到第6章为Verilog语法与数字电路设计相关知识,包括常用语法、基本数字电路单元等。第7章到第9章重点介绍高级数字设计知识,包括数字系统架构设计、复杂数字系统中常用的电路单元、算法,并给出了大量工程实例。第10章给出了一些重要的工程设计经验,包括文档管理、代码设计、系统验证、高可靠性设计等。第二部分重点关注数字系统设计层面。第11章到第13章介绍了常用数字系统关键电路,包括与处理器系统相关的存储结构与存储访问技术、存储介质(硬盘、闪存、DDR等)与驱动电路、处理器总线结构与协议等。第14章和第15章介绍了电路可测性设计、静态定时分析、芯片工程修改的相关知识。第16章和第17章从电路设计层面到系统设计层面介绍了降低电路功耗的方法。第18章到第20章介绍常用串行总线和串行通信协议,包括PCI Express、SATA、USB及以太网技术。
|
內容簡介: |
本书通过大量实例由浅入深地介绍了数字电路和数字系统设计中的重要概念和知识要点。本书分两大部分。*部分重点关注数字电路设计层面,偏重基础。第2章到第6章为Verilog语法与数字电路设计相关知识,包括常用语法、基本数字电路单元等。第7章到第9章重点介绍高级数字设计知识,包括数字系统架构设计、复杂数字系统中常用的电路单元、算法,并给出了大量工程实例。第10章给出了一些重要的工程设计经验,包括文档管理、代码设计、系统验证、高可靠性设计等。第二部分重点关注数字系统设计层面。第11章到第13章介绍了常用数字系统关键电路,包括与处理器系统相关的存储结构与存储访问技术、存储介质(硬盘、闪存、DDR等)与驱动电路、处理器总线结构与协议等。第14章和第15章介绍了电路可测性设计、静态定时分析、芯片工程修改的相关知识。第16章和第17章从电路设计层面到系统设计层面介绍了降低电路功耗的方法。第18章到第20章介绍常用串行总线和串行通信协议,包括PCI Express、SATA、USB及以太网技术。
|
關於作者: |
Kishore Mishra 20年前进入Allied Telesyn International公司,最初从事以太网芯片设计。此后,他先后在Texas Instrument和Intel公司从事芯片设计和架构设计。他感兴趣和从事过的设计领域包括处理器外围芯片组设计,PCI Express、SATA和DDR技术,芯片功率管理低功耗设计技术。Kishore与他人合作创立了多家公司,设计了PCI Express和SATA控制器芯片内核。作为ASIC Architect公司的CEO,带领公司设计了很多在业界很有影响力的IP核。在2008年,ASIC Architect公司被Gennum公司收购,他开始负责设计PCI Express交换芯片,并担任数字IP部门负责人。他负责设计的PCI Express交换芯片IP核被很多大型公司使用并实现了量产。他曾在多个国际会议上发表论文并持有3项美国专利。Kishore近年来专注于教材编写,分享20年来积累的数字系统设计知识和经验。
Kishore Mishra 20年前进入Allied Telesyn International公司,最初从事以太网芯片设计。此后,他先后在Texas Instrument和Intel公司从事芯片设计和架构设计。他感兴趣和从事过的设计领域包括处理器外围芯片组设计,PCI Express、SATA和DDR技术,芯片功率管理低功耗设计技术。Kishore与他人合作创立了多家公司,设计了PCI Express和SATA控制器芯片内核。作为ASIC Architect公司的CEO,带领公司设计了很多在业界很有影响力的IP核。在2008年,ASIC Architect公司被Gennum公司收购,他开始负责设计PCI Express交换芯片,并担任数字IP部门负责人。他负责设计的PCI Express交换芯片IP核被很多大型公司使用并实现了量产。他曾在多个国际会议上发表论文并持有3项美国专利。Kishore近年来专注于教材编写,分享20年来积累的数字系统设计知识和经验。
|
目錄:
|
第1章 绪论
第2章 寄存器传输语言(RTL)
第3章 可综合的Verilog用于电路设计
3.1 什么是Verilog
3.2 Verilog的发展历史
3.3 Verilog的结构
3.4 硬件RTL代码的执行
3.5 Verilog模块分析
3.6 Verilog中的触发器
3.6.1 带RST复位引脚的触发器
3.6.2 没有复位引脚的触发器
3.7 组合逻辑
3.7.1 always块语句
3.7.2 case和if-else语句
3.7.3 赋值语句
3.8 Verilog操作符
3.8.1 操作符描述
3.8.2 操作符的执行顺序
3.8.3 Verilog中的注释
3.9 可重用和模块化设计
3.9.1 参数化设计
3.9.2 Verilog函数
3.9.3 Verilog中的generate结构
3.9.4 Verilog中的`ifdef
3.9.5 数组、多维数组
第4章 用于验证的Verilog语法
4.1 Verilog的测试平台
4.2 initial语句
4.3 Verilog 系统任务
4.3.1 $finish$stop
4.3.2 $display$monitor
4.3.3 $time,$realtime
4.3.4 $random$random(seed)
4.3.5 $save
4.3.6 $readmemh$writememh
4.3.7 $fopen$fclose
4.4 任务
4.5 存储器建模
4.6 其他Verilog语法结构
4.6.1 while循环
4.6.2 for循环、repeat
4.6.3 forcerelease
4.6.4 fork join
4.7 一个简单的testbench
第5章 数字电路设计初级篇
5.1 组合逻辑门
5.1.1 逻辑1和逻辑0
5.1.2 真值表
5.1.3 晶体管
5.1.4 反相器
5.1.5 与门
5.1.6 或门
5.1.7 与非门
5.1.8 或非门
5.1.9 XOR(异或)、XNOR(异或非)
5.1.10 缓冲门
5.1.11 复用器
5.1.12 通用逻辑门NAND、NOR
5.1.13 复杂门电路
5.1.14 噪声容限
5.1.15 扇入和扇出
5.2 德摩根定理
5.3 通用D触发器
5.3.1 D触发器时序图
5.4 建立和保持时间
5.4.1 建立时间
5.4.2 保持时间
5.4.3 亚稳态
5.5 单比特信号同步
5.5.1 两个触发器构成的同步器
5.5.2 信号同步规则
5.6 关于时序
5.7 事件边沿检测
5.7.1 同步上升沿检测
5.7.2 同步下降沿检测
5.7.3 同步上升下降沿检测
5.7.4 异步输入上升沿检测
5.8 数值系统
5.8.1 十进制数值系统
5.8.2 二进制数
5.8.3 十进制数到二进制数的转换
5.8.4 十六进制数值系统
5.8.5 十六进制数和二进制数的转换
5.9 加法和减法
5.9.1 行波进位加法器
5.9.2 超前进位加法
5.9.3 累加器
5.10 乘和除
5.10.1 乘以一个常数
5.10.2 除以常数(2的整数次幂)
5.11 计数器
5.11.1 加法减法计数器
5.11.2 LFSR(线性反馈移位寄存器)计数器
第6章 数字设计基础模块
6.1 LFSR
6.1.1 引言
6.1.2 斐波那契LFSR与伽罗瓦LFSR
6.1.3 LFSR反馈多项式
6.1.4 LFSR的用法
6.2 扰码与解扰
6.2.1 什么是扰码与解扰
6.2.2 扰码的作用
6.2.3 串行扰码器
6.2.4 并行扰码器
6.2.5 扰码电路设计要点
6.2.6 PCIe扰码电路
6.2.7 Verilog RTL-PCIe扰码器
6.3 检错与纠错
6.3.1 检错
6.3.2 错误纠正
6.3.3 纠错编码
6.3.4 汉明码
6.3.5 汉明码应用举例DDR ECC
6.3.6 BCH编码
6.3.7 里德-所罗门编码
6.3.8 LDPC编码
6.3.9 卷积码
6.3.10 卷积译码
6.3.11 软判决与硬判决
6.4 奇偶校验
6.4.1 偶校验和奇校验
6.4.2 奇偶校验位的生成
6.4.3 奇偶校验的应用
6.5 CRC(循环冗余校验)
6.5.1 CRC介绍
6.5.2 串行CRC计算
6.5.3 并行CRC计算
6.5.4 部分数据CRC计算
6.5.5 常用CRC类型
6.6 格雷编码解码
6.6.1 二进制码转换为格雷编码的通用电路
6.6.2 格雷码转换为二进制码的通用电路
6.7 译码器(7段数码显示实例)
6.8 优先级编码
6.8.1 常规编码器的Verilog 代码
6.8.2 优先级编码器的Verilog代码
6.9 8b10b编码解码
6.9.1 8b10b编码方式
6.9.2 多字节8b10b编码
6.9.3 disparity选择8b10b编码方案
6.10 64b66b编码解码
6.10.1 64b66b编码机制
6.10.2 128b130b编码机制
6.11 NRZ、NRZI编码
6.12 移位寄存器与桶形移位器
6.12.1 左移位与右移位
6.12.2 左循环移位与右循环移位
6.12.3 桶形移位器
6.13 数据转换器
6.13.1 由宽到窄数据转换
6.13.2 由窄到宽数据转换
6.14 同步技术
6.14.1 使用FIFO进行的数据同步
6.14.2 握手同步方式
6.14.3 脉冲同步器
6.14.4 相位、频率关系固定时的跨时钟域数据传输
6.14.5 准同步时钟域
6.15 计时(微秒、毫秒和秒)脉冲的产生
6.16 波形整形电路
第7章 数字设计先进概念(第1部分)
7.1 时钟
7.1.1 频率和时钟周期
7.1.2 不同的时钟机制
7.1.3 同步时钟
7.1.4 源同步时钟
7.1.5 嵌入式时钟
7.1.6 准同步时钟
7.1.7 异步系统
7.1.8 扩频时钟
7.1.9 时钟抖动
7.2 复位方法
7.2.1 非同步复位(异步复位)
7.2.2 复位同步电路
7.2.3 同步复位
7.2.4 异步复位和同步复位的选择
7.3 吞吐率
7.3.1 增加吞吐率的方法
7.3.2 更高的频率
7.3.3 更宽的数据通道
7.3.4 流水线
7.3.5 并行处理
7.3.6 无序执行(乱序执行)
7.3.7 高速缓存(cache)
7.3.8 预读取
7.3.9 多核
7.4 时延
7.4.1 降低时延的方法
7.5 流控
7.5.1 介绍
7.5.2 数据转发:data_valid和data_ack
7.5.3 基于信用的流控:PCIe
7.5.4 SATA流控机制
7.5.5 吉比特以太网流控
7.5.6 TCP滑动窗流控机制
7.6 流水线操作
7.6.1 流水线介绍
7.6.2 流水线的简单实例
7.6.3 RISC流水线处理器
7.6.4 流水线结构和并行操作
7.6.5 流水线加法器
7.6.6 并行加法器
7.6.7 系统设计中的流水线
7.7 out-of-order执行(乱序执行)
7.7.1 现代处理器:out-of-order执行
7.7.2 SATA NCQ:out-of-order执行
第8章 数字设计先进概念(第2部分)
8.1 状态机
8.1.1 引言
8.1.2 状态机泡泡图
8.1.3 状态机:推荐方式
8.1.4 二进制编码的状态机
8.1.5 独热码编码的状态机
8.1.6 二进制编码和独热码比较
8.1.7 米里型和摩尔型状态机
8.1.8 子状态机
8.2 FIFO
8.2.1 引言
8.2.2 FIFO操作
8.2.3 同步FIFO
8.2.4 同步FIFO
8.2.5 异步FIFO的工作机制
8.2.6 异步FIFO的实现
8.3 FIFO高级原理
8.3.1 FIFO的大小
8.3.2 FIFO的深度
8.3.3 辅助数据或标签
8.3.4 快照回退操作
8.3.5 直通交换和存储转发模式
8.3.6 FIFO指针复位
8.3.7 不同的写入、读取数据宽度
8.3.8 使用FIFO的缺点
8.3.9 基于触发器或者SRAM的FIFO
8.4 仲裁
8.4.1 关于仲裁
8.4.2 常规仲裁方案
8.4.3 严格优先级轮询
8.4.4 公平轮询
8.4.5 公平轮询(仲裁wo死周期)
8.4.6 带权重的轮询(WRR)
8.4.7 权重轮询(WRR):第二种方法
8.4.8 两组轮询
8.5 总线接口
8.5.1 总线仲裁
8.5.2 split-transaction(分割处理)总线
8.5.3 流水线式总线
8.6 链表
8.7 近期最少使用(LRU)算法
8.7.1 LRU的矩阵实现
8.7.2 采用矩阵法实现LRU的Verilog代码
第9章 设计ASICSoC
9.1 设计芯片如何开展
9.2 结构和微结构
9.2.1 尽可能保持简单
9.2.2 善于平衡
9.2.3 处理好错误和异常
9.3 数据路径
9.3.1 数据流
9.3.2 时钟
9.4 控制单元
9.4.1 关注边界条件
9.4.2 注意细节
9.4.3 多输入点
9.4.4 正确理解规范
9.5 其他考虑
9.5.1 门数
9.5.2 焊盘受限与内核受限
9.5.3 时钟树和复位树
9.5.4 EEPROM、配置引脚
第10章 设计经验
10.1 文档
10.1.1 可读性
10.1.2 注释
10.1.3 命名规则
10.2 在编写第一行代码之前
10.2.1 直到你脑海里有了蓝图才开始
10.2.2 脑海中的模拟
10.3 一些建议
10.3.1 哪种风格数据流或算法
10.3.2 寄存器型输出
10.3.3 使用状态机而不是松散的控制逻辑
10.3.4 综合和仿真不匹配
10.3.5 设计的模块化和参数化
10.3.6 加法器、减法器的有效使用
10.4 需要避免的情况
10.4.1 不要形成组合逻辑环路
10.4.2 避免意外生成锁存器
10.4.3 不要采用基于延迟的设计
10.4.4 不要对一个变量多次赋值
10.5 初步完成RTL代码之后
10.5.1 初步完成代码之后的回顾
10.5.2 目测RTL代码
10.5.3 对发现bug感到惊喜
10.6 设计要面向未来使用需求
10.6.1 易于实现的寄存器结构
10.6.2 考虑将来需求
10.7 高速设计
10.7.1 使用独热码进行状态编码
10.7.2 使用互斥的数据选择器而不是优先级编码器
10.7.3 避免大量散乱的组合逻辑电路
10.7.4 复制或克隆
10.7.5 使用同步复位时要小心
10.7.6 将后到的信号放在逻辑的前面
10.8 SoC设计经验
10.8.1 使用双触发器同步电路
10.8.2 将所有复位电路放在一起
第11章 系统概念(第1部分)
11.1 PC系统结构
11.2 存储器
11.2.1 存储器层次结构
11.2.2 CPU使用高速缓存的方法
11.2.3 cache的架构
11.2.4 cache的组织方式
11.2.5 虚拟存储器(Virtual Memory)
11.2.6 动态随机访问存储器(DRAM)
11.2.7 静态随机访问存储器(SRAM)
11.2.8 内容可寻址存储器(CAM)
11.2.9 CAM的Verilog模型
11.2.10 ROM、PROM、EPROM和EEPROM
11.2.11 闪存
11.3 中断
11.3.1 中断不同部分
11.3.2 中断向量表
11.3.3 IO设备产生的中断
11.3.4 高级可编程中断控制器
11.3.5 INTx中断共享
11.3.6 MSI中断
11.3.7 MSI-X中断
11.3.8 中断聚合
11.3.9 中断产生的RTL示例
11.4 PIO(Programmed IO)模式的数据传送
11.5 直接存储器访1
|
內容試閱:
|
前言
本书面向从事数字系统设计和数字系统架构设计的研究生和工程师。本书划分为两大部分,第1章到第10章重点关注数字电路设计层面,第11章到第20章重点关注数字系统设计层面。
第1章重点介绍了本书面向的读者群体,以及本书的主要内容、组织方式和这样组织的原因。
第2章介绍了Verilog语言的历史、发展变化,以及Verilog在现代数字设计中的地位。
第3章和第4章介绍了在设计和验证中常用的Verilog语法结构。其中,第3章重点介绍了进行数字设计时使用的可综合的Verilog语法结构,同时给出了很多可重用的设计实例,这些例子中普遍使用了parameter、function和generate这类可重用设计方式;第4章初步介绍了电路验证问题,目的是使读者对电路验证有一个基本理解,能够使用Verilog进行模块级验证。
第5章介绍了数字设计中的基本单元,包括逻辑门、真值表、德摩根定理、建立时间保持时间、边沿检测和数值系统。
第6章介绍了数字设计中的一些常用基本模块,包括LFSR(线性反馈移位寄存器)、扰码与解扰、检错与纠错、奇偶校验、CRC(循环冗余校验)、格雷码编码解码和数字同步技术。在介绍这些基本模块的同时,给出了它们的常见实际应用例子。
第7章介绍了芯片设计和架构设计中的一些先进概念,主要包括时钟和复位设计策略、增加数字电路吞吐率的方法、减少电路延迟的方法、不同的流控机制、流水线操作、乱序执行等。
第8章继续介绍先进的数字设计概念,主要包括FIFO的操作和设计、状态机设计、仲裁、现代总线接口的种类、链表数据结构、LRU算法的用处及算法实现。
第9章介绍了怎样设计一片ASIC或SoC,介绍了芯片的微结构、芯片划分、数据通道和控制逻辑,介绍了与芯片实际设计相关的时钟树、复位树和EEPROM的使用。
第10章介绍了对芯片设计非常重要的实践经验,包括哪些事情应该避免,哪些经验应该采用。其中一节还给出了高速电路设计中好的经验。
本书的第二部分重点介绍了系统架构设计和IO协议。第11章介绍了存储器,包括cache在内的存储层次结构,中断机制和操作、不同类型的DMA和DMA操作。这里给出了一个典型DMA控制器的RTL设计代码,并通过一个详细的实例介绍了分集式DMA的概念。
第12章描述了硬盘驱动器的工作机制和相关电路,包括固态盘驱动器的基本原理和操作细节。本章介绍了DDR的操作,介绍了系统中的BIOS、OS、驱动程序以及它们和硬件之间的相互操作。
第13章描述了嵌入式系统和不同种类的内部总线,如嵌入式设计中的AHB总线和AXI总线。本章还介绍了透明和非透明桥接的概念。
第14章和第15章引入了与芯片设计实际相关的一些知识。第14章介绍了芯片测试、DFT、边界扫描和ATPG。
第15章提供了详细的芯片设计流程,介绍了静态定时检查和分析,给出了一个实际的进行ECO的例子。
第16章和第17章介绍了低功耗设计方法和功耗管理协议。其中,第16章详细描述了不同的降低功耗的技术,包括变频技术、门控时钟技术、功率阱隔离技术,这些技术可以在不同层面上降低功耗;第17章介绍了功率管理协议,包括系统的S状态、CPU的C状态、设备的D状态,以及它们在工作中是如何相互配合的。
第18章解释了串行总线技术和PCS、PMA层的具体功能。本章通过实例介绍了串行IO的时钟关系,弹性缓冲区FIFO的操作特点,以及通道绑定、链路聚合和线路翻转等重要概念。本章还介绍了PMA中常用的发送接收均衡、PLL和终端匹配技术。
第19章和第20章重点介绍串行总线协议和操作。其中,第19章介绍了PCIe、Serial ATA、USB和雷电接口技术;第20章从10M以太网开始,按照以太网的历史发展沿革,一直介绍到最新的100G以太网。
附录A列举了作者曾经参考或引用过的资源。附录B介绍了FPGA的优点、结构、应用、主要生产厂商以及与FPGA设计流程相关的知识。附录C介绍了用于验证的测试平台(testbench)。附录D重点介绍了System Verilog断言。
希望此书能够通过大量实例清晰地解释数字系统设计中的重要概念和知识要点。此书可供学习数字系统设计和芯片设计课程的学生使用,此书可以为他们今后从事相关工作提供引导和帮助。
Kishore Mishra
Silicon Valley, USA
|
|