大家帮忙分析个问题
current steering DAC分段并不能节省面积,因为你的LSB current source选定以后,总的current source就是2^N
thermometer code只是为了增加线形度/单调性,减少glicth
单位数多的thermometer code编码也会复杂一些
12bit DAC,需要看clk rate和signal rate,
比如3MHz clk,1MHz signal那么我可以保证达不到8bit,
如果是10kHz signal,那么就可能达到10bit
2.4Msps采样率,信号600KHz,做12bit current steering dac有效位能到多少。还有如果我用8+4的结构,温度码要256个unit,如果用6+4+2,温度码只需要64+16=80个unit,这样应该可以节省面积啊
8+4的时候:温度码部分要用256个unit。没错。每个unit电流是16*ILSB。
6+4+2时:中间的4用了16个小unit,每个小unit电流4*LSB。上面的那个6呢,你要用64个大unit。为了保证每个大unit的电流等于16个小unit的电流,每个大unit由16个小unit阵列组成。注意要成阵列,不能merge到一起成一个大管子,那样就不是精确的16倍了。这样你一共使用了多少个小unit? 16+16×64=16+1024 >> 256。你这样弄,单位unit电流更小,unit个数更多!
还有一种方法是:下级的电流由上一级的一个unit均分得到。
8+4:256个unit组成阵列,阵列的总栅面积由“mismatch满足12bit匹配精度”决定。255个unit温度码控制,第256个unit被均分成16等份,做下级的LSB。总模拟部分面积是 256unit阵列+16等分电路(这个电路要求精度低,只需要大于4bit精度,面积比64unit阵列可以小很多)
6+4+2:64个大unit组成阵列,阵列的总栅面积由“mismatch满足12bit匹配精度”决定(注意对于同一个工艺,同样的设计参数和同样满足12bit匹配精度,无论多少个unit的阵列,算出来总的栅面积是一样的!也就是说,这个64unit阵列面积和前面方案的256unit面积几乎一样,只是控制开关逻辑少一点儿)。63个大unit温度码控制;第64个大unit被等分16,然后15份被又是温度码控制;第16份被分成4份,做LSB。总模拟部分面积 64大unit阵列(面积和前面方案的256阵列几乎一样) + 16等分电路(大于6bit精度) +4等分电路(大于2bit精度)。
可以看出6+4+2模拟部分面积没有缩小! 反而会由于等分电路多精度要求高而面积变大!
如果你实在想减小面积,可以做动态补偿。做成6+6的方案。
低位的6是二进制码,要保证6bit精度。
高位的6是温度码,本身面积远不够12bit精度。比如只做成10bit精度,这样面积只是12bit精度的1/16,面积大大缩小。如果做成8bit精度的,那么能减到1/256。非常可观。
可是这时精度不够12bit了,怎么办?弄一个自动校准电路和一个基准电流,不停地用基准电路去循环校准高6位的unit,使他们的电流等于基准电流。只要校准做好,电流记忆保持部分弄好,也可以达到12bit精度。
这个电路比静态不校准的肯定复杂多了,建议先把静态不校准的做好做明白再搞这个。
--------------------------------
打这么多字,累死了
首先,我们来说说面积问题, 你所谓的80个unit 和256个unit,这两个unit是不一样的!
你的DAC的每一个LSB的电流是不是从一个current source流出来的?
如果你回答yes,那么就需亚2^N个这样的current source,
至于他们几个一组,是binary还是thermometer,那就是编码的问题
但是两者需要一样多的cell,面积也就是一样的
然后就是你的clk rate/ signal rate的问题,600KHz/2.4MHz,
你的信号是直接输出到片外,还是给片内其他模块作为输入?
不会是发射机的基带DAC吧,
2.4MHz clk送出来的600kHz信号如果用spectrum analyzer 分析频谱,肯定是非常差的
有很多clk的谐波在里面,而且加滤波器也很难滤干净的,应为信号带宽和时钟离的太近了
如果你还有相关的同步clk在对DAC进行sample,那么就是另外一回事了,
这就取决于你的DAC settling是否足够快,线形度是否足够好了。
但是这种应用似乎比较少见,应为接收一方不会得到发送方的clk和相关的timing,
仅仅只是把这当作一个模拟信号,顶多再定义一个信号带宽
首先感谢fuyibin耐心的讲解,在这个论坛上还从来没有人为一个问题解释这么详细的,多谢多谢。我要做的就是发射机的基带DAC,发射的载波为3k~600k,采样率2.4MHz,如果按你说的采样率太低了,那我是否应该在data进入DAC之前加插值滤波呢,比如4x插值,然后把DAC的采样率提高到9.6Msps,这样DAC后面经过低通滤波会不会得到很好的SFDR呢
还有一个问题,能否讲讲关于DAC的测试,如果测DNL和INL我怎么把阶梯的模拟信号从示波器上load出来,貌似示波器没这个功能。还有测试SFDR直接用频谱分析仪就行,但如果仿真呢,我对输出的正弦模拟信号怎么处理,做fft?
假如DAC后面的模拟滤波器足够强大,保证在2.4MHz的频率上能有足够的衰减,是不是用2.4Msps的采样率就ok了呢
呵呵,我也是坛子里的小混混
通常来说数字基带->DAC->filter->mixer->PA
你们搞的是什么东西啊,基带带宽3k~600k,载波多少啊
基带处理的频率不高啊,才2.4MHz,为什么就不用高一点处理频率?
用个50MHz处理器,出来的data给DAC,那SFDR就会好多了,其实就是oversampling
不过这个是整个architecture需要去确定的,DAC只是整个信号通路里的一个环节
到底什么样的应用,需要什么样的输出,应该有人明确的知道
关于DAC的测试,首先需要做静态测试,就是每一个code的输出都要测,看看INL/DNL
动态测试稍微麻烦一点,要送sinwave data,然后用spectrum analyzer,
而且片内DAC输到片外要用buffer,还要filter
但是通常来说INL/DNL都好,只要DAC settling足够快,glitch小,动态性能不会差的
1. sinwave data 怎么产生呢
2. 之所以要3~600k的基带带宽,是因为我们的通信系统中有上百个子载波
3. 我还想问一个问题,如果DAC后面的滤波器的过渡带足够陡,比如说-60dB/10dec,那么2.4Msps采样率配合600ksignal是否可以呢
4. 还有我们评估一个DAC的性能是测试DAC的输出,还是测试DAC+filter的输出呢