廖超平



摘? 要:該文以16位二進制數為例,分析了N位二進制-BCD轉換算法,并以此算法為根據,應用VHDL語言設計了一種實現N位二進制-BCD轉換的電路。該設計的基本循環是將二進制碼表示中各個數碼往左邊移動一位,最高一位二進制位的數碼移出二進制表示進入最低一位十進制位的8421表示中,而每個十進制位的8421表示中權為8的位的數碼都移到高1位十進制位的8421表示中重新組合成新的8421表示。
關鍵詞:二進制-BCD轉換? VHDL? 移位
中圖分類號:TP303 ? ?文獻標識碼:A 文章編號:1672-3791(2020)06(a)-0065-03
在非常多的數字系統的設計中,存在數據輸入,用戶習慣使用十進制(BCD)碼形式,而數字系統內部則使用二進制。所以,在使用VHDL設計數字系統時多位二進制-BCD轉換電路是經常使用的。多位二進制-BCD轉換電路在各種智能儀表、電子秤和數控機床等數字系統的設計中廣泛使用。
1? N位二進制-BCD轉換算法分析
下面以十六位二進制數字的二進制- BCD 轉換為例分析多位二進制- BCD轉換算法。十六位二進制數字的二進制碼表示的一般表達式如下:
下面算式中,最右邊的2的冪每降一次表示移動一次數字。
上面分兩種情況,原因是為了保證下一次移位后,符合十進制數進位和十進制數的表達形式,即:每位十進制數碼應該只能是0~9這10個數碼。
在X03=0時,(A03,A02,A01,A00)是(0,0,0,0)~(0,1,0,0)這幾個值,向左邊移動一位后,沒有對高一位的進位,而且本位最大變成(1,0,0,A-4),符合十進制的表達形式。
在X03=1時,(A03,A02,A01,A00)是(0,1,0,1)~(1,0,0,1)向左邊移動一位后,最少也是(1,0,1,A-4),存在對高一位的進位,進位是逢十進一,所以要進行修正。……