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

2010年1月30日

オーバートーン株式会社設立

Filed under: Weblog — い~ぐる @ 11:32 PM

関係者皆様のご尽力により、1月29日付けで、新しい会社を設立した。
設計エンジニアには、非人間的な部分で工数を取られることなく、創造的な能力を発揮してほしい、これまでの実力の何倍もの生産性を紡ぎ出してほしいという願いを込めて、会社名を決めた。

オーバートーン株式会社

を、よろしくお願いします。

設立直後で、体制はあまり整っていないけれど、会社が回るようにロケットダッシュで体制を整えていきましょう。

2010年1月28日

sfl2vlの SystemC生成コード変更

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

ビット連結はsc_int/sc_uintしかできないとか、色々な問題があり、先日からバタバタとしていたが、今朝になって、ベータリリース版における、基本的な1bit信号は sc_uint<1> に変更することにした。

ただし、クロックはboolでないとSystemCライブラリとリンクできないので、クロック、リセットのみboolとしておく。

過去のテストベンチも、これにあわせて変更要なので、注意が必要。

SystemCのユーザは少ないので、緊急性は低いから、慌ててやらなくてもいいのだけれど、気が付いたときに変更しておかないと忘れるので・・・

EDSF用のパッケージは変更前のものを入れておくことにします。
(日付でバージョンをつけているので、同一バージョンに見えますが・・)

今日・明日はEDSFair2010に出展

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

デモ・配布用のCD作成に最後までどたばたしたけれど、皆さん、お疲れ様でした。
今日明日が本番です。気合を入れて行きましょう。

EDSFair2010

2010年1月25日

C言語ポケットリファレンス

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

O’Reillyのポケットリファレンスは薄くて、携帯に便利なので、C言語を扱うすべての人にお勧めだと思う。

C Pocket Reference
というのは、組込み技術者(に限らないけれど)で、曖昧な記憶に頼って言語をとらえて、コンパイルエラーがなければOKと思っている人が散見されるから。
自分の記憶が曖昧だと感じたら、リファレンスを参照しましょう。

たちが悪いのは、自分は絶対正しいと間違ったことを信じている奴なんだが。。

自分ポータルサイトを作る

Filed under: Weblog — い~ぐる @ 12:34 AM

ホームページを5個、ブログを6個持っているが、自分でも把握しきれなくなってきたので、自分ポータルサイトを作り、一覧できるようにしてみた。

http://nshimizu.com/

過去、相互非リンクだからこそ書けることもあったのだけれど、カミングアウトの結果は・・・(まぁ、何とかなるさ)

2010年1月17日

はやぶさ帰還中

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

すごい、様々なトラブルを乗り越えて地球に帰れそうなところまで、やってきた。JAXAの皆様、お疲れさまです。

マイコミジャーナルの記事

2009年12月30日

NSL:整数乗算回路(単一クロック版)

Filed under: Weblog — い~ぐる @ 2:07 AM

整数変数とvariableによる構造展開の例題として、もう一つ、乗算回路を示します。
これは、大きなビット数の乗算において、実用に使うには向かないですが、ビット数が少ない時には、十分使えますし、記述はシンプルな筆算形なので、分かりやすいと思います。

#define N 8
#define M 4
// Copyright (c) IP ARCH, Inc. Naohiko Shimizu
// All rights reserved.
declare multiply_%N%_%M% {
input A[N], B[M];
output F[N+M];
func_in mult_do(A,B);
}
module multiply_%N%_%M% {
integer i;
variable pp[N+M], pa[N+M];
function mult_do {
pa={M{0b0},A};
pp=0;
for(i=0;i<M;i++) pp = if(B[i]) pp+(pa << i) else pp;
F = pp;
}
}

2009年12月27日

NSL:バレルシフタ

Filed under: Weblog — い~ぐる @ 9:04 PM

NSLの構造展開のfor文を用いたバレルシフタの例。
整数変数やvariableは、出現順順次評価を行なうことに注意。

// Copyright (c) IP ARCH, Inc. Naohiko Shimizu
// All rights reserved.
#define N 8
#define M 4
declare shift_%N%_%M% {
input A[N], B[M];
output F[N];
func_in shift_do(A,B);
}
module shift_%N%_%M% {
integer i,sv;
variable ps[N];
function shift_do {
ps=A;
sv=1;
for(i=0;i<M;i++) {
ps = if(B[i]) (ps << sv) else ps;
sv = sv << 1;
}
F = ps;
}
}

NSL:引き戻し法による除算回路

Filed under: Weblog — い~ぐる @ 12:17 AM

除算をするのに、乗算器を使うというのもあんまりなんで、減算器を用いた、引き戻し法による除算回路を作ってみました。
マクロによるパラメタライズはあまりデバッグしていないので、異なるビット数だとバグがあるかもしれませんが、そのときはご容赦。

動作には、sfl2vlのベータ版(20091226版)で加えた修正が必要(かもしれない)。

// Copyright (c) IP ARCH, Inc. Naohiko Shimizu
// All rights reserved.
#define N 8
#define M 4
declare divu_%N%_%M% {
input A[N],B[M];
output Q[N],R[M];
func_in divu_do(A,B);
func_out divu_done(Q,R);
func_out divu_error;
}
module divu_%N%_%M% {
reg QB[M], QQ[N+M];
wire sub_i1[N+1], sub_i2[N], minus;
func_self sub(sub_i1,sub_i2);
function sub {
wire sub_o[N+1];
sub_o = {sub_i1} - {0b0,sub_i2};
minus=sub_o[N];
}
function divu_do
if(B==M'b0) divu_error();
else seq {
reg bitcount[M];
for( {bitcount:=0; QB:=B; QQ:={M'b0,A};} ;
bitcount <N ; bitcount++) {
{
if(sub(QQ[N+M-1:N-M-1], {QB,(N-M)'b0}).minus) {
QQ := (QQ << 1) ;
}
else {
QQ := {(sub_o << 1)[N:N-M],(QQ[N-2:0]<<1)} |
(N+M)'b1;
}
}
}
divu_done(QQ[N-1:0],QQ[(N+M-1):N]);
}
}

2009年12月26日

NSL: 20091226版(17時アップデート)

Filed under: Weblog — い~ぐる @ 5:36 PM

バージョン番号を日付にしているけれど、一日に何度かアップデートすると、日付だけでは足りないですね。

と、それはともかく、ベータ版を200912226版にアップデートしました。
今回のアップデートは、Y君に指摘いただいた、レジスタ初期化の問題のほか、制御端子を用いて、評価式の中で結果を参照するときの問題を対策しました。

評価式の中で制御端子を起動した場合、場合によっては、処理系都合で、複数回の評価が発生します。その都度、制御端子の引数に対して、複数回数の代入が発生してしまい、そのことが原因で、競合検出回路によって、ハザードとなる件を対策しました。

なお、1箇所の制御端子が、処理系都合によって複数回評価される場合の対策なので、複数箇所で制御端子を起動している論理バグの回避策ではありません。

Older Posts »

Powered by WordPress