Verilog 和System Verilog(选)

一、let语句let是看起来与带有参数的宏定义编译指令('define)类似,但是let语句有作用域,而带参数的’define是全局有效的。在定义带参数的表达式时,应尽量使用let语句。如:let max(a,b) = a>b?a:b; logic signed [15:0] a,b,c; …… c = max(a,b);二、结构与联合1.结构结构是多个变量的集合,可以作为整体引用,也可引用其中的单个成员。结构分为不紧凑的(unpacked)和紧凑的(packed),默认为不紧凑。
摘要由CSDN通过智能技术生成

一、let语句

let是看起来与带有参数的宏定义编译指令('define)类似,但是let语句有作用域,而带参数的’define是全局有效的。在定义带参数的表达式时,应尽量使用let语句。
如:

let max(a,b) = a>b?a:b;
	logic signed [15:0] a,b,c;
	……
	c = max(a,b);

二、结构与联合

1.结构

结构是多个变量的集合,可以作为整体引用,也可引用其中的单个成员。结构分为不紧凑的(unpacked)紧凑的(packed),默认为不紧凑。不紧凑的结构可以包含任意数据类型,成员之间可能会因为要对齐到整字节而出现间隙。具体对齐方式标准中没有定义,取决于编译器,因而不能整体当作简单类型参与相关运算。而对齐的结构的内部成员之间没有位间隙,整体可以理解为一个多位数据,先定义的成员位于高位,可以整体参与算术逻辑运算,可以指定有无符号

结构类型 所包含数据类型 间隙 是否能作为整体进行运算
不紧凑(unpacked)(默认) 任意
紧凑(packed) 相同

与C语言相同,也可以使用"typedef"关键字为结构类型命名,如:

//定义一个紧凑有符号型的结构
typedef struct packed signed{
   
	logic signed [15:0] re;
	logic signed [15:0] im;
} Cplx;
Cplx c0,c1;			//定义了两个Cplx类型的变量c0和c1
wire Cplx c2 = c0;	//定义了一个Cplx类型的线网并与c0相连接

结构既可以整体引用或赋值,也可以使用成员运算符“.”选取内部成员引用或赋值。
对结构整体的赋值可以使用结构常数,一般形式为:

'{成员值1,成员值2,……}

示例如下:

logic signed [15:0] a=16'sd3001;
logic signed [15:0] b=-16'sd8778;
wire Cplx c4 = '{
   a,b};				//c4 = {3001,-8778}

成员访问示例

c0.re = 16'sd3001;	//c0 = {3001,x}
c0.im = b;			<
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值