error input uint8 simulink

6 visualizaciones (últimos 30 días)
Sela
Sela el 3 de Oct. de 2017
Comentada: Prateek Tiwari el 1 de Jun. de 2020
Hi everybody,
I want to design a simple digital systen with Simulink in order to:
1. simulate its behaviour with Matlab
2. generate the VHDL code for a FPGA synthesis.
I would use the same system design to simulation and generation but to simulate with Matlab I must stimulate my circuit with input block (in1) using a "double" data type, instead to generate VHDL code I must use in1 with data type "uint8".
Example:
a = [0 1 1 1 0 0 0 1 0 1];
in1 = uint8(a);
If I try to simulate on Matlab that code with I have this error :
"Input format not supported. Available formats include: (1) a Simulink.SimulationData.Dataset object, (2) a double non-complex matrix, (3) a structure with or without time, (4) a MATLAB timeseries object, (5) a structure with MATLAB timeseries objects at all leaves (for bus input). All formats require the data to be finite (not Inf or NaN)."
Is it not possible use the same configuration to simuate and generate HDL code?
Could you help me please?

Respuesta aceptada

Sela
Sela el 5 de Oct. de 2017
Editada: Sela el 5 de Oct. de 2017
Hi, the solution is to define a structure of time :
a = [0 1 0 1 0 1 0 1]; in1 = uint8(a); s.time = 0 ; s.signals.values = in1;
and change the input in the configuration to "s" instead of "in1".
Thanks to everyone

Más respuestas (3)

Walter Roberson
Walter Roberson el 3 de Oct. de 2017
I am not sure which block you are using in Simulink, but From Workspace requires that that time information be available somehow . The time can be explicit like a timeseries object, or a structure in the proper format with the proper fields. For arrays, the time is taken from the first column of the data -- but in such cases the array must be double because times must be double.
From Workspace blocks are not able to import "just plain data". From Workspace blocks are intended to deliver data at a particular time: they are blocks for execution of a model, where as importing plain data is something that would be used in a procedural language.
  2 comentarios
Sela
Sela el 3 de Oct. de 2017
thanks for your answer. My input is the block In1 from HDL Coder 3. I can't put my input in double because after I need to you use it with HDL(HDL not support double). I have also tried with a constant (data type uint8) but it is not working too. Can you explain me what I am supposed to change, please? What block should I take?
Walter Roberson
Walter Roberson el 3 de Oct. de 2017
I am not very familiar with the process. Generally you would mark data into the HDL or data out of the HDL as a signal. You would generally generate some input condition outside the HDL to trigger action, and several cycles later you would get an output from the HDL. There is an example at https://www.mathworks.com/help/hdlcoder/examples/running-an-audio-filter-on-live-audio-input-using-a-zynq-board.html

Iniciar sesión para comentar.


Bharath Venkataraman
Bharath Venkataraman el 4 de Oct. de 2017
You can try using the Signal From Workspace block instead. I think this may work better with your data.

Kiran Kintali
Kiran Kintali el 5 de Oct. de 2017
can you please share your matlab code or simulink model?
  1 comentario
Prateek Tiwari
Prateek Tiwari el 1 de Jun. de 2020
Hi erveryone, I need to post this question here, because no one responds to the question i have asked in the past. Sorry for that, but would appreciate if you can answer.
Hello everyone, I am having an issue with the interaction of matlab function block in the simulink with my model block. Below you can also find the picture.
I have created a matlab function with three inputs and 1 output. Since in the matlab function block, i have solved an differential equation, it has complex expressions in the form of for example .
(exp(sqrt(-a/b)))
This generates the output of complex data type from the function block. When passing this to the integrator which is the input to my plant, I cannnot run the simulink due to the error
"Cannot pass the complex value to non-complex location"
I tried chaning the data types of integrator, then the same thing happens to other blocks in the simulink.
I also tried using absolute values, which ofcourse gives real number, but turns out to be very large numbr and genrates high magnitude. I really need help in solving this issue.
Can anyone help me in this? Please
Thanks in advance.

Iniciar sesión para comentar.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by