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

关于verilog几条语法

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
关于verilog几条语法
. l: t5 @7 d  j# L$ N
) O2 ^$ S- ]6 O& Y6 B, H) g4 T( \% X
1.关于wire和reg类型的使用:" \" Z" r& x) {! O, W" t
input的变量一定只能是wire。output的变量可以是wire也可以是reg。inoutput的变量只能是wire型,因为类型中含有input成分。
6 o* S4 W1 h! b# O! d. e所有变量不加说明默认定义为wire型。0 ~: j1 _$ Y( U, {2 A
在assign语句中使用wire类型。在always语句块中使用reg类型。
; U+ k7 E# c7 x- Q5 b2.位拼接符 { }  j: C- n" e, R3 x1 b* G5 ?
位拼接符使用:把某些倍号的某些位详细地列出来,中间用逗号分开,最后用大括号括起来表示一个整体信号。拼接时高位在前。
4 I/ g7 J4 k0 b1 w% Z) zeg: input [3:0] numberH;
8 I$ P; S7 h7 D7 H& g8 \6 V" y    input [3:0] numberL;
7 i2 _1 F4 S* D    output wire [7:0] number;
; t4 b  J& P& c. J, S: [5 x    assign number = {numberH,numberL};0 Q% _3 k+ B9 V' w9 `, w
11 r7 v+ U+ v) v/ R) Z" ~3 l( a7 e
2
; p3 S! x4 u7 [3# a; Z: \% J, j$ j5 I
4
% a. j8 b, S* T3.case endcase语句与if else语句' {% U; s3 }3 `
if语句语法基本与c语言相同,也具有优先级。
& g0 e: o& L: D" R: P, R- Veg: if(flag == 0)
6 b* V$ d# `2 f) `! O      begin single = 3;end
: Y& D1 [- ]' C* q0 E1 A    else if(flag == 1)
: O$ @9 X8 z  |, `      begin single = 2;end
6 D/ m! F5 q  z! X+ W8 ?. S& b    else if(flag == 2): x1 r: `0 x; T. q+ A" a2 A! B
      begin single = 1;end
' q( T! e; X8 ?5 V) E4 [2 U3 R    else
5 g: |( `4 ?2 A/ E( a7 Q0 T      begin single = 0;end```
. p5 v- o( P% O( Q13 m% [% g5 [2 t- |# l  z3 Q# N
24 M$ I) y) C+ t( R
3
* h5 g4 _( P, Y3 h! p4! |: i/ `* Q# t: i% n
5
+ I7 e( g' I: z% h1 I" _% z6
: v6 ^  f: f. T5 }; Z0 k# K( ?7# }! d8 w# e' e
8/ C; i5 i. K# x
case语句,不具有优先级
; ^* Y! S( Z: q6 I( \. |eg: case(flag)
; P& b% v# |8 d, _2 \* x+ a    2'b0: single = 3;
: n, P$ m6 _- h5 L5 g    2'b1: single = 2;0 _; X9 ?5 n6 U6 T3 j% N0 d7 M$ i
    2'b2: single = 1;+ d" S4 H* A3 \" _: K4 |3 X
    default: single = 0;* o0 b  l* M7 w; x2 E
    endcase
( C6 S( X4 s' I2 p1
  L, f: U# q! J+ t1 f2
8 y8 D: D5 f3 b3
: i4 n3 n* K% g4$ s; ]7 o6 n- \$ o% r- P0 H
52 y/ r4 X9 U& ?. w+ l- w7 Y
6
( Y' _# M6 U& b) O: K" O0 q8 U! nif语句与case语句:
- s. ^3 O& W. F/ f- k# j% vif占用资源相对较少,但执行时间较长。case语句与之相反。
, p2 I& W7 M9 t) o/ [, _: ^4.always语句块与assign语句) f. U. L# u( y+ C: z; C" A
always语句块一般用在时序逻辑电路中,在组合逻辑中也有应用。8 H3 g/ ?$ _$ y
/*敏感信号是需要检测的信号,当这些信号发生变化时,always语句块就会更新一次。对于时序逻辑而言,还需要有posedge,negedge,posedge or negedge修饰。*/
1 A" Y/ u: ^0 {& |# t1 ^
+ B( @8 w5 H# D! R  i- k- N4 z) U语法: always@(敏感信号)
# v+ W% l7 R4 L% H' q! t     begin2 ^& ?: A( V" `! r5 C3 F
       语句体;
! l: V6 u) v% Y# D     end
& ^6 R2 a; b) \/ L0 I* ?1 r1 q! c12 O- c* B" n* O- J8 x: ~  L
2
2 C  x3 y2 L* H% o, b' \+ m+ M37 x: H# y) P7 ]' Y7 V3 o( N6 h  p6 c
41 d# c# F# N0 v+ T2 C
5$ l; z, x: n) K. C' e
63 ^$ p. p1 |! K
always组合逻辑& p+ {% \$ f6 Y
在组合逻辑电路中,用阻塞赋值 =
0 o( c0 @6 F8 Z9 q0 Feg:  always@(a,b,c,d,x)7 N7 S8 J3 u" n. Z' k( i
     begin
8 Q( X2 k. r( B5 A       case(x)
- A4 [  F0 E/ z2 ?* C" C3 h* p( O       2'b0: y = a;$ J2 u- C- V$ Y* X# W6 d3 w6 |7 ?. h
       2'b1: y = b;, l2 I$ W& G+ b& X! D
       2'b2: y = c;# c# b1 c% ~" |* o. f# G$ @7 a; P
       default: y = d;
5 j" T0 a& c9 B& A       endcase7 s5 q1 r* }1 n4 |5 M& ~
     end
2 n8 ?& G1 S( \' v! I1
* T8 h: `* ^. c2 ^) H- ~2! L! W0 l6 b! t
3
8 r, i. h, d% ?8 P  i+ Z0 ]! d4
4 @5 L- g1 ?5 G+ u# v  E% G5
2 C4 \5 O3 n. ~, o- G5 Q6
6 `! H# b! W) \$ R70 m0 |2 i1 C4 t0 [" \5 X7 e7 g
8, M; I% q0 f9 m1 k7 \
9. r) n! L7 a: P1 }) K: {& U0 k
always时序逻辑
& j1 c( y9 K+ X; [) J在时序逻辑电路中,用非阻塞赋值 <=
$ j3 P! Z# t  geg:  always@(posedge clk or negedge res)
8 L3 z3 B! f4 o$ x; ~& d     begin" q6 M. E0 L6 G8 ~( r+ q- @
       if(clk)
! P; o7 P7 l8 _0 B7 M         y <= a;
5 d7 [% `+ o* T- C% J: X% A       else if(res == 0)
. K# B- V/ L) I1 h8 f         y <= 0;
2 }2 y) c( z% z+ I# J       else y <= y;& Q4 h  `6 M9 I% q* Y0 a/ s! @
     end
- t3 P( N/ P  \) j5 ]! T; {1
/ p8 t* K: Q: P, O2
5 P& O* I4 L# I3
9 }% m+ @8 ?0 V1 X2 Y4
: K6 D% M  O) y1 S) D5
( b, D/ {6 ^6 {65 Z1 i, R* G$ h
7/ x" B3 m. L7 ?
81 ^' H- q* S% a- ~% U: Y. {
5.assign 目标变量 = 驱动表达式
. ?+ H$ l5 J* m  T7 E4 S( qeg: assign y = a & b;9 }% b7 D* w! V% T' c- t
1
& u: W4 u3 M1 A. L" h: X0 B6.多目运算符 ? :/ X* h% E% _0 B% Y
eg: Y = (a&b)?c:d;
* W% N/ [6 |5 h8 Q3 o( v
* f: L( B! f2 A. P& O1 _/ s1 T/*与c语言神似的运算符。若a&b为真,Y=c,否者 Y=d。*/
9 V- Y4 \3 w9 T3 w; [  T2 c& E

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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