在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3876|回复: 5

[求助] 理想ADC的VerilogA模型讨论

[复制链接]
发表于 2022-8-2 17:20:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
找到一个理想ADC的verilogA模型,ADC的原理如图2,对于此N位的ADC,量化编码的过程即为红框内的代码。不过略有不同的是对输入信号进行2的倍乘,Vref不变并与之比较。这个是我的理解。
我的问题在于这种ADC的输入有没有要求,或者说输入一个正弦波信号进行模数转换,会不会振幅过高而导致该ADC输出不正常。因为理想ADC是用来测试自己设计的DAC的,会不会输入信号振幅过大导致DAC无法还原本的信号。
image.png
图1
image.png
图2
 楼主| 发表于 2022-8-2 17:24:08 | 显示全部楼层
本帖最后由 理科生 于 2022-8-2 17:27 编辑




  1. module adc_10bit_ideal(vd9,vd8,vd7,vd6,vd5,vd4,vd3,vd2, vd1,vd0, vin, vclk);
  2. electrical vd9, vd8,vd7, vd6, vd5, vd4, vd3, vd2, vd1, vd0, vin, vclk;
  3. parameter real trise = 0.1n  from [0:inf);
  4. parameter real tfall = 0.1n  from [0:inf);
  5. parameter real tdel = 0 from [0:inf);
  6. parameter real vlogic_high=1;
  7. parameter real vlogic_low = 0;
  8. parameter real vtrans_clk=0.5;
  9. parameter real vref=1;
  10. `define NUM_ADC_BITS 10
  11.             real unconverted;
  12.             real halfref;
  13.             real vd[0: `NUM_ADC_BITS-1];
  14.             integer i;
  15.             analog begin
  16.                    @(initial_step) begin
  17.                           halfref = vref /2;
  18.                     end
  19.                    @(cross(V(vclk) - vtrans_clk, 1)) begin
  20.                           unconverted = V(vin);
  21.                           for (i = (`NUM_ADC_BITS-1); i >= 0 ; i= i - 1) begin
  22.                           vd[i]=0;
  23.                           if(unconverted > halfref) begin
  24.                           vd[i]= vlogic_high;
  25.                           unconverted=unconverted - halfref;
  26.                     end else begin
  27.                           vd[i]=vlogic_low;
  28.                     end
  29.                           unconverted = unconverted*2;
  30.                     end
  31.             end

  32. V(vd9) <+ transition( vd[9], tdel, trise, tfall );
  33. V(vd8) <+ transition( vd[8], tdel, trise, tfall );
  34. V(vd7) <+ transition( vd[7], tdel, trise, tfall );
  35. V(vd6) <+ transition( vd[6], tdel, trise, tfall );
  36. V(vd5) <+ transition( vd[5], tdel, trise, tfall );
  37. V(vd4) <+ transition( vd[4], tdel, trise, tfall );
  38. V(vd3) <+ transition( vd[3], tdel, trise,tfall );
  39. V(vd2) <+ transition( vd[2], tdel, trise, tfall );
  40. V(vd1) <+ transition( vd[1], tdel, trise, tfall );
  41. V(vd0) <+ transition( vd[0], tdel, trise, tfall );
  42. `undef NUM_ADC_BITS
  43.   
  44. end

  45. endmodule


复制代码

发表于 2022-8-2 20:05:45 | 显示全部楼层
ADC是有量化范围的,超过范围无法恢复信号,事实上就是出现削顶削底
发表于 2022-8-18 15:06:38 | 显示全部楼层
请问该如何仿真呢
发表于 2024-8-29 16:15:00 | 显示全部楼层
感谢分享
发表于 2024-10-12 10:50:48 | 显示全部楼层


DAC小白 发表于 2022-8-18 15:06
请问该如何仿真呢


请问你现在会设置这个仿真了嘛
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-23 23:58 , Processed in 0.018163 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表