全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2752
推到 Plurk!
推到 Facebook!

請問VHDL 2進制8Bit BCD寫法

答題得分者是:addn
dkny7
一般會員


發表:1
回覆:3
積分:0
註冊:2006-12-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-12-13 16:16:29 IP:202.165.xxx.xxx 訂閱
如題 請問如何利用2進制8Bit BCD的寫法?
例如 : 99 99=198 , 如何把"1" 提出到另一個變數裡
1001 1001
1001 1001
-------------------------
0001 0011 0010 <====132 (如果是10進制應該是198才對)
以上2個問題請問各位大大要如何寫?
編輯記錄
 重新編輯於 2007-04-21 02:11:24, 註解 無‧
hsk6138
初階會員


發表:12
回覆:59
積分:49
註冊:2003-12-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-01-02 13:01:01 IP:59.112.xxx.xxx 訂閱

===================引 用 文 章===================
如題 請問如何利用2進制8Bit BCD的寫法?
例如 : 99 99=198 , 如何把"1" 提出到另一個變數裡
1001 1001---------------=hex 99
1001 1001---------------=hex99
-------------------------
0110 0011----------------=10 -99
0001 0011 0010<====132=hex
把2,10,16搞清楚 你的困難就解決了
dkny7
一般會員


發表:1
回覆:3
積分:0
註冊:2006-12-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-01-02 13:30:21 IP:202.165.xxx.xxx 訂閱
感謝大大我可能說明的不夠清楚 , 我再解釋一次
如果是二進制4位元BCD的寫法
1001(10) <==9
1001 <===9
-----------------
10010 0110 <===12 6=18 (此時 6可以達到BCD需求)
如果是二進制8位元BCD的寫法
1001 1001 <==99
1001 1001 <===99
-----------------
10011 0010 0110 0110 <===132 66=198 (此時 66可以達到BCD需求)
可是我不能每次都加66 , 因為如果是92 93 再加66就不等於185
困擾點不知道有沒有說清楚><"
addn
高階會員


發表:64
回覆:221
積分:202
註冊:2005-03-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-01-02 19:49:44 IP:218.171.xxx.xxx 訂閱
您好
請參考數位設計4BIT BCD加法器
了解其原理後,可以很輕易的用兩個
4BIT BCD加法器擴充成8BIT BCD加法器


版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-01-03 00:57:58 IP:219.70.xxx.xxx 未訂閱
如 Addn 所說, 4bit 各別處理即可. 
Ex : A=99H,B=99H, C 商.
if A(0~3) B(0~3) > 9 => C=C 6
if A(4~7) B(4~7) > 9 => C=C 60H
進位請自己思考一下囉.....很簡單的
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
dkny7
一般會員


發表:1
回覆:3
積分:0
註冊:2006-12-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-01-04 12:56:24 IP:202.165.xxx.xxx 訂閱
感謝㊣大大提供方法 : 
此方法我有試過很多次
可是跑不出(0~3) (4~7)的個別算法
如果跑出來 , 答案會錯一個跟對一個 , 就是會錯其中一組
驗證方法為 1001 1001 1001 1001 = 1 1001 1000
1001 0001 1001 0010 = 1 1000 0011
===================引 用 文 章===================

如 Addn 所說, 4bit 各別處理即可.
Ex : A=99H,B=99H, C 商.???????
if? A(0~3) B(0~3) > 9? => C=C 6
if? A(4~7) B(4~7) > 9? => C=C 60H
進位請自己思考一下囉.....很簡單的????????????????????????????????????????????????

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-01-04 17:36:14 IP:59.125.xxx.xxx 未訂閱
我有說了 " 進位請思考一下"
另外.....99 99=198, 91 92=183 並沒有錯.....不知道你列的這兩個例子錯在那裡耶!?
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
dkny7
一般會員


發表:1
回覆:3
積分:0
註冊:2006-12-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-01-11 15:56:50 IP:202.165.xxx.xxx 訂閱
下列是我想分別處理所寫的程式 , 可是在執行99+99 或是91+92 (BCD) 時答案只能其中一個對
百思不解 , 請大大幫我看看!! 感謝!!
Y<=A B;
if y(3 DOWNTO 0) > "1001" then
s(3 DOWNTO 0) <= (3 DOWNTO 0) "0110" ;
else
S(3 DOWNTO 0) <= Y(3 DOWNTO 0);

if y(7 DOWNTO 4) > "1001" then
s(7 DOWNTO 4) <= (7 DOWNTO 4) "0110" ;
cout <= '1' ;
else
S(7 DOWNTO 4) <= Y(7 DOWNTO 4);
end if;
end if;
addn
高階會員


發表:64
回覆:221
積分:202
註冊:2005-03-21

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-01-11 19:44:02 IP:218.171.xxx.xxx 訂閱
您好
這樣當然不對,不是用Y先等於A B再去做 6, 60調整
多做幾個4bit變數,先從低四位元加完後加六調整
然後再將進位及高4位元相加,然後再處理高4位元的加六調整
做完就是結果了
系統時間:2024-05-07 1:08:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!