<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 二進制和BCD編碼都是什么? ` `這里所說的二進制,就是一個變量(整數)的實際值的意思,比如一個整數10,那么我們說他的二進制的值就是10,這個沒啥好說的。 主要是BCD編碼,在數據的傳輸中,數據都是以字節(byte)為單位進行的傳輸,一個字節有8個位(bit),那么一個字節能夠傳遞的數值的范圍就是0~255(十六進制為0x00~0xFF)。這個時候,比如我們要傳遞一個值35,那么用十六進制表示就是0x23。一般情況下是沒有問題的,但是在某些應用中就存在一定的問題,比如數碼管顯示上經常需要將數值的每個位都提取出來,還是剛才的值35,在數碼管顯示的特定應用中就需要將十位3和個位5分別提取,形成一個新的數據0x35,這樣用分別獨立的數字來表示二進制值的編碼方式就是BCD編碼。簡單來說可以由下圖表示: ![](https://img.kancloud.cn/bf/25/bf25fc58a8eb93c0125637a78d7b092c_822x264.png) ## Verilog算法 ` `點[這里](http://www.eng.utah.edu/~nmcdonal/Tutorials/BCDTutorial/BCDConversion.html),查看英文原文。 這里我們采用一種移位加3的算法來實現這個二進制到BCD轉換的功能。(當然如果數據范圍比較小的情況下,比如幾百個數字,我還是推薦在FPGA中使用查找表的方法來進行) #### 算法:步驟 1. 如果某一權位(百位,十位,個位)大于或者等于5,那么此權位加3。 2. 將二進制數,左移1位到BCD移位寄存器中。 3. 如果二進制數據位都移動完畢,計算結束 4. 返回步驟1 ![](https://img.kancloud.cn/75/41/75414b9475e05aebe2166fe63aa09d34_712x566.png) ### 代碼 ![](https://img.kancloud.cn/d9/25/d9256b6e413aa045be643b113e491361_582x818.png) ``` /* bin2bcd.v */ module bin2bcd( input [7:0] bin, output reg [3:0] Hundreds, output reg [3:0] Tens, output reg [3:0] Ones ); integer i; always@(bin) begin Hundreds=4'd0; Tens=4'd0; Ones=4'd0; for(i=7;i>=0;i=i-1) begin if(Hundreds >= 5) Hundreds = Hundreds + 3; if(Tens >= 5) Tens = Tens + 3; if(Ones >= 5) Ones = Ones + 3; Hundreds = Hundreds <<1; Hundreds[0] = Tens[3]; Tens = Tens << 1; Tens[0] = Ones[3]; Ones = Ones << 1; Ones[0] = bin[i]; end end endmodule ```
                  <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>

                              哎呀哎呀视频在线观看