数模混合仿真详细文档.docx
- 文档编号:6550908
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:11
- 大小:211.74KB
数模混合仿真详细文档.docx
《数模混合仿真详细文档.docx》由会员分享,可在线阅读,更多相关《数模混合仿真详细文档.docx(11页珍藏版)》请在冰豆网上搜索。
数模混合仿真详细文档
用SpectreVerilog进行模数混仿,以Sigma-DeltaADC为例
SpectreVerilog模数混仿,模拟部分用Spectre,数字部分用Verilog-XL.所以还需要安装CadenceLDV软件,其内含Verilog-XL仿真器.
这里以自行设计的二阶全差分Sigma-DeltaADC为例,详细介绍用SpectreVerilog的仿真过程.所用工艺库为TSMC0.18u,电源电压:
1.8V.
1.准备
Sigma-DeltaADC分模拟和数字部分两块,其中模拟部分为调制器,数字部分为数字滤波器.如下图.其中out为调制器的输出,这里是1位0,1数据流.数字滤波器为VerilogRTL级代码.
Schematic:
Symbol:
VerilogCode:
moduleDigitalFilter(in2out,out,clk,clr,in;
outputin2out;
output[`wordsize-1:
0]out;
inputclk;
inputclr;
inputin;
regin2out;
wireclk_half1,clk_half2;
……
Endmodule
同时为了直观的观看输出结果,因此把输出的数字字转化为模拟量,这里用Verilog-A做一个理想的DA转换器。
因此最好事先用Spectre仿真模拟部分,用ModelSim或Verilog-XL等仿真数字部分.这里假定我们已有:
1模拟部分的原理图(包括Symbol;
2数字部分的Verilog代码,DigitalFilter.v,模块名:
DigitalFilter(in2out,out,clk,
clr,in;
3数字部分的TestBench代码,DigitalFilter_TB.v,模块名:
DigitalFilter_TB.
下图为最终的系统图:
2.创建数字模块的Symbol
1新建一个Cell,ViewName为
symbol,Tool:
Composer-Symbol.
2画Symbol.简单地,画一个矩形框,添加几个Lable,然后添加Pin.
3添加Pin.左边输入,右边输出.对于多位的pin可以用如out<7:
0>的样式作为pin的名字.注意:
与模拟部分相连的多位Pin最好不要用一个pin,而要用多个.如下图.
4创建对应的Verilog文件.在symbol编辑器中,Design菜单->CreatCellView->From
CellView.
会弹出的对话框,Tool/DataType一栏选择Verilog-Editor,则ToViewName会变为
functional.
点击OK,会弹出错误对话框,点No.自动弹出VI编辑器,可以看到已经生成Verilog代码的空壳.
代码文件的路径在VI编辑器的标题栏上.下面要做的就是把我们的数字模块(不是TestBench的
代码填进去.如果不想用VI编辑器,也可以用其他文本编辑器.复制代码时最好不要动自动生成
的代码.经测试,所有代码最好放在一个文件中.
这一步之后,数字部分就会有functional和symbol两个View。
这样基于Verilog代码的Symbol就创建完了.
3.创建理想DAC
这里用Cadence自动生成的理想DAC。
同步骤2,首先创建Symbol,如下图:
类似步骤2,Design菜单->CreatCellView->FromCellView.Type选择
VerilogA-EditorOK,弹出对话框,可以直接按OK,默认设置。
弹出新的对话框,选择DigitaltoAnalogConverter,然后Next。
设置位数,电压范围等参数。
如下图:
Next之后,会出现VerilogA代码,再Save和Finish。
完毕。
4.创建顶层原理图.
1新建步骤1中所说的顶层Schematic视图,这里名为MixSim,把模拟的Symbol和上面建立的
数字块Symbol放到新建的原理图中,并连好线.模拟块输入端的激励源都要加上.
2添加数字块的Pin.把数字块中除了和模拟块相连的输入端添加Pin.这里的数字块输入端
信号与模拟块共用,因此没有输入Pin。
5.创建config视图
1新建Cell,名字和步骤4中的原理图名字一致.Tool选择Hierarchy-Editor,则ViewName会自动为config.OK,
2在新出现的NewConfiguration窗口中View:
文本框为空,填入:
schematic,注意大小写.点击下方的UseTemplate…,->Name一栏选择:
spectreVerilog,OK,
3再OK关闭NewConfiguration.点击Cadencehierarchyeditor窗口的保存按钮,关闭退出
.
4这时MixSim有两个View:
config,schematic.打开config,会提示打开模式,直接OK,则原理图会被打开,并可以进行修改。
6.建立仿真环境
1打开config视图,菜单Tools->AnalogEnvironment,打开ADE.
2ADE,菜单Setup->simulator,Simulator选择spectreVerilog,OK.
3ADE,菜单Setup->Stimuli->Analog,弹出Setup窗口,选中GlobalSources,把电源电压填上,这一步和spectre一样,另外别忘了添加模型库.不再赘述.
4添加数字块的测试向量.ADE,菜单Setup->Stimuli->Digital,弹出VI编辑窗口,窗口的标题栏和信息栏都有测试向量的文件路径,可以直接修改它.系统自动生成了一个initial块,这个initial块不能改动.现在就可以把Testbench中的代码复制到这个文件中了.注意:
`timescale不要复制,模块名和端口定义不要复制,模块实例引用不要复制.也就是只能复制initial块和always块以及parameter语句.同时注意到,系统生成的的initial块中把输入信号初始化为零,因此复制进来的语句一定要避免在0时刻给这些信号赋值.本例数字块的输入与
模拟块共用,因此不用添加代码。
5打开Config视图,菜单Tools->MixSignalOpts.,会新增加一个Mixed-Signal菜单栏。
菜单Mixed-Signal->InterfaceElements->Library…
主要修改两个参数d2a-vh,d2a-vl,他们是输出数字信号的0,1电压
把ModelIO选为Input,修改a2d_v0,a2d_v1,他们是模拟转数字的阈值电压,这里为0.6V和
1.2V
7.仿真.仿真过程与Spectre一样,设置瞬态仿真时间,输出节点电压。
这是ADC仿真结果图:
由于搭建整个仿真环境比较复杂,因此经常会出错,需要耐心调试,尤其是Verilog代码错误,
仿真器只说有错,但不知道错在何处,很不爽.本教程仅适用于初学者,同时请高手指点一二,错误和走弯路都在所难免,谢谢。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数模 混合 仿真 详细 文档
![提示](https://static.bdocx.com/images/bang_tan.gif)