愛伊米

數模混合訊號建模語言Verilog-AMS

混合訊號建模語言Verilog-AMS

很多人做類比電路的朋友,都希望有一款“模擬FPGA”,希望有一個“模擬的Verilog”,但現實是沒有“模擬的Verilog”只有混合訊號建模語言-Verilog-AMS,今天就簡單介紹一下-Verilog-AMS。

為了便於物理系統的建模,人們在Verilog-2005的基礎上,添加了一些新的關鍵字和語法結構,由此誕生了Verilog-AMS標準。所以Verilog-AMS是Verilog-2005的一個超集。換言之,Verilog-2005又是Verilog-AMS的子集。這裡還有一個Verilog-A,具體三者關係如下:

數模混合訊號建模語言Verilog-AMS

該標準定義了標準的Verilog模擬器和模擬解算器之間的互動。而且,Verilog-AMS語言從誕生開始,就是為常用的物理系統的建模,而不僅是為電路網路的建模而創造的。

Verilog-AMS基礎

Verilog-AMS引入了一些重要的新概念。其中最重要的新概念可以總結為兩個關鍵字:discipline和nature。在“標準”的Verilog中net(線網)型別表示的只是具體的物理連線線路。在顯示模擬的結果時,可以觀察到在一段時間裡這條線路的狀態變化。因此,net有兩個含義:具體的物理連線和時間歷史。電路節點表示兩個或更多個元件連線在一起的那個點。然而,不能討論該節點本身的行為,除非指定討論的物件是該節點的電壓或流過該節點的電流,以及其他方面。

為了對具體的物理連線和行為進行區別,Verilog-AMS引入了新的關鍵字。在模型中,節點上的電壓或者電流用關鍵字nature宣告。在舉例說明之前,必須先解釋一下nature和節點之間是怎樣相互關聯的。

節點和網路型別有著密切的關聯。例如,電路節點歸屬於電路網路,磁節點歸屬於磁網路。各種網路的行為都可以用關鍵字nature(性質)來描述。例如,電路網路的行為可以用電壓和電流來描述;而磁網路的行為可以用磁動勢和磁通量來描述。每一型別的網路都有自身的一對性質。這一對性質可以描述為flow(流性質)和potential(勢性質)。例如,在電路網路中,電流透過元件從網路的一個節點流到另一個節點;此刻,也可以測量元件兩端的電動勢。每一型別的網路都具有一對這樣的流性質和勢性質。(請注意,也可以按照與傳統思路完全相反的概念來定義這個電網路,即在該電網路中,定義電流具有勢性質,電壓具有流性質。從數學角度來定義性質,無論傳統的或相反的定義都是可接受的。然而,在電網路中,接受符合傳統約定的性質定義比較容易。而在其他型別的網路中,確定究竟哪個物理量為勢性質,哪個物理量為流性質可能不那麼清楚。)

在某特定網路節點性質的定義中,事實上定義了該網路的流性質和勢性質。因此,只宣告某個線網是一個特定的Verilog型別的線網是不夠的,所以必須新增一種新結構,即discipline(規則)來描述該線網。規則由兩個部分組成:勢性質和流性質。此外,domain(域)可以宣告為連續的continuous)或者離散的discrete)。在預設情況下,規則是連續的。

電路規則可以用如下語句宣告:

與別處-樣,程式碼段中的關鍵字用粗字體表示。程式碼段中的Voltage(電壓)和Current(電流)是什麼?我們知道potential(勢)和flow(流)這兩部分都是natures(性質),所以Voltage和Current一定是natures。

這兩個性質宣告塊的內容都由四條語句組成,但並非每條語句都是必需的。第1條語句units列出了用於表示該性質的符號。Verilog-AMS語言不執行維度分析,所以這條語句只是提供可讀性而已。第2條語句中的access給出了訪問功能。由於第2條語句中存在access,所以在程式碼段中,V(nodel)表示引用節點1的電壓。第3條語句中的idt_nature表示等號後的物理量具有時間積分的性質。也可以用ddt_nature來表示等號後的物理量具有時間導數的性質。但在這種場合,Flux(通量)和Charge(電荷)應該在別處宣告。最後一條語句中的關鍵字abstol表示允許的絕對誤差,這條語句定義了性質塊宣告的變數在計算過程中的精確度。

在下面的例子中,假設在檔案disciplines。vams中包含一些電規則的定義。每個模組的開頭都包括該規則定義檔案。現在就可以用該檔案中定義的電規則來定義一個或者多個節點。

electrical nodel,node2;

我們可以用與定義線網或埠完全相同的方法在模組中定義節點。在埠宣告時,必須宣告埠的方向為inout(輸入/輸岀雙向埠)型別。例如,下面的程式碼段聲明瞭一個電阻模組:

寫到這裡,只是建立了物理節點。可以用I(nodel,node2)表示在這兩個節點之間流動的電流;也可以宣告一個或多個支路。兩個節點之間的支路可以用下面的語句宣告:

branch (nodel,node2) res;

所以,現在還可以用I(res)來表示流經電阻的電流。

每個流經物理量的計算基準點就是所謂的參考節點。在電路網路中,該參考節點通常稱為地線或者接地點。在Verilog-AMS模型中,通常用下面的語句來表示接地點:公眾號:OpenFPGA

ground gnd;

作用語句

作用語句(contrihution statement)用於定義模擬模型的線路方程。在作用語句中,使用符號“

因此,作用語句是由模擬模擬器求解的聯立方程。作用語句必須放在模擬過程塊之中。為了說明作用語句,我們編寫了一個電阻器的完整模型:

可以用類似的方法為其他元件建模。例如,下面的程式碼段是一個電容器的Verilog-AMS模型:

上面程式中的ddt是一個求導函式。其功能是求出電容兩端電壓的變化率,即求電壓的微分。而下面語句中的idt是一個積分函式,其功能是計算其後面變數(流經電容的電流)的積分。由於作用語句是代數表示式而不是賦值操作,所以可以用以下方程來表示電容電壓:

V(cap) < + idt ( I(cap))/C;

在結束這些基本模型的討論之前,讓我們先考慮一個產生正弦波形的純電壓源,以後需要把這個電壓源模型作為基礎元件來描述DAC。

在檔案constants。vams中,定義了許多有用的引數,其中包括M_TWO_PI(即2倍的圓周率—2π),$time,但是$abstime返回的是一個實型數。

混合訊號建模

Verilog-AMS是一種混合訊號建模語言,所以我們可以把模擬結構和數字結構寫在同一個模組中。下面編寫一個簡單比較器的模型。該比較器可以對兩個模擬電壓訊號進行比較,把比較結果轉換為1位元的數字訊號。當第1個輸人訊號比第2個大時,比較器輸出邏輯1,否則輸出邏輯0。該比較器的Verilog-AMS模型如下:

這個模組有三個埠,其中兩個是電路節點,另一個是數字輸出埠。在模組體中,必須能檢測到其中一個模擬電壓大於或小於另一個模擬電壓的時刻,根據比較的結果,對開關進行相應的操作,輸出邏輯1或者0。這個比較器當然可以用一個簡單的比較運算子這個模組有三個埠,其中兩個是電路節點,另一個是數字輸出埠。在模組體中,必須能檢測到其中一個模擬電壓大於或小於另一個模擬電壓的時刻,根據比較的結果,對開關進行相應的操作,輸出邏輯1或者0。這個比較器當然可以用一個簡單的比較運算子來表示,但是在這裡用cross函式來表示更好一些。當表示式越過0時,立即產生一個數字訊號事件。在cross函式中的第2個引數是用來表示方向的,只有從一個方向越過0才能觸發事件,+1表示正方向,-1表示負方向,而0或不指定引數,則表示有兩個方向。然而cross函式並不觸發初始條件事件。因此,編寫一個初始化塊,先給Dout賦一個初始值,然後檢測輸入的模擬電壓的上升或下降是否越過0,一旦越過,立即觸發事件,根據越過0的方向,切換Dout的邏輯值為1或0。公眾號:OpenFPGA

Verilog-AMS模擬器

ADC、DAC和PLL的混合訊號模型是否可以完全用標準的Venlog語言來建模,可能還有爭論。實際上,在這些模型中只有極少量的行為必須用模擬解算器才行。Verilog-AMS真正強大的功能在於允許在Verilog數字模型模擬的同時,進行類比電路的模擬,而傳統的類比電路模擬必須使用SPICE軟體才行。我們可以把SPICE的網表新增到Verilog-AMS的模擬庫中。

目前,有許多模擬器支援多種語言的模擬。因此,組成系統模型的子模組可以用Verilog、SystemVerilog、Verilog-AMS、SPICE、VHDL、VHDL-AMS和SystemC等多種語言來編寫。

總結

數位電路必須與真實的模擬世界介面,這個介面及與模擬元件的相互作用的建模總是十分困難的。Verilog-AMS擴充套件了Verilog功能,允許模擬和混合訊號建模。典型的轉換器包括階梯型DAC、快閃型ADC和PLL。所有這些元件都可以用Verilog-AMS建模和模擬。目前從這些無件的行為模型還不能自動綜合出元件的物理構造,由於rilog-AMS模擬器還是-個相對較新的事物,所以個別Venlog-AMS語法得不到Verilog-AMS模擬器的支援是很冇吋能的。這些模擬器確實提供了SPICE模型與Verilog-AMS之間進行介面的手段,從而允許完整系統的建模。

目前,國內對Verilog-A/Verilog-AMS研究很少,希望藉此文章讓更多人瞭解Verilog-A/Verilog-AMS,在未來可能有更大的用途。

資料推薦

本人對這方面研究有限,這裡推薦大家一些資料以便進行研究。

Verilog- ams是Verilog標準的模擬混合訊號版本。在開放Verilog國際(OVI)下進行標準化。開發的第一階段是Verilog-A,描述類比電路所必需的一組連續時間構造。這是基於SPICE的語言。Verilog-A並不打算直接與Verilog-HDL一起工作。相反,它是一種具有類似語法和相關語義的語言,旨在為模擬系統建模,並與板級電路模擬引擎相容。公眾號:OpenFPGA

Verilog-A在1996年被OVI標準化,Verilog-AMS 1。3在1998年釋出。版本2。0在2000年完成,所有的後續工作都在Accellera內完成。Verilog-AMS的上一個版本是2。4,釋出於2014年,基於IEEE 1364-2005。這將是它的最後一個版本,因為從那時起,Verilog已經被SystemVerilog取代。模擬擴充套件從來沒有交給過IEEE。

工作組目前正在努力使Verilog-AMS與IEEE 1800的SystemVerilog工作保持一致,或者在新的“SystemVerilog-AMS”標準中包含AMS能力。此外,工作正在進行中,重點關注社群要求的新功能和增強,以改進混合訊號設計和驗證,以及透過小組委員會將SystemVerilog斷言擴充套件到模擬和混合訊號設計。

一、原文目錄

Overview https://verilogams。com/refman/overview。html

SystemsSignals

Basics https://verilogams。com/refman/basics/index。html

CommentsIdentifiersKeywordsCompiler DirectivesNumbersString LiteralsArray LiteralsWiresBranchesNatures and DisciplinesVariablesExpressions

Modules https://verilogams。com/refman/modules/index。html

PortsParametersDeclarationsContinuous AssignsInitial and Always ProcessesAnalog ProcessesInstantiation

二、Verilog-AMS學習資源

Verilog-AMS是一種硬體描述語言,可以對模擬和數字系統進行建模。Verilog-AMS語言的官方描述包含在Verilog-AMS語言參考手冊中。本網站旨在成為你的Verilog-A和Verilog-AMS的快速參考指南。在這一點上,參考資料還不完整,但仍然很有用。隨著時間的推移,參考材料應該填寫並補充有用的應用註釋和註釋模型,這將幫助您學習更有效地使用Verilog-A/MS。重點是模擬和混合訊號建模。

如果您正在尋找關於綜合或Verilog語言的模糊角落的資訊,您必須到別處尋找。我們的目標是使www。VerilogAMS。com成為您關於Verilog-A/MS的日常資訊來源。請四處看看,並告訴你的朋友和同事。如果你有關於Verilog-AMS的問題,請在designers-guide。org的論壇上問他們。

[Link https://verilogams。com/index。html

[Verilog-AMS Quick Reference https://verilogams。com/quickref/index。html

[The Verilog-AMS Language https://verilogams。com/refman/index。html

[Verilog-AMS Tutorials https://verilogams。com/tutorials/index。html

[Glossary https://verilogams。com/glossary。html#glossary

[Index https://verilogams。com/genindex。html

[Search https://verilogams。com/search。html

NOW

學習Xilinx FPGA最好的資料其實就是官方手冊,下表總結了部分手冊的主要介紹內容,關注我,持續更新中……