{"id":415,"date":"2024-07-18T12:37:18","date_gmt":"2024-07-18T03:37:18","guid":{"rendered":"https:\/\/rtlearner.com\/?p=415"},"modified":"2025-11-13T11:13:42","modified_gmt":"2025-11-13T02:13:42","slug":"fpga-block-memory-setup-guide","status":"publish","type":"post","link":"https:\/\/rtlearner.com\/en\/fpga-block-memory-setup-guide\/","title":{"rendered":"[FPGA] Block memory \ubaa8\ub4c8 \uc124\uc815 \ubc0f \uc0ac\uc6a9 \uac00\uc774\ub4dc"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">FPGA \ud569\uc131 \uc2dc\uc5d0\ub294 clock wiz(DCM)\uc640 \ub9c8\ucc2c\uac00\uc9c0\ub85c memory\ub3c4 vivado\uc5d0\uc11c block memory\ub85c \uc0dd\uc131\ud558\uc5ec bit\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/p>\n\n\n<style>.kb-table-of-content-nav.kb-table-of-content-id415_125f74-54 .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-id415_125f74-54 .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-id415_125f74-54 .kb-table-of-contents-title{font-weight:regular;font-style:normal;}.kb-table-of-content-nav.kb-table-of-content-id415_125f74-54 .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-id415_125f74-54 .kb-table-of-contents-title{font-size:var(--global-kb-font-size-md, 1.25rem);}.kb-table-of-content-nav.kb-table-of-content-id415_125f74-54 .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-column415_9aa7bf-19 > .kt-inside-inner-col{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}.kadence-column415_9aa7bf-19 > .kt-inside-inner-col,.kadence-column415_9aa7bf-19 > .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-column415_9aa7bf-19 > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column415_9aa7bf-19 > .kt-inside-inner-col{flex-direction:column;}.kadence-column415_9aa7bf-19 > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column415_9aa7bf-19 > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column415_9aa7bf-19{position:relative;}@media all and (max-width: 1024px){.kadence-column415_9aa7bf-19 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column415_9aa7bf-19 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column415_9aa7bf-19\"><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\/fpga-xdc-setting\/\">[FPGA] xdc \uc124\uc815 \ubc29\ubc95<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2705<a href=\"https:\/\/rtlearner.com\/fpga-ila-setup-guide\/\">[FPGA] ILA \ubaa8\ub4c8 \uc124\uc815 \ubc0f \uc0ac\uc6a9 \uac00\uc774\ub4dc<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2705<a href=\"https:\/\/rtlearner.com\/fpga-dcm-setup-guide\/\">[FPGA] DCM \ubaa8\ub4c8 \uc124\uc815 \ubc0f \uc0ac\uc6a9 \uac00\uc774\ub4dc<\/a><\/p>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Block memory \uc0dd\uc131 \ubc29\ubc95<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uba3c\uc800&nbsp;Vivado&nbsp;\ucc3d\uc758&nbsp;\uac00\uc7a5&nbsp;\uc67c\ucabd\uc758&nbsp;Project&nbsp;manager\uc5d0\uc11c&nbsp;IP&nbsp;Catalog\ub97c&nbsp;\uc120\ud0dd\ud569\ub2c8\ub2e4.<\/p>\n\n\n<style>.kb-image415_4d1b08-92.kb-image-is-ratio-size, .kb-image415_4d1b08-92 .kb-image-is-ratio-size{max-width:281px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image415_4d1b08-92.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image415_4d1b08-92 .kb-image-is-ratio-size{align-self:unset;}.kb-image415_4d1b08-92 figure{max-width:281px;}.kb-image415_4d1b08-92 .image-is-svg, .kb-image415_4d1b08-92 .image-is-svg img{width:100%;}.kb-image415_4d1b08-92 .kb-image-has-overlay:after{opacity:0.3;}.kb-image415_4d1b08-92 img.kb-img, .kb-image415_4d1b08-92 .kb-img img{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}@media all and (max-width: 767px){.kb-image415_4d1b08-92.kb-image-is-ratio-size, .kb-image415_4d1b08-92 .kb-image-is-ratio-size{max-width:250px;width:100%;}.kb-image415_4d1b08-92 figure{max-width:250px;}}<\/style>\n<div class=\"wp-block-kadence-image kb-image415_4d1b08-92 is-style-default\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/blog.kakaocdn.net\/dn\/de7FrK\/btsDmVl5BM6\/8Z2jeWJJ8kMGIn02xrbrnK\/img.png\" alt=\"vivado \uba54\ub274\uc5d0\uc11c IP Catalog \uc120\ud0dd\" class=\"kb-img\"\/><figcaption>vivado \uba54\ub274\uc5d0\uc11c IP Catalog \uc120\ud0dd<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">IP Catalog\ub97c \uc120\ud0dd\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \ucc3d\uc774 \ub098\uc624\ub294\ub370 memory\ub97c \uac80\uc0c9\ud558\uace0 Block Memory Generator\ub97c \uc120\ud0dd\ud569\ub2c8\ub2e4.<\/p>\n\n\n<style>.kb-image415_fcb931-2b.kb-image-is-ratio-size, .kb-image415_fcb931-2b .kb-image-is-ratio-size{max-width:649px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image415_fcb931-2b.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image415_fcb931-2b .kb-image-is-ratio-size{align-self:unset;}.kb-image415_fcb931-2b figure{max-width:649px;}.kb-image415_fcb931-2b .image-is-svg, .kb-image415_fcb931-2b .image-is-svg img{width:100%;}.kb-image415_fcb931-2b .kb-image-has-overlay:after{opacity:0.3;}.kb-image415_fcb931-2b img.kb-img, .kb-image415_fcb931-2b .kb-img img{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}@media all and (max-width: 767px){.kb-image415_fcb931-2b.kb-image-is-ratio-size, .kb-image415_fcb931-2b .kb-image-is-ratio-size{max-width:250px;width:100%;}.kb-image415_fcb931-2b figure{max-width:250px;}}<\/style>\n<div class=\"wp-block-kadence-image kb-image415_fcb931-2b\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/blog.kakaocdn.net\/dn\/cCXcnH\/btsDkPUk2Gs\/1gZqkYSyDt4GcyUUXKlKPK\/img.png\" alt=\"IP Catalog \uc120\ud0dd \uc2dc \ub098\uc624\ub294 \ucc3d\" class=\"kb-img\"\/><figcaption>IP Catalog \uc120\ud0dd \uc2dc \ub098\uc624\ub294 \ucc3d<\/figcaption><\/figure><\/div>\n\n\n<style>.kb-image415_7a7d4b-7e.kb-image-is-ratio-size, .kb-image415_7a7d4b-7e .kb-image-is-ratio-size{max-width:650px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image415_7a7d4b-7e.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image415_7a7d4b-7e .kb-image-is-ratio-size{align-self:unset;}.kb-image415_7a7d4b-7e figure{max-width:650px;}.kb-image415_7a7d4b-7e .image-is-svg, .kb-image415_7a7d4b-7e .image-is-svg img{width:100%;}.kb-image415_7a7d4b-7e .kb-image-has-overlay:after{opacity:0.3;}.kb-image415_7a7d4b-7e img.kb-img, .kb-image415_7a7d4b-7e .kb-img img{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}@media all and (max-width: 767px){.kb-image415_7a7d4b-7e.kb-image-is-ratio-size, .kb-image415_7a7d4b-7e .kb-image-is-ratio-size{max-width:250px;width:100%;}.kb-image415_7a7d4b-7e figure{max-width:250px;}}<\/style>\n<div class=\"wp-block-kadence-image kb-image415_7a7d4b-7e\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/blog.kakaocdn.net\/dn\/9HyGO\/btsGJsIf45w\/FaLfJ5r7h9Mp6D7vdYSkE0\/img.png\" alt=\"Block Memory Generator \uc120\ud0dd\" class=\"kb-img\"\/><figcaption>\ubaa8\ub4c8 \uc120\ud0dd<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub7ec\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \ucc3d\uc774 \ub098\uc635\ub2c8\ub2e4. \uc5ec\uae30\uc11c memory\uc758 \uc635\uc158\uc744 \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n<style>.kb-image415_c2eed3-61.kb-image-is-ratio-size, .kb-image415_c2eed3-61 .kb-image-is-ratio-size{max-width:650px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image415_c2eed3-61.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image415_c2eed3-61 .kb-image-is-ratio-size{align-self:unset;}.kb-image415_c2eed3-61 figure{max-width:650px;}.kb-image415_c2eed3-61 .image-is-svg, .kb-image415_c2eed3-61 .image-is-svg img{width:100%;}.kb-image415_c2eed3-61 .kb-image-has-overlay:after{opacity:0.3;}.kb-image415_c2eed3-61 img.kb-img, .kb-image415_c2eed3-61 .kb-img img{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}@media all and (max-width: 767px){.kb-image415_c2eed3-61.kb-image-is-ratio-size, .kb-image415_c2eed3-61 .kb-image-is-ratio-size{max-width:250px;width:100%;}.kb-image415_c2eed3-61 figure{max-width:250px;}}<\/style>\n<div class=\"wp-block-kadence-image kb-image415_c2eed3-61\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/blog.kakaocdn.net\/dn\/2RU4y\/btsGHtIgbxr\/kmhBupsIL0NFgMkQlI0guk\/img.png\" alt=\"Block Memory \uc635\uc158 \ucc3d\" class=\"kb-img\"\/><figcaption>\uc635\uc158 \ucc3d<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\uc790, \uc774\uc81c \uc5b4\ub5a4 \uac12\uc744 \uc5b4\ub5bb\uac8c \uc218\uc815\ud574\uc57c \ud560\uae4c\uc694?? \uadf8\uac78 \uc54c\uae30 \uc704\ud574\uc11c\ub294 \uc6b0\uc120 \uc77c\ubc18\uc801\uc778 ASIC architecture \uc124\uacc4\uc5d0\uc11c \uba54\ubaa8\ub9ac \uc778\uc2a4\ud134\uc2a4\uac00 \uc5b4\ub5bb\uac8c \ub418\uc5b4\uc788\ub294\uc9c0 \uc54c\uc544\uc57c \ud569\ub2c8\ub2e4.<\/p>\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\" data-code=\"input  wire        clk        ;\ninput  wire        data0_cs   ;\ninput  wire [10:0] data0_addr ;\ninput  wire [ 3:0] data0_we   ;\ninput  wire [31:0] data0_wdata;\noutput wire [31:0] data0_rdata;\n\nspsram_2048x32 u_mem0 (\n     .CLK     (clk         )\n    ,.CEN     (~data0_cs   )\n    ,.WEN     (~(|data0_we))\n    ,.BWEN    (~data0_we   )\n    ,.A       ( data0_addr )\n    ,.D       ( data0_wdata)\n    ,.Q       ( data0_rdata)\n);\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><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\">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: #81A1C1\">input<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\">        data0_cs   ;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">input<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> [<\/span><span style=\"color: #B48EAD\">10<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">] data0_addr ;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">input<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> [ <\/span><span style=\"color: #B48EAD\">3<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">] data0_we   ;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">input<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> [<\/span><span style=\"color: #B48EAD\">31<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">] data0_wdata;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">output<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> [<\/span><span style=\"color: #B48EAD\">31<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">] data0_rdata;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">spsram_2048x32 u_mem0 (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">     .CLK     (clk         )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ,.CEN     (<\/span><span style=\"color: #81A1C1\">~<\/span><span style=\"color: #D8DEE9FF\">data0_cs   )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ,.WEN     (<\/span><span style=\"color: #81A1C1\">~<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #81A1C1\">|<\/span><span style=\"color: #D8DEE9FF\">data0_we))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ,.BWEN    (<\/span><span style=\"color: #81A1C1\">~<\/span><span style=\"color: #D8DEE9FF\">data0_we   )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ,.A       ( data0_addr )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ,.D       ( data0_wdata)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ,.Q       ( data0_rdata)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">);<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>CLK: memory input clock<\/li>\n\n\n\n<li>CEN: chip enable signal (active low)<\/li>\n\n\n\n<li>WEN: write enable signal (active low)<\/li>\n\n\n\n<li>BWEN: byte write enable signal (active low)<\/li>\n\n\n\n<li>A: address signal<\/li>\n\n\n\n<li>D: memory write(input) data<\/li>\n\n\n\n<li>Q: memory read(output) data<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\uae30\uc11c \uc8fc\uc758 \uae4a\uac8c \ubd10\uc57c \ud558\ub294 \uac74 memory\uc758 type, we, width \/ depth\uc785\ub2c8\ub2e4. \ud558\ub098\ud558\ub098 \uc0b4\ud3b4\ubcfc\uae4c\uc694??<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Memory type<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ubd80\ubd84 \uba54\ubaa8\ub9ac \uc778\uc2a4\ud134\uc2a4 \uc774\ub984\uc5d0 \ub098\uc640 \uc788\uc2b5\ub2c8\ub2e4. \uc5ec\uae30\uc11c\ub294 spsram\uc774\ub77c\uace0 \ub418\uc5b4\uc788\ub294\ub370\uc694, \uc774\ub294 single port ram\uc774\ub77c\ub294 \ub73b\uc785\ub2c8\ub2e4. \uadf8\ub7fc \ub2e4\ub978 type\uc740 \uc5b4\ub5a4 \uac8c \uc788\uc744\uae4c\uc694?<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>single port ram (sp ram)<\/li>\n\n\n\n<li>simple dual port ram (tp ram)<\/li>\n\n\n\n<li>true dual port ram (dp ram)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uac01\uac01 memory \ub4e4\uc758 \ud2b9\uc9d5\uc744 block diagram\uc744 \ubcf4\uba74\uc11c \uc774\ud574\ud574 \ubd05\uc2dc\ub2e4.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Single port ram(sp ram)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">sp ram\uc740 \ub9d0 \uadf8\ub300\ub85c memory\uc758 port\uac00 \ud558\ub098(A)\ubfd0\uc778 memory\uc785\ub2c8\ub2e4.<\/p>\n\n\n<style>.kb-image415_7073dd-cc.kb-image-is-ratio-size, .kb-image415_7073dd-cc .kb-image-is-ratio-size{max-width:500px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image415_7073dd-cc.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image415_7073dd-cc .kb-image-is-ratio-size{align-self:unset;}.kb-image415_7073dd-cc figure{max-width:500px;}.kb-image415_7073dd-cc .image-is-svg, .kb-image415_7073dd-cc .image-is-svg img{width:100%;}.kb-image415_7073dd-cc .kb-image-has-overlay:after{opacity:0.3;}.kb-image415_7073dd-cc img.kb-img, .kb-image415_7073dd-cc .kb-img img{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}@media all and (max-width: 767px){.kb-image415_7073dd-cc.kb-image-is-ratio-size, .kb-image415_7073dd-cc .kb-image-is-ratio-size{max-width:200px;width:100%;}.kb-image415_7073dd-cc figure{max-width:200px;}}<\/style>\n<div class=\"wp-block-kadence-image kb-image415_7073dd-cc\"><figure class=\"aligncenter size-full\"><img data-dominant-color=\"ececed\" data-has-transparency=\"false\" style=\"--dominant-color: #ececed;\" loading=\"lazy\" decoding=\"async\" width=\"483\" height=\"257\" src=\"https:\/\/rtlearner.com\/wp-content\/uploads\/2024\/07\/\uadf8\ub9bc1-7.jpg\" alt=\"Single port ram block diagram\" class=\"kb-img wp-image-476 not-transparent\" srcset=\"https:\/\/rtlearner.com\/wp-content\/uploads\/2024\/07\/\uadf8\ub9bc1-7.jpg 483w, https:\/\/rtlearner.com\/wp-content\/uploads\/2024\/07\/\uadf8\ub9bc1-7-300x160.jpg 300w\" sizes=\"auto, (max-width: 483px) 100vw, 483px\" \/><figcaption>Single Port ram block diagram<\/figcaption><\/figure><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Simple dual port ram (tp ram)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">tp ram\uc740 memory\uc5d0 \ub450 \uac1c\uc758 memory port\uac00 \uc788\uc9c0\ub9cc(A, B) chip enable signal(ena)\uacfc write enable signal(wea)\uc744 \ub450 port\uac00 \uacf5\uc720\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub798\uc11c \ud55c port\ub294 \uc4f0\uae30\uc6a9\uc73c\ub85c, \ub2e4\ub978 \ud55c port\ub294 \uc77d\uae30 \uc6a9\uc73c\ub85c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n\n\n<style>.kb-image415_28b49c-7c.kb-image-is-ratio-size, .kb-image415_28b49c-7c .kb-image-is-ratio-size{max-width:500px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image415_28b49c-7c.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image415_28b49c-7c .kb-image-is-ratio-size{align-self:unset;}.kb-image415_28b49c-7c figure{max-width:500px;}.kb-image415_28b49c-7c .image-is-svg, .kb-image415_28b49c-7c .image-is-svg img{width:100%;}.kb-image415_28b49c-7c .kb-image-has-overlay:after{opacity:0.3;}.kb-image415_28b49c-7c img.kb-img, .kb-image415_28b49c-7c .kb-img img{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}@media all and (max-width: 767px){.kb-image415_28b49c-7c.kb-image-is-ratio-size, .kb-image415_28b49c-7c .kb-image-is-ratio-size{max-width:200px;width:100%;}.kb-image415_28b49c-7c figure{max-width:200px;}}<\/style>\n<div class=\"wp-block-kadence-image kb-image415_28b49c-7c\"><figure class=\"aligncenter size-full\"><img data-dominant-color=\"e9eaea\" data-has-transparency=\"false\" style=\"--dominant-color: #e9eaea;\" loading=\"lazy\" decoding=\"async\" width=\"476\" height=\"377\" src=\"https:\/\/rtlearner.com\/wp-content\/uploads\/2024\/07\/\uadf8\ub9bc2.jpg\" alt=\"Simple Dual Port RAM block diagram\" class=\"kb-img wp-image-479 not-transparent\" srcset=\"https:\/\/rtlearner.com\/wp-content\/uploads\/2024\/07\/\uadf8\ub9bc2.jpg 476w, https:\/\/rtlearner.com\/wp-content\/uploads\/2024\/07\/\uadf8\ub9bc2-300x238.jpg 300w\" sizes=\"auto, (max-width: 476px) 100vw, 476px\" \/><figcaption>Simple Dual Port RAM block diagram<\/figcaption><\/figure><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">True dual port ram (dp ram)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">dp ram\uc740 \ub450 \uac1c\uc758 memory port(A, B) \ubaa8\ub450 \uac01\uac01\uc758 ena signal(ena, enb)\uacfc wen signal(wea, web)\uc774 \uc788\uc5b4\uc11c \ubaa8\ub4e0 memory port\uac00 \uc77d\uae30\uc640 \uc4f0\uae30\uac00 \uac00\ub2a5\ud55c memory\uc785\ub2c8\ub2e4. \uadf8\ub798\uc11c tp ram\uacfc \ub2e4\ub974\uac8c dina, dinb, douta, doutb signal\uc774 \uc788\ub294 \uac83\uc744 \uc54c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n<style>.kb-image415_756c19-d0.kb-image-is-ratio-size, .kb-image415_756c19-d0 .kb-image-is-ratio-size{max-width:500px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image415_756c19-d0.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image415_756c19-d0 .kb-image-is-ratio-size{align-self:unset;}.kb-image415_756c19-d0 figure{max-width:500px;}.kb-image415_756c19-d0 .image-is-svg, .kb-image415_756c19-d0 .image-is-svg img{width:100%;}.kb-image415_756c19-d0 .kb-image-has-overlay:after{opacity:0.3;}.kb-image415_756c19-d0 img.kb-img, .kb-image415_756c19-d0 .kb-img img{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}@media all and (max-width: 767px){.kb-image415_756c19-d0.kb-image-is-ratio-size, .kb-image415_756c19-d0 .kb-image-is-ratio-size{max-width:200px;width:100%;}.kb-image415_756c19-d0 figure{max-width:200px;}}<\/style>\n<div class=\"wp-block-kadence-image kb-image415_756c19-d0\"><figure class=\"aligncenter size-full\"><img data-dominant-color=\"ededed\" data-has-transparency=\"false\" style=\"--dominant-color: #ededed;\" loading=\"lazy\" decoding=\"async\" width=\"458\" height=\"467\" src=\"https:\/\/rtlearner.com\/wp-content\/uploads\/2024\/07\/\uadf8\ub9bc3.jpg\" alt=\"\" class=\"kb-img wp-image-480 not-transparent\" srcset=\"https:\/\/rtlearner.com\/wp-content\/uploads\/2024\/07\/\uadf8\ub9bc3.jpg 458w, https:\/\/rtlearner.com\/wp-content\/uploads\/2024\/07\/\uadf8\ub9bc3-294x300.jpg 294w\" sizes=\"auto, (max-width: 458px) 100vw, 458px\" \/><figcaption>True Dual Port RAM block diagram<\/figcaption><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Write enable(we)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">we\ub97c \uc774\ud574\ud558\uae30 \uc704\ud574 memory\uc758 port\ub97c \ud655\uc778\ud574 \ubd05\uc2dc\ub2e4.<\/p>\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\" data-code=\"Memory u_mem0 (\n     .clka       ()\n    ,.ena        ()\n    ,.wea        ()\n    ,.addra      ()\n    ,.dina       ()\n    ,.douta      ()\n);\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><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: #D8DEE9FF\">Memory u_mem0 (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">     .clka       ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ,.ena        ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ,.wea        ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ,.addra      ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ,.dina       ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ,.douta      ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">);<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>addra: address signal<\/li>\n\n\n\n<li>dina: memory write(input) data<\/li>\n\n\n\n<li>douta: memory read(output) data<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2f9\uc5f0\ud788 clk\uac00 \uc788\uace0, en, we, addr, data_in, data_out\uc774 \uc788\uc2b5\ub2c8\ub2e4. en\uc740 enable\uc774\uace0 we\ub294 write enable\uc785\ub2c8\ub2e4. en\uc740 1-bit signal\uc774\uc9c0\ub9cc we\uc740 1-bit\uc77c \uc218\ub3c4 \uc788\uace0 \uc544\ub2d0 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uc65c\ub0d0\ud558\uba74 byte write\ub97c \ud560\uc9c0 data width\ub97c \ud55c \ubc88\uc5d0 write \ud560\uc9c0 \uc815\ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. \ub9cc\uc57d data_width\uac00 32-bit\ub77c\uace0 \ud55c\ub2e4\uba74 byte write enable\uc744 \ud560 \ub54c\ub294 we\ub294 4-bit signal\uc774 \ub420 \uac83\uc774\uace0 byte write enable\uc744 \ud558\uc9c0 \uc54a\uc73c\uba74 we\ub294 1-bit signal\uc774 \ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1-byte\ub294 8-bit \ub610\ub294 9-bit\ub85c \uc124\uc815\ud560 \uc218 \uc788\uace0(\uadfc\ub370 \ub300\ubd80\ubd84 \ub2f9\uc5f0\ud788 8-bit\ub85c \uc124\uc815\ud558\uaca0\uc8e0?) byte write enable \uc124\uc815\uc744 \ud558\uba74 \ub4a4\uc5d0 \ub098\uc62c data width\ub294 8(or 9) x n \ub9cc \uc785\ub825\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. (ex 8-bit\ub85c \uc124\uc815\ud558\uba74 data_width\ub294 8, 16, 24, 32\u2026 \ub9cc \uc124\uc815 \uac00\ub2a5)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\uae30\uae4c\uc9c0 \uc124\uc815\ud574 \ubcfc\uae4c\uc694?<\/p>\n\n\n<style>.kb-image415_359d7f-f4.kb-image-is-ratio-size, .kb-image415_359d7f-f4 .kb-image-is-ratio-size{max-width:650px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image415_359d7f-f4.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image415_359d7f-f4 .kb-image-is-ratio-size{align-self:unset;}.kb-image415_359d7f-f4 figure{max-width:650px;}.kb-image415_359d7f-f4 .image-is-svg, .kb-image415_359d7f-f4 .image-is-svg img{width:100%;}.kb-image415_359d7f-f4 .kb-image-has-overlay:after{opacity:0.3;}.kb-image415_359d7f-f4 img.kb-img, .kb-image415_359d7f-f4 .kb-img img{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}@media all and (max-width: 767px){.kb-image415_359d7f-f4.kb-image-is-ratio-size, .kb-image415_359d7f-f4 .kb-image-is-ratio-size{max-width:250px;width:100%;}.kb-image415_359d7f-f4 figure{max-width:250px;}}<\/style>\n<div class=\"wp-block-kadence-image kb-image415_359d7f-f4\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/blog.kakaocdn.net\/dn\/bllzuQ\/btsGLG7zxsz\/rYsLGSsIJlTjKY2IrPk0kK\/img.png\" alt=\"\uc635\uc158 \uc124\uc815\" class=\"kb-img\"\/><figcaption>\uc635\uc158 \uc124\uc815<\/figcaption><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Width \/ Depth<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">width\uc640 depth\ub3c4 \uc778\uc2a4\ud134\uc2a4 \uc774\ub984\uc5d0 \ub098\uc640 \uc788\uc2b5\ub2c8\ub2e4. spsram_2048x32\ub77c\uace0 \ub418\uc5b4\uc788\ub294\ub370\uc694, \uc5ec\uae30\uc11c 2048\uc774 depth, 32\uac00 width\uc785\ub2c8\ub2e4. depth\uc640 width\ub97c \uc124\uc815\ud558\uba74 memory\uc758 addra, dina, douta\uac00 \uc790\ub3d9\uc73c\ub85c \ubc14\ub01d\ub2c8\ub2e4.<\/p>\n\n\n<style>.kb-image415_643622-9d.kb-image-is-ratio-size, .kb-image415_643622-9d .kb-image-is-ratio-size{max-width:650px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image415_643622-9d.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image415_643622-9d .kb-image-is-ratio-size{align-self:unset;}.kb-image415_643622-9d figure{max-width:650px;}.kb-image415_643622-9d .image-is-svg, .kb-image415_643622-9d .image-is-svg img{width:100%;}.kb-image415_643622-9d .kb-image-has-overlay:after{opacity:0.3;}.kb-image415_643622-9d img.kb-img, .kb-image415_643622-9d .kb-img img{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}@media all and (max-width: 767px){.kb-image415_643622-9d.kb-image-is-ratio-size, .kb-image415_643622-9d .kb-image-is-ratio-size{max-width:250px;width:100%;}.kb-image415_643622-9d figure{max-width:250px;}}<\/style>\n<div class=\"wp-block-kadence-image kb-image415_643622-9d\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/blog.kakaocdn.net\/dn\/bAF3h7\/btsGMSGaz7q\/aUbbeefRfznX4YCY04Q6aK\/img.png\" alt=\"\uc635\uc158 \uc124\uc815 \ud6c4\" class=\"kb-img\"\/><figcaption>\uc635\uc158 \uc124\uc815 \ud6c4<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub7fc \ub2e4\uc74c\uacfc \uac19\uc774 \uc218\uc815\ud558\uba74 \ub418\uaca0\ub124\uc694.<\/p>\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\" data-code=\"input  wire        clk        ;\ninput  wire        data0_cs   ;\ninput  wire [10:0] data0_addr ;\ninput  wire [ 3:0] data0_we   ;\ninput  wire [31:0] data0_wdata;\noutput wire [31:0] data0_rdata;\n\n`ifdef FPGA\nspsram_2048x32_FPGA u_mem0_FPGA (\n     .clka       (clk        )\n    ,.ena        (data0_cs   )\n    ,.wea        (data0_we   )\n    ,.addra      (data0_addr )\n    ,.dina       (data0_wdata)\n    ,.douta      (data0_rdata)\n);\n`else\nspsram_2048x32 u_mem0 (\n     .CLK     (clk         )\n    ,.CEN     (~data0_cs   )\n    ,.WEN     (~(|data0_we))\n    ,.BWEN    (~data0_we   )\n    ,.A       ( data0_addr )\n    ,.D       ( data0_wdata)\n    ,.Q       ( data0_rdata)\n);\n`endif\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><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\">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: #81A1C1\">input<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\">        data0_cs   ;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">input<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> [<\/span><span style=\"color: #B48EAD\">10<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">] data0_addr ;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">input<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> [ <\/span><span style=\"color: #B48EAD\">3<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">] data0_we   ;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">input<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> [<\/span><span style=\"color: #B48EAD\">31<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">] data0_wdata;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">output<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> [<\/span><span style=\"color: #B48EAD\">31<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">] data0_rdata;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">`ifdef<\/span><span style=\"color: #D8DEE9FF\"> FPGA<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">spsram_2048x32_FPGA u_mem0_FPGA (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">     .clka       (clk        )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ,.ena        (data0_cs   )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ,.wea        (data0_we   )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ,.addra      (data0_addr )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ,.dina       (data0_wdata)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ,.douta      (data0_rdata)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">`else<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">spsram_2048x32 u_mem0 (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">     .CLK     (clk         )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ,.CEN     (<\/span><span style=\"color: #81A1C1\">~<\/span><span style=\"color: #D8DEE9FF\">data0_cs   )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ,.WEN     (<\/span><span style=\"color: #81A1C1\">~<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #81A1C1\">|<\/span><span style=\"color: #D8DEE9FF\">data0_we))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ,.BWEN    (<\/span><span style=\"color: #81A1C1\">~<\/span><span style=\"color: #D8DEE9FF\">data0_we   )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ,.A       ( data0_addr )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ,.D       ( data0_wdata)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ,.Q       ( data0_rdata)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">`endif<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">ena, wea\uc758 polarity\ub294 \uc815\ud655\ud558\uac8c \uae30\uc5b5\uc774 \uc548\ub098\ub124\uc694;;;; \uc8c4\uc1a1\ud569\ub2c8\ub2e4. \u3160\u3160<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">ROM code(boot loader) setting<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ucef4\ud4e8\ud130\ub098 SoC\ub294 ROM(Read-Only Memory)\uc774 \uc788\uc5b4\uc11c \ubd80\ud2b8\ud560 \uc2dc\uc5d0 ROM\uc5d0 \ub0b4\uc7a5\ub41c boot loader(\ubd80\ud2b8\ub85c\ub354)\ub97c \ubd88\ub7ec\uc640 \uc2e4\ud589\ud574\uc57c \ud569\ub2c8\ub2e4. \uadf8\ub7ec\uba74 \ubcf4\ub4dc test\ub97c \uc704\ud574 bit \ud30c\uc77c\uc744 \ud569\uc131\ud560 \ub54c\ub294 \uc774\ub7ec\ud55c boot loader\ub97c \uc5b4\ub5bb\uac8c \uba54\ubaa8\ub9ac block\uc5d0 \ub123\uc744 \uc218 \uc788\uc744\uae4c\uc694?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\uac74 Memory Generator \uc124\uc815\uc5d0\uc11c \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc2e4\ud589\ud560 boot loader\ub97c \uc544\ub798 \uadf8\ub9bc\uacfc \uac19\uc774 &#8216;Other options&#8217;\uc5d0\uc11c \ub123\uc5b4\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4. ROM\uc73c\ub85c \uc0ac\uc6a9\ud560 block\uc5d0\uc11c \ud574\ub2f9 \ubd80\ud2b8\ub85c\ub354 \ud30c\uc77c\uc744 load\ud558\uace0 bit\ub97c \ud569\uc131\ud558\uba74 \ubcf4\ub4dc\uc5d0 bit\ub97c \ub2e4\uc6b4\ubc1b\uc790\ub9c8\uc790 \uc815\ud574\uc9c4 \ud504\ub85c\uadf8\ub7a8\uc774 \uc2e4\ud589\ub429\ub2c8\ub2e4.<\/p>\n\n\n<style>.kb-image415_737c63-7f.kb-image-is-ratio-size, .kb-image415_737c63-7f .kb-image-is-ratio-size{max-width:600px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image415_737c63-7f.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image415_737c63-7f .kb-image-is-ratio-size{align-self:unset;}.kb-image415_737c63-7f figure{max-width:600px;}.kb-image415_737c63-7f .image-is-svg, .kb-image415_737c63-7f .image-is-svg img{width:100%;}.kb-image415_737c63-7f .kb-image-has-overlay:after{opacity:0.3;}.kb-image415_737c63-7f img.kb-img, .kb-image415_737c63-7f .kb-img img{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}@media all and (max-width: 767px){.kb-image415_737c63-7f.kb-image-is-ratio-size, .kb-image415_737c63-7f .kb-image-is-ratio-size{max-width:250px;width:100%;}.kb-image415_737c63-7f figure{max-width:250px;}}<\/style>\n<div class=\"wp-block-kadence-image kb-image415_737c63-7f\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/blog.kakaocdn.net\/dn\/NWEvT\/btsGNeWoD2d\/TPqUjfm6Hw0AftDgLnEGm1\/img.png\" alt=\"Boot loader \uc124\uc815\" class=\"kb-img\"\/><figcaption>Boot loader \uc124\uc815<\/figcaption><\/figure><\/div>\n\n\n<style>.kadence-column415_7209d7-8f > .kt-inside-inner-col{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}.kadence-column415_7209d7-8f > .kt-inside-inner-col,.kadence-column415_7209d7-8f > .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-column415_7209d7-8f > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column415_7209d7-8f > .kt-inside-inner-col{flex-direction:column;}.kadence-column415_7209d7-8f > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column415_7209d7-8f > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column415_7209d7-8f{position:relative;}@media all and (max-width: 1024px){.kadence-column415_7209d7-8f > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column415_7209d7-8f > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column415_7209d7-8f\"><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\/fpga-xdc-setting\/\">[FPGA] xdc \uc124\uc815 \ubc29\ubc95<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2705<a href=\"https:\/\/rtlearner.com\/fpga-ila-setup-guide\/\">[FPGA] ILA \ubaa8\ub4c8 \uc124\uc815 \ubc0f \uc0ac\uc6a9 \uac00\uc774\ub4dc<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2705<a href=\"https:\/\/rtlearner.com\/fpga-dcm-setup-guide\/\">[FPGA] DCM \ubaa8\ub4c8 \uc124\uc815 \ubc0f \uc0ac\uc6a9 \uac00\uc774\ub4dc<\/a><\/p>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc38\uc870: <a href=\"https:\/\/docs.amd.com\/v\/u\/en-US\/pg058-blk-mem-gen\" target=\"_blank\" rel=\"noopener\">Xilinx Memory Generator Data sheet<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>When FPGA synthesis is performed, memory is also converted from vivado to block memory, just like clock wiz (DCM).<\/p>","protected":false},"author":1,"featured_media":421,"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":[8],"tags":[10,35,36],"class_list":["post-415","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-fpga","tag-fpga","tag-xilinx","tag-vivado"],"_links":{"self":[{"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/posts\/415","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=415"}],"version-history":[{"count":11,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/posts\/415\/revisions"}],"predecessor-version":[{"id":672,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/posts\/415\/revisions\/672"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/media\/421"}],"wp:attachment":[{"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/media?parent=415"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/categories?post=415"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/tags?post=415"}],"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: 6a588749d36f73a90a601ae0. Config Timestamp: 2026-07-16 07:24:54 UTC, Cached Timestamp: 2026-09-03 11:26:58 UTC, Optimization Time: 6.66ms -->