Jump to content
  • 0

Interfacing PMOD WIFI with VIVADO 2018.2


HAZIQ

Question

Hello, I have a few question on how to interfacing the PMOD WIFI with the FPGA. So basically my aim is to transmit and receive data from one FPGA to the other. I am planning to use this PMOD WIFI to make this happen. As I'm new to this kind of things, I'll appreciate any suggestion that can help me. Im using Nexys4 DDR board. So this is my question.

 

1) I have followed a tutorial video on how to interface this PMOD WIFI with FPGA but it seems like my board is not the same with the video. In the video, the MIG have a clock reference port, but for my board there in no clock reference port. Should i add this clock reference port or not ? 

 

image.png.de8bc59029af0b9e670956867f5264e6.png

2) In the video that i have watch, the author use pmod sd card, do i need this on my board ?

 

3) Any suggestion on how to communicate between this two FPGA ?

Link to comment
Share on other sites

14 answers to this question

Recommended Posts

  • 1

Hi @HAZIQ,

You will want an updated version of Digilent's board files to get an updated version; there is a guide on how to do this here: https://digilent.com/reference/programmable-logic/guides/installing-vivado-and-vitis#install_digilent_s_board_files. During board creation, you will want to select the Nexys A7 rather than the Nexys 4 DDR; this is because the Nexys 4 DDR was rebranded to the Nexys A7; it is otherwise the same board.

You will want the SD card if you want to use the demo material that we have for the Pmod WiFi (which sets up a http server whose html contents are defined on the SD card).

The Pmod WiFi does have TCP echo server and clients (as well as UDP versions) though I have not personally attempted these with a pair of WiFI modules, but they would be one way that you can facilitate communication between two boards, or set up a situation where one Pmod WiFi hosts an HTTP server and puts some board data on the server and then another board connects to that same IP and reads data from that hosted site.

In terms of the other questions you had on other threads:

You do not need to worry about the warnings about the Pmod IP being built for a different board.

Thanks,
JColvin

Link to comment
Share on other sites

  • 0

Hello @JColvin,

Can you show me where to paste SD card file ? Because in the video it said that I need to copied and paste the SD card file, but where to paste it is what I'm missing out. Maybe you can help me with this. Another one problem that I have faced is, one of the thread that I have read, you have comment that you successfully done this HTTP server example using Vivado 2019.1. But right now I'm having a problem on sdk which is the board support package error. Below I have include the picture of my error as your reference.

image.thumb.png.71da2ee2ae9ed66c4c274bee1933ee81.png

Link to comment
Share on other sites

  • 0

Hello @JColvin,

Any update on my question ? I really hope that you can help me. Because im kinda lost right now. I have searched all the thread in the forums but cant find any solution to my problem. Another extra question that i have, did you have any tutorial that can show me how to send or receive data by using this pmod wifi ?

Link to comment
Share on other sites

  • 0

Hi @HAZIQ,

I was not able to get the Pmod WiFi working with the Nexys A7 100T (the same board as the Nexys 4 DDR) either the Arty A7 35T on 2019.1 or on 2017.4 on a Microblaze design and just get the same errors that you are getting. I checked the other thread were I did the Pmod WiFi working, https://forum.digilentinc.com/topic/17224-pmod-wifi-sdk-problem/#comment-52875, and it was for a Zynq based board (Zedboard in this case). I pulled up the old Zynq project on my computer and confirmed that it still compiled successfully on SDK, though that does not help with the Microblaze based design.

Supposedly, the Pmod WiFi was working and validated in 2017.4 as noted on it's GitHub IP page, but evidently this was not the case. I seem to recall having the Pmod WiFi project working on at least one Microblaze design (much like the Digilent video tutorial indicates as well); I will see if I can get this project working.

Thanks,
JColvin

 

Link to comment
Share on other sites

  • 0

Hi @HAZIQ,

So I have a mix of news.

Good news is that I was able to get some of the WiFi applications (namely the TCP Echo Server and TCP Echo Client) to compile and run on a Nexys 4 DDR / Nexys A7 100T (after making appropriate changes in their main.cc's to connect to the WiFi network of interest). This was able to be done mostly because they do not use the Pmod SD IP and its the Pmod SD IP that is failing to compile, though I do not know why or what is making it to fail to compile (on 2017.4 or any other Xilinx SDK/Vitis version for a MicroBlaze based system). The failure of the Pmod SD IP to compile will make it so that you will not be able to use the HTTP Server Example, as all of the html that is used to create the webpage is only on the SD card.

Bad news is that I can't get the two boards to communicate to each other. There is some hope that you might be able to get it working with your setup; I had a Pmod WiFi module that was a MRF24WG0MA and MRF24WB0MA, and only the B version (WiFi class 3) was failing to connect to the 2.4 GHz hotspot that I had setup, no matter which Nexys A7 board or application (Client or Server) it was running. If the two WiFi modules you have are both the G (WiFi class 4) hopefully you will have some better luck in connecting to a 2.4 GHz network and getting the demo to run; on the Client main.cc you'll need to set the IP address to whatever the Server provides to you (presuming your hotspot provides DHCP services and assigns an IP address; this IP address will be shown to you in the serial terminal monitor after the server successfully connects to the network).

Thanks,
JColvin

Link to comment
Share on other sites

  • 0

Dear @JColvin,

Thank you very much for your reply and help. It help me a lot in understanding my error. Another follow up question regarding the tcpechoserver and tcpechoclient that have you mentioned. Does the setup for the block design are same with the video that i have posted earlier ? Any other extra ip block that i need to add ? Luckily, my pmod wifi module is G version. 

Regards,

Haziq

Link to comment
Share on other sites

  • 0

Dear @JColvin,

I have tried the echo sever example by using the same method in building the block design. I've generate the bitstream also. But when i want to implement this echo server example, there is an error happen. Hereby i includes the error that i received and the block design that i have build for this example

1.PNG

2.PNG

Link to comment
Share on other sites

  • 0

Hi @HAZIQ,

I believe this error is because that in your block design that you connected the interrupt of the AXI Uartlite IP to the Concat block rather than the interrupt block on the Pmod WiFi IP.

You can probably check to see if XPAR_INTC_0_PMODWIFI_0_VEC_ID is defined in the Echo_bsp folder. It would be under microblaze_0 -> Include -> xparameters.h. You should be able to do a ctrl+f for the phrase since there should only be a single instance of it under the section with the comment saying "Canonical definitions for perhiperhal MICROBLAZE_0_AXI_INTC". If it is not there, that is a strong indicator that the interrupt not being connected is the issue.

I do not think you need to the AXI Uartlite IP interrupt connected (or at least I do not have it connected; if you intend to modify the UART code to use interrupts, then you can double-click on the Concat IP to expand the inputs to 2 and connect both the Uartlite and the Pmod WiFi interrupts to the Concat IP (it won't matter which order you attach them in).

Thanks,
JColvin

Link to comment
Share on other sites

  • 0

Dear @JColvin,

Thank You for your help to solve my PMODWIFI problem. Really appreciate it. I have followed your comment and managed to run the echo server and client example. But due to lack of knowledge in this area, I've come across with new problem which is, I don't know whether my both FPGA board is connected or not.

1) As my understanding based on the C++ code in client example, when I set the IP address which I get by running the server example, the client will be connected to the server or in other word to the FPGA board which the server is running on. Right ? 

2) Based on 1, if its connected, the client now can write anything to the server, so in the client code, I noticed that there is line where the write function is called when the client is connected to the server, and in the server code, there is a line which the server will try to read the message which has been write by the client. The problem is that this process of read/write does not occurred in my TERATERM interface. Is it because I connected both FPGA in the same PC ? 

Regards,

Haziq

 

Link to comment
Share on other sites

  • 0

Hi @HAZIQ,

1. Yes if you have the server example running on one board, then the client on the second board should connect to the IP address set by the server.

2. Based on the code in the main.cc for the TCP server, it should be printing material to the serial terminal (like TeraTerm) as well as reading in information from the connected client and then "simultaneously" echoing the received information back to the client as well as printing out the received material to the serial terminal. Connecting both FPGA boards to the same computer should not matter, though of course you will need two separate instances of TeraTerm (or whatever serial terminal you have) opened and set to 9600 baud 8 bits no parity 1 stop bit for the two COM ports (since you have two FPGAs).

Thanks,
JColvin

Link to comment
Share on other sites

  • 0

Dear @JColvin,

Thank you for your reply, I really appreciate it.

1. I have successfully connected the two board by using your explanation.

2. Yet there is no interaction between the two board that I have connect. Below i included a picture which showing that the client has been connected to the server which I have given the ip address but there is no write or read process occurred.

3. There is some error which I don't quite understand how to solve it. I also included the error below for you reference. Doest this error effect my coding on the main.cc ?ERR0R.thumb.PNG.eb1c6fd8e4e3acae45fbf5562a7d61ed.PNG

NOT_CONNECTED.PNG

Link to comment
Share on other sites

  • 0

Hi @HAZIQ,

I'm not certain what is causing the error. Based on this Xilinx support thread, it could just be that the debugger isn't able to find the source path.

In terms of the two devices communicating data back and forth, I would recommend having the echo server module be enabled first (so that it has time to successfully setup it's listening sockets) and then the echo client that will be sending data. I would also make sure that the client module is attempting IP address that the server module set up, otherwise the two devices would be looking for each other (or at least the client will not be looking for the server instead of connecting to the WiFi network with it's own IP address assigned to it.

Thanks,
JColvin

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...