微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微波和射频技术 > RFIC设计学习交流 > 关于SAR ADC的一个VerilogA的验证程序

关于SAR ADC的一个VerilogA的验证程序

时间:10-02 整理:3721RD 点击:
版上大神,深夜发帖,诚心求教: 我做的是一个16位的sarADC ,然后现在需要做个小验证,但验证模块是使用verilogA写的,verilog还勉强能写能读,但verilogA就真心不行了,模块在cadence里边跑,这验证模块功能就是将16位数字输出给转化成模拟阶梯曲线
大家能否帮我解读一下,程序里边的 vrefvtrans以及最后一行计算公式里面-2.5 的意义,我是认为vref是电源电压(或者分辨范围),vtrans是高低电平的分界点,但是最后一行计算式中的-2.5的意义始终不懂啊,在下先谢过!

自己顶一个,谢谢大神!

用于消除信号的直流量,产生标准的输出正余弦波?假如加的信号是正余弦的话。个人猜测,也不懂

人工上浮 一下下,谢谢,跪求大神解读啊!

3楼应该正解,没什么意义的,你不用考虑它,结果对了就行了

这个DAC行为级Verilog-A程序.Vtrans是对输入信号高低的判断阈值,2.5伏,大概电源就是2.5伏,或者5伏也有可能。
Vref是满幅数字输入所对应的模拟输出电压。
最后减掉2.5是平移Offset,效果是输出对应的范围是-2.5 ~ 2.5伏。因为这是一段很古老的代码,那时候还用正负2.5伏的电源。

verilog 和verilog A有很大的区别吗?

学习了

who know it ?!

// VerilogA for Vxa_tb, SARADC_va, veriloga
`include "constants.vams"
`include "disciplines.vams"
`define N 10
module SARADC_va(Vip,Vin,CLK,D);
input Vip,Vin,CLK;
electrical Vip,Vin,CLK;
output [`N-1:0] D;
electrical [`N-1:0] D;
parameter real vmax=1;
parameter real vmin=0;
parameter real one=1.0;
parameter real zero=0.0;
parameter real vth=0.5;
parameter real slack=10.0p from (0:inf);
parameter real trise=4.0n from (0:inf);
parameter real tfall=4.0n from (0:inf);
parameter real tconv=1.0u from (0:inf);
parameter integer traceflag=0;
real sample,vref,lsb,voffset,vdac;
real vd[0:`N-1];
integer ii;
analog begin
@(initial_step or initial_step("dc","ac","tran","xf")) begin
vref=(vmax-vmin)/2.0;
vdac=vref;
lsb=(vmax-vmin);
voffset=vmin;
end

//SAR ADC的行为描述
@(cross (V(CLK)-vth,1,slack,CLK.potential.abstol)) begin
vref=(vmax-vmin)/2.0;
vdac=0;
sample=V(Vip,Vin);
for(ii=`N-1; ii>=0; ii=ii-1) begin
vd[ii]=0;
vdac=vdac+vref;
if(sample>vdac) begin
vd[ii]=one;
end
else begin
vd[ii]=zero;
vdac=vdac-vref;
end
vref=vref/2.0;
end
end
generate i (`N-1,0) begin
V(D[i])<+transition(vd[i],tconv,trise,tfall);
end
end
endmodule
`undef N

马克,回头看

mark一记

原来如此,知识好丰富那在代码中去掉-2.5就ok 了吧

我想问一下16位SAR ADC采用什么结构和校准算法?我找到的文献感觉很少

学习了,系欸小e

下来看看 学习一下

基于运算放大器和模拟集成电路的电路设计

// VerilogA for Vxa_tb, SARADC_va, veriloga
`include "constants.vams"
`include "disciplines.vams"
`define N 10
module SARADC_va(Vip,Vin,CLK,D);
input Vip,Vin,CLK;
electrical Vip,Vin,CLK;
output [`N-1:0] D;
electrical [`N-1:0] D;
parameter real vmax=1;
parameter real vmin=0;
parameter real one=1.0;
parameter real zero=0.0;
parameter real vth=0.5;
parameter real slack=10.0p from (0:inf);
parameter real trise=4.0n from (0:inf);
parameter real tfall=4.0n from (0:inf);
parameter real tconv=1.0u from (0:inf);
parameter integer traceflag=0;
real sample,vref,lsb,voffset,vdac;
real vd[0:`N-1];
integer ii;
analog begin
@(initial_step or initial_step("dc","ac","tran","xf")) begin
vref=(vmax-vmin)/2.0;
vdac=vref;
lsb=(vmax-vmin);
voffset=vmin;
end

//SAR ADC的行为描述
@(cross (V(CLK)-vth,1,slack,CLK.potential.abstol)) begin
vref=(vmax-vmin)/2.0;
vdac=0;
sample=V(Vip,Vin);
for(ii=`N-1; ii>=0; ii=ii-1) begin
vd[ii]=0;
vdac=vdac+vref;
if(sample>vdac) begin
vd[ii]=one;
end
else begin
vd[ii]=zero;
vdac=vdac-vref;
end
vref=vref/2.0;
end
end
generate i (`N-1,0) begin
V(D[i])<+transition(vd[i],tconv,trise,tfall);
end
end
endmodule
`undef N

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top