{"id":1031,"date":"2025-11-28T10:42:16","date_gmt":"2025-11-28T01:42:16","guid":{"rendered":"https:\/\/rtlearner.com\/?p=1031"},"modified":"2025-12-29T15:15:47","modified_gmt":"2025-12-29T06:15:47","slug":"verilog-cdc-metastability","status":"publish","type":"post","link":"https:\/\/rtlearner.com\/en\/verilog-cdc-metastability\/","title":{"rendered":"[Verilog] \ube44\ub3d9\uae30 \uc2e0\ud638 \ucc98\ub9ac: CDC\uc640 Metastability"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\uc9c0\ub09c \ud3ec\uc2a4\ud305\uc5d0\uc11c UART Rx \ubaa8\ub4c8\uc744 \uc124\uacc4\ud558\uba74\uc11c, \uc678\ubd80\uc5d0\uc11c \ub4e4\uc5b4\uc624\ub294 \ube44\ub3d9\uae30 \uc2e0\ud638(Rx)\ub97c \ub2e4\ub8f0 \ub54c \uc8fc\uc758\uac00 \ud544\uc694\ud558\ub2e4\uace0 \uc5b8\uae09\ud588\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">RTL \uc124\uacc4\ub97c \ud558\ub2e4 \ubcf4\uba74 CDC(Clock Domain Crossing)\ub77c\ub294 \ub9d0\uc744 \uc815\ub9d0 \ub9ce\uc774 \ub4e3\uac8c \ub429\ub2c8\ub2e4. \uc774 \uae00\uc5d0\uc11c\ub294 \uc11c\ub85c \ub2e4\ub978 clock domain\uc744 \uc0ac\uc6a9\ud560 \ub54c \ubc1c\uc0dd\ud558\ub294 <strong>Metastability<\/strong> \ubb38\uc81c\uc640, \uc774\ub97c \uc644\ud654\ud558\ub294 \uac00\uc7a5 \uae30\ubcf8\uc801\uc778 \ubc29\ubc95\uc778 <strong>2-FF Synchronizer<\/strong>\uc5d0 \ub300\ud574 \uc815\ub9ac\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n<style>.kb-table-of-content-nav.kb-table-of-content-id1031_63a0d3-d5 .kb-table-of-content-wrap{padding-top:var(--global-kb-spacing-sm, 1.5rem);padding-right:var(--global-kb-spacing-sm, 1.5rem);padding-bottom:var(--global-kb-spacing-sm, 1.5rem);padding-left:var(--global-kb-spacing-sm, 1.5rem);box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}.kb-table-of-content-nav.kb-table-of-content-id1031_63a0d3-d5 .kb-table-of-contents-title-wrap{padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.kb-table-of-content-nav.kb-table-of-content-id1031_63a0d3-d5 .kb-table-of-contents-title{font-weight:regular;font-style:normal;}.kb-table-of-content-nav.kb-table-of-content-id1031_63a0d3-d5 .kb-table-of-content-wrap .kb-table-of-content-list{font-weight:regular;font-style:normal;margin-top:var(--global-kb-spacing-sm, 1.5rem);margin-right:0px;margin-bottom:0px;margin-left:0px;}@media all and (max-width: 767px){.kb-table-of-content-nav.kb-table-of-content-id1031_63a0d3-d5 .kb-table-of-contents-title{font-size:var(--global-kb-font-size-md, 1.25rem);}.kb-table-of-content-nav.kb-table-of-content-id1031_63a0d3-d5 .kb-table-of-content-wrap .kb-table-of-content-list{font-size:var(--global-kb-font-size-sm, 0.9rem);}}<\/style>\n\n<style>.kadence-column1031_6934cc-de > .kt-inside-inner-col{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}.kadence-column1031_6934cc-de > .kt-inside-inner-col,.kadence-column1031_6934cc-de > .kt-inside-inner-col:before{border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-bottom-left-radius:0px;}.kadence-column1031_6934cc-de > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column1031_6934cc-de > .kt-inside-inner-col{flex-direction:column;}.kadence-column1031_6934cc-de > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column1031_6934cc-de > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column1031_6934cc-de{position:relative;}@media all and (max-width: 1024px){.kadence-column1031_6934cc-de > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column1031_6934cc-de > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column1031_6934cc-de\"><div class=\"kt-inside-inner-col\">\n<p class=\"wp-block-paragraph\"><strong>\uad00\ub828 \uae00<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2705<a href=\"https:\/\/rtlearner.com\/verilog-simulation-settings\/\">[Verilog] Simulation \ud658\uacbd \uc138\ud305 (EDA playground, Icarus verilog)<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2705<a href=\"https:\/\/rtlearner.com\/verilog-uart-rtl-design-3\/\">[Verilog] UART RTL design 3<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2705<a href=\"http:\/\/rtlearner.com\/rtl-async-fifo-design\/\">[RTL] Asynchronous FIFO \uc124\uacc4\ud558\uae30<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2705<a href=\"https:\/\/rtlearner.com\/rtl-fan-in-fan-out\/\">[RTL] Fan-in\uacfc Fan-out: timing issue\uc758 \uc228\uaca8\uc9c4 \uc8fc\ubc94\uacfc \ud574\uacb0\ucc45<\/a><\/p>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">CDC (Clock Domain Crossing)\ub780?<\/h2>\n\n\n<style>.kb-image1031_4fdc13-2f.kb-image-is-ratio-size, .kb-image1031_4fdc13-2f .kb-image-is-ratio-size{max-width:600px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image1031_4fdc13-2f.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image1031_4fdc13-2f .kb-image-is-ratio-size{align-self:unset;}.kb-image1031_4fdc13-2f figure{max-width:600px;}.kb-image1031_4fdc13-2f .image-is-svg, .kb-image1031_4fdc13-2f .image-is-svg img{width:100%;}.kb-image1031_4fdc13-2f .kb-image-has-overlay:after{opacity:0.3;}@media all and (max-width: 767px){.kb-image1031_4fdc13-2f.kb-image-is-ratio-size, .kb-image1031_4fdc13-2f .kb-image-is-ratio-size{max-width:280px;width:100%;}.kb-image1031_4fdc13-2f figure{max-width:280px;}}<\/style>\n<div class=\"wp-block-kadence-image kb-image1031_4fdc13-2f\"><figure class=\"aligncenter\"><a href=\"https:\/\/www.intel.com\/content\/www\/us\/en\/programmable\/quartushelp\/22.4\/index.htm#da_rules\/cdc_50006.htm\" class=\"kb-advanced-image-link\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/blog.kakaocdn.net\/dna\/cd4JMn\/dJMcafyjWvZ\/AAAAAAAAAAAAAAAAAAAAAK4rPgoJOS4PCQqXhsKV2aWOBv0U4ts0_jH_wUJvUFoz\/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;expires=1767193199&amp;allow_ip=&amp;allow_referer=&amp;signature=abPjW2E07kWReDmi6mmeEAH4LK8%3D\" alt=\"CDC (Clock Domain Crossing)\" class=\"kb-img\"\/><\/a><figcaption>CDC (Clock Domain Crossing)<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">CDC\ub294 \ub9d0 \uadf8\ub300\ub85c signal\uc774 \ub2e4\ub978 clock domain\uc744 \uac74\ub108\uac04\ub294 \ub73b\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc6b0\ub9ac\uac00 \ub9cc\ub4dc\ub294 chip \ub0b4\ubd80\uc758 \ubaa8\ub4e0 logic\uc774 Single Clock\uc73c\ub85c\ub9cc \ub3d9\uc791\ud558\uba74 \uc815\ub9d0 \uc88b\uaca0\uc9c0\ub9cc, \uc2e4\uc81c \uc124\uacc4\ud558\ub294 chip\uc740 \uadf8\ub807\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\uc678\ubd80 \uc785\ub825:<\/strong> \ubc84\ud2bc \uc785\ub825, UART\/SPI\/I2C \uac19\uc740 peripheral \ud1b5\uc2e0 \uc2e0\ud638\ub294 \uc6b0\ub9ac \uce69\uc758 system clock\uacfc \uc804\ud600 \uc0c1\uad00\uc5c6\ub294 \ud0c0\uc774\ubc0d\uc5d0 \ub4e4\uc5b4\uc635\ub2c8\ub2e4. (Asynchronous)<\/li>\n\n\n\n<li><strong>\ub2e4\uc911 \ud074\ub7ed:<\/strong> top module\uc5d0 \uae30\ubcf8 clock\uc740 100MHz\ub85c \ub3cc\uace0, \ud2b9\uc815 sub module\uc740 50MHz\ub85c \ub3c4\ub294 \ub4f1 \uc11c\ub85c \ub2e4\ub978 \uc18d\ub3c4\uc758 clock\uc774 \uc0ac\uc6a9\ub418\uae30\ub3c4 \ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub807\uac8c <strong>Source(\uc1a1\uc2e0) \uce21\uc758 clock\uacfc Destination(\uc218\uc2e0) \uce21\uc758 clock\uc774 \uc11c\ub85c \ub2e4\ub97c \ub54c<\/strong> \uc2e0\ud638\uac00 \uc804\ub2ec\ub418\ub294 \uac83\uc744 CDC\ub77c\uace0 \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc65c \ubb38\uc81c\uac00 \ub420\uae4c? : Metastability<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;\uadf8\ub0e5 \uc2e0\ud638 \uc5f0\uacb0\ud558\uba74 \ub418\ub294 \uac70 \uc544\ub2cc\uac00?&#8221;\ub77c\uace0 \uc0dd\uac01\ud560 \uc218 \uc788\uc9c0\ub9cc, Flip-Flop\uc758 <strong>Setup Time<\/strong>\uacfc <strong>Hold Time<\/strong> \uc870\uac74\uc744 \ub5a0\uc62c\ub824 \ubd05\uc2dc\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Setup Time:<\/strong> Rising edge \uc804, \ub370\uc774\ud130\uac00 \uc77c\uc815 \uc2dc\uac04 \ub3d9\uc548 \uc548\uc815\uc801\uc73c\ub85c \uc720\uc9c0\ub418\uc5b4\uc57c \ud568.<\/li>\n\n\n\n<li><strong>Hold Time:<\/strong> Rising edge \ud6c4, \ub370\uc774\ud130\uac00 \uc77c\uc815 \uc2dc\uac04 \ub3d9\uc548 \ubcc0\ud558\uc9c0 \uc54a\uc544\uc57c \ud568.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\ub9cc\uc57d \uc678\ubd80 \uc2e0\ud638\uac00 \uc6b0\ub9ac \uc2dc\uc2a4\ud15c \ud074\ub7ed\uc774 \ub531! \ub728\ub294 \uadf8 \ucc30\ub098\uc758 \uc21c\uac04(Setup\/Hold window)\uc5d0 0\uc5d0\uc11c 1\ub85c \ubcc0\ud574\ubc84\ub9ac\uba74 \uc5b4\ub5bb\uac8c \ub420\uae4c\uc694?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Flip-Flop\uc740 0\uc778\uc9c0 1\uc778\uc9c0 \ud310\ub2e8\ud558\uc9c0 \ubabb\ud558\uace0, <strong>\uc911\uac04 \uc804\uc555 \ub808\ubca8(Metastable state)\uc5d0\uc11c \ubd80\ub4e4\ubd80\ub4e4 \ub5a0\ub294 \uc0c1\ud0dc<\/strong>\uac00 \ub429\ub2c8\ub2e4. \uc774\ub97c Metastability\ub77c\uace0 \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ubd88\uc548\uc815\ud55c \uac12\uc740 unknown \ud615\ud0dc\ub85c \ud68c\ub85c \ub0b4\ubd80\ub85c \uc804\ud30c\ub418\uc5b4 \uc804\uccb4 \uc2dc\uc2a4\ud15c\uc744 \uc624\uc791\ub3d9(System Failure) \uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\uac83\uc774 RTL \uc5d4\uc9c0\ub2c8\uc5b4\uac00 Asynchronous signal\uc744 \ub2e4\ub8f0 \ub54c \uc870\uc2ec\ud574\uc57c \ud558\ub294 \uc774\uc720\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud574\uacb0\ucc45: 2-FF Synchronizer (Double Flopping)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7f0 \uc0c1\ud669\uc744 \ucd5c\uc801\ud654\ud558\ub294 \uac00\uc7a5 \uac04\ub2e8\ud558\uace0 \uac15\ub825\ud55c \ubc29\ubc95\uc740 <strong>Flip-Flop\uc744 \ub450 \ubc88 \uac70\uce58\uac8c \ud558\ub294 \uac83<\/strong>\uc785\ub2c8\ub2e4. \uc774\ub97c <strong>2-FF Synchronizer<\/strong>\ub77c\uace0 \ubd80\ub985\ub2c8\ub2e4.<\/p>\n\n\n<style>.kb-image1031_66ab52-24.kb-image-is-ratio-size, .kb-image1031_66ab52-24 .kb-image-is-ratio-size{max-width:650px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image1031_66ab52-24.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image1031_66ab52-24 .kb-image-is-ratio-size{align-self:unset;}.kb-image1031_66ab52-24 figure{max-width:650px;}.kb-image1031_66ab52-24 .image-is-svg, .kb-image1031_66ab52-24 .image-is-svg img{width:100%;}.kb-image1031_66ab52-24 .kb-image-has-overlay:after{opacity:0.3;}@media all and (max-width: 767px){.kb-image1031_66ab52-24.kb-image-is-ratio-size, .kb-image1031_66ab52-24 .kb-image-is-ratio-size{max-width:300px;width:100%;}.kb-image1031_66ab52-24 figure{max-width:300px;}}<\/style>\n<div class=\"wp-block-kadence-image kb-image1031_66ab52-24\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/blog.kakaocdn.net\/dna\/qycwZ\/dJMcaihvxAl\/AAAAAAAAAAAAAAAAAAAAADigdo4q_i3TESJFflHzcE50iq2gb-tiRvL8E_IxLwbv\/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;expires=1767193199&amp;allow_ip=&amp;allow_referer=&amp;signature=dl20T%2FQX3VKXIHv8%2BeTLjTZwUYc%3D\" alt=\"\" class=\"kb-img\"\/><figcaption>2-FF timing diagram<\/figcaption><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\ub3d9\uc791 \uc6d0\ub9ac<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\uccab \ubc88\uc9f8 Flip-Flop(FF1)\uc774 Metastability \uc0c1\ud0dc\uc5d0 \ube60\uc84c\ub2e4\uace0 \uac00\uc815\ud574 \ubd05\uc2dc\ub2e4.<\/li>\n\n\n\n<li>\ud558\uc9c0\ub9cc \ub450 \ubc88\uc9f8 Flip-Flop(FF2)\uc740 \ub2e4\uc74c clock Rising edge\uae4c\uc9c0 \uae30\ub2e4\ub9bd\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uadf8 \ud55c clock \ub3d9\uc548, FF1\uc758 \ubd88\uc548\uc815\ud55c \uc804\uc555\uc774 \uc11c\uc11c\ud788 0\uc774\ub098 1 \uc911 \ud558\ub098\uc758 \uc548\uc815\ub41c \uc0c1\ud0dc\ub85c \uc790\ub9ac\ub97c \uc7a1\uac8c \ub429\ub2c8\ub2e4. (\uc774\ub97c <strong>Settling Time<\/strong>\uc774\ub77c\uace0 \ud569\ub2c8\ub2e4.)<\/li>\n\n\n\n<li>FF2\ub294 \uc548\uc815\ub41c \uac12\uc744 \uc0d8\ud50c\ub9c1\ud558\uc5ec \ub0b4\ubd80 \ub85c\uc9c1\uc73c\ub85c \uc804\ub2ec\ud569\ub2c8\ub2e4.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc38\uace0\ub85c, \uc5ec\uae30\uc11c \ub9d0\ud558\ub294 \ud574\uacb0\ucc45\uc740 Metastability \ubb38\uc81c\ub97c \uc644\uc804\ud788 \ud574\uacb0\ud558\ub294 \uac83\uc774 \uc544\ub2c8\ub77c <strong>\ubc1c\uc0dd \ud655\ub960\uc744 \ub0ae\ucd94\ub294 \uac83<\/strong>\uc744 \uc758\ubbf8\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Verilog code<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>module synchronizer (\n     input  wire clk\n    ,input  wire resetn\n    ,input  wire async_in \/\/ \uc678\ubd80 \ube44\ub3d9\uae30 \uc785\ub825\n    ,output wire sync_out \/\/ \ub3d9\uae30\ud654\ub41c \uc548\uc804\ud55c \ucd9c\ub825\n);\n\n    reg &#91;1:0&#93; shift_reg;\n\n    always @(posedge clk or negedge resetn) begin\n        if (!resetn) begin\n            shift_reg &lt;= 2'b00;\n        end\n        else begin\n            \/\/ &#91;0&#93;\ubc88 \ube44\ud2b8\ub85c \ubc1b\uace0, &#91;1&#93;\ubc88 \ube44\ud2b8\ub85c \ub118\uae40 (Shift)\n            shift_reg &lt;= {shift_reg&#91;0&#93;, async_in};\n        end\n    end\n\n    \/\/ \ub450 \ubc88\uc9f8 \ud50c\ub9bd\ud50c\ub86d\uc758 \ucd9c\ub825\uc744 \uc0ac\uc6a9\n    assign sync_out = shift_reg&#91;1&#93;;\n\nendmodule<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">module<\/span><span style=\"color: #D8DEE9FF\"> synchronizer (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">     <\/span><span style=\"color: #81A1C1\">input<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> clk<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ,<\/span><span style=\"color: #81A1C1\">input<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> resetn<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ,<\/span><span style=\"color: #81A1C1\">input<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> async_in <\/span><span style=\"color: #616E88\">\/\/ \uc678\ubd80 \ube44\ub3d9\uae30 \uc785\ub825<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ,<\/span><span style=\"color: #81A1C1\">output<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> sync_out <\/span><span style=\"color: #616E88\">\/\/ \ub3d9\uae30\ud654\ub41c \uc548\uc804\ud55c \ucd9c\ub825<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">reg<\/span><span style=\"color: #D8DEE9FF\"> &#91;<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">&#93; shift_reg;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">always<\/span><span style=\"color: #D8DEE9FF\"> @(<\/span><span style=\"color: #81A1C1\">posedge<\/span><span style=\"color: #D8DEE9FF\"> clk <\/span><span style=\"color: #81A1C1\">or<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">negedge<\/span><span style=\"color: #D8DEE9FF\"> resetn) <\/span><span style=\"color: #81A1C1\">begin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> (<\/span><span style=\"color: #81A1C1\">!<\/span><span style=\"color: #D8DEE9FF\">resetn) <\/span><span style=\"color: #81A1C1\">begin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            shift_reg <\/span><span style=\"color: #81A1C1\">&lt;=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">2&#39;b00<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">end<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">else<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">begin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">            <\/span><span style=\"color: #616E88\">\/\/ &#91;0&#93;\ubc88 \ube44\ud2b8\ub85c \ubc1b\uace0, &#91;1&#93;\ubc88 \ube44\ud2b8\ub85c \ub118\uae40 (Shift)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            shift_reg <\/span><span style=\"color: #81A1C1\">&lt;=<\/span><span style=\"color: #D8DEE9FF\"> {shift_reg&#91;<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">&#93;, async_in};<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">end<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">end<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/ \ub450 \ubc88\uc9f8 \ud50c\ub9bd\ud50c\ub86d\uc758 \ucd9c\ub825\uc744 \uc0ac\uc6a9<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">assign<\/span><span style=\"color: #D8DEE9FF\"> sync_out <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> shift_reg&#91;<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\">&#93;;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">endmodule<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Pulse Synchronizer (Fast to Slow)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uae30\ubcf8\uc801\uc778 2-FF Synchronizer\uc5d0\ub294 \uce58\uba85\uc801\uc778 \uc57d\uc810\uc774 \ud558\ub098 \uc788\uc2b5\ub2c8\ub2e4. \ubc14\ub85c <strong>\ube60\ub978 clock\uc5d0\uc11c \ub290\ub9b0 clock\uc73c\ub85c 1\uc8fc\uae30 \uc9dc\ub9ac \uc9e7\uc740 pulse\ub97c \ubcf4\ub0bc \ub54c<\/strong>\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Source:<\/strong> 100MHz (10ns \uc8fc\uae30)<\/li>\n\n\n\n<li><strong>Destination:<\/strong> 10MHz (100ns \uc8fc\uae30)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\ub9cc\uc57d Source\uc5d0\uc11c 10ns\uc9dc\ub9ac pulse\ub97c \ubcf4\ub0c8\ub294\ub370, Destination clock\uc774 \uadf8 10ns \uc0ac\uc774\ub97c \ube44\uaef4\uac00\uc11c \uc0d8\ud50c\ub9c1\ud55c\ub2e4\uba74? <strong>\uc218\uc2e0 \uce21\uc740 \uc2e0\ud638\uac00 \ub4e4\uc5b4\uc654\ub294\uc9c0\uc870\ucc28 \ubaa8\ub974\uac8c \ub429\ub2c8\ub2e4.<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud574\uacb0\ucc45: Toggle \ubc29\uc2dd \uc0ac\uc6a9<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub54c\ub294 pulse\ub97c <strong>\ud1a0\uae00(Toggle) \uc2e0\ud638<\/strong>\ub85c \ubcc0\ud658\ud574\uc11c \ubcf4\ub0c5\ub2c8\ub2e4. \uc2e0\ud638\uc758 \ub808\ubca8(Level)\uc744 \ubc14\uafd4\uc8fc\uba74 \ub290\ub9b0 \ud074\ub7ed\uc774 \uc5b8\uc820\uac00\ub294 \ubc14\ub010 \ub808\ubca8\uc744 \uac10\uc9c0\ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Verilog code<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>module pulse_synchronizer (\n    input wire clk_fast,   \/\/ \uc1a1\uc2e0 \uce21 (\ube60\ub978 \ud074\ub7ed)\n    input wire resetn,\n    input wire pulse_in,   \/\/ \uc1a1\uc2e0\ud560 1-cycle \ud384\uc2a4\n    input wire clk_slow,   \/\/ \uc218\uc2e0 \uce21 (\ub290\ub9b0 \ud074\ub7ed)\n    output wire pulse_out  \/\/ \uc218\uc2e0\ub41c 1-cycle \ud384\uc2a4\n);\n\n    \/\/ 1. &#91;Fast Domain&#93; Pulse\ub97c Toggle \uc2e0\ud638\ub85c \ubcc0\ud658\n    reg toggle_reg;\n    always @(posedge clk_fast or negedge resetn) begin\n        if (!resetn) toggle_reg &lt;= 1'b0;\n        else if (pulse_in) toggle_reg &lt;= ~toggle_reg; \/\/ \ud384\uc2a4\uac00 \uc62c \ub54c\ub9c8\ub2e4 \ub4a4\uc9d1\uae30\n    end\n\n    \/\/ 2. &#91;Slow Domain&#93; Toggle \uc2e0\ud638\ub97c 2-FF Synchronization\n    reg &#91;2:0&#93; sync_reg; \n    always @(posedge clk_slow or negedge resetn) begin\n        if (!resetn) begin\n            sync_reg &lt;= 3'b000;\n        end\n        else begin\n            \/\/ sync_reg&#91;2&#93;\ub294 Edge \uac10\uc9c0\uc6a9, &#91;1&#93;\uc740 \ub3d9\uae30\ud654 \uc644\ub8cc\ub41c \uac12\n            sync_reg &lt;= {sync_reg&#91;1:0&#93;, toggle_reg};\n        end\n    end\n\n    \/\/ 3. &#91;Slow Domain&#93; Edge Detection (Toggle\uc774 \ubcc0\ud588\uc74c\uc744 \uac10\uc9c0\ud558\uc5ec \ub2e4\uc2dc Pulse\ub85c \ubcf5\uc6d0)\n    \/\/ \ud604\uc7ac \uac12(sync_reg&#91;1&#93;)\uacfc \uacfc\uac70 \uac12(sync_reg&#91;2&#93;)\uc774 \ub2e4\ub974\uba74 \ud384\uc2a4 \uc0dd\uc131\n    assign pulse_out = sync_reg&#91;1&#93; ^ sync_reg&#91;2&#93;; \n\nendmodule<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">module<\/span><span style=\"color: #D8DEE9FF\"> pulse_synchronizer (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">input<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> clk_fast,   <\/span><span style=\"color: #616E88\">\/\/ \uc1a1\uc2e0 \uce21 (\ube60\ub978 \ud074\ub7ed)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">input<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> resetn,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">input<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> pulse_in,   <\/span><span style=\"color: #616E88\">\/\/ \uc1a1\uc2e0\ud560 1-cycle \ud384\uc2a4<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">input<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> clk_slow,   <\/span><span style=\"color: #616E88\">\/\/ \uc218\uc2e0 \uce21 (\ub290\ub9b0 \ud074\ub7ed)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">output<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> pulse_out  <\/span><span style=\"color: #616E88\">\/\/ \uc218\uc2e0\ub41c 1-cycle \ud384\uc2a4<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/ 1. &#91;Fast Domain&#93; Pulse\ub97c Toggle \uc2e0\ud638\ub85c \ubcc0\ud658<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">reg<\/span><span style=\"color: #D8DEE9FF\"> toggle_reg;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">always<\/span><span style=\"color: #D8DEE9FF\"> @(<\/span><span style=\"color: #81A1C1\">posedge<\/span><span style=\"color: #D8DEE9FF\"> clk_fast <\/span><span style=\"color: #81A1C1\">or<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">negedge<\/span><span style=\"color: #D8DEE9FF\"> resetn) <\/span><span style=\"color: #81A1C1\">begin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> (<\/span><span style=\"color: #81A1C1\">!<\/span><span style=\"color: #D8DEE9FF\">resetn) toggle_reg <\/span><span style=\"color: #81A1C1\">&lt;=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1&#39;b0<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">else<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> (pulse_in) toggle_reg <\/span><span style=\"color: #81A1C1\">&lt;=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">~<\/span><span style=\"color: #D8DEE9FF\">toggle_reg; <\/span><span style=\"color: #616E88\">\/\/ \ud384\uc2a4\uac00 \uc62c \ub54c\ub9c8\ub2e4 \ub4a4\uc9d1\uae30<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">end<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/ 2. &#91;Slow Domain&#93; Toggle \uc2e0\ud638\ub97c 2-FF Synchronization<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">reg<\/span><span style=\"color: #D8DEE9FF\"> &#91;<\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">&#93; sync_reg; <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">always<\/span><span style=\"color: #D8DEE9FF\"> @(<\/span><span style=\"color: #81A1C1\">posedge<\/span><span style=\"color: #D8DEE9FF\"> clk_slow <\/span><span style=\"color: #81A1C1\">or<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">negedge<\/span><span style=\"color: #D8DEE9FF\"> resetn) <\/span><span style=\"color: #81A1C1\">begin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> (<\/span><span style=\"color: #81A1C1\">!<\/span><span style=\"color: #D8DEE9FF\">resetn) <\/span><span style=\"color: #81A1C1\">begin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            sync_reg <\/span><span style=\"color: #81A1C1\">&lt;=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">3&#39;b000<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">end<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">else<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">begin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">            <\/span><span style=\"color: #616E88\">\/\/ sync_reg&#91;2&#93;\ub294 Edge \uac10\uc9c0\uc6a9, &#91;1&#93;\uc740 \ub3d9\uae30\ud654 \uc644\ub8cc\ub41c \uac12<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            sync_reg <\/span><span style=\"color: #81A1C1\">&lt;=<\/span><span style=\"color: #D8DEE9FF\"> {sync_reg&#91;<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">&#93;, toggle_reg};<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">end<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">end<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/ 3. &#91;Slow Domain&#93; Edge Detection (Toggle\uc774 \ubcc0\ud588\uc74c\uc744 \uac10\uc9c0\ud558\uc5ec \ub2e4\uc2dc Pulse\ub85c \ubcf5\uc6d0)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/ \ud604\uc7ac \uac12(sync_reg&#91;1&#93;)\uacfc \uacfc\uac70 \uac12(sync_reg&#91;2&#93;)\uc774 \ub2e4\ub974\uba74 \ud384\uc2a4 \uc0dd\uc131<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">assign<\/span><span style=\"color: #D8DEE9FF\"> pulse_out <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> sync_reg&#91;<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\">&#93; ^ sync_reg&#91;<\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #D8DEE9FF\">&#93;; <\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">endmodule<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\uc8fc\uc758\uc0ac\ud56d<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">2-FF Synchronizer\ub294 \ub9cc\ub2a5\uc774 \uc544\ub2d9\ub2c8\ub2e4. \uc774 \ubc29\uc2dd\uc740 <strong>Single-bit Control Signal<\/strong> (\uc608: Enable, Start \uc2e0\ud638 \ub4f1)\uc5d0\ub9cc \uc0ac\uc6a9\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Data Bus(\uc5ec\ub7ec \ube44\ud2b8)\uc5d0\ub294 \uc0ac\uc6a9\ud558\uba74 \uc548 \ub429\ub2c8\ub2e4.<\/strong> \uc608\ub97c \ub4e4\uc5b4 1-byte \ub370\uc774\ud130\ub97c 2-FF\ub85c \ub118\uae30\uba74, \uac01 \ube44\ud2b8\ub9c8\ub2e4 \ub51c\ub808\uc774 \ucc28\uc774(Skew)\uac00 \ubc1c\uc0dd\ud574\uc11c \uc5c9\ub6b1\ud55c \uac12(Glich)\uc774 \uc804\ub2ec\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Single Bit:<\/strong> 2-FF Synchronizer \uc0ac\uc6a9<\/li>\n\n\n\n<li><strong>Multi Bit (Data Bus):<\/strong> FIFO(Async FIFO)\ub098 Handshaking \ud504\ub85c\ud1a0\ucf5c \uc0ac\uc6a9<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\uc2ec\ud654: \ub2e8\uc21c\ud55c 2-FF\ub9cc\uc73c\ub85c\ub294 \ubd80\uc871\ud558\ub2e4<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc55e\uc11c \uc0b4\ud3b4\ubcf8 <strong>2-FF Synchronizer<\/strong>\ub294 \ub2e8\uc77c \ube44\ud2b8(Single-bit) \uc2e0\ud638\ub97c \ucc98\ub9ac\ud558\ub294 \ub370\uc5d0\ub294 \uac00\uc7a5 \ud6a8\uacfc\uc801\uc778 \ubc29\ubc95\uc785\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uc2e4\uc804 SoC \uc124\uacc4\uc5d0\uc11c\ub294 \ub370\uc774\ud130 \ubc84\uc2a4\uc640 \uac19\uc740 <strong>\uba40\ud2f0 \ube44\ud2b8(Multi-bit)<\/strong> \uc2e0\ud638\ub97c \ub2e4\ub904\uc57c \ud558\uace0, \uc2dc\ubbac\ub808\uc774\uc158\ub9cc\uc73c\ub85c\ub294 \ucc3e\uc744 \uc218 \uc5c6\ub294 \ucf54\ub108 \ucf00\uc774\uc2a4\ub4e4\uc774 \uc874\uc7ac\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Multi-bit \uc2e0\ud638\uc758 \ud568\uc815: Data Incoherency<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;\ub370\uc774\ud130 \ubc84\uc2a4\ub3c4 \uadf8\ub0e5 \uac01 \ube44\ud2b8\ub9c8\ub2e4 2-FF\ub97c \ubd99\uc774\uba74 \ub418\uc9c0 \uc54a\uc744\uae4c\uc694?&#8221; \uc774\uac83\uc740 \uac00\uc7a5 \uc704\ud5d8\ud55c \uc0dd\uac01\uc785\ub2c8\ub2e4. \uc11c\ub85c \ub2e4\ub978 clock domain \uac04\uc5d0\ub294 \uc2e0\ud638\uc758 \ub3c4\ub2ec \uc2dc\uac04 \ucc28\uc774(Skew)\uac00 \uc874\uc7ac\ud558\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\ubb38\uc81c \uc0c1\ud669: \ube44\ud2b8 \uac04 \uc2a4\ud050(Skew)<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4, <code>Source<\/code> \ub3c4\uba54\uc778\uc5d0\uc11c <code>b00<\/code> \u2192 <code>b11<\/code>\ub85c \uac12\uc744 \ubcc0\uacbd\ud588\ub2e4\uace0 \uac00\uc815\ud574 \ubd05\uc2dc\ub2e4. \ubc30\uc120 \uae38\uc774\uc758 \ucc28\uc774\ub098 \uacf5\uc815 \ubbf8\uc138 \ubcc0\ub3d9\uc73c\ub85c \uc778\ud574, <code>Destination<\/code> \ub3c4\uba54\uc778 \uc785\uc7a5\uc5d0\uc11c\ub294 \ub450 \ube44\ud2b8\uac00 \ub3d9\uc2dc\uc5d0 \ub3c4\ucc29\ud558\uc9c0 \uc54a\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Case 1:<\/strong> \ud558\uc704 \ube44\ud2b8\uac00 \uba3c\uc800 \ub3c4\ucc29 \u2192 <code>b01<\/code>\ub85c \uc624\uc778<\/li>\n\n\n\n<li><strong>Case 2:<\/strong> \uc0c1\uc704 \ube44\ud2b8\uac00 \uba3c\uc800 \ub3c4\ucc29 \u2192 <code>b10<\/code>\uc73c\ub85c \uc624\uc778<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uacb0\uad6d <code>00<\/code> \u2192 <code>11<\/code>\ub85c \ubcf4\ub0c8\ub294\ub370 \uc911\uac04\uc5d0 <code>01<\/code>\uc774\ub098 <code>10<\/code>\uc774\ub77c\ub294 \uc5c9\ub6b1\ud55c \uac12(Glitch)\uc774 \uc0d8\ud50c\ub9c1\ub418\uc5b4 \uc2dc\uc2a4\ud15c \uc624\uc791\ub3d9\uc744 \uc720\ubc1c\ud569\ub2c8\ub2e4. \uc774\ub97c Data Incoherency(\ub370\uc774\ud130 \ubd88\uc77c\uce58)\ub77c\uace0 \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\ud574\uacb0\ucc45: \uc0c1\ud669\ubcc4 \ub3d9\uae30\ud654 \uae30\ubc95<\/strong><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Gray Code (\uadf8\ub808\uc774 \ucf54\ub4dc):<\/strong>\n<ul class=\"wp-block-list\">\n<li><strong>\uc6a9\ub3c4:<\/strong> \uce74\uc6b4\ud130\ub098 \ud3ec\uc778\ud130(FIFO Pointer \ub4f1)\ub97c \ub118\uae38 \ub54c.<\/li>\n\n\n\n<li><strong>\uc6d0\ub9ac:<\/strong> \uc778\uc811\ud55c \uac12\ub07c\ub9ac <strong>\uc624\uc9c1 1\uac1c\uc758 \ube44\ud2b8\ub9cc \ubcc0\ud558\ub3c4\ub85d<\/strong> \uc778\ucf54\ub529\ud569\ub2c8\ub2e4. (\uc608: 00 -&gt; 01 -&gt; 11 -&gt; 10)<\/li>\n\n\n\n<li><strong>\uc7a5\uc810:<\/strong> 1\ube44\ud2b8\ub9cc \ubcc0\ud558\ubbc0\ub85c skew\ub85c \uc778\ud55c \uc911\uac04 \uac12 \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Handshake Protocol (\ud578\ub4dc\uc250\uc774\ud06c):<\/strong>\n<ul class=\"wp-block-list\">\n<li><strong>\uc6a9\ub3c4:<\/strong> \ub370\uc774\ud130\uac00 \uc790\uc8fc \ubcc0\ud558\uc9c0 \uc54a\uc744 \ub54c.<\/li>\n\n\n\n<li><strong>\uc6d0\ub9ac:<\/strong> <code>REQ<\/code>(\uc694\uccad) \uc2e0\ud638\ub97c \ubcf4\ub0b4\uace0, \uc218\uc2e0 \uce21\uc5d0\uc11c \ub370\uc774\ud130\ub97c \uc798 \ubc1b\uc558\ub2e4\ub294 <code>ACK<\/code>(\uc751\ub2f5) \uc2e0\ud638\ub97c \ubcf4\ub0bc \ub54c\uae4c\uc9c0 \ub370\uc774\ud130\ub97c \uc720\uc9c0\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\ub2e8\uc810:<\/strong> \uc18d\ub3c4\uac00 \ub290\ub824\uc9d1\ub2c8\ub2e4(Latency \uc99d\uac00).<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Async FIFO (\ube44\ub3d9\uae30 FIFO):<\/strong>\n<ul class=\"wp-block-list\">\n<li><strong>\uc6a9\ub3c4:<\/strong> \ub300\ub7c9\uc758 \ub370\uc774\ud130 \uc2a4\ud2b8\ub9bc\uc744 \uace0\uc18d\uc73c\ub85c \ub118\uae38 \ub54c.<\/li>\n\n\n\n<li><strong>\uc6d0\ub9ac:<\/strong> \ub0b4\ubd80\uc801\uc73c\ub85c Gray Code \ud3ec\uc778\ud130\uc640 Dual-port memory\ub97c \uc0ac\uc6a9\ud558\uc5ec \uac00\uc7a5 \uc548\uc804\ud558\uac8c \ub370\uc774\ud130\ub97c \uc804\ub2ec\ud569\ub2c8\ub2e4. \uac80\uc99d\ub41c IP\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n<style>.kadence-column1031_cd36f8-5d > .kt-inside-inner-col{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}.kadence-column1031_cd36f8-5d > .kt-inside-inner-col,.kadence-column1031_cd36f8-5d > .kt-inside-inner-col:before{border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-bottom-left-radius:0px;}.kadence-column1031_cd36f8-5d > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column1031_cd36f8-5d > .kt-inside-inner-col{flex-direction:column;}.kadence-column1031_cd36f8-5d > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column1031_cd36f8-5d > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column1031_cd36f8-5d{position:relative;}@media all and (max-width: 1024px){.kadence-column1031_cd36f8-5d > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column1031_cd36f8-5d > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column1031_cd36f8-5d\"><div class=\"kt-inside-inner-col\">\n<p class=\"wp-block-paragraph\"><strong>\uad00\ub828 \uae00<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2705<a href=\"https:\/\/rtlearner.com\/verilog-simulation-settings\/\">[Verilog] Simulation \ud658\uacbd \uc138\ud305 (EDA playground, Icarus verilog)<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2705<a href=\"https:\/\/rtlearner.com\/verilog-uart-rtl-design-3\/\">[Verilog] UART RTL design 3<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2705<a href=\"http:\/\/rtlearner.com\/rtl-async-fifo-design\/\">[RTL] Asynchronous FIFO \uc124\uacc4\ud558\uae30<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2705<a href=\"https:\/\/rtlearner.com\/rtl-fan-in-fan-out\/\">[RTL] Fan-in\uacfc Fan-out: timing issue\uc758 \uc228\uaca8\uc9c4 \uc8fc\ubc94\uacfc \ud574\uacb0\ucc45<\/a><\/p>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc38\uace0: <a href=\"https:\/\/nandland.com\/lesson-14-crossing-clock-domains\/\" target=\"_blank\" rel=\"noopener\">Nandland<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the last post, while designing the UART Rx module, I was looking at the asynchronous signal (Rx) coming from the outside\u2026<\/p>","protected":false},"author":1,"featured_media":1046,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[39],"tags":[40,102,106],"class_list":["post-1031","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-verilog","tag-verilog","tag-system-verilog","tag-asic"],"_links":{"self":[{"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/posts\/1031","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/comments?post=1031"}],"version-history":[{"count":17,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/posts\/1031\/revisions"}],"predecessor-version":[{"id":1239,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/posts\/1031\/revisions\/1239"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/media\/1046"}],"wp:attachment":[{"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/media?parent=1031"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/categories?post=1031"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/tags?post=1031"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}<!-- This website is optimized by Airlift. Learn more: https://airlift.net. Template:. Learn more: https://airlift.net. Template: 6a18bd42d36f73dde5c33e51. Config Timestamp: 2026-05-28 22:10:07 UTC, Cached Timestamp: 2026-06-02 19:12:26 UTC, Optimization Time: 9.66ms -->