欧洲世界杯_06年世界杯梅西 - hello186.com

【VerilogA】4位DAC的编写与测试

2025-08-05 10:37:20 世界杯经典比赛 7878

目录

修改默认文本编辑器创建cellcell配置说明验证

修改默认文本编辑器

virtuoso默认的编辑器用不惯,改成gedit

editor="gedit"

创建cell

Type选择VerilogA,随后OK 随后会弹出已填写默认模板的文本窗口。 将代码修改如下。VerilogA的语法和Verilog大差不差,但还是多少有点不同。细节可参考OVI_VerilogA或者verilogams。在这里笔者不讲VerilogA的语法细节。

// VerilogA for INVlib, DAC_4bits_nc_va, veriloga

`include "constants.vams"

`include "disciplines.vams"

module DAC_4bits_nc_va(D3,D2,D1,D0,out);

input D3,D2,D1,D0;

output out;

parameter real vdd=1.8;

parameter real tdelay=0;

parameter real trise=0;

parameter real tfall=0;

parameter real vref=1.8;

voltage D3,D2,D1,D0,out;

real code,out_temp;

analog begin

code=0;

code=code+((V(D0)>vdd/2) ? pow(2,0):0);

code=code+((V(D1)>vdd/2) ? pow(2,1):0);

code=code+((V(D2)>vdd/2) ? pow(2,2):0);

code=code+((V(D3)>vdd/2) ? pow(2,3):0);

out_temp=code/16*vref;

V(out)<+ transition(out_temp,tdelay,trise,tfall);

end

endmodule

修改完后记得保存。 如果出现错误,会出现以下报错(这份代码应该是不会出现问题的,作为参考,我使用的是IC615) 保存完后会弹出一个窗口问你要不要建立symbol,一路无脑OK就完事了,记得save&check。

cell配置说明

对器件按q,在CDF Parameter of view中选择veriloga,可以看到以下参数可供修改。 vdd就是高电平,默认低电平是0了,如果输入大于vdd/2则为高电平,小于则为低电平。 vref为参考电压。 其他的参数详情请参阅transition函数。

验证

创建测试用的原理图 D0到D3为方波信号输入。out端接了给电容负载。vdd为1V。 ADE的设置如下。这里笔者把D0-D3转化为数字的总线形式表达。 仿真出来的结果如下。 IN<3:0>为输入的二进制对应的十进制表达。从0到15依次递加 net7就是out。 可见满足理想DAC的一般特性。 可能眼睛尖的看客会注意到DAC跳变有尖峰。这是因为方波输入我没有调的很准确,出现了不应该出现的数字输入。且仿真步长较大,导致看起来像尖峰。