verilog语言
1’b0<位宽><进制><数字>
verilog中用“<= “ 和 “=”赋值的区别
①=赋值:线程会暂停在赋值处等待赋值完成再进行下面的语句
②<=赋值:并不会等待赋值的完成,而是进行下面的
组合逻辑使用=赋值,时序逻辑使用<=赋值:
此赋值方式可以避免在仿真出现冒险和竞争现象。
wire
wire型数据常用来表示以assign关键字指定的组合逻辑信号,模块的输入输出端口类型都默认为wire型,wire相当于物理连线,默认初始值是z。
reg
reg型表示的寄存器类型,用于always模块内被赋值的信号,必须定义为reg型,代表触发器,常用于时序逻辑电路,reg相当于存储单元,默认初始值是x。
!与|取反
(5条消息) verilog中非与按位取反_ffdia的博客-CSDN博客_verilog 按位取反
“!”表示逻辑求反,“~”表示按位求反。
设计思路:
对原码取绝对值进行乘法运算,符号位单独计算
在机器中使用补码存储数据,故求绝对值为
原码绝对值=~补码+1
如:设四位二进制数
-3不包括符号位取反+1得到补码绝对值13,
13包括符号位取反得2,再加1得3。
设置flag表示乘法运算是否正在进行。(flag=mult_begin&|mult_end)
MIPS寄存器堆中有32个寄存器
RAM
在FPGA中,构建双口RAM可以通过两种方法,一种是利用distributed RAM构建,另一种是利用Block RAM构建.
block RAM有三种:单口RAM、伪双口RAM和真双口RAM。
1.单口RAM只有一个端口(A端口),可以对A端口进行读写。
2.伪双口RAM有两个端口(A和B端口),但是A端口只能进行写入操作,不能进行读出操作,而B端口则只能进行读出操作,不能进行写入操作。
3.真双口RAM有两个端口(A和B端口),A和B端口都能进行读写操作。