FPGA Programming for RedPitaya

Applications, development tools, FPGA, C, WEB
8lu3
Posts: 30
Joined: Thu Feb 25, 2016 7:05 pm

FPGA Programming for RedPitaya

Post by 8lu3 » Sat Jun 18, 2016 4:19 pm

Hi all,
I've got some basic questions about fpga-programming since I'm new to it:
  • I already learnt a bit Verilog, so I'm able to understand and write small Verilog programs. But, it seems to be a huge step from pure Verilog to FPGA-programming and there are a lot of things I don't really understand in the RedPitaya fpga project (what are all these ports, how do fpga and cpu communicate,..). So does anyone know a good Tutorial for me to start with?
  • How can one convert a generated Bitstream to a bin file in Vivado 2015.4 (the program "promgen" is missing)?
thanks and regards

Nils Roos
Posts: 1441
Joined: Sat Jun 07, 2014 12:49 pm
Location: Königswinter

Re: FPGA Programming for RedPitaya

Post by Nils Roos » Sat Jun 18, 2016 7:11 pm

Xilinx has a lot of good tutorials, but I can't point you to anything specific. Look through the contents of DocNav, which you can install alongside Vivado. In the meantime, I can answer your questions and explain some basics - that might help you to pick avenues for further search.

All things you do in Verilog and in the block designs are assembled into circuits in the programmable logic (PL). In order for these circuits to do anything useful, they need interfaces with the device pins and/or on-chip peripherals. The latter include the ARM cores, DDR memory controller, UARTs, etc., and they are collectively called the processing system (PS).

"All these ports" in modules are the connections from one instance of a module to the code where the module is instantiated. The ports of the top module of a project (red_pitaya_top) are the interfaces where device pins can be assigned to. The assignment is done in the constraints (red_pitaya.xdc), where pins are connected to FPGA signals by way of the portname of the inputs/outputs of the top module.

A lot of the ports in red_pitaya_top belong to the PS ("FIXED_IO_*", "DDR_*"). Those are routed straight to the IP block instance that encapsulates the PS ("processing_system7" in the block design "system.bd"). If you follow the connections upwards (system.bd -> system_wrapper.v -> red_pitaya_ps.v -> red_pitaya_top.v), you'll notice that only some of the interfaces of processing_system7 connect to the top module ports. The remainder is where you can make a connection to the PS; this is mostly done in red_pitaya_ps for Verilog code or in the system.bd block design for IP blocks.

Connecting to the PS usually entails interfacing to an AXI bus. If you want registers in your logic to be mapped into the address space of the ARM cores, you implement an AXI slave that is connected to one of the PS's AXI masters. If you want your logic to control one of the on-chip peripherals, you implement an AXI master that connects to one of the PS's AXI slaves.
I fail to run this example http://redpitaya.com/examples-new/fpga- ... -tutorial/ in Vivado 2015.4, since it was written with Vivado 2013. How can I fix this?
When you open the project in Vivado 2015.4, you are told that the project was created with an older version of Vivado. Choose to upgrade at that point. After the project opens, you are notified that some of the IPs are of an older version than is present in your Vivado. Select "Report IP status" and then upgrade with the button in the lower left of the report.
How can one convert a generated Bitstream to a bin file in Vivado 2015.4 (the program "promgen" is missing)?
You don't need to anymore. All recent versions of the xdevcfg device can process the *.bit files from Vivado directly.

8lu3
Posts: 30
Joined: Thu Feb 25, 2016 7:05 pm

Re: FPGA Programming for RedPitaya

Post by 8lu3 » Mon Jun 20, 2016 10:22 am

Ok thanks, I will take a look at DocNav.
Nils Roos wrote: When you open the project in Vivado 2014.4, you are told that the project was created with an older version of Vivado. Choose to upgrade at that point. After the project opens, you are notified that some of the IPs are of an older version than is present in your Vivado. Select "Report IP status" and then upgrade with the button in the lower left of the report.
When I run report ip status and hit upgrade it gives me following warnings:

Code: Select all

 [IP_Flow 19-3298] Detected external port differences while upgrading IP 'system_processing_system7_0_0'. These changes may impact your design.

 [Coretcl 2-1279] The upgrade of IP instance 'system_processing_system7_0_0' has identified issues that may require user intervention. Please review the upgrade log '/home/paul/developing/workspace/RedPitaya/Examples/fpga/red_pitaya.srcs/sources_1/bd/system/ip/system_processing_system7_0_0/system_processing_system7_0_0.upgrade_log', and verify that the upgraded IP is correctly configured.
Run Synthesis and Run Implementation succeed but Generate Bitstream fails with error message

Code: Select all

[DRC 23-20] Rule violation (IOSTDTYPE-1) IOStandard Type - I/O port vinn_i[0] is Single-Ended but has an IOStandard of TMDS_33 which can only support Differential
[DRC 23-20] Rule violation (IOSTDTYPE-1) IOStandard Type - I/O port vinn_i[1] is Single-Ended but has an IOStandard of TMDS_33 which can only support Differential
[DRC 23-20] Rule violation (IOSTDTYPE-1) IOStandard Type - I/O port vinn_i[2] is Single-Ended but has an IOStandard of TMDS_33 which can only support Differential
[DRC 23-20] Rule violation (IOSTDTYPE-1) IOStandard Type - I/O port vinn_i[3] is Single-Ended but has an IOStandard of TMDS_33 which can only support Differential
[DRC 23-20] Rule violation (IOSTDTYPE-1) IOStandard Type - I/O port vinn_i[4] is Single-Ended but has an IOStandard of TMDS_33 which can only support Differential
[DRC 23-20] Rule violation (IOSTDTYPE-1) IOStandard Type - I/O port vinp_i[0] is Single-Ended but has an IOStandard of TMDS_33 which can only support Differential
[DRC 23-20] Rule violation (IOSTDTYPE-1) IOStandard Type - I/O port vinp_i[1] is Single-Ended but has an IOStandard of TMDS_33 which can only support Differential
[DRC 23-20] Rule violation (IOSTDTYPE-1) IOStandard Type - I/O port vinp_i[2] is Single-Ended but has an IOStandard of TMDS_33 which can only support Differential
[DRC 23-20] Rule violation (IOSTDTYPE-1) IOStandard Type - I/O port vinp_i[3] is Single-Ended but has an IOStandard of TMDS_33 which can only support Differential
[DRC 23-20] Rule violation (IOSTDTYPE-1) IOStandard Type - I/O port vinp_i[4] is Single-Ended but has an IOStandard of TMDS_33 which can only support Differential
EDIT:
I have issues with DocNav, too. When I click "Documentation and Tutorials" on the Vivado start-screen nothings happens. Starting the program "Documentation Navigator" (from Unity Dash) also does nothing. Maybe DocNav needs a paid license ? I run Ubuntu 16 and recently updated to Vivado 2016.2
Last edited by 8lu3 on Mon Jun 20, 2016 3:20 pm, edited 1 time in total.

Nils Roos
Posts: 1441
Joined: Sat Jun 07, 2014 12:49 pm
Location: Königswinter

Re: FPGA Programming for RedPitaya

Post by Nils Roos » Mon Jun 20, 2016 3:19 pm

To address these errors, you just need to replace the two occurrences of TMDS_33 in red_pitaya.xdc with LVCMOS33.

The warnings from the IP upgrade have no impact on the design.

Nils Roos
Posts: 1441
Joined: Sat Jun 07, 2014 12:49 pm
Location: Königswinter

Re: FPGA Programming for RedPitaya

Post by Nils Roos » Mon Jun 20, 2016 3:22 pm

I have issues with DocNav, too. When I click "Documentation and Tutorials" on the Vivado start-screen nothings happens. Starting the program "Documentation Navigator" (from Unity Dash) also does nothing. Maybe DocNav needs a paid license ? I run Ubuntu 16 and recently updated to Vivado 2016.2
Did you deselect DocNav during the installation of Vivado? It doesn't need a license, but it is installed as a separate application, which you can also start independently of Vivado.

8lu3
Posts: 30
Joined: Thu Feb 25, 2016 7:05 pm

Re: FPGA Programming for RedPitaya

Post by 8lu3 » Mon Jun 20, 2016 5:24 pm

The directory /opt/Xilinx/DocNav exists and isn't empty, so I guess DocNav should be installed probably. The directory contains the program "docnav", but executing in a terminal fails with

Code: Select all

./docnav: error while loading shared libraries: libfontconfig.so.1: cannot open shared object file: No such file or directory

Nils Roos
Posts: 1441
Joined: Sat Jun 07, 2014 12:49 pm
Location: Königswinter

Re: FPGA Programming for RedPitaya

Post by Nils Roos » Mon Jun 20, 2016 5:55 pm

Well, you don't need DocNav to access the Xilinx documentation, it just provides a sorted and filterable catalogue of their freely downloadable resources. Everything you can find in DocNav, you can also find in http://www.xilinx.com/support.html .

8lu3
Posts: 30
Joined: Thu Feb 25, 2016 7:05 pm

Re: FPGA Programming for RedPitaya

Post by 8lu3 » Mon Jun 20, 2016 8:52 pm

Ok tanks!
"Compiling" the tutorial-project succeeds now.
Since I updated Vivado to Version 2016.2 I got some issues when building the RedPitaya fpga project:

Code: Select all

[Synth 8-5809] Error generated from encrypted envelope. ["../fpga/redpitaya.srcs/sources_1/bd/system/ipshared/xilinx.com/blk_mem_gen_v8_3/hdl/blk_mem_gen_v8_3_vhsyn_rfs.vhd":1075]
Do you have a simple solution for this, too? Or should I install the 2015.4 Version, additionally?

Nils Roos
Posts: 1441
Joined: Sat Jun 07, 2014 12:49 pm
Location: Königswinter

Re: FPGA Programming for RedPitaya

Post by Nils Roos » Mon Jun 20, 2016 9:10 pm

I have not upgraded beyond 2015.4 so I haven't faced that issue yet, and the error message tells me nothing helpful, sorry.

8lu3
Posts: 30
Joined: Thu Feb 25, 2016 7:05 pm

Re: FPGA Programming for RedPitaya

Post by 8lu3 » Tue Jun 21, 2016 8:01 pm

I'm wondering why there are two vivado projects in RedPitaya/fpga/project/ . What is the difference between them?

Post Reply
jadalnie klasyczne ekskluzywne meble wypoczynkowe do salonu ekskluzywne meble tapicerowane ekskluzywne meble do sypialni ekskluzywne meble włoskie

Who is online

Users browsing this forum: Google [Bot] and 85 guests