EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本书结合作者多年工作经验,系统地介绍了FPGA/cpld的基本设计方法。在介绍fpga/cpld概念的基础上,介绍了altera上流fpga/cpld的结构与特点,并通过丰富的实例讲解quartus ii与modelsim、synplify pro等常用eda工具的开发流程。0 Z) t; i& n$ Q4 w0 f
本书附带两张光盘:光盘1中收录了altera qualtus ii web版软件,读者可以安装使用;光盘2中收录了本书所有实例的完整工程、源代码、详细操作步骤和使用说明文件,便于读者边学边练,提高实际应用能力。) i' j# l6 V3 ?- D6 ~; o- p( i
本书可作为高等院校通信工程、电子工程、计算机、微电子与半导体等专业的教材,也可作为硬件工程师和ic工程师的实用工具书。
4 R5 V. R0 x8 d- l3 \% X" x: G4 D7 ? T, z" A5 c1 Q3 ]
第1章 可编程逻辑设计指导原则 1, [# p3 z3 ]8 E# o, W
1.1 可编程逻辑基本设计原则 1
; ~. W; s7 y/ s# k% h; X/ C1.1.1 面积和速度的平衡与互换原则 1: _7 ?. i) n: x. I9 Q$ D9 P
1.1.2 硬件原则 11
. m: m$ z$ e& C' z1.1.3 系统原则 13: @: j- O4 p& e( L7 v1 \; i. S; B
1.1.4 同步设计原则 17
( k1 p9 X! L2 f! v1.2 可编程逻辑常用设计思想与技巧 19
/ C# j! U" P. i* e( o- [! h1.2.1 乒乓操作 19* `5 M s W8 _ W8 {+ A/ P. e
1.2.2 串并转换 21& `% v& q% _9 Y9 A
1.2.3 流水线操作 22
$ {7 B8 i$ l* h' l2 Z* I! s1.2.4 异步时钟域数据同步 235 f+ U0 W; V( d6 D; X. b1 H6 X
1.3 Altera推荐的Coding Style 277 K6 O$ x8 _! h- s: j2 z0 }4 R" n2 V
1.3.1 Coding Style的含义 27
2 Y; o2 q9 y. C6 j& V; y+ R. x0 j1.3.2 结构层次化编码(Hierarchical Coding) 27- [0 U8 ^% X* j4 Z3 l3 r) K
1.3.3 模块划分的技巧(Design Partitioning) 29
: O* c! \( J5 c; \# K3 ]$ i) Z$ |1.3.4 组合逻辑的注意事项 30( J% Q" |# j+ c/ M0 R9 H3 V5 S# [ `
1.3.5 时钟设计的注意事项 339 I; q2 F3 `8 D2 l! g2 P0 v5 D4 [, |
1.3.6 全局异步复位资源 39# i8 y+ r. s T& {/ Q; X9 T1 m# z3 b5 }) J
1.3.7 判断比较语句case和if...else的优先级 39( v: x, \& R: ?& |* z0 W
1.3.8 使用Pipelining技术优化时序 405 }' ]+ ?1 \% K6 A! M8 H1 f
1.3.9 模块复用与Resource Sharing 40
- ]2 {5 o- X0 w9 k( ~8 B1.3.10 逻辑复制 42
0 l' |: @' p9 |4 a$ l1.3.11 香农扩展运算 44+ Z8 p0 R, h Z
1.3.12 信号敏感表 468 ^ S2 j! R3 ^1 E% z
1.3.13 状态机设计的一般原则 47
n$ D/ a3 O% D0 A0 H9 ^1.3.14 Altera Megafunction资源的使用 498 i2 R# V6 d5 E7 S+ k
1.3.15 三态信号的设计 49
Y/ A' }6 k# [( ~1.3.16 加法树的设计 50
' d4 K& G6 x# R1.4 小结 52
( L& |( z- I3 j; `7 r0 ~: o1 Z5 ]2 m1.5 问题与思考 52 第2章 Altera器件高级特性与应用 531 p/ o# [1 ]8 G- o1 J
2.1 时钟管理 537 M6 B+ }. D# S) [$ I0 L( x
2.1.1 时序问题 532 @+ W+ x9 t6 v4 A
2.1.2 锁相环应用 60
7 D% u: F7 y/ k& p( g+ [! M! ~$ W2.2 片内存储器 69
) Y3 M8 t0 H( b$ M8 I% i9 P" D2.2.1 RAM的普通用法 69; B) E! x' V! b/ g6 M
2.2.2 RAM用做移位寄存器 73
+ `' v1 H- p( r- @2.2.3 RAM实现固定系数乘法 74
% t! r2 o; A' `+ u* m$ j2.3 数字信号处理 754 p/ O; ~: r( n! v3 {' z
2.3.1 DSP块资源 75
! Q& n+ O$ t E3 B1 D2.3.2 工具支持 79
# u! K$ L5 v, |% ?1 Z: F2.3.3 典型应用 79
& P |9 J1 |# L! l! @4 f8 C2.4 片外高速存储器 80
# M8 m: j6 {& b! L2.4.1 存储器简介 80- [" D6 y$ U% W( O
2.4.2 ZBT SRAM接口设计 83
+ `9 {, C+ s a G' a- X0 L2.4.3 DDR SDRAM接口设计 85# `: P" E6 a& f' C8 D
2.4.4 QDR SRAM接口设计 998 `5 V; B' o/ W3 q c
2.4.5 DDR2、QDR II和RLDRAM II 100
" @* [$ t( x2 k9 o/ @: V/ C2.4.6 软件支持和应用实例 1008 {2 {/ y5 [0 N7 D( T
2.5 高速差分接口和DPA 1021 L5 [( i a \" }( q: n9 j
2.5.1 高速差分接口的需求 102
$ M: W/ B. u# X6 D5 r7 w2.5.2 器件的专用资源 102 C+ u7 w3 v* o+ x4 c8 ^' O6 x
2.5.3 动态相位调整电路(DPA) 109
/ \& C+ V( l& f2.5.4 软件支持和应用实例 112& W' S( s% ]* o4 T. ~4 N
2.6 高速串行收发器 115 C5 L& |5 J' I2 i! S; a
2.7 小结 117 S6 A1 H# A! O* T1 \7 h& T% g4 S
2.8 问题与思考 117 第3章 LogicLock设计方法 119
9 C* B- G; ^* _9 p" ?; V& h3.1 LogicLock设计方法简介 1191 ?8 e* _5 H9 d3 ?
3.1.1 LogicLock设计方法的目标 120& K9 G0 _) |! n, t0 A( B
3.1.2 LogicLock设计流程 122
* P i# T- s* R! L, ]& F+ o) ?3.1.3 LogicLock设计方法支持的器件族 122! z3 r+ B7 m# d. N9 F% v# t1 t
3.2 LogicLock区域 122
& B3 H: H7 v7 F5 z e3.2.1 Region的类型与常用属性值 123; b6 @0 |0 Z6 | L; E& U3 V
3.2.2 Region的创建方法 1246 C3 r# x+ i: S& x& d
3.2.3 Region的层次结构 129/ G" n1 J7 t/ y5 F5 H
3.2.4 指定Region的逻辑内容 130
6 f" f* }+ W& F" D- a& I4 M. m3.3 LogicLock的约束注意事项 132
( c6 ]- [4 C$ s* Q1 A1 _! A6 [ _( q6 \3.3.1 约束优先级 132
3 l, o0 t( I4 d( Y' i% N/ l# H3.3.2 规划LogicLock区域 133! Z1 i* C/ ~0 K& A) b; {! Q
3.3.3 向LogicLock区域中布置器件特性 133
k8 f9 z5 A( k0 ?3.3.4 虚拟引脚(Virtual Pins) 134) s" o3 r4 v: \. R. E
3.4 反标注布线信息 135* S1 N3 V0 Q8 d1 k
3.4.1 导出反标注布线信息 136
! T3 A: Y9 W# V# _5 S; v2 X# _3.4.2 导入反标注布线信息 138* }1 Z" \+ K- e
3.5 LogicLock设计方法支持的Tcl Scripts 138
$ h5 t- k$ w( p, i# N, u3.6 Quartus II基于模块化的设计流程 139" T- t% E2 d. C5 M% k
3.7 小结 149
3 N( B6 ]! Z# A( q( @3.8 问题与思考 149 第4章 时序约束与时序分析 151; T. d3 y- V/ o9 M
4.1 时序约束与时序分析基础 1516 k' ?$ r! ^6 W5 g
4.1.1 周期与最高频率 152' ]9 u* \( F# t% L+ h4 M# ^
4.1.2 利用Quartus II工具分析设计 154
: @" h4 X4 c( V' H8 k# C4.1.3 时钟建立时间 157; s( ?4 P" Y& H+ T% a. i: i; s
4.1.4 时钟保持时间 158- |% \: J- q( L9 H: v' @
4.1.5 时钟输出延时 158, z3 ]" ~4 N ?; X
4.1.6 引脚到引脚的延迟 159) T- D- H+ b1 }' i
4.1.7 Slack 159
7 R1 v6 d3 H) U6 C( G4.1.8 时钟偏斜 160
$ u0 G* d: T# Y, I m9 E# @9 d. B4.1.9 Quartus II时序分析工具和优化向导 160
8 \9 p1 F8 f3 L, _- v- M4.2 设置时序约束的常用方法 1617 Q6 L& D; p% v- K" `# z
4.2.1 指定全局时序约束 162) Z& p" k% _" a' F" d/ m9 N
4.2.2 指定个别时钟约束 166
- B4 A% i1 ^. f: U+ z4.3 高级时序分析 174- v+ @* C. u' l' k+ p
4.3.1 时钟偏斜 174
+ V+ d: Q4 v2 g* u4.3.2 多时钟域 176" y3 r0 A3 o8 l' q
4.3.3 多周期约束 176; L# C0 Y4 E4 o' f0 X3 ^5 U
4.3.4 伪路径 183
" ^! W+ Q, i [4.3.5 修正保持时间违例 185$ l2 B/ H3 i$ \
4.3.6 异步时钟域时序分析 186% P* e, H/ E( j8 c% d
4.4 最小化时序分析 187
: I' n( Z( ]/ s4 A6 @4.5 使用Tcl工具进行高级时序分析 1886 U+ z6 E5 L) G$ b, }# k
4.6 小结 189 H4 G, ]' C0 o) A- g1 a
4.7 问题与思考 189 第5章 设计优化 191
: y2 W* `6 r1 N1 L0 Q: n7 w% K5.1 解读设计 191, @* `& ^& f- }/ c- t7 j5 f g) ?
5.1.1 内部时钟域 192- b6 {2 e. C z+ i
5.1.2 多周期路径和伪路径 193& S9 }/ c1 P4 G
5.1.3 I/O接口的时序要求 194
2 ^. V0 r6 R7 A5.1.4 平衡资源的使用 1942 B& m1 R7 z3 n$ g2 t" v; a; j
5.2 设计优化的基本流程和首次编译 195& l u' C. W0 `3 w3 e, N
5.2.1 设计优化基本流程 195
. |) v/ o+ H( q% U5 I: p( O5 A5.2.2 首次编译的约束和设置 196
1 l* e+ r7 ~ J. b* U1 s& q5 E5.2.3 查看编译报告 198% O) j, n# ]3 R! s% l
5.3 资源利用优化 2009 P# I0 q7 R W+ M5 e" `8 j. ^
5.3.1 设计代码优化 201
% ]6 V" Z7 n6 e0 A0 y5.3.2 资源重新分配 201; G% k: ]0 _; k) y) K% ~5 A) w
5.3.3 解决互连资源紧张的问题 203& C7 A+ U6 T" K. u5 }: |# A9 U
5.3.4 逻辑综合面积优化 203
0 \- A8 a6 P7 P& s; O7 v' N2 W/ p( G5.3.5 网表面积优化 207
( j) v9 s9 N; K% T8 r# f- `5.3.6 寄存器打包 209+ R7 C! W Z) N
5.3.7 Quartus II中的资源优化顾问 211
* i6 c. j% N4 |* ?, ^% a% l5.4 I/O时序优化 211
( |" ^" f- \7 f& C, s2 }5.4.1 执行时序驱动的编译 211
. ]# G1 i1 I6 y9 a! i5.4.2 使用IOE中的触发器 212
6 F: x: P1 J2 l* O) q5.4.3 可编程输入输出延时 2153 b# f9 c: Q: }% ?* ^3 ~# ?7 w5 A
5.4.4 使用锁相环对时钟移相 217
# ~5 y# W/ c) T0 k7 e* L5.4.5 其他I/O时序优化方法 218
+ e& B6 w) \' [9 t7 m5.5 最高时钟频率优化 219
: d' Z+ Z7 t4 q$ m5.5.1 设计代码优化 219
( i% Z; y, d5 }5.5.2 逻辑综合速度优化 225
; V8 q. `: y5 }5.5.3 布局布线器设置 2278 K9 `4 k* s6 `) S" R9 s
5.5.4 网表优化和物理综合 228
9 }/ K Z8 s& s! Q$ K5.5.5 使用LogicLock对局部进行优化 233# m" w9 {# O( e& g- X
5.5.6 位置约束、手动布局和反标注 234* G p5 K* D6 J! C8 [
5.5.7 Quartus II中的时序优化顾问 235
! d% w% J! T) m, {5 q5.6 使用DSE工具优化设计 236) S& H& O: t- Q( P- i+ ]
5.6.1 为什么需要DSE 236
$ r- _; @$ r0 T, \% x! t! N5.6.2 什么是DSE,如何使用 236* g% x3 l% Z; V& Z
5.7 如何减少编译时间 2386 U! p3 D+ D D9 w/ g
5.8 设计优化实例 239
5 P) W. ?8 ]0 T5 Q( v$ L3 {5.9 小结 2428 n9 _) W/ O# N6 d9 h
5.10 问题与思考 243 第6章 Altera其他高级工具 245
; ]/ k9 n+ } w2 v1 n6.1 命令行与Tcl脚本 245( }1 u6 I9 O% F8 M* T
6.1.1 命令行脚本 2464 N: l. B9 f# e# t& K. T
6.1.2 Tcl脚本 250 p( g# `2 Q3 k, q' o
6.1.3 使用命令行和Tcl脚本 254; @( ~# i7 |) C1 E
6.2 HardCopy流程 255
' z9 P& z. I5 u; c( m. ~6.2.1 结构化ASIC 255
, s. c/ e7 M3 |( [, y6.2.2 HardCopy器件 258/ b1 i& \8 X* A$ M
6.2.3 HardCopy设计流程 2603 o+ O" f9 T4 N! V
6.3 基于Nios II处理器的嵌入式系统设计 263
& v8 u8 j% a& s- @2 n& w) z9 m0 I6.3.1 Nios II处理器系统 2634 G& g; @* o8 i( L" ^6 N
6.3.2 Avalon交换结构 266/ C+ a/ W) A2 c' n( I; {
6.3.3 使用SOPC Builder构建系统硬件 269
8 j6 f) m1 q: W1 t% o2 R6.3.4 Nios II IDE集成开发环境 2724 i. j7 ?: |7 [
6.3.5 Nios II系统典型应用 278+ k. e6 y9 I7 a8 H5 A: k6 `* [
6.4 DSP Builder工具 281. G) y2 ]: z$ ?; {) l
6.4.1 DSP Builder设计流程 2814 [) m; M8 L; M2 |7 l
6.4.2 与SOPC Builder一起构建系统 284
' M) i3 `3 p$ c9 G% a6.5 小结 285* ~! V3 ]' Z/ }% M& ]) j5 q& o' V
6.6 问题与思考 285 第7章 FPGA系统级设计技术 287' w+ b/ F2 q8 |: W; ]
7.1 信号完整性及常用I/O电平标准 287
$ [* ^& [& q4 `0 g+ c# U5 W7.1.1 信号完整性 287
* k, H5 m: }8 d$ ?& g% v* z7.1.2 单端标准 292
0 b/ G% J% `7 [0 q7.1.3 差分标准 296
$ L9 n8 {# Y, s Y; Y/ C- H' ]7.1.4 伪差分标准 299
& }. n% X) g) O9 ~6 ^5 J7.1.5 片上终端电阻 299+ s3 ]) |. V) y7 C* ]- w" O' ?( C
7.2 电源完整性设计 3001 ^" j6 |+ T' u) F; Y
7.2.1 电源完整性 300
7 n( R+ L* s6 _( O# v0 |7.2.2 同步翻转噪声 301( k& q1 ?& M- Z
7.2.3 非理想回路 304, |2 ^8 E( D3 i, y. r
7.2.4 低阻抗电源分配系统 307
' @5 f- C- T t7.3 功耗分析和热设计 311( a+ n' C' Z& x6 N- ^% P& D: b* B0 w1 `. z
7.3.1 功耗的挑战 3110 R7 m7 X' T& z1 s/ n% g4 y
7.3.2 FPGA的功耗 3112 W& ~6 P! {) B% U
7.3.3 热设计 313
- K- V; r4 U. c2 e" ]- C0 f* ?7.4 SERDES与高速系统设计 315" [' h5 a1 Q, u4 t( u8 t
7.4.1 SERDES的基本概念 316
( e8 N8 e w; k% m! |6 E7.4.2 Altera Stratix GX和Stratix II中SERDES的基本结构 319
! [* c* g- f* F4 l/ z2 d7.4.3 典型高速系统应用框图举例 324
5 j- o7 D$ B5 H6 h% y( e7.4.4 高速PCB设计注意事项 3298 I) d! ?0 `3 p- k9 p
7.5 小结 331/ v. c2 g' D# a' |0 s% H
7.6 问题与思考 331 附录 配套光盘使用说明 333 2 y H8 o, ^4 P0 _3 a) k' a! F
% |" J. c* f# t& y/ Y
第1章 可编程逻辑设计指导原则
, j% z' c" z' F5 I7 ^5 A本章旨 在探讨可编程逻辑设计的一 些基本规律。FPGACPLD的设计规律与方法是一个非常大的课题,在此不可能面面俱到,希望通过本章提纲携领的粗浅介绍,引起读者们的注意。如果大家能在日后的工作实践中,不断积累,有意识地用FPGACPLD的基本设计原则、设计思想作为指导,将取得事半功倍的效果!
5 ]' f0 V# K3 l, G. E5 Q
$ h; ]* Z9 ~3 q, f K7 Y本章主要内容如下:
+ D9 J' a. x7 c* W8 N
7 V( _1 |+ C' s# {5 C●可编程逻辑基本设计原则;- H4 O/ h+ p6 _
●可编程逻辑常用设计思想与技巧;5 @ f, b) p7 M3 f# n
●Altera 推荐的Coding Style.$ G* i+ b2 S4 m" D0 I: ]
8 Q5 J. @1 @- Q
1.1可编程逻辑基本设计原则0书货 C19PAO99强奥正的宝新味只面
9 J- F; s! k! E5 p; B$ B可编程逻辑设计有许多内在规律可循,总结并掌握这些规律对于较深刻地理解可编程逻辑设计技术非常重要。本章从FPGACPLD的基本概念出发,总结出4个基本设计原则,这
( p9 a3 L& N& H: O0 I些指导原则范畴非常广,希望读者不仅仅是学习它们,更重要的是理解它们,并在今后的工作实践中充实、完善它们。/ b# Q3 d4 g- n7 h
(1) 面积和速度的平衡与互换原则。
~# Z7 n# }3 ?2 [# \1 z面积和速度的平衡与互换原则提出了FPGA/CPLD 设计的两个基本目标,并探讨了这两个目标的对立统一的矛盾关系。, Z$ ]2 o+ @. S
(2)硬件原则。- w# }1 }7 P9 C' p
硬件原则重点在于提醒读者转化软件设计的思路,理解HDL语言设计的本质。
6 i* B1 v/ @: @3 n' b(3)系统原则。
6 d, O3 {$ h: S$ W, D1 T- l7 K+ i7 K$ `# ~: [- g5 S5 w
4 T# X: `: w$ v$ C& _+ @# u" T' ]3 K
9 n z! T3 y1 K
|