二進制碼轉(zhuǎn)換為十進制碼_第1頁
二進制碼轉(zhuǎn)換為十進制碼_第2頁
二進制碼轉(zhuǎn)換為十進制碼_第3頁
二進制碼轉(zhuǎn)換為十進制碼_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

二進制碼轉(zhuǎn)換為十進制(BCD)碼轉(zhuǎn)換原理對于一個8位二進制碼bn-1bn-2......b1b0,,其在十進制編碼方式下的值為Nr>=Jbx2i=b次2^+白次2"心+…冷x2\加2./ i fi—l 1 Vi=0把上式寫出套乘的形式:^d={-{[(^-ix2+^_2)x2+^_3]x2+-}x2+51}x2+ft()式中的每項乘2,相當(dāng)于將寄存器中的二進制碼左移1位,這就意味著利用移位寄存器可以完成二進制與8421BCD的轉(zhuǎn)換。[2]在移位的過程中,當(dāng)現(xiàn)態(tài)Sn<5時,次態(tài)不變。當(dāng)現(xiàn)態(tài)Sn=5、6、7時,左移一次,其次態(tài)Sn+1將會超過9,對于一個BCD碼來說,這樣的狀態(tài)屬于禁用狀態(tài)。而當(dāng)Sn=8、9時,左移1位,則會向高1位的BCD碼輸入一個進位的信號,由于二進制和BCD碼權(quán)不一致,當(dāng)發(fā)生進位時,雖然碼元只是左移1位,但次態(tài)Sn+1將減少6。基于上面這兩種情況,在B/BCD轉(zhuǎn)換時需要對轉(zhuǎn)換結(jié)果加以校正。校正過程如下:當(dāng)Sn>=5時,我們讓Sn先加上3,然后再左移1位,次態(tài)Sn+1=2(Sn+3)=2Sn+6,正好補償由于進位而減少的數(shù)值,并且向后一個變換單元送入一個進位信號,這個方法叫“加3移位法”。注意:現(xiàn)態(tài)和次態(tài)都是指BCD碼,即用4位二進制表示的1位BCD碼。我們對Sn=8、9時舉個例子:BCD碼的1000(8)乘以2為0001_0110(16),但是左移后變?yōu)?001_0000,減少了6。所以需要加上6,這里的方法是加3左移一位,相當(dāng)于加上6。轉(zhuǎn)換方法首先,先了解二進制與BCD碼的位數(shù)對應(yīng)關(guān)系,比如一個8位二進制碼,可以表示的最大十進制數(shù)為255,轉(zhuǎn)換成BCD碼為0010_0101_0101,共需12位,其中每4位組成一個BCD單元,有三個BCD單元,分別表示百位(hundreds)、十位(tens)和個位(units)。n位二進制碼轉(zhuǎn)換成D位BCD碼的n~D對應(yīng)關(guān)系表見表1。表1n~D對應(yīng)關(guān)系

戳I-34—67—9](>-14-£6517-19630-23724-26827-29930J011引■—推口40-43掃44-461447-網(wǎng)3S1654-563757-59】&6。「6364-56以8位二進制轉(zhuǎn)換為3位BCD碼為例,轉(zhuǎn)換步驟是:將待轉(zhuǎn)換的二進制碼從最高位開始左移BCD的寄存器(從高位到低位排列),每移一次,檢查每一位BCD碼是否大于4,是則加上3,否則不變。左移8次后,即完成了轉(zhuǎn)換。需要注意的是第八次移位后不需要檢查是否大于5。注意:為什么檢查每一個BCD碼是否大于4,因為如果大于4(比如5、6),下一步左移就要溢出了,所以加3,等于左移后的加6,起到十進制調(diào)節(jié)的作用。表2給出了一個二進制碼11101011轉(zhuǎn)換成8421BCD碼的時序。表2B/BCD時序時鐘麟沖曲!位結(jié)果《耕他方向一>輸入的m通制碼旺夠碼底位RCI)碼次島-位藏Q碼最低位0000oaw(MW1HGIQI1E0(W0000ami110301120(Woooo001110101100(50(WOOIH03011修正(m>,■5001!UJIG[)10114(WO0100MlI5omoOOlfl3001on修11;awno聞HOCan6cmaiot1000H燎止i*H1013H7(Muim\am1慘IEoroiorni毋iiJ0101s0019OOH0101結(jié)果(十制)235Verilog代碼/*功能:8位二進制轉(zhuǎn)3位BCD碼輸入?yún)?shù):輸入時鐘clk,輸入二進制數(shù)據(jù)dat輸出參數(shù):個位units,十位tens,百位hundreds備注:二進制轉(zhuǎn)BCD碼的實現(xiàn)方法很多,本例采用的是“加3移位法”本例實現(xiàn)的是8位二進制轉(zhuǎn)3位BCD碼的例子,例如輸入2'b11111111(255),輸出0010_0101_0101(BCD)*/moduleBIN_to_BCD(clk,dat,units,tens,hundreds);inputclk;input[7:0]dat;〃二進制輸入數(shù)據(jù)output[3:0]units;output[3:0]tens;output[3:0]hundreds;reg[3:0]units_r,tens_r,hundreds_r;//BCD數(shù)據(jù)輸出寄存器reg[7:0]dat_r;reg[11:0]temp;〃中間寄存器integeri;assignunits=units_r;assigntens=tens_r;assignhundreds=hundreds_r;always@(posedgeclk)begindat_r=dat;temp=0;for(i=0;i<7;i=i+1)〃循環(huán)7次,注意不是8次,因為第八次不需要修正begintemp={temp[10:0],dat_r[7]};//左移一位if(temp[3:0]>4'd4)〃大于4,加三temp[3:0]=temp[3:0]+4'd3;if(temp[7:4]>4'd4)〃大于4,加三temp[7:4]=temp[7:4]+4'd3;if(temp[11:8]>4'd4)〃大于4,加三temp[11:8]=temp[11:8]+4'd3;dat_r=dat_r<<1;〃最高變?yōu)樵瓉韉at_r的第六位{hundreds_r,tens_r,units_r}={temp[10:0],dat[0]};//最后一次(第8次)不用修正endendendmodule波形仿真報告說明KSSna?|| 231.67n* 214岸巾 SIaL End二回1-iV.□ 隊讓園L?3曰MlUIEKru克L44..Di&a 泗pmMD.pnsKC.Ot■.部MilrnrrmiiinwiirnmrrnniTntmirframwwnTMiirnrrniirMiMaoESS?!龅躀X;|2ud『JSSII圖1輸入二進制1111_1111(255)的波形仿真報告分析綜合報告說明Family堿IIEFS570T1C0C5Timin直Model$JfinelMettimmg:r?q.uif30/57Q(5%)T。taJ.pins21/

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論