数模混合仿真

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

反 相 器 1
与 非 门
或 非 门
B
D
E
将这段代码另存为一个 analog_mix.v文件
模拟电路端口全部与数字电路相连
IN D digital2 A X1 digital3 E OUT1 B A analog2 digital4 X3 C F OUT2
Digital digital2(.A(X1),.D(IN)); Digital digital3(.B(X2),.E(OUT1)); Digital digital4(.C(X3),.F(OUT2)); AD2 analog2(.B(X2),.C(X3),.A(X1));
testbench作用: • 定义顶层电路互连线 • 连接所有顶层电路 • 初始化,添加激励 • 确定输入文件来源 • 确定输出数据存放位置
OUT2
X3
Module testbench(); wire X1,X2,X3; OUT2 wire OUT1,OUT2,OUT3; OUT2 Digital_mix digtal_mix1(.IN(X1),.OUT1(X2),.OUT2(X3)); Digital_mix digital_mix2(.IN(X2),.OUT1(OUT1),.OUT2(OUT2)); analog_mix analog_mix1(.IN(X3),.OUT(OUT3)); Initial begin//记录输出文件、输入数据文件、设置仿真时间等 analog_mix1 $dumpfile(“verilog.vcd”);$dumpvars(0,testbench.v); #1000; OUT3 $finish; IN OUT end endmodule „inc“analog_mix.v‟‟ „inc “digital_mix.v” „inc “digital.v”
Digital Digital1(A,B);位置关联 Digital Digital2(C,D);位置关联 Digital Digital3(.A(X1),.B(X2));名称关联
纯模拟电路hspice定义
纯模拟电路 AD1 opa1 D opa2 纯模拟电路 AD2
E A
opa1
opa2
B
opa2
Just care 对外接口!!!
纯数字电路module调用
module Digita1 A 反 相 器 1 与 非 门 或 非 门 module Digital2 B X1 module Digital3 或 非 门 A 反 相 器1 与 非 门 或 非 门
C
反 相 器 1
X2
B
与 非 门
D
<模块名><实例名>(<端口列表>);
.SUBCKT AD1 D E 内部连接关系省去 .ends AD1
C .SUBCKT AD2 A B C 内部连接关系省去 .ends AD2 另存为AD2.spi文件
Just care 对外接口!!!
另存为AD1.spi文件
模拟数字端口通信
纯数字电路模块 digital1
IN x1 A
纯模拟电路 analog1
(1)把系统划分成模块; (2)规划各模块的接口; (3)对模块编程并连接各模块完成系统设计。
Module A Module d MODULE B MODULE C
Module定义
module <模块名>(<端口列表>); <定义> <模块条目> endmodule 其中: <模块名>是模块唯一的标识符; <端口列表>是输入、输出和双向端口的列表,这些端口用 来与其他模块进行连接。 <定义>是一段程序,用来指定数据对象为寄存器型、存储 器型、线型以及过程块,诸如函数块和任务块; <模块条目>也是一段程序,将上面<定义>和<端口>组合起 来,是说明这个模块要做什么的语句; endmodule之后没有分号。 Module and(a,b,c) Input a,b; Output c; Assign yn=!a;//逻辑关系 Endmodule
X2
B
C
将上面电路打包为digital_mix
digital_mix IN D digital2 A X1 digital3 E OUT1 B A analog2 digital4 X3 C F OUT2 将这段代码另存为一个digital_mix.v 文件
MODULE digital_mix(IN,OUT1,OUT2) INPUT IN; OUTPUT OUT1,OUT2; WIRE X1,X2,X3; Digital digital2(.A(X1),.D(IN)); Digital digital3(.B(X2),.E(OUT1)); Digital digital4(.C(X3),.F(OUT2)); AD2 analog2(.B(X2),.C(X3),.A(X1)); ENDMODULE
opa1 opa2 OUT
反相 器1
与 非 门
或 非 门
B
D
E
Digital digital1( .A(IN), .B(x1)); AD1 analog1(.D(x1),.E(OUT));
如此实现数字和模拟的互连
将上面电路打包为analog_mix
analog_mix digital1 IN X1 A analog1 opa1 opa2 OUT MODULE analog_mix(IN,OUT) INPUT IN; OUTPUT OUT; WIRE X1; Digital digital1(.A(IN),.D(X1)); AD1 analog1(.D(X1),.E(OUT)); ENDMODULE
vcsAD.init
• The choose Command
choose xa –n analog_top.spi –c xa.cmd;
选择xa作为模拟电路仿真工具,模拟电路网表来自analog_top.spi xa.cmd作为模拟仿真器设置选项
• The a2d Command &The d2a command
Interface A/D and D/A Signal Conversions
连接模拟和数字电路的接口在进行通信时要进行数据转换 模拟电路 数字电路 信号从模拟电路进入数字电路,需要将模拟电信号转换为数字 逻辑信号,需要一个阈值判断 a2d loth=0.35 hith=0.65 node=top.dout; 同样信号从数字电路进入模拟电路,需要将数字逻辑转换为模 拟电信号 D2a hiv=3 lov=0 cell=inva port=a rf_time=100p delay=50p;
数模混合仿真
数模混合仿真概念
电路系统
数字电路 Verilog 模拟电路 晶体管 数字电路 Verilog描述 模拟电路 晶体管级描述
数模混合电路架构
数字电路C
模拟电路A L1 A B C 数字电路B D E L3 L5 F H L4
G
L2
模拟电路B
in out
模拟电路与数字电路相连电路示例
数模混合电路系统的模块化设计
选择xa作为模拟电路仿真工具,模拟电路网表来自analog_top.spi xa.cmd作为模拟仿真器设置选项 • • • • • The a2d Command &The d2a command The duplicate_net_inst_name Command 允许模块实例和线使用相同名称 Optimize_shadowfile; 阻止数字电路与数字电路之间的接口优化,从而减少接口端点 The param_pass Command ;允许数字端口和模拟端口通信 The print_thru_net Command lower the speed print_thru_net a2a|d2d|all; Use the print_thru_net command to force NanoSim/HSIM/CustomSim to instantiate a dummy A/D or D/A converter at the given mixed-net to make an image of through-nets visible in the other domain.
X2
B
C
整个电路系统的连接 Digital_mix digtal_mix1(.IN(X1),.OUT1(X2),.OUT2(X3));
Digital_mix digital_mix2(.IN(X2),.OUT1(OUT1),.OUT2(OUT2)); analog_mix analog_mix1(.IN(X3),.OUT(OUT3)); digital_mix1 digital_mix2 X2 IN OUT1 OUT1 IN OUT2 OUT2
一个问题:testbench里面并不包含模拟电路文件, 则仿真器如何调用模拟电路呢?
基于VCS-XA的混合仿真方法
电路系统 VCS: Verilog compile simulator 数字电路仿真器
XA: 模拟电路仿真器 数字电路 VCS 模拟电路 XA
运行VCS-XA协 同仿真,VCS是 主仿真器,当遇 到模拟电路时, 就会调用XA对 其进行仿真
• • • • The duplicate_net_inst_name Command 允许模块实例和线使用相同名称 Optimize_shadowfile; 阻止数字电路与数字电路之间的接口优化,从而减少接口端点 The param_pass Command ;允许数字端口和模拟端口通信 The print_thru_net Command lower the speed
将用到的模拟电路文件全部打包为analog_top.spi
analog_top.spi AD1.spi opa1 opa2
AD2.spi opa1
opa 2 B opa2 C
D
E
A
.param VDDVAL=3v .global vdd gnd vvdd vdd 0 dc VDDVAL vgnd gnd 0 dc 0v .inc models .inc AD1.spi .inc AD2.spi
and A B C
纯数字电路module定义
纯数字电路模块 module Digital
Module <模块名> (端口名); Module Digital(A,B); INPUT A; OUTPUT B; //内部逻辑描述此处略去 Endmodule
A
反相器1
与非门
或非门
B
因此我们将其打包为一个 仅包含外界接口的module, 另存为digital.v文件 内部逻辑关系等verilog描 述由数字电路工程师提供
all prepared
1.testbench.v 2.analog_top.spi 3.vcsAD.init
准备好待执行文件和环境后,运行指令,产生输 出文件
1.Vcs ./verilog/testbench.v –ad=vcsAD.init –o simv 将电路网表提交给vcs和xa仿真器,生成可执行二进制文件 simv
பைடு நூலகம்
2.Simv 得到输出结果
总结: 重点在于对电路系统本身的理解,明确电 路的层次,配置正确的接口
X1
OUT1
OUT2 仅实现了互连,但仿真器要如何 去仿真呢?? 且这些X1,X2,X3等线在哪里定义 呢?
X 3
analog_mix1
OUT3
IN OUT
testbench
testbench.v
testbench digital_mix1 X1 IN OUT1 X2 digital_mix2 OUT1 OUT1 IN
数模混合仿真命令
vcs ./verilog/testbench.v –ad=vcsAD.init–o my_simv
测试平台
混合仿真选项设置
输出二进制可执行文件
OK
vcsAD.init
• The choose Command
choose xa –n analog_top.spi –c xa.cmd;
相关文档
最新文档