CIC register widths
1: 28
2: 28
3: 24
4: 20
5: 19
6: 18
Thanks very much for your reply.Additional question, I don't understand how a DC component is generated in your CIC. Also it shouldn't count for ENOB, I think. You can try to use rounding in the last stage.
Thanks very much for your reply.I suggest you directly check the bits and max/min values for your input range. This could be done at output of each stage. You can then decide LSBs to be discarded (with rounding) and MSBs to be discarded (with minimum clipping).
Thanks very much for your reply.I won't care for small DC offset because it's typically far below real SD modulator offset and removed in overall system calibration.
To understand the problem nature, you should check DC offset in actual LSB units. Could be a problem of signed/unsigned 16 Bit full scale. May be you are expecting accuracy beyond available resolution?
Your table shows something slightly wrong at sample 515 at both truncation and rounding.Thanks very much for your reply.
I have understood it. But when I use the rounding method, a dc component appears. The figures are as #6.
--- Updated ---
Thanks very much for your reply.
Sorry, i can not understand 'check DC offset in actual LSB units'. i accumulate 512 pieces of data to evaluate the dc component as shown in the following figure.
View attachment 193294
Shouldn't the smaller accumulated value correspond to the smaller a dc component? Is my thinking wrong?
I operate in my circuit using the binary complement with signed (fixdt(1, B)). For the input with an ENOB exceeding 16 bits, I want to obtain the output with an ENOB of 16 bits by the CIC filter.
yes, sorry, i forget it. but it is also incorrect. Because the sum of ideal modulator output is 0.Your table shows something slightly wrong at sample 515 at both truncation and rounding.
The values of no-truncation should be divided by 4 to get other columns.
yes, sorry, i forget it. but it is also incorrect. Because the sum of ideal modulator output is 0.
View attachment 193296
I have also noticed this problem. I employed the method of round(P1/4). But the 512th data is equal to -16793 by round(P1/4), perhaps it is due to the data type.Your rounding shows mismatch as below:
x=[-67301,-67174]
floor(x/4) = -16826 -16794 (truncation)
round(x/4) = -16825 -16794 (rounding)
what rounding method do you use?
Thanks very much for your patient reply.The dc level is very low @ -110dB
For better ENOB you may try truncating one lsb or none if MSBs allow i.e. if MSBs are unused or clip peaks.
I am sorry to reply to your post late.I know you are targeting 16 bits. I suggested if you can give up on MSB side instead of truncating LSBs.
LSBs represent fine information of any signal. MSBS are also needed but it is sometimes possible to clip those occasional peaks onto 16 bits final output. For example you may remove one LSB and one MSB or leave the two LSBs but remove two MSBs.
clipping MSBs will have some effect (non-linear) but could be tolerated.
Yes, it is indeed the MSB that can not be truncated. However, I can't understand why the ENOB decreases due to the dc component after being truncated from LSB by rounding.MSB can't be truncated in CIC by operation principle. Refer to original Hogenauer paper or textbook explaining CIC operation in case of doubt.
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?