One-hot

二進法  グレイコード  One-hot 000  000  00000001 001  001  00000010 010  011  00000100 011  010  00001000 100  110  00010000 101  111  00100000 110  101  01000000 111  100  10000000

one-hot (ワン・ホット) は、デジタル回路のビット列において、1ビットだけHigh(1)であり、他はLow(0)である状態を指す。類似のものとして、0が1つだけで、他がすべて1であるようなビット列をone-cold(ワン・コールド)と呼ぶことがある。

応用
one-hotエンコーディングはしばしば状態機械の状態を表すのに用いられる。二進法やグレイコードを使うときにはその状態を決定するためにデコードが必要だが、one-hotを使うときには不要である。というのも、one-hotではビット列のn番目のビットがHighであればn番目の状態を表していることになるからである。

15個の連続する状態を持つリング・カウンタは状態機械の一例である。one-hotでこれを実現するには、15個のフリップフロップを一列に並べて、それぞれのフリップフロップのQ出力が次のフリップフロップのD入力に入るようにする。ただし初段のフリップフロップのD入力には終段のフリップフロップのQ入力が入るようにする。最初のフリップフロップは1番目の状態を表し、2番目のフリップフロップは2番目の状態を表す。それ以降も同様で、15番目(終段)のフリップフロップは最後の状態を表す。状態機械をリセットすると、最初のフリップフロップには「1」が、それ以外のフリップフロップにはすべて「0」がセットされる。クロック信号の立ち上がりによって、Hotビット(1であるビット)が次のフリップフロップに移動する。このようにしてHotビットは15番目のフリップフロップまで移動し、その次には最初のフリップフロップに戻る。

は二進数またはグレイコードをone-hot表記に変換する。

はone-hot表記を二進数またはグレイコードに変換する。

他のエンコーディング方法との違い
利点
状態の決定に必要なコストが少ない。1つのフリップフロップにアクセスする定数コストで済む
状態遷移も2つのフリップフロップにアクセスする定数コストで済む
設計と修正が容易である
不正な状態を検出するのが容易である
FPGAの豊富なフリップフロップを活用できる

one-hotを使うことで、他のエンコーディング方法を使った場合よりも速いクロック周波数で状態機械を動作させることができる。Xilinx.
"HDL Synthesis for FPGAs Design Guide".
section 3.13: "Encoding State Machines".
Appendix A: "Accelerate FPGA Macros with One-Hot Approach".
1995.

欠点
他のエンコーディング方法よりも多くのフリップフロップが必要であり、PALでは現実的ではない
起こりうる状態の多くが不正な状態ということになる

 参考文献 

 関連項目 
 一進法

 XORゲート

Category:デジタル回路