求大神解释下关于进制相加的问题
时间:10-02
整理:3721RD
点击:
小弟新手,目前正学verilog,在学习中发现一个问题,就是不同进制的数相加的结果是什么啊?比如这样一段程序:
reg [31:0] instruction,segment_area[255:0];
reg [7:0] index;
reg [5:0] modify_seg1,modify_seg2,modify_seg3;
parameter
segment1=0, inc_seg1=1,
segment2=20, inc_seg2=2,
segment3=64, inc_seg3=4,
data=128;
if(index<segment2)
begin
instruction=segment_area[index+modify_seg1];
index=index+inc_seg1;
end
else
...
我的理解是这样的: 程序中index为一个八位的二进制数,modify_seg1为一个六位的二进制数,它们两个相加作为segment_area中的一位(也就是寻址地址),将结果赋给instruction,但是我不明白一个八位和一个六位怎么相加啊?难道是六位的前面补两个零再和八位相加?然后结果再换成十进制作为segment_area中的一位?求大神指点迷津。
reg [31:0] instruction,segment_area[255:0];
reg [7:0] index;
reg [5:0] modify_seg1,modify_seg2,modify_seg3;
parameter
segment1=0, inc_seg1=1,
segment2=20, inc_seg2=2,
segment3=64, inc_seg3=4,
data=128;
if(index<segment2)
begin
instruction=segment_area[index+modify_seg1];
index=index+inc_seg1;
end
else
...
我的理解是这样的: 程序中index为一个八位的二进制数,modify_seg1为一个六位的二进制数,它们两个相加作为segment_area中的一位(也就是寻址地址),将结果赋给instruction,但是我不明白一个八位和一个六位怎么相加啊?难道是六位的前面补两个零再和八位相加?然后结果再换成十进制作为segment_area中的一位?求大神指点迷津。
这个是语法支持的,再说也不是进制不同的数相加,只是位数不同而已,不过严谨一点的话,还是不要这么做,有些时候有些工具会不支持这种语法的;至于相加以后的结果作为数组的下标,什么进制的都可以的,尤其是传递变量进去的话
谢谢,学习了!
