EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
6 q: a! s8 Z( [3 @% o. F2 Z2 W+ { A、c和Verilog的相同点和不同点(关键在不同点,难点是Verilog仿真语义),其中仿真语义包括阻塞与非阻塞、毛刺、同步设计与异步设计(例如同步复位和异步复位)等问题; + H1 H1 d, {- Y/ r O R/ F" d
对基本理论与设计技巧的理解:首先要说到C与Verilog语言的区别,我感觉最大的区别就是Verilog并行编程的特点,更多的是在描述,C语言在一个时刻只能执行一条命令,Verilog增加了很多的位运算符,以及位拼接运算符。 ' C8 I( |# I8 G
VHDL语言中没有阻塞与非阻塞之分,相比Verilog,VHDL更适合行为级建模。 ! N0 L& U9 Z; w6 }7 w4 N5 J
阻塞赋值的时候,等号右边的值立马传递给左边的值(也就是说右边的值计算完后左边的值立即更新操作符为“=”),完成该赋值语句才能做下一语句的操作,硬件没有对应的电路,因而综合的结果未知;非阻塞赋值(<=)在赋值的过程中分两步执行,在单位仿真周期开始时计算右边的值,在同一单位仿真周期末更新左边的值,同块内各赋值语句同时完成。两者的设计原则:
' O9 q4 W/ L9 s( M# u' v原则1:时序电路建模时,用非阻塞赋值1 \% ?1 P+ D! f; K
原则2:锁存器电路建模时,用非阻塞赋值
7 K, i4 ~# ]4 l, _ x- Z/ ~原则3:用always块写组合逻辑时,性爱用阻塞赋值5 m' y! }0 ` j v
原则4:在同一个always块中同时建立时序和组合逻辑电路时,用非阻塞赋值0 ]: i7 b) K: Z/ T. X3 B
原则5:在同一个always块中不要同时使用非阻塞赋值和阻塞赋值
0 j3 Q! x! r" H$ x* j2 o5 K0 w. c7 W原则6:不要在多个always块中为同一个变量赋值
9 j8 R8 Q2 `3 V0 D: l% ?原则7:用$strobe系统任务来显示用非阻塞赋值的变量值
' W6 u, e# Z; s' T/ Z# W x原则8:在赋值时不要使用#0延迟 : p3 W" q k8 `" }2 n- R
毛刺:毛刺现象是长期困扰电子设计工程师的设计问题之一,是影响工程师设计效率和数字系统设计有效性和可靠性的主要因素。由于信号在FPGA的内部走线和通过逻辑单元时造成的延迟,在多路信号变化的瞬间,组合逻辑的输出常常产生一些小的尖峰,即毛刺信号,这是由FPGA内部结构特性决定的。毛刺现象在FPGA的设计中是不可避免的,有时任何一点毛刺就可以导致系统出错,尤其是对尖峰脉冲或脉冲边沿敏感的电路更是如此。 & d- g( e9 {/ C9 b: r% D, q
FPGA芯片是由可构造的输入输出块(IOB)、可构造逻辑块(CLB)和可编程连线资源(PIA)3种可构造单元构成的。 ' r' ]" W) c# X& v: P
毛刺产生的条件:信号在FPGA器件中通过逻辑单元连线时一定存在延时。延时的大小仅和连线的长短和逻辑单元的数目有关,而且也和器件的制造工艺、工作环境等有关。因此,信号在器件中传输的时候,所需要的时间是不能精确估计的,当多路信号同时发生跳变的瞬间,就产生了“竞争冒险”。这时,往往会出现一些不正确的尖峰信号,这些尖峰信号就是“毛刺”。
/ z9 _* R4 |7 L消除毛刺的方法:①利用冗余项法②采样法③吸收法④延迟法⑤硬件描述语言法(这种方法是从硬件描述语言入手,找出毛刺产生的基本原因,改变语言设计产生满足要求的功能模块,来代替原来的逻辑功能块)。
" j2 c$ K: P, y* c2 D# T同步设计和异步设计:包括亚稳态,保持时间问题;异步电路使用组合逻辑电路实现,没有统一的十种信号,容易产生毛刺和竞争冒险;同步电路使用组合逻辑电路电路和触发器实现电路功能,主要信号和输出信号都是由时钟驱动触发器产生,能够避免毛刺,信号稳定。异步电路的延时靠门来实现,难以预测,异步电路的优势不大。同步系统的条件:整个系统使用一个时钟源,所有信号均通过寄存器锁存,不用组合逻辑产生CLK,RESET,SET等信号,触发器不用费同步的SET或RESET进行控制,不允许用门延时和缓冲器延时来延迟时钟和信号,逻辑门延时不应比布线延时长。
2 K! h( ~0 i4 s1 s, | B、时序分析(延时分析)和约束条件; 时序约束主要包括周期约束和偏移约束以及静态路径约束3种,通过附加约束条件可以使综合布线工具调整映射和布局布线过程,使设计达到时序要求。附加时序约束的一般策略是先附加全局约束,然后对快速和慢速例外路径附加专门约束。附加全局约束时,首先定义设计的所有时钟,对各时钟域内的同步原件进行分组,对分组附件周期约束,然后对FPGA/cpld输入输出PAD附加偏移约束、对全组合逻辑的PAD TO PAD 路径附加约束。附加专门约束时,首先约束分组之间的路径,然后约束快、慢速例外路径和多周期路径,以及其他特殊路径。附加约束的基本作用:提高设计的工作频率;获得正确的时序分析报告;指定FPGA/CPLD引脚位置与电气标准。 , g8 _( c/ V6 S5 [% l
|