2014-11-23 146 views
0

好吧,大家好,我想在VHDL中做的是取8位二進制值並將其表示爲BCD,但由於此卡必須是最大輸入的一部分這是9.使用整數將8位二進制轉換爲BCD

1-轉換輸入到整型例如1000 0000 - 255通過然後> 128

2-除以整數乘以90(90,使得我得到的一個的手指和所述第一數字小數點後指的是小數點後的所有數)

例如128/255 * 90 = 45.17(讓這是signal_in)

3.Extract 45的兩位數字由20個分割,並將它們存儲作爲分開的整數 例如我會使用類似:

LSB_int = signal_in模10

那麼我會在除以10信號因此,它改變爲4.517然後讓這種等於MSB_int ..(這將截斷小數和存儲器4右側)

4.Convert兩者LSB_int和MSB_int至4位BCD

..和我將從那裏完美...但可悲的是我有這麼多麻煩...瓦特ith不同的數據類型(簽署unsigend std_logic_vectors)和師。所以我只需要幫助我的思維過程中的任何缺陷,我應該看看這樣做的時候..

我實際上做了我的代碼,並認爲我保存這一個..但我沒有,以及我仍然相信這個解決方案可以工作,我會回覆我認爲是我的舊代碼...只要我能記住這一切..

這是我的其他與我的新代碼的問題..(只是爲了證明我做的東西..) Convert 8bit binary number to BCD in VHDL

+1

注8位值只需要3位BCD碼錶示(最大值爲255)。你有具體的問題嗎?也許你可以展示你的代碼並詢問特定的語法或語義錯誤?不正確的結果? – user1155120 2014-11-23 08:16:12

回答

0

F I吃透,你需要的是轉換的8位數據

0-255→0-9000

並用4位BCD數字表示。

比如你要0x80的→4517(BCD)

如果是的話,我建議你一個完全不同的想法:

1)

讓轉換輸入範圍輸出範圍用一個簡單的8位* 8bit-> 16bit

(in_data * 141)並保持14個MSB(0。1%的誤差)

而讓說,這14位寄存器是目標

2)

建立一個4位數的BCD加/減計數器(您的輸出)

構建一個14位二進制加/向下計數器(從動)

供應二者以相同的輸入(復位,CLK,增減的)

(使一個在另一個的陰影)

3)

比較TARGET和二進制計數器

if (follower < target) then increment the counters 
else if (follower > target) then decrements the counters 
else nothing 

4)

相關問題