アダルト・ヴァイオリン May the force be with you..

2009年12月23日

NSLによる平方根演算回路

Filed under: Weblog — い~ぐる @ 7:46 AM

NSLで(整数の)平方根を求める回路を作成してみました。
なるべくシンプルにするための、サンプル回路なので、効率は悪いです。
ぎりぎりのタイミングに詰めたい場合には、for文ではなく、ifとgotoを使って、余分なステップが発生しないようにします。

やはり、性能が落ちるのは気持ち悪いので、20091223版で、対策しました。まだ、シミュレーションモードではハザードになるなど、若干不安定なので、引き続き、調整中。20091224版で、修正した(はず)。なお、このバージョンから、端子やレジスタへの代入の右辺に整数値を与えることができます。

コード整理のついでに、SFLでの、while構文は需要が少なそうなので、削除します。

この回路、結果が出るまでの時間が長いのと、Nの定義値によって時間が変わるので、結果をsqrt_doneのタイミングで出力します。

この回路の動作確認中、sfl2vlのバグがあったので、
対応するベータ版は、20091222版にアップしてあります。

これとほとんど同じ回路で割算も出来ます。

// Copyright (c) IP ARCH, Inc. Naohiko Shimizu
// All rights reserved.
#define N 8
declare sqrt_%N% {
input A[N];
output F[N/2];
func_in sqrt_do(A);
func_out sqrt_done(F);
}
module sqrt_%N% {
reg try[N/2];
wire mul_i[N/2], mul_o[N];
func_self mul(mul_i);
function mul {
mul_o = mul_i*mul_i;
}
function sqrt_do seq {
reg bitpos[N/2];
for( {bitpos:=1 << ((N/2)-1); try:=0; };
bitpos != 0 ; bitpos := bitpos >> 1) {
if(mul(try | bitpos).mul_o <= A) try := try | bitpos;
}
sqrt_done(try);
}
}

トランジスタ回路の入門本

Filed under: Weblog — い~ぐる @ 3:18 AM

昨日、記事を書いたつもりであったけれど、なぜか消えてしまったので再度書いている。

1977年に書かれた奥沢氏の、「はじめてトランジスタ回路を設計する本」が、息子さんによって、改訂されていた。


はじめてトランジスター回路を設計する本

昨今の入門本では省略されている、バイアス設計についても、触れていて、内容的には読んでおいて損はないかも?

ただ、どうせ改訂するなら、FETについても大々的に取り上げてほしかった(ページ数の関係で無理かもしれないが。。)

Powered by WordPress