Implementing a real-time apllication in Vivado

Discussions about active development projects
Post Reply
rothmart
Posts: 14
Joined: Fri Nov 13, 2015 3:10 pm

Implementing a real-time apllication in Vivado

Post by rothmart » Mon Jul 25, 2016 1:43 pm

Hi,

we build up the reference designs for two fpga systems: First redpitaya and a second combination of zynq zc702, ad9739a and ad9467. We also implemented the communication with matlab via libiio for zc702. The communication project(modulation, demodulation) therefor is realized by Simulink.
Now we want to transfer the model to redpitaya and want to program the whole project with vhdl/verilog. So it should completly run on hardware in real-time. It seems that this can be done by a manipulation of the blockdesign.
So we would like to see a similar project, with creation of a new IP block. You shared some projects for redpitaya with instructions on how to build the .bit bitstream. Is it possible to get an example-project (project file) to gain insight how and where to implement own IP-cores. We need especially the look inside your vivado project, to understand the realtions and to realize our own project.

Any help would be appreciated!

Regards

pavel
Posts: 786
Joined: Sat May 23, 2015 5:22 pm

Re: Implementing a real-time apllication in Vivado

Post by pavel » Mon Jul 25, 2016 1:52 pm

Hi,

I'm using IP cores for my Red Pitaya projects.

The source code of my IP cores can be found at https://github.com/pavel-demin/red-pita ... ster/cores

The Tcl script used to build the cores can be found at https://github.com/pavel-demin/red-pita ... s/core.tcl

The make rule running the Tcl script can be found at https://github.com/pavel-demin/red-pita ... efile#L124

All my Red Pitaya projects can be found at https://github.com/pavel-demin/red-pita ... r/projects

Some basic explanations of my projects can be found at http://pavel-demin.github.io/red-pitaya ... ed-blinker

Best regards,

Pavel

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

Re: Implementing a real-time apllication in Vivado

Post by Nils Roos » Mon Jul 25, 2016 8:01 pm

In case you want to take a look at the original Red Pitaya block design, you can find instructions Both versions have a single block design "system.bd" combined with some Verilog / SystemVerilog code.

rothmart
Posts: 14
Joined: Fri Nov 13, 2015 3:10 pm

Re: Implementing a real-time apllication in Vivado

Post by rothmart » Fri Oct 14, 2016 11:39 am

Hi,

i deal again with this project and checked your links. So i build up the master branch for every four projects (classic, logic, logic_orig, tft). Now i would like to find the user I/O interface to generate an output signal via HDL code by Matlab HDL Coder. So i tried to model an tranceiver and receiver in Simulink and generated the HDL code. But i don't see the connection in red_pitaya_top.sv to connect to DAC ADC ports. Can you help? Can you explain how to insert data to ASG or directly to DAC? I think there must be a 14bit register, which has to be connected to.

Regards!

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

Re: Implementing a real-time apllication in Vivado

Post by Nils Roos » Fri Oct 14, 2016 4:48 pm

In the "classic" project's red_pitaya_top.sv, the "adc_dat" bus carries the incoming samples. The busses "asg_dat" and "pid_dat" are added together and are then converted to produce the DAC sample stream.

You can just connect the adc_dat bus to your module to receive incoming samples. To connect your output to the DAC, I'd recommend to define a new bus like

Code: Select all

// custom module
SBG_T [2-1:0]            custom_dat;
and include it in the summation like:

Code: Select all

// Sumation of ASG and PID and custom signal perform saturation before sending to DAC 
assign dac_a_sum = asg_dat[0] + pid_dat[0] + custom_dat[0];
assign dac_b_sum = asg_dat[1] + pid_dat[1] + custom_dat[1];

rothmart
Posts: 14
Joined: Fri Nov 13, 2015 3:10 pm

Re: Implementing a real-time apllication in Vivado

Post by rothmart » Wed Oct 19, 2016 7:52 am

Hi,

thanks for that fast response! I insert the new custom_dat bus and the lines for sumation. The matlab code and the hierarchy of inserted code you can see in the appendix. As you can see i connected the matlab-output and the custom_dat bus as the following:

Code: Select all

  assign custom_dat[0] = Out1_0;
Alternative I initiated in red_pitaya_top:

Code: Select all

Sin My_Sinus (
           .clk(sys_clk),
           .reset(reset),
           .clk_enable(1'b1),
           .ce_out(ce_out),
           .Out1(custom_dat[1])
           );
But in both cases there is no signal at the output. So what else is missing?
You do not have the required permissions to view the files attached to this post.

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

Re: Implementing a real-time apllication in Vivado

Post by Nils Roos » Fri Oct 21, 2016 1:18 pm

Your ways of instantiating the module did not work. In the "Project Manager Hierarchy", you can see that Sin is not a subnode of red_pitaya_top. This means it will not be included in the generated logic.
In your Sin.txt you put the assignment to the custom_dat bus inside the module, where the bus is not known.

You probably had a number of error messages during synthesis for both of your approaches. You should pay attention to those.

To use a new submodule, you need to do two things:
1. add the source to the project setup, so that it shows up in the project manager
2. instantiate the module somewhere in the hierarchy so that it is downstream of "top"

Your instantiation in red_pitaya_top is correct, I assume the error of trying to use the custom_dat bus inside the module led to the failure.

edit:
Judging by your other thread, you already found that out yourself ... :mrgreen:

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: No registered users and 6 guests