シフトレジスタとマルチプレクサ

[] [] []


N個のデータを1個づつ順番に使うとき、次の2とおりの方法がある。これらはロジック的には等価だが回路構造を考えると次のようにシフトレジスタの方が高速動作に向いている

(1) シフトレジスタ(SREG)を使う

隣同士を接続すればよいので配置配線が簡単。また出力段に組合せ回路はない。

 

(2) マルチプレクサ(MUX)を使う

配線がN箇所から1か所へ集中して込み合う。出力段に組合せ回路がつく。

1個づつシフトインされるN個のデータに対する演算も、全部データがそろってから計算するのがRTL記述としてはわかりやすくてよいが、回路構造を考えると、部分的な演算結果をシフトしていく回路にした方が組合せ回路が小さくなって高速動作する

  

1) FIRフィルタ

  入力にフィルタ係数cnをかけて和をとる dout[i] = c0 * din[i] + c1 * din[i+1] + c2 * din[i+2] には fn(x,y) = cn * x + y

2) 文字列マッチ検出

   入力が文字列 {c0,c1,c2} に一致したら1を立てる dout[i] = (c0==din[i]) & (c1==din[i+1]) & (c2==din[i+2]) には fn(x,y) = (x==cn ) & y

3) 最大値

   入力のうち最大のものを出力する dout[i] = max(din[i],din[i+1],din[i+2]) には fn(x,y) = (x>y)? x : y


[] [] []