組み込まれたエンジニア

我輩は石である。名前はまだ無い。

gccのpdp11ターゲット

2013-11-16 22:54:29 | Weblog

gcc-3.2のpdp11ターゲットは、パッチを作成して、GNUに送ったのですが、最近のgccではpdp11が標準で入っているという記事をどこかで見かけ、私の作業はいらないかと安心していました。

ところが、昨日、FPGA版のpdp11互換チップをDE2に移植している人から、渡した機械語プログラムの動作がおかしいので、論理かツールのどちらかが問題ではないかと問い合わせがあって、シミュレーション環境を作成して確認したところ、私の問題ではなく、GNUのコンパイラのバグでした。

同じプログラムを私のパッチ入りのgcc-3.2でコンパイルすれば問題なく正しいコードが出るので、GNU向けに誰かが不良を埋め込んでいます。原因は分かっていますが、4.X系のコンパイラのソースはチェックしていないのと、私のパッチを使えば、3.2にはなっても正しいコードが出来るので、GNUにパッチを送るにしても、あまりモチベーションは上がらないですね。

pdp11用のコンパイラは、誰も使っていないことが良く分かりますね :-)


OSEK(ToppersATK1) on Linux/Cygwin + COM/CCCA

2012-12-31 09:42:51 | Linux

ToppersATK1のCygwin版を修正し、Linuxで動作させ、かつ、コンパイラバージョン・オプティマイズ依存を低減する変更をしたものに、OSEK通信規格COM/CCCAを追加しました。

IP-ARCHのホームページにダウンロードパッケージを置きました。

http://www.ip-arch.jp/OSEK.tar.bz2

Linuxで動作させるときにはWINEがインストールされている必要があります。

Makefileは、nxtOSEKを参考に、多少手を加えてあります。

OSEK/sampleディレクトリの下に、例題を置いてありますので、ご利用ください。


NSLCORE 20120915版

2012-09-20 21:32:16 | Weblog

久々の更新です。

新規の機能は、下記の通り

  1. SystemC生成における新オプション
    1. -sc_ext_cpp : エクステンションを.cppにします
    2. -sc_split_header : ヘッダファイルを別ファイルとして生成します
    3. -sc_bool : 1ビット端子をboolとして生成します
  2. レジスタアトリビュート新設 レジスタ個別にクロック・リセット信号などを設定できるようにしました
    reg .attribute(.clock=clockname .reset=resetname)  someregister[8];
    のように .attribute()内に記述します。スキュー保証はユーザ責任となります
  3. 入出力端子宣言における範囲指定形式導入
    output addr[15:2];
    のように、端子の添え字のスタートを指定可能にしました。上記の例の場合、addrは14ビット信号になります。

ダウンロードはオーバートーンのバイナリ配布ページより

マニュアルに記載していない拡張のため、当面experimental扱いとしますが、問題があればご連絡ください。

 


FPGAでCPUを作ろう

2012-03-23 19:14:23 | Weblog

岸本さんの電子書籍がリリースされました。

細かな部分に彼なりの知見が詰まっていて面白いです。

書籍のご成功をお祈りします。

 


ETロボコン向け開発環境

2012-03-16 09:52:47 | Weblog

nxtOSEK2.17対応のLiveCygwinパッケージを作成しました。

LiveCygwinは、ダウンロード・展開するだけで、インストール作業なしでCygwinの動作環境を得られるので、ユーザ権限が制限されている環境でも利用可能です。

(もちろん、LEGOのデバイスドライバは管理者権限でないとインストールできないので、LiveCygwinだけで、全てが済むわけではありません)

 

LiveCygwinをお使いの方は、2つのファイルをダウンロードして、

usr/arch

のフォルダにそのまま入れてください。

次回の起動時に、自動的に展開し、利用可能になります。

また、LiveCygwinをお使いでない方は、LiveCygwin.zipをダウンロード、展開し、その中の、上記フォルダに2つのファイルを入れてください。

次回の起動時に、ホームディレクトリに

nxtOSEK217

というディレクトリが作成されているので、その中の

sample_c/helloworld

に移動し、

make all

として、バイナリが作成できることを確認してください。

 


サンプリング定理とCDからDSDへのアップコンバート

2012-01-04 09:06:52 | Weblog

CDをKORGのAudioGateでDSDにアップコンバートすると音質が向上するというので前から気になっていますけれど、DSDを再生できるプレーヤーは限られているので、まずは、原理から考察してみます。

サンプリング定理で、元信号に回帰するためには、サンプルされた 信号を三角関数で畳み込むことが必須です。
ところが、多くのDA変換回路は単にステップ変換するだけなので 、元信号には回帰しません。
 

このことを知らないエンジニアも結構いるような気がします(習ったはずなので、忘れているだけか、単に無視しているのか・・)


添付画像の緑のような細かなサンプリングステップを想起するとローパスフィルタだけで元信号に近くなる気がするけれど、同様にサンプリング定理を満たしてる標本信号であっても、青の線をローパスフィルタを通しても元信号になりません。(特にエンベローブに低周波成分のノイズが乗るように見えます)

三角関数で畳み込むというのは、デジタル回路には簡単ではないので、信号処理を大規模に前処理して、オーバーサンプリングするか、オーバーサンプリングADPCM(DSD)にすることで、緑の線に近づけることで、元信号に近い音が出せるようになります。

CDをAudioGateでDSDに変換して再生すると元より良くなるというのは、こんな原理ではないかな?もちろん、同じ原理で三角関数畳み込みで元信号に近づけたオーバーサンプリングPCMにしても同じような傾向が得られるはずなので、再生可能機器が限られるDSDだけでなく、DVDAudioでも、いいような気もします。(もっとも、こちらも限られてますね)

本記事は、facebookのウォールに投稿した内容の転載です。

 

 

 


ReVIEW再び

2012-01-02 00:05:43 | Weblog

明けましておめでとうございます。

今年もよろしくお願いします。

 

一度はあきらめかけたReVIEWですが、帰省して時間があるので、もう一度設定をし直してみました。

結果として、最新版をgitでCygwinにダウンロード・展開して、ほぼそのまま動作しました。先日動作しなかった状況をきちんとメモにしていなかったので、何が悪かったのかは不明ですが、PDFもepubも普通に作成できるようになりました。

少し手間取ったのが、dvipdfmxの日本語フォントの設定です。w32texのデフォルトでは、dvipdfmxが小塚フォントを使うようになっていて、このフォントを持たない私の環境では、まともにPDFが出来ませんでしたが、

w32tex/share/texmf/fonts/map/dvipdfmx/base/cid-x.map

を編集し、PSのデフォルトフォントに変更することで、無事PDFが完成です。

ReVIEWの良いところは、TeXと被るのですが、もう少しラフにお任せレイアウトにできることです。細かなレイアウトに凝りたい場合には、TeXを用いた方がよいと思いますが、TeXからEPUBに簡単に出力できるようにならないと、文書主体の電子書籍作成にTeXはお勧めしにくいです。

ReVIEWもTeXも、基本はテキストファイルなので、CVSやsubversionなどのバージョンコントロールとの相性も非常に良いのも助かります。

ReVIEWの設定と併せて60ページほどのドキュメントを作成して年末年始を過ごしています。

 


pdp11互換機+UNIX

2011-11-30 19:26:06 | Weblog

以前、飯田君がSFLで記述した環境をNSLに移植しました。

機械的に記述を変換しただけなので、論理は変えていません。

変更中、気がついたのですが、SFLでは、常に動作して、終わらないステージを多用する傾向があるようです。

理由を考えると、どうやら、状態遷移マシンを作るには、ステージを使う必要があることからのようです。NSLでは、ブロックは状態を持つことができるので、リセット時に起動して終了しないステージは廃止し、ブロックの状態遷移に変更しました。

NSLの非商用ライセンスでコンパイルができるように、Makefileの構成を少し変更しています。

 

例によって、IP-ARCHのホームページからダウンロードできます。

 


MidwayゲームプラットフォームをNSLに変更

2011-11-22 06:38:34 | Weblog

以前SFLで書いていた(スペースインベーダーのゲーム基板として有名な)MidwayゲームプラットフォームをNSLに書き直しました

といっても、SFLをNSL化するのは、簡単なので、書き直しはあっという間ですが、Verilatorのテストベクトルを流しても、ゲーム画面になっていないので、??と思ったら、割込みタイミングをFPGA用(100Hz)に設定したままでした。

シミュレーション用に割込み頻度を上げる対策をしてもいいのですが、FPGAのタイミングのまま、シミュレーションサイクルを伸ばし、5千万クロックまわすことにしました。ここまでまわすと、インベーダーたちが画面に出てきますが、まだ弾は出ていません。サイトを動かしながら、9千万クロックまでシミュレーションをまわすと、弾が表示され、インベーダーも1機破壊してました。

次は、pdp11互換機のコードをNSL化しようと思っていますが、非商用ライセンスで動作するように、記述を分割したいので、少し暇な時間が必要そうです。

 


ReVIEW

2011-11-10 18:59:05 | Weblog

電子書籍のEPUBフォーマットを簡単に作る方法として、ReVIEWに注目中ですが、自分の環境ではまともなものが出来ません。そもそもサンプルコード自体がbyte sequence errorとなってコンパイルに失敗するのですが、この原因はrubyの文字コードの扱い変更にあるようで、ruby-1.9系では動かない気がします。デフォルト文字コードを明示的に指定するように修正すると、一見、動いたように見えるのですが、出来上がったファイルは壊れています。

Debianのマシンでは動いたのですが、モバイル環境で作れないと、結局利用しなくなるのは見えているので、ArchLinuxのrubyをダウングレードするか、ReVIEWのバージョンアップを待つしかないかな?

言語処理系が、過去の互換性を崩すような変更をする場合、かなり仕様作成に注意するか、マイグレーションの手段を用意しておかなくてはいけないと思うのですが、スクリプト系の言語は平気で連続性のない変更を加えるのでしょうか?