Forum Discussion
Altera_Forum
Honored Contributor
13 years agoHi again,
I just modified code vhdl ( add 1 when calculating address to read ram_content)
if(read='1') then
--- readdata <= RAM_CONTENT(conv_integer(address));
readdata <= RAM_CONTENT(conv_integer(address)+1); -- add 1
end if;
then i ran this code in NIOS:
# include <stdio.h>
# include <io.h>
# include "system.h"
int main()
{
int i;
printf("Hello from Nios II!\n");
printf("refill content of RAM\n");
for(i=0; i<16; i++)
IOWR_8DIRECT(PIXELS_BUFFER_0_BASE, i, i);
printf("check wrote content\n");
for(i=0; i<16; i++)
{
char x = IORD_8DIRECT(PIXELS_BUFFER_0_BASE, i);
printf("Addr: %i\t%i\t", i, x);
if(x!=i) printf(" <= ERROR\n");
else printf("\n");
}
printf(" check again\n");
for(i=0; i<16; i++)
{
char x = IORD_8DIRECT(PIXELS_BUFFER_0_BASE, i);
printf("Addr: %i\t%i\t", i, x);
if(x!=i) printf(" <= ERROR\n");
else printf("\n");
}
printf("refill content but with new data\n");
for(i=0; i<16; i++)
IOWR_8DIRECT(PIXELS_BUFFER_0_BASE, i, 15-i); // add 0: 15 , add 1:14 ...
printf("check wrote content\n");
for(i=0; i<16; i++)
{
char x = IORD_8DIRECT(PIXELS_BUFFER_0_BASE, i);
printf("Addr: %i\t%i\t", i, x);
if(x!=15-i) printf(" <= ERROR\n");
else printf("\n");
}
printf("check again\n");
for(i=0; i<16; i++)
{
char x = IORD_8DIRECT(PIXELS_BUFFER_0_BASE, i);
printf("Addr: %i\t%i\t", i, x);
if(x!=15-i) printf(" <= ERROR\n");
else printf("\n");
}
return 0;
}
I received new result, something still wrong, but in special case, as u see below:
Hello from Nios II!
refill content of RAM
check wrote content
Addr: 0 15 <= ERROR
Addr: 1 1
Addr: 2 2
Addr: 3 3
Addr: 4 4
Addr: 5 5
Addr: 6 6
Addr: 7 7
Addr: 8 8
Addr: 9 9
Addr: 10 10
Addr: 11 11
Addr: 12 12
Addr: 13 13
Addr: 14 14
Addr: 15 15
check again
Addr: 0 0
Addr: 1 1
Addr: 2 2
Addr: 3 3
Addr: 4 4
Addr: 5 5
Addr: 6 6
Addr: 7 7
Addr: 8 8
Addr: 9 9
Addr: 10 10
Addr: 11 11
Addr: 12 12
Addr: 13 13
Addr: 14 14
Addr: 15 15
refill content but with new data
check wrote content
Addr: 0 0 <= ERROR
Addr: 1 14
Addr: 2 13
Addr: 3 12
Addr: 4 11
Addr: 5 10
Addr: 6 9
Addr: 7 8
Addr: 8 7
Addr: 9 6
Addr: 10 5
Addr: 11 4
Addr: 12 3
Addr: 13 2
Addr: 14 1
Addr: 15 0
check again
Addr: 0 15
Addr: 1 14
Addr: 2 13
Addr: 3 12
Addr: 4 11
Addr: 5 10
Addr: 6 9
Addr: 7 8
Addr: 8 7
Addr: 9 6
Addr: 10 5
Addr: 11 4
Addr: 12 3
Addr: 13 2
Addr: 14 1
Addr: 15 0
I still dont known what happened. When i rewrite data at offset 0, then first read bring me wrong number, but in the 2nd, it became right number. hix, could anybody explain that for me? Thanks!