当前位置:首页 > 作文大全 >

Verilog—A/AMS在RF仿真中的应用

发布时间: 2022-03-24 09:10:56 浏览:

摘 要

Verilog-A/AMS是用于描述电路行为的硬件描述语言。Verilog-A用于描述模拟电路的工作行为。Verilog-AMS则用于描述混合信号电路。Verilog-A/AMS可以直接使用简单的数学公式对电路或器件进行描述,因此可以获得仿真速度和精度的良好平衡。下文将探讨一下在RF设计中使用硬件描述语言Verilog-A/AMS的优缺点以及一些实际问题。

【关键词】Verilog-A RF NQS Hidden StateRF设计中使用Verilog-A

为什么我们在RF设计中使用硬件描述语言而非传统的模型?主要原因有以下几个。

1 RF设计中使用硬件描述语言而非传统的模型的原因

1.1 RF设计并不需要传统模型中所有的计算参数

RF设计关心的往往是高频的工作状态。电路本身往往不涉及直流偏置点的大范围变化、DC工作的准确性等等。因此,很多传统模型中复杂的计算对RF设计来说没有必要。

1.2 Verilog-A/AMS简单而高效

RF设计很多的参数都是频域参数,而模拟仿真器大多基于时域仿真。由于RF的调制特性,在瞬态仿真中观测结果会消耗很长的仿真时间。使用Verilog-A/AMS这样的描述语言,可以针对频域特性建模,在仿真速度和精度中灵活地做折衷,加快仿真验证。

1.3 设计人员可以书写非物理特性的模型

利用Verilog-A可以描述那些不基于物理实现的、或者物理上具有理想特性的电路,帮助进行设计和验证。

1.4 灵活的噪声特性,并且容易实现相关的噪声源

在RF设计中噪声是一个很重要的参数。Verilog-A中支持所有基本的噪声分布类型,也可以使用查表方式实现自定义的噪声分布。同时由于Verilog-A代码的书写基于计算公式,可以很容易的实现相关、半相关的噪声。这在标准化结构的传统模型中是不容易实现的。

1.5 可以进行针对电荷的描述而非电容,适合解决NQS问题

NQS问题,Non-Quasi-Static,是指在传统模型中,器件的沟道被模拟为一个电容,也就是当Gate电压变化时,沟道电荷随之立即变化。但电荷的变化实际上滞后于Gate电压变化。在RF电路中高速开关的沟道所产生的效应没有被准确的预测。传统模型中解决这个问题被器件模型框架所限制。而在Verilog-A中,我们完全可以计算沟道电荷的迁移速度,再得到沟道电势的建立,从而很好的描述NQS问题。

1.6 数字控制在RF领域十分常见,使用Verilog-AMS进行混合仿真适合这些设计

数字控制在RF领域被广泛应用,例如在PLL中的分频器,以及AGC(自动增益控制)中的数字计算部分。这种情况下,使用AMS混合描述便于设计和验证。除此之外,RF设计的测试平台本身很多时候也是数模混合的,也可以采用AMS模型进行描述。

目前,现在主流的器件供应商、模型和仿真软件都支持Verilog-A。并且多种模型标准已经将Verilog-A作为新的模型规范公开提供给使用者,包括:VBIC, HICUM, PSP, Mextram, EKV, HISIM, BSIMSOI等。

2 Verilog-A/AMS书写RF模型存在的问题

2.1 不同的仿真器对Verilog-A/AMS的支持不一

不同仿真器对Verilog-A语言的语句和函数的支持不一样。代码设计的时候要考虑到使用语句的通用性以及适合的仿真器。这个问题随着Verilog-A模型的越来越流行正在被解决。

2.2 RF仿真器要求特殊的Verilog-A书写技巧

RF仿真大多数基于PSS仿真(Periodic Steady State)。PSS仿真的计算对模型有以下要求:

(1)不允许使用Z变换。

(2)不允许使用absdelay函数。

(3)不允许使用absdelta函数。

(4)不允许存在Hidden state。

Hidden State指的是,如果模块内部使用了一个变量,其值来源于以前的时间点,这就导致平均化在这个时间点上难以完成。我们下面着重分析一下Hidden State问题。

解决Hidden State问题的方法无外乎三种:一,不保存内部状态;二,使用物理实现;三,换一种实现方法。第一种方法只适合代码保留了无必要的状态的情况。多数时候,我们保留状态是有原因的,因此我们只能寻求第二种或者第三种方法。第二种方法就是利用电路中的反馈、带有延迟的实际单元来保留状态,这种实现方式其复杂度接近实际电路,在追求简化和仿真速度的时候,我们更愿意选择第三种方法。我们用下面这个代码例子来看一下解决Hidden State问题:(为了节省篇幅,下面的代码省略了一些首位关键词)

PWMvol = PWMref>V(VCC, GND)?V(VCC, GND):PWMref;

@(timer(0, cycle)) slope = PWMvol/(cycle-falltime); wstart = $abstime; polar = 1;

@(timer(cycle-falltime, cycle)) slope = -PWMvol/falltime; wstart = $abstime; polar = -1;

V(VPWM) <+ (1+polar)*0.5*slope*($abstime- wstart)+(1-polar)*0.5*(2.5 + slope*($abstime- wstart));

代码的目的是保存每个周期的起始时间点,通过计算上升和下降斜率产生斜坡信号。但是由于保存每个周期的起始时间,就会导致Hidden State错误。

我们换个思路来考虑上面的代码。既然不允许保存每个周期的起始时间点,则意味着我们要在每个时间点上计算得到其所属的周期开始时间。我们可以通过使用取余数计算符%来进行这个计算。我们可以这样实现:

PWMvol = PWMref>V(VCC, GND)?V(VCC, GND):PWMref;//the high level of PWM singal

wstart = $abstime-($abstime%cycle); //cycle start

wtime = $abstime%cycle; //remain time

polar = (wtime<(cycle-falltime))?1:-1; // rising or falling part

slope = (polar>0)?(PWMvol/(cycle-falltime)):(-PWMvol/falltime); // slope

V(VPWM) <+ (1+polar)*0.5*slope* ($abstime- wstart)+(1-polar)*0.5*(PWMvol + slope*($abstime- wstart - cycle + falltime));

我们通过计算,可以得到当前时间点所在的周期的起始时间,从而计算当前时间点应该具有的电位。由于每个时间点中变量都是当前计算得到的,就解决了Hidden State的问题。

3 总结

在RF设计中使用Verilog-A/AMS描述语言能够给我们带来很多的便利和优势。因此也有越来越多的器件厂商、设计师开始使用Verilog-A/AMS。同时我们也看到在RF仿真中使用Verilog-A有独特的限制,需要我们采用一些技巧来规避这些限制。

参考文献

[1]Boris Troyanovsky,Patrick O’Halloran, and MarekMierzwinski,“Analog RF Model Development with Verilog-A”

[2]Ken kundert,“Hidden State in Spectre RF”

[3]Xiaodong Jin,Kanyu Cao,Jia-JiunnOu,Weidong Liu, YuhuaCheng,MishelMatloubian and Chenming Hu,“An Accurate Non-Quasistatic MOSFET Model for Simulation of RF and High Speed Circuits”

[4]MarekMierzwinski,Patrick O"Halloran,Boris Troyanovsky,and DavidSharrit,”Verilog-A/MS for RF Simulation”

作者简介

吴顺珉(1979-),男,浙江省杭州市人。现为美信(Maxim Integrated)半导体工程师。

作者单位

美信(Maxim Integrated) 上海市 201203

相关热词搜索: 仿真 Verilog AMS RF

版权所有:无忧范文网 2010-2024 未经授权禁止复制或建立镜像[无忧范文网]所有资源完全免费共享

Powered by 无忧范文网 © All Rights Reserved.。冀ICP备19022856号