..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
时钟........................................................................................................................ 8
同步时钟................................................................................................................ 8
异步时钟................................................................................................................ 9
衍生时钟介绍及处理准则.................................................................................... 9
这种情况一定要用门控时钟.............................................................................. 10
时钟四种类型:.................................................................................................. 11
使用 PLL 产生内部时钟的优点 .......................................................................... 11
三级时序系统...................................................................................................... 11
时序约束.............................................................................................................. 11
多周期路径约束.................................................................................................. 12
时序约束语句...................................................................................................... 12
时序约束问题口语化概括.................................................................................. 14
什么是时序拆借.................................................................................................. 14
附加时序约束的一般策略.................................................................................. 14
附加约束的作用?.............................................................................................. 15
2 / 118
时序问题及解决.................................................................................................. 15
时序优化.............................................................................................................. 16
Vivado 时序参数 ................................................................................................. 17
时序报告如何分析:.......................................................................................... 17
触发器/锁存器/寄存器 ...................................................................................... 17
施密特触发器...................................................................................................... 20
查找表的原理与结构.......................................................................................... 20
建立时间保持时间.............................................................................................. 20
为什么要满足建立和保持时间要求?.............................................................. 22
建立保持时间典型题.......................................................................................... 23
恢复时间/移除时间 ............................................................................................ 24
可能发生 recovery 故障的情况及解决 ............................................................. 25
亚稳态.................................................................................................................. 26
可能出现亚稳态的场合...................................................................................... 26
流水线的设计思想.............................................................................................. 27
流水线冒险.......................................................................................................... 27
代码覆盖率.......................................................................................................... 28
功能覆盖率&断言覆盖率 ................................................................................... 28
MTBF(Mean Time Between Failure)为平均故障发生间隔时间 ................... 28
pattern count 为测试机台的测试 pattern 数量, ............................................ 29
编码方式.............................................................................................................. 29
7nm 工艺指的是什么? ..................................................................................... 30
工艺上常提到 0.25 ............................................................................................. 31
ADC 分类:.......................................................................................................... 31
跨时钟域处理...................................................................................................... 32
单比特.......................................................................................................... 32
多比特.......................................................................................................... 36
准时钟域同步...................................................................................................... 41
3 / 118
FIFO 深度计算 ..................................................................................................... 42
异步 fifo ............................................................................................................... 42
三段式状态机优缺点.......................................................................................... 43
有限状态机&序列检测 ....................................................................................... 43
二进制编码和独热码比较.................................................................................. 46
半导体器件(PMOS/NMOS) ........................................................................... 46
TTL 与 COMS 电平可以直接互连吗? ............................................................... 48
LVDS(Low-Voltage Differential Signaling ,低电压差分信号 ............................. 48
Mos 场效应管及增强型/耗尽型 ........................................................................ 49
P、N 型半导体 .................................................................................................... 49
PNP、NPN............................................................................................................ 49
半导体工艺掺杂方式.......................................................................................... 49
为什么一个标准的倒相器中 P 管的宽长比要比 N 管的宽长比大 ................. 50
CMOS 电路中闩锁效应 ...................................................................................... 50
Antenna effect 和其预防措施............................................................................. 50
短窄沟效应.......................................................................................................... 51
击穿效应.............................................................................................................. 51
稳压管.................................................................................................................. 51
发射极耦合逻辑.................................................................................................. 51
负反馈.................................................................................................................. 52
1Å=0.1nm (紫光展锐 IC 笔试题) ........................................................................ 52
电迁移.................................................................................................................. 52
运算放大器的噪声种类...................................................................................... 52
三极管工作状态.................................................................................................. 53
放大器输入输出阻抗.......................................................................................... 53
环形振荡器组成及原理:.................................................................................. 54
环形振荡器周期.................................................................................................. 54
有源滤波器和无源滤波器的区别...................................................................... 54
4 / 118
数字电平.............................................................................................................. 54
常用逻辑电平...................................................................................................... 55
基尔霍夫定理的内容.......................................................................................... 56
竞争冒险.............................................................................................................. 56
存储器.................................................................................................................. 58
I/O 接口分类 ....................................................................................................... 61
OPT/掩膜片区别.................................................................................................. 61
DMA 存储器直接访问 ........................................................................................ 62
同步/异步 ............................................................................................................ 62
异步复位同步释放.............................................................................................. 65
不建议使用的电路.............................................................................................. 66
SET 和 RESET 信号处理 ....................................................................................... 67
全局信号处理...................................................................................................... 67
三态门.................................................................................................................. 68
线与(OC 门) .................................................................................................... 68
上拉电阻用途...................................................................................................... 68
上拉电阻阻值的选择原则包括: ........................................................................ 69
单片机上电后没有运转...................................................................................... 69
AMBA 三种总线对比 .......................................................................................... 69
AHB 总线有以下特性:...................................................................................... 70
AXI 总线 ............................................................................................................... 70
VHDL 程序/VERILOG 三个基本组成部分 ........................................................... 75
Verilog 的 fork join 语句 ..................................................................................... 75
Verilog 和 C 语言的最大区别 ............................................................................. 76
Verilog 中的 inout ................................................................................................ 76
Verilog 端口连接规则 ......................................................................................... 77
HDL 语言的层次概念? ...................................................................................... 78
verilog 中的 integer、time、real、realtime ...................................................... 78
5 / 118
任务和函数.......................................................................................................... 78
阻塞和非阻塞语句的区别:.............................................................................. 79
FPGA、ASIC、CPLD 名词 .................................................................................... 79
CPLD 与 FPGA 有何区别 ..................................................................................... 80
ASIC 与 FPGA 比较 .............................................................................................. 80
FPGA 厂商排名及开发工具 ................................................................................ 81
FPGA 最基本组成 ................................................................................................ 81
简化的 FPGA 基本结构 ..................................................................................... 82
FPGA 中可以综合实现为 RAM/ROM/CAM 的三种资源及其注意事项? ....... 82
FPGA 芯片内有哪两种存储器资源? ................................................................ 83
BRAM 和分布式 ram 的区别 .............................................................................. 83
FPGA 设计中对时钟的使用 ................................................................................ 84
FPGA 设计中如何实现同步时序电路的延时 .................................................... 84
FPGA 器件配置方式分三大类 ............................................................................ 84
FPGA 功耗 ............................................................................................................ 85
峰值功耗(也是短路功耗) ................................................................................... 86
CMOS 电路功耗 .................................................................................................. 87
低功耗设计分类.................................................................................................. 87
FPGA 仿真的三个阶段 ........................................................................................ 88
FPGA 中 BUF 的区别 .......................................................................................... 88
Xilinx 中与全局时钟资源和 DLL 相关的硬件原语 ............................................ 89
FPGA 等可编程逻辑器件开发流程 .................................................................... 89
FPGA 设计和 I 板级仿真与验证 C 设计的区别? ............................................. 90
FPGA 选型 ............................................................................................................ 90
FPGA 和 ASIC 区别 .............................................................................................. 90
FPGA 在 ASIC 中的角色 ...................................................................................... 92
板上系统、片上系统、可编程片上系统、全可编程上系统.......................... 92
PS 简介................................................................................................................. 93
6 / 118
名词 PCI/ ECO/ Interrupt/ TLB/ Pipeline/ DDR .................................................... 97
名词 CTS/.Extrat RC 和 STA/半定制 .................................................................... 98
DSP 的作用 .......................................................................................................... 99
名词 DRC .............................................................................................................. 99
名词 CMOS/MCU/RISC/CISC/DSP/IRQ/USB/BIOS ............................................... 99
名词 SIMD/ ........................................................................................................ 100
SIMD ................................................................................................................... 100
JTAG 信号 ........................................................................................................... 101
5 级流水线 RSIC 结构 ....................................................................................... 101
单板硬件工程师的职责:................................................................................ 101
芯片综合............................................................................................................ 102
综合和实现的区别............................................................................................ 103
时序路径和关键路径........................................................................................ 103
一些 RTL............................................................................................................. 104
静态、动态时序分析........................................................................................ 105
集成电路设计流程的认识................................................................................ 105
对集成电路工艺的认识.................................................................................... 105
DFT 可测性设计 ................................................................................................ 107
几种集成电路典型工艺.................................................................................... 107
IC 设计前端到后端的流程和 EDA 工具 ........................................................... 108
数字 IC 后端设计流程...................................................................................... 110
从 RTL synthesis 到 tape out 之间的设计 flow,并列出其中各步使用的 tool.
............................................................................................................................ 112
自动布局布线其基本流程如下:.................................................................... 112
解决串扰问题.................................................................................................... 112
IC 设计流程: ................................................................................................... 113
IC 设计规则 ....................................................................................................... 114
寄生效应在 IC 设计中怎样加以克服和利用 .................................................. 115
7 / 118
芯片测试分类.................................................................................................... 115
使用最少的电路实现二分频,画出原理图:(2023 禾赛) ........................ 116
MUX(2 选 1)逻辑门 ..................................................................................... 116
多路器表达应为:A?(B?0:1):(B?1:0), ........................................................... 117
3 个 2 选 1 构成 1 个 4 选 1 ............................................................................. 117
数字信号处理.................................................................................................... 117
时钟
Tco:寄存器时钟输入到数据输出的时间
Tdata:寄存器间的走线延迟
Tsu :建立时间
Tskew:时钟偏斜
最小时钟周期:Tmin = Tco + Tdata + Tsu - Tskew。最快频率 Fmax = 1/Tmin
FPGA 开发软件也是通过这种方法来计算系统最高运行速度 Fmax。因为 Tco
和 Tsetup 是由具体的器件工艺决定的,故设计电路时只 能改变组合逻辑的延迟
时间 Tdelay,所以说缩短触发器间组合逻辑的延时时间是提高同步电路速度的关
键所在
Tskew = Tclkd – Tclks。
时钟抖动 jitter:指时钟信号的跳变沿不确定,故是时钟频率上的不一致
时钟偏移 Skew:指全局时钟产生的各个子时钟信号到达不同触发器的时间点不同,
是时钟相位的不一致。
避免方法:jitter 主要受外界干扰引起,通过各种抗干扰手段可以避免。而 skew
由数字电路内部各路径布局布线长度和负载不同导致,利用全局时钟网络可尽
量将其消除。
同步时钟
数字设计中,一般认为,频率相同或频率比为整数倍、且相位相同或相位差固定
8 / 118
的两个时钟为同步时钟。
或者理解为,时钟同源且频率比为整数倍的两个时钟为同步时钟。其实,时钟同
源,就保证了时钟相位差的固定性。具体可以分类如下:
同源同频同相位
此类时钟频率和相位均相同,是同步的。时钟间数据传输只要满足正常的建立时
间和保持时间即可,不需要特殊的同步设计。
同源同频不同相位
两个时钟同频但不同相位时,只要相位差保持固定,也可以认为是同步的。因为
只要控制两个时钟间传输的数据延迟在合理范围内,就不会导致时序问题。而且,
固定的时钟延迟也可以在版图级网表中修复。
固定的相位差可以理解为同源时钟下两个时钟因路径不同而导致的偏移。
同源不同频但存在整数倍分频比
此类情况下,一个时钟往往是另一个时钟的分频,即便存在相位差也是固定的。
同源且频率比为整数倍关系时,可以理解为这两个时钟是同步的,不需要特殊的
同步处理
异步时钟
工作在异步时钟下的两个模块进行数据交互时,由于时钟相位关系不可控制,很
容易导致建立时间和保持时间 violation。以下 3 种情况下的时钟可以认为是异
步的。
不同源;同源但频率比不是整数倍;同源虽频率比为整数倍但不满足时
序要求
衍生时钟介绍及处理准则
行波时钟:利用逻辑计数器分频产生的时钟;
门控时钟:由非寄存器逻辑功能驱动的时钟;
9 / 118
1. 尽量不使用,用 PLL 和时钟使能(说实话没太理解)代替;【PLL 有抖动
歪斜,但时钟频率太低,PLL 分不出来;时钟使能不会产生抖动,也不占用额外
的 PLL 资源,无时钟歪斜问题】
2. 不要有跨衍生时钟域的同步数据路径
3. 如果条件允许,一定要给派生时钟指定全局布线资源(这样可以将时钟
域内部的数据路径歪斜降低到最小);
4. 门控逻辑一定要避免产生毛刺,例如进入二输入选择器必须保证只有一
个时钟在翻转
这种情况一定要用门控时钟
当数据无效时,将寄存器时钟关闭的技术,也就是加入门控时钟电路后,可
以减少时钟树开关行为,从而节省系统动态功耗。同时,由于减少了时钟引脚的
开关行为,寄存器的内部功耗也减少了。采用门控时钟,可以非常有效地降低设
计的功耗,一般情况下能够节省 20%~60%的功耗。时钟门控通过在电路中增加额
外的逻辑单元、优化时钟树结构减少功耗。由于门控时钟逻辑具有一定的开销,
因此数据宽度过小不适合做 Clock Gating。一般情况下,数据宽度大于 8 比特时
建议采用门控时钟。【简单门控时钟用法举例 gate_ctr_clk_example】
即便是没有了毛刺门控时钟还是会给设计带来一些负面影响,一个不可忽略
的影响是综合工具并不会对门控时钟插入 BUFG(全局时钟缓冲器),这就意味着
该时钟会占用传统的布线资源,也就是 Fabric 中的布线资源,而不会使用时钟网
络资源,从而可能会跟其他关键路径争夺布线资源,并影响时序。在 Vivado 工
具中,有一个专门用于管理门控时钟的综合优化选项-gated_cLock_conversion,将
其打开,就可以将门控时钟信号变为使能信号,其默认情况下是关闭的。
在 IC 设计中使用最多的是锁存结构的门控时钟。原因是在实际的芯片中,要
使用大量的门控时钟单元,所以通常会把门控时钟做出一个标准单元,由工艺厂
商提供。因为是做成一个单元,线延时是可控和不变的,这样锁存器结构中线延
时带来的问题就不存在了,而且也可以通过挑选锁存器和增加延时,总是能满足
10 / 118
锁存器的建立时间,这样通过工艺厂预先把门控时钟做出标准单元,这些问题都
解决了。而且锁存器还有一个比寄存器更大的优势就是比寄存器的面积更小,当
大量的门控时钟插入到芯片中时,这个节省的面积就相当可观了。
时钟四种类型:
全局时钟、门控时钟、多级逻辑时钟和波动式时钟。多时钟系统能够包括上
述四种时钟类型的任意组合。(具体见 PDF)
使用 PLL 产生内部时钟的优点
1. 在不同的 PVT 情况下保持稳定
2. 去除抖动
3. 移相
4. 动态重配置
5. 全局缓冲(减小了寄存器歪斜)
三级时序系统
机器周期、节拍、时钟脉冲。
时序约束
时序约束主要包括周期约束,偏移约束,静态时序路径约束三种。通过附加时序
约束可以综合布线工具调整映射和布局布线,使得设计达到时序要求。
同步器的输入和多周期路径规划数据路径需要使用 set_false_path 约束。
11 / 118
多周期路径约束
什么时候需要用到多周期约束
时序引擎默认是按照单周期关系分析数据关系的,即数据在发起沿发送,在
捕获被捕获,发起沿和捕获沿相差一个周期。
但是很多情况是,数据路径逻辑较为复杂,导致延时较大,使得数据无法在
一个时钟周期内稳定下来, 或者数据可以在一个时钟周期内稳定下来,但是在
数据发送几个周期之后才使用;在这些情况中,设计者的意图都是使数据的有效
期从发起沿为起始直至数个周期之后的捕获沿,这样的意图无法被时序分析工具
猜度出来,必须由设计者在时序约束中指明;否则时序分析工具会按照单周期路
径检查的方式执行,往往会误报出时序违规;
时序约束语句
clock 相关:
create_clock
create_generated_clock
set_clock_uncertainty
set_clock_groups
set_input_delay
12 / 118
Output_delay 同理
set_output_delay
系统接口相关:
set_input_transition
set_load
set_driving_cell
时序特例相关:
set_false_path
set_multicycle_path
逻辑赋值相关:
set_case_analysis
13 / 118
clock uncertainty 是 pre_layout 设置的,用来建模不确定性。包括 jitter + skew +
margin(应该是有个 set_clock_uncertainty 这种语句)
时序约束问题口语化概括
描述芯片的工作速度约束时钟周期:create_clock -period 8.138 -name i_fpgaclk_p
-waveform {0.000 4.069} [get_ports i_fpgaclk_p]
描述芯片的边界约束约束时钟到输入输出端口的最小最大延时:set_input_delay
-clock [get_clocks i_ch0_gtp_jesd_clkp] -clock_fall -min -add_delay 4.069 [get_ports
i_sysref_p]
set_output_delay…..
约束一下伪路径什么的 set_false_path;
可能 still 需要更新!!!!!!
什么是时序拆借
时序拆借技术允许前一级组合逻辑块使用下一级流水结构的冗余时间。这一
技术允许电路使用超过一个时钟周期的时间,扩充了组合逻辑的最大延时量。合
理使用这一特性,可有效降低 CLB 老化下的时序发送故障概率。
附加时序约束的一般策略
先附加全局约束,然后对快速和慢速例外路径附加专门约束
附加全局约束:
(1)首先定义设计的所有时钟,对各时钟域内的同步元件进行分
组,对分组附加周期约束 (2)然后对 FPGA/CPLD 输入输出 PAD 附加偏移约束、
对全组合逻辑的 PAD TO PAD 路径附加约束。
附加专门约束时:
(1)首先约束分组之间的路径,
(2)然后约束快、慢速例外路
径和多周期路径,以及其他特殊路径。
14 / 118
附加约束的作用?
1:提高设计的工作频率(减少了逻辑和布线延时)
2:获得正确的时序分析报告;
3:指定 FPGA/CPLD 的电气标准和引脚位置。
时序问题及解决
1)先看时序报告,找到违例路径(timing –design timing summary—critical path );
2)Net Delay 过大,可能由高扇出引起(一个信号、模块驱动太多,尤其是复位
信号,但是这个情况还没见到过,)。通常我们是插入 Buffer、提高驱动能力;寄
存器复制,降低单个信号的输出负载;重定时(综合选项,改变寄存器的位置,
平衡 NET 长度)
3)Logic Delay 过大,少用阻塞复制、少用组合逻辑、多用流水线设计、降低时
钟频率、多用 case 少用 if、if 中关键路径提前;
如果设计验证和测试已经接近尾声,偶尔进行小改可能出现几条时序违例的情
况
这个时候就不建议通过修改代码来进行优化了,首先在设计验证和测试几乎
完成的情况下,证明你这套逻辑已经经过了层层考验,不会出什么问题。如果这
个时候还通过改功能模块来优化时序有可能引入新的不确定因素,还得花很多时
间来验证才行。在这个时候一般的做法是多开几个策略来进行综合或者布局布
线。
(优先采用 default 策略进行实现,可以避免工具过多的优化设计,更好地暴
露时序问题的根本原因)
逻辑级数过大引起的某些路径经常性违例
在组合逻辑中间插入一下触发器来降低整体逻辑级数一般就能解决这个问
题。
Vivado 版本过低(升级版本可以改善内部布局布线算法)
15 / 118
大规模时序违例
降低时钟频率(考虑降低某一模块而非整体)
时序优化
修改代码是优化时序最直接有效的方法:
(具体的建立/保持违例优化见“建立保持时间部分”)
组合逻辑级数高: 最简单的方法就是多插寄存器,增加流水线级数,打断过长的
组合逻辑路径;
关键路径 fanout 过高: 尽量将高扇出信号端口以寄存器形式输出,让 vivado 工
具帮助自动进行复制与优化;
对于 wire 变量可以设置(*max_fanout=n*);
常见的高扇出信号就是复位信号,对于复位信号的时序优化方法:
1.对使能信号(控制信号)复位,对数据信号和延迟打拍信号尽量不复位;
2.对于大型工程,可以用 BUFG 驱动复位信号,或者设计复位树,来对各级
子模块进行复位;
3.复位信号以寄存器形式输出,对寄存器输入输出端口时序设置不需太紧
布线拥塞:布线拥塞主要原因是布线资源不够导致的,分为全局拥塞和局部拥塞,
一方面可能是扇出信号过多,另一方面可能是局部使用逻辑资源过多,导致运用
了较多的长布线资源,产生 6 级或以上的拥塞。对于布线拥塞的解决方法要综合
考虑,可以通过删减或平衡使用较多的资源,以减少逻辑资源的方式减少拥塞;
或者通过增加寄存器,多使用 Device 布局中较空的位置,来解决局部拥塞;或
者进行物理约束,比如跨 die 等。
除了修改代码和编写约束之外,我们还可以通过 vivado 自带策略来进行时序优
化
16 / 118
Vivado 时序参数
WNS 表示最差建立时间负时序裕量 (Worst Negative Slack);对于跨时钟域而且
WNS 过小(比如小于 100ps),一般都是因为没有对这两个时钟进行时序例外的
约束,这时我们就要根据具体情况增加相应的约束。
TNS 表示总的建立时间负时序裕量 (Total Negative Slack),也就是负时序裕量路
径之和;
WHS 表示最差保持时序裕量 (Worst Hold Slack);
THS 表示总的保持时序裕量 (Total Hold Slack),也就是负保持时序裕量路径之和;
WPWS 表示最差脉冲宽度裕量;
TPWS 表示总的脉冲宽度裕量,也就是负脉冲宽度裕量路径之和
时序报告如何分析:
1. 首先要看 Design Timing Summary 确认时序是否收敛,但凡 WNS、WHS
或 WPWS 有一个小于 0,就说明时序未收敛。
2. 找到时序最糟糕的路径;先优化这些路径,有可能优化这些路径之后,这
些路径收敛了,同时其他路径也能够收敛
3. 分析时序最糟糕的路径;看 Source 和 Destination 确定是那条路径;从
Source 和 Destination 还可以看到起始 cell 和终止 cell 的驱动时钟,从而
可判定该路径是否为跨时钟域路径;可以从 Path Type 得知是建立时间路
径还是保持时间路径
4. 对于 Requirement 一栏,一定要看 Requirement 是否合理;
5. 其后的 Data Path Delay 由两部分构成,逻辑延迟(对应图中的 logic)和
线延迟(对应图中的 route)
总体而言,打开时序报告,要看路径 Source、Destination、Requirement、Data
Path Delay、Logic Levels、Clock Path Skew 和 Clock Uncertainty。
触发器/锁存器/寄存器
可以参考链接:有具体的实现电路图:
17 / 118
https://blog.csdn.net/bleauchat/article/details/85312172?ops_request_misc=%257B
%2522request%255Fid%2522%253A%2522166151669416781432922139%2522%25
2C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=
166151669416781432922139&biz_id=0&utm_medium=distribute.pc_search_result.
none-task-blog-2~all~top_positive~default-1-85312172-nullnull.142^v42^pc_ran_alice,185^v2^control&utm_term=%E9%94%81%E5%AD%98%E
5%99%A8&spm=1018.2226.3001.4187
差别:锁存器对电平信号敏感,在输入脉冲的电平作用下改变状态;D 触发器对
时钟边沿敏感,检测到上升沿或下降沿触发瞬间改变状态。
寄存器(register)的存储电路通常是由触发器构成的,因为一个触发器能存储一位
二进制数,所以 N 个触发器就可以构成 N 位寄存器,可以将寄存器理解成多个
触发器构成的暂存单元。
寄存器的应用
a)可以完成数据的并串、串并转换;
b)可以用做显示数据锁存器:许多设备需要显示计数器的记数值,以 8421BCD 码
记数,以七段显示器显示,如果记数速度较高,人眼则无法辨认迅速变化的显示
字符。在计数器和译码器之间加入一个锁存器,控制数据的显示时间是常用的方
法。
c)用作缓冲器;
d)组成计数器:移位寄存器可以组成移位型计数器,如环形或扭环形计数器。
触发器(FF)当收到输入时钟脉冲时,便会根据规则改变状态,然后保持这种状态
直到收到下一个触发脉冲信号到来。
锁存器(latch)在电平信号的作用下改变状态,是一种电平触发的存储单元。锁存
器的数据存储动作取决于输入使能信号的电平值,仅当锁存器处于使能状态时,
输出数据才会随着数据输入发生变化,否则处于锁存状态。
18 / 118
优点:面积小、锁存器比 FF 快,所以用在地址锁存是很合适的,不过一定要保
证所有的 latch 信号源的质量,锁存器在 CPU 设计中很常见,正是由于它的应用
使得 CPU 的速度比外部 IO 部件逻辑快许多。latch 完成同一个功能所需要的门较
触发器要少,所以在 asic 中用的较多;
缺点:时序分析较困难;
不用锁存器的原因有二:1、锁存器容易产生毛刺,2、锁存器在 ASIC 设计中应
该说比 FF 要简单,但是在 FPGA 的资源中,大部分器件没有锁存器这个东西,所
以需要用一个逻辑门和 FF 来组成锁存器,这样就浪费了资源;
触发器(寄存器)和锁存器的区别:触发器(寄存器)是由同步时钟信号控制的,是
需要时钟信号的;而锁存器是由电平使能信号控制的,不需要时钟信号。在 FPGA
的可用资源中,触发器资源非常常见,但是锁存器则很少,需要由一个逻辑门和
触发器来构成,浪费较多资源。
触发器(寄存器)和锁存器的应用场合也有所不同:若数据信号有效滞后于控制信
号有效,则选择锁存器;若数据信号提前于控制信号到达并且要求同步操作,则
采用触发器(寄存器)。尽管如此,在 FPGA 的电路设计中,应尽可能避免使用锁
存器。
latch 最大的危害在于不能过滤毛刺。这对于下一级电路是极其危险的。
Verilog 编程时如何避免锁存器:
第一:语句中,没有写 else,默认保持原值,产生了锁存器;
第二: case 语句中,没有完整的 default 项,也容易产生锁存器。因此保持条件语
句的完整性至关重要。
19 / 118
施密特触发器
施密特触发器属于电平触发器件,当输入信号达到某一定电压值时,输出电
压就会发生突变。输入信号从低电平上升的过程中,电路的状态转换所对应的输
入电平,与输入信号从高电平下降过程中对应的输入转换电平不同。在电路转换
过程中,通过电路内部的正反馈过程使得输出电压波形的边沿变得很陡。因此通
过施密特触发器可以消除掉干扰。
查找表的原理与结构
查找表(look-up-table)简称为 LUT,LUT 本质上就是一个 RAM。目前
FPGA 中多使用 4 输入的 LUT,所以每一个 LUT 可以看成一个有 4 位地址线的
16x1 的 RAM。 当用户通过原理图或 HDL 语言描述了一个逻辑电路以后,
PLD/FPGA 开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入
RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出
地址对应的内容,然后输出即可
建立时间保持时间
最小时钟周期:Tmin = Tco + Tdata + Tsu - Tskew。最快频率 Fmax = 1/Tmin
建立时间 Tsu(setup):触发器在时钟上升沿到来之前,其数据输入端的数据必
20 / 118
须保持不变的最小时间。(2023 禾赛)
建立时间应该满足: Tsu + Tdelay + Tco <= Tperiod + Tskew;
建立时间裕量: Tslack-su = Tperiod + Tskew – Tco – Tdelay - Tsu; (2023 禾赛)
如果有 jitter 则还需减去 jitter!!!!!!!!!!!!!!!!!!!!!!
(时钟到达时间减去数据到达时间!)
保持时间 Th(hold):触发器在时钟上升沿到来之后,其数据输入端的数据必须
保持不变的最小时间。
(2023 禾赛)
保持时间应满足: Tskew + Th – Tdelay <= Tco;
保持时间裕量: Tslack-h = Tco + Tdelay – Th - Tskew; (2023 禾赛)
如果有 jitter 则还需减去 jitter!!!!!!!!!!!!!!!!!!!!!!
Tdelay 为组合逻辑延时 + 布线延时,Tco 为触发器输入到输出之间的延时
Tskew 为时钟偏斜,Tskew 有可能为正,也有可能为负,负的话就有利于满足保
持时间,正的话就有利于满足建立时间;
可见,组合逻辑延迟 Tgate 不能太大,太大会影响建立时间的满足;
可见,门延迟 Tgate 也不能太小,太小则不利于保持时间满足。
特别注意保持时间和时钟频率无关
如果考虑 jitter 这个因素,建立时间与保持时间裕量都还要减掉这
个抖动时间。故最终的建立时间与保持时间裕量计算公式入下(其中的
tclk_delay 为时钟正向延时):
建立时间裕量
tsetup_slack =tcycle-(tcq+tlogic) -tsetup+tclk_delay-tjitter
保持时间裕量
thold_slack =tcq+tlogic-thold-tclk_delay-tjitter
建立时间违例:不满足时钟沿到来之前数据保持稳定的时间(2023 禾赛)
解决办法:
增大 Tclk,也就是降低时钟频率
21 / 118
增大 Tskew,在时钟路径上加上缓冲器,让时钟更晚到来
减小 Tcq,更换具有延时小的触发器
减小 Tcomb:组合逻辑优化,例如将串行的组合逻辑优化为并行逻辑,或是在其
中插入触发器(即流水线设计)
保持时间违例:不满足时钟沿到来之后数据保持稳定的时间(2023 禾赛)
解决办法:
增大 Tcq:更换具有 更大器件延时的触发器
增大 Tcomb:增加组合逻辑运算时间
减小 Tskew:优化时钟路径,让时钟更早到来
制造工艺(Process)、工作电压(Voltage)、温度(Temperature)对芯片运行
的速度影响很大。在分析建立时间是否满足时序要求时要使用慢速模型,即高温
+低压+慢速模型;分析保持时间是否满足时序要求时要使用快速模型,即低温+
高压+快速模型。
为什么要满足建立和保持时间要求?
因为触发器的内部数据的形成是需要一定的时间的,如果不满足建立时间和
保持时间,触发器将进入亚稳态。
22 / 118
D 触发器原理图
在脉冲信号为 0 时,数据就得被送到第一级锁存器的输出,如果建立时间不满
足,有效数据无法被打入第一级锁存器输出,也就是无法被有效打入触发器内部,
同样的,如果保持时间不满足,那么第一级锁存器的输出可能也在脉冲高电平来
了之后发送变化,导致被第二级锁存器输出发生变化,也就是无法被有效的输出;
建立保持时间典型题
23 / 118
恢复时间/移除时间
移除时间和恢复时间指的都是复位信号撤消的时机。
是时钟有效沿与复位信号的间隔时间。
复位信号不能在时钟有效沿时刻撤消,否则会有如下问题
recovery time:恢复时间
撤销复位时,恢复到非复位状态的电平必须在时钟有效沿来临之前的一段时
间到来,才能保证时钟能有效恢复到非复位状态,此段时间为 recovery time。类
24 / 118
似于同步时钟的 setup time。
Recovery 故障:即异步复位信号并未在所有目的寄存器及时撤除。
大多数设计对 recovery 故障免疫,但是有时是灾难性的,因为这类故障非持续性,
难以复现。
removal time :去除时间
复位时,在时钟有效沿来临之后复位信号还需要保持复位状态的时间为去除时间
removal time(去除时间)。类似同步时钟 hold time。
只要没有故意增加时钟到目的寄存器的延时,那么 removal 分析通常都能满足时
序要求。如果真的有,那么其故障类似 recovery 故障。
可能发生 recovery 故障的情况及解决
1. 源寄存器并未布置在全局驱动器附近;
2. 该网络并未使用全局布线资源,而且经过很长布线走遍整个芯片内部;
3. 该网络使用了全局布线资源,但是全局延时相对于时钟还是太慢;
4. 该寄存器跨越时钟域;
解决:
1. 对寄存器位置添加约束,强制将其布局到全局资源附近;
2. 尝试使用全局布线资源;
3. 全局布线资源无效,尝试使用本地布线资源;
4. 跨时钟域的话,在新时钟域内进行同步;
5. Set_false_path(设计者对自己的设计要足够自信)
25 / 118
亚稳态
什么是亚稳态
亚稳态是指无法在某个规定的时间段内到达一个可以确认的状态。并且稳定后数
据和输入无关,是 0 或 1 的随机数据;
为什么两级触发器可以防止亚稳态传播?(这样的同步电路对于从较
慢的时钟域来的信号进入较快的时钟域比较有效,对于进入一个比较慢的时钟域,
则没有作用。)!~!!!!!
假设第一级触发器的输入不满足其建立保持时间,他在第一个脉冲沿之后输
出的数据将会是亚稳态,那么他在下一个脉冲沿到来之前,其输出的亚稳态数据
在一段恢复时间之后必须稳定下来,而且稳定的数据必须满足第二级触发器的建
立时间,如果满足了,那么在下一个脉冲沿到来之时,第二级触发器将不会再出
现亚稳态
同步器有效的条件:第一级触发器进入亚稳态后的恢复时间 + 第二级触发
器的建立时间 < = 时钟周期。 更确切地说,输入脉冲宽度必须大于同步时钟周
期与第一级触发器所需的保持时间之和。最保险的脉冲宽度是两倍同步时钟周期。
所以,这样的同步电路对于从较慢的时钟域来的异步信号进入较快的时钟域比较
有效.(理解不是很到位)
解决方法:
1 降低系统时钟频率
2 用反应更快的Flip-Flop
3 引入同步机制,防止亚稳态传播
4 改善时钟质量,用边沿变化快速的时钟信号
关键是器件使用比较好的工艺和时钟周期的裕量要大.
可能出现亚稳态的场合
1)在跨时钟传输中,由于时钟之间存在相移,因此当源寄存器发出数据之后,
无法确定在什么时间段到达目的寄存器,因此也不能保证满足目的寄存器的
setup time 和 hold time 要求。
(2)在异步信号采集当中,由于异步信号可以在任何时间点到达目的寄存器,
因此也无法满足目的寄存器的 setup time 和 hold time 时间。
(3) 复位电路分为两类,异步复位电路和同步复位电路,都可能出现亚稳态,
26 / 118
只不过同步复位电路出现亚稳态的概率较低。
流水线的设计思想
可以将较大的组合逻辑分解为较小的 N 块,通过适当的方法平均分配组合逻
辑,然后在中间插入触发器,并和原触发器使用相同的时钟,就可以避免在两个
触发器之间出现过大的延时,消除速度瓶颈,这样可以提高电路的工作 频率
原设计速度受限部分用一个时钟周期实现,采用流水线技术插入触发器后,
可用 N 个时钟周期实现,因此系统 的工作速度可以加快,吞吐量加大。注意,
流水线设计会在原数据通路上加入延时,另外硬件面积也会稍有增加。
流水线冒险
在流水线中会有一种情况,在下一个时钟周期中下一条指令不能执行,这种
情况被叫做流水线冒险。流水线冒险一共分为三种情况,分别是 结构冒险
(Structural hazards)、数据冒险(Data hazards)和控制冒险(Control hazards)
1. 数据冒险:当指令在流水线中重叠执行时,后面的指令需要用到前面
的指令的执行结果,而前面的指令尚未写回导致的冲突,称为数据冒
险(也称为数据相关性)。
2. 结构冒险:当一条指令需要的硬件部件还在为之前的指令工作,而无
法为这条指令提供服务,那就导致了结构冒险。(这里结构是指硬件
当中的某个部件、也称为资源冲突)。
3. 控制冒险:如果现在想要执行哪条指令,是由之前指令的运行结果决
定,而现在那条之前指令的结果还没产生,就导致了控制冒险(实际
上就是 riscv 的跳转指令引起的,跳转指令要经过 2 个周期后才会出现
跳转结果)。
27 / 118
代码覆盖率
这种方式主要包括行覆盖率、路径覆盖率、翻转覆盖率、有限状态机覆盖率。其
中,
行覆盖率:衡量多少行代码被执行过;
路径覆盖率:衡量穿过代码和表达式的路径有多少被执行过;
翻转覆盖率:衡量哪些单 bit 变量的值为 0 或者 1;
有限状态机覆盖率:衡量状态机中哪些状态和状态转换已经被执行过。
代码覆盖率 100% 不代表功能没问题。
功能覆盖率&断言覆盖率
功能覆盖率
这种方式通过收集设计在实际环境中的行为来说明设计所要求的全部功能特性
是否已经满足,换言之,功能覆盖率与设计意图紧密相连,其可以发现设计中被
漏掉的情况,而代码覆盖率却不能发现。
断言覆盖率
断言是用于一次性或在一段时间内核对两个设计信号之间关系的声明性代码。断
言常用于检查错误,一旦检测出错误,仿真就会立刻停止。使用断言覆盖率可以
测量断言被触发的频繁程度。
MTBF(Mean Time Between Failure)为平均故障发生间隔时间
MTBF(Mean Time Between Failure)为平均故障发生间隔时间,是衡量一个
产品的可靠性指标,它反映了产品的时间质量,是体现产品在规定时间内保持功
能的一种能力。具体来说,是指相邻两次故障之间的平均工作时间,也称为平均
故障间隔,这个平均故障时间越久说明产品故障少的就是可靠性高。
28 / 118
pattern count 为测试机台的测试 pattern 数量,
pattern 多意味着测试全面。Fault coverage 为故障覆盖率定义为在所有故障
中检测到的故障的百分比,这个指标越高越好,100%是最好的效果。Yield 在 IC
中表示芯片的良率,即达到标称性能规格的器件或电路的百分比,这个指标是越
高越好。
编码方式
一般的,在 Verilog 中最常用的编码方式有二进制编码(Binary)、格雷码(Gray-code)
编码、独热码(One-hot)编码。
二进制码和格雷码是压缩状态编码。
若使用格雷编码,则相邻状态转换时只有一个状态位发生翻转,这样不仅能消除
状态转换时由多条状态信号线的传输延迟所造成的毛刺,又可以降低功耗。
二进制编码也可称连续编码,也就是码元值的大小是连续变化的。如
S0=3'd0,S1=3'd1,S2=3'd2,S3=3'd3....
格雷码的相邻码元值间只有一位是不同的,如
S0=3'b000,S1=3'b001,S2=3'b011,S3=3'b010....
独热编码即 One-Hot 编码,又称一位有效编码,其方法是使用 N 位状态寄
存器来对 N 个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时
候,其中只有一位有效。虽然使用较多的触发器,但由于状态译码简单,可减少
组合逻辑且速度较快, 这种编码方式还易于修改,增加状态或改变状态转换条
件都可以在不影响状态机的其它部分的情况下很方便地实现。另外,它的速度独
立于状态数量。与之相比,压缩状态编码在状态增加时速度会明显下降。
独 热 码 值 每 个 码 元 值 只 有 一 位 是 '1', 其 他 位 都 是 '0', 如
S0=3'b001,S1=3'b010,S2=3'b100
29 / 118
二进制编码、格雷码编码使用最少的触发器,消耗较多的组合逻辑,而独热
码编码反之。独热码编码的最大优势在于状态比较时仅仅需要比较一个位,从而
一定程度上简化了译码逻辑。虽然在需要表示同样的状态数时,独热编码占用较
多的位,也就是消耗较多的触发器,但这些额外触发器占用的面积可与译码电路
省下来的面积相抵消。
为了进一步提高独热编码的速度,可以使用并行 CASE 语句"即在 case(1‘b1)
后添加综合器可以辨认的并行 CASE 注释语句。注意:并行 CASE 只推荐在独热
编码时使用,在二进制编码和格雷编码时使用有时反而会增大面积降低速度。
在 CPLD 中,由于器件拥有较多的地提供组合逻辑资源,所以 CPLD 多使用二
进制编码或格雷码,而 FPGA 更多地提供触发器资源,所以在 FPGA 中多使用独
热码编码。当然,这并不是说在 FPGA 中就非得用独热编码,在 CPLD 中不能用
独热编码,一般的,对于小型设计(状态数小于 4)使用二进制编码,当状态数
处于 4-24 之间时,宜采用独热码编码,而大型状态机(状态数大于 24)使用格
雷码更高效。
7nm 工艺指的是什么?
首先,7nm 工艺指的是 cpu 的制作工艺。深入来讲,cpu 集成了亿级的晶体
管,这种晶体管是由三个极组成的,其中一个叫做栅极,这里的 7nm 指的就是
晶体管中栅极的宽度,学名叫做栅长。纳米数越小,比如从 10nm 到 7nm,同
样的 cpu 上就可以集成更多的晶体管。目前,各大厂商目前只有台积电一家能够
量产。
30 / 118
工艺上常提到 0.25
和上面是一个东西!!!!!!!!!!!!!!!!!!!
制造工艺:我们经常说的 0.18 微米、0.13 微米制程,就是指制造工艺了。
制造工艺直接关系到 cpu 的电气性能。而 0.18 微米、0.13 微米这个尺度就是指
的是 cpu 核心中线路的宽度。线宽越小,cpu 的功耗和发热量就越低,并可以工
作在更高的频率上了。所以以前 0.18 微米的 cpu 最高的频率比较低,用 0.13 微
米制造工艺的 cpu 会比 0.18 微米的制造工艺的发热量低都是这个道理了。
ADC 分类:
ADC 的种类有很多种,传统的逐 次 逼 近 型 、积 分 型 、并 行( F l a s h )A D C ,
近年来新发展起来的∑-Δ 型和流水线型 ADC。这些 ADC 各自有其优缺点,不同的
应用场合可以选择合适的 ADC。
1、逐次逼近型、积分型等主要应用于中速或较低速、中等精度的数据采集和智
能仪器中。流水线型 ADC 主要应用于高速情况下的瞬态信号处理、快速波形存
储与记录、高速数据采集、视频信号量化及高速数字通讯技术等领域。而∑-Δ型
ADC 主应用于高精度数据采集,特别是数字音响系统、多媒体等电子测量领域。
逐次逼近型(SAR 型)将采样输入信号与已知电压不断进行比较,让转换的数字
量在数值上逐次逼近输入模拟量对应值。1 个时钟周期完成位转换,N 位转换需
要 N 个时钟周期,转换完成,输出二进制数。一般由控制逻辑电路、时序产生
31 / 118
器、移位寄存器、D/A 转换器及电压比较器组成。
Flash ADC,有时称为并行 ADC 是速度最快的 ADC,主要由分压电阻,比较器阵
列,锁存器阵列,编码器和输出寄存器组成。
流水线型 ADC 由若干级级联电路组成,每一级包括一个采样/保持放大器、一个
低分辨率的 ADC 和 DAC 以及一个求和电路,其中求和电路还包括可提供增益的
级间放大器。
Σ-Δ型 ADC 不是对信号的幅度进行直接编码,而是根据前一次采样值与后一次
采样值之差(增量)进行量化编码,通常采用一位量化器,利用过采样和∑-Δ调
制技术来获得极高的分辨率。Σ-ΔADC 由非常简单的模拟电路和十分复杂的数
字信号处理电路构成,Δ表示增量,∑表示积分或求和。
跨时钟域处理
快同步慢,1.5 倍最好,脉冲展宽,也是至少展宽至 1.5 倍
异步时钟域的同步分为两种:
1)两个域的时钟频率相同,但相位不固定,称为同频异相时钟域的同步。同频异相
问题的简单解决办法是用后级时钟对前级时钟数据采样两次。该方法可以有效的减少亚稳
态的传输,使后级电路数据都是有效电平值。
2)两个时钟域频率根本不同,称为异频时钟域的同步。要可靠地完成异频时钟域同
步,可以使用DPRAM或者FIFO,利用上级时钟写数据再用本级时钟读出即可。
单比特
三种跨时钟域处理方法:打两拍(两级触发器同步);异步双口 RAM/FIFO;
格雷码转换;加握手信号
亚稳定性是指不稳定的中间状态,但是在此状态下,任何微小的扰动将导致
最终状态变为稳定状态,但是并不能保证最终的状态就是设计所期待的状态,换
句话就是可能发生传输错误。当应用于数字电路中的触发器时,它表示触发器的
32 / 118
输出可能尚未稳定,不确定是否能到最终期望值的状态。违反了其建立或保持时
间。
最基本的同步器是两个串联的触发器,均由目的时钟域提供时钟。这个电路
称为两个触发器同步器。如果输入数据的变化非常接近接收时钟边沿(在建立/
保持时间内),则同步器中的第一个触发器可能会变为亚稳态,但是在信号被采
样之前,仍然有一个完整的时钟使信号变得稳定--第二触发器。然后,目标时钟
域的逻辑使用的是第二个触发器的输出。
两级触发器可防止亚稳态传播的原理:假设第一级触发器的输入不满足其建
立/保持时间,它在第一个脉冲沿到来后输出的数据就为亚稳态,那么在下一个
脉冲沿到来之前,其输出的亚稳态数据在一段恢复时间后必须稳定下来,而且稳
定的数据必须满足第二级触发器的建立时间,如果都满足了,在下一个脉冲沿到
来时,第二级触发器将不会出现亚稳态,因为其输入端的数据满足其建立保持时
间。同步器有效的条件:第一级触发器进入亚稳态后的恢复时间 + 第二级触发
器的建立时间 <= 时钟周期。如果不满足上述表达式,那么到第二个触发器开始,
信号仍然可能是亚稳态的。在这种情况下,将发生同步错误,并且设计可能会发
生故障,但是这种情况是很罕见的。
两个触发器同步器足以满足很大部分应用的需求了。为了进一步提高 MTBF,
有时会使用具有更好的建立/保持时间特性的库单元(其具有低阈值电压)构建
两个触发器同步器。
应该很多人都会问,为什么是打两拍呢,打一拍、打三拍行不行呢?
先简单说下两级寄存器的原理:两级寄存是一级寄存的平方,两级并不能完全消
除亚稳态危害,但是提高了可靠性减少其发生概率。总的来讲,就是一级概率很
33 / 118
大,三级改善不大。
在跨时钟域(CDC)发送信号到同步器之前,通常先在源时钟域中使用寄存
器保存信号。这也是为什么上图中介绍为什么在两个时域的触发器之间需要没有
组合逻辑的原因,只有这样才可以首先消除了组合电路产生的毛刺。如下图所示:
因为在组合逻辑电路中常常因为各个输入信号的不一致性以及各路径延迟
的不一样,可能导致输出结果存在毛刺。
而在跨时钟域时,又不确定目的时钟域时钟上升沿什么时候到来,因此目的
时钟域时钟的采样就更加无法保证。
因此必须保证两个时域的触发器之间没有组合逻辑。
1)慢时钟域到快时钟域 – 打两拍+边沿检测
边沿检测是为了避免采到多个高电平,可以选择性不要
34 / 118
2)快时钟域到慢时钟域
困难的情况是将快速信号传递到慢速时钟域。明显的问题是,如果快速信号
上的脉冲短于慢速时钟的周期,则该脉冲可能会在被慢速时钟采样之前消失。
采用具有反馈信号的同步器(下述代码可实现慢快时钟域转换)
该解决方案非常安全,但是由于在允许再次更改信号之前需要在两个方向上
进行同步,因此确实存在增加延迟的代价。
下面是使用握手信号传输数据的例子。
1)模块 X 将数据放到数据总线上并发出 xreq(请求)信号,表示有效数据已经
放到数据总线上。
2)把 xreq 信号打两级同步到 yclk 时钟域。
3)模块 Y 在接收到 xreq 同步后的信号后,接收数据总线上的信号。
4)模块 Y 接收数据的同时发出 yack(响应)信号,表示已经接收到了数据。
5)模块 X 接收到 yack 后打两级同步到 xclk 时钟域。
35 / 118
6)模块 X 在接收到 yack 同步后的信号后,使 xreq 无效,表示此次数据传输结
束。
7)模块 Y 在发现 xreq 无效后,使 yack 无效。
8)模块 X 发现 yack 无效后可以进行下一笔数据传输。
优点:不论 xclk 和 yclk 的频率如何,都可以进行数据传输。
缺点:完成数据传输的延迟比使用异步 FIFO 传输大得多。
多比特
而对于多位的异步信号,可以采用如下方法:1:可以采用保持寄存器加握手
信号的方法(多数据,控制,地址);2:特殊的具体应用电路结构,根据应用的不
同而不同;3:异步 FIFO。(最常用的缓存单元是 DPRAM)
1. 多比特融合为单比特
2. 多周期路径规划:就是传递数据的时候同时传递一个同步的控制信号,
数据不需要同步,接收端在同步使能信号通过同步方式传递到接收时钟域之前不
36 / 118
允许采集数据。之所以叫多周期路径规划,是由于非同步的数据字是被直接传递
到接收时钟域并在接收时钟域保持多个时钟周期,只有在一个使能信号被同步到
接收时钟域并被识别后才允许改非同步数据字发生变化。(其实就是 DMUX)
DMUX 电路图
对应代码:
module mux_synchronizer(
input
input
adata_valid,
[7:0]
adata,
input
brst_n,
input
bclk,
output reg [7:0]
bdata,
output reg
bdata_valid
);
reg
adata_valid_r;
reg
adata_valid_rr;
always@(posedge bclk or negedge brst_n)
begin
37 / 118
if(brst_n==1'b0)
{bdata_valid,adata_valid_rr,adata_valid_r}<=3'b0;
else
{bdata_valid,adata_valid_rr,adata_valid_r}<={adata_valid_rr,adata_valid_r,adata_v
alid};
end
always@(posedge bclk or negedge brst_n)
begin
if(brst_n==1'b0)
bdata<=8'b0;
else if(adata_valid_rr==1'b1)
bdata<=adata;
end
endmodule
附带边沿检测的 DMUX 电路
3. 多比特转为格雷码传输(多种转换路径时也不太行)
4.
脉冲检测同步器
先将原时钟域下的脉冲信号,转化为电平信号(使用异或门或选择器),再进
38 / 118
行同步,同步完成之后,再把新时钟域下的电平信号转化为脉冲信号(边沿检测
器的功能)。这就从快时钟域的取出一个单时钟宽度脉冲,在慢时钟域建立新的
单时钟宽度脉冲。结合了之前所提到的两种同步器。但存在一个问题,输入脉冲
的时间间距必须在两个接收时钟周期以上,否则新的脉冲会变宽,这就不再是单
时钟脉冲了。 适用于快时钟域向慢时钟域
`timescale 1ns/1ns
module pulse_detect(
input
clk_fast
,
input
clk_slow
,
input
rst_n
,
input
data_in
,
output
dataout
);
reg data_reg,data_reg1,data_reg2,data_reg3;
always @(posedge clk_fast or negedge rst_n)begin
if(!rst_n)
data_reg<=1'd0;
else if(data_in)
data_reg<=~data_reg;
//反相器
else
data_reg<=data_reg;
end
always @(posedge clk_slow or negedge rst_n)begin
if(!rst_n)
39 / 118
begin
data_reg1<=1'd0;
data_reg2<=1'd0;
data_reg3<=1'd0;
end
else
begin
{data_reg3,data_reg2,data_reg1}<={data_reg2,data_reg1,data_reg};
end
end
assign dataout=data_reg3^data_reg2;
//异或
endmodule
还有一种情况是两个时钟域的频率相差极大的情况,这种情况下先分频再同步
例:
把一个 12MHZ 信号同步到 1Ghz 信号
先同步到超高频(1Ghz)分频后的时钟,再寄存。
一些注意事项:
slow to fast:目标时钟频率必须是源时钟频率 1.5 倍或者以上,才能满足
“三时钟沿要求”。才能保证快时钟域能够采样到慢时钟域的脉冲。
如果目标时钟域只快一点,为保险起见,还是用握手机制。
“三时钟沿”要求:快时钟域的信号宽度必须是慢时钟域周期的 1.5 倍以上。
也就是要持续 3 个时钟沿以上(上升沿和下降沿都算)。如下图所示
40 / 118
准时钟域同步
如果两个时钟具有相同的标称频率和指定范围内的时钟精度误差,那么我们
说这两个时钟源是准同步的。在实际应用中,通常数据发逐端的本地时钟和接收
端的本地时钟是独立产生的,通常都使用晶体振荡器这类高精度时钟源,二者往
往具有相同的标称值和规定范围内的精度误差。例如,PCIe 要求发送和接收时
钟误差在 300 ppm 以内。这就意味着在一个相对较长的时间里(例如,对 PCIE
来说,超过 1300 个时钟周期),两个时钟将产生 1 个时钟周期的偏差。下面我们
将讨论此时如何进行数据传输同步。
PCIe、SATA 等串行通信协议中广泛使用了准同步通信机制。在数据收发电路中,
41 / 118
弹性缓冲区(FIFO)被用于进行跨时钟域数据传输。此时 FIFO 不仅用于跨时钟
域的同步,还需要与一定的外部电路配合,解决长时间通信时,由于时钟偏差造
成的 FIFO 内部数据上溢或下溢的问题。PCIe 和 SATA 要求发送端周期性地将
null 字符插人传输数据流中;在接收端,根据 FTFO 内部的数据深度。这些 null
字符会被丢弃或添加到 FIFO 中。
FIFO 深度计算
公式 1:
FIFO 被填满时间 = 数据包传送时间;
Fifo 被填满时间 = fifo 深度/(写入速率 – 读出速率);
数据包传送时间 = 写入数据量/写入速率;
写入数据速率 = 写入数据量/时钟周期*时钟数;
公式 2:(自行理解的)
就是同一时间内:能写入的数据数 – 能读出的数据数
最坏情况:(背靠背!!!)
找到最大的写速率和最小的读速率!!!
如果是那种 10 个周期读 8 个(平均读一个数据的时间为 1/clk*10/8 = t),100 个
周期写 40 个,首先考虑背靠背,计算出连续写入 40 + 40 个数据需要的时间 T,
80/clk_period;再计算 T 时间内能读出的数据数(T/t),做差即得到 FIFO 数据深度
这种题依次类推
异步 fifo
判断异步 FIFO 空的条件:读写地址(格雷码)完全相同。
判断异步 FIFO 满的条件:读写地址(格雷码)的高 2 位不同,其余位均相
同。
42 / 118
①
将写指针同步到读时钟域再和读指针比较进行 FIFO 空状态判断,因为
在同步写指针时需要时间,而在这个同步的时间内有可能还会写入新的
数据,因此同步后的写指针一定是小于或者等于当前实际的写指针,所以
此时判断 FIFO 为空不一定是真空,这样更加保守,一定不会出现空读的
情况,虽然会影响 FIFO 的性能,但是并不会出错。
② 将读指针同步到写时钟域再和写指针比较进行 FIFO 满状态判断,同步
后的读指针一定是小于或者等于当前的读指针,所以此时判断 FIFO 为满
不一定是真满。
这样更保守,这样可以保证 FIFO 的特性:FIFO 空之后不能继续读取,FIFO 满
之后不能继续写入。 总结来说异步逻辑转到同步逻辑不可避免需要额外的时钟
开销,这会导致满空趋于保守,但是保守并不等于错误,这么写会稍微有性能损
失,但是不会出错
三段式状态机优缺点
一段式:
优:写法简洁;
缺:不利于维护;
二段式:
优:写法便于阅读和维护
缺:当前状态的输出用组合逻辑实现,可能存在竞争冒险,产生毛刺。
三段式:
优:时序逻辑输出解决了两段式组合逻辑的毛刺问题
缺:消耗资源较多
有限状态机&序列检测
状态图是以几何图形的方式来描述时序逻辑电路的状态转移规律以及输出与输
入的关系。
43 / 118
状态机即 FSM,其本质是一种思维方式。完整的状态机须包括初始状
态、结束状态、当前状态、下一状态、转移条件和动作六部分(当前状态
下需要做什么)。
状态机分为 more 型状态机和 mealy 型状态机。More 型状态机是指输
出只与当前状态有关,与输入无关;mealy 型状态机是指输出与当前状态
和输入状态都有关系。
状态机的描述采用通常采用三种方式,即一段式、二段式和三段式。三
段式的状态机其基本组成结构为:
第一段,采用时序逻辑将下一状态赋给当前状态;
第二段,采用组合逻辑,描述状态转移;
第三段,采用时序逻辑,执行相应动作(当前状态我要干什么)。
一段式状态机的基本组成结构是无三段式的第一段和第三段,第二段变
为时序逻辑。二段式状态机的基本组成结构是将三段式中的第二段和第三
段进行组合(组合完是组合逻辑!!!组合逻辑实现各个输入输出以及状态
判断)。
对于状态机当前状态的编码有 3 种方式:二进制码、独热码和格雷码。
下面对其进行说明:
① 二进制码:有可能会有时序问题,适用于状态很少的情况;
②独热码:只有一个码在变,使用过程中应注意,case 语句中必须加
default 语句,以防出错;
② 格雷码:相邻只有一个比特不一样,其兼容二进制码和格雷码的优
点
一、 状态机之序列检测
44 / 118
Moore 型
Mealy 型:
参
考
代
码
见
F:\work\Summarize\
手
写
_bymyself\FSM_sequence_check.v
1 、 Moore 型 的 输 出 与 时 钟 是 同 步 的 , 因 为 它 仅 是 状 态 的 函 数 , 从
而 只 有 当 状 态 改 变 时 输 出 才 可 能 改 变 。 这 就 保 了 Moore 型 输 出 波
形更加“洁净”。
2 、 Mealy 型 输 出 会 随 着 输 入 的 变 化 而 变 化 , 这 既 是 它 的 缺 点 也 是
它的优点,设计者可通过输入信号对状态机的输出信号实施控制。
3 、 Mealy 型 状 态 机 比 Moore 状 态 机 所 需 要 的 状 态 个 数 少 , 这 就 意
味着所需要的触发器个数少,电路更简单,成本更低廉。
4 、 就 本 文 所 的 “ 1010” 序 列 检 测 器 而 言 , Moore 的 输 出 比 Mealy
的输出会有一个时钟的时延。
45 / 118
二进制编码和独热码比较
二进制编码方案
独热码方案
(优点)需要的触发器个数较少
(优点)状态译码的组合逻辑较少;
状态信息使用单个触发器表示,具有良
好的定时裕量;适用于 ECO(工程设计
变更)
--、 --由于状态变量易于读取、方便使
用,易于更改
(缺点)状态译码需要额外的组合逻
需要的触发器个数较多。
辑;对状态译码需要额外的组合逻辑,
从而在定时路径上增加额外延迟;不适
用于 ECO;有时状态触发器与其他逻辑
合并在一起,使得特定推导变得困难
半导体器件(PMOS/NMOS)
半导体器件有双极型(BJT)[晶体管]、结型(FET)[场效应管]、和绝缘型(MOS)[场
效应管]几种,BJT 是通过基极电流来控制集电极电流而达到放大作用的,
FET&MOS 是靠控制栅极电压来改变源漏电流,所以说 BJT 是电流控制器件,而
FET 和 MOS 是电压控制器件。
TTL 门电路是由双极型晶体管组成的集成门,由于其输入级和输出级均采用
了晶体管,所以称为晶体管-晶体管逻辑门电路
CMOS 门电路是由 PMOS 和 NMOS 管组成的互补电路,静态功耗小,扛干扰
能力强,工作稳定性好。
46 / 118
或非/与非船上有
PMOS 管就是 positive 管,电流从源极(输入端)到漏极(输出端)
NMOS 管是 negative 管,电流要是从漏极(输入端)到源极(输出端),
NMOS/PMOS 不可颠倒
因为 NMOS 和 PMOS 的导电沟道是相反的,原来电路给的导电条件不具
47 / 118
备,则这个 MOS 管就不能导通,反过来,不该导通的,反倒导通了
TTL 与 COMS 电平可以直接互连吗?
TTL 和 CMOS 不可以直接互连,由于 TTL 是在 0.3-3.6V 之间,而 CMOS 则是有在
12V 的有在 5V 的。CMOS 输出接
到 TTL 是可以直接互连。TTL 接到 CMOS 需要在输出端口加一上拉电阻接到 5V
或者 12V。 用 CMOS 可直接驱动 TTL;加上拉电阻后,TTL 可驱动 CMOS.
LVDS(Low-Voltage Differential Signaling ,低电压差分信号
LVDS 信号传输一般由三部分组成:差分信号发送器,差分信号互联器,差分
信号接收器
差分信号发送器:将非平衡传输的 TTL 信号转换成平衡传输的 LVDS 信号。
差分信号接收器:将平衡传输的 LVDS 信号转换成非平衡传输的 TTL 信号。差分
信号互连器:包括连接线(电缆或者 PCB 走线),终端匹配电阻。按照 IEEE 规定,
电阻为 100 欧。我们通常选择 100Ω或 120Ω的电阻。
差分信号和普通的单端信号走线相比,最明显的优势体现在以下三个方面
(LVDS):1)抗干扰能力强。因为两根差分走线之间的耦合很好,当外界存在噪
声干扰时,几乎是同时被耦合到两条线上,而接收端关心的只是两信号的差值,
所以外界的共模噪声可以被完全抵消;2)能有效抑制电磁干扰 EMI。同样的道
理,由于两根信号的极性相反,它们对外辐射的电磁场可以相互抵消,耦合的越
紧密,泄放到外界的电磁能量越少;3)时序定位精确。由于差分信号的开关变
化是位于两个信号的交点,而不像普通单端信号依靠高低两个阈值电压判断,因
而受工艺、温度的影响小,能降低时序上的误差,同时也更适合于低幅度信号的
电路。目前流行的 LVDS 就是指这种小振幅差分信号技术。
(差分信号走线—等长
(时刻保持极性相反、减少共模分量)、等距(差分阻抗一致,减少反射)、尽量
靠近)
48 / 118
Mos 场效应管及增强型/耗尽型
MOS 场效应管即金属-氧化物-半导体型场效应管,英文缩写为 MOSFET(Metal-OxideSemiconductor Field-Effect-Transistor)
,属于绝缘栅型。其主要特点是在金属栅极与沟道之间
有一层二氧化硅绝缘层,因此具有很高的输入电阻(最高可达 1015Ω)
。它也分 N 沟道管和
P 沟道管,符号如图 1 所示。通常是将衬底(基板)与源极 S 接在一起。
根据导电方式的不同,MOSFET 又分增强型、耗尽型。所谓增强型是指:当 VGS=0 时管
子是呈截止状态,加上正确的 VGS 后,多数载流子被吸引到栅极,从而“增强”了该区域的载
流子,形成导电沟道。耗尽型则是指,当 VGS=0 时即形成沟道,加上正确的 VGS 时,能使
多数载流子流出沟道,因而“耗尽”了载流子,使管子转向截止。
P、N 型半导体
P 型半导体即空穴浓度远大于自由电子浓度的杂质半导体。
P 型半导体中多数载流子为空穴,空穴是带正电荷载流子。
N 型半导体中多数是自由电子,自由电子是带负电荷载流子。
PNP、NPN
PNP与NPN的区别在表面上是以PN结的方向来定义的,实际上是以三极管的结构材料
来区分的。PNP是两边的棒料是镓,中间的是硅。镓是第三主族的元素,其核外为三个电
子,硅是第四主族的元素,其核外有四个电子,这样在两个PN的方向上的顺序是P-N-N
的关系;相反NPN是两边的材料是硅,中间的是镓,形成的PN结顺序为N-P-N的关系。
顺便说明:P的意思是在PN结上缺少电子,以空穴为主导电的材料,也叫P型材料;N的意
思是在PN结上有多
余的电子,以电子为主导电的材料,也叫 N 型材料。
半导体工艺掺杂方式
根据掺入的杂质不同,杂质半导体可以分为 N 型和 P 型两大类。 N 型半导
体中掺入的杂质为磷等五价元素,磷原子在取代原晶体结构中的原子并构成共价
49 / 118
键时,多余的第五个价电子很容易摆脱磷原子核的束缚而成为自由电子,于是半
导体中的自由电子数目大量增加,自由电子成为多数载流子,空穴则成为少数载
流子。P 型半导体中掺入的杂质为硼或其他三价元素,硼原子在取代原晶体结构
中的原子并构成共价键时,将因缺少一个价电子而形成一个空穴,于是半导体中
的空穴数目大量增加,空穴成为多数载流子,而自由电子则成为少数载流子。
为什么一个标准的倒相器中 P 管的宽长比要比 N 管的宽长比
大
和载流子有关,P 管是空穴导电,N 管是电子导电,电子的迁移率大于空
穴,同样的电场下,N 管的电流大于 P 管,因此要增大 P 管的宽长比,使之对
称,这样才能使得两者上升时间下降时间相等、高低电平的噪声容限一样、充
电放电的时间相等。
CMOS 电路中闩锁效应
Latch-up 闩锁效应,又称寄生 PNPN 效应或可控硅整流器( SCR, Silicon Controlled
Rectifier )效应。在整体硅的 CMOS 管下,不同极性搀杂的区域间都会构成 P-N 结,
而两个靠近的反方向的 P-N 结就构成了一个双极型的晶体三极管。因此 CMOS 管
的下面会构成多个三极管,这些三极管自身就可能构成一个电路。这就是 MOS
管的寄生三极管效应。如果电路偶尔中出现了能够使三极管开通的条件,这个寄
生的电路就会极大的影响正常电路的运作,会使原本的 MOS 电路承受比正常工
作大得多的电流,可能使电路迅速的烧毁。Latch-up 状态下器件在电源与地之间
形成短路,造成大电流、EOS(电过载)和器件损坏。
Antenna effect 和其预防措施
Antenna effect就是在深亚微米的晶圆级芯片制造过程中,离子刻蚀时器件栅极上积累越
来越多的带电离子导致电压升高击穿栅极,当直接连接栅极的金属面积相对大于栅面积,
那么带电离子将会不断积累在栅极,导致栅极击穿芯片失效
措施:1。通过跳层的方法减少直接连接到栅极的金属面积
50 / 118
2.通过插入二极管来对过高的电压进行放电来避免击穿器件的栅极
短窄沟效应
当 JFET 或 MESFET 沟道较短,<1um 的情况下,这样的器件沟道内电场很高,载
流子民饱合速度通过沟道,因而器件的工作速度得以提高,载流子漂移速度,通
常用分段来描述,认为电场小于某一临界电场时,漂移速度与近似与电场强成正
比,迁移率是常数,当电场高于临界时,速度饱和是常数。所以在短沟道中,速
度是饱和的,漏极电流方程也发生了变化,,这种由有况下饱和电流不是由于沟
道夹断引起的而是由于速度饱和。
窄沟道效应是由于沟道宽度方向边缘上表面耗尽区的侧向扩散,栅电极上的正电
荷发出的电场线除大部分终止于耗尽区外还终止于侧向扩散区,是阈值电压上升。
击穿效应
击穿效应:PN 结加反向电压时,空间电荷区变宽,内电场增强。反向电压增
大到一定程度时,反向电流将突然增大。反向电流突然增大时的电压称击穿电压,
即 PN 结的击穿表象为反向偏置电流突然增大。
基本的击穿效应有两种,即隧道击穿(也叫齐纳击穿)和雪崩击穿。
稳压管
稳压管也是一种晶体二极管,它是利用 PN 结的击穿区具有稳定电压的特性
来工作的。稳压管在稳压设备和一些电子电路中获得广泛的应用。把这种类型的
二极管称为稳压管,以区别用在整流、检波和其他单向导电场合的二极管。稳压
二极管的特点就是击穿后,其两端的电压基本保持不变。
发射极耦合逻辑
发射极耦合逻辑简称 ECL 电路,与 TTL 电路不同,最大的特点是 ECL 门电路
51 / 118
工作在非饱和状态,具有相当高的速度,在高速和超高速数字系统中充当无以匹
敌的角色。
负反馈
采用负反馈优点:降低放大器的增益灵敏度,改变输入电阻和输出电阻,改
善放大器的线性和非线性失真,有效地扩展放大器的通频带,自动调节作用。
引入负反馈后所产生的不利因素就是会导致自激振荡。
为了消除自激,通常会采用滞后补偿的方法,即在反馈环内的基本放大电路
中插入一个含有电容 C 的电路,是得开环增益的相位滞后
反馈的类型有:电压串联负反馈、电流串联负反馈、电压并联负反馈、电
流并联负反馈。
电压负反馈的特点:电路的输出电压趋向于维持恒定。
电流负反馈的特点:电路的输出电流趋向于维持恒定。
1Å=0.1nm (紫光展锐 IC 笔试题)
电迁移
影响电迁移的重要物理因素主要有温度,温度通过影响互连引线中的原子扩散而
对电迁移过程产生影响。导线的长度和面积就是横截面积会影响电迁移率。不同
的晶体材料其电迁移率不同。
运算放大器的噪声种类
pop noise,又名爆米花噪声,是一种低频噪声。发生在音频器件上电、断电瞬间
以及上电稳定后,各种操作带来的瞬态冲击所产生的爆破声。
电磁干扰 EMI,有两种:传导干扰和辐射干扰。传导干扰主要是电子设备产生的
52 / 118
干扰信号是通过导线或公共电源线进行传输,互相产生干扰。电子设备中使用的
是数字电路,而当高频电流通过电路板或走线时,这条路径便成了向外辐射噪声
的天线。
pop noise 和 EMI noise 都不是运算放大器的自身噪声。
通常运放的手册会给出运放的电压噪声和电流噪声,而电流噪声非常小,可以忽
略不计。运放的主要噪声来源是电压噪声。运算放大器常有低频噪声区,该区的
频谱密度图并不平坦。这种噪声称作 1/f 噪声,或粉红噪声。通常说来,1/f 噪
声的功率谱以 1/f 的速率下降,频率越低,噪声越大。这部分的噪声总量,非常
难以计算,在运放数据手册中,会提供噪声总量的估值来计算 1/f 噪声。
用固定频带宽度测量时,频谱连续并且均匀的噪声。白噪声的功率谱密度不随频
率改变。或者说,如果在某个频率范围内单位频带宽度噪声成分的强度与频率无
关,也就是具有均匀而连续的频谱,则此噪声称为“白噪声”。
三极管工作状态
放大状态:发射极正偏,集电极反偏
截止状态:发射极反偏,集电极反偏
饱和状态:发射极正偏,集电极正偏
放大器输入输出阻抗
输入电阻就是从放大电路的输入端看进去的等效电阻,但是不包括信号源的内阻。
输出也差不多这么个意思吧。
放大器输入阻抗越大越好:
输入电阻越大:就表明放大电路从信号源索取的电流越小,放大电路得到的
输入电压越接近信号源电压,即信号源内阻上的电压就越小,信号电压损失越小
(输入电阻越大,落到放大器上的电压就越大,越接近信号源上的电压)
放大器的输出电阻越小越好:
53 / 118
输出电阻很小时,在输出电压不变的情况下,可以得到很大的电流,很大的
电流可以很容易的去推动负载工作。
环形振荡器组成及原理:
环形振荡器是利用门电路的固有传输延迟时间将奇数个反相器首尾相接而成,该电路没有稳
态。因为在静态(假定没有振荡时)下任何一个反相器的输入和输出都不可能稳定在高电平
或低电平,只能处于高、低电平之间,处于放大状态。(2023 禾赛)
环形振荡器周期
环形振荡器的振荡周期(T) = 单个反相器延迟时间(Tpd) *反相器个数(n) * 2,Tpd =
(TPLH++TPHL)/2 。
有源滤波器和无源滤波器的区别
无源滤波器:这种电路主要有无源元件 R、L 和 C 组成
有源滤波器:集成运放和 R、C 组成,具有不用电感、体积小、重量轻等优
点。
集成运放的开环电压增益和输入阻抗均很高,输出电阻小,构成有源滤波
电路后还具有一定的电压放大和缓冲作用。但集成运放带宽有限,所以目前的
有源滤波电路的工作频率难以做得很高。
数字电平
输入高电平-Vih:逻辑电平 1 的输入电压,保证逻辑门的输入为高电平时,
所允许的最小输入高电平,当输入电平高于 Vih 时,则认为输入电平为高电平。
输入低电平-Vil:逻辑电平 0 的输入电压,保证逻辑门的输入为低电平时所允许
54 / 118
的最大输入低电平,当输入电平低于 Vil 时,则认为输入电平为低电平。
输出高电平-Voh:逻辑电平 1 的输出电压,保证逻辑门的输出为高电平时的输出
电平的最小值,逻辑门的输出为高电平时的电平值都必须大于此 Voh。
输出低电平-Vol:逻辑电平 0 的输出电压,保证逻辑门的输出为低电平时的输出
电平的最大值,逻辑门的输出为低电平时的电平值都必须小于此 Vol。
阀值电平-Vt:数字电路芯片都存在一个阈值电平,就是电路刚刚勉强能翻转动
作时的电平。它是一个界于 Vil、Vih 之间的电压值,对于 CMOS 电路的阈值电平,
基本上是二分之一的电源电压值,但要保证稳定的输出,则必须要求输入高电平>
Vih,输入低电平<Vil,而如果输入电平在阈值上下,也就是 Vil~Vih 这个区域,
电路的输出会处于不稳定状态。
TTL 电平临界值:
Vohmin = 2.4V
Vihmin = 2.0V
Volmax = 0.4V
Vilmax = 0.8V
CMOS 电平临界值(设电源电压为+5V):
Vohmin = 4.99V
Vihmin = 3.5V
Volmax = 0.01V
Vilmax = 1.5V
综上所述以上参数的关系为:Voh> Vih > Vt > Vil > Vol。
常用逻辑电平
常用逻辑电平:TTL、CMOS、LVTTL、LVCMOS、ECL(Emitter Coupled Logic)、
PECL ( Pseudo/Positive Emitter Coupled Logic )、 LVDS ( Low Voltage Differential
Signaling)、GTL(Gunning Transceiver Logic)、BTL(Backplane Transceiver Logic)、
ETL(enhanced transceiver logic)、GTLP(Gunning Transceiver Logic Plus);RS232、
RS422、RS485(12V,5V,3.3V); 也有一种答案是:常用逻辑电平:12V,5V,
3.3V。(浪潮面试问过)
55 / 118
基尔霍夫定理的内容
基尔霍夫定律包括电流定律和电压定律:
电流定律:在集总电路中,任何时刻,对任一节点,所有流出节点的支路电流
的代数和恒等于零。
电压定律:在集总电路中,任何时刻,沿任一回路,所有支路电压的代数和恒
等于零。
竞争冒险
竞争:门电路的两个输入信号同时向相反的逻辑电平跳变(一个从 1 变为
0,另一个从 0 变为 1)的现象。
注意:只要存在竞争现象,输出就有可能出现违背稳态下逻辑关系的尖
峰脉冲。
竞争—冒险:由于竞争而在电路输出端可能产生尖峰脉冲的现象,即有竞
争就存在冒险。
原因是由于电路中有延时,如果没有延时,那么同时变也没事
检查竞争—冒险现象的方法
代数法
在输入变量每次只有一个改变状态的简单情况下,可以通过逻辑函数式判断
56 / 118
组合逻辑电路中是否有竞争—冒险现象存在,具体方法如下:
在逻辑函数式中将 n-1 个输入变量(共 n 个输入)用固定的 0 或 1 带入,
最后能将逻辑函数式能化简成
或者上面两式的反,即可判定存在竞争—冒险现象。
补充:由上述判定可以得知,只要电路中的与门和非门的两输入同时向相反
的逻辑电平跳变(一个从 1 变为 0,另一个从 0 变为 1),就存在竞争—冒险现
象。
卡诺图法
有两个相切的卡诺圈,并且相切处没有其他卡诺圈包围,可能会出现竞争冒险现象。
另外,较为复杂的情况而采用计算机辅助分析+实验的分析方法。
消除竞争—冒险现象的方法
(1)接入滤波电容
在输出端并接一个很小的滤波电容,就足以把尖峰脉冲的幅度削弱至门
电路的阈值电压以下。
优点:简单易行;
缺点:增加了电压波形的上升时间和下降时间,使波形变坏;
适用:对输出波形前、后沿无严格要求。
(2)引入选通脉冲
在电路中引入一个选通脉冲 p,p 的高电平(正脉冲)出现在电路到达
稳定状态以后,这时正常的输出信号也将变成脉冲信号,且宽度与选通脉冲相同。
这种方法类似于添加一个输出使能。
优点:简单,不需要增加电路元件;
缺点:需要设法得到一个与输入信号同步的选通脉冲,对其宽度和作用
的时间也有严格要求。
(3)
例:逻辑函数式,在 B = C = 1 的条件下,当 A 改变状态时存在竞争—冒
57 / 118
险现象。通过增加冗余项的方法,函数式可变为,此时在 B = C = 1 的条件下无论
A 如何变化,输出始终保持 Y = 1,即 A 的状态改变不再会引起竞争—冒险现象。
优点:不会给电路带来不利的影响;
缺点:无法消除多变量同时改变状态时,例如 C=0 且 AB 从 10 变为 01 电路
仍会存在竞争—冒险的现象,且该方法适用范围有限;上述方法适用于消除单变
量改变状态时存在竞争—冒险现象的情况。
时序逻辑电路中也有竞争冒险
1.
时序逻辑电路包含组合逻辑
2.
当输入信号和时钟信号同时改变,而且途径不同路径到达同一
触发器,便产生了竞争。竞争的结果有可能导致触发器误动作,
这种现象称为存储电路(或触发器)的竞争—冒险现象。在同步
电路中,由于所有触发器都在同一时钟操作下动作,而在此之前
每个触发器的输入信号已处于稳态状态,因而可以认为不存在竞
争现象。因此,一般认为存储电路的竞争—冒险现象仅发生在异
步时序电路中。(时钟偏移对这玩意儿也有影响)
存储器
58 / 118
1)易失性存储器的代表就是 RAM,RAM 又分为 DRAM(动态随机存储器)和
SRAM(静态随机存储器),它们之间主要在于生产工艺不同。
SRAM 保存数据是通过晶体管进行锁存的,其工艺复杂,生产成本高,所以价格
相对较贵,不易做大容量,但是速度更快;DRAM 保存数据靠电容充电来维持容
量,生产成本较 SRAM 低,所以价格相对便宜,容量可以做到很大,速度虽然不
如 SRAM 快,但是随着工艺技术的提升,速度也很可观,所以较为常用。DRAM
和 SRAM 都是异步通信的,速率没有 SDRAM(同步动态随机存储器)和 SSRAM(同
步静态随机存储器)快。所以现在大容量 RAM 存储器是选用 SDRAM 的。
CPU 中的 Cache 实质属于 SRAM,而内存条则是属于 DRAM。SDRAM 和 DDR
SDRAM 的区别在于 DDR(Double Data Rate)是双倍速率。SDRAM 只在时钟的上升
沿表示一个数据,而 DDR SDRAM 能在上升沿和下降沿都表示一个数据。DDR 也
一步步经过改良出现了一代、二代、三代、四代,以及低功耗版本,现在也有五
代。
59 / 118
2)非易失性存储器常见的有 ROM,FLASH,光盘,软盘,硬盘。他们作用相同,
只是实现工艺不一样。
ROM(Read Only Memory)在以前就是只读存储器,就是说这种存储器只能读取它
里面的数据无法向里面写数据。实际是以前向存储器写数据不容易,所以这种存
储器就是厂家造好了写入数据,后面不能再次修改。现在技术成熟了,ROM 也
可以写数据,但是名字保留了下来。ROM 分为 MASK ROM、OTPROM、EPROM、
EEPROM。MASK ROM 是掩膜 ROM 这种 ROM 是一旦厂家生产出来,使用者无法
再更改里面的数据。OTPROM(One Time Programable ROM)一次可擦除存储器,
出厂后用户只能写一次数据,然后再也不能修改了,一般做存储密钥。
EPROM(Easerable Programable ROM)这种存储器就可以多次擦除然后多次写入了。
但是要在特定环境紫外线下擦除,所以这种存储器也不方便写入。
EEPROM(Eelectrically Easerable Programable ROM)电可擦除 ROM,现在使用的比
较多因为只要有电就可擦除数据,就可以写入数据。
FLASH 是一种可以写入和读取的存储器,叫做闪存,FLASH 也叫 FLASH ROM,有
人把 FLASH 当做 ROM。FLASH 和 EEPROM 相比,FLASH 的存储容量大。FLASH 的
速度比现在的机械硬盘速度快,现在的 U 盘和 SSD 固态硬盘都是 Nand flash。
FLASH 又分为 Norflash 和 Nandflash。
OTP means one time program,一次性编程
MTP means multi time program,多次性编程
OTP(One Time Program)是 MCU 的一种存储器类型
MCU 按其存储器类型可分为 MASK(掩模)ROM、OTP(一次性可编程)ROM、
FLASHROM 等类型。
MASKROM 的 MCU 价格便宜,但程序在出厂时已经固化,适合程序固定不变的
应用场合;
FALSHROM 的 MCU 程序可以反复擦写,灵活性很强,但价格较高,适合对价
格不敏感的应用场合或做开发用途;
60 / 118
OTP ROM 的 MCU 价格介于前两者之间,同时又拥有一次性可编程能力,适合
既要求一定灵活性,又要求低成本的应用场合,尤其是功能不断翻新、需要迅
速量产的电子产品。
程序员所编制的工作程序以机器指令为单位存放在主存储器中,主存储器
是可读可写的随机访问存储器,微程序以是微指令为基本单位,固化在控制存储
器中,控制存储器用只读存储器来实现。
主存技术指标有:1、存储容量;2、存取周期;3、读写时间;4、可靠性。
I/O 接口分类
按数据传送格式划分,可将接口分为并行接口与串行接口。
按时序控制方式划分,可分为同步接口与异步接口。
按传送控制方式划分,可分为直接程序传送接口、中断接口和 DMA 接口。
并行接口是指接口与系统总线之间,接口与外部设备之间均按并行方式传送
数据。串行接口是指接口与外部设备之间采取串行方式传送数据,接口与系统总
线之间仍按并行方式进行传送。
并行接口需要多根传送线,传送速度快,传送距离短;串行接口只需一根数
据传送线,速度不高,传送距离远。
OPT/掩膜片区别
OTP 与掩膜 OTP 是一次性写入的单片机。过去认为一个单片机产品的成熟是
以投产掩膜型单片机为标志的。由于掩膜需要一定的生产周期,而 OTP 型单片机
价格不断下降,使得近年来直接使用 OTP 完成最终产品制造更为流行。它较之掩
膜具有生产周期短、风险小的特点。近年来,OTP 型单片机需量大幅度上扬,为
适应这种需求许多单片机都采用了在片编程技术(In System Programming)。未编
程的 OTP 芯片可采用裸片 Bonding 技术或表面贴技术,先焊在印刷板上,然后通
过单片机上引出的编程线、串行数据、时钟线等对单片机编程。解决了批量写 OTP
芯片时容易出现的芯片与写入器接触不好的问题。使 OTP 的裸片得以广泛使用,
61 / 118
降低了产品的成本。编程线与 I/O 线共用,不增加单片机的额外引脚。而一些生
产厂商推出的单片机不再有掩膜型,全部为有 ISP 功能的 OTP。
DMA 存储器直接访问
DMA 的出现就是为了解决批量数据的输入/输出问题。DMA 是指外部设备不
通过 CPU 而直接与系统内存交换数据的接口技术,使整个计算机系统的效率大
大提高。 这样数据的传送速度就取决于存储器和外设的工作速度。
同步/异步
同步电路是由时序电路(寄存器和各种触发器)和组合逻辑电路构成的电路,
其所有操作都是在严格的时钟控制下完成的。这些时序电路共享同一个时钟 CLK,
而所有的状态变化都是在时钟的上升沿(或下降沿)完成的。(例如 D 触发器)
同步时序逻辑电路的特点:各个触发器之间的时钟端全部链接在一起,并接
在系统的时钟终端,只有当时钟的脉冲到来的时候,电路的状态才能个改变。改
变后的状态一直保持在下一个时钟脉冲沿的到来时刻,此时无论外部输入 x 有无
变化,状态表中的每个状态都是稳定的。
异步电路主要是组合逻辑电路,用于产生地址译码器、FIFO 或 RAM 的读写
控制信号脉冲,但它同时也用在时序电路中,此时它没有统一的时钟(有些与时
钟脉冲相连有些未和时钟端口相连),状态变化的时刻是不稳定的,通常输入信
号只在电路处于稳定状态时才发生变化。也就是说一个时刻允许一个输入发生变
化,以避免输入信号之间造成的竞争冒险。
异步时序电路的特点:电路中除可以使用带时钟的触发器之外,还可以使用
不带时钟的触发器和延迟元件作为存储元件,电路中没有统一的时钟,电路状态
的变化由外部输入的变化直接引起。
同步电路设计利用时钟脉冲使其子系统同步运作,而异步电路设计不使用时
62 / 118
钟脉冲做同步,其子系统是使用特殊的“开始”和“完成”信号(握手信号)使之
同步。在同步电路设计中一般采用 D 触发器,异步电路设计中一般采用 Latch。
同步电路设计一定是整个电路是全局同步的设计,局部异步的设计;同样异步电
路设计也一定是整个电路是全局异步的设计,局部同步的设计。
同步电路优点: 在同步设计中,EDA 工具可以保证电路系统的时序收敛,有
效避免了电路设计中竞争冒险现象;由于触发器只有在时钟边缘才改变取值,很
大限度地减少了整个电路受毛刺和噪声影响的可能。
同步电路缺点:
存在时钟偏斜(Clock Skew )、时钟抖动( Clock Jitter );时钟
树综合,需要加入大量的延迟单元,使得电路的面积和功耗大大增加
异步电路优点:无时钟偏移(Skew)问题、低电源消耗、平均效能而非最差
效能、模块性、可组合和可复用性等优点。
异步电路缺点:由于增加了控制和用于 DFT 的电路,异步电路的面积开销可
能高达同步设计的两倍。而且由于缺乏专用于异步设计的商用 EDA 工具。
异步复位原理:异步复位只要有复位信号系统马上复位,因此异步复位抗干
扰能力差,有些噪声也能使系统复位,因此有时候显得不够稳定,要想设计一个
好的复位最好使用异步复位同步释放。
always @ (posedge clk or negedge Rst_n) begin
if (!Rst_n)
end
(2023 禾赛)
同步复位原理:同步复位只有在时钟沿到来时复位信号才起作用,则复位信
号持续的时间应该超过一个时钟周期才能保证系统复位。
always @ (posedge clk) begin
if (!Rst_n)
end
(2023 禾赛)
同步复位优点:有利于仿真器仿真;所设计的系统为 100%的时序电路,大大
有利于时序分析;可以滤除高于时钟频率的毛刺(2023 禾赛)
63 / 118
同步复位缺点: 复位信号有效时延必须大于时钟周期,才能真正被系统识
别并完成复位任务,同时还要考虑,诸如:clk skew,组合逻辑路径延时,复位
延时等因素;由于大多数的逻辑器件的目标库内的 DFF 都只有异步复位端口,所
以,倘若采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,
这样就会耗费较多的逻辑资源(2023 禾赛)
异步复位优点: 大多数目标器件库的 dff 都有异步复位端口,因此采用异步
复位可以节省资源;设计相对简单;异步复位信号识别方便,而且可以很方便的
使用 FPGA 的全局复位端口 GSR。(2023 禾赛)
异步复位缺点: 在复位信号释放(release)的时候容易出现问题。具体就是
说:倘若复位释放时恰恰在时钟有效沿附近,就很容易使寄存器输出出现亚稳态,
从而导致亚稳态;复位信号容易受到毛刺的影响。(2023 禾赛)
同步设计规则
1.尽可能在整个设计中只使用一个主时钟和同一个时钟沿,主时钟走全局时钟网
络。
2.在 FPGA 设计中,推荐所有输入、输出信号均应通过寄存器寄存,寄存器接口
当作异步接口考虑。
3.当全部电路不能用同步电路思想设计时,即需要多个时钟来实现,则可以将全
部电路分成若干局部同步电路(尽量以同一个时钟为一个模块),局部同步电路
之间接口当作异步接口考虑。
4.当必须采用多个时钟设计时,每个时钟信号的时钟偏差(△T)要严格控制。
5.电路的实际最高工作频率不应大于理论最高工作频率,留有设计余量,保证芯
片可靠工作。
6.电路中所有寄存器、状态机在单板上电复位时应处在一个已知的状态。
异步设计中常见问题及其解决方法
异步电路设计主要体现在时钟的使用上,如使用组合逻辑时钟、级连时钟和多时
钟网络;另外还有采用异步置位、复位、自清零、自复位等。这些异步电路的大
量存在,一是增加设计难度,二是在出现错误时,电路分析比较困难,有时会严
重影响设计进度。很多异步设计都可以转化为同步设计,对于可以转化的逻辑必
64 / 118
须转化,不能转化的逻辑,应将异步的部分减到最小,而其前后级仍然应该采用
同步设计。
异步复位同步释放
两个 always
always@(posedge clk or negedge reset_n)
Begin
If(!reset_n)
begin
Reg3 <= ‘b0;
Reg4 <= ‘b0;
end
Else
begin
Reg3 <= ‘b1;
Reg4 <= reg3; --reg4 即为同步后的异步复位信号
end
65 / 118
End
Assign rst_n = reg4;
Always@(posedge clk or negedge rst_n)
Begin
If(!rst_n)
Begin
Reg1 <= 1’b0;
Reg2 <= 1’b0;
End
Else
begin
Reg1 <= data_a;
Reg2 <= data_b;
end
End
-- module 和一些信号声明省略掉了!!
第一个进程产生同步复位输出 rst_n,作为第二个进程模块的异步复位,其实
第一个进程就是将系统输入的异步复位进行同步,产生一个后续逻辑使用的同步
化的异步复位。
上述电路的一个代价是它们很容易收到噪声和窄脉冲的干扰。同样的,
如果可能,最好对输入到 FPGA 的异步复位先进行滤波和去抖动。
不建议使用的电路
1 不建议使用组合逻辑时钟或门控时钟
组合逻辑很容易产生毛刺,用组合逻辑的输出作为时钟很容易使系统产生误动作。
2 不建议使用行波时钟
3 尽量避免采用多个时钟,多使用触发器的使能端来解决。
66 / 118
4 触发器的置/复位端尽量避免出现毛刺,及自我复位电路等,最好只用一个全
局复位信号。
5 电路中尽量避免“死循环”电路,如 RS 触发器等。
6 禁止时钟在不同可编程器件中级连,尽量降低时钟到各个器件时钟偏差值。
SET 和 RESET 信号处理
在设计时应尽量保证有一全局复位信号,或保证触发器、计数器在使用前已
经正确清零和状态机处于确知的状态。
寄存器的清除和置位信号,对竞争条件和冒险也非常敏感。在设计时,应尽
量直接从器件的专用引脚驱动。另外,要考虑到有些器件上电时,触发器处于一
种不确定的状态,系统设计时应加入全局复位/Reset。这样主复位引脚就可以给
设计中的每一个触发器馈送清除或置位信号,保证系统处于一个确定的初始状态。
需要注意的一点是:不要对寄存器的置位和清除端同时施加不同信号产生的控制,
因为如果出现两个信号同时有效的意外情况,会使寄存器进入不定状态。
全局信号处理
全局信号处理的原则是:时钟信号、异步清零、置位信号上不允许存在毛刺;
不允许异步清零、置位信号同时有效。
在下述几种情况下,时钟信号、异步清零、置位信号上可能会有毛刺:
(1) 时钟信号、异步清零、置位信号为组合逻辑输出
由于组合逻辑是电平敏感的,比较容易产生毛刺,而组合逻辑的细小毛刺一旦经
过时序电路则其对电路的影响则会放大。因此在设计中对时钟信号、异步清零、
置位信号这些对时序电路来讲非常重要的信号应尽量采用同步电路,而对于非
用组合逻辑不行的地方则必须用卡诺图严格的分析时序电路,确定彻底消除竞
争与冒险后才可引入到时序电路中使用。
67 / 118
三态门
在双向数据总线中常采用三态门构成,因为器件免不了要进行输入输出数据,
常规的输入和输出是分开的两个接口要不停的切换比较麻烦,这样优点是只要一
个接口就可以输入输出比较节约逻辑资源,但缺点是三态门的处理没有常规两
个 I/O 的方便,这里我们来看看怎样使用三态门,下图是三态门的结构。
当 sda_en 为高时,SDA 作为输出口输出 sda_out 的数据;当 sda_en 为低时三态
门是处于高阻态,这时 SDA 作为输入口把数据给 sda_in。
线与(OC 门)
线与逻辑是两个输出信号相连可以实现与的功能。在硬件上,要用 oc 门来实现(漏极或者集
电极开路),,由于不用 oc 门可能使灌电流过大,而烧坏逻辑门。 同时在输出端口应加一个
上拉电阻.(线或则是下拉电阻) 。
OC 门,又称集电极开路(漏极开路)与非门门电路,Open Collector(Open Drain)
。
为什么引入 OC 门: 实际使用中,有时需要两个或两个以上与非门的输出端连接在同一条
导线上,将这些与非门上的数据(状态电平)用同一条导线输送出去。因此,需要一种新的
与非门电路 需要 OC 门来实现“线与逻辑”
上拉电阻用途
1、当 TTL 电路驱动 COMS 电路时,如果 TTL 电路输出的高电平低于 COMS
电路的最低高电平(一般为 3.5V),这时就需要在 TTL 的输出端接上拉
电阻,以提高输出高电平的值。 2、OC 门电路必须加上拉电阻,以提高
68 / 118
输出的高电平值。 3、为加大输出引脚的驱动能力,有的单片机管脚上也
常使用上拉电阻。 4、在 COMS 芯片上,为了防止静电造成损坏,不用
的管脚不能悬空,一般接上拉电阻产生降低输入阻抗,提供泄荷通路。
5、芯片的管脚加上拉电阻来提高输出电平,从而提高芯片输入信号的噪
声容限增强抗干扰能力。 6、提高总线的抗电磁干扰能力。管脚悬空就比
较容易接受外界的电磁干扰。7、长线传输中电阻不匹配容易引起反射波
干扰,加上下拉电阻是电阻匹配,有效的抑制反射波干扰。
上拉电阻阻值的选择原则包括:
1、从节约功耗及芯片的灌电流能力考虑应当足够大;电阻大,电流小。 2、
从确保足够的驱动电流考虑应当足够小;电阻小,电流大。 3、对于高速电路,
过大的上拉电阻可能边沿变平缓。综合考虑以上三点,通常在 1k 到 10k 之间选取。
对下拉电阻也有类似道理。 OC 门电路必须加上拉电阻,以提高输出的高电平值。
OC 门电路要输出―1‖时才需要加上拉电阻不加根本就没有高电平 在有时我们
用 OC 门作驱动(例如控制一个 LED)灌电流工作时就可以不加上拉电阻 总之
加上拉电阻能够提高驱动能力。
单片机上电后没有运转
首先应该确认电源电压是否正常;
接下来就是检查复位引脚电压是否正常;
再检查晶振是否起振;
如果使用片内 ROM 的话,一定要将 EA 引脚拉高;
如果系统不稳定的话,有时是因为电源滤波不好导致的。在单片机的电源引
脚跟地引脚之间接上一个 0.1uF 的电容会有所改善。
AMBA 三种总线对比
AXI 参考链接:
https://blog.csdn.net/spx1164376416/article/details/121262556?spm=1001.2014.30
69 / 118
01.5506
APB 参考链接:
https://blog.csdn.net/burningCky/article/details/109630018?spm=1001.2014.3001.5
506
AHB 参考链接:
https://blog.csdn.net/little_ox/article/details/118399117?spm=1001.2014.3001.550
6
AHB 总线有以下特性:
(1)Burst 传输 。
(2)Split 事务处理。
(3)单周期 Master 移交。
(4)单一时钟
沿操作。(5)无三态。(6)更宽的数据总线配置(64bit/128bit)。
AXI 总线
简介:
AXI 的全称是 Advanced eXtensible Interface
它的地址/控制和数据相位是分离的,支持不对齐的数据传输,同时在突发传
输中,只需要首地址,同时分离的读写数据通道、并支持显著传输访问和乱序访
问,并更加容易就行时序收敛。
70 / 118
AXI 三种类型:
AXI4(AXI4-full):用于高性能的存储器映射需求;
(存储器映射:主机在对从机进行
读写操作时,指定一个目标地址,这个地址对应系统存储空间的地址,表示对该
空间进行读写操作)。
AXI4-Lite:简化版的 AXI4 接口,用于低吞吐率存储器映射的通信。
AXI4-Stream(ST):用于高速的流数据通信。
AXI 的优点:
生产力高,灵活性:AXI4(支持突发 256)和 AXI4-Lite(1 个数据)都属于存储器
映射,AXI4-ST 不属于存储器映射,他的突发长度不受限制,可获得性
工作方式:
AXI4 和 AXI4-Lite 包含 5 个独立的通道:
读地址通道;读数据通道;写地址通道;写数据通道;写响应通道
AXI4:由于读写地址通道是分离的,所以支持双向同时传输;突发长度最大 256
AXI4-Lite:和 AXI4 比较类似,但是不支持突发传输
AXI4-Stream:只有一个单一数据通道,和 AXI4 的写数据通道比较类似;突发长
度不受限制。
71 / 118
AXI InterConnect 和 AXI SmartConnect,这两个 ip 核都用于 连接单/多个
存储器映射的 AXI Master 和单/多个存储器映射的 AXI Slave。
AXI 的通道定义:
每一个独立的通道都包含一组信息信号、VALID 信号和 READY 信号,用于
提供双向的握手机制。
信息源端使用 VALID 信号表示当前通道地址、数据和控制信息什么时候有
效,目的端使用 READY 信号表示什么时候可以接收信息,读数据通道和写数据
通道都包含一个 LAST 信号,用于表示传输的最后一个数据。
读数据通道和写数据通道都包含各自的地址通道,地址通道携带了请求所需
的地址和信息;
读数据通道由从机发送给主机,包含了读数据和读相应的信息,读响应?(有
吗)的信号用于表示读传输是否操作完成。
写数据通道是由主机发给从机,包含了写数据,然后通过 WSTRB 信号表示
当前数据的哪个字节有效。
72 / 118
写响应通道由从机发送给主机,包含了写响应信号,用于表示当前写操作是
否完成。
握手机制:
所有的五个通道都是通过相同的 VALID/READY 握手处理来传输地址、数据
和控制信息。双向握手的机制意味着主机和从机之间传输数据时,都可以控制传
输的速率,只有当 VALID 和 READY 同时为高电平时,传输才会发生。
传输源产生 VLAID 信号来指明何时数据或控制信息有效。而目地源产生
READY 信号来指明已经准备好接受数据或控制信息。传输发生在 VALID 和
READY 信号同时为高的时候。VALID 和 READY 信号的出现有三种关系。
73 / 118
通道之间的关系:
地址、读、写和写响应通道之间的关系是灵活的。
例如,写数据可以出现在接口上早于与其相关联的写地址。也有可能写数据与写
地址在一个周期中出现。
两种关系必须被保持:
读数据必须总是跟在与其数据相关联的地址之后;写响应必须总是跟在与其相关
联的写事务的最后出现。
通道握手信号之间的依赖性:
读事务握手依赖关系如图:
单箭头:被指向的信号可在箭头起始端的信号有效前或后变为有效状态
双箭头:被指向的信号只能在箭头起始端的信号有效后变为有效状态
(1)设备可以在 ARVALID 出现的时候在给出 ARREADY 信号,也可以先给出
ARREADY 信号,再等待 ARVALID 信号。
(2)但是设备必须等待 ARVALID 和 ARREADY 信号都有效才能给出 RVALID 信号,
开始数据传输。
写事务握手依赖关系如图:
(1)主机必须不能够等待设备先给出 AWREADY 或 WREADY 信号信号后再给出
信号 AWVALID 或 WVLAID。
(2)设备可以等待信号 AWVALID 或 WVALID 信号有效或者两个都有效之后再给
74 / 118
出 AWREADY 信号。
(3)设备可以等待 AWVALID 或 WVALID 信号有效或者两个信号都有效之后再给
出 WREADY 信号。
VHDL 程序/VERILOG 三个基本组成部分
三个基本组成部分:库、程序包使用说明,实体说明和实体对应的结构体说
明。
( 1) 库、程序包使用说明用于打开(调试)本设计实体将要用到的库、程
序包;
( 2)实体说明用于描述该设计实体与外界的接口说明,是可视部分;
( 3)
结构体说明用于描述该设计实体内部工作的逻辑关系,是不可视部分。在一个实
体中,可以含有一个或一个以上的结构体,而在每一个结构体中又可以含有一个
或多个进程以及其他的语句。
Verilog 的 fork join 语句
中间的语句并行执行;(延时不累加);不能用于综合;
75 / 118
改成顺序执行-》控制每个语句前的延迟???
Verilog 和 C 语言的最大区别
Verilog 是用于模拟电子系统的硬件描述语言(HDL),而 C 是允许结构化编程
的通用编程语言;verilog 并行运行的,并行处理;c 语言串行执行。
Verilog 中的 inout
Inout 端口的实现是使用三态门
特点:
1.
inout 端口不可能独立存在:
2.
作为输入必须有 reg 型缓冲:
3.
作为输入必须有 reg 型缓冲:
4.
76 / 118
相连的两个 inout 端口由一对信号交叉控制:
在内部模块中 inout 端口不能独立存在,当一个模块的 inout 端口作为输出
时,那么另一个模块的 inout 端口必然作为输入;反之,当一个模块的 inout 端
口作为输入时,那么另一个模块的 inout 端口必然作为输出。因此,这两个 inout
端口的控制信号实际上是由一对信号交叉控制。
Verilog 端口连接规则
77 / 118
HDL 语言的层次概念?
HDL 语言是分层次的、类型的,最常用的层次概念有系统与标准级、功能
模块级,行为级,寄存器传输级和门级。
initial 被一些综合器视为不可综合的语法
verilog 中的 integer、time、real、realtime
任务和函数
任务和函数的共同点:
1)任务和函数必须在模块内定义,其作用范围仅适用于该模块,可以在模块内
多次调用。
2)任务和函数中可以声明局部变量,如寄存器,时间,整数,实数和事件,但
是不能声明线网类型的变量。
3)任务和函数中只能使用行为级语句,但是不能包含 always 和 initial 块,设计
者可以在 always 和 initial 块中调用任务和函数。
任务和函数的不同点:
1)函数能调用另一个函数,但是不能调用任务;任务可以调用另一个任务,也
可以调用函数。
2)函数总是在仿真时刻 0 开始;任务可以在非零时刻开始执行。
3)函数一定不能包含任何延迟,事件或者时序控制声明语句;任务可以包含延
78 / 118
迟,事件或者时序控制声明语句。
4)函数至少要有一个输入变量,也可以有多个输入变量;任务可以没有或者有
多个输入,输出,输入输出变量。
5)函数只能返回一个值,函数不能有输出或者双向变量;任务不返回任何值,
或者返回一个或多个输出或双向变量值。
由上述的特点决定:函数用于替代纯组合逻辑的 Verilog 代码,而任务可以代替
Verilog 的任何代码。
,Verilog 通过在 task 关键字后面添加 automatic 使任务称为可重入的,这时
在调用任务时,会自动给任务声明变量分配动态地址空间,这样有效避免了地址
空间的冲突。 函数同理!!!
函数可以综合,任务不行
阻塞和非阻塞语句的区别:
阻塞(=)和非阻塞(<=)语句的最主要的区别在其后的引用它的语句的电路结构上:
1)、对于阻塞语句,其综合出的组合逻辑的输出,被馈送到其后引用他的语句的组合逻
辑的输入端,也即后面的语句引用其新值;
2)、对于非阻塞语句,其综合出的触发器的输出,被馈送到其后引用它的语句的组合逻
辑的输入端,也即后面的语句引用其旧值。
FPGA、ASIC、CPLD 名词
FPGA 是可编程 ASIC。
ASIC:专用集成电路,它是面向专门用途的电路,专门为一个用户设计和制造
的。根据一个用户的特定要求,能以低研制成本,短交货周期供货的全定制,半
定制集成电路。与门阵列等其它 ASIC(Application Specific IC)相比,它们又具有设
计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定
以及可实时在线检验等优点。
FPGA 采用同步时钟设计,使用全局时钟驱动,采用时钟驱动方式在各级专用
布线资源上灵活布线,ASIC 有时采用异步逻辑,一般采用门控时钟驱动,一旦设
79 / 118
计完成,其布线是固定的。FPGA 比 ASIC 开发周期短,成本低,设计灵活。
CPLD(Complex Programmable Logic Device)是复杂可编程逻辑器件。CPLD 开
关矩阵路径设计的一个优点是信号通过芯片的延时时间是确定的。设计者通过计
算经由功能模块、I/O 模块和开关矩阵的延迟就可以 任何信号的延迟时间,并且
信号沿金属线传递所引起的延迟是可忽略的。
CPLD 与 FPGA 有何区别
FPGA基于SRAM的架构,集成度高,以LE(包括查找表、触发器及其他)为基本单元,
有内嵌Memory、DSP等,支持IO标准丰富。具有易挥发性,需要有上电加载过程。在实现
复杂算法、队列调度、数据处理、高性能设计、大容量缓存设计等领域中有广泛应用,如
Altera Stratix系列。
CPLD 基于 EEPROM 工艺,集成度低,以 MicroCell(包括组合部分与寄存器)为基本单元。
具有非挥发特性,可以重复写入。在粘合逻辑、地址译码、简单控制、FPGA 加载等设计中
有广泛应用,如 Altera MAX3000A 系列。
本质差异:电路结构不同。
CPLD:基于“乘积项”的与或逻辑阵列
FPGA:基于“查找表”(LUT,Look UP Table)的 CLB 阵列
细节太多了…..具体可以百度….
ASIC 与 FPGA 比较
专用集成电路(ASIC)采用硬接线的固定模式,而现场可编程门阵列 (FPGA)则采用可配置芯片的方法,
二者差别迥异。可编程器件是目前的新生力量,混合技术也将在未来发挥作用。
与其他技术一样,有关 ASIC 技术过时的报道是不成熟的。新的 ASIC 产品的数目可能有大幅度下降,
但其销售额仍然相当高,尤其是在亚太区。此外,采用混合式方法,如结构化 ASIC,也为该技术注入了新
的活力。同时,FPGA(和其他可编程逻辑器件)也在发挥作用,赢得了重要的大众市场,并从低端应用不断向
上发展。
每种技术都有它的支持者。一般来说,ASIC 用于大型项目,而对于需要快速投放市场且支持远程升
级的小型项目,FPGA 则更为适合。ASIC 和 FPGA 供应商对这两种技术孰优孰劣不能达成共识,对适合的应
用领域也持不同看法。上述技术及其衍生技术将可能在今后一段时间内长期存在。
80 / 118
Altera Corp 的高密度 FPGA 高级总监 David Greenfield 指出,FPGA 技术的主要优势仍是产品投放市场
的时间较短。他说:“在目前新增的设计方案中,对 FPGA 的选择倾向超过 ASIC。ASIC 技术有其价值所在,
它的性能、密度和单位容量都相当出色,不过随着 FPGA 的发展和 ASIC 的开发成本不断上升,将会导致 ASIC
的市场份额不断缩小。”在上述趋势之后发挥作用的,正是 FPGA 在性能、密度和制造成本上的发展。
FPGA 厂商排名及开发工具
可编程逻辑器件:PAL,PLD,CPLD,FPGA
PAL:可编程阵列逻辑,一种逻辑器件,由大规模的与阵列和规模小且数量固定
的或门组成,可用于实现布尔逻辑和状态机。
Xilinx(Vivado、ISE)>Altera(Quartus_Prime)>Lattice(Diamond)。
FPGA 最基本组成
吞吐量:指系统在单位时间内处理请求的数量
Slice 组成:CLB(可编程逻辑块)是 xilinx 基本逻辑单元,每个 CLB 包含两个 slices,
每个 slices 由 4 个(A,B,C,D)6 输入 LUT 和 8 个寄存器组成。 (2023 禾赛)
这 4 个 Slice 又分 SliceM 和 SliceL,其中 M 是 Memory 的首字母,L 是 Logic 的首
字母,比较 SliceM 和 SliceL,他们的区别就是 SliceM 的查找表具有 RAM 和 ROM
的功能,而 SliceL 的则不具备。所以 SliceM 比 SliceL 多的功能就是做存储器和移
位
LE(logic element)组成 :LE 是 Altera 的基本逻辑单元,一个 4 输入 LUT+FF(2023
禾赛)
FPGA 芯片内有两种存储器资源:一种叫 block ram,另一种是由 LUT 配置成的内
部存储器(也就是分布式 ram)。Block ram 由一定数量固定大小的存储块构成
的,使用 BLOCK RAM 资源不占用额外的逻辑资源,并且速度快。但是使用的时
候消耗的 BLOCK RAM 资源是其块大小的整数倍。
81 / 118
简化的 FPGA 基本结构
由 6 部分组成,分别为可编程输入/输出单元、基本可编程逻辑单元、嵌入式
块 RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等,如下图所
示:
FPGA 设计中如何实现同步时序电路的延时
计数器控制延时或者 fifo.ram
FPGA 中可以综合实现为 RAM/ROM/CAM 的三种资源及其注
意事项?
三种资源:block ram;触发器(FF),查找表(LUT);
注意事项:1:在生成 RAM 等存储单元时,应该首选 block ram 资源;其原因
有二:第一:使用 block ram 等资源,可以节约更多的 FF 和 4-LUT 等底层可编
程单元。使用 block ram 可以说是“不用白不用”,是最大程度发挥器件效能,
节约成本的一种体现;第二:block ram 是一种可以配置的硬件结构,其可靠性
和速度与用 LUT 和 register 构建的存储器更有优势。2:弄清 FPGA 的硬件结
构,合理使用 block ram 资源;3:分析 block ram 容量,高效使用 block ram 资
源;4:分布式 ram 资源(distribute ram)
82 / 118
FPGA 芯片内有哪两种存储器资源?
FPGA 芯片内有两种存储器资源:一种叫 BLOCK RAM,另一种是由 LUT 配置成
的内部存储器(也就是分布式 RAM)。BLOCK RAM 由一定数量固定大小的存储块
构成的,使用 BLOCK RAM 资源不占用额外的逻辑资源,并且速度快。但是使用
的时候消耗的 BLOCK RAM 资源是其块大小的整数倍。
BRAM 和分布式 ram 的区别
结构:
BRAM 是 FPGA 中固定的 RAM 资源,由大块的 SRAM 构成;
分布式 RAM 是用 LUT 拼出来的;
速度:
LUT 本质上讲也是一个 SRAM,只不过是容量较小的 SRAM。同样都是由 SRAM
构成,所以读写速度理论上都是一样的
时序:
BRAM 是一列一列分布的,这样可能造成用户逻辑模块和 BRAM 直接的距离
较长,延时较长,最终导致性能下降。但这并不意味着用分布式 RAM 的性能就
一定比 BRAM 的性能好,由于 LUT 单元并不一定是连续的,构成的分布式 RAM
之间会有线延迟
使用:
如果需要使用较大的存储空间建议用 BRAM;如果只是需要比较小
的零散的存储空间一般就用分布式 RAM。但这只是个一般原则,具体
的使用得看整个设计中资源的冗余度和性能要求。
83 / 118
FPGA 设计中对时钟的使用
一般不允许对时钟进行逻辑操作,这样不仅会增加时钟的偏差和抖动,还会
使时钟带上毛刺。一般的处理方法是采用 FPGA 芯片自带的时钟管理器如 PLL,DLL
或 DCM,或者把逻辑转换到触发器的 D 输入
FPGA 设计中如何实现同步时序电路的延时
首先说说异步电路的延时实现:异步电路一半是通过加 buffer、两级与非门
等来实现延时(我还没用过所以也不是很清楚),但这是不适合同步电路实现延
时的。在同步电路中,对于比较大的和特殊要求的延时,一半通过高速时钟产生
计数器,通过计数器来控制延时;对于比较小的延时,可以通过触发器打一拍,
不过这样只能延迟一个时钟周期。
FPGA 器件配置方式分三大类
主动配置、被动配置和 JTAG 配置。
主动配置:由 FPGA 器件引导配置操作过程。
被动配置:由计算机或控制器控制配置过程。上电后,控制器件或主控器把存储
在外部存储器中的数据送入 FPGA 器件内,配置完成之后将对器件 I/O 和寄存器
进行初始化。初始化完成后,进入用户模式,开始正常工作。一旦设计者选定了
FPGA 系统的配置方式,需要将器件上的 MSEL 引脚设定为固定值,以指示当前
所采用的配置方式。常用的配置方式有:
PS 配置(Passive Serial ConfiguraTIon):被动串行配置
AS 配置(AcTIveSerial ConfiguraTIon):主动串行配置
PPS 配置(Passive Parallel Synchronous ConfiguraTIon):被动并行同步配置
FPP 配置(Fast Passive Parallel Configuration):快速被动并行配置
PPA 配置(Passive Parallel Asynchronous Configuration):被动并行异步配置
PSA 配置(Passive Serial Asynchronous Configuration):被动串行异步配置
JTAG 配置(Joint Test Action Group Configuration)
84 / 118
FPGA 功耗
FPGA 在正常工作中,其消耗的总功耗由器件的静态功耗、动态功耗和 IO 功
耗构成。静态功耗也叫待机功耗(standby power),是芯片处于上电状态,但是内
部电路没有工作(也就是内部电路没有翻转)时消耗的功耗;而所谓动态功耗是指
由于内部电路翻转所消耗的功耗;IO 功耗是 IO 翻转时,对外部负载电容进行充
放电所消耗的功耗。
如下式:总功耗=静态功耗+动态功耗+IO 功耗
芯片的静态功耗主要由芯片内部的漏电流产生,也叫漏电功耗(leakage power)。
动态功耗主要由电容充放电引起 ,它与 3 个参数有关 :节点电容 、工作频率和
内核电压 ,它们与功耗成正比例关系。节点电容越大 ,工作频率越高 ,内核电压
越大 ,其动态功耗也就越高 。而在 FPGA 中动态功耗主要体现为存储器、内部
逻辑、时钟、I/ O 消耗的功耗。在一般的设计中 ,动态功耗占据了整个系统功耗
的 90%以上 ,所以降低动态功耗是降低整个系统功耗的关键因素。
降低功耗带来的好处
①低功耗的器件可以实现更低成本的电源供电系统 。另外 ,更简单的电源系统
意味着更少的元件和更小的 PCB 面积 ,同样可以降低成本 。
2、更低的功耗引起的结温更小,而结温的降低可以提高系统的可靠性,同时可
以防止热失控 ,可以少用或不用散热器 ,如散热风扇、散热片等 。
3.延长器件的使用寿命 。器件的工作温度每降低 10 ℃,使用寿命延长 1 倍。
所以对于 FPGA 而言 ,降低功耗的根本在于直接提高了整个系统的性能和质量 ,
并减小了体积 ,降低了成本 ,对产品有着非常大的促进作用 。
如何降低功耗
1. 选择适当的 I/O 标准可以节省功耗。I/O 功耗主要来自器件输出引脚连接的
外部负载电容、阻抗模式输出驱动电路以及外部匹配网络的充放电电流 。可
选择较低的驱动强度或较低的电压标准。当系统速度要求使用高功率 I/O 标
准时 ,可设置缺省状态以降低功耗 。有的 I/O 标准需要使用上拉电阻才能正
常工作 ,因此如果该 I/O 的缺省状态为高电平而不是低电平,就可以节省通过
85 / 118
该终结电阻的直流功耗 。
2. 当总线上的数据与寄存器相关时 ,经常使用片选或时钟使能逻辑来控制寄存
器的使能。尽早对该逻辑进行“数据使能” ,以阻止数据总线与时钟使能寄存器
组合逻辑之间不必要的转换 。另一种选择是在电路板上 ,而不是芯片上 ,进
行这种“数据使能” , 以尽可能减小处理器时钟周期 。也就是使用 CPLD 从
处理器卸载简单任务 , 以便使其更长时间地处于待机模式 。
3. 如果设计的某个部分可以处于非活动状态 ,则可以考虑禁止时钟树翻转而不
是使用时钟使能。时钟使能将阻止寄存器不必要的翻转 ,但时钟树仍然会翻
转 ,消耗功率。其次 ,隔离时钟以使用最少数量的信号区。不使用的时钟树信
号区不会翻转 ,从而减轻该时钟网络的负载 。合理的布局可以在不影响实际
设计的情况下达到此目标 。
4. 并选择常态之间转换位较少的状态值 ,这样就能尽可能减少状态机网络的转
换量(频率)。确定常态转换和选择适当的状态值 ,是降低功耗且对设计影响较
小的一种简单方法 。编码形式越简单(如 1 位有效编码或格雷码),使用的解
码逻辑也会越少(状态编码)。
5. ,选择合适的低功耗器件起决定性的作用。选择一款低功耗的 FPGA 器件有
助于提高产品性能 , 降低产品成本 ,提高产品的可靠性 。
峰值功耗(也是短路功耗)
首先峰值功耗是属于动态功耗中的短路功耗,即 NMOS 和 PMOS 同时导通所引
起的峰值电流,最终带来的功耗。这个功耗和电源电压,时钟翻转率,以及峰值
电流有关。(1)从动、静态功耗的角度分析选择静态模块级 Clock Gating 显然降
低时钟翻转率是降低的动态功耗。存储关闭,即不被访问的时候,关闭存储器,
因而也是降低静态功耗。电源门控技术,即模块不工作的时候,关闭电源,模块
睡眠,工作时候再启动电源,是降低静态功耗。采用高阈值电压的晶体管,阈值
电压增加的效果在于降低亚阈值漏电电流,因而降低静态功耗。
(2)从短路功耗
公式分析,短路功耗公式为:Pshort = τAshortVdd = τAβ(Vdd-Vth)3 ,只跟 Vth 有
关,而 D 选项中大幅提高 HVT(High Voltage Value)带入短路功耗公式中会使短
路功耗变小,从而降低动态功耗中的峰值功耗。
86 / 118
CMOS 电路功耗
参
考
链
接
:
https://blog.csdn.net/wangkai_2019/article/details/106854081?spm=1001.2014.300
1.5506
不要混淆了 FPGA 功耗和 CMOS 功耗!!!!!!
CMOS 电路中的功耗由两部分组成。第一部分为负载电容充放电时引起的功
耗,称为动态功耗,另一部分为漏电流引起的功耗,称为静态功耗。其中,动态功耗
包括翻转功耗和短路功耗。(星辰科技 2022)
低功耗设计分类
87 / 118
FPGA 仿真的三个阶段
(1)行为仿真:目的是验证系统的数学模型和行为是否正确,对系统的描述
的抽象程度较高。在行为仿真时,VHDL 的语法语句都可以执行。
(2)RTL 仿真:目的是使被仿真模块符合逻辑综合工具的要求,使其能生成
门级逻辑。在 RTL 仿真时,不能使用 VHDL 中一些不可综合和难以综合的语句和
数据类型。该级仿真不考虑惯性延时,但要仿真传输延时。
(3)门级仿真:门级电路的仿真主要是验证系统的工作速度,惯性延时仅
仅是仿真的时候有用在综合的时候将被忽略。
FPGA 中 BUF 的区别
这个诺瓦面试考过!!!!!!!
BUFIO 是 IO 时钟网络,顾名思义,它只能驱动 IO Block 里面的逻辑,不能驱动
CLB 里面的 LUT,REG 等逻辑。
BUFR 是 regional 时钟网络,顾名思义,它的驱动范围只能局限在一个 clock region
的逻辑,但是它可以同时驱动 IO 和内部逻辑。
BUFG 是全局时钟网络,这个大家最熟悉了,它可以驱动所有的 IO 和逻辑,并且
可以被 Transceiver 所驱动。
BUFR 相比 BUFG 的最大优势是 skew 和功耗都比较小,在源同步的设计中,这一
88 / 118
点也是很关键的。
Xilinx 中与全局时钟资源和 DLL 相关的硬件原语
常 用 的 与 全 局 时 钟 资 源 相 关 的 Xilinx 器 件 原 语 包 括 :
IBUFG,IBUFGDS,BUFG,BUFGP,BUFGCE,BUFGMUX,BUFGDLL,DCM 等。关于各个器件
原语的解释可以参考《FPGA 设计指导准则》p50 部分。
FPGA 等可编程逻辑器件开发流程
1.
功能定义/器件选型
2.
设计输入( Design Entry);硬件描述语言输入或原理图输入。;
3.
功能仿真( RTL-Simulation)
4.
综合优化( Synthesis)
5.
综合后仿真;用来检查综合结果是否和原设计一致(门级仿真)
89 / 118
6.
布局布线( Place & Routes)
7.
时序仿真( Timing)
8.
板级仿真与验证
FPGA 设计和 I 板级仿真与验证 C 设计的区别?
Fpga 设计是以产品为主,主要是一个产品上有 fpga 器件,去实现逻辑控
制,算法或者协议 ip 集成等功能。ic 设计虽然也是用 HDL,也要各种集成
ip。但是主体是芯片本身,需要涉及到的东西更细,更底层。fpga 设计又常常
用来做 ic 设计的前期验证平台。fpga 设计工作很多时候只要功能出来就行,
不太会多时序,功耗等有苛刻的优化要求,但是芯片设计就需要各种优化,对
硬件语言到实体电路的转化需要了解的更加深入
FPGA 选型
需要的逻辑资源、应用的速度要求,功耗,可靠性,价格,开发环境和开发
人员的熟悉程度。
FPGA 和 ASIC 区别
1.
复位不同:因为 Xlinx 的器件原因,Xilinx 推荐高电
平复位,在 ASIC 通常都是低电平复位。
2.
工具流差别大:FPGA 开发大多是在 Windows 环境
下开发,一个编辑器,一个 Vivado 可以走到底;ASIC
开发基本都在 Linux 环境下开发,编译用 VCS、debug
用 Veridi,清 lint/CDC/RDC 用 Splayglass,收覆盖率
imc,综合用 DC,形式验证 formality,后端做 PR,
DFT 一直到 GDSII 的系列工具。需要一个完整团队,
才能做出一颗芯片。
3.
代码质量要求差别: FPGA 开发,代码验证完,可以
直接应 Vivado 自带的综合 PR 下板子验证。基本就
没问题。ASIC 代码验证完,需要清除 lint。因为很
多写法是不可综合的。清完 lint,进入综合,但 fomal
不一定能过,代码和综合后的网表对不上。综合、
90 / 118
fomal 不过,代码写得再牛逼,再快,验证的再好,
也得改,重写。
4.
验证:FPGA 验证也规模很小,FPGA 工程师一般是
自己设计自己验,然后自己下板调试;ASIC 验证方
法学 UVM 已经统一
5.
FPGA 综合和 ASIC 综合完全不是一个东西:都叫
综合,但本质不同:FPGA 内部的构造大致来说,
LUT 实现组合逻辑,D 触发器实现时序逻辑,再加
上一些 BRAM,硬核资源,就可以实现任意电路。
所以 FPGA 的综合就是把 RTL 映射到这些资源上;
可能只占用了一个 lut 的一个与门,但是就占用了整
个 lut,ASIC 综合是将 RTL 映射到标准单元库上,有
些 RTL,语法是支持,但是就是综合不了。LUT 就
是个大 mux,瞎写的代码 LUT 能映射,但 DC 不一
定过。对于 ASIC 来说,两输入的与非门,就是一个
简单的门电路(对照 FPGA 的 lut),甚至为了区分 驱
动能力和时序特性差异,还分了好几个等级,有的面
积小,有的 驱动能力强
6.
做芯片的方法去做 FPGA 那是降维打击;做芯片流
程复杂,放到做 FPGA 产品上,会造成资源浪费
7.
功耗:FPGA 产品设计很少关注功耗,都是插电使用
的板卡。ASIC 低功耗设计又是一套设计方法学,从
RTL 设计,到 power gating,power domain 的设计,
upf 编写。低功耗的验证。同样的电路,FPGA 的功
耗也会大。
8.
面积:同样的电路,FPGA 的面积会比 ASIC 大很多;
9.
通才和专才:FPGA 规模小,而且是直接面向产品;
ASIC 设计流程众多,岗位细分,每个人更多的只能
覆盖到自己的那一部分工作。做算法 IP 设计的,可
能不用关注中端实现过程,甚至不知道自己正在做
的这个 IP 会用到哪个产品上。做 IP 会出专才,专
注于协议或算法。而 SOC 设计又是另一套方法学体
系。
FPGA 其实和软件类似,代码开发验证完成出版本,然后上开发板去测。出现
91 / 118
问题,回来再继续改代码。产品上市了,发现了一个 bug,远程 OTA 打个补丁,
升级一下。ASIC 总不能流片一下,试一下,几千万就叫你试一下?产品到客户手
里了,发现 bug 了,那是非常严重,召回。这一批次都废掉。
FPGA 在 ASIC 中的角色
FPGA 在 ASIC 开发流程中的作用,只是用做原型验证。前面复杂的开发流程,
与 FPGA 自成体系的开发流程相比完全不是一个量级。
板上系统、片上系统、可编程片上系统、全可编程上系统
板上系统: 一个能够实现一定功能的电路系统由多个模块构成,如处理器、接
口、存储器、模数转换器等等。这些功能模块可以由分立的器件来实现,然后在
印刷电路板(PCB)上组合起来,最终形成板上系统(System-on-a-Board)。
在上图所示的板上系统中,绿色的矩形代表印刷电路板(PCB),上面各种颜色的
小矩形代表了系统中各个功能模块,如存储器等。这些模块的功能都由一个个独
立的硅芯片分别实现的,它们之间通过 PCB 上 的金属走线连接,最终构成一个
完整的系统。
片上系统(SOC)
片上系统(System-on-Chip)**指的是在单个硅芯片就可以实现整个系统的功能。
92 / 118
如上图所示,片上系统 SoC 在一个芯片里就实现了存储、处理、逻辑和接口等
各个功能模块,而不是像板上系统那样,需要用几个不同的物理芯片来实现。与
板上系统相比,SoC 的解决方案成本更低,能在不同的系统单元之间实现更快更
安全的数据传输,具有更高的整体系统速度、更低的功耗、更小的物理尺寸和更
好的可靠性。
可编程片上系统(SOPC)
可编程片上系统(SOPC,System-on-Progammable-Chip)为上述应用提供了一个
更灵活的解决方案:一种在可编程、可重新配置的芯片上实现的 SoC。其中,可
编程的芯片指的就是 FPGA。FPGA 天生的灵活性使其可以被随心所欲地重新配
置,以实现不同系统的功能,包括嵌入式处理器。和使用 ASIC 来实现 SoC 相比,
FPGA 能构成更为基础灵活的平台,方便系统的升级。
全可编程上系统(APSoC)
全可编程上系统(APSoC,All-Programmable SoC)**将处理器的软件可编程性与
FPGA 的硬件可编程性进行完美整合,以提供无与伦比的系统性能、灵活性与可
扩展性。
PS 简介
ZYNQ 实际上是一个以处理器为核心的系统,PL 只是它的一个外设。Zynq-7000
系列的亮点在于它包含了完整的 ARM 处理器系统,且处理器系统中集成了内存
控制器和大量的外设,使 Cortex-A9 处理器可以完全独立于可编程逻辑单元。而
且实际上在 ZYNQ 中,PL 和 PS 两部分的供电电路是独立的,这样 PS 或 PL 部
分不被使用的话就可以被断电。
93 / 118
Zynq 处理器系统里并非只有 ARM 处理器,还有一组相关的处理资源,形成了
一个应用处理器单元(Application Processing Unit,APU),另外还有扩展外设接
口、cache 存储器、存储器接口、互联接口和时钟发生电路等。
ZYNQ 处理器系统(PS)示意图如下所示,其中红色高亮区域为 APU。
APU
APU 主要是由两个 ARM 处理器核组成的,每个都关联了一些可计算的单元:一
94 / 118
个 NEONTM 媒体处理引擎(Media Processing Engine,MPE)和浮点单元(Floating
Point Unit,FPU);一个内存管理单元(Memory Management Unit,MMU);和一
个一级 cache 存储器(分为指令和数据两个部分)。APU 里还有一个二级 cache
存储器,再往下还有片上存储器(On Chip Memory,OCM),这些是两个 ARM 处
理器共用的。最后,由一个一致性控制单元(Snoop Control Unit,SCU)在 ARM
核和二级 cache 及 OCM 存储器之间形成了桥连接。SCU 还部分负责与 PL 对
接,图中没有标出这个接口。
外部接口
Zynq PS 实现了众多接口,既有 PS 和 PL 之间的,也有 PS 和外部部件之间的。
PS 和 外 部 接 口 之 间 的 通 信 主 要 是 通 过 复 用 的 输 入 / 输 出 ( Multiplexed
Input/Output,MIO)实现的,它提供了可以灵活配置的 54 个引脚,这表明外部
设备和引脚之间的映射是可以按需定义的。当需要扩展超过 54 个引脚的时候可
以通过扩展 MIO(Extended MIO,EMIO)来实现,EMIO 并不是 PS 和外部连接
之间的直接通路,而是通过共用了 PL 的 I/O 资源来实现的。PS 中可用的 I/O
包括标准通信接口和通用输入/输出(General Purpose Input/Output,GPIO),GPIO
可以用做各种用途,包括简单的按钮、开关和 LED。
95 / 118
存储器接口
Zynq-7000 APSoC 上的存储器接口单元包括一个动态存储器控制器和几个静态存
储器接口模块。动态存储器控制器可以用于 DDR3、DDR3L、DDR2 或 LPDDR2。
静态存储器控制器支持一个 NAND 闪存接口、一个 Quad-SPI 闪存接口、一个并
行数据总线和并行 NOR 闪存接口。
片上存储器
片上存储器包括 256kB 的 RAM(OCM)和 128kB 的 ROM(BootROM)。OCM
支持两个 64 位 AXI 从机接口端口,一个端口专用于通过 APU SCU 的 CPU/ACP
访问,而另一个是由 PS 和 PL 内其他所有的总线主机所共享的。BootROM 是
ZYNQ 芯片上的一块非易失性存储器,它包含了 ZYNQ 所支持的配置器件的驱动。
BootROM 对于用户是不可见的,专门保留且只用于引导的过程。
96 / 118
AXI 接口
ZYNQ 将高性能 ARM Cotex-A 系列处理器与高性能 FPGA 在单芯片内紧密结合,
为设计带来了如减小体积和功耗、降低设计风险,增加设计灵活性等诸多优点。
在将不同工艺特征的处理器与 FPGA 融合在一个芯片上之后,片内处理器与
FPGA 之间的互联通路就成了 ZYNQ 芯片设计的重中之重。如果 Cotex-A9 与
FPGA 之间的数据交互成为瓶颈,那么处理器与 FPGA 结合的性能优势就不能发
挥出来。Xilinx 从 Spartan-6 和 Virtex-6 系列开始使用 AXI 协议来连接 IP 核。
在 7 系列和 ZYNQ-7000 AP SoC 器件中,Xilinx 在 IP 核中继续使用 AXI 协议。
AXI 的英文全称是 Advanced eXtensible Interface,即高级可扩展接口,它是 ARM
公司所提出的 AMBA(Advanced Microcontroller Bus Architecture)协议的一部分。
AXI 协议是一种高性能、高带宽、低延迟的片内总线
名词 PCI/ ECO/ Interrupt/ TLB/ Pipeline/ DDR
ECO: Engineering Change Order 工程修改订单。
ECC:erro checking and correcting 数据校验纠错,是―Error Correcting Code‖
的简写,中文名称是―错误检查和纠正‖。ECC 是一种能够实现―错误检查和纠
正‖的技术,ECC 内存就是应用了这种技术的内存,一般多应用在服务器及图形
工作站上,这将使整个电脑系统在工作时更趋于安全稳定。
DDR:Double Data Rate 双倍速率同步动态随机存储器。严格的说 DDR 应该
叫 DDR SDRAM,人们习惯称为 DDR,其中,SDRAM 是 Synchronous Dynamic
Random Access Memory 的缩写,即同步动态随机存取存储器。
PCI:PCI 是 Peripheral Component Interconnect(外设部件互连标准)的缩写 PCI
是由 Intel 公司 1991 年推出的一种局部总线。最早提出的 PCI 总线工作在
33MHz 频率之下,传输带宽达到了 133MB/s(33MHz X 32bit/8),它为显卡,声卡,
网卡,MODEM 等设备提供了连接接口。
Interrupt:中断 分为硬件中断和软件中断。硬件中断分为可屏蔽中断和不可
屏蔽中断。
97 / 118
Pipeline:流水线采用流水线技术的 CPU 使用指令重叠的办法,即在一条指
令还没有处理完时,就开始处理下一条指令。典型的流水线将每一条机器指令分
成 5 步,即取指、译码、取操作数(或译码 2)、执行、回写。在理想条件下,平
均每个时钟周期可以完成一条指令而所谓“超级流水线处理”是将机器指令划分
为更多级的操作,以减轻每一级的复杂程度。在流水线的每一步中,如果需要执
行的逻辑操作少一些,则每一步就可以在较短的时间内完成。
TLB:Translate Look side Buffers,转换旁视缓冲器
名词 CTS/.Extrat RC 和 STA/半定制
98 / 118
DSP 的作用
DSP 的作用是对音频数字型号进行运算处理,快速使用算法声音的音质进行
改善,让音响的喇叭功率更高、声音清晰听着更舒服,它可以让声场的宽度和广
度都提高。DSP 在声音数字信号的处理上非常有用,且应用也非常广泛,尤其是
低功耗的设备中效果更明显。
名词 DRC
DRC,进行设计规则检查(综合完成后)
名词 CMOS/MCU/RISC/CISC/DSP/IRQ/USB/BIOS
CMOS(Complementary Metal Oxide Semiconductor),互补金属氧化物半导体,
电压控制的一种放大器件。是组成 CMOS 数字集成电路的基本单元。
MCU(Micro Controller Unit)中文名称为微控制单元,又称单片微型计算机
(Single Chip Microcomputer)或者单片机,是指随着大规模集成电路的出现及其发
展,将计算机的 CPU、RAM、ROM、定时数计器和多种 I/O 接口集成在一片芯片
上,形成芯片级的计算机,为不同的应用场合做不同组合控制。
RISC(reduced instruction set computer,精简指令集计算机)是一种执行较少
类型计算机指令的微处理器,起源于 80 年代的 MIPS 主机(即 RISC 机),RISC 机
中采用的微处理器统称 RISC 处理器。这样一来,它能够以更快的速度执行操作
(每秒执行更多百万条指令,即 MIPS)。因为计算机执行每个指令类型都需要额
外的晶体管和电路元件,计算机指令集越大就会使微处理器更复杂,执行操作也
会更慢。
CISC 是复杂指令系统计算机(Complex Instruction Set Computer)的简称,微
处理器是台式计算机系统的基本处理部件,每个微处理器的核心是运行指令的电
路。指令由完成任务的多个步骤所组成,把数值传送进寄存器或进行相加运算。
99 / 118
DSP(digital signal processor)是一种独特的微处理器,是以数字信号来处理
大量信息的器件。其工作原理是接收模拟信号,转换为 0 或 1 的数字信号。再对
数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数
据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千
万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电
脑芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特色。
IRQ 全称为 Interrupt Request,即是―中断请求‖的意思(以下使用 IRQ 称
呼)。IRQ 的作用就是在我们所用的电脑中,执行硬件中断请求的动作,用来停止
其相关硬件的工作状态
USB ,是英文 Universal Serial BUS(通用串行总线)的缩写,而其中文简称为―
通串线,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。
BIOS 是英文"Basic Input Output System"的缩略语,直译过来后中文名称就是
"基本输入输出系统"。其实,它是一组固化到计算机内主板上一个 ROM 芯片上
的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后
自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的
硬件设置和控制。
名词 SIMD/ NoC
SIMD 全称 Single Instruction Multiple Data,单指令多数据流,能够复制多个操作
数,并把它们打包在大型寄存器的一组指令集。
NoC 可以定义为在单一芯片上实现的基于网络通讯的多
处理器系统,是用来设计 IP 内核和系统芯片之间的通信子
系统的方法。NoC 包括计算和通讯两类节点。计算节点(又称
为资源,Resource)完成广义的计算任务,它们既可以是 SoC,
也可以是各种单一功能的 IP;通讯节点(又称交换开关,Switch)
负责计算节点之间的数据通讯。通讯节点及其之间的网络称
100 / 118
为 OCN(On—ChipNetwork),它借鉴了分布式计算机系统的通
讯方式,用路由和分组交换技术替代传统的总线技术完成通
讯任务。
JTAG 信号
TCK:测试时钟输入,用于移位控制,上升沿将测试指令、测试数据和控制输入
信号移入芯片;下降沿时将数据从芯片移出。
TMS:测试模式选择,串行输入端,用于控制芯片内部的 JTAG 状态机。
TDI:测试数据输入,串行输入端,用于指令和编程数据的输入,在时钟上升沿,
数据被捕获。
TDO:测试数据输出,串行输出端,时钟下降沿,数据被驱动输出。
TRST:测试复位输入(仅用于扩展 JTAG),异步、低电平有效,用于 JTAG 初始化
时。
5 级流水线 RSIC 结构
5 级流水线的功能分别是取指、译码、执行、访存、写回。
单板硬件工程师的职责:
(2023 29 所)
1.负责电力电子产品的单板硬件设计和测试;
2.设计单板原理图、PCB;完成单板上 CPLD/FPGA 程序的编写、测试;编写单
板设计文档
3.制作并调试样板、输出调试报告
4.协助质量部完成单板测试并解决相关测试问题;
5. 支持生产,协助解决单板生产问题,维护单板
101 / 118
6. 参与编写或评审单板硬件设计、CPLD/FPGA 开发、器件选型等规范
7.提供单板基础知识类资料给组内外成员,并提供技术培训
芯片综合
从某种意义而言,综合就是将设计的 HDL 描述转化为门级网表的过程,从某种意
义而言,综合就是将设计的 HDL 描述转化为门级网表的过程。Synopsys 公司提供
的综合工具 DC 把综合分为三个步骤进行:synthesis=translation+mapping+
optimization。
Translation 是指把设计的 HDL 描述转化为(GTECH)库元件组成的逻辑电路;
GTECH 库是 Synopsys 公司提供的通用的、独立于工艺的元件库。
Mapping 是指将(GTECH)库元件映射到某一特定的半导体工艺库上,此时
的电路网表包含了相关的工艺参数。
Optimization 是根据设计者设定的时延、面积、线负载模型等综合约束条件
对电路网表进一步优化的过程。
从综合工具的使用流程来看,综合包括综合环境的设置,综合约束,综合优
化,综合与后端流程等。
综合约束用来设定电路综合的目标,它包括设计环境约束、时间约束和面积
约束。
设计环境约束指的是用来描述设计在工作时的温度、电压、驱动、负载等外
部条件的一系列属性。基本的环境设置内容包括工作条件、负载模型、系统接口
驱动或扇出能力等设置。这些属性约束在电路综合时是必须的,如果用户没有进
行显示的说明,则 DC 在综合的时候会采用默认值。
时间约束内容包括定义时钟、定义时钟网络的时间约束和时序路径时间约束
设定,以及非同步设计的时间约束等。了解延迟的计算是定义恰如其分的时间约
束的关键。Synopsys 公司支持几种延迟模型:一是 CMOS 通用的延迟模型,二是
CMOS 分段的线性延迟模型,三是非线性的查表延迟模型。深亚微米的设计,前
两种模型并不常用,非线性的延迟模型以输入的迁越时间和输出电容负载为参变
量计算延迟的时间值,其结果以表格的形式列出供 DC 查找。
102 / 118
综合和实现的区别
sta 都是要做的: 区别是综合后使用的是理想布线延时 理想的时钟树,实现后
引入了实际布线延时,建立了真正的时钟树。
时序路径和关键路径
时序路径:
时序路径是一个点到点的数据通路,数据沿着时序路径进行传递。每条时序
路径有一个起点(Startpoint)和一个终点(Endpoint)。
起点定义为:
· 输入端口;
· 触发器或寄存器的时钟引脚。
终点定义为:
· 输出端口;
· 时序器件的除时钟引脚外的所有输入引脚(一般触发器数据输入引脚)。
这样, 时序路径可以是输入端口到寄存器、 寄存器到寄存器、 寄存器到输出
端口、 输入端口到输出端口。如下面这个电路中:
就有 4 条路径:
1:从输入端口 A 到 FF1 的 D 端;
2:从 FF1 的 CLK 端到 FF2 的 D 端;
103 / 118
3:从 FF2 的 CLK 端到输出端口 out1;
4:从输入端口 A 到输出端口 out1。
延时最长的一条路径称为关键路径。
一些 RTL
全加:
半加:
同步复位:
104 / 118
也可以用一个与门实现
静态、动态时序分析
静态时序分析是采用穷尽分析方法来提取出整个电路存在的所有时序路
径,计算信号在这些路径上的传播延时,检查信号的建立和保持时间是否满足
时序要求,通过对最大路径延时和最小路径延时的分析,找出违背时序约束的
错误。它不需要输入向量就能穷尽所有的路径,且运行速度很快、占用内存较
少,不仅可以对芯片设计进行全面的时序功能检查,而且还可利用时序分析的
结果来优化设计,因此静态时序分析已经越来越多地被用到数字集成电路设计
的验证中。
静态时序分析时需要将异步输入信号排除在分析之外。(set_false_path)
动态时序分析就是通常的仿真,因为不可能产生完备的测试向量,覆盖门级网
表中的每一条路径。因此在动态时序分析中,无法暴露一些路径上可能存在的
时序问题;
集成电路设计流程的认识
一般来说asic和fpga/cpld没有关系!fpga是我们在小批量或者实验中采用的,生活中
的电子器件上很少见到的。而asic是通过掩膜得到的,它是不可被修改的。至于流程,应
该是前端、综合、仿真、后端、检查、加工、测试、封装。
对集成电路工艺的认识
集成电路是采用半导体制作工艺,在一块较小的单晶硅片上制作上许多晶体管及
电阻器、电容器等元器件,并按照多层布线或遂道布线的方法将元器件组合成完
整的电子电路。它在电路中用字母“IC”(也有用文字符号“N”等)表示。
(一)按功能结构分类集成电路按其功能、结构的不同,可以分为模拟集成电路
105 / 118
和数字集成电路两大类。
模拟集成电路用来产生、放大和处理各种模拟信号(指幅度随时间边疆变化的信
号。例如半导体收音机的音频信号、录放机的磁带信号等),而数字集成电路用
来产生、放大和处理各种数字信号(指在时间上和幅度上离散取值的信号。例如
VCD、DVD 重放的音频信号和视频信号)。
(二)按制作工艺分类 集成电路按制作工艺可分为半导体集成电路和薄膜集成
电路。膜集成电路又分类厚膜集成电路和薄膜集成电路。
(三)按集成度高低分类 集成电路按集成度高低的不同可分为小规模集成电路、
中规模集成电路、大规模集成电路和超大规模集成电路。
(四)按导电类型不同分类 集成电路按导电类型可分为双极型集成电路和单极
型集成电路。双极型集成电路的制作工艺复杂,功耗较大,代表集成电路有 TTL、
ECL、HTL、LST-TL、STTL 等类型。单极型集成电路的制作工艺简单,功耗也较低,
易于制成大规模集成电路,代表集成电路有 CMOS、NMOS、PMOS 等类型。
(五)按用途分类 集成电路按用途可分为电视机用集成电路。音响用集成电路、
影碟机用集成电路、录像机用集成电路、电脑(微机)用集成电路、电子琴用集
成电路、通信用集成电路、照相机用集成电路、遥控集成电路、语言集成电路、
报警器用集成电路及各种专用集成电路。 电视机用集成电路包括行、场扫描集
成电路、中放集成电路、伴音集成电路、彩色解码集成电路、AV/TV 转换集成电
路、开关电源集成电路、遥控集成电路、丽音解码集成电路、画中画处理集成电
路、微处理器(CPU)集成电路、存储器集成电路等。 音响用集成电路包括 AM/FM
高中频电路、立体声解码电路、音频前置放大电路、音频运算放大集成电路、音
频功率放大集成电路、环绕声处理集成电路、电平驱动集成电路、电子音量控制
集成电路、延时混响集成电路、电子开关集成电路等。 影碟机用集成电路有系
统控制集成电路、视频编码集成电路、MPEG 解码集成电路、音频信号处理集成
电路、音响效果集成电路、RF 信号处理集成电路、数字信号处理集成电路、伺服
集成电路、电动机驱动集成电路等。 录像机用集成电路有系统控制集成电路、
伺服集成电路、驱动集成电路、音频处理集成电路、视频处理集成电路。
106 / 118
DFT 可测性设计
参
考
链
接
:
https://troublemaker.blog.csdn.net/article/details/88365028?spm=1001.2014.3001.
5506
概念:可测性设计;
狭义理解:是指在芯片开发中的前端设计里增加为后期的 ATE 测试所准备的测试
逻辑。用于控制和产生测试向量,达到自动测试的目的。
广义理解:不仅包括为自动化测试所设计的测试逻辑,还涵盖了测试向量的产生,
测试结果的分析等。
DFT 存在的意义:
筛选出出错的芯片:open/break
定位错误位置
提高工艺,提高良率。
业内的两种主流 DFT 流程
1.DFT 从架构阶段开始引入,在 RTL 阶段开始 DFT 设计和验证
2.在 neltist 阶段开始插入相关设计
几种集成电路典型工艺
典型工艺:氧化,离子注入,光刻,刻蚀,扩散,淀积。
107 / 118
IC 设计前端到后端的流程和 EDA 工具
设计前端也称逻辑设计,后端设计也称物理设计,两者并没有严格的界限,一
般涉及到与工艺有关的设计就是后端设计(布局布线开始就是后端了)。
108 / 118
1:规格制定:客户向芯片设计公司提出设计要求。
109 / 118
2:详细设计:芯片设计公司(Fabless)根据客户提出的规格要求,拿出设计
解决方案和具体实现架构,划分模块功能。目前架构的验证一般基于 systemC
语言,对价后模型的仿真可以使用 systemC 的仿真工具。例如:CoCentric 和
Visual Elite 等。
3:HDL 编码:设计输入工具:ultra ,visual VHDL 等
4:仿真验证:modelsim
5:逻辑综合:synplify
6:静态时序分析:synopsys 的 Prime Time
7:形式验证:Synopsys 的 Formality.
数字 IC 后端设计流程
1. 数据准备。对于 Cadance 的 SE 而言后端设计所需的数据主要有是
Foundry 厂提供的标准单元、宏单元和 I/O Pad 的库文件,它包括物理库、
时序库及网表库,分别以.lef、.tlf 和.v 的形式给出。前端的芯片设计经过
综合后生成的门级网表, 具有时序约束和时钟定义的脚本文件和由此产
生的.gcf 约束文件以及定义电源 Pad 的 DEF(Design Exchange Format)
文件。(对 synopsys 的 Astro 而言, 经过综合后生成的门级网表,时序约束
文件 SDC 是一样的,Pad 的定义文件--tdf , .tf 文件 --technology file,
Foundry 厂提供的标准单元、宏单元和 I/O Pad 的库文件 就与 FRAM,
CELL view, LM view 形式给出(Milkway 参考库 and DB, LIB file)
2. 布局规划。主要是标准单元、I/O Pad 和宏单元的布局。I/O Pad 预先给出
了位置,而宏单元则根据时序要求进行摆放,标准单元则是给出了一定的
区域由工具自动摆放。布局规划后,芯片的大小,Core 的面积,Row 的形式、
电源及地线的 Ring 和 Strip 都确定下来了。如果必要在自动放置标准单
元和宏单元之后, 你可以先做一次 PNA(power network analysis)--IR drop
and EM .
3. Placement -自动放置标准单元。布局规划后,宏单元、I/O Pad 的位置和放
置标准单元的区域都已确定,这些信息 SE(Silicon Ensemble)会通过 DEF
文件传递给 PC(Physical Compiler),PC 根据由综合给出的.DB 文件获得网
表和时序约束信息进行自动放置标准单元,同时进行时序检查和单元放置
优化。如果你用的是 PC +Astro 那你可用 write_milkway, read_milkway 传
递数据。
110 / 118
4. 时钟树生成(CTS Clock tree synthesis)。芯片中的时钟网络要驱动电路中
所有的时序单元,所以时钟源端门单元带载很多,其负载延时很大并且不
平衡,需要插入缓冲器减小负载和平衡延时。时钟网络及其上的缓冲器构
成了时钟树。一般要反复几次才可以做出一个比较理想的时钟树。
5. STA 静态时序分析和后仿真。时钟树插入后,每个单元的位置都确定下来
了,工具可以提出 Global Route 形式的连线寄生参数,此时对延时参数的提
取就比较准确了。SE 把.V 和.SDF 文件传递给 PrimeTime 做静态时序分
析。确认没有时序违规后,将这来两个文件传递给前端人员做后仿真。对
Astro 而言,在 detail routing 之后, 用 starRC XT 参数提取,生成的 E.V
和.SDF 文件传递给 PrimeTime 做静态时序分析,那将会更准确。
6. ECO(Engineering Change Order)。针对静态时序分析和后仿真中出现的
问题,对电路和单元布局进行小范围的改动.
7. filler 的插入(pad fliier, cell filler)。Filler 指的是标准单元库和 I/O Pad 库
中定义的与逻辑无关的填充物,用来填充标准单元和标准单元之间,I/O
Pad 和 I/O Pad 之间的间隙,它主要是把扩散层连接起来,满足 DRC 规则和
设计需要。
8. 布 线 (Routing) 。 Global route-- Track assign --Detail routing — Routing
optimization 布线是指在满足工艺规则和布线层数限制、线宽、线间距限
制和各线网可靠绝缘的电性能约束的条件下,根据电路的连接关系将各单
元和 I/O Pad 用互连线连接起来,这些是在时序驱动(Timing driven ) 的条
件下进行的,保证关键时序路径上的连线长度能够最小。
9. Dummy Metal 的增加。Foundry 厂都有对金属密度的规定,使其金属密度
不要低于一定的值,以防在芯片制造过程中的刻蚀阶段对连线的金属层过
度刻蚀从而降低电路的性能。加入 Dummy Metal 是为了增加金属的密度。
10. DRC 和 LVS。DRC 是对芯片版图中的各层物理图形进行设计规则检查
(spacing ,width),它也包括天线效应的检查,以确保芯片正常流片。LVS 主
要是将版图和电路网表进行比较,来保证流片出来的版图电路和实际需要
的电路一致。DRC 和 LVS 的检查--EDA 工具 Synopsy hercules/ mentor
calibre/ CDN Dracula 进行的.Astro also include LVS/DRC check commands.
11. Tape out。在所有检查和验证都正确无误的情况下把最后的版图 GDSⅡ
文件传递给 Foundry 厂进行掩膜制造
111 / 118
从 RTL synthesis 到 tape out 之间的设计 flow,并列出其中各步
使用的 tool.
综合-布局布线-时序仿真-时序分析
简单说来,一颗芯片的诞生可以分成设计和制造。当设计
结束的时候,设计方会把设计数据送给制造方。tapeout 是
集成电路设计中一个重要的阶段性成果,是值得庆祝的。庆
祝之后,就是等待,等待制造完的芯片回来做检测,看是不
是符合设计要求,是否有什么严重的问题等等。
自动布局布线其基本流程如下:
1、读入网表,跟 foundry 提供的标准单元库和 Pad 库以及宏模块库进行映射;
2、整体布局,规定了芯片的大致面积和管脚位置以及宏单元位置等粗略的信息;
3、读入时序约束文件,设置好 timing setup 菜单,为后面进行时序驱动的布局布
线做准备; 4、详细布局,力求使后面布线能顺利满足布线布通率 100%的要求
和时序的要求;
5、
时钟树综合,为了降低 clock skew 而产生由许多 buffer 单元组成的―时钟树‖;
6、布线,先对电源线和时钟信号布线,然后对信号线布线,目标是最大程度地
满足时序; 7、为满足 design rule 从而 foundry 能成功制造出该芯片而做的修补
工作,如填充一些 dummy 等。
常用的工具有 Synopsys 的 ASTRO,Cadence 的 SE,ISE,Quartus II 也可实现
布局布线。
解决串扰问题
1) 在布线条件允许的条件下, 尽可能拉大传输线间的距离;或者尽可能地减
112 / 118
少相邻传输线间的平行长度(累积平行长度) ,最好是在不同层间走线。
2) 相邻两层的信号层(无平面层隔离) 走线方向应该垂直, 尽量避免平行走线以
减少层间的串扰。
3) 在确保信号时序的情况下, 尽可能选择转换速度低的器件, 使电场与磁场的
变化速率变慢, 从而降低串扰。
4) 在设计层叠时, 在满足特征阻抗的条件下,应使布线层与参考平面(电源或地
平面) 间的介质层尽可能薄, 因而加大了传输线与参考平面间的耦合度, 减少相
邻传输线的耦合。
5) 由于表层只有一个参考平面, 表层布线的电场耦合比中间层的要强, 因而对
串扰较敏感的信号线尽量布在内层。
6) 通过端接, 使传输线的远端和近端终端阻抗与传输线匹配, 可大大减小串扰
的幅度。
还有一点也需要大家注意就是信号上升时间,对信号完整性的影响很大。有实验
表明,上升沿的串扰的影响相当大,随着上升时间的变短,特别是当平行走线长
度小于饱和长度时,串扰电压幅度将迅速减小。
IC 设计流程:
参
考
链
接
1
:
https://guodongm.blog.csdn.net/article/details/123674257?spm=1001.2014.3001.5
506
参
考
链
接
2
:
https://blog.csdn.net/weixin_42294124/article/details/123534319?spm=1001.2014.
3001.5506
写出一份设计规范,设计规范评估,选择芯片和工具,设计,
(仿真,设计评
估,综合,布局和布线,仿真和整体检验)检验,最终评估,系统集成与测试,
113 / 118
产品运输。
1.需求分析(制定规格书)。分析用户或市场的需求,并将其翻译成对芯片产品
的技术需求。
2.算法设计。设计和优化芯片钟所使用的算法。这一阶段一般使用高级编程
语言(如 C/C++),利用算法级建模和仿真工具(如 MATLAB,SPW)进行浮点和
定点的仿真,进而对算法进行评估和优化。
3.构架设计。根据设计的功能需求和算法分析的结果,设计芯片的构架,并
对不同的方案进行比较,选择性能价格最优的方案。这一阶段可以使用 SystemC
语言对芯片构架进行模拟和分析。
4.RTL 设计(代码输入)。使用 HDL 语言完成对设计实体的 RTL 级描述。这
一阶段使用 VHDL 和 Verilog HDL 语言的输入工具编写代码。
5. RTL 验证(功能仿真)
。使用仿真工具或其他 RTL 代码分析工具,验证 RTL
代码的质量和性能。
6.综合。从 RTL 代码生成描述实际电路的门级网表文件
7.门级验证(综合后仿真)。对综合产生的门级网表进行验证。这一阶段通常
会使用仿真、静态时序分析和形式验证等工具。
8. 布 局 布 线 。 后 端 设 计 对 综 合 产 生 的 门 级 网 表 进 行 布 局 规 划
(Floorplanning)、布局(Placement)、布线(Routing),生成生产用的版图。
9.电路参数提取确定芯片中互连线的寄生参数,从而获得门级的延时信息。
10.版图后验证。根据后端设计后取得的新的延时信息,再次验证设计是否能
够实现所有的功能和性能指标。
11.芯片生产。生产在特定的芯片工艺线上制造出芯片。
12. 芯片测试。对制造好的芯片进行测试,检测生产中产生的缺陷和问题。
IC 设计规则
使用自上而下的设计方法(行为级,寄存器传输级,门电路级),按器件的结
114 / 118
构来工作,做到同步设计,防止亚稳态的出现,避免悬浮的节点,避免总线的争
抢(多个输出端同时驱动同一个信号)。
(DFT)强调可测试性应该是设计目标的核心,目的是排除一个芯片的设计
缺陷,捕获芯片在物理上的缺陷问题。
ASIC 设计要求提供测试结构和测试系向量。FPGA 等默认生产厂商已经进行
了适当的测试。测试的 10/10 原则:测试电路的规模不要超过整个 FPGA 的 10%,
花费在设计和仿真测试逻辑上的时间不应超过设计整个逻辑电路的 10%。
寄生效应在 IC 设计中怎样加以克服和利用
所谓寄生效应就是那些溜进你的 PCB 并在电路中大施破坏、令人头痛、原
因不明的小故障。它们就是渗入高速电路中隐藏的寄生电容和寄生电感。其中
包括由封装引脚和印制线过长形成的寄生电感;焊盘到地、焊盘到电源平面和
焊盘到印制线之间形成的寄生电容;通孔之间的相互影响,以及许多其它可能
的寄生效应。
在直流或者低频情况下,这种寄生效应看不太出来。而在交流特别是高频
交流条件下,影响就非常巨大了。根据复阻抗公式,电容、电感会在交流情况
下会对电流的移动产生巨大阻碍,也就可以折算成阻抗。这种寄生效应很难克
服,也难摸到。只能通过优化线路,尽量使用管脚短的 SMT 元器件来减少其影
响,要完全消除是不可能的。
芯片测试分类
晶圆测试和最终测试。
晶圆测试(Wafer Test 或 CP-Chip Probering),Wafer 就是晶圆,这个由 Fab 进
行生产,上面规则地放着芯片(Die)。当晶圆上形成了一个个格状的晶粒时,通
过针测的方式对每个晶粒进行电气特性检测。一般每个芯片拥有的晶粒数量是庞
大的,组织一次针测试模式是非常复杂的过程,这要求了在生产的时候尽量是同
等芯片规格构造的型号的大批量的生产。数量越大相对成本就会越低,这也是为
什么主流芯片器件造价低的一个因素。
115 / 118
最终测试(Final Test)也叫封装测试,所谓封装测试其实就是在芯片封装后
进行的测试,把已制造完成的半导体元件进行结构及电气功能的确认,以保
证半导体元件符合系统的需求的过程。
使用最少的电路实现二分频,画出原理图:(2023 禾赛)
MUX(2 选 1)逻辑门
116 / 118
多路器表达应为:A?(B?0:1):(B?1:0),
3 个 2 选 1 构成 1 个 4 选 1
数字信号处理
时域与频域之间的对应关系:周期-离散、非周期-连续。
117 / 118
0
You can add this document to your study collection(s)
Sign in Available only to authorized usersYou can add this document to your saved list
Sign in Available only to authorized users(For complaints, use another form )