Archive for the ‘未分類’ Category

金曜日, 1月 19th, 2024

CPUなどを買うと周辺機能LSIも必要で、規格表はお店でパラパラ見るより手元にあったほうが妄想がはかどるので、そのうち買うことになったわけですが、その中にこれでもかとばかりに特徴が並べ立てられていてちょっと気になるLSIがありました。1年半ほど前ちょっと思い出したときに、たまたま取説を入手することができたので、また調べてみると面倒な部分がコンパニオンチップ化されているようなので1)2)3)とりあえず買ってみたもの

日立HD63484(Advanced CRT Controller)

日本ではパソコンに標準搭載された例はないようですが、 カーナビ4)や産業用に採用されて売れたとのこと、 海外(IBM PC)では画面表示系はユーザー側で選べたためか、パソコンCAD用に採用例5)があったようです。

マイクロコード動作の描画プロセッサーと入出力プロセッサーとメモリー管理プロセッサーが協調して動く構造となっており、トランジスター数11万といわれています。

グラフィックに関しては昔のパソコンBASICにあった図形描画命令文に近い直線、円、縁故、楕円、楕円弧の描画機能やメモリー間転送機能を持ち、それぞれ演算モードや線のパターンが指定でき、白黒(画素当たり1ビット)から65536色(画素当たり16ビット)まで表示用メモリーの回路構成を変えずに取り扱えて、色数の設定に関係なく同じ速度で描画処理できる、閉領域内のパターン塗り(2値16X16ドットあるいは65536色4×4ドット)もほぼ自動ということで出現当時相当注目されていたようですが、高機能だっただけに初期版は不具合がいくつも残っていたようです。最大動作周波数は4MHz,6MHz,8MHz,9.8MHzがあったようです。

メモリーに入っている画像を所定の速さで一画素分ずつ読みだして映像信号として出力する部分の回路は、原理は単純ですが、ロジックIC数十個以上の煩雑さになるので、1986年ごろには画面制御用のHD63485(GMIC:DRAM制御)および63486(GVAC:映像信号作成)3)、さらに後には640×400(または640×480)の16色表示程度までに機能を絞り、さらにスタティックカラムモードDRAMの高速連続読み出し機能を活用して部品数を減らすことを狙ったようなHD63487(MIVAC)というコンパニオンチップも出ました。

前回のV40の装置につなげて動かすのですが、もともと信号のタイミングが違うモトローラ68000の周辺ICとして企画されているので、インテル8086系で使うにはちょっと工夫が必要です。その工夫のところはEEPLDでやってるので、中身が見えません。当初からなんか動作が怪しく、V40側のリセット回路を改良して、ようやく曲りなりに動いて初期設定と対角線を引くコマンドが実行できたけど画面に周期的なゴミがあるとかアドレスデコーダーの出力を受けているEEPLDの入力専用端子がたまにHに張り付いてしまうとかでちょこちょこいじったところから放置されています。 ソケットの接触がちょっと怪しいとか、アース端子を浮かせざるを得なかった温調はんだごてが漏電気味の状態でDRAMのはんだ付けしたので傷んでしまってないかなど思い当たるところもあります。

ACRTCボード(HD63484+HD63487+HM514402+Bt450)
回路図
現状の動作(640x480x4bpp)映像にブロック状のごみが出る他
タイミングがおかしいなど

映像信号のタイミングはVGAにせよVESAにせよACRTCの仕様ではうまく設定できないので、モニター(Hyundai X93W系) の心の広さに頼っています。自動調整だと水平位置がずれるので手動調整が必要でした。

V40とつながっている状態

ついででV40の方の電源を強化できるように電源をDCジャックに変えたときに逆接続で通電してこのボードも巻き込まれてしまい、V40を直さないとデバッグもできなくなってしまいました。

2003年当時は模型のモーメントリミッター画面にNEC PC-9801シリーズに使用されていて手元に資料があったGDC(NEC μPD7220)を使うフルグラフィックのものを考えていましたが、実現しないうちにシリアルバス接続のカラードットマトリックスLCDがホビーユースでも普及してしまい、作る意味が割と薄れてしまいました。

1)淺野 春生:Electrelic 電子的遺物の世界へようこそ Hitachi HD63484 ACRTC
HD63484と各種資料のコレクションが紹介されています。https://electrelic.com/electrelic/node/9
(最終閲覧2024/02/11)

2)try:try’s page 半導体コレクション展示会場 ACRTC
ACRTCと周辺チップのコレクションが紹介されています。http://www.st.rim.or.jp/~nkomatsu/crtif/HD63484.html
(最終閲覧2024/02/11)

3)日立評論1987年7月号
HD63485 GMICやHD63486 GVACの紹介記事があります。

4)日本半導体歴史館 集積回路 1980年代:カラーグラフィックス表示市場の拡大
ACRTCの出てきた時代背景とACRTCの概要が紹介されています。
https://www.shmj.or.jp/museum2010/exhibi759.html
(最終閲覧2024/02/11)

5)Peddie, Jon:Chasing Pixels GPU History: Hitachi ARTC HD63484
ACRTCの概要と外国での利用について紹介されています。
https://www.computer.org/publications/tech-news/chasing-pixels/gpu-history-hitachi-artc-hd63484
(最終閲覧2024/02/11)

金曜日, 1月 19th, 2024

gapuxjp.infoとcranesjp.infoのドメイン名を取って20年、なんかでかいクレーンの模型でもできてたらよかったですが、その代わりに書きかけで1年以上放置されていたものを公開します。

1995年の春ごろだったか夏だったかに空港通りに電子パーツ屋さんがあるのを見つけてそこで買ったNECのCPUだというLSI、

V40 (μPD70 2 08)

買って一度80286搭載パソコンの286用ソケットにつけてみて発熱させちゃったものだけど、気になったまま27年、たまたま通販でおなじ型番の物を手に入れることができてさらにアプリケーションノートに近い資料*も手に入ったので、2022年の初夏にいざつくってみたもの、

NECの独自にIntel 80186とオブジェクトレベル互換の上に独自命令を追加したCPUである、μPD70116(愛称V30)を中心に、データ信号線を16本から8本に省略したμPD70108(V20)、組み込み装置が作りやすいようにV30とクロック発生器、クロック分周器、割り込みコントローラー、DRAMリフレッシュ支援回路、タイマー・カウンター、シリアルポート、ダイレクトメモリーアクセスコントローラーを統合したμPD70216(V50)、V20に対して同様のデバイスを統合したμPD70208(V40)、CPU部分の内部回路を諸事情で改良したものや、クロック周波数を下げれば3V電源でも動作出来るもの(代表としてV30HL)など幾種類か出ていたようですね。V50HLも3.3Vで遊ぼうと思って当時物をいくつか入手してます。

当時特に何も考えず手元に複数買っておいた256KB容量の30ピンSIMMがあったので、これを使うことを目標に装置を作りました。DRAMの読み書き選択には、書き込み合図の信号(WE#)や読み出し合図の信号(OE#)を目当てのモジュールに与えてやるか、アドレス指示の合図信号(RAS#、CAS#の順に)を読み書きしたいものに与えるなどありますが、SIMM内でOE#が操作できないように結線されていることに気づいて、データを読み書きの制御をデータ線とWE#の切り替えをする方式でDRAMコントローラーを自作してしまったので、配線がやたらに増えてしまいました。動作的には目当てのモジュールにだけ RAS#とCAS#を 与えれば、他はすべて並列つなぎで済んだはずですが。回路図は自分が分かって手入れできる、グラフィカルな部品表程度の物しかなく、ある程度まともに動くようになった時点だとこんな感じってところです。

中央がDRAMコントローラー
右よりの3枚搭載された背の低い基板がSIMM
回路全図(LEDボードなし)

メモリーはV40が読み書きできる1MB分の空間すべて搭載でき、SIMMを4枚装着すれば最下位から896KBまでがRAM、最上位128KBがROMということになっています。最上位のSIMMモジュールの上半分128KBはROMと重複するのでROMに制御信号が行くようになっています。追加回路によってROMの中身を重複するRAMの部分にコピーしてしまい、以後ROMを使わないようにする手もありますが、デバッグ用ならともかく新しめの ROMの読み出しは十分に高速なので高速化としては意味がありません。

ROMは最初適当なEEPROMを使っていましたが、抜き差しが面倒くさいので、SRAMをベースにしてパソコンからシリアル接続でいつでも内容が書き換えられる装置「ROMエミュレーター」を作りました。実情としてはV40側からの書き込み制御信号線が中で生かしてあるので、パソコンからとV40からと同時に読み書きができない不完全なデュアルポートRAMという形になっています。RAMには安かった高速SRAM HM678127(128k*8)を使いましたが、この型のRAMは発表当時の技術でひたすら速いことを狙ったためか、スタンバイでも100mA近い電流で動き、バッテリーバックアップは一切考慮されていないような仕様のため、バックアップはしません。すべての電源を切ったらプログラムをパソコンから送り込んでやらねば使えません。アクセスタイム12nsというのも無駄に早いだけです。

ROMエミュレーター(不完全デュアルポートRAM)
ROMエミュレーター回路図

ROMエミュレーター自体は制御にRaspberry Pi Pico使ったのが今風なくらいで、汎用入出力が25本では128kBのRAMを操作するには信号線が足りないのでアドレス信号をD-ラッチで補ったとか、データ線には5Vトレラント入力のバストランシーバーを入れた程度で、プログラムも万年作りかけでこれといった工夫もなくとりあえず16進テキスト受け付けるとか、Intel HEXフォーマットのパーサー作ってHEXファイルを受け付けるとか、エミュレーターの全領域読み出しできるとかそれくらいで、USB CDCインターフェースのバッファーリングの問題なのか1文字エコーバックが期待したように動いてないのもそのままままです。

プログラミングは、とりあえず8086用アブソリュートクロスアセンブラーuASMを使い、生成されたオブジェクトをIntel HEX形式に変換してROM化するか、ROMエミュレーターに転送して走らせます。

といって記事にしようと思っていたら、追加のボードを作ってデバッグ中に電源をちょっとどうにかしようと思って、5V2AのACアダプター直結からDCジャック接続に変えた際に逆接続で通電してしまい、冒頭のV40個体とSIMMのいくつかはだめになってしまったようです。2022年に新品のV40を複数買っていたので復活させることはできそうですが。

*トランジスタ技術1988年4月号

木曜日, 10月 12th, 2023

Image

しばらく前にというか前回長々と前置きをして取り上げた、MCS-BASIC-52うごかしてみたやつ、たまたま当時物「P8052AH-BASIC」を手に入れることができました。

内蔵ROMに入っていたBASICのコードなどは公開されているし、今でも「8052AH」相当のデバイスはまだ手に入るし、その中には 特別な書込器がいらないのもあるので、今時そう簡単には手に入らなくなってしまった当時物を使って新しく何かを作る意義はあまりなさそうです。

土曜日, 1月 21st, 2023

1995年頃に古本屋で見かけた、雑誌「エレクトロニクスライフ」の 1990年ごろの 特集記事で知ってずっと気になっていたもの、本誌買って帰った覚えがあるけど見つからないので物の話から先に

1970年代末ごろIntelには自動化制御向けのコンピューターとして「 8051」を代表とした「MCS-51」というプロセッサーファミリーがあり、8051では、プロセッサーとプログラム用の数KBのROMと若干量のRAMといくつかの周辺回路が一つにまとめてありました。2023年1月現在でも、高速化されたりRAMや様々な周辺回路が追加された、バイナリーコード互換品が今でも量産されて活躍しているようです。1980年代頭には、マイクロプロセッサー上で動くBASICインタープリターが登場して、簡易オペレーティングシステム的な役割も持っていたようですが、8051をもとにROMやRAMの容量を増やした8052のROMに、専用の実数型BASICインタープリター「MCS-BASIC-52」が書き込まれた「8052AH-BASIC」というICが売り出され、国内雑誌でもいくつか特集が組まれたことがあったようです。 いまどきの32ビットマイクロコントローラー向けでMicroPythonやCircuitPythonといった組み込みPythonにつながっているREPLの先祖みたいなものでしょうか。後年BASICのバージョン1.1がパブリックドメインソフトウェアーとして公開され、主に欧米の有志の手により近年まで改良されて行って最新はV1.3系まで進化しています。8052の方もプログラムROMをフラッシュメモリーに改めたものやさらにオリジナルのブートローダーでプログラムの書き換えができるものがいくつかあるようです。

8052AH-BASICは一度扱ってみたかったものですが、初めて知った1995年ごろならまだともかく2022年5月下旬時点で現物はまず入手できないようだったので、代替品として まず中国製のMCS-51互換マイコンのSTC STC89C52RC-POQFP44-*-J9Cで、後日 沁恒 CH559 で動かしてみることにしました。

STCの方はUSBインターフェース付きのデモボードから線を引き出して、BASICプログラムや変数類の格納に必要な外付けRAMに256k×8bit 高速SRAM(IDT71256)を、BASICプログラムやデータの保存用に使うために64k×8bit EEPROM(AT28C64B)を接続して、BASICプログラムを保存できるような構成になっています。RAMはたまたま高速型のが手に入っただけなのでタイミングが問題なければ普通のでいいと思います。 はんだ付けだと寝ながら配線できないので、基板裏面にピンヘッダーをたてて、ワイヤーラッピングで配線してみました。

メモリーはプログラム用( PMEM )が内蔵ROMと外付けの両方合わせて最大64KB、データ用が内蔵RAM(IRAM)256Bに加えて別管理の外付け(XRAM)が最大64KB、追加の周辺デバイスとのやり取りは、汎用入出力を切り替えて必要な信号を作るよりも、外付けメモリーを使うときの回路を作って、外付けメモリーとして管理されているところからどこかを間借りして使う感じでしょう。ここで使ったSTC-…-J9Cはプログラムメモリー選択信号PSEN#が元のMCS-51のようには動かないようで、XRAMの内容をPMEMの物のように見せてプログラムとデータを混載させる方法はできませんでした。また、XRAMに配置したEEPROMへの書き込みはV1.1では外付けメモリーへの読み書き関数XBYでできることは確認しましたが、EEPROM内部バッファーを利用した複数バイトの一括書き込をさせるには、命令の実行処理の都合上自分で書き込み制御線を操作できるようなハードウェアーの追加が要りそうです。また、PROG命令によるBASICプログラムリストのEEPROMへの一括書き込みは、EEPROM側の「書き込み中」の呈示方法BASIC側の想定と合わないのでV1.1では書き込み不可能、V1.3では問題なく書き込みができました。

Image
Image

CH559のほうはUSBインターフェースがついているので、BASICを改造すれば単体で使えそうですが、BASIC側の改造はせず、UART0の信号をCH340を使ったUSB-UARTブリッジモジュール(秋月電子通商: K-14745 )を介してパソコンと通信するようにしてあります。

Image

CH559には 内蔵XRAM(内蔵 eXternal RAM )として6KB用意してあり 、BASIC-52の動作要件を十分満たしているため、特にメモリー関係の外付けはしなくても動きました。 内蔵 eXternal RAM とはちょっとおかしな表現ですが、もともと8051には若干量のRAMが備え付けられていて、それで済むなら単体で使えるもので、 MCS-51をもとにしたワンチップマイコンのなかには、若干の回路とともに外付けすることになっていた分のRAMまで一緒に載せてあったりするのでこう書くことにしておきました。

CH559へのBASICの書き込みは本体側のUSB接続からおこなうことになります。Arduinoツールチェーンを使わないなら純正の書き込みツールが使えるようですが、Arduinoで使うにはちょっと特別のデバイスドライバー差し替える必要があり、うちの環境ではドライバー差し替え後は純正のプログラマーが使えなくなってしまったので、Arduinoで使用されているCH55Xduinoの書き込みツールを別に見つけてかきこむことになりました。筆者はよほど必要がない限りArduinoを使わないのでちょっと面倒くさい手順になってしまいました。

いざ動かしてみると、通信速度をいったん希望の4倍にして「スペース」キーを押して通信速度を認識させ、通信速度を戻すとうまくいくようでした。 Teratermからの場合いったん通信速度115200bpsに設定してスペ―スキーを押してスタートさせてみて、そのまま通信速度を9600bpsに変えたらうまく動いたようです。

よくベンチマークにされているマンデルブロー集合のプログラムは、普通のだと7分程度かかるのが1分程度でかけました

Image

(参考)

1) Ronald Dekker: A Tiny 80(C)32 BASIC Board
8032(8052の内蔵ROM省略品)での回路例
BASIC-52 のアセンブリソース及びバイナリーhttps://www.dos4ever.com/8031board/8031board.html

2) vintagechips:8752同等品でBASIC-52が動いた
BASIC-52が走る、MCS-51と外付けSRAMのみの最低構成のボードの製作過程です。
https://vintagechips.wordpress.com/2021/08/07/basic-52_is_running/

3) 鈴木哲哉: MCS8051技術資料
上記2)の資料です。基板は、不定期的にスイッチサイエンスやオレンジピコショップ販売されることがあるようです。
http://www.amy.hi-ho.ne.jp/officetetsu/storage/mcs8051_techdata.pdf

4) tomi9jp: レトロな雰囲気
Intel PPI(8255)付きで入出力24点を持つBASIC-52ボードの作例があります。
https://sbc738827564.wordpress.com/category/basic52/

5) 秋田純一:「CH55Xでどうでしょう」および「CH559PICO」、(個人出版、個人作成ハードウェアー) 書籍はアップデートされて商業誌になったようです。 https://www.rutles.net/products/detail.php?product_id=897

6) DeqingSun: CH55xDuino 
CH55xをArduinoツールチェーンで使うための諸情報があります。
https://github.com/DeqingSun/ch55xduino

7) はせりん: Retro PC Gallery 番外編:ASCIIART(マンデルブロ集合)ベンチマーク
様々なコンピューターでのマンデルブロー集合表示プログラムの実行時間をまとめられています。
http://haserin09.la.coocan.jp/asciiart.html
http://haserin09.la.coocan.jp/asciiart.html#PROGRAMS

水曜日, 12月 7th, 2022

更新履歴によると、2022年12月7日でこのサイトを作り始めて20年になるようです。SL-13000作るよって言っておいて他のクレーンばかりぽつぽつできちゃった感じになりましたが、20年の間に道具も部品もいろいろ変わって特に3Dプリンティングが普及したので材質にこだわらなければ割と細密なものでも作りやすくなったり、半導体やモーターが小さくて安くなってので動くものはだいぶ作りやすくなったりしたようですね。13000というか7800というかは、5年くらい前に一度仕切り直して続けることは続けています。

というわけでひっそり20周年ですがもしかしたらクレーンと関係ない投稿が続くかもしれません。

火曜日, 2月 18th, 2020

ワンダーフェスティバル2020[冬]に出ました。ケーソンドック他数点とまも(twitter:@kojimamo)さんの同人誌数点展示販売しました。

30t起重機船

ゴライアスクレーン

ケーソンドック

上記3点については補足事項を専用ページにアップロードしたので、ご覧ください。

土曜日, 12月 28th, 2019

7台目の3Dプリンターがやってきました。ワンダーフェスティバル2020冬の出し物もはかどりそうです。

木曜日, 11月 7th, 2019

タワーの形が特徴的な昭和35-40年ごろのIHI(100t*39m)

月曜日, 4月 15th, 2019

30t起重機船(1/700)

30t起重機船(1/700)


30t起重機船(1/700)

30t起重機船(1/700)

3Dプリンターはパワーアップ改造のためにばらばらにしてしまったYHD-101がそのままで、今年に入ってSparkmaker(光造形)と中古のAnycubic Photon(光造形)が入ってFDM2台と合わせて4(5)台になってしまいました。

旧海軍30t起重機船の1/700とかも、作ってます。

火曜日, 8月 21st, 2018

コミケ会場にて

コミケ会場にて

盆は「コミックマーケット」94にでて、ちっちゃなタワークレーンの小さめの冊子と1/700のケーソンドックの模型をそれぞれ少数頒布してきました。

冊子も模型も通販業者へ委託等は今のところは検討中です。

火曜日, 8月 21st, 2018

つくると

つくると

つくると!に模型などを展示してきました。

「はたらじ」以外での展示は多分これが最初です。
水平引込クレーンの模型の仕上げがちょっと大変で前日夜までかかってしまいましたが、どうにか当日動かすことができました。

水曜日, 6月 6th, 2018


ここではとつぜんのアニメ顔ヘッド

3Dモデルは一年くらいこねくり回して2017年の9月頃からちまちまと形にしていってます
youtubeにいくつかあげていますが、
ニコ動のほうにもう少し編集したものをあげています

1/3(60cm)の人形の頭部の大きさより顔面少し大きいかんじで、
現状は目玉と眉が動くだけですが、目玉の可動域にはかなり配慮した構造になっています。

目玉の動かし方は基本ランダムで、方向は正面を0、上下と左右は夫々一方を+、反対を-としておき、
下記の要領で動かすのを基本にしています。

(眼球の回転量)=(乱数)- (乱数の範囲の最大)/2 -(現在の眼球の向き)/(係数)    (1)

(新しい眼球の向き)=(現在の眼球の向き)+(眼球の回転量)                (2)

(休止時間)=(眼球の回転量の関数、最低0.2秒)                        (3)

って感じでやっています。
(1)の最後の項で目玉の向きが正面から離れるほど正面に戻す働きが強くなるように偏りをつけています。
また、ある目標の各部へ目配せしているときの目の動きと、他の目標に視線を移す動きも目の動きの大きさが違うだけだろうという考え方で扱うために、(1)の第二項までの乱数部分を次の(4)のように奇数乗するあるいは符号を退避して偶数乗することで、小さい動きがでやすくなるようにしてみたりもしています。
(眼球の回転量)=((乱数)- (乱数の範囲の最大)/2)^(奇数)*(係数)-(現在の眼球の向き)/(係数)      (4)

さらに、これに頭部に内蔵したジャイロセンサーからの信号を処理して、頭の回転と逆向きに目を動かそうとするようにしくんであります。

眉は動かせる事を見せるために間に合わせ的にジャイロセンサーからの信号処理結果の一部を使って動かしています。

なおCGアニメーション等では次の(5)のように目標物のどこかに目を向けておいて、別に計算した細かい動き(にeyejitterなどと名前をつけて)足し合わせているのを昔から見かけます。
(眼球の向き)= (目標のある一点への向き)+(ランダムに細かい動き)          (5)