Hiroyuki Naito 様
ご質問ありがとうございます.
p.73では「絶対値処理回路」と「1/2回路,1/4回路」について,入力ビット数を図6.12の6ビットとは異なる5ビットで説明しています.その旨,本文中にも記述してあります.これは説明に用いる回路図のサイズを小さくしたかったからです.
このページでは本特集をパラパラと眺めた人が
●絶対値処理回路
●1/2回路,1/4回路
というところだけ気になって途中から読んだとしても誤解が無いように,汎用的な回路の説明にしています.これはどういう事かと言うと,「絶対値処理回路」では,入力5ビットに対して,出力は絶対値部分を表現している下4ビットを示している点,「1/2回路,1/4回路」では,負の値を考慮した回路としている点です.一方,図6.12ではこの回路全体が持つ事情があり,それが理解を妨げたのだと思われます.
図6.12では,「1/2回路,1/4回路」は絶対値回路の出力を受け取るので,負の値を考慮する必要はありません.MSBは常に"0"ですから,それを考慮すればセレクタに用いる論理素子を多数削除することができます.FPGAやCPLDではこうした無駄は容易に取り除けます.根元の端子を"L"に落とせば,最適化で削除されます.掲載した回路がそうなっていない理由は,教材として作ったからです.回路図を見て機能がわかるようにしたかったのです.
図6.12の「絶対値処理回路」はビットを増やしただけなのですが,その出力の取り出し方については説明不足でした.ここは,出力を取り出すときに「1/2」の値を取り出しています.
図6.13でいうとY1, Y2, Y3とC4(キャリー出力)に相当する部分を用いています.C4は符号に相当するビットですが,絶対値を得ているので常に"0"です.正確に言うと負の最大値が入ったときのみ"1"が立ちますが,入力となる周波数検波波形は図6.10のように,負の最大値まで振れません.
以上のことから,図6.12で右上の74HC283の1番ピンは常に"0"なので,その先で沢山枝分かれしているラインはすべて"0"を流しているだけです.上記1番ピンにつなぐ代わりにGNDに落としても構いませんし,経路を辿って論理素子を削除して行っても構いません.
図6.12のセレクタは2ビットの入力(TIMSEL1,TIMSEL2)で,0, 1/4, 1/2, 1 という倍率を切り替えますが,先ほど述べたようにセレクタの手前で1/2で取り出していますから,結果的に(TIMSEL1,TIMSEL2)で,0, 1/8, 1/4, 1/2 という倍率を切り替えています.このことはp.77の左下に記されています.
以上,ご質問の直接的なお答えではなく,前提や付帯条件を説明させていただきました.これを考慮して読んで頂ければ矛盾は無いと考えておりますがいかがでしょうか.