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 - это надмножество цифрового HDL Verilog, поэтому все операторы в цифровой области работают так же, как и в Verilog (см. Там примеры). Все аналоговые части работают как в Verilog-A .
В следующем примере кода в Verilog-AMS показан ЦАП, который является примером аналоговой обработки, запускаемой цифровым сигналом:
`include " constants.vams " ` include " disclines.vams " // Модуль простой модели DAC dac_simple ( aout , clk , din , vref );// Параметры параметра целочисленные биты = 4 из [ 1 : 24 ]; целое число параметра td = 1 n из [ 0 : inf ); // Задержка обработки ЦАП // Определение ввода / вывода input clk , vref ; вход [ биты - 1 : 0 ] din ; вывод aout ;// Определяем типы портов logic clk ; логика [ биты - 1 : 0 ] din ; электрические aout , vref ;// Внутренние переменные real aout_new , ref ; целое число i ;// Изменение сигнала в аналоговой части analog begin @ ( posedge clk ) begin // Изменение вывода только для нарастающего фронта тактового сигналаaout_new = 0 ; ref = V ( vref );for ( i = 0 ; i < биты ; i = i + 1 ) begin ref = ref / 2 ; aout_new = aout_new + ref * din [ я ]; конец конец V ( aout ) <+ transition ( aout_new , td , 5 n ); // Более плавный переход при изменении уровня вывода end endmodule
Модель АЦП считывает аналоговые сигналы в цифровых блоках:
`include " constants.vams " ` include " disclines.vams " // Модуль простой модели АЦП adc_simple ( clk , dout , vref , vin );// Параметры параметра целочисленные биты = 4 из [ 1 : 24 ]; // Число битов параметра целое число td = 1 from [ 0 : inf ); // Задержка обработки АЦП// Определение ввода / вывода input clk , vin , vref ; output [ биты - 1 : 0 ] dout ;// Определяем типы портов электрические vref , vin ; логический clk ; reg [ биты - 1 : 0 ] dout ;// Внутренние переменные real ref , sample ; целое число i ;начальное начало dout = 0 ; конец// Всегда выполняем выборку в цифровых блоках для нарастающего фронта тактового сигнала @ ( posedge clk ) beginобразец = V ( vin ); ref = V ( vref );for ( i = 0 ; i < bits ; i = i + 1 ) beginref = ref / 2 ;если ( образец > ref ) begin dout [ i ] <= # ( td ) 1 ; образец = образец - ссылка ; конец else dout [ i ] <= # ( td ) 0 ; конец конец конечный модуль
См. Также [ править ]
Ссылки [ править ]
- ^ Семантика планирования указана в разделе 8 Справочного руководства по языку Verilog / AMS.
- ^ Группа аналоговых смешанных сигналов 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
Реализации с открытым исходным кодом [ править ]
- OpenVAMS, парсер VerilogAMS-1.3 с открытым исходным кодом и внутренним представлением в стиле VPI.
- Проект V2000 - парсер и разработчик Verilog-AMS