找回密码
 注册
关于网站域名变更的通知
查看: 281|回复: 2
打印 上一主题 下一主题

关于verilog几条语法

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-3-19 10:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
关于verilog几条语法
& D8 Z, }5 G6 Y7 o6 N( L
" N5 \7 C" ~& Z
1.关于wire和reg类型的使用:  Y- @) `  R) X" F. u: {
input的变量一定只能是wire。output的变量可以是wire也可以是reg。inoutput的变量只能是wire型,因为类型中含有input成分。* G7 x9 S' i$ n4 u' I4 k; [! [  C( X
所有变量不加说明默认定义为wire型。
6 ]! i/ |9 `4 E; m6 }在assign语句中使用wire类型。在always语句块中使用reg类型。# ^( C7 {8 S8 m: c
2.位拼接符 { }( D7 v9 I5 {! j2 j9 `: ~9 d4 h" s4 [
位拼接符使用:把某些倍号的某些位详细地列出来,中间用逗号分开,最后用大括号括起来表示一个整体信号。拼接时高位在前。: L- X0 w8 O+ N, s, I
eg: input [3:0] numberH;* {5 b7 e& J+ d  P! {( Y
    input [3:0] numberL;
  F2 f$ R0 k  g" ], f- P1 M2 j    output wire [7:0] number;4 N" W) e3 b$ [0 ?
    assign number = {numberH,numberL};
4 ^* `+ D$ ?( s; f* x) W1
" z5 l+ S0 G, r+ {2 q7 A2
7 g' t7 g' r3 u" s9 c' A+ }) m. L' m3
, w+ D+ t+ H4 U3 O  E4 v; V0 d% \44 v" [4 F% ]+ |( Y6 e3 ?( q/ o
3.case endcase语句与if else语句
5 S& }  }# M. h, x. q5 U* qif语句语法基本与c语言相同,也具有优先级。4 k' {4 M, z. |; B, t  {
eg: if(flag == 0)
( J1 X: Y$ F/ K. K: i; k# y      begin single = 3;end
& v5 F9 F1 ^/ B4 M+ ~1 f5 _    else if(flag == 1)
7 ^4 ^& b8 ?: E2 n* T1 `- e+ s      begin single = 2;end
; X* N! Z4 r" Q4 w2 h6 }. L    else if(flag == 2)! n# Y6 s! T9 z  S  K
      begin single = 1;end# f) d1 p" Y) f' s$ I
    else& X+ N! |1 K4 }  I+ z9 C
      begin single = 0;end```5 X) C1 d4 N* S
1
/ [# s# Z7 D: {7 a3 B9 q( h6 G2& p. Z3 }+ Z! E- k( X# r
3
$ E) U5 d9 x: J5 N48 L* ^) M  O3 H$ P# O) i  M
5. c  \* d) |$ l) j- r& m+ R
6
8 |4 Z2 e) C: Z9 `$ D6 z5 N71 }  B4 a2 s1 j7 ?8 D" n5 S5 ]# ^& r
8" P) \/ L% q/ M  E1 H; X
case语句,不具有优先级: ]' \8 L3 T7 V' Q4 k% h) V
eg: case(flag)
2 a9 g& O$ s  i; m) l    2'b0: single = 3;7 ?1 g& ?; Z" k4 ~
    2'b1: single = 2;! Q5 J) X$ ~% z/ }' `, e
    2'b2: single = 1;
; X; Y* I% y$ ^1 J& j    default: single = 0;
7 T1 e+ u& {7 h. I    endcase2 q/ X8 p1 E& t# W
1
. G* n+ k/ q; S* O9 `+ i2- B- R+ i3 [1 q1 ?
3, ?" v' R  F, t$ w4 J0 L: C
4
9 X1 x% j( P& {2 X5
4 a% O& l# c% V% ^6
2 E3 Z# H6 z7 {if语句与case语句: 5 R# M8 V5 K; ?+ c
if占用资源相对较少,但执行时间较长。case语句与之相反。( b* S" q1 l% H$ S: s% {! x' S7 m0 F5 [
4.always语句块与assign语句
5 ?( ]' M( v. t3 a( W$ Falways语句块一般用在时序逻辑电路中,在组合逻辑中也有应用。
5 X, I! v; R$ u7 H' i$ \0 L  O8 C( i/*敏感信号是需要检测的信号,当这些信号发生变化时,always语句块就会更新一次。对于时序逻辑而言,还需要有posedge,negedge,posedge or negedge修饰。*/
( S& D2 ?4 E, v$ p) }& R2 o! Q' n3 l3 Y5 F% E$ f6 y
语法: always@(敏感信号)
/ b4 S4 r$ W7 q/ H% c     begin3 J/ D! T- t* t/ |+ A  \1 y
       语句体;
( J. m: |  X" G" C; \     end 4 W" v" m& Q7 g4 h3 G4 [
14 K% V, o$ T& x4 N- e# R' j
2% s& K$ ]# L. Z/ q
3
9 }! g* c) \: i* g8 z: L4$ z, m) A0 y; T4 {" n9 Z" B
58 |8 L1 k* h. p
67 H, a0 K4 o9 m* y1 ~9 ~
always组合逻辑+ l% Z! b8 K# v3 T& E- U6 D9 i( U
在组合逻辑电路中,用阻塞赋值 =" \& m, [  y! B8 [& U
eg:  always@(a,b,c,d,x)7 v# H. M7 t! s: p& }7 a, X
     begin
+ Y3 ^0 o, U7 ~+ N/ i       case(x)7 j" q! f, t  u2 T4 b- W
       2'b0: y = a;; Y/ u( d3 ^2 [
       2'b1: y = b;; D( q( {8 z' v6 g' Y
       2'b2: y = c;8 s8 g# l0 ]7 p# P
       default: y = d;
( p! V4 _) D0 w: y6 N; g+ O# L       endcase
9 c8 O; ]9 d! ]- u  U# r. ^     end - r! O* H' |! W9 w7 o3 a# ^# q
11 @! d0 e5 x2 h& i+ a/ }0 Y4 T
2  \* E6 d1 f' M' [% b
3
, E& n  i: c+ \% v0 N0 m4" ?- ]& Z; S/ }4 K+ j% z
5
4 _7 k# V' o  t6 p( b% ]6
7 c3 D/ b' K# T7 M& n$ d7
; G; T% a0 l% t( G8
0 Q9 n5 S) ?5 K+ S0 u) j: ~8 N92 S- ~- G3 q2 q8 y
always时序逻辑 8 q- P* x  A: @% a
在时序逻辑电路中,用非阻塞赋值 <=
# j0 d  a4 s- Z: meg:  always@(posedge clk or negedge res)& A$ `2 ^/ h1 t/ U2 c% f9 ]6 F
     begin
, ~4 B# Q+ \: U       if(clk)
/ q5 r7 G# {7 ?* j$ k- c" O         y <= a;" P1 q% P* ^9 p' H4 ~
       else if(res == 0)
( \: _1 Q  P- t! \" R  p' f" n         y <= 0;2 ]7 C8 t2 M1 f6 M
       else y <= y;( o6 R* b: E5 _
     end
5 ]" U' B+ U2 l  L1
0 _3 u; b- {- K$ E$ _+ P; U$ r2
( q7 l' c/ C: e6 M5 `  y3+ I0 p! W$ `! t; q! t" o0 x/ l1 x
4- z$ z2 H* }, I% h# t9 {" F
5/ D. W# O, [* [. p7 [3 H
6
& G. }* d; R% W+ L. W7 H/ M: \4 I0 W$ t7" P- H  {- v+ d3 G/ t6 j2 ?% k
8
* a& |! W2 O; |# R! c* N* t5.assign 目标变量 = 驱动表达式8 _6 @! s+ f; s: F0 B" l$ [
eg: assign y = a & b;0 R) c( n! ~' t6 V
1% d6 u$ X& R" {  j  N7 ~( F, s6 z
6.多目运算符 ? :
$ X# w4 [; P9 L- |7 b- J5 R6 Aeg: Y = (a&b)?c:d;) @  e  o2 Z/ N  e/ l8 Y9 Q2 R! k

* {% W. D8 i9 G/*与c语言神似的运算符。若a&b为真,Y=c,否者 Y=d。*/

" ]* D0 x/ i( \1 F. [

该用户从未签到

2#
发表于 2019-3-19 17:35 | 只看该作者
谢谢楼主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-30 01:16 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表