Los procesadores de señales digitales están presentes en multitud de aplicaciones de la tecnología moderna como teléfonos móviles, equipos de telecomunicaciones, equipos de sonido, instrumentos, en el coche, etc. Qué es exactamente un DSP es lo que tratamos de explicar en este artículo muy didáctico para aquellos que aún no están familiarizados con esta tecnología.

En el pasado, cuando se quería trabajar con una señal como, por ejemplo, una señal de cierta frecuencia para filtrar y eliminar ciertos componentes modificando su forma de onda, se usaba un circuito analógico, en componentes pasivos de la red y, eventualmente, un conjunto de amplificadores operacionales, como se muestra en la figura 1.

Fig. 1 - Procesamiento analogico de señales
Fig. 1 - Procesamiento analogico de señales

 

 

En resumen, ingresa una señal analógica (una forma de onda), trabaja esta señal en su forma analógica con un circuito analógico, por lo tanto, y nuevamente el la salida se obtuvo en la forma analógica original.

Con la elección adecuada de circuitos capaces de manejar estas señales, era posible hacer casi cualquier cosa con ellas.

Sin embargo, con la evolución de la electrónica digital, con procesadores cada vez más potentes, quedó claro que trabajar con una señal en forma digital podía ser más sencillo e incluso dar lugar a aplicaciones que no serían sencillas de obtener con un circuito analógico.

 

 

LA IDEA BÁSICA

 

Cuando modificamos una señal en su forma analógica para cambiar la forma de onda, la frecuencia e introducir retrasos, no hacemos más que aplicar algún tipo de procesamiento que se puede calcular a partir de procedimientos matemáticos convencionales.

 

Cuando cortamos las bajas frecuencias de una señal, en un filtro, podemos calcular con precisión los elementos de ese filtro para obtener los efectos deseados, vea la figura 2.

 

Fig. 2 - Un filtro analógico.
Fig. 2 - Un filtro analógico. | Clique na imagem para ampliar |

 

 

En definitiva, el trabajo de una señal analógica, sea la que sea, también implica un tipo de procesamiento que hace uso de recursos matemáticos.

 

Ahora bien, una de las principales ventajas de la electrónica digital y los microprocesadores es que pueden realizar cálculos muy complejos con gran rapidez y precisión.

 

Esto significa que podríamos reemplazar los circuitos analógicos que funcionan con cierto tipo de señal con equivalentes digitales, si las señales se convirtieran a formato digital.

 

Así, como se ilustra en la figura 3, llegamos a la idea básica del procesador de señal digital o DSP (Digital Signal Processor).

 

Fig. 3 - Estructura básica de un DSP.
Fig. 3 - Estructura básica de un DSP. | Clique na imagem para ampliar |

 

 

 

Una señal (una forma de onda) se convierte en forma digital mediante un convertidor de analógico a digital. Esta forma de onda se transforma en una secuencia de valores numéricos expresados ​​en forma digital que pueden ser aplicados en secuencia a un segundo bloque, que es precisamente el procesador. El procesador luego trabaja la forma de onda en su forma numérica, haciendo los cálculos y transformaciones de acuerdo a lo que se desea del circuito.

Si se trata de un filtro, por ejemplo, se puede programar el procesador para aplicar la transformada de Fourier de la señal, y eliminar en determinadas proporciones los componentes armónicos de determinadas frecuencias, como se muestra en la figura 4.

 

 Fig. 4: Según Fourier podemos representar cualquier forma de señal por funciones senoidales de frecuencias múltiples.
Fig. 4: Según Fourier podemos representar cualquier forma de señal por funciones senoidales de frecuencias múltiples.

 

 

Esto hará que el valor numérico que representa la señal en la salida es diferente al que la representa en la entrada, pero con una forma nueva, que es precisamente la que se desea del circuito.

 

Por ejemplo, si se recortan todos los armónicos de una señal de una frecuencia dada y una forma de onda compleja, la salida será una señal sinusoidal. El circuito del procesador digital habrá transformado una señal de cualquier forma de onda de cierta frecuencia en una señal sinusoidal de la misma frecuencia, como se muestra en la figura 5.

 

Fig. 5: Transformando la forma de onda de una señal.
Fig. 5: Transformando la forma de onda de una señal.

 

 

Para recuperar la señal en su forma analógica original, simplemente agregue a la salida de este conjunto un convertidor digital para analógico o D/A.

 

En nuestro ejemplo, modificamos la forma de onda de la señal, pero el DSP puede hacer mucho más.

 

Por ejemplo, si en lugar de transformar la señal de entrada, simplemente retrasamos su aplicación a la salida, memorizando su valor instantáneo en una memoria, podemos crear una cámara de eco.

 

Pero, el DSP puede hacer mucho más que eso.

 

 

 

APLICACIONES

 

En el ejemplo que presentamos, mostramos cómo un DSP puede modificar una señal analógica trabajando sobre ella en forma digital.

 

Las aplicaciones en las que se pueden utilizar los DSPs son las siguientes:

a) Filtrado digital

Respuesta a impulsos finitos (FIR)

Respuesta a impulsos infinitos (IIR)

Filtros adaptados (correladores)

Transformadas de Hilbert

Filtros adaptativos

 

b) Procesamiento de señales

Compresión (reconocimiento de voz)

Expansión

Media

Cálculos de energía

Procesamiento homomórfico

 

c) Procesamiento de datos:

Criptografía y barajar (scrambling)

Codificación (Codificación Trellis)

De-codificación (Decodificación de Viterbi)

 

d) Procesamiento numérico

Escalar, vectorial, matriz aritmética y computación con funciones trascendentales

Funciones no lineales

Generación de números pseudoaleatorios

 

e) Análisis espectral

Transformada de Fourier Rápida (FFT)

Transformada de Fourier Discreta (DFT)

Transformadas de seno/coseno

Modelaje ARMA, MA y AR

 

Todo esto hace que DSP se encuentre en los siguientes tipos de circuitos:

 

a) Telecomunicaciones

* Generación de tonos

* Circuitos DTMF

* Interfaces de abonado

* Full duplex

* Transcodificadores

* Vocoders

* Repetidores

* Cancelación de ruido

* ISDN

 

b) Comunicación de datos:

* Módems de alta velocidad

* Fax de alta velocidad

 

c) Comunicaciones por radio:

* Sistemas de comunicaciones seguras

* Radiodifusión

* Teléfonos celulares

 

d) Computadoras:

* Estaciones de trabajo

* PCs

* Aceleradores de gráficos

 

e) Procesamiento de imágenes

* Compresión, restauración

* Vista de robot

* Animación

 

f) Instrumentación

* Análisis espectral

* Adquisición de datos

* Generación de formas de onda

 

g) Procesamiento de sonido

* Radio digital (AM/FM)

* HI FI

* Cancelación de ruido

* Síntesis de música y procesamiento

 

h) Control

* Servos

* Robótica

* Control de motores

 

i) Medicina

* Escáneres

* Rayos X

* Electrocardiograma

 

f) Video digital

* TV digital

 

g ) Radar y Sonar

* Navegación

* Oceanografía

* Localización automática

Y muchos otros.

 

 

 

CONCLUSIÓN

 

Cuando se quiere trabajar con señales analógicas procesadas en tiempo real, la mejor solución para realizar operaciones complejas es la que hace uso del DSP. Disponibles por muchos fabricantes como Texas, Motorola, etc., estos componentes se pueden encontrar en configuraciones que se adaptan a aplicaciones específicas.

 

Sitios web sobre DSP:

Texas Instruments - http://www.ti.com 

 

 

18.873MBMemory Usage50.51msRequest Duration
Joomla! Version5.2.3
PHP Version8.3.16
Identityguest
Response200
Templatecassiopeia
Database
Server
mysql
Version
10.5.22-MariaDB
Collation
latin1_swedish_ci
Conn Collation
utf8mb4_general_ci
$_GET
[]
$_POST
[]
$_SESSION
array:1 [ "joomla" => "***redacted***" ]
$_COOKIE
[]
$_SERVER
array:51 [ "USER" => "apache" "HOME" => "/usr/share/httpd" "SCRIPT_NAME" => "/index.php" "RE...
session
array:3 [ "counter" => 1 "timer" => array:3 [ "start" => 1741914299 "last" => 1741914299...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:21 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (85.86KB) (189μs)
  • afterInitialise (1.14MB) (3.2ms)
  • afterRoute (179.16KB) (934μs)
  • beforeRenderComponent com_content (100.65KB) (421μs)
  • Before Access::preloadComponents (all components) (33.5KB) (192μs)
  • After Access::preloadComponents (all components) (107.06KB) (380μs)
  • Before Access::preloadPermissions (com_content) (1.57KB) (10μs)
  • After Access::preloadPermissions (com_content) (16.16MB) (28.98ms)
  • Before Access::getAssetRules (id:26957 name:com_content.article.30599) (514.65KB) (686μs)
  • After Access::getAssetRules (id:26957 name:com_content.article.30599) (7.38KB) (47μs)
  • afterRenderComponent com_content (401.99KB) (7.55ms)
  • afterDispatch (2.25KB) (67μs)
  • beforeRenderRawModule mod_articles_category (Banco de Circuitos) (359.33KB) (1.71ms)
  • afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (334μs)
  • beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (115μs)
  • afterRenderRawModule mod_finder (Busca_inteligente) (64.98KB) (1.16ms)
  • beforeRenderModule mod_articles_category (Banco de Circuitos) (10.1KB) (554μs)
  • afterRenderModule mod_articles_category (Banco de Circuitos) (5.39KB) (67μs)
  • beforeRenderModule mod_finder (Busca_inteligente) (6.39KB) (207μs)
  • afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (57μs)
  • afterRender (265.73KB) (3.53ms)
  • 1 x After Access::preloadPermissions (com_content) (16.16MB) (57.38%)
    28.98ms
    1 x afterRenderComponent com_content (401.99KB) (14.95%)
    7.55ms
    1 x afterRender (265.73KB) (6.99%)
    3.53ms
    1 x afterInitialise (1.14MB) (6.34%)
    3.20ms
    1 x beforeRenderRawModule mod_articles_category (Banco de Circuitos) (359.33KB) (3.39%)
    1.71ms
    1 x afterRenderRawModule mod_finder (Busca_inteligente) (64.98KB) (2.29%)
    1.16ms
    1 x afterRoute (179.16KB) (1.85%)
    934μs
    1 x Before Access::getAssetRules (id:26957 name:com_content.article.30599) (514.65KB) (1.36%)
    686μs
    1 x beforeRenderModule mod_articles_category (Banco de Circuitos) (10.1KB) (1.1%)
    554μs
    1 x beforeRenderComponent com_content (100.65KB) (0.83%)
    421μs
    1 x After Access::preloadComponents (all components) (107.06KB) (0.75%)
    380μs
    1 x afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (0.66%)
    334μs
    1 x beforeRenderModule mod_finder (Busca_inteligente) (6.39KB) (0.41%)
    207μs
    1 x Before Access::preloadComponents (all components) (33.5KB) (0.38%)
    192μs
    1 x afterLoad (85.86KB) (0.37%)
    189μs
    1 x beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (0.23%)
    115μs
    1 x afterDispatch (2.25KB) (0.13%)
    67μs
    1 x afterRenderModule mod_articles_category (Banco de Circuitos) (5.39KB) (0.13%)
    67μs
    1 x afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (0.11%)
    57μs
    1 x After Access::getAssetRules (id:26957 name:com_content.article.30599) (7.38KB) (0.09%)
    47μs
    1 x Before Access::preloadPermissions (com_content) (1.57KB) (0.02%)
    10μs
21 statements were executed, 5 of which were duplicates, 16 unique11.35ms1.57MB
  • SELECT @@SESSION.sql_mode;31μs968B/libraries/src/Session/MetadataManager.php:184Copy
  • SELECT `session_id` FROM `incbmx_session` WHERE `session_id` = :session_id LIMIT 167μs1.3KBParams/libraries/src/Session/MetadataManager.php:187Copy
  • INSERT INTO `incbmx_session` (`session_id`,`guest`,`time`,`userid`,`username`,`client_id`) VALUES (:session_id, :guest, :time, :user_id, :username, :client_id)145μs944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `id`,`rules` FROM `incbmx_viewlevels`47μs656B/libraries/src/Access/Access.php:955Copy
  • SELECT `b`.`id` FROM `incbmx_usergroups` AS `a` LEFT JOIN `incbmx_usergroups` AS `b` ON `b`.`lft` <= `a`.`lft` AND `b`.`rgt` >= `a`.`rgt` WHERE `a`.`id` = :guest77μs1.64KBParams/libraries/src/Access/Access.php:868Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`266μs20.2KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `incbmx_assets` WHERE `name` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4,:preparedArray5,:preparedArray6,:preparedArray7,:preparedArray8,:preparedArray9,:preparedArray10,:preparedArray11,:preparedArray12,:preparedArray13,:preparedArray14,:preparedArray15,:preparedArray16,:preparedArray17,:preparedArray18,:preparedArray19,:preparedArray20,:preparedArray21,:preparedArray22,:preparedArray23,:preparedArray24,:preparedArray25,:preparedArray26,:preparedArray27,:preparedArray28,:preparedArray29,:preparedArray30,:preparedArray31,:preparedArray32,:preparedArray33,:preparedArray34,:preparedArray35,:preparedArray36,:preparedArray37,:preparedArray38,:preparedArray39)221μs7.44KBParams/libraries/src/Access/Access.php:357Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `incbmx_assets` WHERE `name` LIKE :asset OR `name` = :extension OR `parent_id` = 07.8ms1.46MBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `incbmx_content`394μs2.39KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • UPDATE `incbmx_content` SET `hits` = (`hits` + 1) WHERE `id` = '30599'218μs48B/libraries/src/Table/Table.php:1348Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `incbmx_content` AS `a` INNER JOIN `incbmx_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `incbmx_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `incbmx_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `incbmx_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `incbmx_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)174μs22.13KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`213μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `m`.`tag_id`,`t`.* FROM `incbmx_contentitem_tag_map` AS `m` INNER JOIN `incbmx_tags` AS `t` ON `m`.`tag_id` = `t`.`id` WHERE `m`.`type_alias` = :contentType AND `m`.`content_item_id` = :id AND `t`.`published` = 1 AND `t`.`access` IN (:preparedArray1,:preparedArray2)264μs3.98KBParams/libraries/src/Helper/TagsHelper.php:388Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`178μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT DISTINCT a.id, a.title, a.name, a.checked_out, a.checked_out_time, a.note, a.state, a.access, a.created_time, a.created_user_id, a.ordering, a.language, a.fieldparams, a.params, a.type, a.default_value, a.context, a.group_id, a.label, a.description, a.required, a.only_use_in_subform,l.title AS language_title, l.image AS language_image,uc.name AS editor,ag.title AS access_level,ua.name AS author_name,g.title AS group_title, g.access as group_access, g.state AS group_state, g.note as group_note FROM incbmx_fields AS a LEFT JOIN `incbmx_languages` AS l ON l.lang_code = a.language LEFT JOIN incbmx_users AS uc ON uc.id=a.checked_out LEFT JOIN incbmx_viewlevels AS ag ON ag.id = a.access LEFT JOIN incbmx_users AS ua ON ua.id = a.created_user_id LEFT JOIN incbmx_fields_groups AS g ON g.id = a.group_id LEFT JOIN `incbmx_fields_categories` AS fc ON fc.field_id = a.id WHERE ( (`a`.`context` = :context AND (`fc`.`category_id` IS NULL OR `fc`.`category_id` IN (:preparedArray1,:preparedArray2,:preparedArray3)) AND `a`.`access` IN (:preparedArray4,:preparedArray5)) AND (`a`.`group_id` = 0 OR `g`.`access` IN (:preparedArray6,:preparedArray7)) AND `a`.`state` = :state) AND (`a`.`group_id` = 0 OR `g`.`state` = :gstate) AND `a`.`only_use_in_subform` = :only_use_in_subform ORDER BY a.ordering ASC463μs4.81KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:164Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`228μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `name`,`element` FROM `incbmx_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1154μs1.89KB/administrator/components/com_finder/src/Helper/LanguageHelper.php:135Copy
  • SELECT `title` FROM `incbmx_finder_taxonomy` WHERE `parent_id` = 1 AND `state` = 1 AND `access` IN (1,5)92μs648B/administrator/components/com_finder/src/Indexer/Taxonomy.php:325Copy
  • SELECT * FROM `incbmx_schemaorg` WHERE `itemId` = :itemId AND `context` = :context62μs1.55KBParams/plugins/system/schemaorg/src/Extension/Schemaorg.php:403Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `incbmx_content` AS `a` INNER JOIN `incbmx_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `incbmx_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `incbmx_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `incbmx_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `incbmx_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)182μs22.17KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT SUM(CASE WHEN `a`.`next_execution` <= :now THEN 1 ELSE 0 END) AS due_count,SUM(CASE WHEN `a`.`locked` IS NULL THEN 0 ELSE 1 END) AS locked_count FROM `incbmx_scheduler_tasks` AS `a` WHERE `a`.`state` = 174μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:465Copy