typedef union {
逻辑[1:0] c3;
bit [3:0] a3;
字节b3;
} pack3;pack3 p3;
根据LRM,默认初始化是根据union的第一个成员,即上例中的逻辑,因此,c3分配给X并且rest分配给0,但是当我在ModelSim中编译并检查对象窗口时,则有a3和b3的结果不同。当我指定p3.a3 = 4' b0010时; a3和b3的值发生了变化,但没有c3。请解释一下?我知道每个变量只有可用的内存,因此任何值的更新都反映了所有。
答案 0 :(得分:1)
如果您写入解压缩联盟的一个成员并尝试阅读其他成员,则无法保证({{3}中 7.3 Unions 部分末尾提到的一项特殊规定除外) })。如果要在重叠成员的布局中保证,则需要使用压缩联合。