SystemVerilog硬件设计及建模第5章

上传人:壹****1 文档编号:571600350 上传时间:2024-08-11 格式:PPT 页数:47 大小:174.50KB
返回 下载 相关 举报
SystemVerilog硬件设计及建模第5章_第1页
第1页 / 共47页
SystemVerilog硬件设计及建模第5章_第2页
第2页 / 共47页
SystemVerilog硬件设计及建模第5章_第3页
第3页 / 共47页
SystemVerilog硬件设计及建模第5章_第4页
第4页 / 共47页
SystemVerilog硬件设计及建模第5章_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《SystemVerilog硬件设计及建模第5章》由会员分享,可在线阅读,更多相关《SystemVerilog硬件设计及建模第5章(47页珍藏版)》请在金锄头文库上搜索。

1、SystemVerilogSystemVerilog硬件设计硬件设计及建模及建模第第5 5章章HMECMicroElectronics Center5.1 结构体结构体提供了对相关信息进行分组的方法,结构体使用关键字struct声明,结构体内的成员可以是任何数据类型,包括用户自定义类型和其它的结构体类型;结构体是变量和常量的集合,整个集合可以用结构体名进行引用,也可以用结构体成员名来引用该成员。struct int a, b; opcode_t opcode; logic 31 : 0 address; bit error; instruction_word;结构体内的成员引用:Instruc

2、tion_word.address = 32hf000001e;结构体与数组有什么不同?HMECMicroElectronics Center5.1.1 结构体声明变量或线网都可以定义为结构体,当结构体定义为线网时,结构体中所有成员必须都是四态类型的。var struct logic 31 : 0 a, b; logic 7 : 0 opcode; logic 23 : 0 address; instruction_word_var;wire struct logic 31 : 0 a, b; logic 7 : 0 opcode; logic 23 : 0 address; instruct

3、ion_word_net;struct logic 31 : 0 a, b; logic 7 : 0 opcode; logic 23 : 0 address; instruction_word_var;Instruction_word_var是变量or线网类型?虽然结构体可以声明为线网类型,但结构体内成员不能使用线网类型!HMECMicroElectronics Center5.1.1 结构体声明自定义和匿名结构体:typedef struct logic 31 : 0 a, b; logic 7 : 0 opcode; logic 23 : 0 address; instruction_w

4、ord_t;instruction_word_t IW;struct logic 31 : 0 a, b; logic 7 : 0 opcode; logic 23 : 0 address; instruction;自定义结构体可以在模块或接口内定义,在整个模块或接口中都可以使用,如果一个自定义结构体需要在多个模块中使用,或者是作为模块或接口的端口使用,那么结构体定义应放在package中!HMECMicroElectronics Center5.1.2 结构体赋值结构体初始化:用值列表方式初始化,值列表是使用中的一组数值,大括号中的数值个数必须与成员个数一致。typedef struct l

5、ogic 31 : 0 a, b; logic 7 : 0 opcode; logic 23 : 0 address; instruction_word_t;instruction_word_t IW = 100, 3, 8hff, 0; /大括号间的数值必须与成员个数一致HMECMicroElectronics Center5.1.2 结构体赋值结构体成员赋值:typedef struct logic 31 : 0 a, b; logic 7 : 0 opcode; logic 23 : 0 address; instr_t;inst_t IW;always (posedge clk, ne

6、gedge resetN) if (!resetN) begin IW.a = 100; IW.b = 100; IW.opcode = 8hff; /成员引用 IW.address = 0; end else begin endHMECMicroElectronics Center5.1.2 结构体赋值结构体成员赋值:always (posedge clk, negedge resetN) if (!resetN) IW = 100, 3, 8hff, 0; /结构体表达式赋值 else begin end/ IW = address : 0, opcode : 8hff, a : 100,

7、 b : 5;/ IW = address : 0, opcode : 8hff, 100, 5; /错误,混用成员名称 /和成员顺序IW = real : 1.0, default : 0;IW = real : 1.0, default : 0, r1 : 3.14;struct real r0, r1; int i0, i1; logic 7 : 0 opcode; logic 23 : 0 address; IW;HMECMicroElectronics Center5.1.3 压缩和非压缩结构体默认情况下,结构体是非压缩的,也就是说,虽然结构体成员使用一个共同的名字,但它们被当作是独

8、立的变量,压缩结构体用packed关键字显式说明,其特点是所有成员被当作一个向量存储,第一个成员在向量的最左边,最后一个成员在最低位,其编号为0 struct packed logic valid; logic 7 : 0 tag; logic 31 : 0 data; data_word; valid tag data403931150压缩综合体中的成员只能是包含整数类型值:即可以表示为byte, int这样的向量 以及用bit或logic创建的向量!HMECMicroElectronics Center5.1.3 压缩和非压缩结构体压缩结构体的操作:非压缩结构体的操作对压缩结构体一样适用,

9、但压缩结构体还有与向量类似的操作,如算术操作、逻辑操作等 typedef struct packed logic valid; logic 7 : 0 tag; logic 31 : 0 data; data_word_t; data_word_t packet_in, packet_out; always (posedge clk) packet_out = packet_in 2;HMECMicroElectronics Center5.1.3 压缩和非压缩结构体有符号的压缩结构体:压缩结构体作为向量使用可以是有符号或无符号的,用关键字signed或unsigned来声明,但结构体中成员是

10、有符号还是无符号的,只依赖于成员的类型声明,与结构体声明没有联系。压缩结构体的部分选择始终是无符号的。 typedef struct packed signed logic valid; logic 7 : 0 tag; logic 31 : 0 data; data_word_t; data_word_t a, b; always (posedge clk) if (a b) /有符号比较 HMECMicroElectronics Center5.1.4 通过端口传递结构体结构体可以通过模块和接口的端口传递 package definitions; typedef enum ADD, SUB

11、, MULT, DIV opcode_t; typedef struct logic 31 : 0 a, b; opcode_t opcode; logic 23 : 0 address; logic error; instruction_word_t; endpackage import definitions : *; module alu (input instruction_word_t IW, input wire clk); endmodule在两个不同模块中声明的匿名结构体,即使它们具有相同的名称、同样的成员及名称,也不是相同的结构体!HMECMicroElectronics C

12、enter5.1.5 将结构体作为任务和函数的自变量结构体可以作为自变量传递给任务和函数 module processor (); typedef enum ADD, SUB, MULT, DIV opcode_t typedef struct logic 31 : 0 a, b; opcode_t opcode; logic 23 : 0 address; logic error; instruction_word_t; function alu (input instruction_word_t IW); endfunction endmodule非压缩和压缩结构体都是可综合的,综合工具支

13、持结构体通过模块端口、任务和函数传递,支持使用成员名和值的列表对结构体赋值!HMECMicroElectronics Center5.2 联合体联合体只存储一个元素,但这个元素有多种表示方法,每种表示可以是不同的数据类型。联合体与结构体的声明类似,其成员引用也一样union byte i; byte unsigned u; data;data.i = -5;$display(“data is %d”, data.i);data.u = -5;$display(“now data is %d”, data.u);typedef union int i; int unsigned u; data_

14、t;data_t a, b;用户自定义和匿名联合体:区别在于是不是用typedef声明HMECMicroElectronics Center5.2.1 非压缩联合体非压缩联合体可以包含任意变量类型,如real类型,非压缩结构体和非压缩数组等;非压缩联合体不可综合,可用于对高层次系统和交易级建模;如果从非压缩联合体中读取的成员不同于上次写入的成员,可能导致不确定的结果!struct bit is_real; union int i; real r; value; data;/always (posedge write) begin case(operation_type) INT_OP : be

15、gin data.value.i = 5; data.value.r = 0; end FP_OP : begin data.value.r = 3.1415; data.is_real = 1; end endcaseendalways (posedge real) begin if (data.is_real) real_opd = data.value.r; else int_opd = data.value.i;endHMECMicroElectronics Center5.2.2 标签联合体标签联合体包含一个存储“标签”的隐含成员,代表存储数值的最后一个联合体成员的名称,使用标签表达

16、式可以将一个值写入标签联合体中,标签表达式具有关键字tagged,后面是成员名,再后面是要存储的值;标签联合体检测联合体使用是否一致;使用标签表达式将值赋给标签联合体后,可以使用成员名将值写取联合体成员中,如果指定的成员名与当前标签不匹配,将会产生错误。union tagged int i; real r; data; data = tagged i 5; /在data.i中存5,并设备隐含标签 d_out = data.i; /从联合体中读值 d_out = data.r; /错误:成员与联合的隐含标签不匹配 data.i = 7; /写到联合体成员中 data.r = 3.14; /?HM

17、ECMicroElectronics Center5.2.3 压缩联合体压缩联合体声明方式与压缩结构体声明方式相同,在压缩联合体中,每个联合体成员的位数都必须是相同的,以保证压缩联合体使用同样的位数存储数据;压缩联合体只能存储两态或四态类型的数据,因此,压缩联合体不能包含real或shortreal变量,或非压缩结构体、非压缩联合体、非压缩数组;压缩联合体允许数据以一种格式写入,而以另一种格式读取。 typedef struct packed logic 15 : 0 src_addr; logic 15 : 0dest_addr; logic 23 : 0 data; logic 7 : 0

18、 opcode; data_packed_t; union packed data_packet_t packet; logic 7 : 07 :0 bytes; /压缩数组 dreg;HMECMicroElectronics Center5.2.3 压缩联合体 always (posedge clk, negedge resetn) if (!resetn) begin dreg.packet = 0; k = 0; end else if (load_data) begin dreg.bytesk = byte_in; k = k + 1; end always (posedge clk)

19、 if (data_ready) case (dreg.packet.opcode) src_addrdest_addrdataopcodebyte7byte6byte5byte4byte3byte2byte1byte0634731706347311505539237HMECMicroElectronics Center5.2.3 压缩联合体压缩的标签联合体:联合体可以声明为既是压缩的又是带标签的,此时联合体成员的位宽可以不同但还必须是两态或四态类型;压缩的标签联合体只允许从与上一个标签表达式写入到联合体中的成员相匹配的同一个成员中读值。 union tagged packed logic 1

20、5 : 0 short_word; logic 31 : 0 word; logic 63 : 0 long_word; data_word; data_word = tagged word 1;HMECMicroElectronics Center5.2.4 综合指导不管联合体有多少种数据类型表示方式,联合体只存储一个值,为了能够综合,首先要保证联合体中的成员数据类型为两态或四态的,其次是成员能以相同的位数存储,压缩联合体满足这种要求,因而,压缩联合体是可以综合的。HMECMicroElectronics Center5.2.5 使用结构体和联合体举例建立一个可以进行有符号数和无符号数运算的

21、ALU模型,两种计算不能同时进行。package definitions; typedef enum ADD, SUB, MULT, DIV, SL, SR) opcode_t; typedef enum UNSIGNED, SIGNED operand_type_t; typedef union packed logic 31 : 0 u_data; logic signed 31 : 0 s_data; data_t; type struct packet opcode_t opc; operand_type_t op_type; data_t op_a; data_t op_b; ins

22、tr_t;endpackageHMECMicroElectronics Center5.2.5 使用结构体和联合体举例import definitions : *;module alu (input instr_t IW; output data_t alu_out); always (IW) begin if (IW.op_type = SIGNED) begin case (IW.opc) ADD : alu_out.s_data = IW.op_a.s_data + IW.op_b.s_data; SUB : alu_out.s_data = IW.op_a.s_data - IW.op

23、_b.s_data; MULT : alu_out.s_data = IW.op_a.s_data * IW.op_b.s_data; DIV : alu_out.s_data = IW.op_a.s_data / IW.op_b.s_data; SL : alu_out.s_data = IW.op_a.s_data 2; endcase endHMECMicroElectronics Center5.2.5 使用结构体和联合体举例 else begin case (IW.opc) ADD : alu_out.u_data = IW.op_a.u_data + IW.op_b.u_data;

24、 SUB : alu_out.u_data = IW.op_a.u_data - IW.op_b.u_data; MULT : alu_out.u_data = IW.op_a.u_data * IW.op_b.u_data; DIV : alu_out.u_data = IW.op_a.u_data / IW.op_b.u_data; SL : alu_out.u_data = IW.op_a.u_data 2; endcase end endendmoduleHMECMicroElectronics Center5.3 数组Verilog-1995只允许声明一维的reg, integer和

25、time数据类型的数组;Verilog-2001允许除了event类型外的所有变量或线网类型都可以用于数组声明,且允许声明多维数组;SystemVerilog允许任何数据类型用于声明数组,包括使用struct、enum以及用户自定义类型HMECMicroElectronics Center5.3.1 非压缩数组/1024个1位线网的一维非压缩数组wire n 0 : 1023;/256个8位变量的一维非压缩数组reg 7 : 0 lut 0 : 255;/1024个实数变量的一维非压缩数组real r 0 : 1024;/32位的整数变量的三维非压缩数组 integer i 7 : 0 3 :

26、 0 7 : 0;wire 7 : 0 table 3 : 0; /如何存储?非压缩数组中各个数组元素是独立存储的!Verilog一次访问多个数组元素是错误的!HMECMicroElectronics Center5.3.1 非压缩数组SystemVerilog支持的非压缩数组:bit 63 : 0 d_array 1 : 128; /向量数组shortreal cosines 0 : 89; /浮点数组typedef enum Mo, Tu, We, Th, Fr, Sa, Su Week_t;Week_t year 1 : 52; /自定义数组SystemVerilog可以引用整个数组或其

27、中的一段元素,因此允许将整个数组或者数组特定维的内容复制到另一个数组,其限制是等号两边的数组必须有相同的维数、位数和类型。int a1 7 : 0 1023 : 0;int a2 1 : 8 1 : 1024;a2 = a1; /复制整个数组a23 = a10; /复制一段HMECMicroElectronics Center5.3.2 压缩数组Verilog中的向量就是一维压缩数组:wire 3 : 0 a; /4位压缩数组reg 63 : 0 data; /64位压缩数组SystemVerilog可以声明多维压缩数组:logic 3 : 0 7 : 0 data; /2维压缩数组压缩数组存

28、储:无间隙存储,与编译器、OS及硬件平台无关data37:0data27:0data17:0data07:031231580HMECMicroElectronics Center5.3.2 压缩数组压缩数组元素只能是位形式的数据类型:包括logic, bit, reg,其它压缩数组,压缩结构体及压缩联合体。typedef struct packed logic 7 : 0 crc; logic 3 : 0 data; data_word_t;data_word_t 7 : 0 dataarray; 压缩数组引用:压缩数组可以作为整体、位选择或部分选择引用。logic 3 : 0 7 : 0 d

29、ata;wire 31 : 0 a = data;wire sign = data37;wire 3 : 0 nib = data03:0;byte high_byte;assign high_byte = data3;logic 15 : 0 word;assign word = data1:0;/assign word = data1:0 2;HMECMicroElectronics Center5.3.4 数组声明时的初始化压缩数组初始化:与向量一样,可以在声明时用简单赋值进行初始化,赋值可以是常数、常数的拼接或常数的复制。logic 3 : 07 : 0 a = 32h0;logic

30、3 : 07 : 0 b = 16hz, 16h0; /拼接操作符logic 3 : 07 : 0 c = 162b01; /复制操作符 非压缩数组初始化:在声明时用内的值序列进行初始化,作为左定界符表明里面是表达式列表,而不是verilog表达式的拼接,括号的套数与数组的维数一致。int d1 0 : 10 : 3 = 7, 3, 0, 5, 2, 0, 1, 6;intd2 0 : 10 : 3 = 27, 3, 0, 5; /复制,复制操作符前无与verilog中的拼接和复制操作符不同,拼接和复制要求指定文本值的位数,因而未指定位数的数值和实数不允许在这些操作符中!HMECMicroEl

31、ectronics Center5.3.4 数组声明时的初始化为非压缩数组指定默认值:SystemVerilog可以通过指定一个默认值初始化非压缩数组的所有元素或一段元素,默认值在在使用关键字default指定,或者使用数据类型关键字,以初始化结构或联合类型的数组元素中相应成员的值。int a1 0 : 70 : 1023 = default : 8h55;typedef struct logic 3 : 0 opc; int k; real r; data_t;data_t data 0 : 7 = default : 0, real : 3.14;HMECMicroElectronics

32、Center5.3.5 数组赋值非压缩数组赋值: 给一个元素赋值 给一个元素的1位或部分位赋值 用一个值序列给整个数组赋值 用一个值序列给数组的一段赋值。byte a 0 :30 : 3;a10 = 8h5;a = 0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0;a3 = hf, ha, hc, he;a = default : 0; /整个数组赋值a0 = default : 4; /数组一段赋值HMECMicroElectronics Center5.3.5 数组赋值压缩数组赋值:压缩数组是向量,可以象verilog向量一样赋值 数组一个元素

33、整个数组(向量) 数组的一部分 数组的一段(多个相邻的子域)logic 1 :01 : 07 : 0 a;a110 = 1b0;a = 32hf1a3c5e7;a103:0 = 4hf;a0 = 16hface;a = 16hz, 16b0; /拼接赋值非压缩数组与压缩数组赋值有什么不同?!HMECMicroElectronics Center5.3.6 数组复制压缩数组到压缩数组的复制:一个压缩数组可以直接赋给另一个压缩数组,且数组的类型和宽度可以不同,按向量操作进行扩展或截断bit 1 : 0 15 : 0 a;logic 3 : 07 : 0 b;logic 15 : 0 c;logic

34、 39 : 0 d;b = a; /32位数组赋给32位数组c = a; /a的高16位被忽略d = a; /d的高8位填0HMECMicroElectronics Center5.3.6 数组复制非压缩数组到非压缩数组的复制:两个具有相同维数、元素位数和类型的非压缩数组可以直接赋值,两个数组中元素编号不必相同,但数组的结构和类型必须完全匹配;不同结构的非压缩数组间的赋值需要经过转换实现。logic 31 : 0 a 2 : 09 : 0;logic 0 : 31 b 1 : 31 : 10;b = a; /非压缩数组间赋值非压缩数组到压缩数组,压缩数组到非压缩数组间的复制需要经过转换才能实现

35、!HMECMicroElectronics Center5.3.7 使用位流转换复制数组和结构体位流转换将非压缩数组临时地转换成向量形式的位流,该临时向量可以赋值给其它数组。源数组和目标数组的每个元素的宽度可以不同,但数组的总位数必须相同。位流转换机制主要用于以下情况: 把非压缩数组赋值给不同结构的非压缩数组 把非压缩数组赋值给压缩数组 把结构体赋值给压缩数组或非压缩数组 把定宽或动态宽度的数组赋值给动态宽度数组 把结构体赋值给另一个不同结构的结构体位流转换使用SystemVerilog静态转换操作符,转换需要至少目标数组是用typedef表示的自定义类型!typedef int data_t

36、 3 : 0 7 : 0;data_t a;int b1 : 03 : 03 : 0;a = data_t(b); /将非压缩数组赋给不同结构的非压缩数组HMECMicroElectronics Center5.3.8 由数组构成的数组数组可以是压缩和非压缩的混合维度。logic 63 : 0 men 0 : 4095; /一个由64位压缩数组组成的非压缩数组logic 3 : 07 : 0 data 0 : 1023 /由32位元素组成的非压缩数组,每个 /元素是由4个字节组成的压缩数组数组的索引:非压缩维度的索引先于压缩维度,且按从左到右次序。logic 3 : 07 : 0 mi_arr

37、ay 0 : 70 : 70 : 7; mi_array 0 1 2 3 4 = 1b1;HMECMicroElectronics Center5.3.9 数组中使用用户自定义类型数组元素可以是用户自定义类型,用于数组元素类型声明的用户自定义类型也可以是数组。typedef int unsigned uint_t;uint_t u_array 0 : 127; /用户自类型组成的数组typedef logic 3 : 0 nibble_t;nibble_t 31 : 0 big_word; /压缩数组/logic 31 : 0 3 : 0 big_word;typedef logic 3 :

38、0 nibble_t; typedef nibble_t nib_array_t 0 : 3;nib_array_t compound_array 0 : 7; /logic 3 : 0 compound_array 0 : 70 : 3;HMECMicroElectronics Center5.3.10 数组通过端口、任务与函数传递Verilog允许压缩数组通过模块端口、任务与函数传递,SystemVerilog允许任何类型及任意维数的数组通过端口、任务与函数传递,但要求端口、任务与函数的自变量说明为数组,传送的规则与数组赋值给其它数组的规则相同。module cpu(); logic 7

39、: 0 lookup_table 0 : 255; lookup i1(.lut(lookup_table); endmodulemodule lookup (output bit 7 : 0 lut 0 : 255); initial load(lut); task load (inout logic 7 : 0 t 0 : 255; endtaskendmoduleHMECMicroElectronics Center5.3.10 结构体、联合体与数组压缩与非压缩数组的元素可以是结构体或联合体,在压缩数组中,结构体或联合体也必须是压缩的;结构体或联合体中也可以包含压缩或非压缩数组,压缩的结

40、构体或联合体也只能包含压缩数组typedef struct packed logic 31 : 0 a; logic 7 : 0 b; packet_t;packet_t 23 : 0 packet_array;typedef struct int a; real b; data_t;data_t data_array 31 : 0;struct packed logic parity; logic 3 : 07 : 0 data; data_word;struct logic data_ready; logic 7 : 0 data 3 : 0; packet;HMECMicroElectr

41、onics Center5.3.13 综合指导数组及数组的赋值都是可综合的! 数组声明 数组赋值 数组复制 结构体或联合体中数组 数组中的结构体或联合体(结构体或联合体须为用户自定义类型) 数组传递前提:基值为四态或两态!HMECMicroElectronics Center5.3.14 数组应用实例/ 指令寄存器模型:package definitions; typedef enum ADD, SUB, MULT, DIV, SL, SR opcode_t; typedef enum UNSIGNED, SIGNED operand_type_t; typedef union packed

42、logic 31 : 0 u_data; logic signed 31 : 0 s_data; data_t; typedef struct packed opcode_t opc; operand_type_t op_type; data_t op_a; data_t op_b; instr_t;endpackage;HMECMicroElectronics Center5.3.14 数组应用实例import definitions : *;module instr_register( output instr_t 0 : 31 instr_reg, input data_t operan

43、d_a; input data_t operand_b; input operand_type_t op_type; input opcode_t opcode; input logic 4 : 0 wp); always (wp) begin instr_regwp.op_type = op_type; instr_regwp.opc = opcode; if (op_type = SIGNED) begin instr_regwp.op_a.s_data = operand_a.s_data; instr_regwp.op_a.s_data = operand_a.s_data; end

44、else begin end endendmoduleHMECMicroElectronics Center5. 4 foreach循环foreach循环可以遍历任何维数的数组,foreach循环的自变量是数组名,它后面是方括号内用逗号分隔的循环变量列表,循环变量不需声明,每个循环变量对应一个维度,多循环变量创建嵌套循环来对给定索引进行迭代,外循环对应低基数索引。foreach循环变量可以省略,如果省略了某个维数的循环变量,则表明该维度不会进行迭代!int sum 1 : 8 1 : 3;foreach (sumi, j) sumij = i + j;/为一个128位向量产生校验位,向量被分成

45、16个8位元素组成的二维/数组,只指定了一个循环变量,省略了一个一个逗号!function 15 : 0 gen_crc ( logic 15 : 0 7 : 0 d); foreach (gen_crci) /只指定了15 : 0维度 gen_crci = di; HMECMicroElectronics Center5. 5 用于数组查询的系统函数SystemVerilog增加了一些用于数组的特殊系统函数,这些函数可以用来编写测试程序,也可以用于抽象建模。$dimensions(array_name); /返回数组维数,如果对象非数组,返回0$left(array_name, dimens

46、ion); /返回指定维度的最高有效位(msb)$right(array_name, dimension); /返回指定维度的最低有效位(lsb)$low(array_name, dimension); /返回指定维度的最低位,可能是 /msb,也可能是lsb$high(array_name, dimension);$size(array_name, dimension); /返回指定维度元素的个数$increment(array_name, dimension); /对指定的维度,如果$left 大于 / $right,则返回1,否则返回-1HMECMicroElectronics Cent

47、er5. 5 用于数组查询的系统函数logic1 : 2 7 : 0 word 0 : 3 4 : 1;$dimensions(word); /$left(word, 1); /$left(word, 2); /$left(word, 3); /$left(word, 4); /$right(word, 2); /$low(word, 1); /$low(word, 2); /$high(word, 4);$size(word, 4); /$increment(word, 1); /HMECMicroElectronics Center5. 6 $bits位宽系统函数$bits系统函数可以返回

48、任意表达式的位数,表达式可以包含任意类型的值,包括压缩或非压缩数组、结构体、联合体和文本值。$bits(expression);bit 63 : 0 a;logic 63 : 0 b;wire 3 : 07 : 0 c 0 : 15;struct packed byte tag; logic 31 : 0 addr; d;$bits(a); /64$bits(b); /64$bits(c); /512$bits(d); /40$bits(a + b); /128HMECMicroElectronics Center5. 8 小结结构体:将多个变量封装在一个对象中,结构体可以整体引用,也可通过成员名称引用其成员,结构体可以是压缩的,从而可以将结构体作为向量使用。联合体:提供了一种在同一块存储空间表示不同变量数据类型的抽象方法。数组:扩充了多维数组及其操作,数组可以整个赋值,也可以一个元素或一段数组元素赋值,有新的数组查询系统函数,快速确定数组的特性。结束结束

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号