模拟CMOS集成电路设计习题解答勘误表与题号映射指南

发布时间:2026/10/28 22:14:50
模拟CMOS集成电路设计习题解答勘误表与题号映射指南 简介Razavi《模拟CMOS集成电路设计》的配套习题解答手册面向微电子、集成电路设计与电子信息类专业的本科生、研究生及自学者用于课后练习校对与考前复盘。压缩包内共1个PDF文件约12.95MB、328页配有书签便于按章节跳转大量借助电路图与公式推导展开解题过程。手册基于Preview Edition编写并附新旧版本对照表先列出各章题号在New Edition与Preview Edition间的对应关系如新版4.18即预览版4.5再标注图号与公式编号变更如Fig. 4.35改为Fig. 4.38便于快速定位到正确题解避免因版本差异找不到答案。内容覆盖器件模型、单级与差分放大器、频率响应、噪声、反馈、运算放大器、电压基准与开关电容电路等章节的解题思路可用于核对答案、查漏补缺与理解推导细节。已有4015人学习下载。1. 翻开解答手册第一件事是对着勘误表而不是题号模拟CMOS集成电路设计这门课的习题解答很多人拿到手第一反应是翻到自己正在做的那道题——然后发现题号根本对不上。这不是资源坏了而是这份 328 页的解答手册是按教材「预览版」编号写的而你手上拿的是重排过的新版新版第 4 章第 18 题在手冊里叫 4.5新版第 6 章第 3 题在手册里叫 6.9。真正决定这份资源能不能用的不是那三百多页推导本身而是开篇那几页新旧编号勘误表。我见过不止一个人跳过勘误直接刷题对着一道电流镜输出阻抗的题算了半小时最后发现看的是隔壁那道题的答案。这份材料适合正在跟课做课后题、或者拿它当复习题库刷第二遍的人前提是你愿意先花二十分钟把映射关系理顺再动笔。2. 版本差异的三种断点题号、图号、公式号各断在哪勘误表的信息密度其实很高它同时描述了三种互相独立的偏移题目本身换了位置、题目里引用的图换了编号、题目里引用的公式换了编号。这三种偏移的规律完全不同混在一起处理必然出错。先把它们拆开看清楚后面的脚本和笔记模板才有立足点。2.1 章节级重排三章整体平移两章凭空多出来后段章节的变化是最粗暴的预览版的第 14 章变成新版第 16 章预览版第 15 章变成新版第 17 章预览版第 16 章变成新版第 18 章。也就是说新版第 16、17、18 章的题在手册里都有解答只是你要把章号减 2 再去查。勘误表里对应写着「change all chapter references in solutions manual from 14 to 16」这类整章替换指令说明连解答正文里出现的「第 14 章」字样都要跟着改。真正麻烦的是新版第 14 章「振荡器」和第 15 章「锁相环」这两章在预览版里压根不存在标注写得很直白New Chapter。这意味着手册里没有这两章任何一道题的解答你在目录里翻到天荒地老也找不到。前段章节则是另一种情况——题序被打乱重排而不是简单平移。新版章节预览版章节手册里有没有解答处理方式第 3 章第 3 章题序打乱有逐题对照查表换题号第 4 章第 4 章前段插入新题部分有先判断是否新题第 5 章第 5 章整体后移 15 位有查表换题号第 6、7、8 章同章基本有只换引用号第 13 章第 13 章记录存疑逐条人工核第 14、15 章无没有自己做第 16、17、18 章14、15、16有章号减 2第 4 章的重排方式特别值得单独拎出来说。新版 4.1 到 4.13 对应的是预览版 4.12 到 4.24而新版 4.14 到 4.24 对应的是预览版 4.1 到 4.11。翻译成人话新版在第 4 章最前面塞进去了 13 道新题把老题整体往后推同时老的 4.1 到 4.11 被搬到了新版 4.14 之后。所以新版 4.1 到 4.13 这十三道题手册里根本没有解答你查到的任何答案都是错的。这个判断比查表更重要——先确认这道题是不是新题再谈查哪一页。第 5 章是另一种模式新版 5.1 到 5.9 对应预览版 5.16 到 5.23新版 5.10 到 5.23 对应预览版 5.1 到 5.15。两段互相交换中间没有新增题。这种「对折式」重排最容易让人产生错觉——你查 5.10 得到预览版 5.2查 5.2 又得到预览版 5.17来回几次就晕了。2.2 图号与公式号偏移量不固定比题号更阴题号错了最多是看错题图号和公式号错了会让整个推导前提崩掉而且你未必察觉得到。勘误表里这类记录散落各处偏移量没有统一规律只能一条条抄。举几个典型新版 4.18 的解答原文引用「Fig. 4.35」和「Fig. 4.36」现在要改成「Fig. 4.38」和「Fig. 4.39」偏移量是 3新版 18.3 引用的是「Fig. 18.12(c)」旧版里写作「Fig. 16.13(c)」章号、图号一起变。公式那边更细碎新版 6.3 的解答原来写「from eq (6.23)」要改成「from eq (6.20)」新版 7.19 原来引用「eqns 7.66 and 7.67」要改成「eqns 7.60 and 7.61」一次改两个。还有一种最容易被忽略的页码引用。新版 4.7 的解答里写着「p. 4.6」现在应该是「p. 4.17」新版 4.13 的「p. 4.9」要改成「p. 4.20」。手册里凡是出现「见某页」的句子页码本身也随版本重排漂移了。你手边如果没有新版教材这些页码引用就是废的只能当成「去第 4 章某处找」的模糊提示。2.3 那条元规则没列出来的就是没变勘误表开头有一句很关键的话大意是未列出的章节和题目视为不变。这句话决定了工作量——你不需要逐题去猜只需要处理表里明确列出的那些。但反过来也意味着表里漏掉一条你就会在一个错误的前提上耗很久。第 6 章后半段就属于「题号没变但引用变了」6.13 对应 6.13题号原地不动可解答里「from eq (6.56)」要改成「eq (6.53)」交叉引用「problem 3」要改成「problem 9」。如果你只按题号查表会看到题号一致就放心往下读然后卡在一个根本不存在的公式上。第 7 章从 7.17 到 7.24 几乎全是这种形态题号全对公式全错位。提示把「题号变化」和「引用变化」当成两张独立的表来维护不要试图塞进同一个映射里否则查询时一定会漏掉某一维。3. 把勘误表变成查得动的表一段粘连文本解析出三张映射勘误表在原始文档里是双栏排版复制出来以后两列会粘在一起变成「4.14.12」这种既不是 4.1 也不是 41.4 的怪东西。这一步不做处理后面所有自动化都无从谈起。3.1 先看清粘连的形态再决定怎么切粘连有三种典型情况处理策略各不相同。第一种是两个完整题号直接拼上预览版 5.10 对应新版 5.18原文写成「5.185.10」新版 4.1 对应预览版 4.12写成「4.14.12」。看上去是「章号.数字 数字.数字」实际上第二个题号的章号被第一个吃掉了。第二种是题号带撇号新版 3.17 对应预览版「3.2」。这个撇号在扫描件里极小人工录入、OCR、复制粘贴三个环节都容易丢一旦丢了3.2 和 3.2 就混成同一道题整章错位。第三种是说明文字插在题号中间新版 5.18 那条记录被拆成了两行一行是「5.185.10」下一行单独写「Similar to 5.18(a) Similar to 5.10(a)」。也就是说同一道题的编号和引用说明不在同一行脚本必须能把这行「补丁」挂回上一道题。3.2 回溯切分加单调性校验比正则硬怼靠谱直接写一个贪婪正则去匹配「(\d).(\d)」会在「3.13.8」上翻车贪婪会把它读成 3.13然后剩下「.8」第二段匹配失败改成非贪婪读到 3.1剩下「3.8」正好但在「3.293.28」上非贪婪又会读出 3.2 加「93.28」。同一个正则不可能同时喂饱这两种情况因为切点没有局部特征。稳妥的做法是穷举切点再用两条硬约束筛第一段题号的章号必须等于当前章号且新题号在本章内必须严格递增。import re FRAG re.compile(r^(\d)\.(\d)(?)$) def parse_fragment(frag): 校验一个片段是否是合法题号返回 (章号, 题号, 撇号) 或 None m FRAG.match(frag) if not m: return None return m.group(1), m.group(2), m.group(3) def split_pair(s, chapter, prev_new): 把 3.13.8 这类粘连串切成 (新版题号, 预览版题号) chapter: 当前章号字符串如 3 prev_new: 上一行已确认的新版题号浮点用于单调递增校验 s s.replace( , ) out [] # 枚举唯一切点切成前后两段 for i in range(1, len(s)): a, b s[i - 1:i][0], None # 占位实际切点按字符索引 for i in range(1, len(s)): left, right s[:i], s[i:] pa, pb parse_fragment(left), parse_fragment(right) if not pa or not pb: continue # 约束一新版题号章号必须匹配 if pa[0] ! chapter or pb[0] ! chapter: continue new_no float(f{pa[0]}.{pa[1]}) prev_no f{pb[0]}.{pb[1]}{pb[2]} # 约束二新版题号在本章内严格递增 if new_no prev_new: continue out.append((f{pa[0]}.{pa[1]}, prev_no)) return out这段代码的核心不是正则而是那个prev_new参数。它把「本章题目按页码顺序排列」这个排版事实变成了校验条件让「3.2 / 93.28」这种非法切法因为章号不匹配被淘汰「3.13 / .8」因为第二段不合法被淘汰只剩唯一解。parse_fragment里单独把撇号作为第三个分组保留下来就是为了挡住 3.2 和 3.2 混用。实际跑的时候一次只处理一章prev_new初始值设成 0每成功解析一行就更新。遇到解析出多个候选的行不要自动选打印出来人工确认——这类行在全表里通常不超过五条但每一条都是错位源头。3.3 三张表分开存查询时按维度组合解析结果不要塞进一个字典分成三份 CSV题号映射、图号替换、公式与交叉引用替换。字段设计上题号表用新版题号做主键图号表和公式表用「新版题号 旧引用串」做联合主键。import csv def load_map(path): m {} with open(path, newline, encodingutf-8) as f: for row in csv.DictReader(f): m[row[new]] row return m PROB load_map(problem_map.csv) # 字段: new, preview, note REF load_map(reference_map.csv) # 字段: new, kind, old, new_ref def lookup(chapter, num, note_pageNone): key f{chapter}.{num} row PROB.get(key) if row is None: return {status: unmapped, hint: 未列出按元规则视为不变} res { status: ok, preview: row[preview], refs: [(r[kind], r[old], r[new_ref]) for k, r in REF.items() if k.startswith(key)], } return reslookup的返回值里带status字段而不是直接抛异常是为了把「新版第 4 章前 13 题」「第 14、15 章全部题目」这两种情况统一成可处理的空结果而不是让脚本中途断掉。refs列表按新版题号前缀匹配保证同一道题的图号和公式号会被一起带出来避免只换题号忘了换引用。建完表之后一定要抽样回读。我一般随机抽五条按preview字段去手册 PDF 里翻确认那一页的第一行题号和表里对得上。抽检不合格就说明切分规则的某个约束写松了回头收紧prev_new的判断条件而不是手工改 CSV。4. 按章推进的顺序哪些章能直接抄哪些必须自己算映射表建好只是有了地图真正刷题时的推进顺序还得分层。有些章节的解答可以直接复用有些章节的解答只能当参考还有些章节压根没有解答混着推进会让进度表失真。4.1 先啃平移章再碰重排章最后处理无解答章第 16、17、18 章是性价比最高的部分。这三章在新版里是运放、频率响应、反馈这类重头戏在手册里有完整解答你只需要把章号减 2 去查。比如新版第 18 章第 3 题去手册里找预览版第 16 章第 3 题解答正文里凡是写「Fig. 16.13(c)」的地方在脑子里替换成「Fig. 18.12(c)」就行。整章替换的规律单一出错概率最低适合用来建立信心和校准自己的推导习惯。第 4 章和第 5 章要放在第二阶段。这两章的重排是分段的第 5 章甚至是两段对折做题时得先判断自己这道题属于哪一段。判断方法很简单翻到新版教材该题的位置看它引用的图和公式在本章里是偏前还是偏后再对照problem_map.csv确认段位。这一步多花两分钟能省掉后面半小时的自我怀疑。第 3 章、第 14 章、第 15 章放最后。第 3 章是工艺与器件基础题量大、重排乱而且很多题的解答依赖具体工艺参数手册里的数值未必和新版教材一致只能当思路参考。第 14、15 章没有解答老老实实自己推推完拿第 16 章的运放题当交叉验证——振荡器本质上就是反馈系统的边界条件问题两边能对上说明思路没跑偏。4.2 双向替换检索用旧号写笔记用新号这是最容易翻车的地方。你查手册的时候需要把新版题号翻译成预览版题号这是「新到旧」你在笔记里记录的时候需要把手册解答里出现的旧公式号翻译成新版公式号这是「旧到新」。两个方向混用笔记就会变成一锅粥。常见做法是给两个方向各写一个函数而不是一个函数加参数开关因为方向搞反了不会报错只会静默产出错误结果。# 方向一查手册用新 - 旧 def to_preview(new_no): row PROB.get(new_no) return row[preview] if row else None # 方向二整理笔记用旧引用 - 新引用按题号作用域 def fix_refs(new_no, text): for key, row in REF.items(): if not key.startswith(new_no |): continue # 只替换完整引用串避免 6.2 误伤 6.23 text re.sub( rf(?![\d.]){re.escape(row[old])}(?![\d]), row[new_ref], text, ) return textfix_refs里的前后向断言(?![\d.])和(?![\d])是必须的。手册里同时存在「eq (6.2)」和「eq (6.23)」如果直接做字符串替换改 6.2 的时候会把 6.23 改成 6.03而且这种错误在通读时几乎看不出来。作用域限定在单个题号内也很关键第 6 章和第 7 章都有 6.x、7.x 的公式编号跨题替换会串味。4.3 笔记模板里必须带题号三元组我现在的习惯是每道题的笔记开头固定三行元信息新版题号、预览版题号、手册页码。这三样凑齐了半年后回头复习还能三十秒内定位到原始解答缺一样就得重新查一遍表。字段示例作用new4.18当前教材题号检索主键preview4.5手册题号定位解答refsFig 4.35→4.38; 4.36→4.39该题所有引用替换逐条列出page手册约第 40 页扫描件翻页参考允许误差status已核对 / 待核对 / 无解答控制复习时跳过哪些status这一列看起来多余实际很省事。第 14、15 章全部标「无解答」第 4 章前 13 题标「无解答」其余标「已核对」或「待核对」。复习的时候按状态过滤不会在一道注定查不到答案的题上反复浪费时间。注意手册是扫描件页脚标着 328 页的总数但书签粒度只到章具体题目的位置靠翻。笔记里的页码只写大约值不要写到个位否则下次对不上反而添乱。5. 避坑题号对上了、答案却对不上的五种现场下面这五条都是我实际撞过的每一条都消耗过半小时以上。它们的共同特征是表面上题号已经查对了错误藏在更深一层。5.1 撇号被吃掉整章错位一位现象按表查到新版 3.17 对应预览版 3.2翻过去发现解答里讨论的电路结构和自己手上的题面完全不是一回事但题号确实印着 3.2。原因原始记录是「3.17 3.2」预览版里存在 3.2 和 3.2 两道不同的题撇号在复制粘贴时丢了3.2 退化成了 3.2于是 3.18 到 3.29 的映射整体向前错了一位。解决解析阶段就把撇号当独立字段保留映射表里存成3.2而不是3.2。查表时如果题面明显对不上第一反应是回原始文本核对有没有撇号而不是怀疑自己算错。5.2 只换题号不换图号推导前提就错了现象新版 4.18 查到预览版 4.5解答第一句说「参考 Fig. 4.35 的小信号模型」翻到教材 Fig. 4.35 发现是一张完全无关的电路于是认定手册写错了。原因图号也随版本漂移了正确对应是「Fig. 4.38」和「Fig. 4.39」。只换题号不换引用等于用旧地图找新地址。解决查表结果必须同时返回refs列表做题前先把解答里所有图号、公式号、页码逐条替换一遍再开始读。这一步花三分钟能挡住后面所有的前提性错误。5.3 交叉引用藏在句子里没进映射表现象新版 6.13 的解答末尾写「利用 problem 3 的结论」在新版教材里翻遍第 6 章前几题都找不到对应的结论。原因这条记录是「6.13 6.13 eq (6.56) eq (6.53) problem 3 problem 9」题号没变但题内的交叉引用从 problem 3 改成了 problem 9。只维护题号映射的话这条信息根本不会出现在查询结果里。解决reference_map.csv里的kind字段要覆盖 fig、eq、page、problem 四类不能只写图和公式。凡是解答正文里出现的「见某题」「见某页」「见某式」都算引用。5.4 第 13 章那条记录对不上任何题现象勘误表里「CHAPTER 13」标题下只有一行「3.17 3.17 Eq. (3.123) Eq. (3.119)」题号是 3.17 而不是 13.x按第 13 章去查怎么都对不上。原因这条记录大概率是排版时挂错了章标题或者是前文某处的补丁被误置到了这里。它描述的是一道 3.17 的公式引用替换和第 13 章没有关系。解决遇到章节标题和题号章号不一致的记录不要强行归位单独拉一个anomaly.csv存着做题做到那道题时再人工判断。强行按标题归类会把一条本来正确的替换规则塞进错误的查询路径。5.5 扫描页码和题号顺序不是一回事现象笔记里记着「4.18 在第 40 页」下次翻到第 40 页那一页讲的是 3.2x 的题。原因扫描件的物理页序按原书排版走而题号在重排后不连续第 4 章开头那 13 道新题在手册里根本不存在导致手册的第 4 章起始页对应的题号和教材对不上。解决页码只记到「第几章起始页往后大约几页」不记精确值。定位一律走「章首页 → 按题号顺序翻」手册每页通常排两三道题翻五六页就能到。6. 把解答反推成检查清单从对答案到验参数刷到第三遍的时候我发现单纯对答案的收益已经很低了——数字对上了不代表思路对可能是套公式套巧了。更有效的用法是把手册里的解答反推成一张参数检查清单每道题先自己算出关键指标再去解答里找对应的中间量逐项比对哪一项差一个数量级就说明那一级的模型假设用错了。以第 16 章原第 14 章的运放题为例我一般会抽四类中间量第一级的输出电阻、第二级的跨导、单位增益带宽、相位裕度。这四项在解答里通常都有显式表达式抄进表格当基准值。自己算完填一列偏差超过 20% 就回去查是不是把某个晶体管的沟道长度调制效应漏了。import csv # 每道题抽四个可验证的中间量和解答逐项比对 FIELDS [rout1, gm2, ugbw, pm] def check(new_no, mine, ref_values, tol0.2): mine/ref_values: dict键为 FIELDS 中的项 返回偏差超限的项用于定位是哪一级模型出了问题 bad [] for k in FIELDS: a, b mine.get(k), ref_values.get(k) if a is None or b is None or b 0: continue if abs(a - b) / abs(b) tol: bad.append((k, a, b, round((a - b) / b, 3))) return bad # 用法偏差项集中在 rout1优先怀疑输出电阻的近似 # 偏差项集中在 pm优先怀疑第二极点和补偿电容的取值这段代码的价值不在计算在于它把「答案对不对」这个二元判断拆成了「哪一级错了」的定位问题。rout1偏差大说明小信号模型的输出端处理有问题pm偏差大说明极点分裂的假设有问题ugbw单独偏往往是忽略了某个寄生电容。tol设 0.2 是个经验值手算近似本来就允许这个量级的误差设太紧会天天报警设太松又失去筛选意义。再往前一步可以把整章的检查项汇总成一张表复习时只扫表不翻手册。章节主检查量常见偏差来源对应手册题号段第 4 章输出摆幅、电流镜失配忽略沟道长度调制预览版 4.12 起第 5 章输入共模范围、增益带宽尾电流源输出电阻预览版 5.16 起第 6 章极点位置、零极点对消密勒近似失效预览版 6.7 起第 16 章两级运放增益、相位裕度第二极点估算偏大预览版 14 章第 18 章反馈系数、环路增益加载效应未计入预览版 16 章这张表真正起作用的地方在于它逼你在动笔之前就想清楚这道题要验什么。以前我是算完一整道题再回头找解答现在改成先列检查项再算算到一半发现某一项的数量级明显不对立刻停下来查模型不用等到最后才发现整道题白做。血泪经验是勘误表这种东西第一遍看觉得是障碍第三遍看觉得是这份资源里最有价值的部分。从那以后我每次开一本新教材的配套解答都先把勘误页做成 CSV再开始刷题宁可前面多花二十分钟也不在半路怀疑自己。希望帮到你。本文还有配套的精品资源点击获取

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询