|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
verilog 基础语法-数据类型 常量 变量
" m9 D) B% O1 E6 b+ M. z8 ?4 t6 f. s$ L% r: F
+ f. n( a5 A7 \" {* j* G$ O7 i9 g
常量:
5 Z. V$ R$ |6 n/ T6 Y/ E 整数:<位宽 num'><进制 b|o|d|h><数字>,例如 4'b1010- v4 V3 c A a
x值(不定值)和z值(高阻值,也可用?代替)7 c( h8 q0 M4 b5 Q2 h) a) I
x和z可以标识某一位或者某一个数字: s4 w* O3 k- p, ^
4'b10x0,4'bx,4'b101z,4'bz,4'b?5 K7 B/ [. E8 d8 G
负数:整数最前面加-/ N: v; b U, P4 ~( Y5 W3 }
下划线:分割数字部分,更加易读(8'b1000_1000)
' ~0 T# M7 y7 c2 ?7 v 参数:parameter* `; [. q+ T9 C; Q2 s/ S
parameter 参数名=表达式;- R- H* E9 ?: I, ]9 L
表达式只能是数字或者定义过的参数
! ^+ |! Q8 ]! u8 s+ | 变量:2 [ z; ^, F, C4 o
wire型:wire [n-1:0] 数据名;5 K. S* N! a7 o8 f0 }8 p, C4 W
wire表示信号,常用来表示assign关键字指定的组合逻辑信号
5 M. n) }9 a* j wire型信号可以用作输入,输出3 g w& \5 a. [7 _3 [
reg型:reg [n-1:0] 数据名;# x D; m" B7 x
对存储单元的抽象
) a" e- @" Y8 F 常用来表示always模块内的指定信号,常代表触发器
' ]. B4 _: H3 J; j, M9 c always块内被赋值的每一个信号都必须定义为reg型* d& |$ Z. a' @
memory型:reg [n-1:0] 存储器名[m-1:0];+ Z+ I. m# `* S5 n6 H
reg [n-1:0]表示基本存储单元的大小3 ]0 q- D# N% U5 t. l* f6 @
存储器名[m-1:0]表示基本存储单元的个数,存储空间的容量
: [! J- }" h* {( U 对存储器进行地址索引的表达式必须是常数表达式2 v4 \, x4 L' q5 S) A7 |% u9 ]9 ^
一个n位寄存器可以在一条赋值语句里进行赋值,而一个完整的存储器不行
( @+ P8 I6 u, r$ O1 w 运算符及表达式:
+ f6 E6 _4 N* a5 E( K% F 基本运算符:+ - * / %
) B2 j* d. F. K9 L+ b' A 位运算符:~ & | ^ ^~
/ w5 t7 f9 o5 e& X: r 逻辑运算符:&& || !& X# ~( O4 X1 Y1 d) U: g
关系运算符:< > <= >=
3 K, s9 F$ y, e! D4 l 等式运算符:== != (不管x、z,结果可能是不定值)- t& J3 z$ ]0 o5 E
=== !==(对参数的x、z都进行比较)) _9 ]$ J: ?# i$ B" l( T
移位运算符:<< >>
, o" ~: o, c2 O* z8 \3 e/ \ 位拼接运算符:{ },将几个信号拼接起来,例如{a,b[3:0],w,3'b100}
3 J: Y" F' E# U' s {% E5 N 缩减运算符:C =&B;C =|B;C =^B;" X, x" ]8 b$ k+ V
优先级别:和c语言差不多,加括号
: C& ?9 T' f3 _6 G6 i 赋值语句:
# j8 r; p, ?/ X4 \/ Z 1)非阻塞赋值方式(b <= a)- L3 H+ H, y$ B# M4 k- ~' W
a.块结束才完成赋值3 Z+ w% S4 Z0 s
b.b的值不是立刻就改变的! F# E7 Z2 ^" r2 R/ K5 e" `
c.在可综合的模块中常用
( K; I# E1 O. d 2)阻塞赋值方式(b = a), @; S/ N: }3 I& s" V
a.赋值语句执行完成后,块才结束
9 L2 M+ c p, ~+ W6 b5 C b.b的值在赋值语句执行后立刻改变
% u5 { b6 w: T* D3 \ c.可能会产生意想不到的结果
" I3 z' }! W' @. V 简单理解:- d/ ]! { J' H, |# r$ F; w& F+ p
非阻塞赋值用了多个触发器,每次时钟到达,所有触发器都触发一次
) ~* a% b1 W9 q 阻塞赋值连到同一个触发器上,时钟到达,导致所有寄存器被赋值8 o8 R- ^( Q5 v( R
--------------------- |
9 f/ ?+ N+ [4 e3 ~6 j0 q" \, } |
|