{"id":19156,"date":"2022-12-19T15:58:54","date_gmt":"2022-12-19T14:58:54","guid":{"rendered":"https:\/\/demdlx704as001.ad.harman.com\/?p=19156"},"modified":"2024-06-07T11:47:34","modified_gmt":"2024-06-07T09:47:34","slug":"fira-mimo","status":"publish","type":"post","link":"https:\/\/audioworx.transfunnel.co\/old\/?p=19156","title":{"rendered":"FIRA MIMO"},"content":{"rendered":"<p>FIRA MIMO audio object is a group of FIR filter banks associated with each input and output. FIRA stands for \u201cfir accelerator\u201d and it indicates that the underlying implementation uses a hardware accelerator. MIMO stands for \u201cmulti input multi output\u201d indicating that each output is the summation of one or more FIR filtered inputs.<\/p>\n<p>FIRA MIMO can be used for various applications like individual sound zones etc.<\/p>\n<p><em>Use Case: This audio object can be deployed whenever the audio requires the dual rate MIMO FIR filters taking into considerations the data pipeline delay and other limitations. More than one instance of FIRAMIMO also can be run in the same core .<\/em><\/p>\n<p class=\"note\">The AO supports in-place computation based on the core type.<\/p>\n<p class=\"heading\"><strong>FIRA MIMO Properties<\/strong><\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-full wp-image-24618\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/FIRAMIMO_01.png\" alt=\"\" width=\"439\" height=\"438\" \/><\/p>\n<table style=\"border-collapse: collapse; width: 100%; height: 501px;\" border=\"1\">\n<tbody>\n<tr style=\"height: 28px;\">\n<td class=\"table-head\" style=\"width: 17.1912%; height: 28px;\"><strong>Properties<\/strong><\/td>\n<td class=\"table-head\" style=\"width: 82.8088%; height: 28px;\"><strong>Description<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 140px;\">\n<td style=\"width: 17.1912%; height: 140px;\"><strong># of Audio In<\/strong><\/td>\n<td style=\"width: 82.8088%; height: 140px;\">\n<p><span style=\"font-size: 12pt;\">Enter the input value.<\/span><\/p>\n<p><span style=\"font-size: 12pt;\">Range: 1 to 20<\/span><\/p>\n<p><span style=\"font-size: 12pt;\">The default value is set to 4.<\/span><\/td>\n<\/tr>\n<tr style=\"height: 140px;\">\n<td style=\"width: 17.1912%; height: 140px;\"><strong># of Audio Out<\/strong><\/td>\n<td style=\"width: 82.8088%; height: 140px;\">\n<p><span style=\"font-size: 12pt;\">Enter the output value.<\/span><\/p>\n<p><span style=\"font-size: 12pt;\">Range: 1 to 64<\/span><\/p>\n<p><span style=\"font-size: 12pt;\">The default value is set to 4.<\/span><\/td>\n<\/tr>\n<tr style=\"height: 167px;\">\n<td style=\"width: 17.1912%; height: 167px;\"><strong>Number of taps for Hi filters<\/strong><\/td>\n<td style=\"width: 82.8088%; height: 167px;\">\n<p><span style=\"font-size: 12pt;\">The number of filter coefficients (taps) for the high rate path is configured using the m_NumElements. All channels in the high rate path use the same number of taps.<\/span><\/p>\n<p><span style=\"font-size: 12pt;\">Range: 384 to 4096<\/span><\/p>\n<p><span style=\"font-size: 12pt;\">The default value is set to 384.<\/span><\/td>\n<\/tr>\n<tr style=\"height: 26px;\">\n<td style=\"width: 17.1912%; height: 26px;\"><strong>Display Name<\/strong><\/td>\n<td style=\"width: 82.8088%; height: 26px;\"><span style=\"font-size: 12pt;\">Display name of the FIRAMIMO\u00a0 audio object in signal flow design. It can be changed based on the intended usage of the object.<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p class=\"heading\"><strong>Mode<\/strong><\/p>\n<p>There are no modes available for FIRA MIMO.<\/p>\n<p class=\"heading\"><strong>Additional Parameters<\/strong><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-24646\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/FIRAMIMO_10.png\" alt=\"\" width=\"286\" height=\"280\" \/><\/p>\n<p>Below table describes the FIRA MIMO additional parameters.<\/p>\n<table style=\"border-collapse: collapse; width: 89.5004%;\" border=\"1\">\n<tbody>\n<tr>\n<td class=\"table-head\" style=\"width: 17.5476%;\"><strong>Parameter<\/strong><\/td>\n<td class=\"table-head\" style=\"width: 71.8207%;\" colspan=\"2\">Description<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 17.5476%;\"><strong>Max delay for high-rate filters<\/strong><\/td>\n<td style=\"width: 51.6533%;\">\n<p><span style=\"font-size: 12pt;\">Length of delay line for high-rate path.<\/span><\/p>\n<p><span style=\"font-size: 12pt;\">Range: 0 to 2048<\/span><\/p>\n<p><span style=\"font-size: 12pt;\">Default: 0<\/span><\/p>\n<p><span style=\"font-size: 12pt;\">Data Type: uint32_t<\/span><\/td>\n<td style=\"width: 20.1674%;\"><img decoding=\"async\" class=\"alignnone wp-image-24622\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/FIRAMIMO_02.png\" alt=\"\" width=\"258\" height=\"377\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 17.5476%;\"><strong>Taps for low-rate filters<\/strong><\/td>\n<td style=\"width: 51.6533%;\">\n<p><span style=\"font-size: 12pt;\">Number of taps for low-rate filters. All channels in the low rate path use the same number of taps which can be different from high rate.<\/span><\/p>\n<p><span style=\"font-size: 12pt;\">Range: 512 to 2048<\/span><\/p>\n<p><span style=\"font-size: 12pt;\">Default: 512<\/span><\/p>\n<p><span style=\"font-size: 12pt;\">Data Type: uint32_t<\/span><\/td>\n<td style=\"width: 20.1674%;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-24624\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/FIRAMIMO_03.png\" alt=\"\" width=\"260\" height=\"359\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 17.5476%;\"><strong>Coefficient format<\/strong><\/td>\n<td style=\"width: 51.6533%;\"><span style=\"font-size: 12pt;\">Filter coefficient data format.<\/span><\/p>\n<ul>\n<li><span style=\"font-size: 12pt;\">0: 32-bit floating point coefficients<\/span><\/li>\n<li><span style=\"font-size: 12pt;\">1: IEEE 16-bit floating point coefficients<\/span><\/li>\n<li><span style=\"font-size: 12pt;\">2: 16-bit fixed point coefficients<\/span><\/li>\n<\/ul>\n<p><span style=\"font-size: 12pt;\">Range: 0 to 2<\/span><\/p>\n<p><span style=\"font-size: 12pt;\">Default: 0<\/span><\/p>\n<p><span style=\"font-size: 12pt;\">Data Type: uint8_t<\/span><\/td>\n<td style=\"width: 20.1674%;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-24628\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/FIRAMIMO_04.png\" alt=\"\" width=\"250\" height=\"351\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 17.5476%;\"><strong>Down sampling Factor<\/strong><\/td>\n<td style=\"width: 51.6533%;\"><span style=\"font-size: 12pt;\">Down sampling factor.<\/span><\/p>\n<ul>\n<li><span style=\"font-size: 12pt;\">0: Down sampling factor of 4<\/span><\/li>\n<li><span style=\"font-size: 12pt;\">1: Down sampling factor of 16<\/span><\/li>\n<\/ul>\n<p><span style=\"font-size: 12pt;\">Range: 0 to 1<\/span><\/p>\n<p><span style=\"font-size: 12pt;\">Default: 1<\/span><\/p>\n<p><span style=\"font-size: 12pt;\">Data Type: uint8_t<\/span><\/p>\n<p>&nbsp;<\/td>\n<td style=\"width: 20.1674%;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-24632\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/FIRAMIMO_05.png\" alt=\"\" width=\"252\" height=\"370\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 17.5476%;\"><strong>Conf matrix high<\/strong><\/td>\n<td style=\"width: 51.6533%;\"><span style=\"font-size: 12pt;\">Configuration matrix for high rate filters.<\/span><\/p>\n<ul>\n<li><span style=\"font-size: 12pt;\">Dimension 1: Input of size 20 or number of input channels in SFD whichever is less.<\/span><\/li>\n<li><span style=\"font-size: 12pt;\">Dimension 2: Output of size 64 or number of output channels in SFD whichever is less.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-size: 12pt;\">Value:<\/span><\/p>\n<ul>\n<li><span style=\"font-size: 12pt;\">\u00a0 0: FIR not present<\/span><\/li>\n<li><span style=\"font-size: 12pt;\">\u00a0 1: FIR present<\/span><\/li>\n<\/ul>\n<p><span style=\"font-size: 12pt;\">Range: 0 to 1<\/span><\/p>\n<p><span style=\"font-size: 12pt;\">Default: 0<\/span><\/p>\n<p><span style=\"font-size: 12pt;\">Data Type: uint8_t<\/span><\/td>\n<td style=\"width: 20.1674%;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-24636\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/FIRAMIMO_06.png\" alt=\"\" width=\"268\" height=\"184\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 17.5476%;\"><strong>Conf matrix low<\/strong><\/td>\n<td style=\"width: 51.6533%;\"><span style=\"font-size: 12pt;\">Configuration matrix for low rate filters.<\/span><\/p>\n<ul>\n<li><span style=\"font-size: 12pt;\">\u00a0\u00a0\u00a0 Dimension 1: Input of size 20 or number of input channels in SFD whichever is less.<\/span><\/li>\n<li><span style=\"font-size: 12pt;\">\u00a0\u00a0\u00a0 Dimension 2: Output of size 64 or number of output channels in SFD whichever is less.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-size: 12pt;\">Value:<\/span><\/p>\n<ul>\n<li><span style=\"font-size: 12pt;\">\u00a0 0: FIR not present<\/span><\/li>\n<li><span style=\"font-size: 12pt;\">\u00a0 1: FIR present<\/span><\/li>\n<\/ul>\n<p><span style=\"font-size: 12pt;\">Range: 0 to 1<\/span><\/p>\n<p><span style=\"font-size: 12pt;\">Default: 0<\/span><\/p>\n<p><span style=\"font-size: 12pt;\">Data Type: uint8_t<\/span><\/td>\n<td style=\"width: 20.1674%;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-24639\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/FIRAMIMO_07.png\" alt=\"\" width=\"276\" height=\"199\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 17.5476%;\"><strong>Max Processing Size<\/strong><\/td>\n<td style=\"width: 51.6533%;\">\n<p><span style=\"font-size: 12pt;\">When 2 or more filters are enabled on an input channel, FIRAMIMO combines them and submits as one job to the accelerator. Max Processing Size is used as the max limit when combining. For example, when there are 6 filters enabled on an input channel and Max Processing Size is set to 4, FIRAMIMO submits first job for 4 filters and second job with 2 filters.<\/span><\/p>\n<p><span style=\"font-size: 12pt;\">Range: 2 to 8<\/span><\/p>\n<p><span style=\"font-size: 12pt;\">Default: 4<\/span><\/p>\n<p><span style=\"font-size: 12pt;\">Data Type: uint8_t<\/span><\/td>\n<td style=\"width: 20.1674%;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-24642\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/FIRAMIMO_08.png\" alt=\"\" width=\"258\" height=\"373\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 17.5476%;\"><strong>Enable Cycles Measurement<\/strong><\/td>\n<td style=\"width: 51.6533%;\"><span style=\"font-size: 12pt;\">Enable\/Disable realtime accelerator mcps (million cycles per second). When enabled, Average and Max mcps available to be read as tuning parameters in sate variable explorer.<\/span><\/p>\n<ul>\n<li>0: Disable<\/li>\n<li>1: Enable<\/li>\n<\/ul>\n<p>Range: 0 to 1<\/p>\n<p>Default: 0<\/p>\n<p>Data Type: uint8_t<\/td>\n<td style=\"width: 20.1674%;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24643\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/FIRAMIMO_09.png\" alt=\"\" width=\"281\" height=\"420\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 17.5476%;\"><strong>Accelerator Configuration<\/strong><\/td>\n<td style=\"width: 51.6533%;\">Select which among the available FIR hardware accelerator to use for the FIR processing.<\/p>\n<ul>\n<li>0: Accelerator 1 (Default)<\/li>\n<li>1: Accelerator 2<\/li>\n<li>2: Both Accelerators<\/li>\n<\/ul>\n<p>Range: 0 to 2<\/p>\n<p>Default: 0<\/p>\n<p>Data Type: uint8_t<\/p>\n<p>On ADSP-21593, when this configuration is set to Accelerator 1, only the first accelerator will be used, when set to Accelerator 2, only the second accelerator will be used, and when set to Both Accelerators, both available FIR accelerators will be used with almost equal number of filters processed by both accelerators.<\/p>\n<p>When both hardware accelerators are used and &#8220;enable cycles measurement&#8221; additional configuration is enabled, the average and maxixmum mcps of both the accelerators shall be individually readable from the SV explorer.<\/p>\n<p>On DSPs with only a single accelerator such as the ADSP-21569 (GUL), selection of accelerator configuration will be available, however, all filtering jobs will be processed by the only available FIR accelerator.<\/p>\n<p><span style=\"font-size: 12pt;\">\u00a0<\/span><\/td>\n<td style=\"width: 20.1674%;\">\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-25942\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/Firamimo_AcceleratorConfiguration.png\" alt=\"\" width=\"286\" height=\"723\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-26023\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/AccMCPS_21593_SVExplorer.png\" alt=\"\" width=\"521\" height=\"389\" \/><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p class=\"heading\"><strong>Tuning Parameters<\/strong><\/p>\n<p>For each filter combination in FIRA MIMO, this object exposes these two tuning parameters to the GTT:<\/p>\n<p><strong>Mode:<\/strong>\u00a0The mode of each filter can be set to:<\/p>\n<ul>\n<li>Normal<\/li>\n<li>Bypass<\/li>\n<li>Off<\/li>\n<\/ul>\n<p>This parameter is of the category \u201cState\u201d and therefore, the configurations done for Filter modes will be transferred to the device only after the device is connected.<\/p>\n<p><strong>Coefficients:<\/strong>\u00a0Filter coefficients can be imported from .csv files. The filter taps set in the GTT must match the taps of the filter being imported from the .csv file.<\/p>\n<p class=\"heading\"><strong>Control Parameters<\/strong><\/p>\n<p>There are no control inputs.<\/p>\n<p class=\"heading\"><strong>Native Panel<\/strong><\/p>\n<p>FIRA MIMO native panel allows you to configure the Mode of each enabled filter and to load coefficients as well. All the diagonal filters are active as this diagonal values are configured through additional parameters. In order to see the graphs, you need to import coefficients. Use &#8216;Import&#8217; or &#8216;Import All&#8217; option\u00a0 to import coefficients.<\/p>\n<p>To open the native panel, double-click on the FIRMIMO audio object in the signal flow designer.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-24574\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/Fira_panel-e1694778041108.png\" alt=\"\" width=\"872\" height=\"464\" \/><\/p>\n<p>When the device is connected the filter states will not be in sync with the device until the states are received or the native panel is opened. Once the native panel is opened after a successful connection, the filter states will be transferred to the device.<br \/>\nProvide number of Taps to 384 and from additional parameters set all diagonal cell to 1 for Conf matrix high\/ low as per below image.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-24575\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/Addiotional.png\" alt=\"\" width=\"872\" height=\"524\" \/><\/p>\n<p><strong>Amplitude\/Phase: <\/strong>When the coefficients are given and &#8220;Amplitude\/Phase&#8221; option is selected, the graph display the value as per below figure.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-24577\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/Fira_ampli.png\" alt=\"\" width=\"888\" height=\"482\" \/><\/p>\n<p><strong>Coefficients: <\/strong>When the coefficients are given and &#8220;Coefficients&#8221; option is selected, the graph display the values as per below figure. You can change the graph style using &#8220;Chart Style&#8221; option.<\/p>\n<ul>\n<li>Line chart style: when &#8220;Chart Style&#8221; selected as Line, the Coefficients graph as per below image.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-24578\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/FIRA_co.png\" alt=\"\" width=\"845\" height=\"457\" \/><\/li>\n<li>Dot chart style: when &#8220;Chart Style&#8221; selected as Dot, the Coefficients graph as per below image.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-24579\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/FIra_Chart.png\" alt=\"\" width=\"847\" height=\"457\" \/><\/li>\n<\/ul>\n<p><strong>Group Delay: <\/strong>When the coefficients are given and &#8220;Group Delay&#8221; option is selected, the graph display the values as per below figure.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-24581\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/GroupDelay.png\" alt=\"\" width=\"891\" height=\"494\" \/><\/p>\n<p><strong>Curves Legend: <\/strong>This option allows you to show the details of which graph tab (Amplitude\/Phase, Coefficients, Group Delay) is selected.<\/p>\n<p>On the selection of <strong>Amplitude\/Phase<\/strong> graph tab Curves Legend will show below information.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24562\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2019\/06\/Curve_amp.png\" alt=\"\" width=\"414\" height=\"216\" \/><\/p>\n<p>On the selection of <strong>Coefficients<\/strong> graph tab and <strong>Chart Styles<\/strong> &#8216;Dots&#8217;, Curves Legend will show below information.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24563\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2019\/06\/Curve_Co.png\" alt=\"\" width=\"410\" height=\"278\" \/><\/p>\n<p>On the selection of <strong>Coefficients<\/strong> graph tab and <strong>Chart Styles<\/strong> &#8216;Line&#8217;, Curves Legend will show below information.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24564\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2019\/06\/Curve_Co_lin.png\" alt=\"\" width=\"408\" height=\"322\" \/><\/p>\n<p>On the selection of <strong>Group Delay<\/strong> graph tab, Curves Legend will show below information.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-24584\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/GroupDelay-1.png\" alt=\"\" width=\"413\" height=\"272\" \/><\/p>\n<p class=\"text\"><b>Additional<\/b><strong> Functionalities<\/strong><\/p>\n<p><strong>Flat : <\/strong>This is used to make the graph flat by making coefficients to 0.<\/p>\n<table style=\"width: 100%; border-collapse: collapse; border-style: hidden;\" border=\"1\">\n<tbody>\n<tr>\n<td style=\"width: 50%; background-color: #ffffff; border-color: #ffffff;\">\n<p>Before you use &#8220;Flat&#8221; functionality.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-24577 size-full\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/Fira_ampli-e1694776364784.png\" alt=\"\" width=\"1368\" height=\"870\" \/><\/td>\n<td style=\"width: 50%; background-color: #ffffff; border-color: #ffffff;\">\n<p>After you click on &#8220;Flat&#8221; button, the graph will change as per below image.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-24588 size-full\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/FIRA_AfterFlat-1-e1694776336429.png\" alt=\"\" width=\"1350\" height=\"865\" \/><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Import :<\/strong> This function is used to import the coefficients for a single active filter. Click the &#8220;Import&#8221; button, then enter the file path and click Ok.<br \/>\nAll coefficients for the selected filter will be imported, as shown in the graph. If the number of coefficients does not match the number of taps as shown in the screenshot below, a warning pop up will appear.<br \/>\nClick &#8216;Yes&#8217; to import\u00a0available coefficients or click &#8216;No&#8217; to cancel the import.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-24589 \" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/Warning-e1694776707798.png\" alt=\"\" width=\"460\" height=\"200\" \/><\/p>\n<p><strong>Export : <\/strong>This option is used to export coefficients for selected active filter into csv file.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-24593 size-full\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/EXport-e1694776974887.png\" alt=\"\" width=\"134\" height=\"348\" \/><\/p>\n<p><strong>Export All : <\/strong>This option is used to export all active filters in one go. Click the &#8220;Export All&#8221; button, then enter the path and file name, then click Ok.<br \/>\nA xml file will be created which will have coefficients for each active filter. Below figure shows the example of the configuration of the active filters in the xml file.<br \/>\nYou can use Import All&#8217; button to import back the exported file.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-24590 \" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/Fira_Export-e1694777200434.png\" alt=\"\" width=\"1169\" height=\"380\" \/><\/p>\n<p><strong>Import All : <\/strong>This option is used to import all coefficients in one go. Click the &#8220;Import All&#8221; button, then enter the XML file path and click Ok.<br \/>\nAll the given coefficients will be imported and can be seen in the graph. If there is a mismatch between xml file In and Out matrix with FIRMIMO panel In and Out matrix then error will be displayed and import will fail.<\/p>\n<p>In below image filter (Out 1 In1) is not active and try to import this as well so error is prompted.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-24592\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/Fira_Import_faild.png\" alt=\"\" width=\"941\" height=\"501\" \/><\/p>\n<p><strong>Read:\u00a0 <\/strong>This is used to read from the target to display in the panel.<\/p>\n<p><strong>Send : <\/strong>This is used to send the values changed in panel to target.<\/p>\n<p class=\"note\">Above mentioned functionality is similar for LowRate tab as well.<\/p>\n<p class=\"heading\">Memory Record Management for SHARC ADSP-21593 in Dual Accelerator Mode<\/p>\n<p>When using the FIRAMIMO object on a SHARC ADSP-21593 in dual accelerator mode, careful memory record placement consideration is required to maximize the number of FIR filters that can be processed. The hardware FIR accelerators in the DSP perform operations in parallel with the cores, causing memory access bottleneck due to the increase in the number of parallel memory accesses to the external memory (DDR3). This can be attributed to the page management overheads incurred by the Dynamic Memory Controller (DMC) as described in the <a href=\"https:\/\/www.analog.com\/media\/en\/technical-documentation\/application-notes\/ee412v02.pdf\">EE-412 document<\/a>, which adversely impacts the FIR accelerator performance, limiting the total number of FIR filters that can be processed by the AO. In order to mitigate the issue and improve the processing capacity of the accelerators, it is recommended that the input, output and filter coefficient buffers accessed by each accelerator are placed in dedicated DDR3 memory banks.<\/p>\n<p>To enable placement of the buffers in separate banks, when the &#8220;Accelerator Configuration&#8221; additional configuration parameter is set to 2 (Both Accelerators), a new set of additional memory records with the prefix &#8220;(Acc 2)&#8221; are created to accommodate the second FIR accelerator&#8217;s input, output and coefficient buffers. The following figure shows the Memory Latency window in GTT highlighting the newly created memory records:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-28822\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2022\/12\/W_DualAcc_MemRecs.png\" alt=\"\" width=\"1144\" height=\"991\" \/><\/p>\n<p>In this configuration, following are the memory records accessed by the accelerators:<\/p>\n<table style=\"border-collapse: collapse; width: 98.84%;\" border=\"1\">\n<tbody>\n<tr>\n<td style=\"width: 5.13053%; text-align: center;\"><\/td>\n<td style=\"width: 25.145%; text-align: center;\"><strong>Hardware FIR Accelerator 1<\/strong><\/td>\n<td style=\"width: 29.8601%; text-align: center;\"><strong>Hardware FIR Accelerator 2<\/strong><\/td>\n<td style=\"width: 57.0458%; text-align: center;\"><strong>Description<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 5.13053%; text-align: center;\"><strong>1<\/strong><\/td>\n<td style=\"width: 25.145%;\">Input Memory<\/td>\n<td style=\"width: 29.8601%;\">(Acc 2) Input Memory<\/td>\n<td style=\"width: 57.0458%;\">High rate input buffers<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 5.13053%; text-align: center;\"><strong>2<\/strong><\/td>\n<td style=\"width: 25.145%;\">Lowrate Input Memory<\/td>\n<td style=\"width: 29.8601%;\">(Acc 2) Lowrate Input Memory<\/td>\n<td style=\"width: 57.0458%;\">Low rate input buffers<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 5.13053%; text-align: center;\"><strong>3<\/strong><\/td>\n<td style=\"width: 25.145%;\">Parameter Memory<\/td>\n<td style=\"width: 29.8601%;\">(Acc 2) Parameter Memory<\/td>\n<td style=\"width: 57.0458%;\">Filter coefficient buffers<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 5.13053%; text-align: center;\"><strong>4<\/strong><\/td>\n<td style=\"width: 25.145%;\">Downsampling Intermediate Memory<\/td>\n<td style=\"width: 29.8601%;\">(Acc 2) Downsampling Intermediate Memory<\/td>\n<td style=\"width: 57.0458%;\">Downsampling filter output buffers<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 5.13053%; text-align: center;\"><strong>5<\/strong><\/td>\n<td style=\"width: 25.145%;\">Upsampling 1 Input Memory<\/td>\n<td style=\"width: 29.8601%;\">(Acc 2) Upsampling 1 Input Memory<\/td>\n<td style=\"width: 57.0458%;\">Stage 1 upsampling filter input buffers<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 5.13053%; text-align: center;\"><strong>6<\/strong><\/td>\n<td style=\"width: 25.145%;\">Upsampling 2 Input Memory<\/td>\n<td style=\"width: 29.8601%;\">(Acc 2) Upsampling 2 Input Memory<\/td>\n<td style=\"width: 57.0458%;\">Stage 2 upsampling filter input buffers<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 5.13053%; text-align: center;\"><strong>7<\/strong><\/td>\n<td style=\"width: 25.145%;\">Intermediate Temp Memory<\/td>\n<td style=\"width: 29.8601%;\">(Acc 2) Intermediate Temp Memory<\/td>\n<td style=\"width: 57.0458%;\">Temporary memory for coefficient format conversion<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>As per the recommendation, notice in the above figure that the memory records accessed by accelerator 1 are all placed in Level 7 memory latency, and the memory records accessed by accelerator 2 are all placed in Level 8 memory latency. It is expected that the platform maps these memory latency levels to un-cached memory regions that are in separate DDR3 memory banks in order to fully realize the separation of buffers.<\/p>\n<p>At 512 sample block length, with 2k-tap high rate filters, following are the improvements observed in the total number of filters that can be processed by the FIRAMIMO AO in single vs dual accelerator modes:<\/p>\n<ul>\n<li>All accelerator buffers placed in Level 5 latency: 20% (32 filters to 40 filters)<\/li>\n<li>Accelerator 1 buffers in Level 7 and accelerator 2 buffers in Level 8, mapped to separate DD3 banks: ~90% (32 filters to 60 filters)<\/li>\n<\/ul>\n<p>It is important to note that the separation of the memory records for the hardware FIR accelerators, however, increases the core MIPS consumption by about 30-60% in both single and dual accelerator modes due to additional buffer movement and summation operations done by the core to reduce the memory access overheads.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>FIRA MIMO audio object is a group of FIR filter banks associated with each input and output. FIRA stands for \u201cfir accelerator\u201d and it indicates that the underlying implementation uses a hardware accelerator. MIMO stands for \u201cmulti input multi output\u201d indicating that each output is the summation of one or more FIR filtered inputs. FIRA [&hellip;]<\/p>\n","protected":false},"author":107,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"0","ocean_second_sidebar":"0","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"0","ocean_custom_header_template":"0","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"0","ocean_menu_typo_font_family":"0","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"0","footnotes":"","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"off","ocean_gallery_id":[]},"categories":[315],"tags":[307,300],"coauthors":[292],"_links":{"self":[{"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=\/wp\/v2\/posts\/19156"}],"collection":[{"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=\/wp\/v2\/users\/107"}],"replies":[{"embeddable":true,"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=19156"}],"version-history":[{"count":29,"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=\/wp\/v2\/posts\/19156\/revisions"}],"predecessor-version":[{"id":28850,"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=\/wp\/v2\/posts\/19156\/revisions\/28850"}],"wp:attachment":[{"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=19156"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=19156"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=19156"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=%2Fwp%2Fv2%2Fcoauthors&post=19156"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}