FPGA Intellectual Property
PCI Express*, Networking and Connectivity, Memory Interfaces, DSP IP, and Video IP
6343 Discussions

[TSE] how have the datas from fifo tse ?

Altera_Forum
Honored Contributor II
1,810 Views

Hi, 

I need some help about triple speed ethernet (tse) to receive and transmit datas. 

I have paid for IP-TRIETHERNET + IP-NIOS + IP-TCPIP-NIOS. 

The altera support and commercial contact told me that I need only this pack to do the gigabit... 

I add gigabit to our board. We need 10/100 and 1G in ethernet. 

We use the marvel 88E1111 like phy and cyclone II (stratix III too on other board). 

We connect the phy marvell with altera in mii / gmii mode. 

I have a nios II with the tse module. 

With the advise of altera support, I do my sopc project with the "Triple Speed Ethernet Data Path Rference Design" 

aka AN483. 

But with this exemple , I can't send my own datas or receive and display the datas that I receive. 

The module "eth_gene" can send only random datas or incremental datas and "eth_moni" can count the bytes received  

and mentionned if packets with error or not. 

I don't understand why we need other module to have the datas or to send our own messages because I paid for doing  

all in gigabit. 

If I want to use the "simple socket server " exemple code, I need to use the "sgdma" module but it is not free. 

(see in ug_ethernet.pdf 6.2) 

And why didn't tell me that I need other thing to use my tse pack ? 

So, is the sgdma module important ? necessary ? or can I create my own module to use the streaming  

(in and out) from my tse module in the nios. 

Our board must send any datas that we want and receive any datas on ethernet. 

How can I access to the datas in the fifo of the triple speed ethernet module ? 

I need help about this and it's very urgent. 

Thanks  

Cordialy, 

Benoît 

 

Edit : 

my .qar file ici (http://exterminabur.free.fr/etep608a_dtd_ben.qar)
0 Kudos
33 Replies
Altera_Forum
Honored Contributor II
542 Views

You should be able to use the simple socket server example. 

You are right, sgdma module is required for tse connection to nios, but actually it is free, included in sopc builder standard components. 

This is true for Cyclone III, but afaik for Cyclone II and Stratix, too. 

 

Cris
0 Kudos
Altera_Forum
Honored Contributor II
542 Views

 

--- Quote Start ---  

You should be able to use the simple socket server example. 

You are right, sgdma module is required for tse connection to nios, but actually it is free, included in sopc builder standard components. 

This is true for Cyclone III, but afaik for Cyclone II and Stratix, too. 

 

Cris 

--- Quote End ---  

 

Hi Cris, 

 

thanks for information for sgdma module 

 

I find it. 

 

Now I try to configure it to add to my sopc  

 

For the example, I think I must add the "mdio" in the tse module ,doesn't you ? 

 

Edit: I must add two "sgdma" module for each streaming from tse module ?
0 Kudos
Altera_Forum
Honored Contributor II
542 Views

Hi, 

 

You usually always need to include mdio interface in order to configure your phy run time. Otherwise you are forced to use a few standard configurations, selected by pulling up/down some phy strap pins during reset. 

 

Regarding sopc builder connections, you need both a tx sgdma and a rx sgdma for a single tse module. 

 

Cris
0 Kudos
Altera_Forum
Honored Contributor II
542 Views

Thanks again for your help. 

 

Ok for the mdio/mdc (before I use pio like sda/scl with success). 

 

Ok for the twice sgdma module to do rx and tx  

 

and now ,see my screen of my connexions in sopc builder. 

 

Can you help me ,perhaps to connect all correctly (and modify modules if necessary) ?
0 Kudos
Altera_Forum
Honored Contributor II
542 Views

I attach a .sopc file which includes tse.  

I hope you can open it with sopc builder, so you can get all the information you need. 

 

Regards 

Cris
0 Kudos
Altera_Forum
Honored Contributor II
542 Views

great  

I'm looking that 

 

In waiting, I add a "on chip memory" to connect all ^^ to test it. 

 

Thanks 

 

but I don't understand why these information are not included or explain with more details in documentation from altera. 

In altera support, I didn't have the same help and not these information. 

thanks again. 

 

I open it immediatly. 

 

Ben
0 Kudos
Altera_Forum
Honored Contributor II
542 Views

Hello again 

 

so , thanks for the sopc file 

 

I do my sopc with success ;) 

 

but now, in nios II ide, I want to compile but I have some errors. 

 

I don't have the files "altera_avalon_sgdma_regs.h" , "altera_avalon_sgdma_descriptor.h" and "altera_avalon_sgdma.h". 

So my compilation failed. 

 

Why these files don't give in base ? 

where can I have it ? 

 

thanks again 

 

Ben 

0 Kudos
Altera_Forum
Honored Contributor II
542 Views

Hi Ben,  

 

On my system , the files are here: 

\altera\90sp2\ip\altera\sopc_builder_ip\altera_avalon_sgdma 

Check if you have them, too. Maybe in a different directory if you are using a different version. 

Probably you are missing the include paths in Nios IDE. 

 

Cris
0 Kudos
Altera_Forum
Honored Contributor II
542 Views

Hello Cris, 

 

yes I do the files in the same directory  

So, I'm looking for this problem and why I have this error : 

c:/Trav_Quartus/etep608A/etep608A_Cyclone/software/prog_nios1_etep608A_bsp/drivers/src/altera_avalon_tse.c:31: 

./drivers/inc/altera_avalon_tse.h:96:33: altera_avalon_sgdma.h: No such file or directory" 

 

I'll back soon if I find th reason. 

 

Edit:in fact, these files don't appear in my "bsp" in the folder "driver" so I have this error but "# ifdef __ALTERA_AVALON_SGDMA" is ok and recognize... 

I don't understand 

0 Kudos
Altera_Forum
Honored Contributor II
542 Views

Hi again, 

 

all adds are ok. 

 

but I have a new problem. 

 

My ram memory (external) is called "ramprog" and the base address is "0x8a00000". 

Before changing (add "sgdma modules"), I control the base address in th .objdump generated and it is "0x8a00000" ,So , ok. 

 

but after changing, (add "sgdma modules" with your help) my new .objdump file have the base address (to start) to "0x8a00230". 

So my program doesn't work. 

i don't undestand why the "start" address has changing. 

I check it on the sopc, and the base address is good (0x8a00000) and in my bsp project (in nios II ide) the base address is 0x8a000000 too. 

 

can you help me ? 

 

maybe an option in bsp editor I must change ?
0 Kudos
Altera_Forum
Honored Contributor II
542 Views

Check the objdump file for the code section which has been mapped to those 0x230 bytes.

0 Kudos
Altera_Forum
Honored Contributor II
542 Views

In fact, I have a program in a boot (a onchip memory in altera) that it jumps to my ram (where there is the final program in RAMPROG with base address = 0x8a00000). 

 

I add to you my .objdump files : 

- prog_nios1_etep608A.objdump is my old before adding "sgdma module" and it works great 

- prog_91_etep608A.objdump is my new after adding the module 

 

(in the objdump .zip file ;) ) 

 

thanks again Cris for your help
0 Kudos
Altera_Forum
Honored Contributor II
542 Views

I can't give you an exact explanation. I faced similar problems in the past during some tests but I can't remember or I didn't investigate the cause. 

I think this could be related to one of these: 

- placement of exception vector; see Nios properties in sopc builder 

- initialization of onchip memory 

 

Cris
0 Kudos
Altera_Forum
Honored Contributor II
542 Views

 

--- Quote Start ---  

I can't give you an exact explanation. I faced similar problems in the past during some tests but I can't remember or I didn't investigate the cause. 

I think this could be related to one of these: 

- placement of exception vector; see Nios properties in sopc builder 

- initialization of onchip memory 

 

Cris 

--- Quote End ---  

 

hum... 

I see that "exception" is "0x0" in old objdump and the base address is 0x8a00000 

 

but in the new objdump the "exception" is "0x230" and the base address is 08a00230 ...I don't think that is an accident, do you ? 

 

so, just a thing, I use " 

void jump_from_loader(void target(void))" to jump from "boot" to "ram prog". 

and I do this : 

 

- "jump_from_loader((void(*)(void))(RAMPROG_BASE));"  

so I must (maybe) jump not to RAMPROG_BASE but to RAMPROG_BASE + EXCEPTION. 

And just to now, I always do this but It is wrong ,I have just lucky that the "exception" is "0x0". 

 

i hope I'm near the solution of my problem ;)
0 Kudos
Altera_Forum
Honored Contributor II
542 Views

Hello Cris, 

 

so I test my jump to "RAMPROG_BASE + OFFSET 0x230" and all is ok 

 

I test too my jump to "RAMPROG_BASE" and option "enable_alt_load_copy_exceptions" disabled in my bsp and all is ok. 

 

 

Now,I want to launch the "simple socket server" like nios II ide example project :  

- compilation is ok (i just disable the flash using). 

- but I have a error message in debug rs (I put my capture.txt file) 

 

So i don't undersand because i paid for IP-NIOS , IP-TRIETHERNET and IPSW-TCPIP-NIOS (for nichestack license) 

So why I have this error 

how can I obtain a "simple socket server" example with my license (I use triple speed ethernet in gmii mode too). ? 

 

thanks for helping 

Cordialy, 

Ben
0 Kudos
Altera_Forum
Honored Contributor II
542 Views

Hi Ben,  

That's not an error. It simply reminds you that you don't have a valid license to use nichestack. Your program should work anyway. I think you probably see also a reminder about Micrium RTOS license during compilation: this one you don't have but, like Nichestack, code will be 100% functional for evaluation purposes. 

Regarding the fact the tools can't see your license, if you actually have it, probably you missed something in the installation of Nichestack licence itself. 

Refer the the information they gave you when your purchased the TCPIP package in order to know how to install it. 

 

Cris
0 Kudos
Altera_Forum
Honored Contributor II
542 Views

I have the license and it is with nios license  

 

and I don't why I haven't a simple exemple to use tse for sending and receiving datas .
0 Kudos
Altera_Forum
Honored Contributor II
542 Views

Hello, 

 

So, I try "simple socket server example " but I can't use it. 

I have the connexion, in uart I have information that all is ok and "ss example " is working but I can't telnet it ... 

 

but here (http://www.altera.com/support/examples/nios2/exm-hello_world.html) I see that I haven't the same "simple server socket" because I haven't the "network_utilities_iniche.c" 

 

wh[/B]ere can I obtain the zip project or the example ? 

 

 

[/B]
0 Kudos
Altera_Forum
Honored Contributor II
542 Views

hi 

Those utilities are not mandatory. They help you to manage mac and ip addresses and store them into nv memory. 

For test purposes you can simply define fixed addresses. 

 

Regarding the fact you say you can't telnet, do you mean you can't either ping? Or you can ping but you can't connect to telnet port 23? 

I recommend you start with dhcp disabled and use a well known fixed ip address. 

 

Cris
0 Kudos
Altera_Forum
Honored Contributor II
488 Views

yes  

I always start with dhcp disabled and fixed ip address ;). 

 

so I don't ping and telnet. 

 

I have see some information where there is a problem. 

 

In "ins_tse_mac.c", in "triple_speed_ethernet_init" function, it returns "ENP_HARDWARE" not for "p_driver_data" but for "psys_info". 

I can't see what I do or where I look for this problem. 

 

EDIT: 

after investigation : 

 

I see why have this error of psys_info. 

/* Get the pointer to the alt_tse_system_info structure from the global array */ for(i = 0; i < max_mac_system; i++) { if(tse_mac_device.tse_mac_base == p_driver_data->hw_mac_base_addr) { psys_info = &tse_mac_device; } 

 

"p_driver_data->hw_mac_base_addr" is egal to my TRIPLE_SPEED_ETHERNET_0_BASE but not the "tse_mac_device[i].tse_mac_base"  

why ? 

I must add something to initialize it ?
0 Kudos
Reply