数模混合仿真胡宗杰
E
opa1 A
opa2
B
opa2
.SUBCKT AD1 D E 内部连接关系省去 .ends AD1
另存为AD1.spi文件
Just care 对外接口!!!
C
.SUBCKT AD2 A B C 内部连接关系省去 .ends AD2 另存为AD2.spi文件
模拟数字端口通信
纯数字电路模块 digital1
Interface A/D and D/A Signal Conversions
模拟电路
数字电路
连接模拟和数字电路的接口在进行通信时要进行数据转换
信号从模拟电路进入数字电路,需要将模拟电信号转换为数字 逻辑信号,需要一个阈值判断 a2d loth=0.35 hith=0.65 node=top.dout;
• 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
将这段代码另存为一个digital_mix.v 文件
整个电路系统的连接 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));
OUT2 OUT2
wire OUT1,OUT2,OUT3;
Digital_mix digtal_mix1(.IN(X1),.OUT1(X2),.OUT2(X3));
Digital_mix digital_mix2(.IN(X2),.OUT1(OUT1),.OUT2(OUT2));
analog_mix1
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 • The duplicate_net_inst_name Command 允许模块实例和线使用相同名称 • Optimize_shadowfile; 阻止数字电路与数字电路之间的接口优化,从而减少接口端点 • The param_pass Command ;允许数字端口和模拟端口通信 • The print_thru_net Command lower the speed
数字电路 VCS
XA: 模拟电路仿真器
模拟电路 XA
运行VCS-XA协 同仿真,VCS是 主仿真器,当遇 到模拟电路时, 就会调用XA对 其进行仿真
数模混合仿真命令
vcs ./verilog/testbench.v –ad=vcsAD.init–o my_simv
测试平台
OK
混合仿真选项设置 输出二进制可执行文件
让我们共同进步
(1)把系统划分成模块; (2)规划各模块的接口; (3)对模块编程并连接各模块完成系统设计。
Module A Module d
MODULE B
MODULE C
Module定义
module <模块名>(<端口列表>); <定义> <模块条目>
endmodule 其中:
Module and(a,b,c) Input a,b; Output c; Assign yn=!a;//逻辑关系
.inc models
.inc AD1.spi
C
.inc AD2.spi
vcsAD.init
• The choose Command
choose xa –n analog_top.spi –c xa.cmd;
选择xa作为模拟电路仿真工具,模拟电路网表来自analog_top.spi xa.cmd作为模拟仿真器设置选项
IN A
反相
与
或
器1
非
非
门
门
纯模拟电路 analog1
x1
B
D
opa1
opa2
E OUT
Digital digital1( .A(IN), .B(x1)); AD1 analog1(.D(x1),.E(OUT));
如此实现数字和模拟的互连
analog_mix
digital1
IN A 反 相 器 1
同样信号从数字电路进入模拟电路,需要将数字逻辑转换为模 拟电信号 D2a hiv=3 lov=0 cell=inva port=a rf_time=100p delay=50p;
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 得到输出结果
总结:
重点在于对电路系统本身的理解,明确电 路的层次,配置正确的接口
放映结束 感谢各位观看!
谢 谢!
endmodule ‘inc“analog_mix.v’’
‘inc “digital_mix.v”
‘inc “digital.v”
一个问题:testbench里面并不包含模拟电路文件, 则仿真器如何调用模拟电路呢?
基于VCS-XA的混合仿真方法
电路系统
VCS: Verilog compile simulator 数字电路仿真器
digital_mix1
X1
OUT1 X2
IN
OUT2
digital_mix2
OUT1
IN
OUT1
OUT2 OUT2
X 3
analog_mix1
OUT3
IN
OUT
仅实现了互连,但仿真器要如何 去仿真呢?? 且这些X1,X2,X3等线在哪里定义 呢?
testbench
testbench
digital_mix1
analog_mix analog_mix1(.IN(X3),.OUT(OUT3)); Initial begin//记录输出文件、输入数据文件、设置仿真时间等
$dumpfile(“verilog.vcd”);$dumpvars(0,testbench.v);
OUT3 #1000;
IN OUT
$finish; end
<模块名><实例名>(<端口列表>);
Digital Digital1(A,B);位置关联 Digital Digital2(C,D);位置关联 Digital Digital3(.A(X1),.B(X2));名称关联
纯模拟电路hspice定义
纯模拟电路 AD1
纯模拟电路 AD2
opa1 D
opa2
将上面电路打包为analog_mix
analog1
X1
opa1
与 或B D
非非
门门
opa2
OUT E
MODULE analog_mix(IN,OUT) INPUT IN; OUTPUT OUT; WIRE X1; Digital digital1(.A(IN),.D(X1)); AD1 analog1(.D(X1),.E(OUT)); ENDMODULE
数模混合仿真 by 胡宗杰
数字电路 Verilog
数模混合仿真概念
模拟电路 晶体管
电路系统
数字电路 Verilog描述
模拟电路 晶体管级描述
数模混合电路架构
模拟路A
L1 A
B
L2
L3 C
数字电路B D
E
F
数字电路C
L4 G 模拟电路B
L5
in
out
H
模拟电路与数字电路相连电路示例
数模混合电路系统的模块化设计
X1
OUT1 X2
IN
OUT2
X3
testbench.v
digital_mix2 OUT1
testbench作用: • 定义顶层电路互连线 • 连接所有顶层电路 • 初始化,添加激励 • 确定输入文件来源 • 确定输出数据存放位置
IN OUT1
Module testbench();
wire X1,X2,X3;
Endmodule
<模块名>是模块唯一的标识符;
<端口列表>是输入、输出和双向端口的列表,这些端口用
来与其他模块进行连接。
and
<定义>是一段程序,用来指定数据对象为寄存器型、存储
器型、线型以及过程块,诸如函数块和任务块;
A
C
<模块条目>也是一段程序,将上面<定义>和<端口>组合起
来,是说明这个模块要做什么的语句;
B
endmodule之后没有分号。
纯数字电路module定义 Module <模块名> (端口名);
纯数字电路模块 module Digital