怎么用Verilog-A编写理想电路 (一)

Verilog-A 语法该如何理解和怎么用Verilog-A 编写电路?
下面是参考何乐年集成电路中关于Verilog-A 的描述
1、头文件定义:
include “discipline.h”//包含的是 Verilog-A 中预先定义的“discipline”,而“discipline”是用来定义节点类型的。
include “constants.h”//"constants.h"中包含的是 Verilog-A 中预先定义的一些常量,

2、模块定义
module opamp (vout, vref, vin_p, vin_n, vspply_p, vspply_n);// 在“module”的后面是模块的名称,随后的括号中是模块的管脚,各个管脚间用逗号隔开。
endmodule//模块结束
3、定义输入输出端口以及类型
input vref, vspply_p, vspply_n;// 输入管脚。
electrical vref, vspply_p, vspply_n;// 电学属性。
inout vout_p, vout_n, vin_p, vin_n;// 输入输出管脚
electrical vout_p, vout_n, vin_p, vin_n;// 电学属性。
output vout;//输出管脚
electrical vout;// 电学属性。
节点类型定义
如果查阅“discipline.h” 文件, 可以发现“electrical” 是其中定义的一个“discipline”,现在使用这个名称来定义节点的类型。被“electrical”定义的节点将具有电学特性,即我们可以获得节点的电压和流过节点的电流量。因为我们后面进行的电路仿真,都是针对守恒的电路系统,因此该电路系统中的所有节点都用“electrical”来定义。
4、参变量
在 Verilog-A 中参变量通过关键字“parameter”来定义。在关键字后面的是参变量的类型,有两个选项“real”和“integer”,分别表示参变量的类型是实数和整数。随后是参变量的名称,参变量的默认值可以通过添加等号和数值得到。如在实例中,定义了运算放大器的增益为参变量,名称为“gain”,类型为实数,默认值是“835e3”。
parameter real//常定义一些常量,在程序运行的时不会发生改变。
real //定义一些过程量,如传值,缓存,计算结果等。
integer//定义整数,常常定义计数器,整数循环变量等。

5、支路
branch (p, n) b1;
在定义了节点之后,就可以定义支路。支路是两个节点间的一条通路,支路的类型由该支路包含的两个节点的类型决定。支路是通过关键字“branch”来定义的,关键字后面的圆括号包含一对节点, 分别是支路的起始和结束节点。 若圆括号中只有一个节点,那么第二个节点是公共地端。在圆括号后面的是所定义支路的名称。
信号获取函数
V(n1);
V(n1, n2)
V(b1);
I(n1);
I(n1, n2)
I(b1);
在上文定义节点时,使每个节点都含有电压量和电流量,通过信号获取函数 V( )和I( ),可以在 Verilog-A 获取节点的电压量和电流量,或者为他们赋值。在例子中, n1 和n2 表示两个节点, b1 表示一条支路。例子中各个信号获取函数分别表示:
V(n1) :节点 n1 对地电压。
V(n1, n2) :节点 n1 和节点 n2 间的电压。
V(b1) :支路 b1 起始节点和结束节点之间的电压。
I(n1) :节点 n1 流到地的电流。
I(n1, n2) :从节点 n1 流到节点 n2 的电流。
I(b1) :从支路 b1 起始节点流到结束节点之间的电流。
这里需要注意的是,在使用信号获取函数时,将会建立未命名的支路。假设在上文的例子中,节点 n1 和 n2 间并没有通过关键字“branch”定义一条支路并为它命名,但是因为使用了信号获取函数“V(n1, n2)”或“I(n1, n2)”,则在节点 n1 和 n2 间建立了一个未命名的支路
6、程序起始与结束标志
analog begin
……
end
7、变量初始化
@(initial_step or initial_step(“dc”, “ac”, “tran”, “xf”)) begin
//初始化一些变量
end
8、带有时钟的模块,设置时钟边沿触发事件
@(cross ( V(clk)-vth, 1, slack, clk.potential.abstol)) begin
//V(clk)-vth,时钟边沿到来
//1 上升沿 ;-1下降沿; 0 双边沿
end
9、信号输出
V(dout) <+ transition ( vd , tconv, trise, tfall );

赋值符号: 在 Verilog-A 中,针对模拟电路提供了对应得赋值符号“<+” ,用来提供输入信号和输出信号之间的数学映射关系,从而进行行为描述。赋值符号“<+”将赋值语句分为左右两个部分,左边要求是一个电压源或者是一个电流源;右边是一个结果为实数的表达式。因此模拟电路的行为描述可以用以下语句来实现:
V(n1, n2) <+ expression ;
I(n3, n4) <+ expression1;
I(n3, n4) <+ expression2;

整个流程就是这些了。

下期将分享一些示例,进一步理解Verilog-A实现理想电路。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陆已十六

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值