<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] > # 說明 前面的設計和驗證都是使用的仿真來做的,從仿真上來看是沒有什么問題的,但是最后還是要看看他實際在硬件上的情況,為此我使用中斷的方式寫了一個流水燈,實現效果為在小腳丫FPGA型號為`STEP-MOX2-C`上實現1秒的時間流水燈切換一下。 > # 匯編代碼 ``` ;系統時鐘為12MHz ;目標硬件為 小腳丫FPGA step-maxo2-c,這個型號是U盤模式,流文件會下載到mcu,每次上電由mcu配置FPGA constant sw_port,00 ;定義按鍵四段撥碼開關 【按鍵 : 開關 】 ;輸出 constant seg_port,00 ;定義數碼管地址 constant led_port,01 ;定義led_port為常量01 constant rgb_port,02 ; rgb燈 ;定義一些變量 constant var_seg,00 ;數碼管 constant var_led,01 ; led start: load sA,FE ; led等控制 output sA,led_port store sA,var_led load sB,66 ; 初始化數碼管顯示 store sB,var_seg output sB,seg_port load sC,00000111'b ; ' rgb 滅 output sC,rgb_port ;rgb不亮 input sD,sw_port ; 讀一次io口 enable interrupt ;使能中斷 wait: jump wait ;循環等待 ;-------------------------------------------- ;數碼管計數器 0--99 循環計數顯示 ;該函數會在中斷中被調用 ;-------------------------------------------- seg_add: fetch sC, var_seg add sC,01 ;數碼管顯示值加1 load sB,sC and sB,0f ; compare sB,0a ;低四位是否等于10 jump nz,seg_add_return ;不等于10就準備返回顯示,否則整體加6 add sC,06 load sB,sC and sB,f0 compare sB,a0 ;高4位是否等于10 jump nz,seg_add_return ;不等于10就準備返回顯示,否則整體歸零,準備重新計數 load sC,00 seg_add_return: output sC,seg_port ;顯示 store sC,var_seg ;存儲值到中間寄存器 return ;-------------------------------------------- ;led流水燈循環點亮 ;該函數會在中斷中被調用 ;-------------------------------------------- led_dis: fetch sA,var_led RR sA output sA,led_port store sA,var_led return ;中斷入口地址 -- 此處必須這樣寫,我寫的腳本如果檢測到你使能了中斷會默認去這個地址找 ;找到后將地址動態連接到前面程序的地址后面 ADDRESS 3FF ISR: disable interrupt ;關閉中斷響應,準備處理中斷的事情 call led_dis ; led call seg_add ; seg display returni enable ``` > # 自動裁剪 腳本會根據寫的匯編才加裁剪`mcu`,實現的原理是條件綜合,`head.v`文件包含了所有使用命令的頭文件,當修改代碼設計后,執行了編譯,這個文件將會自動更新,當前我們可以看到文件下的內容為: ```verilog `define ISR_ADDR 12'd11 //定義的中斷入口地址,這個地址會根據程序自動改變,因此在實際硬件上是動態的中斷入口地址 `define _LOAD_REG2REG_ `define _LOAD_DAT2REG_ `define _INPUT_PP_ `define _SHIFT_ `define _JUMP_AAA_ `define _EN_INTR_ `define _RETURNI_ `define _OUTPUT_PP_ ``` > # 綜合RTL ![](https://img.kancloud.cn/98/86/98865260cb99bb72874c167450149e7f_1432x554.png) > # 實際效果 ![](https://img.kancloud.cn/bc/55/bc55f2693d382944f19d99114849250d_949x293.png) ![](https://img.kancloud.cn/7a/42/7a424d0055f6b4e253f965faa62d8510_857x270.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看