how can i create a delay block(like in simulink) with matlab code

I do a FFT project, the data go in and delay for some clock to wait the next data and caculate butterfly. Example if i delay 8 clock then simulink generate 8 register(dff) and shift them every clock, and i want do that in matlab code to generate HDL code. Some one can help me? Thank you!

回答 (2 件)

Kiran Kintali
Kiran Kintali 2017 年 8 月 15 日
編集済み: Walter Roberson 2021 年 5 月 31 日

1 投票

delay in MATLAB can be modeled using persistent variable.
function y = fcn(u) % Unit delay implementation that maps to a register in hardware
persistent u_d;
if isempty(u_d)
% defines initial value driven by unit delay at time step 0
u_d = cast(0, 'like', u);
end
% return delayed input from last sample time hit
y = u_d;
% store the current input
u_d = u;

1 件のコメント

Conner Garcia
Conner Garcia 2021 年 5 月 31 日
this hasnt worked, the outputs are different. the link you sent i think there is an error when converting from Uint to a Fi object.

サインインしてコメントする。

Gareth Thomas
Gareth Thomas 2017 年 8 月 14 日

0 投票

Have you tried the pause command?

1 件のコメント

Tien Pham
Tien Pham 2017 年 8 月 14 日
No, it is register when i generate HDL code. I do a FFT project, the data go in and delay for some clock to wait the next data and caculate butterfly. If i delay 8 clock then simulink generate 8 register and shift them every clock, and i want do that in matlab code to generate HDL code. Sorry my English is weak, thank you!

サインインしてコメントする。

カテゴリ

製品

タグ

質問済み:

2017 年 8 月 14 日

編集済み:

2021 年 5 月 31 日

Community Treasure Hunt

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

Start Hunting!

Translated by