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

2009年12月24日

NSL:整数除算回路

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

メリークリスマス!

ということで、クリスマスバージョンのsfl2vlとともに、NSLによる除算回路のサンプルをお届けします。
Nは割られる数のビット数、Mは割る数のビット数を定義し、出力は、N-Mビットになります。

見れば見るほど平方根回路にそっくり、というか、平方根回路を少し変更しただけで作成しました。。この回路は乗算のコストが安いFPGA向けです。ASICで使う場合には、通常の引き戻し法か引き離し法などを使ってください。

#define N 8
#define M 4
declare div_%N%_%M% {
input A[N],B[M];
output F[N-M];
func_in div_do(A,B);
func_out div_done(F);
}
module div_%N%_%M% {
reg try[N-M];
wire mul_i1[N-M], mul_i2[M], mul_o[N];
func_self mul(mul_i1,mul_i2);
function mul {
mul_o = mul_i1*mul_i2;
}
function div_do seq {
reg bitpos[N-M];
for( {bitpos:=1 << ((N-M)-1); try:=0; } ; bitpos != 0 ; bitpos := bitpos >> 1) {
if(mul(try | bitpos,B).mul_o <= A) try := try | bitpos;
} div_done(try); } }

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についても大々的に取り上げてほしかった(ページ数の関係で無理かもしれないが。。)

2009年12月22日

メールによる迷惑行為

Filed under: Weblog — い~ぐる @ 10:26 PM

最近、私のメールアドレスと名前を用いて、勝手にメーリングリストに登録したり、アダルトサイトに登録したりするイタズラが増えている。

アダルトサイトは、gmailがスパム扱いしてくれるので、実害がある訳ではないが、スパムフォルダに間違って登録されているメールがないかチェックする時に、自分のフルネームを使ったメールがアダルトサイトから来ているのを見ると、びっくりする。

不正アクセス禁止法の言う不正アクセスではないにせよ、多大な迷惑行為なので、いたずら者を、プロバイダから契約解除をさせるように、情報収集しておこうと思っている。

メールマガジンのサイトには迷惑行為を報告し、登録経緯の詳細を開示要求しておこう。

2009年12月21日

クティオ購入

Filed under: Weblog — い~ぐる @ 7:13 PM

IIJのモバイルサービスで購入すると割引があるということで、Emoble端末とクティオを購入した。

クティオ 無線LANアクセスポイント(IEEE802.11b/g準拠)

IIJからの説明では、PPPで接続するようなことが書かれていて、まずクティオのファームウェアをアップデートしろと紙が入っていた。
その上で、クティオのページを見ると、新ファームウェアでは、PPPがサポートされたとあるので、IIJはPPPで接続するのかと。。。

ところが、結果として、PPPではなく、IPを指定しないと、NO CARRIERで接続できなかった。

接続してしまえば、安定しているので、これはこれで、便利。
速度的にも問題はなさそうなので、家のADSLはもう不要かもしれない。

ただ、これまで、家では、NASを共有してマシン間のファイルの交換をしていたので、クティオと、家のLANとの接続方法をなんとかしないといけない。もちろん、有線・無線両用のルータを買えばよかったのだけれど、値段的には倍以上になるので。。(安物買いの・・か?)

もちろん、(無線接続先を切り替えればいいだけなので)手間をかけて、お金をかけずに使うこともできる。

2009年12月19日

NSL:構造展開サポートの構文追加

Filed under: Weblog — い~ぐる @ 4:24 PM

下記の新構文をサポートしたベータ版を作成しました。
20091219版(当面、WindowsGUI版のみ作成)
新構文の目的は、バレルシフタや乗算などの構造を展開できるライブラリの作成用途です。
例によって、あちこち大幅にコードを変更しているので、安定版になるまでは、
しばらくかかるかもしれませんが、評価をしないことには、進まないので、
積極的に使ってみてください。

1: 整数変数 integerとintegerで回すfor文を導入(これは、構造展開となり、同一クロックでの動作になります)
2: 一時端子 variableを導入
端子と異なり、同じ変数を使いまわすことが可能。ただし、代入のたびに新しくインスタンスを生成
3: 端子への代入において、文法上のあいまいさがない場合、右辺に整数を許可
4: 2項演算で、ビット数が確定できる場合、2項目に整数を許可
5: if文の条件式が整数式からなる場合、評価時の条件値による構造展開とした

使用例:

module x {
integer i;
variable v[8];
output f[8];
v=0;
for(i=0;i<10;i++) v=v+i;
f = v;
}

この例では、あまり有効活用していませんが。。。

2009年12月10日

NSL:言語仕様拡張

Filed under: Weblog — い~ぐる @ 1:02 AM

2件の言語仕様の拡張を実施(20091209版より)。

1:条件付き式

if(条件) 真の時の値 else 偽の時の値

例:

 f=if(a>b) a else b;

2:リピート演算

リピート数 { 式 }

例:
  f = 8{0b1};

これら二つの拡張は、マクロでライブラリを整備するときに活躍できるはず。

2009年12月3日

Windows VISTA/7でsfl2vlが動かない件

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

どうやら、一緒にアーカイブに入れているDLLが悪さをしているようだ。
iphlpapi.dllというマイクロソフトのDLLなのだけれど、こいつが、VISTA/7との互換性がないらしい。(VISTA/7には標準で機能が提供される)

ということで、これらのOSの時には、iphalapi.dllをパッケージから削除したインストールをしたいのだけれど、選択的なコピーというのは、インストールオプションにあったかな。。。?

LiveCygwinも /bin/iphlpapi.dl を削除してください。

7もVISTAも使っていないので、これで完全な対策になるか、今ひとつ確証はないですが、おそらく大丈夫じゃないかと。。。

2009年11月28日

ポケコン PC-G850VSのUSB Serial (FT232RL) 接続図

Filed under: Weblog — い~ぐる @ 8:58 AM


秋月のモジュールが使えるという情報だけでは、作れない人がいそうなので、接続図を書いてみた。(回路図というほど大げさなものじゃないですね)

絵を描くのに、UNIX系のマシンでは、Tgifが使いやすいのだけれど、Windowsではなかなか使いやすいお絵描きソフトがない。(CygwinでTgif使ってもいいんだけれど。。)

ふと、MacOSXならTgifがコンパイルできるじゃないかと、試してみたらOK.

ただ、ALTキーが使えない?何か設定いるのかな。ショートカットの一部が使えないので不便だけれど、ソフトの使い勝手はこれがないと絵を描く気にならないほど便利。

追記: Xmodmapでメタキーの割当をすればよいというブログを見つけ、ALT問題は解決♪

2009年11月26日

NSL:メモリ、レジスタの初期値

Filed under: Weblog — い~ぐる @ 9:58 AM

メモリとレジスタの値は、通常の式と同じようにビット幅を合わせて行なっていたが、宣言文での初期化では、ビット幅は推定可能なので、整数値を入れられるようにした。

mem hoge[256][8] = {0,1,2,3,4,5};

などという宣言が可能。

20091126版より。

« Newer PostsOlder Posts »

Powered by WordPress