|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
主要内容:
3 m7 Y3 z8 }/ A7 s: y5 `Verilog 的应用7 e+ k7 m; }9 @ `# v" u
Verilog 语言的组成部件 9 m7 f) C6 H8 ?# Q# i
结构级的建模与仿真# A; v) _, o6 i1 P# }6 B
行为级的建模与仿真4 { o0 } n ^% N0 h9 N% |& j5 ]; F& o
延迟参数的表示$ D \. Y: B4 r* R. t3 q; {
Verilog 的测试平台:2 f$ m3 s& g3 j- t3 X8 A
怎样产生激励信号和控制信号
0 }# _& z" G3 L. l' l 输出响应的产生、记录和验证
}( U7 ]' H' q( r任务和函数
) j- D8 N b& p, p7 o) B用户定义的元器件(primitives)
8 F( j7 X" `: E6 { e: ]可综合风格的Verilog 建模
+ g) h, |: C3 L5 H" i0 j) `4 v- Y
4 F5 R9 G2 X+ m+ D4 h" } NVerilog 的应用
# B5 q1 \) s' E1 q; mVerilog HDL是一种用于数字逻辑电路设计的语言:# r& K7 r" Q7 F6 |6 m" f( a
- 用Verilog HDL描述的电路设计就是该电路的Verilog HDL模型。$ ]' g) Z9 e3 y
- Verilog HDL既是一种行为描述的语言也是一种结构描述的语言。
! N* u0 R- o/ K& q. [9 l5 F这也就是说,既可以用电路的功能描述也可以用元器件和它们之间的连接来建立所设计电路的Verilog HDL模型。Verilog模型可以是实际电路的不同级别的抽象。这些抽象的级别和它们对应的模型类型共有以下五种: E W+ U ~& u8 S
●系统级(system): 用高级语言结构实现设计模块的外部性能的模! A+ a& S- i R1 O
●算法级(algorithmic): 用高级语言结构实现设计算法的模型。
& `! A! x {7 c4 i' t8 p●RTL级(Register Transfer Level): 描述数据在寄存器之间流动和如何处理这些数据的模型。
8 H* g8 S7 Z3 H! u7 j* _●门级(gate-level): 描述逻辑门以及逻辑门之间的连接的模型。 k6 n8 l: G R E7 q' H
●开关级(switch-level): 描述器件中三极管和储存节点以及它们之间连接的模型。( I: Q. i( v w1 q, K$ h
* y5 I$ U) Z# V: [一个复杂电路的完整Verilog HDL模型是由若个 Verilog HDL 模块构成的,每一个模块又可以由若干个子模块构成。
- B* {' ^7 D) A/ s1 I3 U利用Verilog HDL语言结构所提供的这种功能就可以构造一个模块间的清晰层次结构来描述极其复杂的大型设计。
l2 |3 i; W; A, j P* h9 {Verilog HDL行为描述语言作为一种结构化和过程性的语言,其语法结构非常适合于算法级和RTL级的模型设计。这种行为描述语言具有以下八项功能:5 Z$ \% U. v8 i- d
●可描述顺序执行或并行执行的程序结构。
1 L& k+ l) r6 C5 D5 t●用延迟表达式或事件表达式来明确地控制过程的启动时间。
, N4 S4 U I6 [●通过命名的事件来触发其它过程里的激活行为或停止行为。
" D3 ^& ~1 c8 H& k●提供了条件、if-else、case、循环程序结构。2 S- I# C" [ P& i- r1 c
●提供了可带参数且非零延续时间的任务(task)程序结构。0 J/ z2 G9 I% L+ k2 k8 G
●提供了可定义新的操作符的函数结构(function)。
8 _1 a1 t3 i" i●提供了用于建立表达式的算术运算符、逻辑运算符、位运算符。2 m, V2 i* [/ L4 |' u
●Verilog HDL语言作为一种结构化的语言也非常适合于门级和开关级的模型设计。 1 H2 o9 H# Y* r4 Q& y6 z
●Verilog HDL的构造性语句可以精确地建立信号的模型。这是因为在Verilog HDL中,提供了延迟和输出强度的原语来建立精确程度很高的信号模型。信号值可以有不同的的强度,可以通过设定宽范围的模糊值来降低不确定条件的影响。- v+ a/ S- R' W7 |# c6 Y
) S$ M# l' B* W- l# K9 M3 P- WVerilog HDL作为一种高级的硬件描述编程语言,有着类似C语言的风格。其中有许多语句如:if语句、case语句等和C语言中的对应语句十分相似。如果读者已经掌握C语言编程的基础,那么学习 Verilog HDL并不困难,我们只要对Verilog HDL某些语句的特殊方面着重理解,并加强上机练习就能很好地掌握它,利用它的强大功能来设计复杂的数字逻辑电路。下面我们将对Verilog HDL中的基本语法逐一加以介绍。0 r- c. w c5 b" K
& Z5 ^" Q' j8 U) M: y模块的抽象: j6 ]- {9 ]% e/ o
技术指标:用文字表示;用算法表示;用高级行为的Verilog模块表示
$ d$ A7 O) f! C/ }1 b4 @% QRTL/功能级:用可综合的Verilog模块表示
- |1 E. P* Z! b* X) i$ R门级/结构级:用实例引用的Verilog模块表示$ ^' s. `' N/ \4 f* V5 L* |
版图布局/物理级:用几何形状来表示
' O3 Y" Z* z. K5 e/ L" k6 a3 t1 w3 S+ ^+ |
简单的 Verilog HDL 模块
2 l2 M$ s7 j# e( p, p0 X2 `! y下面先介绍几个简单的Verilog HDL程序,然后从中分析Verilog HDL程序的特性。
/ J6 d9 A' ?8 f9 K2 M例[2.1.1]: module adder ( count,sum,a,b,cin );
0 v: @8 F, t( v; b input [2:0] a,b;
# P. _. B% J, P, L0 g input cin;
3 P' w& Q. W- P1 ~4 h output count;
' u' K" a! e/ b5 A+ d output [2:0] sum;, s% O# L% M3 U5 A1 F& `6 i
assign {count,sum}=a+b+cin;( g8 i; Z8 x- ?+ r$ v) [: b
endmodule3 o+ y8 g) _& [# i6 t/ n/ Y$ j! y
这个例子描述了一个三位的加法器。从例子中可以看出整个Verilog HDL程序是嵌套在module和endmodule声明语句里的。
1 u+ B9 c( P" t3 ?( C例[2.1.2]:
' t" Z" T5 M0 ^7 w. @module compare ( equal,a,b );
0 J2 _7 F- D6 O0 d% U1 G$ ` output equal; //声明输出信号equal. ^. E- V! ^( A a0 u
input [1:0] a,b; //声明输入信号a,b7 t: E Z7 a! W6 l0 z
assign equal=(a==b)?1:0;
. Z1 r( h7 D, J- D- @ /*如果两个输入信号相等,输出为1。否则为0*/, `0 ]* I: b1 j" L8 W9 g9 j* `
endmodule
, C0 d" x, z, T. Y& K3 ?这个程序描述了一个比较器.在这个程序中,/*........*/和//.........表示注释部分,注释只是为了方便程序员理解程序,对编译是不起作用的。5 z# _# I4 Y- k8 s+ e
|
|