SystemVerilog硬件设计及建模―第5章

上传人:我*** 文档编号:134469341 上传时间:2020-06-05 格式:PPT 页数:46 大小:139.50KB
返回 下载 相关 举报
SystemVerilog硬件设计及建模―第5章_第1页
第1页 / 共46页
SystemVerilog硬件设计及建模―第5章_第2页
第2页 / 共46页
SystemVerilog硬件设计及建模―第5章_第3页
第3页 / 共46页
SystemVerilog硬件设计及建模―第5章_第4页
第4页 / 共46页
SystemVerilog硬件设计及建模―第5章_第5页
第5页 / 共46页
点击查看更多>>
资源描述

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

1、第5章数组 结构体和联合体 结构体联合体结构体和联合的操作非压缩数组压缩数组数组操作数组foreach循环用于数组的特殊系统函数 5 1结构体 结构体提供了对相关信息进行分组的方法 结构体使用关键字struct声明 结构体内的成员可以是任何数据类型 包括用户自定义类型和其它的结构体类型 结构体是变量和常量的集合 整个集合可以用结构体名进行引用 也可以用结构体成员名来引用该成员 struct inta b opcode topcode logic 31 0 address biterror instruction word 结构体内的成员引用 Instruction word address 3

2、2 hf000001e 结构体与数组有什么不同 5 1 1结构体声明 变量或线网都可以定义为结构体 当结构体定义为线网时 结构体中所有成员必须都是四态类型的 varstruct logic 31 0 a b logic 7 0 opcode logic 23 0 address instruction word var wirestruct logic 31 0 a b logic 7 0 opcode logic 23 0 address instruction word net struct logic 31 0 a b logic 7 0 opcode logic 23 0 addres

3、s instruction word var Instruction word var是变量or线网类型 虽然结构体可以声明为线网类型 但结构体内成员不能使用线网类型 5 1 1结构体声明 自定义和匿名结构体 typedefstruct logic 31 0 a b logic 7 0 opcode logic 23 0 address instruction word t instruction word tIW struct logic 31 0 a b logic 7 0 opcode logic 23 0 address instruction 自定义结构体可以在模块或接口内定义 在整

4、个模块或接口中都可以使用 如果一个自定义结构体需要在多个模块中使用 或者是作为模块或接口的端口使用 那么结构体定义应放在package中 5 1 2结构体赋值 结构体初始化 用值列表方式初始化 值列表是使用 中的一组数值 大括号中的数值个数必须与成员个数一致 typedefstruct logic 31 0 a b logic 7 0 opcode logic 23 0 address instruction word t instruction word tIW 100 3 8 hff 0 大括号间的数值必须与成员个数一致 5 1 2结构体赋值 结构体成员赋值 typedefstruct l

5、ogic 31 0 a b logic 7 0 opcode logic 23 0 address instr t inst tIW always posedgeclk negedgeresetN if resetN beginIW a 100 IW b 100 IW opcode 8 hff 成员引用IW address 0 endelsebegin end 5 1 2结构体赋值 结构体成员赋值 always posedgeclk negedgeresetN if resetN IW 100 3 8 hff 0 结构体表达式赋值elsebegin end IW address 0 opcod

6、e 8 hff a 100 b 5 IW address 0 opcode 8 hff 100 5 错误 混用成员名称 和成员顺序 IW real 1 0 default 0 IW real 1 0 default 0 r1 3 14 struct realr0 r1 inti0 i1 logic 7 0 opcode logic 23 0 address IW 5 1 3压缩和非压缩结构体 默认情况下 结构体是非压缩的 也就是说 虽然结构体成员使用一个共同的名字 但它们被当作是独立的变量 压缩结构体用packed关键字显式说明 其特点是所有成员被当作一个向量存储 第一个成员在向量的最左边 最

7、后一个成员在最低位 其编号为0 structpacked logicvalid logic 7 0 tag logic 31 0 data data word 40 39 31 15 0 压缩综合体中的成员只能是包含整数类型值 即可以表示为byte int这样的向量以及用bit或logic创建的向量 5 1 3压缩和非压缩结构体 压缩结构体的操作 非压缩结构体的操作对压缩结构体一样适用 但压缩结构体还有与向量类似的操作 如算术操作 逻辑操作等 typedefstructpacked logicvalid logic 7 0 tag logic 31 0 data data word t dat

8、a word tpacket in packet out always posedgeclk packet out packet in 2 5 1 3压缩和非压缩结构体 有符号的压缩结构体 压缩结构体作为向量使用可以是有符号或无符号的 用关键字signed或unsigned来声明 但结构体中成员是有符号还是无符号的 只依赖于成员的类型声明 与结构体声明没有联系 压缩结构体的部分选择始终是无符号的 typedefstructpackedsigned logicvalid logic 7 0 tag logic 31 0 data data word t data word ta b always

9、 posedgeclk if a b 有符号比较 5 1 4通过端口传递结构体 结构体可以通过模块和接口的端口传递 packagedefinitions typedefenum ADD SUB MULT DIV opcode t typedefstruct logic 31 0 a b opcode topcode logic 23 0 address logicerror instruction word t endpackageimportdefinitions modulealu inputinstruction word tIW inputwireclk endmodule 在两个不同

10、模块中声明的匿名结构体 即使它们具有相同的名称 同样的成员及名称 也不是相同的结构体 5 1 5将结构体作为任务和函数的自变量 结构体可以作为自变量传递给任务和函数 moduleprocessor typedefenum ADD SUB MULT DIV opcode ttypedefstruct logic 31 0 a b opcode topcode logic 23 0 address logicerror instruction word t functionalu inputinstruction word tIW endfunctionendmodule 非压缩和压缩结构体都是可

11、综合的 综合工具支持结构体通过模块端口 任务和函数传递 支持使用成员名和值的列表对结构体赋值 5 2联合体 联合体只存储一个元素 但这个元素有多种表示方法 每种表示可以是不同的数据类型 联合体与结构体的声明类似 其成员引用也一样 union bytei byteunsignedu data data i 5 display datais d data i data u 5 display nowdatais d data u typedefunion inti intunsignedu data t data ta b 用户自定义和匿名联合体 区别在于是不是用typedef声明 5 2 1非压

12、缩联合体 非压缩联合体可以包含任意变量类型 如real类型 非压缩结构体和非压缩数组等 非压缩联合体不可综合 可用于对高层次系统和交易级建模 如果从非压缩联合体中读取的成员不同于上次写入的成员 可能导致不确定的结果 struct bitis real union inti realr value data always posedgewrite begincase operation type INT OP begindata value i 5 data value r 0 endFP OP begindata value r 3 1415 data is real 1 endendcase

13、end always posedgereal beginif data is real real opd data value r elseint opd data value i end 5 2 2标签联合体 标签联合体包含一个存储 标签 的隐含成员 代表存储数值的最后一个联合体成员的名称 使用标签表达式可以将一个值写入标签联合体中 标签表达式具有关键字tagged 后面是成员名 再后面是要存储的值 标签联合体检测联合体使用是否一致 使用标签表达式将值赋给标签联合体后 可以使用成员名将值写取联合体成员中 如果指定的成员名与当前标签不匹配 将会产生错误 uniontagged inti rea

14、lr data data taggedi5 在data i中存5 并设备隐含标签d out data i 从联合体中读值d out data r 错误 成员与联合的隐含标签不匹配data i 7 写到联合体成员中data r 3 14 5 2 3压缩联合体 压缩联合体声明方式与压缩结构体声明方式相同 在压缩联合体中 每个联合体成员的位数都必须是相同的 以保证压缩联合体使用同样的位数存储数据 压缩联合体只能存储两态或四态类型的数据 因此 压缩联合体不能包含real或shortreal变量 或非压缩结构体 非压缩联合体 非压缩数组 压缩联合体允许数据以一种格式写入 而以另一种格式读取 typede

15、fstructpacked logic 15 0 src addr logic 15 0 dest addr logic 23 0 data logic 7 0 opcode data packed t unionpacked data packet tpacket logic 7 0 7 0 bytes 压缩数组 dreg 5 2 3压缩联合体 always posedgeclk negedgeresetn if resetn begindreg packet 0 k 0 endelseif load data begindreg bytes k byte in k k 1 endalway

16、s posedgeclk if data ready case dreg packet opcode 63 47 31 7 0 63 47 31 15 0 55 39 23 7 5 2 3压缩联合体 压缩的标签联合体 联合体可以声明为既是压缩的又是带标签的 此时联合体成员的位宽可以不同但还必须是两态或四态类型 压缩的标签联合体只允许从与上一个标签表达式写入到联合体中的成员相匹配的同一个成员中读值 uniontaggedpacked logic 15 0 short word logic 31 0 word logic 63 0 long word data word data word taggedword 1 5 2 4综合指导 不管联合体有多少种数据类型表示方式 联合体只存储一个值 为了能够综合 首先要保证联合体中的成员数据类型为两态或四态的 其次是成员能以相同的位数存储 压缩联合体满足这种要求 因而 压缩联合体是可以综合的 5 2 5使用结构体和联合体举例 建立一个可以进行有符号数和无符号数运算的ALU模型 两种计算不能同时进行 packagedefinitions typede

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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