添加了个简单的自定义逻辑,在这个逻辑中,有个输出数据端口(dataout(15 downto 0).地址端口(address(1 downto 0)),其它略。
有如下语句:
if ((chip_select and not read)='1') and (address="00") then
dataout<="0000000000000100";
end if ;
if ((chip_select and not read )='1') and (address="01")then
dataout<="0000000000000001";
end if ;
if ((chip_select and not read)='1') and (address="10") then
dataout<="0000000000000010";
end if ;
if ((chip_select and not read)='1') and (address="11") then
dataout<="0000000010000000";
end if ;
在c程序中读:
ptr=(int *)na_my_test; // 自定义逻辑地址,在excalibur.h 中#define na_my_test ((void *) 0x2400)
c=*(ptr+0x0000);
printf("char0 %x\n",c);
c=*(ptr+0x0001);
printf("char1 %x\n",c);
a=*(ptr+0x0002);
printf("char2 %x\n",a);
b=*(ptr+0x0003);
printf("char3 %x\n",b);
输出结果与判断的地址不对应,就像下边这样:
char0 8
char1 4
char2 1
char3 2
选的是16位cpu。高不清楚怎么回事,也是刚接触这方面的知识。
请各位高人多多指点,小弟谢先!