Programmable Devices
CPLDs, FPGAs, SoC FPGAs, Configuration, and Transceivers
21615 Discussions

HOW TO INTERFACE BETWEEN ETHERNET(CYCLONE III) AND PCs(Labtop)

Altera_Forum
Honored Contributor II
6,827 Views

Hi everybody!!! 

 

I'm studying with a topics "Interface between Ethernet of Cyclone III and computer(PC or labtop)" It's means that I must "ping IP and Relay from Cyclone's Ethernet".  

 

I don't know how to practice that i use Verilog language. 

 

it's difficult to me!!! 

 

Help me everybody
0 Kudos
53 Replies
Altera_Forum
Honored Contributor II
2,522 Views

Take Cyclone III Development kit or NEEK web server examples for starters.

0 Kudos
Altera_Forum
Honored Contributor II
2,522 Views

i don't understand. Can you discrible your mind. I need to instruction detail about it. example .... I'm confuse... worried!!!!! 

 

help me !!! anyone
0 Kudos
Altera_Forum
Honored Contributor II
2,522 Views

What development kit do you have? Isn't it shipped with design examples?

0 Kudos
Altera_Forum
Honored Contributor II
2,522 Views

Yes I do.  

I'm doing on Development Board on Cyclone III. But I don't know how to set up IP for Cyclone III's Ethernet. My task is when I ping "Ethernet's IP address" it answer "Relay ...."comment ???????? 

 

that's all!!!
0 Kudos
Altera_Forum
Honored Contributor II
2,522 Views

You need to upload the nios standard image (delivered with the kit) and compile and run a web server example.. 

Then the board will try to configure itself through dhcp so it can be a good idea to have a dhcp server on your PC if you don't want to configure the IP manually in the source code.
0 Kudos
Altera_Forum
Honored Contributor II
2,522 Views

I can set up IP address for Cyclone III's Ethernet, and this is my code when I declare for this code. 

 

/* 

* define_IP.h 

* Created on: Dec 12, 2012 

* Author: user01 

*/ 

 

# ifndef DEFINE_IP_H_ 

# define DEFINE_IP_H_ 

/* 

# pragma ident "@(#)ip.h 1.7 98/08/26 SMI" 

ip.h 1.13 88/08/19 SMI; from UCB 7.6.1.1 3/15/88  

 

# include <sys/isa_defs.h> 

 

# ifdef __cplusplus 

extern "C" { 

# endif 

*/ 

 

# define IPVERSION 4 

 

/* 

* Structure of an internet header, naked of options. 

* We declare ip_len and ip_off to be short, rather than ushort_t 

* pragmatically since otherwise unsigned comparisons can result 

* against negative integers quite easily, and fail in subtle ways. 

*/ 

struct ip { 

# ifdef _BIT_FIELDS_LTOH 

uchar_t ip_hl:4, /* header length */ 

ip_v:4; /* version */ 

# else 

uchar_t ip_v:4, /* version */ 

ip_hl:4; /* header length */ 

# endif 

uchar_t ip_tos; /* type of service */ 

short ip_len; /* total length */ 

ushort_t ip_id; /* identification */ 

short ip_off; /* fragment offset field */ 

# define IP_DF 0x4000 /* dont fragment flag */ 

# define IP_MF 0x2000 /* more fragments flag */ 

uchar_t ip_ttl; /* time to live */ 

uchar_t ip_p; /* protocol */ 

ushort_t ip_sum; /* checksum */ 

struct in_addr ip_src, ip_dst; /* source and dest address */ 

}; 

 

# define IP_MAXPACKET 65535 /* maximum packet size */ 

 

/* 

* Definitions for IP type of service (ip_tos) 

*/ 

# define IPTOS_LOWDELAY 0x10 

# define IPTOS_THROUGHPUT 0x08 

# define IPTOS_RELIABILITY 0x04 

 

/* 

* Definitions for IP precedence (also in ip_tos) (hopefully unused) 

*/ 

# define IPTOS_PREC_NETCONTROL 0xe0 

# define IPTOS_PREC_INTERNETCONTROL 0xc0 

# define IPTOS_PREC_CRITIC_ECP 0xa0 

# define IPTOS_PREC_FLASHOVERRIDE 0x80 

# define IPTOS_PREC_FLASH 0x60 

# define IPTOS_PREC_IMMEDIATE 0x40 

# define IPTOS_PREC_PRIORITY 0x20 

# define IPTOS_PREC_ROUTINE 0x00 

 

/* 

* Definitions for options. 

*/ 

# define IPOPT_COPIED(o) ((o)&0x80) 

# define IPOPT_CLASS(o) ((o)&0x60) 

# define IPOPT_NUMBER(o) ((o)&0x1f) 

 

# define IPOPT_CONTROL 0x00 

# define IPOPT_RESERVED1 0x20 

# define IPOPT_DEBMEAS 0x40 

# define IPOPT_RESERVED2 0x60 

 

# define IPOPT_EOL 0 /* end of option list */ 

# define IPOPT_NOP 1 /* no operation */ 

 

# define IPOPT_RR 7 /* record packet route */ 

# define IPOPT_TS 68 /* timestamp */ 

# define IPOPT_SECURITY 130 /* provide s,c,h,tcc */ 

# define IPOPT_LSRR 131 /* loose source route */ 

# define IPOPT_SATID 136 /* satnet id */ 

# define IPOPT_SSRR 137 /* strict source route */ 

 

/* 

* Offsets to fields in options other than EOL and NOP. 

*/ 

# define IPOPT_OPTVAL 0 /* option ID */ 

# define IPOPT_OLEN 1 /* option length */ 

# define IPOPT_OFFSET 2 /* offset within option */ 

# define IPOPT_MINOFF 4 /* min value of above */ 

 

/* 

* Time stamp option structure. 

*/ 

struct ip_timestamp { 

uchar_t ipt_code; /* IPOPT_TS */ 

uchar_t ipt_len; /* size of structure (variable) */ 

uchar_t ipt_ptr; /* index of current entry */ 

# ifdef _BIT_FIELDS_LTOH 

uchar_t ipt_flg:4, /* flags, see below */ 

ipt_oflw:4; /* overflow counter */ 

# else 

uchar_t ipt_oflw:4, /* overflow counter */ 

ipt_flg:4; /* flags, see below */ 

# endif 

union ipt_timestamp { 

n_long ipt_time[1]; 

struct ipt_ta { 

struct in_addr ipt_addr; 

n_long ipt_time; 

} ipt_ta[1]; 

} ipt_timestamp; 

}; 

 

/* flag bits for ipt_flg */ 

# define IPOPT_TS_TSONLY 0 /* timestamps only */ 

# define IPOPT_TS_TSANDADDR 1 /* timestamps and addresses */ 

# define IPOPT_TS_PRESPEC 2 /* specified modules only */ 

 

/* bits for security (not byte swapped) */ 

# define IPOPT_SECUR_UNCLASS 0x0000 

# define IPOPT_SECUR_CONFID 0xf135 

# define IPOPT_SECUR_EFTO 0x789a 

# define IPOPT_SECUR_MMMM 0xbc4d 

# define IPOPT_SECUR_RESTR 0xaf13 

# define IPOPT_SECUR_SECRET 0xd788 

# define IPOPT_SECUR_TOPSECRET 0x6bc5 

 

/* 

* Internet implementation parameters. 

*/ 

# define MAXTTL 255 /* maximum time to live (seconds) */ 

# define IPFRAGTTL 60 /* time to live for frags, slowhz */ 

# define IPTTLDEC 1 /* subtracted when forwarding */ 

 

# define IP_MSS 576 /* default maximum segment size */ 

 

# ifdef __cplusplus 

# endif 

 

# endif /* _NETINET_IP_H */ 

 

# endif /* DEFINE_IP_H_ */ 

 

*/
0 Kudos
Altera_Forum
Honored Contributor II
2,522 Views

or i can set up other. 

 

# define IP4_ADDR(ipaddr, a,b,c,d) ipaddr =  

htonl((((alt_u32)(a & 0xff) << 24) | ((alt_u32)(b & 0xff) << 16) |  

((alt_u32)(c & 0xff) << 8) | (alt_u32)(d & 0xff))) 

 

mus i can do now? 

i'm confuse.
0 Kudos
Altera_Forum
Honored Contributor II
2,522 Views

What does it say when you run the web server example? 

In the project you should have a file with two functions that are called by the IP stack to set up the MAC and IP addresses.
0 Kudos
Altera_Forum
Honored Contributor II
2,522 Views

okey.but i cannot... 

 

i write a code for set up IP addresss.  

 

it cannot run.  

 

How must i declare for this code? 

 

that's : 

 

Ip address? 

example: i want to declare?????? 

 

i need a code for this. :confused::confused::(:(
0 Kudos
Altera_Forum
Honored Contributor II
2,522 Views

What you posted are definitions, not code that actually set up the address. 

What software project did you use? Have a look at the network_utilities.c file, there is a function called get_ip_addr(). The actual IP address to use is declared in a header file (web_server.h for the web server example).
0 Kudos
Altera_Forum
Honored Contributor II
2,522 Views

What's up? 

 

I'm looking forward to receiving any the question. 

 

And In the meantime, I tried to review this problem. But there're so numerous for my doing. 

 

In summary, The most of different to me that's I cannot define IP address on DEVELOPMENT KIT(CYCLONE III).  

 

I wish that anybody will help me!! 

 

thanks for your helping.
0 Kudos
Altera_Forum
Honored Contributor II
2,522 Views

Did you read my last answer?

0 Kudos
Altera_Forum
Honored Contributor II
2,522 Views

Yes, I did. and Here this code I found.  

 

* get_ip_addr() 

*  

* This routine is called by InterNiche to obtain an IP address for the 

* specified network adapter. Like the MAC address, obtaining an IP address is 

* very system-dependant and therefore this function is exported for the 

* developer to control. 

*  

* In our system, we are either attempting DHCP auto-negotiation of IP address, 

* or we are setting our own static IP, Gateway, and Subnet Mask addresses our 

* self. This routine is where that happens. 

*/ 

int get_ip_addr(alt_iniche_dev *p_dev, 

ip_addr* ipaddr, 

ip_addr* netmask, 

ip_addr* gw, 

int* use_dhcp) 

 

IP4_ADDR(*ipaddr, IPADDR0, IPADDR1, IPADDR2, IPADDR3); 

IP4_ADDR(*gw, GWADDR0, GWADDR1, GWADDR2, GWADDR3); 

IP4_ADDR(*netmask, MSKADDR0, MSKADDR1, MSKADDR2, MSKADDR3); 

 

# ifdef DHCP_CLIENT 

*use_dhcp = 1; 

# else /* not DHCP_CLIENT */ 

*use_dhcp = 0; 

 

printf("Static IP Address is %d.%d.%d.%d\n", 

ip4_addr1(*ipaddr), 

ip4_addr2(*ipaddr), 

ip4_addr3(*ipaddr), 

ip4_addr4(*ipaddr)); 

# endif /* not DHCP_CLIENT */ 

 

/* Non-standard API: return 1 for success */ 

return 1; 

 

 

So, Dynamic IP or static IP? And I'm really understand clearly how to create code from this program.
0 Kudos
Altera_Forum
Honored Contributor II
2,522 Views

It depends on define. 

 

Use# undef DHCP_CLIENT in the beginning of the file for static IP or# define DHCP_CLIENT for DHCP.
0 Kudos
Altera_Forum
Honored Contributor II
2,522 Views

those defines are in a header file, just as I said in my post on top of this page. You can enable or disable DHCP with the DHCP_CLIENT definition, and if you want a static IP, change the defines for IPADDR0..3 in that same header file.

0 Kudos
Altera_Forum
Honored Contributor II
2,522 Views

Daixiwen! 

 

I had done! I use DHCP for this problem. But How to know IP_address, Mean that, I want to ping "IP_address" from computer on Terminal window and then at the moment the signal relay and display on the Terminal Terminal? 

 

How ?
0 Kudos
Altera_Forum
Honored Contributor II
2,522 Views

The Interniche stack says in the console what IP address it is using. Just ping that one.

0 Kudos
Altera_Forum
Honored Contributor II
2,522 Views

How to ping? You talk too general. I cannot be images!? more clearly? about ping IP?

0 Kudos
Altera_Forum
Honored Contributor II
2,522 Views

I don't understand what you are saying... You just said you wanted to ping the card from a terminal window. Don't you know how to do that? 

The embedded application will say its IP address in the console. You can just recopy it when you type the ping command in the terminal.
0 Kudos
Altera_Forum
Honored Contributor II
2,442 Views

Of course, That's I want to interface between on Board(Development kit) Cyclone III's Ethernet and a the other computer via Cable. And To solve this problem. I must have programmed to create a IP address and then from a computer(is connected with Ethernet via the cable). Then, I open the Terminal(DOS). typing "cmd" command and then "ping" IP_address(this address had programmed) and if the system rely ....... and display on the terminal is ok????????????????????????? 

 

 

Thanks for your many helping:(
0 Kudos
Reply