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

关于verilog几条语法

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
关于verilog几条语法
1 k  ~6 Z0 |# F* m% }- y
# ^6 d4 Y5 Z7 a& N$ _7 k6 n  [
1.关于wire和reg类型的使用:
, H& ^4 W1 n! u$ R9 H: C% uinput的变量一定只能是wire。output的变量可以是wire也可以是reg。inoutput的变量只能是wire型,因为类型中含有input成分。9 S# V2 k- H  s9 c6 V: h
所有变量不加说明默认定义为wire型。) |2 R3 h+ x( ?5 R3 p- c* h
在assign语句中使用wire类型。在always语句块中使用reg类型。
: k0 v/ n, \0 O! g2 `2.位拼接符 { }* P* x# ^% F5 U$ U8 ]- V6 {, h
位拼接符使用:把某些倍号的某些位详细地列出来,中间用逗号分开,最后用大括号括起来表示一个整体信号。拼接时高位在前。' X; k4 Q& }. K  |3 n4 y
eg: input [3:0] numberH;
; [! m) Y! N' x7 t    input [3:0] numberL;
3 L% W; `  e5 g1 |# L    output wire [7:0] number;2 J5 V) h' Z- m4 i/ \
    assign number = {numberH,numberL};
5 P8 A* E: a+ O) k+ s1
8 c: v4 ~( c- m! m$ A$ y* I2& z+ X" }* b3 B2 E  U+ B( ^8 }
3$ N1 G$ e7 L# |
4
# O0 Z' `) y. _" b! j3.case endcase语句与if else语句
$ F: i5 W' r# Rif语句语法基本与c语言相同,也具有优先级。
3 N& r8 U) Q3 I6 {eg: if(flag == 0)0 g- Y5 h- E$ R' |/ v$ f3 d
      begin single = 3;end
, M/ m$ ]4 }% e$ E. m    else if(flag == 1)+ Z! b% w7 R- o, J* R
      begin single = 2;end) Z0 o) {& @0 ?
    else if(flag == 2)( q7 p4 n- S7 o: l
      begin single = 1;end- D( _/ I! V$ c4 T2 _0 |+ C
    else1 ~; y( [! }! T: \$ S( g
      begin single = 0;end```# T1 x. T) N9 N& |  |- u
14 [  S9 |. @4 ]( a3 e% Q" K
2% H/ @7 S1 K5 b7 H! H
3
) P% j& ~3 o5 W; G9 @! Y+ K5 T4
! ?' x7 P, \6 j& {% o5( A6 D: y: Y7 Y/ W) b
6  H9 H0 S5 B8 F6 _
7
' L* _; ]- u) r' f8. z& L% o! ^. e2 Y
case语句,不具有优先级
8 E# g; |% I) Heg: case(flag)
" s, ?+ Q3 E' m) F) W# M$ B    2'b0: single = 3;7 J) c3 w5 P* ]; d. I$ U
    2'b1: single = 2;
- f5 \0 O9 S( k0 y1 d    2'b2: single = 1;
' e2 M$ i" p% _' W' ]2 j    default: single = 0;9 ~' Y8 _; E  \# n1 b
    endcase
! X% X: o! |* O: l! s. }5 N16 D4 S6 \" ~' w. X6 W, \! r! X5 x
28 n" _9 U' e7 }) k% p' f
3
$ ?, n6 j- a; s: ?4
% k: R2 J$ P1 I& z8 X5) x: r0 }! c4 H# F4 R
6( N. s; U, j" K
if语句与case语句: 0 f) l5 E" `, S* {+ |3 X* A+ l
if占用资源相对较少,但执行时间较长。case语句与之相反。
8 ^# A& D7 b  G* Y- g4.always语句块与assign语句: L, n$ T! I( r$ {
always语句块一般用在时序逻辑电路中,在组合逻辑中也有应用。7 b3 k2 G6 u! S5 v$ _
/*敏感信号是需要检测的信号,当这些信号发生变化时,always语句块就会更新一次。对于时序逻辑而言,还需要有posedge,negedge,posedge or negedge修饰。*/6 N8 K. o/ B/ U, U6 k
* A3 O" G5 ^- d/ Z+ P! s# L: T
语法: always@(敏感信号)
8 ^/ `+ r: Y6 J& X4 G7 u  A: r     begin
; ?  [' m. v. v       语句体;* H# H0 _2 M, T) u# ?5 m" K
     end
" ~; l# ~2 W8 U0 u1 J1
2 A; F# x! {* ?/ v$ J2
% m6 Z$ Z0 P7 d; m  V* G4 J3
& m! R9 \0 E& p, o3 U. B0 Z# f4
" B% f) Q# u' E4 w" h! c5
! w2 `+ D( f4 J4 ]) [6
8 ~" v0 b3 H4 U9 I8 R1 @3 r& q) Y0 Xalways组合逻辑6 x/ w  I$ v  `
在组合逻辑电路中,用阻塞赋值 =( H/ ^5 e0 j) E. X  _
eg:  always@(a,b,c,d,x)
- Y% h+ [2 r8 B/ z& p     begin
0 J2 f2 ^3 j5 [) M1 `       case(x)
' U+ }! a5 B8 D1 ]# ?# a0 F       2'b0: y = a;* M4 c* F0 F) t
       2'b1: y = b;, M  H( u7 M4 R: `' K4 D  [
       2'b2: y = c;
( c3 \  o  x, t3 @. a" |       default: y = d;
5 L; v( q- Y9 p) n6 P. G" x6 d% j       endcase
. {3 V  w1 T" W/ v; n: n0 G7 b     end
1 e+ O( }% ]% c+ m1& L  k" L5 S/ n8 Z0 G
2
; B3 A" B3 f, N8 ^3
' l. C9 ]. `3 @7 Z& e4
6 ]" E0 h2 N* P2 O0 |9 Z5 T9 X5
: f  d: Q5 N' C& S& k$ A3 W" L6
& @& g( k' r/ f, i% G( ^9 h; E% h7
! S$ t8 a9 Z$ ?6 A8# F: O+ U  x' {9 `' G9 L$ u8 M
9( ?5 w# K2 {2 M) f
always时序逻辑
4 }/ Y$ s. z( j在时序逻辑电路中,用非阻塞赋值 <=
) f) R$ }8 f7 i9 _/ Seg:  always@(posedge clk or negedge res)* b( [8 Y" u' ]$ V5 J+ t- Q# i* V
     begin
( I- l: V7 H5 e+ I# a9 c% O$ c       if(clk)5 T0 d( P5 E. x& y2 Y0 j% x
         y <= a;0 {- `9 l+ `" f6 t+ D
       else if(res == 0)
* o+ `# c; |  X$ q         y <= 0;
. Z- I! h- ]; {' b( s       else y <= y;
5 [. C( h( H" x* g+ {     end
( x4 C& D/ W, V: i, b9 O% `4 X1; O# X5 _7 L( |4 t' a
26 K& p9 V- _1 I6 {1 M7 @9 j4 u
3
1 X5 k( Y! U' L. s; P" |. n0 o3 y- |43 j7 u- \( E: V4 }3 B8 [
59 W3 B3 c( d6 `" t2 N4 c% P
6' w, x# E- a: }+ J- q% r1 i  ~. `
7* t5 @5 _5 B) _$ w; E  q
8+ _: n$ C1 d( i5 _
5.assign 目标变量 = 驱动表达式" y& e: d. B6 g# P7 q) A6 `' R# ]
eg: assign y = a & b;
9 p& |% D; q5 m9 h/ G1" G: x/ }! s' X# e
6.多目运算符 ? :
$ T! }2 j+ l. M, ieg: Y = (a&b)?c:d;
% `) x! ?) `7 M  }) q' B. d1 X0 w+ ]* ~% P4 V
/*与c语言神似的运算符。若a&b为真,Y=c,否者 Y=d。*/
& w$ k# r7 y0 Z7 d* }5 ^0 k* |

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-9 01:14 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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