How to use boolean to control switch with fixed point data.

I am trying to use a boolean output from inside of Matlab function block to control a switch, which has 16-bit fixed point data. However, I keep getting the following error:
This assignment writes a 'logical' value into a 'double' type. Code generation does not support changing types through assignment. Check preceding assignments or input type specifications for type mismatches. Function 'FSM' (#1424.358.366), line 20, column 13: "path_sel" Launch diagnostic report.
It appears to force my output into a double type and fails. I noticed if I leave the switch data inputs open (floating) it runs fine and interprets the switch states as T and F.
2019-04-15_13-02-41.png
2019-04-15_13-02-10.png

답변 (2개)

Fangjun Jiang
Fangjun Jiang 2019년 4월 15일

0 개 추천

You set the criteria of the Switch block as u2>=1, which implies that u2 is double data type. Through back propagation, it requies "path_sel" to be double.
Just change the criteria of the Switch block to be "u2~=0"

댓글 수: 3

Thank you for the suggestion. I updated the criteria as suggested but receieve the same errors and double propagation as before.
check the z delay block to see if somewhere "double" is specified. It should output a 'boolean' just as "fftlk_valid".
Did not see any speicification on the delay unit. I tried removing the delay and directly connecting but had the same errors.

댓글을 달려면 로그인하십시오.

Bharath Venkataraman
Bharath Venkataraman 2019년 4월 17일

0 개 추천

S1 and S2 when they are assigned to mealy_state_reg likely need to be fixed point.
Try using assignements as follows:
mealy_state_reg(:) = S1;
mealy_state_reg(:) = S2;

카테고리

도움말 센터File Exchange에서 Additional Math and Discrete에 대해 자세히 알아보기

제품

릴리스

R2018b

질문:

2019년 4월 15일

댓글:

2019년 4월 17일

Community Treasure Hunt

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

Start Hunting!

Translated by