Verilog-AMS es un derivado del lenguaje de descripción de hardware Verilog que incluye extensiones analógicas y de señal mixta (AMS) para definir el comportamiento de los sistemas analógicos y de señal mixta. Extiende los bucles del simulador basado en eventos de Verilog / SystemVerilog / VHDL, mediante un simulador de tiempo continuo, que resuelve las ecuaciones diferenciales en dominio analógico. Ambos dominios están acoplados: los eventos analógicos pueden desencadenar acciones digitales y viceversa. [1]
Descripción general
El estándar Verilog-AMS se creó con la intención de permitir a los diseñadores de sistemas de señales analógicas y mixtas y circuitos integrados crear y utilizar módulos que encapsulen descripciones de comportamiento de alto nivel, así como descripciones estructurales de sistemas y componentes. [2] [3] [4]
Verilog-AMS es un lenguaje de modelado estándar de la industria para circuitos de señales mixtas. Proporciona semántica de modelado tanto en tiempo continuo como impulsada por eventos, por lo que es adecuado para circuitos analógicos, digitales y mixtos analógicos / digitales. Es especialmente adecuado para la verificación de circuitos integrados analógicos, de señal mixta y de RF muy complejos. [5]
Verilog y Verilog / AMS no son lenguajes de programación de procedimientos, sino lenguajes de descripción de hardware basados en eventos (HDL). Como tales, proporcionan funciones de lenguaje sofisticadas y poderosas para la definición y sincronización de acciones y eventos paralelos. Por otro lado, muchas acciones definidas en las sentencias del programa HDL pueden ejecutarse en paralelo (algo similar a los subprocesos y los tasklets en los lenguajes de procedimiento, pero mucho más detallados). Sin embargo, Verilog / AMS se puede combinar con lenguajes de procedimiento como el lenguaje ANSI C utilizando la Interfaz de procedimiento Verilog del simulador, lo que facilita la implementación del conjunto de pruebas y permite la interacción con código heredado o equipo de banco de pruebas.
La intención original del comité Verilog-AMS era un solo idioma para el diseño analógico y digital, sin embargo, debido a retrasos en el proceso de fusión, permanece en Accellera mientras Verilog evolucionó a SystemVerilog y pasó a IEEE.
Ejemplo de código
Verilog / AMS es un superconjunto del HDL digital de Verilog, por lo que todas las declaraciones en el dominio digital funcionan como en Verilog (consulte allí los ejemplos). Todas las partes analógicas funcionan como en Verilog-A .
El siguiente ejemplo de código en Verilog-AMS muestra un DAC que es un ejemplo de procesamiento analógico que se activa mediante una señal digital:
`include " constants.vams " ` include "disciplines.vams" // Módulo de modelo DAC simple dac_simple ( aout , clk , din , vref );// Parámetros parámetro entero bits de = 4 a partir de [ 1 : 24 ]; parámetro entero td = 1 n de [ 0 : inf ); // Retraso de procesamiento del DAC// Definir entrada / salida input clk , vref ; entrada [ bits - 1 : 0 ] din ; salida aout ;// Definir los tipos de puertos logic clk ; lógica [ bits - 1 : 0 ] din ; eléctrica aout , vref ;// Variables internas real aout_new , ref ; entero i ;// Cambiar la señal en la parte analógica analog begin @ ( posedge clk ) begin // Cambiar la salida solo para el flanco ascendente del relojaout_new = 0 ; ref = V ( vref );para ( i = 0 ; i < bits ; i = i + 1 ) begin ref = ref / 2 ; aout_new = aout_new + ref * din [ i ]; end end V ( aout ) <+ transición ( aout_new , td , 5 n ); // Obtén una transición más suave cuando el nivel de salida cambia end endmodule
El modelo ADC lee señales analógicas en los bloques digitales:
`incluir "constants.vams" ` incluyen "disciplines.vams" // simple modelo ADC módulo adc_simple ( CLK , dout , Vref , vin );// Parámetros parámetro entero bits de = 4 a partir de [ 1 : 24 ]; // Parámetro de número de bits integer td = 1 from [ 0 : inf ); // Retraso de procesamiento del ADC// Definir entrada / salida input clk , vin , vref ; salida [ bits - 1 : 0 ] dout ;// Definir tipos de puertos eléctricos vref , vin ; clk lógico ; reg [ bits - 1 : 0 ] dout ; // Variables internas real ref , sample ; entero i ; dout de inicio inicial = 0 ; final // Realice el muestreo en los bloques digitales para el flanco de reloj ascendente siempre @ ( posedge clk ) beginmuestra = V ( vin ); ref = V ( vref );para ( i = 0 ; i < bits ; i = i + 1 ) comenzarref = ref / 2 ;if ( muestra > ref ) begin dout [ i ] <= # ( td ) 1 ; muestra = muestra - ref ; end else dout [ i ] <= # ( td ) 0 ; end end endmodule
Ver también
Referencias
- ^ La semántica de programación se especifica en el Manual de referencia del lenguaje Verilog / AMS, sección 8.
- ^ Accellera Verilog Analog Mixed-Signal Group, "Overview", http://www.verilog.org/verilog-ams/htmlpages/overview.html
- ^ Manual de referencia del lenguaje Verilog-AMS
- ^ La guía del diseñador para Verilog-AMS
- ^ Verificación de circuitos integrados analógicos complejos Archivado el 18 de octubre de 2006 en la Wayback Machine.
enlaces externos
- I. Miller y T. Cassagnes, "Verilog-AMS Eases Mixed Mode Signal Simulation", Actas técnicas de la Conferencia internacional de 2000 sobre modelado y simulación de microsistemas , págs. 305–308, disponible: https://web.archive.org /web/20070927051749/http://www.nsti.org/publ/MSM2000/T31.01.pdf
General
- Grupo de señal mixta analógica Accellera Verilog
- verilogams.com - Manual del usuario para Verilog-AMS y Verilog-A
- La comunidad de guías del diseñador, Verilog-A / MS : ejemplos de modelos escritos en Verilog-AMS
- EDA.ORG AMS Wiki : problemas, desarrollo futuro, integración de SystemVerilog