{"id":690,"date":"2024-09-18T15:05:36","date_gmt":"2024-09-18T06:05:36","guid":{"rendered":"https:\/\/rtlearner.com\/?p=690"},"modified":"2024-09-28T16:02:50","modified_gmt":"2024-09-28T07:02:50","slug":"verilog-timer-rtl-design","status":"publish","type":"post","link":"https:\/\/rtlearner.com\/en\/verilog-timer-rtl-design\/","title":{"rendered":"[Verilog] Timer RTL design"},"content":{"rendered":"\n<p>\uc774\ubc88\uc5d0\ub294 APB interface\uc640 counter\ub97c \uc774\uc6a9\ud574\uc11c \uac04\ub2e8\ud55c Timer\ub97c \uc124\uacc4\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uc774\uc804 \uae00\uc744 \uba3c\uc800 \ubcf4\uace0 \uc624\uc2dc\ub294 \uac83\uc744 \ucd94\ucc9c\ud569\ub2c8\ub2e4!!<\/p>\n\n\n<style>.kb-table-of-content-nav.kb-table-of-content-id690_e0d4d5-45 .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-id690_e0d4d5-45 .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-id690_e0d4d5-45 .kb-table-of-contents-title{font-weight:regular;font-style:normal;}.kb-table-of-content-nav.kb-table-of-content-id690_e0d4d5-45 .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-id690_e0d4d5-45 .kb-table-of-contents-title{font-size:var(--global-kb-font-size-md, 1.25rem);}.kb-table-of-content-nav.kb-table-of-content-id690_e0d4d5-45 .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-column690_87184d-98 > .kt-inside-inner-col{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}.kadence-column690_87184d-98 > .kt-inside-inner-col,.kadence-column690_87184d-98 > .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-column690_87184d-98 > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column690_87184d-98 > .kt-inside-inner-col{flex-direction:column;}.kadence-column690_87184d-98 > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column690_87184d-98 > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column690_87184d-98{position:relative;}@media all and (max-width: 1024px){.kadence-column690_87184d-98 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column690_87184d-98 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column690_87184d-98\"><div class=\"kt-inside-inner-col\">\n<p><strong>\uad00\ub828 \uae00<\/strong><\/p>\n\n\n\n<p>\u2705<a href=\"https:\/\/rtlearner.com\/verilog-simulation-settings\/\">Simulation \ud658\uacbd \uc138\ud305 (EDA playground, Icarus verilog)<\/a><\/p>\n\n\n\n<p>\u2705<a href=\"https:\/\/rtlearner.com\/verilog-apb-interface-intro-bfm\/\">\uc2e4\uc804 1 \u2013 APB interface intro, BFM<\/a><\/p>\n\n\n\n<p>\u2705<a href=\"https:\/\/rtlearner.com\/verilog-apb-interface-design\/\">\uc2e4\uc804 2 \u2013 APB interface design<\/a><\/p>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Timer specification<\/h2>\n\n\n\n<p>IP\ub97c \uc124\uacc4\ud560 \ub54c\ub294 \uac00\uc7a5 \uba3c\uc800 IP\uc758 spec\uc744 \uc815\ub9ac\ud569\ub2c8\ub2e4. \uc800\ub294 ppt\ub85c \uc815\ub9ac\ud55c \ub4a4 \ucd5c\uc885\uc801\uc73c\ub85c Word\ub85c Data sheet\ub97c \uc791\uc131\ud588\uc5b4\uc694.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Block diagram<\/h3>\n\n\n\n<p>\uac00\uc7a5 \uba3c\uc800 block diagram\uc744 \uadf8\ub824\ubd05\uc2dc\ub2e4.<\/p>\n\n\n<style>.kb-image690_0d6ad7-77.kb-image-is-ratio-size, .kb-image690_0d6ad7-77 .kb-image-is-ratio-size{max-width:650px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image690_0d6ad7-77.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image690_0d6ad7-77 .kb-image-is-ratio-size{align-self:unset;}.kb-image690_0d6ad7-77 figure{max-width:650px;}.kb-image690_0d6ad7-77 .image-is-svg, .kb-image690_0d6ad7-77 .image-is-svg img{width:100%;}.kb-image690_0d6ad7-77 .kb-image-has-overlay:after{opacity:0.3;}.kb-image690_0d6ad7-77 img.kb-img, .kb-image690_0d6ad7-77 .kb-img img{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}@media all and (max-width: 767px){.kb-image690_0d6ad7-77.kb-image-is-ratio-size, .kb-image690_0d6ad7-77 .kb-image-is-ratio-size{max-width:280px;width:100%;}.kb-image690_0d6ad7-77 figure{max-width:280px;}}<\/style>\n<div class=\"wp-block-kadence-image kb-image690_0d6ad7-77\"><figure class=\"aligncenter size-full\"><img data-dominant-color=\"b2c8d2\" data-has-transparency=\"false\" style=\"--dominant-color: #b2c8d2;\" loading=\"lazy\" decoding=\"async\" width=\"928\" height=\"515\" src=\"https:\/\/rtlearner.com\/wp-content\/uploads\/2024\/08\/\uadf8\ub9bc1-6.jpg\" alt=\"\uae00 \uc124\uba85 \uc774\ubbf8\uc9c0, Timer block diagram\" class=\"kb-img wp-image-691 not-transparent\" srcset=\"https:\/\/rtlearner.com\/wp-content\/uploads\/2024\/08\/\uadf8\ub9bc1-6.jpg 928w, https:\/\/rtlearner.com\/wp-content\/uploads\/2024\/08\/\uadf8\ub9bc1-6-300x166.jpg 300w, https:\/\/rtlearner.com\/wp-content\/uploads\/2024\/08\/\uadf8\ub9bc1-6-768x426.jpg 768w\" sizes=\"auto, (max-width: 928px) 100vw, 928px\" \/><figcaption>Block diagram<\/figcaption><\/figure><\/div>\n\n\n\n<p>\uc704 \uadf8\ub9bc\uc774 \uc774\ud574\ub418\uc2dc\ub098\uc694? intr\ub294 interrupt\ub85c IP\uc5d0\uc11c CPU\ub85c \ubcf4\ub0b4\ub294 \uc2e0\ud638\uc785\ub2c8\ub2e4. CPU\uc5d0\uc11c\ub294 \uacc4\uc18d \uc2e4\ud589 \uc911\uc778 \ud504\ub85c\uadf8\ub7a8\uc774 \uc788\ub294\ub370\uc694, \ud55c core \ub2f9 \ud558\ub098\uc758 \ud504\ub85c\uc138\uc2a4\ub9cc \ucc98\ub9ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub798\uc11c IP\uc5d0\uc11c interrupt\ub97c CPU\ub85c \ubcf4\ub0b4\uba74 CPU\ub294 \ud574\ub2f9 interrupt\ub97c \uba3c\uc800 \ucc98\ub9ac\ud558\uace0 \ub2e4\uc2dc \uc6d0\ub798 \ud504\ub85c\uc138\uc2a4\ub85c \ub3cc\uc544\uac11\ub2c8\ub2e4. \uc5ec\ub7ec IP\uc5d0\uc11c interrupt\uac00 \ubc1c\uc0dd\ud558\uba74 CPU\ub294 \uc6b0\uc120\uc21c\uc704\uac00 \ub192\uc740 \uc21c\uc11c\ub300\ub85c interrupt\ub97c \ucc98\ub9ac\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Register map<\/h3>\n\n\n\n<p>Register map\uc740 \ub2e4\uc74c\uacfc \uac19\uc774 \uc124\uc815\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>CTRL register (address: 0x0)<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>Signal&nbsp;name<\/th><th class=\"has-text-align-center\" data-align=\"center\">R\/W<\/th><th class=\"has-text-align-center\" data-align=\"center\">Default value<\/th><th class=\"has-text-align-center\" data-align=\"center\">Bit<\/th><\/tr><\/thead><tbody><tr><td>Reserved<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8211;<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8211;<\/td><td class=\"has-text-align-center\" data-align=\"center\">31:12<\/td><\/tr><tr><td>Count<\/td><td class=\"has-text-align-center\" data-align=\"center\">RW<\/td><td class=\"has-text-align-center\" data-align=\"center\">0x0<\/td><td class=\"has-text-align-center\" data-align=\"center\">11:4<\/td><\/tr><tr><td>Reserved<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8211;<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8211;<\/td><td class=\"has-text-align-center\" data-align=\"center\">3:1<\/td><\/tr><tr><td>Enable<\/td><td class=\"has-text-align-center\" data-align=\"center\">RW<\/td><td class=\"has-text-align-center\" data-align=\"center\">0x0<\/td><td class=\"has-text-align-center\" data-align=\"center\">0<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">CTRL register<\/figcaption><\/figure>\n\n\n\n<p>Count: Timer\uc758 cnt \uac12\uc785\ub2c8\ub2e4. \ub0b4\ubd80 cnt\uac00 \uc124\uc815\ub41c \uac12\uc774 \ub420 \ub54c\ub9c8\ub2e4 intr\uac00 \ubc1c\uc0dd\ud569\ub2c8\ub2e4. (\uc54c\ub78c \uae30\ub2a5)<\/p>\n\n\n\n<p>Enable: Timer enable signal<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Status register (address: 0x4)<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>Signal&nbsp;name<\/th><th class=\"has-text-align-center\" data-align=\"center\">R\/W<\/th><th class=\"has-text-align-center\" data-align=\"center\">Default value<\/th><th class=\"has-text-align-center\" data-align=\"center\">Bit<\/th><\/tr><\/thead><tbody><tr><td>Reserved<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8211;<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8211;<\/td><td class=\"has-text-align-center\" data-align=\"center\">31:1<\/td><\/tr><tr><td>Alarm<\/td><td class=\"has-text-align-center\" data-align=\"center\">W<sub>1<\/sub>C<\/td><td class=\"has-text-align-center\" data-align=\"center\">0x0<\/td><td class=\"has-text-align-center\" data-align=\"center\">0<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Status register<\/figcaption><\/figure>\n\n\n\n<p>CPU\uac00 intr\ub97c \uac10\uc9c0\ud558\uba74 status register\ub97c \ud655\uc778\ud558\uace0 alarm\uc744 \ucd08\uae30\ud654\ud558\ub3c4\ub85d \uc124\uacc4\ud560 \uac81\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Timer RTL design<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">APB interface \uc124\uacc4<\/h3>\n\n\n\n<p>\uba3c\uc800 interface\ubd80\ud130 \uc124\uacc4\ud574 \ubcfc\uae4c\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=\"module timer_apb (\n     \/\/APB Interface\n     input  wire        pclk\n    ,input  wire        presetn\n    ,input  wire        penable\n    ,input  wire        psel\n    ,input  wire [ 5:2] paddr\n    ,input  wire        pwrite\n    ,input  wire [31:0] pwdata\n    ,output wire [31:0] prdata\n \n     \/\/Register Interface\n    ,input  wire        alarm\n    ,output wire        alarm_clr\n    ,output wire        enable\n    ,output wire [ 7:0] count_value\n);\n\n    \/\/===================================================================\n    \/\/ Local Parameters\n    \/\/===================================================================\n    localparam INVALID_DATA = 32'hDEAD_DEAD;\n    \n    \/\/===================================================================\n    \/\/ Internal Signals\n    \/\/===================================================================\n    wire        we = psel &amp; ~penable &amp;   pwrite;\n    wire        re = psel &amp; ~penable &amp;  ~pwrite;\n    reg  [31:0] RD ;\n      \n    \/\/===================================================================\n    \/\/ Address Decode \n    \/\/===================================================================\n    wire        ctrl    = (paddr[ 5:2] == 4'h0);\n    wire        status  = (paddr[ 5:2] == 4'h1);\n     \n    \/\/===================================================================\n    \/\/ Write Enable\n    \/\/===================================================================\n    wire        we_ctrl = we &amp; ctrl;\n    wire        we_st   = we &amp; status;\n    \n    \/\/===================================================================\n    \/\/ Register Files \n    \/\/===================================================================\n    reg         r_enable;\n    always @(posedge pclk or negedge presetn) begin\n        if(!presetn)      r_enable &lt;= 1'b0;\n        else if (we_ctrl) r_enable &lt;= pwdata[0];\n    end\n \n    reg  [ 7:0] r_count;\n    always @(posedge pclk or negedge presetn) begin\n        if(!presetn)      r_count &lt;= 8'h0;\n        else if (we_ctrl) r_count &lt;= pwdata[11:4];\n    end\n \n    \/\/===================================================================\n    \/\/ Read Decode\n    \/\/===================================================================\n    always @(*) begin\n        if(re) begin\n            case (paddr[5:2])\n                4'h0    : RD = {20'h0, r_count, 3'b0, r_enable};\n                4'h1    : RD = {31'h0, alarm};\n                default : RD = INVALID_DATA;\n            endcase\n        end\n        else RD = INVALID_DATA;\n    end\n    \n    assign  prdata = RD;\n    \n    \/\/===================================================================\n    \/\/ Output Assign\n    \/\/===================================================================\n    assign alarm_clr   = we_st &amp; pwdata[0];\n    assign enable      = r_enable;\n    assign count_value = r_count ;\n\nendmodule\" 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\">module<\/span><span style=\"color: #D8DEE9FF\"> timer_apb (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">     <\/span><span style=\"color: #616E88\">\/\/APB Interface<\/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\">        pclk<\/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\">        presetn<\/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\">        penable<\/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\">        psel<\/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\"> [ <\/span><span style=\"color: #B48EAD\">5<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #D8DEE9FF\">] paddr<\/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\">        pwrite<\/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\"> [<\/span><span style=\"color: #B48EAD\">31<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">] pwdata<\/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\"> [<\/span><span style=\"color: #B48EAD\">31<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">] prdata<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">     <\/span><span style=\"color: #616E88\">\/\/Register Interface<\/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\">        alarm<\/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\">        alarm_clr<\/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\">        enable<\/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\"> [ <\/span><span style=\"color: #B48EAD\">7<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">] count_value<\/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\">\/\/===================================================================<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/ Local Parameters<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/===================================================================<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">localparam<\/span><span style=\"color: #D8DEE9FF\"> INVALID_DATA <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">32&#39;hDEAD_DEAD<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/===================================================================<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/ Internal Signals<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/===================================================================<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\">        we <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> psel <\/span><span style=\"color: #81A1C1\">&amp;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">~<\/span><span style=\"color: #D8DEE9FF\">penable <\/span><span style=\"color: #81A1C1\">&amp;<\/span><span style=\"color: #D8DEE9FF\">   pwrite;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\">        re <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> psel <\/span><span style=\"color: #81A1C1\">&amp;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">~<\/span><span style=\"color: #D8DEE9FF\">penable <\/span><span style=\"color: #81A1C1\">&amp;<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #81A1C1\">~<\/span><span style=\"color: #D8DEE9FF\">pwrite;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">reg<\/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\">] RD ;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      <\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/===================================================================<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/ Address Decode <\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/===================================================================<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\">        ctrl    <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> (paddr[ <\/span><span style=\"color: #B48EAD\">5<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #D8DEE9FF\">] <\/span><span style=\"color: #81A1C1\">==<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">4&#39;h0<\/span><span style=\"color: #D8DEE9FF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\">        status  <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> (paddr[ <\/span><span style=\"color: #B48EAD\">5<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #D8DEE9FF\">] <\/span><span style=\"color: #81A1C1\">==<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">4&#39;h1<\/span><span style=\"color: #D8DEE9FF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">     <\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/===================================================================<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/ Write Enable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/===================================================================<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\">        we_ctrl <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> we <\/span><span style=\"color: #81A1C1\">&amp;<\/span><span style=\"color: #D8DEE9FF\"> ctrl;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\">        we_st   <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> we <\/span><span style=\"color: #81A1C1\">&amp;<\/span><span style=\"color: #D8DEE9FF\"> status;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/===================================================================<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/ Register Files <\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/===================================================================<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">reg<\/span><span style=\"color: #D8DEE9FF\">         r_enable;<\/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\"> pclk <\/span><span style=\"color: #81A1C1\">or<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">negedge<\/span><span style=\"color: #D8DEE9FF\"> presetn) <\/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\">presetn)      r_enable <\/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\"> (we_ctrl) r_enable <\/span><span style=\"color: #81A1C1\">&lt;=<\/span><span style=\"color: #D8DEE9FF\"> pwdata[<\/span><span style=\"color: #B48EAD\">0<\/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>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">reg<\/span><span style=\"color: #D8DEE9FF\">  [ <\/span><span style=\"color: #B48EAD\">7<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">] r_count;<\/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\"> pclk <\/span><span style=\"color: #81A1C1\">or<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">negedge<\/span><span style=\"color: #D8DEE9FF\"> presetn) <\/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\">presetn)      r_count <\/span><span style=\"color: #81A1C1\">&lt;=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">8&#39;h0<\/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\"> (we_ctrl) r_count <\/span><span style=\"color: #81A1C1\">&lt;=<\/span><span style=\"color: #D8DEE9FF\"> pwdata[<\/span><span style=\"color: #B48EAD\">11<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">4<\/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>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/===================================================================<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/ Read Decode<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/===================================================================<\/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\">*<\/span><span style=\"color: #D8DEE9FF\">) <\/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\">(re) <\/span><span style=\"color: #81A1C1\">begin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">case<\/span><span style=\"color: #D8DEE9FF\"> (paddr[<\/span><span style=\"color: #B48EAD\">5<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #D8DEE9FF\">])<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #B48EAD\">4&#39;h0<\/span><span style=\"color: #D8DEE9FF\">    : RD <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> {<\/span><span style=\"color: #B48EAD\">20&#39;h0<\/span><span style=\"color: #D8DEE9FF\">, r_count, <\/span><span style=\"color: #B48EAD\">3&#39;b0<\/span><span style=\"color: #D8DEE9FF\">, r_enable};<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #B48EAD\">4&#39;h1<\/span><span style=\"color: #D8DEE9FF\">    : RD <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> {<\/span><span style=\"color: #B48EAD\">31&#39;h0<\/span><span style=\"color: #D8DEE9FF\">, alarm};<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #81A1C1\">default<\/span><span style=\"color: #D8DEE9FF\"> : RD <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> INVALID_DATA;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">endcase<\/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\"> RD <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> INVALID_DATA;<\/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>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">assign<\/span><span style=\"color: #D8DEE9FF\">  prdata <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> RD;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/===================================================================<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/ Output Assign<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/===================================================================<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">assign<\/span><span style=\"color: #D8DEE9FF\"> alarm_clr   <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> we_st <\/span><span style=\"color: #81A1C1\">&amp;<\/span><span style=\"color: #D8DEE9FF\"> pwdata[<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">assign<\/span><span style=\"color: #D8DEE9FF\"> enable      <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> r_enable;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">assign<\/span><span style=\"color: #D8DEE9FF\"> count_value <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> r_count ;<\/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<p>\uc5ec\uae30\uc11c paddr[31:0]\uac00 \uc544\ub2c8\ub77c paddr[5:2]\ub97c \uc0ac\uc6a9\ud588\ub294\ub370\uc694, Verilog\uac00 \ub2e8\uc21c \ucf54\ub529\uc774 \uc544\ub2c8\ub77c \uc2e4\uc81c \ud558\ub4dc\uc6e8\uc5b4\ub97c \uc124\uacc4\ud558\ub294 \uc5b8\uc5b4\uc5ec\uc11c wire\ub97c \uc904\uc774\uae30 \uc704\ud574 \uc9c4\uc9dc \uc0ac\uc6a9\ud558\ub294 line\ub9cc \uc0ac\uc6a9\ud588\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\ub2c8\uae4c<\/p>\n\n\n\n<p>paddr[31:0]: 0x0 &#8211; 0x4 &#8211; 0x8 &#8211; 0xc<\/p>\n\n\n\n<p>paddr[ 5:2]: 0x0 &#8211; 0x1 &#8211; 0x2 &#8211; 0x3<\/p>\n\n\n\n<p>\uc774\ub807\uac8c \ud45c\ud604\ud560 \uc218 \uc788\ub294 \uac81\ub2c8\ub2e4. \uc0ac\uc2e4, \uc774 IP\ub294 register address\uac00 \ub450 \uac1c\ubc16\uc5d0 \uc5c6\uc5b4\uc11c paddr width\ub97c \ub354 \uc904\uc5ec\ub3c4 \ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<p>alarm_clr\ub97c register\ub85c \uc124\uc815\ud558\uc9c0 \uc54a\uc740 \uc774\uc720\ub294 alarm\uc774 W<sub>1<\/sub>C\uc774\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. \uc774 \ubd80\ubd84\uc774 \uc774\ud574\ub418\uc168\uc73c\uba74 \uc88b\uaca0\ub124\uc694;;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Counter \uc124\uacc4<\/h3>\n\n\n\n<p>\ub2e4\uc74c\uc73c\ub85c \uc2e4\uc81c Timer \uae30\ub2a5\uc774 \uc791\ub3d9\ud558\ub294 counter\ub97c \uc124\uacc4\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=\"module timer_counter (\n     input  wire       pclk\n    ,input  wire       presetn\n\n    ,input  wire       enable\n    ,input  wire [7:0] count_value\n\n    ,input  wire       alarm_clr\n    ,output wire       alarm\n);\n\n    reg  [ 7:0] cnt;\n    reg         r_alarm;\n    wire        cnt_max;\n\n    always @(posedge pclk or negedge presetn) begin\n        if (!presetn)               cnt &lt;= 8'h0;\n        else if (alarm_clr)         cnt &lt;= 8'h0;\n        else if (enable &amp; !r_alarm) cnt &lt;= (cnt + 1'b1);\n        else                        cnt &lt;= cnt;\n    end\n\t\n    always @(posedge pclk or negedge presetn) begin\n        if (!presetn)       r_alarm &lt;= 1'h0;\n        else if (alarm_clr) r_alarm &lt;= 1'h0;\n        else if (cnt_max)   r_alarm &lt;= 1'h1;\n        else                r_alarm &lt;= r_alarm;\n    end\n\n    assign cnt_max = enable &amp; (cnt == count_value);\n    assign alarm   = r_alarm;\n\nendmodule\" 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\">module<\/span><span style=\"color: #D8DEE9FF\"> timer_counter (<\/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\">       pclk<\/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\">       presetn<\/span><\/span>\n<span class=\"line\"><\/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\">       enable<\/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\"> [<\/span><span style=\"color: #B48EAD\">7<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">] count_value<\/span><\/span>\n<span class=\"line\"><\/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\">       alarm_clr<\/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\">       alarm<\/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\">  [ <\/span><span style=\"color: #B48EAD\">7<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">] cnt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">reg<\/span><span style=\"color: #D8DEE9FF\">         r_alarm;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\">        cnt_max;<\/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\"> pclk <\/span><span style=\"color: #81A1C1\">or<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">negedge<\/span><span style=\"color: #D8DEE9FF\"> presetn) <\/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\">presetn)               cnt <\/span><span style=\"color: #81A1C1\">&lt;=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">8&#39;h0<\/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\"> (alarm_clr)         cnt <\/span><span style=\"color: #81A1C1\">&lt;=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">8&#39;h0<\/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\"> (enable <\/span><span style=\"color: #81A1C1\">&amp;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">!<\/span><span style=\"color: #D8DEE9FF\">r_alarm) cnt <\/span><span style=\"color: #81A1C1\">&lt;=<\/span><span style=\"color: #D8DEE9FF\"> (cnt <\/span><span style=\"color: #81A1C1\">+<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1&#39;b1<\/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\">                        cnt <\/span><span style=\"color: #81A1C1\">&lt;=<\/span><span style=\"color: #D8DEE9FF\"> cnt;<\/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\">\t<\/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\"> pclk <\/span><span style=\"color: #81A1C1\">or<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">negedge<\/span><span style=\"color: #D8DEE9FF\"> presetn) <\/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\">presetn)       r_alarm <\/span><span style=\"color: #81A1C1\">&lt;=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1&#39;h0<\/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\"> (alarm_clr) r_alarm <\/span><span style=\"color: #81A1C1\">&lt;=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1&#39;h0<\/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\"> (cnt_max)   r_alarm <\/span><span style=\"color: #81A1C1\">&lt;=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1&#39;h1<\/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\">                r_alarm <\/span><span style=\"color: #81A1C1\">&lt;=<\/span><span style=\"color: #D8DEE9FF\"> r_alarm;<\/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: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">assign<\/span><span style=\"color: #D8DEE9FF\"> cnt_max <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> enable <\/span><span style=\"color: #81A1C1\">&amp;<\/span><span style=\"color: #D8DEE9FF\"> (cnt <\/span><span style=\"color: #81A1C1\">==<\/span><span style=\"color: #D8DEE9FF\"> count_value);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">assign<\/span><span style=\"color: #D8DEE9FF\"> alarm   <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> r_alarm;<\/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<p>\uc774\ub807\uac8c \uc124\uacc4\ud558\uba74 Timer\uac00 enable \ub420 \ub54c \uc785\ub825\ub41c value\ub9cc\ud07c cnt\uac00 \uc62c\ub77c\uac00\uba74 alarm\uc774 \ucf1c\uc9c0\uace0 alarm_clr\ub97c \ud1b5\ud574 counter module\uc774 \ucd08\uae30\ud654\ub418\ub3c4\ub85d \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Block integration<\/h3>\n\n\n\n<p>\uadf8\ub7fc top block\uc744 \ub2e4\uc74c\uacfc \uac19\uc774 \uc791\uc131\ud569\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=\"module timer (\n     \/\/APB Interface\n     input  wire        pclk\n    ,input  wire        presetn\n    ,input  wire        penable\n    ,input  wire        psel\n    ,input  wire [ 5:2] paddr\n    ,input  wire        pwrite\n    ,input  wire [31:0] pwdata\n    ,output wire [31:0] prdata\n\n    \/\/Interrupt\n    ,output wire        intr\n);\n\n    wire        alarm;\n    wire        alarm_clr;\n    wire        enable;\n    wire [ 7:0] count_value;\n\n    \/\/Instance\n    timer_apb u_apb (\n         .pclk        (pclk       )\n        ,.presetn     (presetn    )\n        ,.penable     (penable    )\n        ,.psel        (psel       )\n        ,.paddr       (paddr      )\n        ,.pwrite      (pwrite     )\n        ,.pwdata      (pwdata     )\n\n        ,.alarm       (alarm      )\n        ,.alarm_clr   (alarm_clr  )\n        ,.enable      (enable     )\n        ,.count_value (count_value)\n    );\n\n    timer_counter u_counter (\n         .pclk        (pclk       )\n        ,.presetn     (presetn    )\n\t\t\n        ,.enable      (enable     )\n        ,.count_value (count_value)\n\t\t\n        ,.alarm_clr   (alarm_clr  )\n        ,.alarm       (alarm      )\n    );\n\t\n    assign intr = alarm;\n\nendmodule\" 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\">module<\/span><span style=\"color: #D8DEE9FF\"> timer (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">     <\/span><span style=\"color: #616E88\">\/\/APB Interface<\/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\">        pclk<\/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\">        presetn<\/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\">        penable<\/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\">        psel<\/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\"> [ <\/span><span style=\"color: #B48EAD\">5<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #D8DEE9FF\">] paddr<\/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\">        pwrite<\/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\"> [<\/span><span style=\"color: #B48EAD\">31<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">] pwdata<\/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\"> [<\/span><span style=\"color: #B48EAD\">31<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">] prdata<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/Interrupt<\/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\">        intr<\/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\">wire<\/span><span style=\"color: #D8DEE9FF\">        alarm;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\">        alarm_clr;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\">        enable;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> [ <\/span><span style=\"color: #B48EAD\">7<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">] count_value;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/Instance<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">timer_apb<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">u_apb<\/span><span style=\"color: #D8DEE9FF\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         .pclk        (pclk       )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.presetn     (presetn    )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.penable     (penable    )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.psel        (psel       )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.paddr       (paddr      )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.pwrite      (pwrite     )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.pwdata      (pwdata     )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.alarm       (alarm      )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.alarm_clr   (alarm_clr  )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.enable      (enable     )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.count_value (count_value)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    )<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">timer_counter<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">u_counter<\/span><span style=\"color: #D8DEE9FF\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         .pclk        (pclk       )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.presetn     (presetn    )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t\t<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.enable      (enable     )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.count_value (count_value)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t\t<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.alarm_clr   (alarm_clr  )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.alarm       (alarm      )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    )<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">assign<\/span><span style=\"color: #D8DEE9FF\"> intr <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> alarm;<\/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\">Timer \uac80\uc99d<\/h2>\n\n\n\n<p>\ub9c8\uc9c0\ub9c9\uc73c\ub85c APB BFM\uc744 \uc0ac\uc6a9\ud574\uc11c IP\uac00 \uc81c\ub300\ub85c \uc791\ub3d9\ud558\ub294\uc9c0 \uac80\uc99d\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=\"`timescale 1ns\/10ps\n\nmodule top();\n\n    parameter period_pclk = 10;\n\n    reg         pclk;\n    reg         presetn;\n\n    wire        psel;\n    wire        penable;\n    wire [31:0] paddr;\n    wire        pwrite;\n    wire [31:0] pwdata;\n    wire        pready;\n    wire [31:0] prdata;\n    wire        pslverr;\n\n    wire        intr;\n\n    \/\/clk\n    always #(period_pclk*0.5) pclk = ~pclk;\n\n    assign pready  = 1'b1;\n    assign pslverr = 1'b0;\n\n    \/\/instance\n    apb_bfm u_apb (\n         .pclk    (pclk    )\n        ,.presetn (presetn ) \n        ,.psel    (psel    ) \n        ,.penable (penable ) \n        ,.paddr   (paddr   ) \n        ,.pwrite  (pwrite  ) \n        ,.pwdata  (pwdata  ) \n        ,.pready  (pready  ) \n        ,.prdata  (prdata  ) \n        ,.pslverr (pslverr ) \n    );\n\n    timer u_timer (\n         .pclk    (pclk      )\n        ,.presetn (presetn   ) \n        ,.psel    (psel      ) \n        ,.penable (penable   ) \n        ,.paddr   (paddr[5:2]) \n        ,.pwrite  (pwrite    ) \n        ,.pwdata  (pwdata    ) \n        ,.prdata  (prdata    ) \n\n        ,.intr    (intr      )\n    );\n\n    initial begin\n        pclk    = 1'b0;\n        presetn = 1'b0;\n\n        #(period_pclk);\n        presetn = 1'b1;\n\n        \/\/value = 0x10\n        #(10*period_pclk);\n        u_apb.apb_write(32'h0,32'h100);\n\n        \/\/Timer enable\n        #(10*period_pclk);\n        u_apb.apb_write(32'h0,32'h101);\n\n        wait(intr);\n\t\t\n        \/\/Timer disable\n        #(10*period_pclk);\n        u_apb.apb_write(32'h0,32'h100);\n\t\t\n        \/\/Intr clear\n        #(10*period_pclk);\n        u_apb.apb_write(32'h4,32'h1);\n\n        \/\/value = 0x20\n        #(10*period_pclk);\n        u_apb.apb_write(32'h0,32'h200);\n\n        \/\/Timer enable\n        #(10*period_pclk);\n        u_apb.apb_write(32'h0,32'h201);\n\n        wait(intr);\n\n        \/\/Timer disable\n        #(10*period_pclk);\n        u_apb.apb_write(32'h0,32'h200);\n\t\t\n        \/\/Intr clear\t\t\n        #(10*period_pclk);\n        u_apb.apb_write(32'h4,32'h1);\n\n        #100 $finish;\n    end\n\n    \/\/dump file\n    initial begin\n        $dumpfile (&quot;test.vcd&quot;);\n        $dumpvars();\n    end\n\nendmodule\" 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\">`timescale<\/span><span style=\"color: #D8DEE9FF\"> 1ns<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">10ps<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">module<\/span><span style=\"color: #D8DEE9FF\"> top();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">parameter<\/span><span style=\"color: #D8DEE9FF\"> period_pclk <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">10<\/span><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\">         pclk;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">reg<\/span><span style=\"color: #D8DEE9FF\">         presetn;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\">        psel;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\">        penable;<\/span><\/span>\n<span class=\"line\"><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\">] paddr;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\">        pwrite;<\/span><\/span>\n<span class=\"line\"><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\">] pwdata;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\">        pready;<\/span><\/span>\n<span class=\"line\"><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\">] prdata;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\">        pslverr;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\">        intr;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/clk<\/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: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">period_pclk*<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #B48EAD\">5<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">pclk<\/span><span style=\"color: #D8DEE9FF\"> = ~<\/span><span style=\"color: #81A1C1\">pclk;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">assign<\/span><span style=\"color: #D8DEE9FF\"> pready  <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1&#39;b1<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">assign<\/span><span style=\"color: #D8DEE9FF\"> pslverr <\/span><span style=\"color: #81A1C1\">=<\/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>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/instance<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">apb_bfm<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">u_apb<\/span><span style=\"color: #D8DEE9FF\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         .pclk    (pclk    )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.presetn (presetn ) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.psel    (psel    ) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.penable (penable ) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.paddr   (paddr   ) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.pwrite  (pwrite  ) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.pwdata  (pwdata  ) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.pready  (pready  ) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.prdata  (prdata  ) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.pslverr (pslverr ) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    )<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">timer<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">u_timer<\/span><span style=\"color: #D8DEE9FF\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         .pclk    (pclk      )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.presetn (presetn   ) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.psel    (psel      ) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.penable (penable   ) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.paddr   (paddr[<\/span><span style=\"color: #B48EAD\">5<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #D8DEE9FF\">]) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.pwrite  (pwrite    ) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.pwdata  (pwdata    ) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.prdata  (prdata    ) <\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        ,.intr    (intr      )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    )<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">initial<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">begin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        pclk    <\/span><span style=\"color: #81A1C1\">=<\/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\">        presetn <\/span><span style=\"color: #81A1C1\">=<\/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>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        #(period_pclk);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        presetn <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1&#39;b1<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">        <\/span><span style=\"color: #616E88\">\/\/value = 0x10<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        #(<\/span><span style=\"color: #B48EAD\">10<\/span><span style=\"color: #81A1C1\">*<\/span><span style=\"color: #D8DEE9FF\">period_pclk);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        u_apb.apb_write(<\/span><span style=\"color: #B48EAD\">32&#39;h0<\/span><span style=\"color: #D8DEE9FF\">,<\/span><span style=\"color: #B48EAD\">32&#39;h100<\/span><span style=\"color: #D8DEE9FF\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">        <\/span><span style=\"color: #616E88\">\/\/Timer enable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        #(<\/span><span style=\"color: #B48EAD\">10<\/span><span style=\"color: #81A1C1\">*<\/span><span style=\"color: #D8DEE9FF\">period_pclk);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        u_apb.apb_write(<\/span><span style=\"color: #B48EAD\">32&#39;h0<\/span><span style=\"color: #D8DEE9FF\">,<\/span><span style=\"color: #B48EAD\">32&#39;h101<\/span><span style=\"color: #D8DEE9FF\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">wait<\/span><span style=\"color: #D8DEE9FF\">(intr);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t\t<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">        <\/span><span style=\"color: #616E88\">\/\/Timer disable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        #(<\/span><span style=\"color: #B48EAD\">10<\/span><span style=\"color: #81A1C1\">*<\/span><span style=\"color: #D8DEE9FF\">period_pclk);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        u_apb.apb_write(<\/span><span style=\"color: #B48EAD\">32&#39;h0<\/span><span style=\"color: #D8DEE9FF\">,<\/span><span style=\"color: #B48EAD\">32&#39;h100<\/span><span style=\"color: #D8DEE9FF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t\t<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">        <\/span><span style=\"color: #616E88\">\/\/Intr clear<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        #(<\/span><span style=\"color: #B48EAD\">10<\/span><span style=\"color: #81A1C1\">*<\/span><span style=\"color: #D8DEE9FF\">period_pclk);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        u_apb.apb_write(<\/span><span style=\"color: #B48EAD\">32&#39;h4<\/span><span style=\"color: #D8DEE9FF\">,<\/span><span style=\"color: #B48EAD\">32&#39;h1<\/span><span style=\"color: #D8DEE9FF\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">        <\/span><span style=\"color: #616E88\">\/\/value = 0x20<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        #(<\/span><span style=\"color: #B48EAD\">10<\/span><span style=\"color: #81A1C1\">*<\/span><span style=\"color: #D8DEE9FF\">period_pclk);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        u_apb.apb_write(<\/span><span style=\"color: #B48EAD\">32&#39;h0<\/span><span style=\"color: #D8DEE9FF\">,<\/span><span style=\"color: #B48EAD\">32&#39;h200<\/span><span style=\"color: #D8DEE9FF\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">        <\/span><span style=\"color: #616E88\">\/\/Timer enable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        #(<\/span><span style=\"color: #B48EAD\">10<\/span><span style=\"color: #81A1C1\">*<\/span><span style=\"color: #D8DEE9FF\">period_pclk);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        u_apb.apb_write(<\/span><span style=\"color: #B48EAD\">32&#39;h0<\/span><span style=\"color: #D8DEE9FF\">,<\/span><span style=\"color: #B48EAD\">32&#39;h201<\/span><span style=\"color: #D8DEE9FF\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">wait<\/span><span style=\"color: #D8DEE9FF\">(intr);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">        <\/span><span style=\"color: #616E88\">\/\/Timer disable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        #(<\/span><span style=\"color: #B48EAD\">10<\/span><span style=\"color: #81A1C1\">*<\/span><span style=\"color: #D8DEE9FF\">period_pclk);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        u_apb.apb_write(<\/span><span style=\"color: #B48EAD\">32&#39;h0<\/span><span style=\"color: #D8DEE9FF\">,<\/span><span style=\"color: #B48EAD\">32&#39;h200<\/span><span style=\"color: #D8DEE9FF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t\t<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">        <\/span><span style=\"color: #616E88\">\/\/Intr clear\t\t<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        #(<\/span><span style=\"color: #B48EAD\">10<\/span><span style=\"color: #81A1C1\">*<\/span><span style=\"color: #D8DEE9FF\">period_pclk);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        u_apb.apb_write(<\/span><span style=\"color: #B48EAD\">32&#39;h4<\/span><span style=\"color: #D8DEE9FF\">,<\/span><span style=\"color: #B48EAD\">32&#39;h1<\/span><span style=\"color: #D8DEE9FF\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #B48EAD\">#100<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">$finish<\/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>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/dump file<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">initial<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">begin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #88C0D0\">$dumpfile<\/span><span style=\"color: #D8DEE9FF\"> (<\/span><span style=\"color: #A3BE8C\">&quot;test.vcd&quot;<\/span><span style=\"color: #D8DEE9FF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #88C0D0\">$dumpvars<\/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>\n<span class=\"line\"><span style=\"color: #81A1C1\">endmodule<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Waveform\uc73c\ub85c simulation \uacb0\uacfc\ub97c \ud655\uc778\ud574\ubcfc\uae4c\uc694?<\/p>\n\n\n<style>.kb-image690_394eb6-33.kb-image-is-ratio-size, .kb-image690_394eb6-33 .kb-image-is-ratio-size{max-width:550px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image690_394eb6-33.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image690_394eb6-33 .kb-image-is-ratio-size{align-self:unset;}.kb-image690_394eb6-33 figure{max-width:550px;}.kb-image690_394eb6-33 .image-is-svg, .kb-image690_394eb6-33 .image-is-svg img{width:100%;}.kb-image690_394eb6-33 .kb-image-has-overlay:after{opacity:0.3;}.kb-image690_394eb6-33 img.kb-img, .kb-image690_394eb6-33 .kb-img img{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}@media all and (max-width: 767px){.kb-image690_394eb6-33.kb-image-is-ratio-size, .kb-image690_394eb6-33 .kb-image-is-ratio-size{max-width:280px;width:100%;}.kb-image690_394eb6-33 figure{max-width:280px;}}<\/style>\n<div class=\"wp-block-kadence-image kb-image690_394eb6-33\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/blog.kakaocdn.net\/dn\/lZiBP\/btsI5x0NQ4p\/mBWlKqMF4v0eLCHN4WavfK\/img.png\" alt=\"\uccab\ubc88\uc9f8 intr\" class=\"kb-img\"\/><figcaption>\uccab\ubc88\uc9f8 intr<\/figcaption><\/figure><\/div>\n\n\n<style>.kb-image690_628dcf-0b.kb-image-is-ratio-size, .kb-image690_628dcf-0b .kb-image-is-ratio-size{max-width:550px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image690_628dcf-0b.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image690_628dcf-0b .kb-image-is-ratio-size{align-self:unset;}.kb-image690_628dcf-0b figure{max-width:550px;}.kb-image690_628dcf-0b .image-is-svg, .kb-image690_628dcf-0b .image-is-svg img{width:100%;}.kb-image690_628dcf-0b .kb-image-has-overlay:after{opacity:0.3;}.kb-image690_628dcf-0b img.kb-img, .kb-image690_628dcf-0b .kb-img img{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}@media all and (max-width: 767px){.kb-image690_628dcf-0b.kb-image-is-ratio-size, .kb-image690_628dcf-0b .kb-image-is-ratio-size{max-width:280px;width:100%;}.kb-image690_628dcf-0b figure{max-width:280px;}}<\/style>\n<div class=\"wp-block-kadence-image kb-image690_628dcf-0b\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/blog.kakaocdn.net\/dn\/bZk7bV\/btsI3SFnnIf\/ZyW7D9vyKrf8PklcVmKynK\/img.png\" alt=\"\ub450\ubc88\uc9f8 intr\" class=\"kb-img\"\/><figcaption>\ub450\ubc88\uc9f8 intr<\/figcaption><\/figure><\/div>\n\n\n\n<p>Count_value\ub97c \ubc14\uafd4\uc90c\uc5d0 \ub530\ub77c alarm(intr)\uc774 \ubc1c\uc0dd\ud558\ub294 \uc2dc\uac04\uc774 \ub2ec\ub77c\uc9c0\uace0, clear \ud558\uba74 alarm(intr)\uc774 \uaebc\uc9c0\ub294 \uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc774\ub807\uac8c alarm \uae30\ub2a5\uc774 \uc788\ub294 \uac04\ub2e8\ud55c IP\ub97c \uc124\uacc4\ud574 \ubd24\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n<style>.kadence-column690_be9fdb-14 > .kt-inside-inner-col{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}.kadence-column690_be9fdb-14 > .kt-inside-inner-col,.kadence-column690_be9fdb-14 > .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-column690_be9fdb-14 > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column690_be9fdb-14 > .kt-inside-inner-col{flex-direction:column;}.kadence-column690_be9fdb-14 > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column690_be9fdb-14 > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column690_be9fdb-14{position:relative;}@media all and (max-width: 1024px){.kadence-column690_be9fdb-14 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column690_be9fdb-14 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column690_be9fdb-14\"><div class=\"kt-inside-inner-col\">\n<p><strong>\uad00\ub828 \uae00<\/strong><\/p>\n\n\n\n<p>\u2705<a href=\"https:\/\/rtlearner.com\/verilog-simulation-settings\/\">Simulation \ud658\uacbd \uc138\ud305 (EDA playground, Icarus verilog)<\/a><\/p>\n\n\n\n<p>\u2705<a href=\"https:\/\/rtlearner.com\/verilog-apb-interface-intro-bfm\/\">\uc2e4\uc804 1 \u2013 APB interface intro, BFM<\/a><\/p>\n\n\n\n<p>\u2705<a href=\"https:\/\/rtlearner.com\/verilog-apb-interface-design\/\">\uc2e4\uc804 2 \u2013 APB interface design<\/a><\/p>\n<\/div><\/div>\n\n\n\n<p>\ucc38\uace0: <a href=\"https:\/\/en.wikipedia.org\/wiki\/Interrupt\" target=\"_blank\" rel=\"noopener\">CPU interrupt \uc124\uba85(wiki)<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This time, let's design a simple timer using the APB interface and counter. Previously\u2026<\/p>","protected":false},"author":1,"featured_media":691,"comment_status":"closed","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,99],"class_list":["post-690","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-verilog","tag-verilog","tag-apb-interface"],"_links":{"self":[{"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/posts\/690","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=690"}],"version-history":[{"count":3,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/posts\/690\/revisions"}],"predecessor-version":[{"id":872,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/posts\/690\/revisions\/872"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/media\/691"}],"wp:attachment":[{"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/media?parent=690"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/categories?post=690"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/tags?post=690"}],"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: 69b92da9d36f73cd2808d6e8. Config Timestamp: 2026-03-17 10:32:09 UTC, Cached Timestamp: 2026-04-18 14:54:13 UTC -->