器件建模学习5-veriloga文件分析

个人微信wyl2333,已经建立器件建模群,请同行备注。

模型来源安捷伦提供的angolov_gan.va模型,请支持正版。

1.加载库文件,常数库和数学库

2.定义全局变量和函数关系

3.定义模型端口,如果要定义三端口,则注释掉上面部分。此时开始定义整个模型,模型以endmodule结束

4.定义器件参数并注明参数类型,参数初始值,参数运行范围(作为对外提供模型的接口)

一般在//后注明各类参数在模型中起的作用,这些参数在下列的计算中默认称为已知参数,代入方程或表达式中。

5.声明内部节点的电气类型(产生噪声),一般作为测试数据的项目

6.声明过程变量,一般作为计算时使用,不对外提供

7.开始建立模拟行为,对过程变量赋予与电气节点的某种依赖性

8.初始化部分参数,保证上面改变状态为影响后面的状态。

9.定义温度影响,基本照抄,注意rs1比rs_T先行计算出来,故rs_T是用rs1来表征的。

10.使用两个函数,对某些参数的温度参数进行不同条件下的赋值。

电流效应ids

11.idsmod定义前,参数默认值和计算方式的定义。

(如果Pg没有,但是有Ne,Pg=1/(1*Ne*Vt))

12.idsmod=0,1,2,3级别时各个参数的关系

13.不同mod下寄生电阻和温度下寄生电阻的关系式

14.不同模式下考虑不考虑leakage的模式

电荷电容效应

15.参数默认值和计算方式的定义

16.capmod=0,1,2,3,4

mod=0:线性电容

mod=1:偏置依赖电容

mod=2:基于电荷——最佳收敛

mod=3:偏置相关电容——氮化镓峰值

mod=4:基于电荷——最佳收敛——氮化镓峰值

16.依靠上面计算出来的参数值,经由分支贡献语句,将电压贡献到电流上,或反之。

考虑器件三端,内部电压电流关系

.

考虑电容电荷对三端电压电流的供给关系

考虑寄生电阻,寄生电感对供电的关系

定义噪声模式

17.加入通道噪声

18.定义realfreq模式,白噪对电流电压的供电

19.结束模型定义

后记:在看va语法的时候,有一些内容并不是很理解,比如分支贡献语句和赋值语句有何差别?

目前,已经稍微有些眉目了。

赋值语句a=b是等式左边赋值给等式右边,如果下面还有一句a=c,那么最终结果是a的值为c.但是分支贡献语句是叠加,a<+b,a<+c,a的结果就是b+c

造成这现象的根本原因在于,一个是逻辑的赋值,状态是可以被覆盖的。一个是基于模拟的赋值,基于模拟的赋值就涉及到基尔霍夫定律(KCL,KVL)

基尔霍夫(电路)定律既可以用于直流电路的分析,也可以用于交流电路的分析,还可以用于含有电子元件的非线性电路的分析。由于似稳电流(低频交流电)具有的电磁波长远大于电路的尺度,所以它在电路中每一瞬间的电流与电压均能在足够好的程度上满足基尔霍夫定律。因此,基尔霍夫定律的应用范围亦可扩展到交流电路之中。

所有进入某节点的电流的总和等于所有离开这节点的电流的总和。

沿着闭合回路所有元件两端的电势差(电压)的代数和等于零。

所以,本质上<+就是电压的叠加或电流的叠加,是无法凭白无故突然在电路中让它的一个支路消失的。

一般<+右侧电源供给左侧电源,左侧电源的信号可以被持续得叠加。右侧的"+"可以被拆分成几个语句。

对于一个电阻,既可以写成I(n,p)<+V(n,p)/R,也可以写成V(n,p)<+I(n,p)*R,因为电阻的定义中,电源供给没有方向性,R只是一个比值。

另外关于恒流源,可以表示成V(n,p)<+I(p,n)*R,这是因为在电源供电的时候,外部电流是和内部电流方向相反的,I(n,p)<+I(p,n),所以可以得到一个电流大小为V(n,p)/R的电流。

但是,一般右侧存在"/"对于有些变量是0的情况会造成很多错误,所以一般都是用乘法表示。

另外,可以这么理解,n和p是两个节点,(n,p)代表一个np间的分支,V(n,p)对np上供电压,当它与其他器件连接时,相当于V(n,p)是一个电压源,同理,I(n,p)相当于在节点np间的是一个电流源。

所以,V(a,b)<+V(n,p)*gain,ab就是一个受到np电压控制的电压源。I(a,b)<+V(n,p)*Z,ab就是一个受到np电压控制的电流源。

一般描述电路的习惯是,按照基尔霍夫定律描述的方向,用<+进行连续的供给。

可能理解上有所疏漏,请指出,谢谢。

  • 15
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
Verilog中,我们可以使用数字信号处理(DSP)模块来建模PLL电路。下面是一个简单的数字PLL模型示例: ``` module pll(input wire clk, input wire rst, input wire ref, output reg out); // Input and output ports output reg [7:0] out; input wire [7:0] ref; // Parameters parameter integer N = 10; parameter integer M = 100; // Internal signals reg [31:0] phase_acc; reg [7:0] phase_inc; reg [7:0] phase_diff; // State variables reg [7:0] phase; // Initial conditions always@(posedge clk) begin if(rst) begin phase_acc <= 0; phase <= 0; end else begin phase_acc <= phase_acc + phase_inc; phase <= phase_acc[31:24]; end end // Phase detector always@(posedge clk) begin if(rst) begin phase_diff <= 0; end else begin phase_diff <= ref - phase; end end // Frequency detector always@(posedge clk) begin if(rst) begin phase_inc <= 0; end else begin phase_inc <= phase_diff * N / M; end end // Output always@(posedge clk) begin if(rst) begin out <= 0; end else begin out <= $signed($sin(phase)); end end endmodule ``` 在这个例子中,我们使用了数字信号处理(DSP)模块来描述PLL电路的模型。模型包括输入时钟信号`clk`、复位信号`rst`、参考信号`ref`和输出信号`out`。我们使用了一个简单的相位检测器来检测输入信号与VCO输出信号的相位差,并将相位差乘以一个常数`N/M`得到VCO的频率偏差。同时,我们还使用了一个简单的计数器来累加VCO的相位,从而产生VCO的输出信号。最后,我们使用`$sin`函数将VCO的相位转换为正弦波输出。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值