02-09-2021 09:20 PM
I'm designing a mulit-channel CIC + FIR filter. The channel count is 8.
Thanks.
02-23-2021 01:20 AM
Q1 -> May I connect the CIC's output tuser to FIR's input tuser?
A1 -> Did you take a look at CIC PG140 and FIR PG149 on the tuser?
PG140 says Two additional fields are included in multichannel implementation. The CHAN_SYNC field in the Data Output Channel TUSER
vector (m_axis_data_tuser) indicates the output corresponding to the first channel in the time-multiplexed stream. The CHAN_OUT field in the Data Output Channel TUSER vector (m_axis_data_tuser) contains the channel number for each output in the time-multiplexed steam.
For the tuser of FIR, s_axis_data_tuser is the tuser for input DATA channel, which conveys ancillary data to be passed through the core with latency equal to the input DATA to output DATA datapath and or a chan ID field to identify which Time Division Multiplexed (TDM) channel the current sample belongs to.
That said, the tuser of CIC and FIR is different, however, you can connect the chan ID field of CIC tuser to the chan ID field of FIR tuser.
Q2 -> If 1 is ok, then how to set the width of tsuer? For 8 channel CIC, the tsuer should be "010XXX' pattern, right? Then for FIR, the user field should set to 3, right? But when I generate the top wrapper from the bd file, it throws error: ERROR: [xilinx.com:ip:fir_compiler:7.2-309] /fir_compiler_0 S_AXIS_DATA-TUSER: Field width mismatch: user = 3. /cic_compiler_0 M_AXIS_DATA-TUSER: chan_sync = 1.
A2 -> The width of CIC tuser is determined by the number of channels. For the FIR tuser, if you select both user and chan ID field in the IP GUI, the width of tuser is determined by both of them. Hope it helps.
02-23-2021 01:20 AM
Q1 -> May I connect the CIC's output tuser to FIR's input tuser?
A1 -> Did you take a look at CIC PG140 and FIR PG149 on the tuser?
PG140 says Two additional fields are included in multichannel implementation. The CHAN_SYNC field in the Data Output Channel TUSER
vector (m_axis_data_tuser) indicates the output corresponding to the first channel in the time-multiplexed stream. The CHAN_OUT field in the Data Output Channel TUSER vector (m_axis_data_tuser) contains the channel number for each output in the time-multiplexed steam.
For the tuser of FIR, s_axis_data_tuser is the tuser for input DATA channel, which conveys ancillary data to be passed through the core with latency equal to the input DATA to output DATA datapath and or a chan ID field to identify which Time Division Multiplexed (TDM) channel the current sample belongs to.
That said, the tuser of CIC and FIR is different, however, you can connect the chan ID field of CIC tuser to the chan ID field of FIR tuser.
Q2 -> If 1 is ok, then how to set the width of tsuer? For 8 channel CIC, the tsuer should be "010XXX' pattern, right? Then for FIR, the user field should set to 3, right? But when I generate the top wrapper from the bd file, it throws error: ERROR: [xilinx.com:ip:fir_compiler:7.2-309] /fir_compiler_0 S_AXIS_DATA-TUSER: Field width mismatch: user = 3. /cic_compiler_0 M_AXIS_DATA-TUSER: chan_sync = 1.
A2 -> The width of CIC tuser is determined by the number of channels. For the FIR tuser, if you select both user and chan ID field in the IP GUI, the width of tuser is determined by both of them. Hope it helps.