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

2009年9月19日

LiveCygwin-edaにサンプル追加

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


SYNディレクトリに、Allianceを用いるレイアウト設計のサンプルを追加した。

cd SYN
make chip.cif

で、チップレイアウトを作成し、CIFファイルを作る。
XmingなどのXサーバをインストールしてあれば、

make dreal

で、グラフィカルにレイアウト表示をしてくれる。
(デフォルトではアウトラインだけだが、Tool->Flattenで詳細まで表示)

2009年9月18日

Pentaxから新デジ一登場

今使っているデジ一は、Pentaxの ist*DL というもの。
ist*Dから始まるPentaxのデジ一の系列、実は、あまりカタログ比較ではよく分からない優れた点がある。
それは、旧式レンズを用いて、TTL測光ができる。というものだ。
一眼レフの場合、レンズを通して(Through The Lens)測光するのが常識なのだけれど、
最近のデジ一では、この常識が通じないケースが圧倒的に多い。
詳細は技術の話になってしまうから省くけれど、昔の名レンズを使おうと思っても、
絞りが調整できないデジ一ばかりなのだ。そんな中で、Pentaxは、一段ステップは必要でも
必ずTTL測光が可能な手段を用意してきてくれた。

http://journal.mycom.co.jp/news/2009/09/17/034/index.html


今回のK-xでは、まだユーザマニュアルがサイトにアップロードされていないけれど、
対応レンズの表を見る限り、今までと同様に、ユーザの資産ならびに遊びに十分対応してくれそうでうれしい。
ここからは、少し専門的な話。
デジ一は、最近では、レンズ内のマイコンからレンズとカメラの接続接点を通して
情報をカメラに送ることで、レンズの制御をしている。昔のレンズには当然ながらこんなものはない。
本当に大昔のレンズは、絞りを絞ると、ファインダーが暗くなって、ピントが合わせられなかったが、
一眼レフが普及し始めたころに、通常は絞り開放で、シャッターを押すときだけ、設定した絞りに
絞り込む方式が主流になった。
この設定した絞りに絞り込むというのは、レバーを機械的に押すことで実現しているのだけれど、
最近のデジ一には、このレバーを押す機構がないものが多く、シャッターを押しても絞れないので、
絞り開放でしか撮影できないのだ。
Pentaxのデジ一は、レバーを押す機構を備えていて、昔のレンズでも絞込みができる。
ただし、レンズの情報が入らないので、この部分は、マニュアル露出モード時だけ動作するように
制限がかけられている。(しかも、一度、絞りリング利用の設定をメニューからしておかなくてはならない)
本当は、メニューの設定で、Av優先モードでも絞込みをしてくれるとうれしいのだけれど、
そこまでは、期待しすぎなのだろう。
Mモードでは、カメラはあらかじめ設定した絞りとシャッター速度で露出するのだけれど、
Pentaxのデジ一では、このモードで、(機種によって名称が違うけれど)Avボタンを押すと、
一旦絞り込んで露出測定し、その露出にあわせてシャッター速度を決めてくれる。
他社のデジ一では、すべて自前で露出・シャッター速度を決めなくてはならないし、
露出を設定しても、自動絞込みができなかったりするしで、旧式レンズは、装着できても
実質実用にはならない。(常に絞り開放でしか使わない人は別だが・・)
ということで、本当にカメラ・レンズ好きならPentaxを使えということだ(笑)
もちろん、「自分は最新のレンズにしか興味がない」のであれば、別だけれど・・

2009年9月17日

母が大学卒業

Filed under: 日記 — タグ: — い~ぐる @ 5:28 PM

母からメールが来て、放送大学の単位が全部取得できたので、卒業できるということだ。卒業式は27日。
一度卒業しているけれど、別の学科を取り直し、二つの学士を10年がかりで取得。
このところ文字も読みづらく、記憶力も低下して苦しんでいたらしいけれど、無事卒業できて良かったね♪
あ、卒業祝いを贈らないといけないか・・・??

モジュール共通動作記述の緩和

Filed under: Weblog — い~ぐる @ 2:53 PM

モジュール共通動作のみのモジュールにおいて、複数の動作を並列に記述するときに、もっとシンプルに書けた方がうれしいので、下記のような記法を許すことにした。

  • NSL 表記
    module mm {
    input a;
    output f;
    reg r;
    r:=a;
    f=r;
    }
    
  • 生成されたVerilog
    module mm ( p_reset , m_clock , f , a );
    input p_reset, m_clock;
    output f;
    input a;
    reg r;
    assign  f = r;
    always @(posedge m_clock)
    begin
    r <= a;
    end endmodule

i8086互換CPU

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

O氏のCPUパッケージもI氏のPDP11と同じく、インスタンスの引数で端子のバインドをしているので、端子順序の変更に伴い、変更が必要だった。
(これは、彼らが私が書いたveriskelというシミュレーションスケルトンジェネレータを使っているからなんで、遠因は私自身にある)

が、確認すると、それだけではなく、端子が見つからないというエラーがでる?

SFLでは、declareとmoduleは別々に記述可能だったが、今回、declareの端子記述を優先としたことで、O氏の記述で、二つがアンマッチになっている部分でエラー。これは、記述側を変更。

自分のインベーダーパッケージ(midway)を確認すると、クロック端子の二重定義が・・

interface文で明示的にクロック・リセットを記述して、本体のmodule記述もある場合、こうなる。今回は、BRAMに推定させるRAMの記述で発生。これは、sfl2vl側を修正することにする。interface文を持つdeclare宣言されているモジュールでは、クロック・リセット端子を自動ではインスタンス生成しないことにする。
もちろん、内部回路のクロック・リセット信号はデフォルトのものを使うので、勝手な名前をつけるわけにはいかないが・・

この副作用(?)によって、組み合わせ回路だけからなるモジュールでは、

  • 下記の記述によって、
    declare BUFG interface {
    input I;
    output O;
    }
    module BUFG {
    O = I;
    }
    

  • 次のような出力が得られる。
    module BUFG ( I , O );
    input I;
    output O;
    assign  O = I;
    endmodule
    

20090917版からの提供:このバージョンでは、NSL状態遷移の新文法時({ }内の状態)のバグをあわせて対策

2009年9月16日

Linuxのファイルディスクリプタ

Filed under: Weblog — い~ぐる @ 5:16 AM

ubuntuで、sfl2vlの動作確認中、ライセンスファイルを用意しているにも関わらず、ライン数オーバーのエラーが出た。

straceで解析すると、どうやら、openしたファイルをクロースしても、ファイルディスクリプタが解放されていない気がする。

ファイルディスクリプタ番号がクロース後も増え続け、too many open fileでオープンが失敗する。手元の他のシステムでは問題ないので、AMD64上でia32プログラムを実行したときだけ?

今日はマシンに触れないので、確認できないが、考えてみれば、x86_64用のsfl2vlも用意していたのであった。これと動作を比較すれば、もう少し解明できそうだ。

う~む・・・

とりあえず、商用ライセンス時には、毎行ごとのライセンスファイル確認を停止し、回避するが、クロースしているのに、too many open fileってあんまりな実装だよな。

それとも、細かくopen/closeはするなってこと?

PDP11互換CPU

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


このところ、大規模なコード変更中の、sfl2vlのデバグのため、昔の大き目のパッケージで動作確認中。

今日確認していた、PDP11互換CPUは、2002年にI氏作成のもの。数千行になる大規模パッケージで、過去との互換性チェックにちょうどよい。

といっても、さくっと試すと当然のようにハザードストップであった。

まずは、出力端子のデータ候補にハイインピーダンスがあることのチェックルーチンで、なぜか文字列検索が停止しない不具合。停止しなければ暴走尾するかというと、システム中のどこかにZの文字を見つけるとそこで停止するので、特定の場合にのみ出力端子を3ステート対応に変更してしまう。このコアは、while(*c) という典型的な文字列検索であり、普通に動きそうなのに、動かない理由は不明だが、文字列長は既知だし、急ぎの修正のため、for文に変更。

これを対策しても、まだどこかでハザードになる?

追いかけていくと、実は、PDP11互換CPUのシミュレーションパッケージは、Verilogとのつなぎのインスタンス生成に、名前なしの引数形式の端子接続をしていて、今回、端子順序を変更したことにより、接続が間違ってしまっていた。
これは、名前指定の接続にPDP11パッケージ側を修正。ついでに、ZIP形式のアーカアイブにした上で、IP ARCHからも配布することにした。(実行には、non-profitライセンスが必須)

まだシミュレーション実行中だが、とりあえず、UNIXを擬似ハードディスクからコールドブートして、
login:
のメッセージがでるところまで来たので、動作としては完璧だろう。

20090915版は、もう少し確認したら、正式リリース版にする予定。

2009年9月15日

2命令同時実行のSN/X

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

ずいぶん前にブログには掲載し、パルテノン講習会では受講者に配布していたが、今年は講習会がないことと、HPに掲載を忘れていたので、LiveCygwin-edaのついでに、HP(http://www.ip-arch.jp)に掲載。

2命令同時実行といっても、1日でさくっと作ったCPUなので、かなりサボった実装になっているから、大きな期待は禁物。そもそも、命令がSN/Xだし 🙂

実装の解説は過去のブログを snxsで検索してほしい。

LiveCygwin-edaにngspiceを入れる

Filed under: Weblog — い~ぐる @ 10:13 AM


お手軽インストールのLiveCygwin-edaにSpice互換シミュレータを入れたいと思っていたが、結果として、ngspiceを入れることにした。
本当は、レイアウトソフトのmagicや波形エディタ・シミュレータのirsimも入れたかったのだけれど、バイナリ配布のものは、なぜかうまくCygwin下で動かず、断念。代わりに、GNU Electricを入れておく。 サーバー容量不足で、ElectricとArgoUMLのパッケージを入れるのは断念した。

2009年9月14日

sfl2vl: 状態定義

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

state_name文で状態を定義するが、複数の文に分かれているときに、状態割り当てがばらばらになるのを防ぐ対策をした。
再帰下降で文法解析する解析木を記述順に再構成する必要があるため、実行時間には多少のオーバヘッドがかかるが、生成結果に統一感があった方が好ましい。

ついでに、入出力端子の順序もできるだけ、記述順にそろえた(はず)。

20090914で対策。

« Newer PostsOlder Posts »

Powered by WordPress