Верилог-АМС
Verilog-AMS — это производная от Verilog языка описания аппаратного обеспечения , который включает расширения аналоговых сигналов и смешанных сигналов (AMS) для определения поведения аналоговых систем и систем смешанных сигналов. на основе событий Он расширяет циклы симулятора Verilog/ SystemVerilog / VHDL за счет симулятора непрерывного времени, который решает дифференциальные уравнения в аналоговой области. Обе области связаны: аналоговые события могут инициировать цифровые действия и наоборот. [1]
Обзор [ править ]
Стандарт Verilog-AMS был создан с целью дать возможность разработчикам аналоговых и смешанных сигнальных систем и интегральных схем создавать и использовать модули, инкапсулирующие описания поведения высокого уровня, а также структурные описания систем и компонентов. [2] [3] [4]
Verilog-AMS — это стандартный язык моделирования схем со смешанными сигналами. Он обеспечивает семантику моделирования как в непрерывном времени, так и на основе событий, поэтому подходит для аналоговых, цифровых и смешанных аналогово-цифровых схем. Он особенно хорошо подходит для проверки очень сложных аналоговых, смешанных и радиочастотных интегральных схем. [5]
на основе событий Verilog и Verilog/AMS — это не процедурные языки программирования, а языки описания оборудования (HDL). По существу, они предоставляют сложные и мощные языковые функции для определения и синхронизации параллельных действий и событий. С другой стороны, многие действия, определенные в операторах программы HDL, могут выполняться параллельно (что-то похожее на потоки и тасклеты в процедурных языках, но гораздо более детально). Однако Verilog/AMS можно объединить с процедурными языками, такими как язык ANSI C, используя процедурный интерфейс Verilog симулятора, который упрощает реализацию набора тестов и позволяет взаимодействовать с устаревшим кодом или оборудованием испытательного стенда.
Первоначальным намерением комитета Verilog-AMS был единый язык для аналогового и цифрового проектирования, однако из-за задержек в процессе слияния он остается в Accellera, в то время как Verilog превратился в SystemVerilog и перешел в IEEE.
Пример кода [ править ]
Verilog/AMS — это расширенная версия Verilog digital HDL, поэтому все операторы в цифровой области работают так же, как в Verilog (примеры см. здесь). Все аналоговые части работают как в Verilog-A .
В следующем примере кода в Verilog-AMS показан ЦАП , который является примером аналоговой обработки, запускаемой цифровым сигналом:
`include "constants.vams"
`include "disciplines.vams"
// Simple DAC model
module dac_simple(aout, clk, din, vref);
// Parameters
parameter integer bits = 4 from [1:24];
parameter integer td = 1n from[0:inf); // Processing delay of the DAC
// Define input/output
input clk, vref;
input [bits-1:0] din;
output aout;
//Define port types
logic clk;
logic [bits-1:0] din;
electrical aout, vref;
// Internal variables
real aout_new, ref;
integer i;
// Change signal in the analog part
analog begin
@(posedge clk) begin // Change output only for rising clock edge
aout_new = 0;
ref = V(vref);
for(i=0; i<bits; i=i+1) begin
ref = ref/2;
aout_new = aout_new + ref * din[i];
end
end
V(aout) <+ transition(aout_new, td, 5n); // Get a smoother transition when output level changes
end
endmodule
Модель АЦП считывает аналоговые сигналы в цифровых блоках:
`include "constants.vams"
`include "disciplines.vams"
// Simple ADC model
module adc_simple(clk, dout, vref, vin);
// Parameters
parameter integer bits = 4 from[1:24]; // Number of bits
parameter integer td = 1 from[0:inf); // Processing delay of the ADC
// Define input/output
input clk, vin, vref;
output [bits-1:0] dout;
//Define port types
electrical vref, vin;
logic clk;
reg [bits-1:0] dout;
// Internal variables
real ref, sample;
integer i;
initial begin
dout = 0;
end
// Perform sampling in the digital blocks for rising clock edge
always @(posedge clk) begin
sample = V(vin);
ref = V(vref);
for(i=0; i<bits; i=i+1) begin
ref = ref/2;
if(sample > ref) begin
dout[i] <= #(td) 1;
sample = sample - ref;
end
else
dout[i] <= #(td) 0;
end
end
endmodule
Реализации [ править ]
Хотя изначально этот язык поддерживался только коммерческими компаниями, часть подмножества поведенческого моделирования «Verilog-A» была принята сообществом, занимающимся моделированием транзисторов. Транслятор ADMS поддерживает его для симуляторов с открытым исходным кодом, таких как Xyce и ngSPICE. Более полная реализация теперь доступна через OpenVAF. Пост-SPICE-симулятор Gnucap был разработан в соответствии со стандартным документом, и его поддержка Verilog-AMS как на уровне симулятора, так и для поведенческого моделирования растет.
См. также [ править ]
Ссылки [ править ]
- ^ Семантика планирования указана в Справочном руководстве по языку Verilog/AMS, раздел 8.
- ^ Группа аналоговых смешанных сигналов Accellera Verilog, «Обзор», http://www.verilog.org/verilog-ams/htmlpages/overview.html
- ^ Справочное руководство по языку Verilog-AMS
- ^ Руководство дизайнера по Verilog-AMS
- ^ Проверка сложных аналоговых интегральных схем. Архивировано 18 октября 2006 г., в Wayback Machine.
Внешние ссылки [ править ]
- И. Миллер и Т. Кассань, «Verilog-AMS упрощает моделирование сигналов смешанного режима», Технические материалы Международной конференции 2000 г. по моделированию и симуляции микросистем , стр. 305–308, доступно: https://web.archive.org /web/20070927051749/http://www.nsti.org/publ/MSM2000/T31.01.pdf
Общие [ править ]
- Группа аналоговых смешанных сигналов Accellera Verilog
- verilogams.com — Руководство пользователя для Verilog-AMS и Verilog-A.
- Сообщество Designer's Guide, Verilog-A/MS — примеры моделей, написанных на Verilog-AMS.
- EDA.ORG AMS Wiki - Проблемы, будущее развитие, интеграция SystemVerilog