8421BCD轉余3碼Verilog HDL的設計(1)


  近期閱讀Verilog HDL高級數字設計(第二版)中,遇到了串行比特流BCD碼轉余3碼轉換器的設計,比較獨特的是:

  (1)該轉換器的輸入為1位串行比特流,輸出也為1位串行比特流。

  BCD碼與余三碼的轉換關系如下:

                  8421BCD碼=余3碼+0011

表1 8421BCD碼-余3碼轉換關系(4位無符號數)
10進制 8421BCD碼 余3碼 10進制 8421BCD碼 余3碼
0 0000 0011 8 1000 1011
1 0001 0100 9 1001 1100
2 0010 0101 10 1010 1101
3 0011 0110 11 1011 1110
4 0100 0111 12 1100 1111
5 0101 1000 13 1101 10000
6 0110 1001 14 1110 10001
7 0111 1010 15 1111 10010

由表1可知,當8421BCD碼為13、14、15時候,余三碼已經超出了4位二進制能表示的范圍(無符號數0~15),因此本次中暫不考慮。

轉換器的輸入為1位串行比特流,輸出為1位相應余三碼的串行比特流,設計思路如下:

                        圖1 狀態轉換示意圖

  設BCD碼輸入比特流Bin在t0,t1,t2,t3的輸入分別為t0t1t2t3,設余三碼輸出比特流Bout在t0,t1,t2,t3時刻的輸出分別為T0T1T2T3

假設轉換器的初始狀態為狀態A:

  (1)在狀態A下,t0時刻Bin輸入的值可能為0或者1:當bin輸入0時,進入B狀態;當bin輸入1時,進入C狀態

比特流Bin二進制為t3t2t1t0的可能性如下:

A狀態(t0時刻,Bin=0),Bout=1

A狀態(t0時刻,Bin=1),Bout=0

t3t2t1t0

T3T2T1T0 下一個狀態:B t3t2t1t0 T3T2T1T0 下一個狀態:C
0000 0011 0001 0010
0010 0101 0011 0110
0100 0111 0101 1000
0110 1001 0111 1010
1000 1011 1001 1100
1010 1101 1011 1110
1100 1111 1101 (1)0000

  (2)在B狀態,t1時刻Bin輸入的值可能為0或者1:當bin輸入0時,進入D狀態;當bin輸入1時,進入E狀態

比特流Bin二進制為t3t2t1t0的可能性如下:

B狀態(t1時刻,Bin=0),Bout=1

B狀態(t1時刻,Bin=1),Bout=0

t3t2t1t0

T3T2T1T0 下一個狀態:D t3t2t1t0 T3T2T1T0 下一個狀態:E
0000 0011 0010 0101
0100 0111 0110 1001
1000 1011 1010 1101
1100 1111 1110 (1)0001

  (3)在D狀態,t2時刻Bin輸入的值可能為0或者1:當bin輸入0時,進入H狀態;當bin輸入1時,進入I狀態

比特流Bin二進制為t3t2t1t0的可能性如下:

D狀態(t2時刻,Bin=0),Bout=0

E狀態(t2時刻,Bin=1),Bout=1

t3t2t1t0

T3T2T1T0 下一個狀態:H t3t2t1t0 T3T2T1T0 下一個狀態:I
0000 0011 0100 0111
1000 1011 1100 1111

  (4)在H狀態,t3時刻Bin輸入的值可能為0或者1:當bin輸入0時,進入A狀態;當bin輸入1時,進入A狀態

比特流Bin二進制為t3t2t1t0的可能性如下:

H狀態(t3時刻,Bin=0),Bout=0

H狀態(t3時刻,Bin=1),Bout=1

t3t2t1t0

T3T2T1T0 下一個狀態:A  t3t2t1t0 T3T2T1T0 下一個狀態:A
0000 0011 1000 1011

    (5)在I狀態,t3時刻Bin輸入的值可能為0或者1:當bin輸入0時,進入A狀態;當bin輸入1時,進入A狀態

比特流Bin二進制為t3t2t1t0的可能性如下:

I狀態(t3時刻,Bin=0),Bout=0

I狀態(t3時刻,Bin=1),Bout=1

t3t2t1t0

T3T2T1T0 下一個狀態:A t3t2t1t0 T3T2T1T0 下一個狀態:A
0100 0111 1100 1111

 

  (6)在E狀態,t2時刻Bin輸入的值可能為0或者1:當bin輸入0時,進入J狀態;當bin輸入1時,進入K狀態

比特流Bin二進制為t3t2t1t0的可能性如下:

E狀態(t2時刻,Bin=0),Bout=1

E狀態(t2時刻,Bin=1),Bout=0

t3t2t1t0

T3T2T1T0 下一個狀態:J t3t2t1t0 T3T2T1T0 下一個狀態:K
0010 0101 0110 1001
1010 1101 1110 (1)0001

  (7)在J狀態,t3時刻Bin輸入的值可能為0或者1:當bin輸入0時,進入A狀態;當bin輸入1時,進入A狀態

比特流Bin二進制為t3t2t1t0的可能性如下:

J狀態(t3時刻,Bin=0),Bout=0

J狀態(t3時刻,Bin=1),Bout=1

t3t2t1t0

T3T2T1T0 下一個狀態:A t3t2t1t0 T3T2T1T0 下一個狀態:A
0010 0101 1010 1101

 

  (8)在K狀態,t3時刻Bin輸入的值可能為0或者1:當bin輸入0時,進入A狀態;當bin輸入1時,進入A狀態

比特流Bin二進制為t3t2t1t0的可能性如下:

K狀態(t3時刻,Bin=0),Bout=1

K狀態(t3時刻,Bin=1),Bout=0

t3t2t1t0

T3T2T1T0 下一個狀態:A t3t2t1t0 T3T2T1T0 下一個狀態:A
0110 1001 1110 (1)0001

未完待續。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM