{"id":2926,"date":"2011-09-02T12:59:12","date_gmt":"2011-09-02T12:59:12","guid":{"rendered":"https:\/\/blogs.mathworks.com\/pick\/2011\/09\/02\/ofdm-synchronization-in-simulink\/"},"modified":"2018-09-14T05:18:59","modified_gmt":"2018-09-14T09:18:59","slug":"ofdm-synchronization-in-simulink","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/pick\/2011\/09\/02\/ofdm-synchronization-in-simulink\/","title":{"rendered":"OFDM Synchronization in Simulink"},"content":{"rendered":"<div xmlns:mwsh=\"https:\/\/www.mathworks.com\/namespace\/mcode\/v1\/syntaxhighlight.dtd\" class=\"content\">\r\n   <p><a href=\"https:\/\/www.mathworks.com\/matlabcentral\/fileexchange\/authors\/29096\">Idin<\/a>'s pick this week is <a href=\"https:\/\/www.mathworks.com\/matlabcentral\/fileexchange\/18932-pilot-directed-continuous-synchronization-of-ofdm\">\"Pilot Directed Continuous Synchronization of OFDM\"<\/a> by <a href=\"https:\/\/www.mathworks.com\/matlabcentral\/fileexchange\/authors\/4156\">Dick Benson<\/a>.\r\n   <\/p>\r\n   <p>Orthogonal frequency-division multiplexing (<a href=\"http:\/\/en.wikipedia.org\/wiki\/Orthogonal_frequency-division_multiplexing\">OFDM<\/a>) is a bandwidth-efficient scheme to transmit data through wired or wireless communication channels.  OFDM made its first\r\n      commercial appearance in wired communications (in ADSL), but in recent years it has become quite prevalent in wireless communications\r\n      as well.  Third and forth generation (\"3G\" and \"4G\") mobile communication standards are OFDM-based, with the next generation\r\n      (e.g. LTE-Advanced) following in the same path.\r\n   <\/p>\r\n   <p>As with any communication system, one problem we need to solve is receiver synchronization.  This submission has a nice presentation\r\n      of:\r\n   <\/p>\r\n   <div>\r\n      <ul>\r\n         <li>How to model and simulate a generic OFDM system in Simulink<\/li>\r\n         <li>OFDM timing and carrier synchronization (one possible approach is shown)<\/li>\r\n      <\/ul>\r\n   <\/div>\r\n   <p>I like this example as it shows how to tackle two sides of the synchronization problem in Simulink:<\/p>\r\n   <div>\r\n      <ol>\r\n         <li>How to model the impairments (i.e., symbol timing error and carrier offset)<\/li>\r\n         <li>Possible mitigation algorithm<\/li>\r\n      <\/ol>\r\n   <\/div>\r\n   <p>The model highlights Simulink's ability to express and simulate a complex structure with multiple feedback loops.  Expressing\r\n      this structure in a programming language (e.g. C++ or MATLAB) would be a tedious and highly error-prone task.\r\n   <\/p>\r\n   <p><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"https:\/\/blogs.mathworks.com\/images\/pick\/idin\/potw_ofdm\/potw_ofdm_screenshot.png\"> <\/p>\r\n   <p>This model uses color-coded switches to help the user interactively explore different parts.  For instance, the light blue\r\n      switch at the bottom of the screen enables the timing recovery loop.  You can introduce symbol timing error into the model\r\n      by tweaking slider gains of the same color at the top of the screen, then enable\/disable the bottom switch to observe the\r\n      effects of the impairment and\/or the mitigation algorithm.\r\n   <\/p>\r\n   <p>As an added bonus, this model also shows a channel estimation\/equalization scheme that can be used to mitigate the effects\r\n      of a dispersive (fading) channel (look under the \"OFDM Rx\" block).\r\n   <\/p>\r\n   <p>This model can serve as a good starting point for anyone interested in learning about OFDM systems and synchronization, or\r\n      building\/implementing an OFDM system.\r\n   <\/p>\r\n   <p>For those wishing to use this model to guide their own OFDM development, you should keep in mind the following:<\/p>\r\n   <div>\r\n      <ol>\r\n         <li>This model assumes a continuous transmission (i.e. not \"bursty\").<\/li>\r\n         <li>All computations are done in floating-point; for a hardware-oriented implementation, you may need to convert portions of this\r\n      model to use fixed-point arithmetic.<\/li>\r\n         <li>This is one possible approach to OFDM synchronization, and should not be taken as the \"optimal\" solution.<\/li>\r\n      <\/ol>\r\n   <\/div>\r\n   <p><b>More information:<\/b><\/p>\r\n   <p>Take a look at the PDF file included with the submission for a detailed description of the model, and for references.<\/p>\r\n   <p>For an example of carrier\/timing recovery for a single-carrier system, see the demo model \"commtimrecresample\" that comes\r\n      with the <a href=\"https:\/\/www.mathworks.com\/products\/communications\/\">Communications Toolbox<\/a> (or Communications Blockset in R2010b and older versions).\r\n   <\/p>\r\n   <p>As always, we welcome your <a href=\"https:\/\/blogs.mathworks.com\/pick\/?p=2926#respond\">comments<\/a>!\r\n   <\/p><script language=\"JavaScript\">\r\n<!--\r\n\r\n    function grabCode_fcf6d0d9f6964f14af156f4b04e14f25() {\r\n        \/\/ Remember the title so we can use it in the new page\r\n        title = document.title;\r\n\r\n        \/\/ Break up these strings so that their presence\r\n        \/\/ in the Javascript doesn't mess up the search for\r\n        \/\/ the MATLAB code.\r\n        t1='fcf6d0d9f6964f14af156f4b04e14f25 ' + '##### ' + 'SOURCE BEGIN' + ' #####';\r\n        t2='##### ' + 'SOURCE END' + ' #####' + ' fcf6d0d9f6964f14af156f4b04e14f25';\r\n    \r\n        b=document.getElementsByTagName('body')[0];\r\n        i1=b.innerHTML.indexOf(t1)+t1.length;\r\n        i2=b.innerHTML.indexOf(t2);\r\n \r\n        code_string = b.innerHTML.substring(i1, i2);\r\n        code_string = code_string.replace(\/REPLACE_WITH_DASH_DASH\/g,'--');\r\n\r\n        \/\/ Use \/x3C\/g instead of the less-than character to avoid errors \r\n        \/\/ in the XML parser.\r\n        \/\/ Use '\\x26#60;' instead of '<' so that the XML parser\r\n        \/\/ doesn't go ahead and substitute the less-than character. \r\n        code_string = code_string.replace(\/\\x3C\/g, '\\x26#60;');\r\n\r\n        author = 'Idin Motedayen-Aval';\r\n        copyright = 'Copyright 2011 The MathWorks, Inc.';\r\n\r\n        w = window.open();\r\n        d = w.document;\r\n        d.write('<pre>\\n');\r\n        d.write(code_string);\r\n\r\n        \/\/ Add author and copyright lines at the bottom if specified.\r\n        if ((author.length > 0) || (copyright.length > 0)) {\r\n            d.writeln('');\r\n            d.writeln('%%');\r\n            if (author.length > 0) {\r\n                d.writeln('% _' + author + '_');\r\n            }\r\n            if (copyright.length > 0) {\r\n                d.writeln('% _' + copyright + '_');\r\n            }\r\n        }\r\n\r\n        d.write('<\/pre>\\n');\r\n      \r\n      d.title = title + ' (MATLAB code)';\r\n      d.close();\r\n      }   \r\n      \r\n-->\r\n<\/script><p style=\"text-align: right; font-size: xx-small; font-weight:lighter;   font-style: italic; color: gray\"><br><a href=\"javascript:grabCode_fcf6d0d9f6964f14af156f4b04e14f25()\"><span style=\"font-size: x-small;        font-style: italic;\">Get \r\n            the MATLAB code \r\n            <noscript>(requires JavaScript)<\/noscript><\/span><\/a><br><br>\r\n      Published with MATLAB\u00ae 7.13<br><\/p>\r\n<\/div>\r\n<!--\r\nfcf6d0d9f6964f14af156f4b04e14f25 ##### SOURCE BEGIN #####\r\n%%\r\n% <https:\/\/www.mathworks.com\/matlabcentral\/fileexchange\/authors\/29096\r\n% Idin>'s pick this week is\r\n% <https:\/\/www.mathworks.com\/matlabcentral\/fileexchange\/18932-pilot-directed-continuous-synchronization-of-ofdm\r\n% \"Pilot Directed Continuous Synchronization of OFDM\"> by\r\n% <https:\/\/www.mathworks.com\/matlabcentral\/fileexchange\/authors\/4156 Dick\r\n% Benson>.\r\n%\r\n% Orthogonal frequency-division multiplexing\r\n% (<http:\/\/en.wikipedia.org\/wiki\/Orthogonal_frequency-division_multiplexing\r\n% OFDM>) is a bandwidth-efficient scheme to transmit data through wired or\r\n% wireless communication channels.  OFDM made its first commercial\r\n% appearance in wired communications (in ADSL), but in recent years it has\r\n% become quite prevalent in wireless communications as well.  Third and\r\n% forth generation (\"3G\" and \"4G\") mobile communication standards are\r\n% OFDM-based, with the next generation (e.g. LTE-Advanced) following in the\r\n% same path.\r\n%\r\n% As with any communication system, one problem we need to solve is\r\n% receiver synchronization.  This submission has a nice presentation of:\r\n%\r\n% * How to model and simulate a generic OFDM system in Simulink\r\n% * OFDM timing and carrier synchronization (one possible approach is\r\n% shown)\r\n%\r\n% I like this example as it shows how to tackle two sides of the\r\n% synchronization problem in Simulink:\r\n%\r\n% # How to model the impairments (i.e., symbol timing error and carrier\r\n% offset)\r\n% # Possible mitigation algorithm\r\n%\r\n% The model highlights Simulink's ability to express and simulate a complex\r\n% structure with multiple feedback loops.  Expressing this structure in a\r\n% programming language (e.g. C++ or MATLAB) would be a tedious and highly\r\n% error-prone task.\r\n%\r\n% <<potw_ofdm_screenshot.png>>\r\n%\r\n% This model uses color-coded switches to help the user interactively\r\n% explore different parts.  For instance, the light blue switch at the\r\n% bottom of the screen enables the timing recovery loop.  You can introduce\r\n% symbol timing error into the model by tweaking slider gains of the same\r\n% color at the top of the screen, then enable\/disable the bottom switch to\r\n% observe the effects of the impairment and\/or the mitigation algorithm.\r\n%\r\n% As an added bonus, this model also shows a channel\r\n% estimation\/equalization scheme that can be used to mitigate the effects\r\n% of a dispersive (fading) channel (look under the \"OFDM Rx\" block).\r\n%\r\n% This model can serve as a good starting point for anyone interested in\r\n% learning about OFDM systems and synchronization, or building\/implementing\r\n% an OFDM system.\r\n%\r\n% For those wishing to use this model to guide their own OFDM development,\r\n% you should keep in mind the following:\r\n%\r\n% # This model assumes a continuous transmission (i.e. not \"bursty\").\r\n% # All computations are done in floating-point; for a hardware-oriented\r\n% implementation, you may need to convert portions of this model to use\r\n% fixed-point arithmetic.\r\n% # This is one possible approach to OFDM synchronization, and should not\r\n% be taken as the \"optimal\" solution.\r\n% \r\n% *More information:*\r\n%\r\n% Take a look at the PDF file included with the submission for a detailed\r\n% description of the model, and for references.\r\n%\r\n% For an example of carrier\/timing recovery for a single-carrier system,\r\n% see the demo model \"commtimrecresample\" that comes with the\r\n% <https:\/\/www.mathworks.com\/products\/communications\/ Communications \r\n% Toolbox> (or Communications Blockset in R2010b and older versions).\r\n%\r\n% As always, we welcome your\r\n% <https:\/\/blogs.mathworks.com\/pick\/?p=2926#respond comments>!\r\n##### SOURCE END ##### fcf6d0d9f6964f14af156f4b04e14f25\r\n-->","protected":false},"excerpt":{"rendered":"<p>\r\n   Idin's pick this week is \"Pilot Directed Continuous Synchronization of OFDM\" by Dick Benson.\r\n   \r\n   Orthogonal frequency-division multiplexing (OFDM) is a bandwidth-efficient scheme to... <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/pick\/2011\/09\/02\/ofdm-synchronization-in-simulink\/\">read more >><\/a><\/p>","protected":false},"author":36,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[16],"tags":[],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/pick\/wp-json\/wp\/v2\/posts\/2926"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/pick\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/pick\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/pick\/wp-json\/wp\/v2\/users\/36"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/pick\/wp-json\/wp\/v2\/comments?post=2926"}],"version-history":[{"count":2,"href":"https:\/\/blogs.mathworks.com\/pick\/wp-json\/wp\/v2\/posts\/2926\/revisions"}],"predecessor-version":[{"id":10103,"href":"https:\/\/blogs.mathworks.com\/pick\/wp-json\/wp\/v2\/posts\/2926\/revisions\/10103"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/pick\/wp-json\/wp\/v2\/media?parent=2926"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/pick\/wp-json\/wp\/v2\/categories?post=2926"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/pick\/wp-json\/wp\/v2\/tags?post=2926"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}