-
-
Category: Cores
-
-
Hits: 13936
Written by Holguer Andres
W5100 Qsys Component.
This Qsys component has been designed to be used with the chip Wiznet W5100 alongside the soft-core Nios II.
This manual will tell you how to implement it using the DE0-NANO, and C5GX, and is divided into two parts:
- Hardware Part.
- Quartus Project.
- Qsys.
- PINOUT Connections.
- Software Implementation.
- WebServer Example.
Requirements
- W5100 module.
- DE0-NANO (Not to be limited, you can used any other board).
- Arduino Female-Female wires.
- Quartus 14.1 or above.
Procedure:
Hardware Part
- Quartus Project.
- To start with this part, we will help you by generating a template system for the DE0-NANO, which can be downloaded it form here.
- Decompress and open the Quartus project template.
- You will see an instantiation which is a basic qsys system that you are going to modify in order to get the W5100 working properly.
- Qsys.
- Download the following folder, and paste it on the project directory.
![](/images/manuals/w5100/1.png)
- Click on the Qsys Button
, and open the file "DE0_NANO_QSYS.qsys".
![](/images/manuals/w5100/2.png)
- Then you will see a basic system Nios II structure with all the basic components to start with
![](/images/manuals/w5100/3.png)
- Now, go to the menu "Tools->Options", and add to the "IP Search Path" the ip folder you just copied to the project directory.
![](/images/manuals/w5100/4.png)
- Now save the Qsys project, close it and reopen it.
- On qsys, search on the IP catalog the component "Wiznet 5100" under "Interface Protocols->Ethernet", select and add it to the qsys project.
![](/images/manuals/w5100/5.png)
![](/images/manuals/w5100/6.png)
- Now connect the Wiznet 5100 module as follows:
![](/images/manuals/w5100/8.png)
- Now save the Qsys project.
- Go to the menu "Generate->HDL Example", and you should see something like this
![](/images/manuals/w5100/9.png)
- Select and copy only the lines with the name of "ethernet_wiznet_5100_0".
![](data:image/png;base64,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lPvPeQ565cc2rjnbuL9evY4/nz9TWP/K2cEb7/EfRz/UZc5h0ziHCh8ekgAJkAAJ1JKA9OJfjWDysrUyupaiKYsESKAyAn/56GHDOIdNM6xcGVpeRQIkQAIkUDUBYwXfPA3jlPJ7oVXLYAISIIGWIdDUC1Japha8FPEYmlIvKxleVyMb5biRdAhalqDpGqUOypWj3vrVO79y+geJbwUdPPSWXw4Y8ghnEAmsCYFWuI9aQQefyuWwsg8YBpMACZAACZAACZBAvQg00rDylg+XZdkj/0iABEiABEiABEiABNaLwL/fWq+cS/PlnMNSJgwhARIgARIgARIggQ1LgM7hhq16Kk4CJEACJEACJEACpQToHJYyYQgJkAAJkAAJkAAJbFgCdA43bNVTcRIgARIgARIgARIoJRDIOcw9GcHxm29KpTGEBEiABEiABEiABEigqQkEcg4Ru4Cer2/gib33a1MTYOFJgARIgARIgARIgATyBAI5h4axHyfP3Mb3txbygtSDNzePY/v27exdVKHwmARIgARIgARIgASagEAg51D0ip08g59Tb5tARRaRBEiABEiABEiABEigUgKr2z7vZQrA0ZK89n/xCB++KAlmAAmQAAmQAAmQAAmQQIMTCNxz2OB6sXgkQAIkQAIkQAIkQAIBCKzOOezp9szyych2bN8+wgUrnnQYSAIkQAIkQAIkQAKNSyDwsPL0g9s4czJRolku9wQPbgN//PYCjhpGSTwDSIAESIAESIAESIAEqifw008/YcuWLdi8ebP52bRpE+RjGEbJt4TJn3yrHydM/TYvVP4Fcg5zuTd4cPsMPHxDYPoBbv/xW/xyvkvJhockQAIkQAIkQAIkQAKrIfD5559j27ZtCIVC5mfr1q15R1EcRnEUnW/HcVS/VSdRdR6LyxTIOcT0Dbz89gLGPHoGjaNj+FC6RqU4X56TAAmQAAmQAAmQAAk0IIFAzqE4gI/oADZgdbJIJEACJEACJEACJLA6AqtbkLK6vJmaBEiABEiABEiABEigwQjQOWywCmFxSIAESIAESIAESGA9CdA5XE/6zJsESIAESIAESIAEGowAncMGqxAWhwRIgARIgARIgATWkwCdw/Wkz7xJgARIgARIgARIoMEI0DlssAphcUiABEiABEiABEhgPQnQOVxP+sybBEiABEiABEiABBqMAJ3DBqsQFocESIAESIAESIAE1pMAncP1pM+8SYAESIAESIAESKDBCNA5bLAKYXFIgARIgARIgARIYD0J0DlcT/rMmwRIgARIgARIgAQajACdwwarEBaHBEiABEiABEiABNaTAJ3D9aTPvEmABEiABEiABEigwQjQOWywCmFxSIAESIAESIAESGA9CdA5XE/6zJsESIAESIAESIAEGowAncMGqxAWhwRIgARIgARIgATWkwCdw/Wkz7xJgARIgARIgARIoMEI0DlssAphcUiABEiABEiABEhgPQlsWc/MmTcJkAAJkAAJkAAJkEBlBH766Sds2bIFmzdvNj+bNm2CfAzDKPmWMPmTb/XjhKnf5oXKPzqHCgwekgAJkAAJkAAJkECjEvj888+xbds2hEIh87N169a8oygOoziKzrfjOKrfqpOoOo/F+nJYuZgIz0mABEiABEiABEhgAxOgc7iBK5+qkwAJkAAJkAAJkEAxATqHxUR4TgIkQAIkQAIkQAIbmACdww1c+VSdBEiABEiABEiABIoJ0DksJsJzEiABEiABEiABEtjABOgcbuDKp+okQAIkQAIkQAIkUEyAzmExEZ6TAAmQAAmQAAmQwAYmQOdwA1c+VScBEiABEiABEiCBYgJ0DouJ8JwESIAESIAESIAENjABOocbuPKpOgmQAAmQAAmQAAkUE6BzWEyE5yRAAiRAAiRAAiSwgQnQOdzAlU/VSYAESIAESIAESKCYwJaPPvqoOIznJEACJEACJEACJEACG5TAlv/8z//coKpTbRIggVYisH///lZSh7qQAAmQwLoR4LDyuqFnxiRAAiRAAiRAAiTQeAToHDZenbBEJEACJEACJEACJLBuBOgcrht6ZkwCJEACJEACJEACjUdgS+MViSUiARIgARIgARIggeYnMDIykldibGwsf9zoB+w5bPQaYvlIgARIgARIgASakoDqEKqOYqMrQ+ew0WuI5SMBEiABEiABEmhaAs3oIHJYuWnNjQUnARIgARIgARJoBgLiIDo9h/KtOozVlP+nn37Cli1bsHnzZvOzadMmyMcwjJJvCZM/+VY/Tpj6bV6o/KNzqMDgIQmQAAmQAAmQAAnUmoDjGIrcoI6hpP3888+xbds2hEIh87N169a8oygOoziKzrfjOKrfqpOoOo/F+nJYuZgIz0mABEiABEiABEigRgRq5RjWqDgViaFzWBEmXkQCJEACJEACJEAC1RFoRsdQNOSwcnX1zKtJgARIgARIgARIoCICqxlCriiDNbro/wP4mwd4Xbc9swAAAABJRU5ErkJggg==)
- Go back to Quartus without closing the Qsys project, and paste the copied code on the line 148.
![](/images/manuals/w5100/10.png)
- Go back to the Qsys system, and generate the Qsys system by pressing the button "Generate HDL"
.
![](/images/manuals/w5100/11.png)
- Once generated, close Qsys.
- PINOUT Connections.
- Now it is time to connect the W5100 module to the GPIOs of the DE0-NANO, for that, I have decided to connect the Wiznet pins to the following GPIOs:
![](/images/manuals/w5100/12.png)
it is important to highlight that depending on the board you are using, you should check on the board Pinout, which might vary depending on the manufacture.
For the Mini board:
![](/images/manuals/w5100/13.png)
For the Arduino Etherner Shiled:
![ethernet_pins.jpg](https://arduino-info.wikispaces.com/file/view/ethernet_pins.jpg/294769838/ethernet_pins.jpg)
Here the DE0-NANO PinOut:
![](/images/manuals/w5100/15.png)
- Connect the GPIOs on the Verilog Instantiation.
![](/images/manuals/w5100/16.png)
- Save.
- Compile the project.
- Well done you have now finished with the Hardware part!!!.
- Here the Hardware Solution just in case you might have missed a detail.
Software Implementation
- WebServer Example.
- Open the Nios II IDE as admin
![](/images/manuals/w5100/17.png)
- Select as a workspace just the name "fpgas"
![](/images/manuals/w5100/18.png)
- Once the IDE is opened, go to the menu "File->New->New Application and BSP from template", select the template "Hello MicroC/OS-II", select the target hardware information using the file "DE0_NANO_QSYS.sopcinfo", name the project with "Wiznet5100", and press finish.
![](/images/manuals/w5100/19.png)
- After this, two folder will be created "Wiznet5100", and "Wiznet5100_bps"
![](data:image/png;base64,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)
- To verify that the created project was created properly compile the project application by right-clicking on the folder "Wiznet5100" Build Project.
- if the project was created properly, you will see that an ELF file with a bug is created into the "Wiznet5100" folder
.
- Now, download the folder "winzet", and paste it into the "Wiznet5100" folder, which contains the W5100 Drivers.
![](data:image/png;base64,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)
- Right-click on the Wiznet5100 folder, and clean the project.
- Now it is time to edit the code of the hello_ucosii.c file. and replace it for the following.
-
// --------------------------------------------------------------------
// Copyright (c) 2017 by FPGALOVER
// --------------------------------------------------------------------
// web: http://www.fpgalover.com
// email: This email address is being protected from spambots. You need JavaScript enabled to view it. or This email address is being protected from spambots. You need JavaScript enabled to view it.
// --------------------------------------------------------------------
// Author: Holguer Andres Becerra Daza
// Description: SW example
// --------------------------------------------------------------------
// **************************************************************************/
#include <stdio.h>
#include "includes.h"
#include "wiznet/W5100_configs.h"
/* Definition of Task Stacks */
#define TASK_STACKSIZE 2048
OS_STK task1_stk[TASK_STACKSIZE];
OS_STK task2_stk[TASK_STACKSIZE];
/* Definition of Task Priorities */
#define TASK1_PRIORITY 1
#define TASK2_PRIORITY 2
void http_server(void* pdata);
void init_hw();
void init_hw() {
if (!reset_wiznet()) {
printf("-- Wiznet-Ethernet Fail(SPI)\n");
} else {
printf("-- Wiznet-Ethernet SPI Succeeded\n");
}
}
//HTTP Server example
void http_server(void* pdata) {
init_hw();
if (init_dhcpc_ch(_DHCP_SOCKET) == 0) {
printf("IP STATIC or DHCP not Working, check Flags...\n");
}else{
}
HTTP_Init(HTTP_SOCKET, HTTP_PORT);
while (1) {
HTTP_Server_example();
OSTimeDlyHMSM(0, 0, 0, 100);
}
}
/* The main function creates two task and starts multi-tasking */
int main(void) {
OSTaskCreateExt(http_server,
NULL, (void *) &task1_stk[TASK_STACKSIZE - 1],
TASK1_PRIORITY,
TASK1_PRIORITY, task1_stk,
TASK_STACKSIZE,
NULL, 0);
OSStart();
}
- Now you can pore through the code and explore it, look especially into the method "HTTP_Server_example()", which contains all the logic about the web sever. In addition, you can take a look into the "wiznet" folder, especially the file "W5100_configs.h" which contains all the Wiznet w5100 driver configurations.
- Build the software project.
- Program the .SOF of the system using the Quartus Programmer, and run the generated .elf File.
Note: The Wiznet module should be properly connected to the DE0-NANO, and plugged to the Ethernet cable for the testing.
- Now you will see on the Nios II console a message telling whether or not the wiznet module has been successfully initialized, if so, you will see an assigned IP by the DHCP, which you can use and paste it on the web navigator of your preference to see the web page working, as it is seen in the following images.
![](/images/manuals/w5100/20.png)
![](/images/manuals/w5100/21.png)
- Finally and for you relief I have left the solution on the following link so that you can try it if you have any problem testing, in addition the solution comes with a Python Script and a TCP example solution for you to try it.
The sources for the C5GX board using the arduino Header has been uploaded as well and can be downloaded from here.