stringtranslate.com

Verilog-AMS

Verilog-AMS es un derivado del lenguaje de descripción de hardware Verilog que incluye extensiones de señal analógica y mixta (AMS) para definir el comportamiento de los sistemas analógicos y de señal mixta. Extiende los bucles de simulación basados ​​en eventos de Verilog/ SystemVerilog / VHDL mediante un simulador de tiempo continuo que resuelve las ecuaciones diferenciales en el 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 analógicos y de señales 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ñal mixta. Proporciona semántica de modelado tanto en tiempo continuo como impulsada por eventos, por lo que es adecuado para circuitos analógicos, digitales y analógicos/digitales mixtos. Es particularmente 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 procedimental, sino lenguajes de descripción de hardware (HDL) basados ​​en eventos. Como tales, proporcionan características de lenguaje sofisticadas y potentes para la definición y sincronización de acciones y eventos paralelos. Por otro lado, muchas acciones definidas en las instrucciones del programa HDL pueden ejecutarse en paralelo (de manera similar a los subprocesos y tasklets en lenguajes procedimentales, pero de forma mucho más detallada). Sin embargo, Verilog/AMS se puede combinar con lenguajes procedimentales como el lenguaje ANSI C mediante la interfaz procedimental Verilog del simulador, lo que facilita la implementación de la suite de pruebas y permite la interacción con código heredado o equipos de banco de pruebas.

La intención original del comité Verilog-AMS era un lenguaje único para el diseño analógico y digital, sin embargo, debido a retrasos en el proceso de fusión, permanece en Accellera mientras que Verilog evolucionó a SystemVerilog y pasó al IEEE.

Ejemplo de código

Verilog/AMS es un superconjunto del HDL digital Verilog, por lo que todas las instrucciones 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 = 4 de [ 1:24 ]; parámetro entero td = 1 n de [ 0 : inf ); // Retardo de procesamiento del DAC // Definir entrada/salida entrada clk , vref ; entrada [ bits - 1 : 0 ] din ; salida aout ; // Definir tipos de puerto lógica clk ; lógica [ bits - 1 : 0 ] din ; eléctrica aout , vref ; // Variables internas real aout_new , ref ; entero i ; // Cambiar señal en la parte analógica analog begin @( posedge clk ) begin // Cambiar salida solo para flanco ascendente del reloj aout_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 ) <+ transition ( aout_new , td , 5 n ); // Obtener una transición más suave cuando cambia el nivel de salida end endmodule                                                       

El modelo ADC lee señales analógicas en los bloques digitales:

`include "constants.vams" `include "disciplines.vams" // Módulo de modelo ADC simple adc_simple ( clk , dout , vref , vin ); // Parámetros parámetro entero bits = 4 from [ 1:24 ]; // Número de bits parámetro entero td = 1 from [ 0 : inf ); // Retardo de procesamiento del ADC // Definir entrada/salida entrada clk , vin , vref ; salida [ bits - 1 : 0 ] dout ; // Definir tipos de puerto eléctrico vref , vin ; lógica clk ; reg [ bits - 1 : 0 ] dout ; // Variables internas real ref , sample ; entero i ; inicial begin dout = 0 ; fin                                  // Realizar muestreo en los bloques digitales para el flanco ascendente del reloj siempre @( 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                         

Implementaciones

Si bien el lenguaje inicialmente solo contaba con el respaldo de empresas comerciales, partes del subconjunto de modelado de comportamiento, "Verilog-A", fueron adoptadas por la comunidad de modelado de transistores. El traductor ADMS lo admite para simuladores de código abierto como Xyce y ngSPICE. Ahora hay disponible una implementación más completa a través de OpenVAF. El simulador post-SPICE Gnucap fue diseñado de acuerdo con el documento estándar y su compatibilidad con Verilog-AMS, tanto para el nivel de simulador como para el modelado de comportamiento, está creciendo.

Véase también

Referencias

  1. ^ La semántica de programación se especifica en el Manual de referencia del lenguaje Verilog/AMS, sección 8.
  2. ^ Grupo de señales mixtas analógicas Verilog de Accellera, "Descripción general", http://www.verilog.org/verilog-ams/htmlpages/overview.html
  3. ^ Manual de referencia del lenguaje Verilog-AMS
  4. ^ Guía del diseñador para Verilog-AMS
  5. ^ Verificación de circuitos integrados analógicos complejos Archivado el 18 de octubre de 2006 en Wayback Machine .

Enlaces externos

General

Implementaciones de código abierto