verilog数据类型

一、常量

整数 :整数可以用二进制 b B ,八进制 o O ,十进制 d D ,十六进制 h H 表示,例
如, 8’b00001111 表示 8 位位宽的二进制整数, 4’ha 表示 4 位位宽的十六进制整数。
X 和 Z X 代表不定值, z 代表高阻值,例如, 5’b00x11 ,第三位不定值, 3’b00z 表示最低位
为高阻值。
下划线 :在位数过长时可以用来分割位数,提高程序可读性,如 8’b0000_1111
参数 parameter : parameter 可以用标识符定义常量,运用时只使用标识符即可,提高可读性
及维护性,如定义 parameter width = 8 ; 定义寄存器 reg [width-1:0] a; 即定义了 8 位宽度的寄存器。
参数的传递:在一个模块中如果有定义参数,在其他模块调用此模块时可以传递参数,并可
以修改参数,如下所示,在 module 后用 # ()表示。
例如定义模块如下:                                                         
module rom
#(
parameter depth = 15 ,
parameter width = 8
(
input [ depth - 1 : 0 ] addr ,
input [ width - 1 : 0 ] data ,
output result
) ;
endmodule
调用模块
module top () ;
wire [ 31 : 0 ] addr ;
wire [ 15 : 0 ] data ;
wire result ;
rom
#(
. depth ( 32 ),
. width ( 16 )
)
r1
(
. addr ( addr ) ,
. data ( data ) ,
. result ( result )
) ;
endmodule
Parameter 可以用于模块间的参数传递,而 localparam 仅用于本模块内使用,不能用于参数
传递。 Localparam 多用于状态机状态的定义。

二、变量

变量是指程序运行时可以改变其值的量,下面主要介绍几个常用了变量类型。
1、Wire型
Wire 类型变量,也叫网络类型变量,用于结构实体之间的物理连接,如门与门之间,不能储
存值,用连续赋值语句 assign 赋值,定义为 wire [n-1:0] a ; 其中 n 代表位宽,如定义 wire a ; assign
a = b ; 是将 b 的结点连接到连线 a 上。如下图所示,两个实体之间的连线即是 wire 类型变量。
2、Reg型
Reg 类型变量,也称为寄存器变量,可用来储存值,必须在 always 语句里使用。其定义为
reg [n-1:0] a ; 表示 n 位位宽的寄存器,如 reg [7:0] a; 表示定义 8 位位宽的寄存器 a 。如下所示定
义了寄存器 q ,生成的电路为时序逻辑,右图为其结构,为 D 触发器。
module top ( d , clk , q ) ;                                    
input d ;
input clk ;
output reg q ;
always @( posedge clk )
begin
q <= d ;
end
endmodule
也可以生成组合逻辑,如数据选择器,敏感信号没有时钟,定义了 reg Mux ,最终生成电路
为组合逻辑。
module top ( a , b , c , d , sel , Mux ) ;
input a ;
input b ;
input c ;
input d ;
input [ 1 : 0 ] sel ;
output reg Mux ;
always @( sel or a or b or c or d )
begin
case ( sel )
2'b00 : Mux = a ;
2'b01 : Mux = b ;
2'b10 : Mux = c ;
2'b11 : Mux = d ;
endcase
end
endmodule
3、Memory型
可以用 memory 类型来定义 RAM,ROM 等存储器,其结构为 reg [n-1:0] 存储器名 [m-1:0] ,意义
m n 位宽度的寄存器。例如, reg [7:0] ram [255:0] 表示定义了 256 8 位寄存器, 256 也即
是存储器的深度, 8 为数据宽度。

  • 11
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值