HDL simulink: DVB-T OFDM pilot insertion/cyclic prefix

11 次查看(过去 30 天)
I'm realizing an HDL synthesizable model with simulink. I'm facing problem with blocks that needs an output sample time higher than input like
- pilot insertion: from a continuous stream of data i should insert samples from a sequence (ex: in 2k-mode, every 1512 data input i should insert 1704-1512=192 pilot and than center-zero-pad to reach 2048 without loosing any data input sample
- cyclic prefix: when all these 2048 are modulated through "HLD streaming FFT", modified to computed an iFFT, i have to add the prefix. My problem is that i can't use frame based block (like what is done in simulink ofdm demos) because they are not HDL synthetizable.
Maybe there are different way other than change the sample time of block (like using temp-fifo/RAM) but i can't figure it out and the fun thing is that doing something like that in VHDL is so easy
NB: a friend of mine has the same problem in Reed-Solomon code where from 188 byte-in he needs 204 byte-out!

回答(1 个)

John Eldon
John Eldon 2013-3-15
I am doing something similar, with a 512-point FFT. To keep things simple for a classroom exercise, I am starting with 384 data points, inserting 128 pilots and zeroes, using the streaming FFT with Re-Im swaps at input and output to make it an IFFT, and then inserting a 128-long cyclic prefix. Thus, I need to support three data rates with a 384:512:640 = 3:4:5 ratio and a least common multiple of 3*4*5 = 60. From a common fast sample rate, I count down by 20 to enable the data input block, by 15 for to enable the FFT, and by 12 to enable the channel drive.
The problem is that the HDL Coder demo streaming FFT block cannot be used inside an enabled subsystem for HDL Code generation, although it does work fine in simulation, so I think the only solution is to use three independent clock domains with rate transition blocks at the parallel structures, where the pilots and the cyclic prefixes are added in parallel at the frame rate, which is common for all three domains.
Simulink HDL Coder does not handle multiple clock domains and multirate transitions easily and elegantly -- as you pointed out, this is why Verilog and VHDL exist in the first place. I often use HDL Coder to save me some time by generating one or more large blocks, such as the FFT, and then I resort to hand-stitching these together into my handcrafted multiclock top level entity/module.
  2 个评论
John Eldon
John Eldon 2013-3-15
My revised model generates HDL code. I run the FFT at 1/15 speed, without the enable, then stick rate transition blocks into and out of it.
田
2025-5-14
Excuse me, do you have the source code for the Simulink video compression module for DVB-T that converts to a TS stream?

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 HDL Code Generation 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by