赞
踩
行为级:直接赋值;
RTL级:定义寄存器;
门电路级:定义模块,使用模块。
模块分为两种:定义的电路和测试。
端口的连接方式有两种:
IO格式说明的格式为input/output [位宽-1:0] 端口名
内部信号声明常见的有reg和wire,格式为reg/wire[位宽-1:0] 变量名
关于对于端口而言,类型和输入输出可以一起写。
通常默认为无符号数,在计算减法运算时,将减数视为负数,转换为补码,因为没有符号位,所以全部都是构成补码的。被减数相当于正数,所以说补码原码都一样。
有符号数进行运算时,除了一位符号位,其余都是补码。
如果只有数字的话,也就是十进制,默认为有符号数;integer也默认为有符号数。
常见的书写方式有:
<位宽><进制><数字>
:8b10101111
;
<进制><数字>
:o5270
;默认为32位,此时位数不能超过32位;
<数字>
:32
;默认为32位十进制,此时位数不能超过32位且必须得是十进制数字。
其中,位宽指的是数字转化为二进制之后占用的位的大小。
逻辑值的取值可以是:
x和z可以用来定义
x不能表示十进制数字。
单独一个x配上啥进制都是合理的,但是和别的数字搭配的话,对于十进制来说就是非法的。
只需要在位款表达式最前面加负号。
可以有十进制和科学记数法两种格式。如果采用十进制的话,小数点两边都必须有数字。
主要是用于分割数字提高可读性的,只能用于数字之间。
parameter 参数名=表达式
赋值语句中的表达式只能包含常量,即数字或者parameter。
注意区别于宏定义。
双引号表示,每个被机器理解为8位ASCII值。
类型 | 符号 |
---|---|
网格型 | wire、tri |
寄存器型 | reg,integer |
存储器型 | memery(reg的数组) |
对于多驱动源,驱动一致,就是该输出;驱动不一致的话,处了高阻态于0、1,保持0、1,其余都是x。
定义格式为;reg [n-1:0] mem_name [m-1:0]
[n-1:0]
定义了每个存储单元的大小;[m-1:0]
定义了存储器中有多少寄存器。
定义了一个名为mem_name
的存储器,其中有m
个n
位的存储器单元,其地址范围是0~m-1。
需要注意的是
运算符类型 | 符号 |
---|---|
算术运算符 | + - * / % |
赋值运算符 | = <= |
关系运算符 | > < <= >= |
相等运算符 | == != ===(全等) !== |
逻辑运算符 | && || ! |
条件运算符 | ?: |
位运算符 | &,|,~,^(异或),^~或~^(同或) |
移位运算符 | << >> <<< >>> |
拼接运算符 | {} |
规约运算符 | & ~& | ~| ^ ~^ |
&与、|或、~非、^异或、~^同或
&&与、||或、!非。
逻辑运算符是对整体看的,就是说只要不是零,那么在逻辑运算符看来就是1。
如果x参与其中,还得看看1和0是否是绝对的。
如果关系成立,输出1,如果含x,那么输出x。
a<<n
或a>>n
,a是操作数,n是移动的位数,0会填补这些空白。
4位全是x,但移位的时候还是给到了0.
{3{a,b}}={a,b,a, b,a,b}
;&规约与,|规约或,^规约异或,以及他们的非运算。
对单个操作数进行操作,从第1位一直到最后一位,最后结果为1位。
x?1001:1010 -> 10xx
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。