1、用SpectreVerilog进行模数混仿用SpectreVerilog进行模数混仿,以Sigma-Delta ADC为例 loghere loghereSpectreVerilog模数混仿, 模拟部分用Spectre, 数字部分用Verilog-XL. 所以还需要安装Cadence LDV软件, 其内含Verilog-XL仿真器.这里以自行设计的二阶全差分Sigma-Delta ADC为例, 详细介绍用SpectreVerilog的仿真过程. 所用工艺库为TSMC 0.18u,电源电压:1.8V.1. 准备Sigma-Delta ADC分模拟和数字部分两块, 其中模拟部分为调制器, 数字部分
2、为数字滤波器. 如下图. 其中out为调制器的输出, 这里是1位0,1数据流. 数字滤波器为Verilog RTL级代码. Schematic:Symbol:Verilog Code:module DigitalFilter (in2out, out, clk, clr, in); output in2out; output wordsize-1:0 out; input clk; input clr; input in; reg in2out; wire clk_half1, clk_half2; Endmodule同时为了直观的观看输出结果,因此把输出的数字字转化为模拟量,这里用Veril
3、og-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. 创建数字模块的Symbol1) 新建一个Cell, View Name为symbol, Tool:
4、Composer-Symbol.2) 画Symbol. 简单地, 画一个矩形框, 添加几个Lable, 然后添加Pin.3) 添加Pin. 左边输入, 右边输出. 对于多位的pin可以用如out的样式作为pin的名字. 注意: 与模拟部分相连的多位Pin最好不要用一个pin, 而要用多个. 如下图.4) 创建对应的Verilog文件. 在symbol编辑器中, Design菜单-CreatCellView-From CellView. 会弹出的对话框, Tool/Data Type一栏选择Verilog-Editor, 则To View Name会变为functional. 点击OK, 会弹出
5、错误对话框, 点No. 自动弹出VI编辑器, 可以看到已经生成Verilog代码的空壳. 代码文件的路径在VI编辑器的标题栏上. 下面要做的就是把我们的数字模块(不是TestBench)的代码填进去. 如果不想用VI编辑器, 也可以用其他文本编辑器. 复制代码时最好不要动自动生成的代码. 经测试, 所有代码最好放在一个文件中. 这一步之后,数字部分就会有functional和symbol两个View。这样基于Verilog代码的Symbol就创建完了.3. 创建理想DAC这里用Cadence自动生成的理想DAC。 同步骤2,首先创建Symbol,如下图:类似步骤2,Design菜单-Creat
6、CellView-From CellView. Type选择VerilogA-EditorOK,弹出对话框,可以直接按OK,默认设置。弹出新的对话框,选择Digital to Analog Converter, 然后Next。设置位数,电压范围等参数。如下图:Next之后,会出现VerilogA代码,再Save和Finish。完毕。4. 创建顶层原理图.1) 新建步骤1中所说的顶层Schematic视图, 这里名为MixSim, 把模拟的Symbol和上面建立的数字块Symbol放到新建的原理图中, 并连好线. 模拟块输入端的激励源都要加上. 2) 添加数字块的Pin. 把数字块中除了和模拟块
7、相连的输入端添加Pin. 这里的数字块输入端信号与模拟块共用,因此没有输入Pin。5. 创建config视图1) 新建Cell, 名字和步骤4中的原理图名字一致. Tool选择 Hierarchy-Editor, 则View Name会自动为config. OK, 2) 在新出现的New Configuration窗口中View: 文本框为空, 填入: schematic, 注意大小写. 点击下方的 Use Template, - Name一栏选择: spectreVerilog, OK, 3) 再OK关闭New Configuration. 点击Cadence hierarchy edito
8、r窗口的保存按钮, 关闭退出.4) 这时MixSim有两个View: config, schematic. 打开config, 会提示打开模式, 直接OK, 则原理图会被打开,并可以进行修改。6. 建立仿真环境1) 打开config视图, 菜单Tools-Analog Environment, 打开ADE.2) ADE, 菜单Setup-simulator, Simulator选择spectreVerilog, OK.3) ADE, 菜单 Setup-Stimuli-Analog, 弹出Setup窗口, 选中Global Sources, 把电源电压填上, 这一步和spectre一样, 另外别
9、忘了添加模型库. 不再赘述.4) 添加数字块的测试向量. ADE, 菜单 Setup-Stimuli-Digital, 弹出VI编辑窗口, 窗口的标题栏和信息栏都有测试向量的文件路径, 可以直接修改它. 系统自动生成了一个initial块, 这个initial块不能改动. 现在就可以把Testbench中的代码复制到这个文件中了. 注意: timescale不要复制, 模块名和端口定义不要复制, 模块实例引用不要复制. 也就是只能复制initial块和always块以及parameter语句. 同时注意到, 系统生成的的initial块中把输入信号初始化为零, 因此复制进来的语句一定要避免在0
10、时刻给这些信号赋值. 本例数字块的输入与模拟块共用,因此不用添加代码。5) 打开Config视图,菜单Tools-Mix Signal Opts., 会新增加一个Mixed-Signal菜单栏。菜单Mixed-Signal - Interface Elements - Library主要修改两个参数d2a-vh,d2a-vl,他们是输出数字信号的0,1电压把Model IO选为Input,修改a2d_v0, a2d_v1,他们是模拟转数字的阈值电压,这里为0.6V和1.2V7. 仿真.仿真过程与Spectre一样,设置瞬态仿真时间,输出节点电压。这是ADC仿真结果图:由于搭建整个仿真环境比较复杂, 因此经常会出错, 需要耐心调试,尤其是Verilog代码错误, 仿真器只说有错, 但不知道错在何处, 很不爽.本教程仅适用于初学者,同时请高手指点一二,错误和走弯路都在所难免,谢谢。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1