比如渡边君这样的人,跟其他女人都是先做了再说,独跟小林绿却是经过了漫长的谈情说爱打情骂俏在伞下拥抱以及睡在一张床上听雨声还要说:“私もやらないと思うわ”(我也觉得不能做哇)
「どれくらい私のこと好き
」と緑が訊いた。
「世界中のジャングルの虎がみんな溶けて、バターになってしまうくらい好きだ」
「どれくらい好き
「春の熊くらい好きだよ」
」とミサトが顔を上げた。
「それ何よ、春の熊って
「春の野原を君が一人で歩いているとね、向こうからビロードみたいな毛なみの
目のくりっとした可愛い子熊がやってくるんだ。
そして君にこう言うんだよ
『今日は、お嬢さん、僕と一緒に転がりっこしませんか』って言うんだ。
そして君と子熊で抱き合ってクローバーの茂った丘の斜面をころころ転がって
一日中遊ぶんだ。
そういうのって素敵だろ
「すごく素敵」
「それくらい君のことが好きだ」
緑は長いあいだ電話の向こうで黙っていた。まるで世界中の細かい雨が世界中の芝生に降っているような沈黙がつづいた。
「共生」へのメッセージが問われた昨年
それを頭に置きつつ、今年はラスキに取り組む一年にしたいと思います。今年もよろしくお願いします。になる事はどうしても必要です。吾々はとかく馬になりたがるが、牛には中々なり切れないです。
世の中には根気の前に頭を下げる事を知つてゐますが、火
花の前には一瞬の記憶しか与えて呉れません。うんゝ死ぬ迄押すのです。牛は超然として押して行くのです。
夏目漱石、芥川龍之介・久米正雄への手紙
当サイトを始めてご利用になられる方の為に、ご利用ガイドを準備致しました。お買物の前にぜひ一度目を通していただき、引き続きお買物をお楽しみ下さい。
お届けまでにかかる日数
【在庫のある商品】
ご入金確認後、2~4日営業日以内に発送致します。
【在庫のない商品】
当ショップに掲載の商品は、基本的に限定数での販売となります。在庫がなくなり次第販売終了となりますので、予めご了承下さい。
【在庫のある商品】
ご注文確認後、2~4日営業日以内に発送致します。
【在庫のない商品】
当ショップに掲載の商品は、基本的に限定数での販売となります。在庫がなくなり次第販売終了となりますので、予めご了承下さい。
配送業者について
ご注文いただきました商品は、ヤマト運輸にてお届け致します。
(商品の配送状況はこちらでご確認いただけます)
お届け日・お届け時間帯のご指定について
お客様のご都合のよい日・時間帯にお届け致します。ご注文の際にご希望の「お届け日」「お届け時間帯」を選択して下さい。ご注文日の3日後以降で選択していただけます。
ただし、銀行振込によるお支払いの場合はご入金確認後の発送となりますので、ご入金の日時によってはご希望に沿えないこともあります。予めご了承下さい。
【お届け時間】
以下の時間帯から選択していただけます。※天候、交通事情などによるお届けが遅れる場合があります。予めご了承下さい。※発送作業開始後の変更はお受けできませんのでご注意下さい。
送料について
送料は、ご購入商品点数によらず、地域ごとに一律となります。下記の料金表でご確認下さい。※商品の大きさ、重さによって送料が異なる場合があります。
商品到着後の商品確認について
商品到着後は、商品に間違いがないか必ずご確認いただけますようお願い致します。万が一、お届けの商品に相違や不良等がありましたら、お手数ですが下記連絡先までご連絡をお願い致します。
返品・交換について
【初期不良、配送上の破損などによる返品・交換】
送料は当社にてご負担致します。
【お客様のご都合による返品・交換】
原則としてお受けすることはできません。下記連絡先までご連絡いただき、やむを得ない事情だと判断した場合のみご対応致します。但し、返送時の送料はお客様にてご負担頂きます。尚、下記に該当する商品につきましては返品に応じかねます。
・お客様自身の責任で傷や破損が生じた場合
・商品を一度以上ご使用になられた場合
・商品お届け後、ご連絡がないまま10日間を経過した場合
ご返送の際は、下記住所までお送り下さい。必ずお客様のお名前・ご住所・電話番号をご同封いただきますようお願い致します。
長期不在の場合の荷物の取扱いについて
お客様のご都合による長期不在により、お届け予定の商品が弊社に返送されてきてしまった場合は、誠に勝手ながらキャンセルとさせていただきます。キャンセル後、返金時の振込手数料はお客様のご負担となりますので、長期不在前のご注文には十分ご注意下さい。
海外発送について
現在のところ、海外への発送は承っておりません。
ギフト用ラッピングついて
ご希望の場合は、お客様情報入力時のオプションで「ラッピング」を選択して下さい。
お支払い方法
銀行振込(前払い)
三井住友銀行を利用しております。
郵便局振込(前払い)
ゆうちょ銀行を利用しております。
代金引換(商品受取時払い)
ヤマト運輸を利用しております。上記3種類よりお選びいただけます。
銀行振込について
取引銀行は【三井住友銀行】です。銀行振込でのお支払いは、前払いとさせていただいております。ご注文確認後にお送り致しますメールに振込先口座情報を記載しております。ご注文内容をご確認の上、商品代金をお振込み下さい。ご入金確認後、商品発送の手続きを致します。※ご注文完了後すぐに届きます自動返信メールには、振込先口座情報は記載しておりません。※振込手数料はお客様のご負担でお願い致します。
郵便局振込について
郵便局振込でのお支払いは、前払いとさせていただいております。ご注文確認後にお送り致しますメールに振込先口座情報を記載しております。ご注文内容をご確認の上、商品代金をお振込み下さい。ご入金確認後、商品発送の手続きを致します。※ご注文完了後すぐに届きます自動返信メールには、振込先口座情報は記載しておりません。※振込手数料はお客様のご負担でお願い致します。
代金引換について
代金引換でのお支払いは、商品受取時払いとなります。商品をお受け取りの際に、配送業者(ヤマト運輸)へ代金をお支払い下さい。代金引換払いの手数料は以下の通りです。ご注文内容の確認画面、ご注文後にお送り致しますメール(自動配信)には上記手数料を含めた代金を明記しております。商品受取時には、その金額をお支払い下さい。※代引手数料はお客様のご負担でお願い致します。
お支払い期限について
ご注文後10日以内にご入金の確認ができない場合は、誠に勝手ながらキャンセルとさせていただきます。予めご了承下さい。※10日以内にご入金できない理由がある場合は、その旨をご連絡下さい。
消費税について
当サイトに掲載の商品は全て、表示価格に消費税を含んでおります。シェリィルはブランド発祥の地として有名な兵庫県西宮で生まれたオリジナルブランドです。フリーリングやネックレスといったアクセサリーを中心に女優ミラー、エコバック、カードケースなど日常生活で便利な商品をお求めやすい価格で提供し、幅広い年齢層の女性に愛され支持されるブランドを目指しております。株式会社シェリィル(以下「当社」といいます)は、本サイトをご利用になる方(以下「利用者」といいます)のプライバシーを尊重し、利用者の個人情報の管理に細心の注意を払い、これを適正に取り扱います。
個人情報の取得の目的
個人情報取得とその利用目的は以下の通りです。
当社の商品又はサービスを提供するための業務上の連絡
お問い合わせに対する回答
法令により正当な理由で開示を求められた場合
個人情報の第三者への開示
原則として、利用者本人の同意を得ずに利用者の個人情報を第三者に開示することは致しません。ただし、以下の場合は関係法令に反しない範囲で、利用者の同意なく利用者の個人情報を開示することがあります。
利用者が第三者に不利益を及ぼすと当社が判断した場合
人の生命、身体又は財産の保護のために必要がある場合であって、本人の同意を得ることが困難である場合
公衆衛生の向上又は児童の健全な育成の推進のために特に必要がある場合であって、利用者本人の同意を得ることが困難である場合
国の機関もしくは地方公共団体またはその委託を受けた者が法令の定める事務を遂行することに対して協力する必要がある場合であって、利用者本人の同意を得ることにより当該事務の遂行に支障を及ぼすおそれがある場合
裁判所、検察庁、警察、弁護士会、消費者センターまたはこれらに準じた権限を有する機関から、個人情報についての開示を求められた場合
利用者本人から明示的に第三者への開示または提供を求められた場合
法令により開示または提供が許容されている場合
その他利用者本人へサービスを提供するために必要であると当社が合理的に判断した場合
以下の場合は、第三者による個人情報の取得に関し、当社は何らの責任を負いません。
利用者自らが当社のサイトの機能または別の手段を用いて特定の企業に個人情報を明らかにする場合
当社のサイトからリンクされる外部サイトにおいて、利用者から個人情報が提供され、またそれが利用された場合
個人情報の管理について
当社は個人情報への不当なアクセスまたは個人情報の紛失、破壊、改竄、漏洩などの危険に対し、技術面及び組織面において必要な安全対策を継続的に講じるよう努めています。また、当社は個人情報の保護に関する法令、業界規範・慣習、公序良俗を遵守します。以上の内容については本サイトを通じてご提供いただくお客さまの個人情報に適用されます。また、日本国内において適用されます。[お問い合わせ窓口]シェリィルはブランド発祥の地として有名な兵庫県西宮で生まれたオリジナルブランドです。フリーリングやネックレスといったアクセサリーを中心に女優ミラー、エコバック、カードケースなど日常生活で便利な商品をお求めやすい価格で提供し、幅広い年齢層の女性に愛され支持されるブランドを目指しております。
シボレーのシェビーバン(フルサイズバン)とか旅行とかとかとか・・・
東横線、始発なのに人がいっぱい
しかも青い人たち
このままいけば、DEEZでイベントか
今週二回目の日高屋閉店、会社で仮眠、始発で帰宅コース
壁紙なしとか選べないのかな
もしくは色指定とか
しんぷるなのが一番良さそうなんだけど
文字入力の時、顔文字がボタンひとつで選びやすくなったのかな
ほとんど使わない機能だけど
iOS4のアップデート終わったけど、壁紙ぐらいしか違いがわからん。
壁紙も何にするかでごちゃごちゃ感が
最近のコメント
喜んでたのもつかの間
高速道路 「1000円走り放題」が1カ月遅れるらしい・・・ に 最速
ニュースの森 より
喜んでたのもつかの間
高速道路 「1000円走り放題」が1カ月遅れるらしい・・・ に 芸能・経済情報ー今日の速報ー より
喜んでたのもつかの間
高速道路 「1000円走り放題」が1カ月遅れるらしい・・・ に 今日の芸能界衝撃ニュース速報 より
喜んでたのもつかの間
高速道路 「1000円走り放題」が1カ月遅れるらしい・・・ に 芸能裏ニュース より
iphoneをカーオーディオにつないでみた。
高速道路でハプニング
シェビーでドラッグレース出走とはw
高速道路でハプニング (0
シェビーでドラッグレース出走とはw (0
シボレーの折りたたみ自転車購入 (0
シボレーのシェビーバン(フルサイズバン)とか旅行とかとかとか・・・
ブログにエントリ: 江ノ島 とびっちょ - 三連休引きこもりだと思ってたけど、天気がいいのに、シェビー君でドライブしないのがもったいなさすぎるので、江ノ島までドライブすることに
由比ヶ浜にシェビー君を止めて、シェビー君2
東横線、始発なのに人がいっぱい
しかも青い人たち
このままいけば、DEEZでイベントか
今週二回目の日高屋閉店、会社で仮眠、始発で帰宅コース
壁紙なしとか選べないのかな
もしくは色指定とか
しんぷるなのが一番良さそうなんだけど
最近のコメント
喜んでたのもつかの間
高速道路 「1000円走り放題」が1カ月遅れるらしい・・・ に 最速
ニュースの森 より
喜んでたのもつかの間
高速道路 「1000円走り放題」が1カ月遅れるらしい・・・ に 芸能・経済情報ー今日の速報ー より
喜んでたのもつかの間
高速道路 「1000円走り放題」が1カ月遅れるらしい・・・ に 今日の芸能界衝撃ニュース速報 より
喜んでたのもつかの間
高速道路 「1000円走り放題」が1カ月遅れるらしい・・・ に 芸能裏ニュース より
iphoneをカーオーディオにつないでみた。
高速道路でハプニング
シェビーでドラッグレース出走とはw
高速道路でハプニング (0
シェビーでドラッグレース出走とはw (0
シボレーの折りたたみ自転車購入 (0
シボレーのシェビーバン(フルサイズバン)とか旅行とかとかとか・・・
東横線、始発なのに人がいっぱい
しかも青い人たち
このままいけば、DEEZでイベントか
今週二回目の日高屋閉店、会社で仮眠、始発で帰宅コース
壁紙なしとか選べないのかな
もしくは色指定とか
しんぷるなのが一番良さそうなんだけど
文字入力の時、顔文字がボタンひとつで選びやすくなったのかな
ほとんど使わない機能だけど
iOS4のアップデート終わったけど、壁紙ぐらいしか違いがわからん。
壁紙も何にするかでごちゃごちゃ感が
最近のコメント
喜んでたのもつかの間
高速道路 「1000円走り放題」が1カ月遅れるらしい・・・ に 最速
ニュースの森 より
喜んでたのもつかの間
高速道路 「1000円走り放題」が1カ月遅れるらしい・・・ に 芸能・経済情報ー今日の速報ー より
喜んでたのもつかの間
高速道路 「1000円走り放題」が1カ月遅れるらしい・・・ に 今日の芸能界衝撃ニュース速報 より
喜んでたのもつかの間
高速道路 「1000円走り放題」が1カ月遅れるらしい・・・ に 芸能裏ニュース より
iphoneをカーオーディオにつないでみた。
高速道路でハプニング
シェビーでドラッグレース出走とはw
高速道路でハプニング (0
シェビーでドラッグレース出走とはw (0
シボレーの折りたたみ自転車購入 (0
シボレーのシェビーバン(フルサイズバン)とか旅行とかとかとか・・・
ブログにエントリ: 土用の丑の日イブ - ということで、ウナギを食べにブラブラと
奮発して特上食べたけど、イマイチ違いがわからない。
食べ慣れないからだろうな
ブログにエントリ: 東京麺通団 - 会社帰りに東京麺通団に行って来た。うどんも天ぷらもうまい。
また行くかな
最近のコメント
喜んでたのもつかの間
高速道路 「1000円走り放題」が1カ月遅れるらしい・・・ に 最速
ニュースの森 より
喜んでたのもつかの間
高速道路 「1000円走り放題」が1カ月遅れるらしい・・・ に 芸能・経済情報ー今日の速報ー より
喜んでたのもつかの間
高速道路 「1000円走り放題」が1カ月遅れるらしい・・・ に 今日の芸能界衝撃ニュース速報 より
喜んでたのもつかの間
高速道路 「1000円走り放題」が1カ月遅れるらしい・・・ に 芸能裏ニュース より
iphoneをカーオーディオにつないでみた。
高速道路でハプニング
シェビーでドラッグレース出走とはw
高速道路でハプニング (0
シェビーでドラッグレース出走とはw (0
シボレーの折りたたみ自転車購入 (0
放課後の電子工作 〜 会社でハンダ付け、自宅でもハンダ付け 〜
〜 会社でハンダ付け、自宅でもハンダ付け 〜
0 ひとまず完成
とってもかわいい。スピーカーボックス型です。
日本語訳を更新
0のページを
更新しました。
電子工作コンテストで
賞をいただきました。
お気軽にどうぞ
お世話になってます。いらっしゃいませ。
[ 放課後の電子工作 ] へようこそ
小さいころから [ もの作り ] が大好きで、思えばいろんなものを作ってきました。木工、金工いろいろやりましたが、とりわけ [ 電子工作 ] には小学生のころからハマリこみ、中学、高校、大学と、授業そっちのけで回路なんか考えていました。先生ごめんなさい。おかげさまで、その頃からの蓄積が今のマンマのネタになっています。
興味を持ち始めた時代がちょうど8ビットマイコンの成長期だったこともあって、いわば「ICの集積度とともに成長した」という感じでしょうか
ここでは、そんなこんなでいつの間にか趣味の電子工作が仕事になってしまった私・ちあきの、本業ではないほうの作品をご紹介します。SDカード・トランスポートを作ってみました。
つまりCDプレーヤのCDをSDカードに置き換えたイメージですね
とってもシンプルで、とっても小さな自作MP3プレーヤーです。市販品とは違う、まさに世界にひとつしかない『自分好みのMP3プレーヤ』にこだわった連作です。その昔、1枚の画像を得るために何時間もかかっていた時代に、1分以内の描画を目指して開発した、Mandelbrot集合を描画するためだけの専用ハードウェアです。CQ出版社刊「インターフェース」誌にて開催された「ハードウェア設計コンテスト」の自由課題部門で優秀賞をいただきました。4MHzクロックのZ80マシン上で、マンデルブロ集合がなんと29秒で現れます。25年ほど前に製作した、Z80をデュアル構成にしたマシンです。時代はさらにさかのぼって、中学生から高校生頃にかけて作った初めてのマイコンです。フルキーボードインターフェース、CRTインターフェース、FDDインターフェースまで拡張しましたが、その後Lynxへ移行しました。マンデルブロ集合を表示するソフトウェアです。このMSEの特徴は、ループ回数を高さに対応付けした3D表示です。凸凹の切り替えや視点の移動もできます。
愛用の工具と材料
普段は作品の陰に隠れて、日の目を見ない裏方たちをご紹介します。写真は化粧はさみです。本来は電子工作と関係ないものですが、これが実は便利なんです。完全におまけのページです。幼い子供のために作った他愛もないおもちゃです。電子工作と関係なくてすみません。
でも手作りって、なんか、いいんですよね・・・
「実験用の追加回路」基板
本書第4部『実験用の追加回路』専用基板と部品一式をセットにしたキットがCQ出版社より発売になりました。
詳しくはこちらへ
CQ出版社のページはこちら
サポートページはこちら
キー・パッド、液晶表示器、7セグメントLED、ボリューム、圧電ブザーが主な追加アイテムです。本書内では、これらをターゲット・ボード左側にあるユニバーサル・エリアに手配線で実装していますが、それをプリント基板にしてみました。全景はこんな感じになります。外付けのキー・パッド(DTK-16)の代わりに、タクト・スイッチ16個を使って同等の回路を組み込みました。写真のとおり、各キーの文字はシルクで入れてあります。この基板はターゲット・ボードおよび液晶表示器と直接スタックできるようになっています。各信号のランドや、若干ではありますが(^^;ユニバーサル・エリアも用意しました。
本書に掲載のサンプル・プログラムを走らせたり、さらに回路を追加しての実験用などにどうぞ
》本文からの変更点
★代わりに、タクト・スイッチを16個用意してください。一般に流通している6mm角で4ピンのタイプです。通販なら電即納で入手できます。★液晶表示モジュールと接続するためのフラット・ケーブルが不要になります。
(秋月電子通商で販売している液晶表示モジュールには付属しています)
★ターゲット・ボード接続用に34ピン(17ピン×2列)ソケットを用意してください。34ピンちょうどのものが入手できない場合には、長いもの(例えば秋月電子通商の40ピンのもの)を切れば使用できます。★本基板の左側(左の写真では右側)上下2箇所に、長さ15mmのスペーサを付けると、しっかり安定します。★追加回路用の電源として、ACアダプタからの9Vをもらう必要があります。
この基板の場合には、左の写真の箇所にテストピンを実装し、ターゲット・ボードのC1の+側の足とクリップ・コードなどでつなぐと良いでしょう
なお、ショートには十分に注意してください。本書の説明どおり、キー・パッドとしてDTK-16を使用するタイプも作ってみました。
データはこちら
0との違いはキー・パッド周辺部分だけです。ご質問などは掲示板へお願いします。〜 これまた記憶が怪しいですが、1980年代初めごろだったんじゃないかと思います。たしか高校生だったと思うのですが、またまた一冊の本と出会いました。CQ出版社の『走るCP/Mマイコン・システムの設計と製作』です。その頃にはもう6800のシステムを設計製作していた私にとって、この本は自作魂をくすぐる、とても、とても魅力的な本でした。OSというものを知らなかった私が、6800用に書いた自分のモニタプログラムに限界を感じていた、ちょうど、そんな頃でした。そしてこの本に導かれて、また長く、楽しい道のりに足を踏み出す事になったのでした。この本をベースにして、自分なりにさまざまなアレンジを加えたシステムが、[ Lynx ] です。
Lynxは5年くらいにわたって何度も改良(改造
)されていますが、最終の主なスペックは次の通りです。原振の周波数と7220のパラメータ変更と、デジタルRGB−アナログRGB変換回路を追加しました。縦のライン数が足らないためにちょっと横長の表示になってしまいますが、VGAモニタに表示できるようになりました。
・制御 : サブCPUにより、メインから独立制御
当時の8ビット機はCRT制御が処理スピードのネックになっていました。
グラフィック能力を、毎分何本の線が引けるかで競ったりしてましたね
さらにCRT制御をサブCPUにまかせ、メインCPUの負担を軽くする事で、8ビット機の遅さに関する弱点をカバーするようにしました。28の写真8−4にもありますように、最初のストレージデバイスは8インチFDDでした。
このドライブにはとてもお世話になったのですが、難は、とにかく「うるさい」
FD-1165Aもそうでしたが、8インチドライブはとにかくうるさかったです。モータ音、シーク音、ヘッドロード音・・・今でも良く覚えています。そんなわけで、RAMディスクを作ることにしたのでした。5インチドライブのシステムに移行して、現在に至っています。キャラクタ・ジェネレータが手に入らなくて・・・結局、手作りしました。ROMの領域が余ったので、スクリプトフォント(筆記体)まで作りました。
凝り性・・・ですかね・・・やっぱり
キーボードを本体と分離したのは結構先進的だったのではないでしょうか・・・なんてね
バッテリバックアップされたRAMディスクからCP/Mをブートできるようになっています。電源ONからほぼ瞬時にOSが起動して入力待ちの状態になります。精神衛生上とても好ましいです。
あと、もうひとつメリットが
システムディスクを要求されません。
(CP/Mを使ったことのある方はおわかりですね)
Lynx本体とキーボードです。アルプスの AKB-3320を改造して、シリアル通信で本体と離せるようにしてあります。上ふたを開けたところです。
最上部に2つ並んでいるのは、最近取り付けた3
メインCPU周辺の基板です。ラッピングワイヤの手配線です。CRTインターフェース基板です。
グラフィックとテキスト用の2つのuPD7220(白いパッケージ)が目立ってますね
いつもどおりのラッピングワイヤの手配線です。
バスラインの配線って面倒
現在はVGA化したので、メインマシンのモニタと切り替えて使っています。もうちょっといいデジカメを買ったら、そちらの画面もアップします。
手作りのフォント(1)
自分でデザインして、ピクセルをひろって作ったフォントです。通常のセリフフォントと、筆記体風フォントの2種類を作りました。
写真がわかりにくくてすみません(汗汗)
手作りのフォント(2)
フォント、こうして作ってました。縦400ライン使えたので、8×11ドットのフォントにしました。
各行の右にHEXデータが書いてありますね
アセンブラを手に入れるまでの間は、ひたすらハンドアセンブルです。サブCPU用のグラフィックライブラリとかも作りましたので、左のようなシートを何百枚も書きました。
懐かしき8インチフロッピ
Lynxは最初8インチ片面単密を使っていました。
5インチに移行したためほとんど捨ててしまいましたが、記念()に何枚か取ってあります。Windowsのスクリーンセーバにあるラインアートのようなプログラムを実行しているところをビデオにしてみました。
まず苦労した事といえば、私の場合、資料(データシート)を集めることでしたね
個人、特に学生が大企業の大代表に電話して資料を集めることが設計作業なんかよりずっと大変でした。
なかなか送ってくれないんですよね・・・まあ学生の趣味に付き合っても利益になりませんから・・・そりゃそうなんですが・・・
こちらはFAXはおろか自分の下宿に電話も無い生活でしたので、事情を説明して、郵便で送ってもらうしかありませんでした。それを考えると、今、インターネットで情報がいくらでも手に入る時代はまさに天国のようです。
(その後、そのデバイスを手に入れるのがまた大変だったりするわけです)
もうひとつ、CP/Mシステムが立ち上がるまでのあいだ、ROMベースでのキーボード入力、CRT表示、FD入出力・・・などの基本プログラムが必要になるわけですが、・・・アセンブラが無い。アセンブラどころか、エディタをはじめとする開発環境というべきものが一切無いんです。・・・というわけで、それら基本システムは全て紙の上でコーディングして、ハンドアセンブルしました。
』と即座に出る方は『通』ですね(なんのこっちゃ)
もちろん、大変でした。自慢じゃありませんが、8ビットディスプレースメントを求めるために、FF,FE,FD,FC,FB・・・と昇順、逆順、いくらでも数えられます。
今となっては何の役にも立ちませんね
キャラクタジェネレータをはじめ、それら基本プログラムをROM化するとき、学友のH君に大変お世話になりました。毎晩彼の下宿に押しかけては数百ページにわたる(ハンド)アセンブルリストを入力させてもらいました。
今でも『感謝』です・・・
そんなさまざまな過程を経て、Lynxを作ったのはもう20年ほども前になりますが、今でもまだ元気に動いています。当時の8ビット機はCRT制御が処理スピードのネックになっていました。
グラフィック能力を、毎分何本の線が引けるかで競ったりしてましたね
さらにCRT制御をサブCPUにまかせ、メインCPUの負担を軽くする事で、8ビット機の遅さに関する弱点をカバーするようにしました。28の写真8−4にもありますように、最初のストレージデバイスは8インチFDDでした。
このドライブにはとてもお世話になったのですが、難は、とにかく「うるさい」
FD-1165Aもそうでしたが、8インチドライブはとにかくうるさかったです。モータ音、シーク音、ヘッドロード音・・・今でも良く覚えています。そんなわけで、RAMディスクを作ることにしたのでした。5インチドライブのシステムに移行して、現在に至っています。キャラクタ・ジェネレータが手に入らなくて・・・結局、手作りしました。ROMの領域が余ったので、スクリプトフォント(筆記体)まで作りました。
凝り性・・・ですかね・・・やっぱり
キーボードを本体と分離したのは結構先進的だったのではないでしょうか・・・なんてね
Lynx本体とキーボードです。離せるようにしてあります。上ふたを開けたところです。
最上部に2つ並んでいるのは、最近取り付けた3
メインCPU周辺の基板です。載っています。ラッピングワイヤの手配線です。CRTインターフェース基板です。
目立ってますね
いつもどおりのラッピングワイヤの手配線です。
裏面ですって、もういいって
現在はVGA化したので、メインマシンのモニタと切り替えて
使っています。もうちょっといいデジカメを買ったら、そちらの画面もアップします。
手作りのフォント(1)
自分でデザインして、ピクセルをひろって作ったフォントです。通常のセリフフォントと、筆記体風フォントの2種類を作りました。
写真がわかりにくくてすみません(汗汗)
手作りのフォント(2)
フォント、こうして作ってました。縦400ライン使えたので、8×11ドットのフォントにしました。
各行の右にHEXデータが書いてありますね
アセンブラを手に入れるまでの間は、ひたすらハンドアセンブルです。
サブCPU用のグラフィックライブラリとかも作りましたので、左のようなシートを何百枚も書きました。
懐かしき8インチフロッピ
Lynxは最初8インチ片面単密を使っていました。
5インチに移行したためほとんど捨ててしまいましたが、)に何枚か取ってあります。
Windowsのスクリーンセーバにあるラインアートのようなプログラムを
実行しているところをビデオにしてみました。
回線と時間に余裕がある方のみどうぞ(笑)
【苦労話など】
まず苦労した事といえば、私の場合、資料(データシート)を集めることでしたね
個人、特に学生が大企業の大代表に電話して資料を集めることが設計作業なんかよりずっと大変でした。
なかなか送ってくれないんですよね・・・まあ学生の趣味に付き合っても利益になりませんから・・・そりゃそうなんですが・・・
こちらはFAXはおろか自分の下宿に電話も無い生活でしたので、事情を説明して、郵便で送ってもらうしかありませんでした。それを考えると、今、インターネットで情報がいくらでも手に入る時代はまさに天国のようです。
(その後、そのデバイスを手に入れるのがまた大変だったりするわけです)
もうひとつ、CP/Mシステムが立ち上がるまでのあいだ、ROMベースでのキーボード入力、CRT表示、FD入出力・・・などの基本プログラムが必要になるわけですが、・・・アセンブラが無い。アセンブラどころか、エディタをはじめとする開発環境というべきものが一切無いんです。・・・というわけで、それら基本システムは全て紙の上でコーディングして、ハンドアセンブルしました。
』と即座に出る方は『通』ですね(なんのこっちゃ)
もちろん、大変でした。自慢じゃありませんが、8ビットディスプレースメントを求めるために、FF,FE,FD,FC,FB・・・と昇順、逆順、いくらでも数えられます。
今となっては何の役にも立ちませんね
キャラクタジェネレータをはじめ、それら基本プログラムをROM化するとき、学友のH君に大変お世話になりました。毎晩彼の下宿に押しかけては数百ページにわたる(ハンド)アセンブルリストを入力させてもらいました。
今でも『感謝』です・・・
そんなさまざまな過程を経て、Lynxを作ったのはもう20年ほども前になりますが、今でもまだ元気に動いています。
マンデルブロ集合に限らず、フラクタル図形を描くソフトウェアって世の中にたくさんありますけど、・・・私も作ってました。
えへへ・・・
Pyxis用のハンドリングソフトとして書いた3ペイン(というのかな)形式が気に入っていたので、特徴は【3次元表示】です。メインウィンドウです。
左上ペインの十字で、今どの辺を
拡大しているのかを示しています。
凸で3次元表示
視点も変えられます。
00のマップファイルは0
99のものと互換性がありません。
99をお持ちの方は、上書きを避けるため、解凍の際に別途1
00用のフォルダをご用意ください。不具合などのご連絡は掲示板、メールなどでお願いします。動いた/動かないなどのご報告もお待ちしております。よろしくお願いします。ベクターさんのソフトウェアライブラリに登録されました。パレット処理(色使いの変更)を追加しました。ずっと懸案だった色使いの変更がようやくできるようになりました。
編集 → 色パレットの変更
を選択してください。パレット設定用のダイアログが表示されます。
パレット処理はいいですね(自画自賛)
いろいろと色を変えてみると、画像の印象が大きく変わって面白いです。ヘルプシステムを組み込みました。2種類のヘルプを用意しました。MSEの簡単な使用法が表示されます。MSEウィンドウ上の各アイテムやコマンドを説明するヘルプです。
使い方は、まずメニューの
を選択してください。ヘルプモード用の小さなウィンドウが表示されます。あとは、説明がほしいアイテム(例えばメニューの『タイトルの変更』とか)をクリックすると、その説明が表示されます。ヘルプモード中は、全て(*1)のコマンドが動作しませんので、あちこち押しても大丈夫です。
(*1 ヘルプメニューに含まれるコマンドとアプリケーションの終了を除きます)
ヘルプモードを終了するには、ヘルプウィンドウを閉じてください。ユーザインターフェースを若干変更しました。
99ではタイトルの変更と最大反復回数の変更コマンドではダイアログが表示されましたが、メインウィンドウ上で操作するように簡素化しました。タイトルの変更はマップウィンドウ上でもできるようになっています。「スピードバーとステータスバーの表示/非表示」を削除しました。
自分でもあまり使わないので・・・
「描画終了時に音でお知らせ」を削除しました。最近のPCは速いので、わざわざ音を鳴らして知らせるほど待つこともないかな、ということで、削除しました。併せて、描画を中断する機能も削除しました。スプラッシュウィンドウを小さくしました。99の全画面スプラッシュウィンドウは、256色環境の場合の、起動時のパレット書換えによる。見苦しさを避けるための苦肉の策だったのです。
(1996年当時の私の環境がそうでした)
最近では多くの方が16ビット以上のフルカラー環境をお使いだと思いますので、大きなスプラッシュウィンドウは止めました。
(スプラッシュウィンドウなんか要らねー、っていうのはご容赦ください)
フォント選択を追加しました。ステータスメッセージやヘルプなど、日本語が表示される部分のフォントを設定できるようにしました。
表示がおかしくなってしまうので、メインウィンドウの座標値などを表示している英数字固定幅フォントには
反映しないようにしています。併せて、ソースを両方のプラットフォームで共用できるように大幅に書き換えました。これに伴って以下のような変更点があります。○ビットマップ関連処理を大幅に書き換えました。環境に依存しないようにビットマップ関連処理を書き換えました。○「印刷」関係をとりあえず削除してあります。Linux環境での動作状況を調べてから、今後組み込むか決めたいと思っています。なお、Linux環境の方はランタイムライブラリが別途必要です。MSEのフォルダを両方の環境で共用すると、マップファイルやイメージファイルも共用されます。
デュアルブートなどで、どちらの環境からも同じフォルダにあるMSEが起動できる方は、同じマップファイル、イメージファイルを相互利用することができます。ソースリストを公開します。興味のある方は覗いてみてください。ちなみに開発環境は、dprをプロジェクトとして開いてください。どちらの環境もボーランドさんから無償で提供されているものです。pas は両方の環境で共用しています。ソースを改良した、バグを修正した、機能拡張したなど・・・大歓迎です。ぜひご連絡ください。
初めて作った思い出のマイコン
〜 今と違って、『マシンの自作』といえば、自分で設計して自分で配線することを指していた、古きよき時代でした。はっきりと思い出せないのですが、確か中学から高校生にかけての頃だったと思います。それまでラジオだのオーディオだのをいろいろと自作して楽しんでいたのですが、一冊の本が私の運命を変えました。CQ出版社刊 松本吉彦著 『私だけのマイコン 設計&製作』 です。とにかく、読みました。そして、作りました。ネーミングに時代が感じられます。
若かった・・・ですね
この頃の入力装置といえば『トグルスイッチ』、出力装置は『LED』ですよね
電源スイッチはちゃんと『ロック付き』(引っ張らないと切り替わらないやつ)です。上ふたを開けたところです。カードエッジ式の基板が並んでいます。フロッピーインターフェース基板もあったのですが、残念ながら行方不明となってしまいました。左上に見えているのが6810、128バイトのメモリです。
128Kバイトじゃないですよ
(くどいって)
カードエッジコネクタ同士をスズめっき線で、エンパイアチューブをかぶせて接続してあります。これで動くんですから、のんびりした時代でした。ごらんのとおり、3端子レギュレータ+トランジスタブーストです。
『スイッチング電源じゃないの
』と言うあなたはお金持ちです。
これがわかっていただける方、お友達ですね
予算がないなりに、見た目にこだわったりするわけです。
サンドペーパーでヘアライン加工して、インレタ入れて・・・、中学生なりにがんばってました。トレペの方眼紙に手書きしてました。主に授業中の内職でした・・・センセイすみません。こんな感じです。何度も消しては書きするので、トレペでないと耐えられなかったのでした。こんな風に、ノートにコードを書いてハンドアセンブルしてました。アセンブルしたらスイッチで「ぱちぱち」入力です。右は私の運命を変えた偉大なるテキストです。
・・・ボロボロですが
写真からわかりますように、この頃は配線材として普通のビニル被覆のより線を使ってました。ラッピングワイヤを使った手配線というテクニックはずっと後で知りました。残念ながら今も動くかどうかはわかりません。
そのうちに試してみようかな・・・
こちらからどうぞ
手配線で仕上げたシステムです。
まさに寝食を忘れて没頭し、ばかばかしいほどの労力を注ぎ込んだ力作を
見てやってくださいませ。タカチのアルミケースに入っています。
中身の力の入れように対して、いたってシンプル
上ふたを開けると不気味に基板が現れます。Pyxisは4枚の基板で構成されています。それぞれの主な役割は以下のとおりです。基板の裏側です。青く見えているのが配線です。完成後、何本くらいあるのか気になったのでネットリストから推定してみました。
自分で言うのもなんですが、配線、きれいでしょ
結局好きなんです。
・・・救われませんね
配線に使ったラッピングワイヤです。
後で知ったのですが、これは銀メッキされているために、はんだのノリが抜群のスグレモノです。一度これを使ったら、もう他のワイヤは使えません。Lynxと接続して動作しているところをビデオに撮ってみました。専用ハンドリングソフトウェア[ MP ]のオープニングです。
4MHzクロックのZ80マシンとは思えない速度でマンデルブロ集合が現れることがわかっていただけますでしょうか
今となっては遅く感じてしまいますが、当時はこれでもめちゃくちゃ速かったんです・・・
それが周辺部と比べてほとんど遅くなっていないことがわかります。ところで、Lynxでは残念ながらデジタル8色しか表示できないので色がさびしいです。Pyxis自体は最大反復回数として32767まで設定できるので、ホストが対応していればフルカラーに近いグラデーション表示が可能です。
実はPyxis用のISAインターフェースボードとWindows用ハンドリングソフトも作ってあって、本当はもっときれいなデモをお見せすることは可能なのですが、今使っているメインマシンのマザーには悲しいかなISAが無いのです・・・
以上、外観のご紹介でした。
内容についてはハードウェア設計コンテスト 最終レポートのページへどうぞ
ところで今、改めて見ると、我ながら
『よく作ったなあ・・・』という感じです。
これまでいろんなものを作ってきましたが、△ページの先頭へ戻る。
4 略記号について
3 動作の概要
1 演算フローの検討
2 数値のデータ表現
機能ブロックの解説
1 タイムチャートの表記法
2 設計目標との対比
付録1 制御信号と出力条件
付録5 回路階層と機能説明
コンピュータグラフィックスを高速化するための専用ハードウエアエンジンである。対象をMandelbrot集合のみに絞ったシステム全般にわたる徹底した最適化,アルゴリズムや回路構成の工夫などにより,特殊な部品を用いず,非常に低コストで高い性能を得ることができた。△ページの先頭へ戻る。
4 略記号について
3 動作の概要
1 演算フローの検討
2 数値のデータ表現
機能ブロックの解説
1 タイムチャートの表記法
2 設計目標との対比
付録1 制御信号と出力条件
付録5 回路階層と機能説明
ハードウェア設計コンテストで
自由課題部門の優秀賞をいただくことができました。
自分で言うのもナンですがとても複雑なため、その際の応募レポートをご紹介することで
内容の説明に代えたいと思います。なんでも凝り性なので、このレポートも気合を入れて書きました。
1994年の応募当時『パソコン』を持っていなかった私は、このレポートを書くために、それでは、左のメニューからどうぞ
まとめて見たい方にはこちらのPDF版が便利です。
疑問、質問などございましたら、お気軽に掲示板へ
△ページの先頭へ戻る。
4 略記号について
3 動作の概要
1 演算フローの検討
2 数値のデータ表現
機能ブロックの解説
1 タイムチャートの表記法
2 設計目標との対比
付録1 制御信号と出力条件
付録5 回路階層と機能説明
表10-1に,3種類の環境における描画時間の測定結果を示します。この時間には,すべて画面への描画時間も含まれています。描画条件は,これは,全ピクセルにおいてNMAX回反復する(全ピクセルがM集合に含まれる)場合になります。
(ストップウォッチによる測定10回の平均)
[表10-1]結果:描画時間の比較(描画条件は本文中を参照)
この表に示されるように,期待通りの結果が得られました。(b)と比較しても十分に高速です。先に設計目標として掲げた "1分" の根拠は,描画の際にCRTの前で待っていられる時間として考えた値です。描画を開始してから数分なら待てますが,85時間では待っていられません。の描画時間は29秒でした。このように,描画時間として十分に満足できる結果が得られました。ここで,回路の効率を検証してみます。
パイプライン1段あたりの所要時間は,乗算回路のところで説明したように2
注1):パイプライン2段構成のため
注2):2ピクセル同時処理のため
これは正確に(c)の結果と一致しています。
(c)は描画を含んだ時間ですから,2
3で説明した演算結果Nx,yのバッファリングが効果的に作用して,ホスト側による結果の読み出しまでの待ち時間が発生していないことがわかります。同時に,演算回路が設計通り効率100%で動作していることが確認できました。
2 設計目標との対比
第2章のはじめに掲げた設計目標各項に対する結果をまとめてみます。
(a)描画時間について
M集合全体を29秒で描画
安い購入先を探すのに苦労しましたが,結局合計で \30,780
(c)構成部品について
(d)演算精度について
完全64ビット表現により,十進有効桁18桁以上
(e)ホストへの依存度について
1にて説明の通り,8ビット機でもハンドリングが十分可能な低依存度
以上をまとめると,予算を若干オーバーしましたが総合的には十分目標を達成できたと考えます。△ページの先頭へ戻る。
4 略記号について
3 動作の概要
1 演算フローの検討
2 数値のデータ表現
機能ブロックの解説
1 タイムチャートの表記法
2 設計目標との対比
付録1 制御信号と出力条件
付録5 回路階層と機能説明
Pyxisの製作にあたっては,慎重に,かつ時間をかけて,非常に複雑なパズルを解くような感覚で設計を楽しみました。思えば,本当に寝食を忘れてやっていたような気がします。回路は,すべてオリジナルです。このレポートの中では,回路の詳細について残念ながらあまり説明できませんでした。自分で言うのも変ですが,全般に凝った設計なので,書きたいことが複雑かつたくさんあってとても書き切れません。説明が深みにはまらないように注意したつもりですが,いたらぬ点が多々あると思います。ご容赦ください。今となってはPyxisの性能も昔ほどではなくなってしまいましたが,当時のアマチュアレベルのコンピュータ環境においてはダントツに最速だったのではないかと自負しています。以前なら時間がかかりすぎて見当すらつけられなかったような彼方にある拡大図形を,心ゆくまで探し歩くことができるようになりました。第2次レポートに添付しました描画例を参照され,この感覚を少しでも感じていただければ幸いです。想像をはるかに超えた複雑さと広がりを持つM集合のCGにおいて,文字通りの水先案内役を果たしてくれていることを製作者としてうれしく思っています。
デュードニー,山崎秀記監訳,「コンピューターの顕微鏡で,数学でもっとも複雑な図形を拡大観察する」,『別冊サイエンス82 コンピューター レクリエーションI』,日経サイエンス社
△ページの先頭へ戻る。
4 略記号について
3 動作の概要
1 演算フローの検討
2 数値のデータ表現
機能ブロックの解説
1 タイムチャートの表記法
2 設計目標との対比
付録1 制御信号と出力条件
付録5 回路階層と機能説明
これを第1目標として設計するわけですが,当時の状況などの制約事項を考慮し,次のように設計目標を定めました。(c)特殊な部品は使わない。(d)拡大描画に耐える十分な演算精度を持つ。(e)ホストの性能を期待しない。全般に最適なトレードオフを得るためには,システム全体の様々な問題に対し上記の条件のもとで,あたかも "ニュートン法を使って連立方程式を解く" ような設計をする必要があります。その "連立方程式" の最適解を目標としてPyxisを設計しました。まず,ホストからは第1章で説明した4つのパラメータをPyxisの内部レジスタに設定します。そしてリセットレジスタをクリアすると,Pyxisは演算を開始します。この後ホスト側に必要な処理は,Pyxisから順次出力される全ピクセル分の演算結果Nx,yを読み出し,描画していくだけです。ホストの能力に依存せず高速な描画を実現するため,各ピクセルに対応するCx,Cyの計算など,演算にからむ処理はPyxis内部ですべて処理されます。
3 動作の概要
前項の通り,Pyxisは機能的にリスト1-1をハードウエア化したものとなっています。ここではその動作について概略を説明します。この時ピクセル毎のCx,yは,Cx生成回路及びCy生成回路にて処理の進行にあわせて計算されます。
Pyxisはパイプラインにより2ピクセル分を同時に処理します(後述)
この同時に処理される2ピクセルのことを以後ピクセルペアと呼び,xが偶数,奇数のピクセルをそれぞれPE,PDで表すことにします。
(2)ピクセルペア毎の処理
演算処理はピクセルペア毎に行われます。その処理の中で,PE,PDのそれぞれについて式(1-5)の成立がチェックされます。成立と判定された場合にはそのフラグが制御回路へ渡され,その時のnが結果レジスタLEもしくはLDへロードされます。当然,PEとPDが同時に成立するとは限りません。先に成立した方は,他方の処理が終了するまで待たされます。このようにして,PE,PDの両方が式(1-5)成立と判定されるか,またはnがNMAX-1に到達するとそのピクセルペアの処理は終了となります。演算終了ステータスがセットされ,ホストに対して結果レジスタLE,LDの読み出しが可能になったことを知らせます。演算終了ステータスは,LDレジスタの読み出しでクリアされます。
(3)1ピクセルペアの処理終了後
演算終了ステータスがセットされた後,Pyxisは直ちに次のピクセルペアの処理を開始します。ホストの読み出しを待ちませんので,回路の動作効率を非常に高めることができます。しかし万一,ホストの処理が遅くて読み出しが間に合わない場合(すなわち,演算終了ステータスがセットされた状態で,処理中である次のピクセルペアPE,PDのどちらかの演算が終了した場合)には,結果レジスタがオーバーライトされる直前の状態で回路全体が停止し,ホストの読み出しの完了を待つようになっています。これにより,ホストが遅くても演算結果を読み落とす心配はありません。○ここまでで,Pyxis全体の構成及び動作の概略を説明しました。次の章では,具体的な回路の説明の前に必要となる,数値データの表現法などシステム全体に共通する基本的な重要要素について説明します。△ページの先頭へ戻る。
4 略記号について
3 動作の概要
1 演算フローの検討
2 数値のデータ表現
機能ブロックの解説
1 タイムチャートの表記法
2 設計目標との対比
付録1 制御信号と出力条件
付録5 回路階層と機能説明
[図3-2]パイプラインとピクセルペア
1 演算フローの検討
式(1-6)及びリスト1-1をデータフローを中心に考えると,図3-1のように表すことができます。この図から,反復1回分の演算は前半の乗算部と後半の加減算部に分割でき,かつそのそれぞれが,互いの演算結果を利用し合う形のループになっていることがわかります。よって,乗算部と加減算部をパイプライン化することで,それぞれを休むことなく動作させることができます。そのため,このパイプラインループに2ピクセル分のデータをいれ,乗算部と加減算部を交互に回るように全体を構成しました。
まずPEが乗算部へ入り,その結果が加減算部へ送られると同時に乗算部ではPDの処理が開始されます(図3-2)
以後これを反復し,PEが乗算部に戻ってくる毎にnが1増えることになります。このように,PE,PDのそれぞれについて式(1-1)の反復演算が同時に行われます。これにより通常動作中の演算回路の利用効率を100%とすることができます。主な演算部を,この乗算を中心とした3つに分解し,その各部が並列に動作するようにしました。乗算器を3つ用意し,そのそれぞれから同時に出力される結果を,3分割された各加減算部が並列に利用しています。なお式(3-1b)の2倍演算は,ZnxZnyの乗算結果をステージ間レジスタにロードする部分で1ビットずらしておくことで処理しています。以上のように,演算フローの中の並列性を,コスト他の制限が許す範囲で最大限に利用しています。それによって,全体の処理速度,演算回路の利用効率をそれぞれ向上させています。
2 数値のデータ表現
演算数値データのフォーマットは,2の補数固定小数点64ビットにしました。ビット割り当ては,符号1ビット,整数部3ビット,小数部60ビットです。式(1-5)の条件により,M集合の演算は実数部虚数部ともに±2の範囲で考えれば十分です。これを有効利用すれば,無用に大きな数を表現する必要がなくなり,整数部のビット数を最小限に押さえられます。実際には,式(1-5)の判定をZx2+Zy2だけでなく,それぞれ2乗する前のZx,Zyにおいても判定するようにして,整数部を3ビットに押さえています。これについては次項で説明します。Pyxisの乗算回路には,2の補数をそのまま乗算できる2次Boothアルゴリズムを用いています。これにより,演算回路のすべてでデータ表現を2の補数に統一することができます。符号反転や絶対値などの余分な回路を省略し,かつ加減算と相性の良い最適な表現法といえます。
(3)ビット数と固定小数点表現
データ長に64ビット用意したのは,非常に大きな拡大率の図形に対して十分な反復回数の演算ができるようにするためです。この固定小数点表現なら有効桁は十進数で18桁以上ありますので,対象の複素平面に対して一様(これが重要)に十分な精度が得られます。
浮動小数点方式では,表現できる数値が対数的であることに加え,1
0付近の数値を表現すると指数部が無意味になることから,ハードウエアが複雑になる以上にそのメリットはありません。2で説明したように,64ビットの数値データを有効に使うためには,できるだけ小数部のビット数が多い方が有利です。にて不成立となったとすると,次回(n)の判定の時には,例えば,となってしまいます。この数を表せるようにするには,整数部に6ビットが必要です。このビット数を削減するため,2乗の前のZnx,Znyをそれぞれチェックする回路を追加しました。もちろんこのためのハードウエア量が大きければ本末転倒ですが,論理的にはわずかゲート3個で実現可能です。のいずれかが成り立つならば,式(3-2)も成立します。このことは,式(3-2)の評価の一部を1反復サイクル前に先取りして行うことと同じです。以上より,式(3-3),式(3-4)の判定を加えることで,整数部のビット数を3ビットに押さえながら,式(1-5)の正確な判定が可能になります。ここでは,数値データをビット展開して,次のように表現します。判定基準は正数で4以上ですから簡単です。このように,簡単な論理回路にて判定が可能です。○ここまでで,構成,機能,動作,方法を,それぞれ抽象的な表現を中心に概説しました。次の章からは,これらがどのように具体化されているかの解説に移ります。まず全体のブロックダイヤグラムを示し,その中の構成要素を順に説明していきます。△ページの先頭へ戻る。
機能ブロックの解説
4 略記号について
3 動作の概要
1 演算フローの検討
2 数値のデータ表現
機能ブロックの解説
1 タイムチャートの表記法
2 設計目標との対比
付録1 制御信号と出力条件
付録5 回路階層と機能説明
Pyxisの全回路は4つの階層に分けられた機能ブロックの集合体として構成されています。この階層構造については後述しますが,まず第1階層は次の6つの機能ブロックで構成されています。以後これらの部分を適宜右の2文字の略語で表します。Cnはホストインターフェースを含む全体制御回路です。この図には,第2階層までが表現されています。制御回路部を除けば,図3-1の演算フローに忠実な構成になっています。以降で,このシステムブロックを構成している各機能ブロックを説明していきますが,個別の説明に入る前に,まず演算回路部(a)〜(e)に共通の基本要素である"加算・減算回路"と"乗算回路"について説明します。
(1)状況の有効利用
パイプライン化により,加減算部でも乗算部と同じ演算時間を使うことができます。視点を変えて,これを有効に使えば,ハードウエアの規模を小さく押さえることができます。乗算より加減算の方が所要時間は短く,処理も少ないですから,許される時間内に演算が終わる程度のハードウエアを用意すれば十分です。64ビットデータを8ビット毎8回に分けて,LSB側よりこの回路に通します。毎回の桁上げは,桁上げ保存レジスタCSRに保存され,次回にキャリー入力として加算されるようにします。これにより,64ビット分の加算器を8ビット分のハードウエアで実現できます。もちろんこの回路のためには,64ビットデータを8ビット毎にマルチプレクスして出力し結果をロードする回路がこのほかに必要となります。がPyxisではパイプライン化のためのステージ間レジスタがいずれにしても必要ですので,それにこの機能をあわせ持たせてあります。また,この回路構成は簡単に減算回路にも対応できます。第2オペランド側の入力をビット反転し,CSRの初期値を1にします。
これで2の補数となりますので,後は加算器と同様です(図4-3)
このように,加減算回路においては許容された時間を有効に利用することと,桁上げ保存を応用することで,ハードウエアの規模を大幅に縮小しています。乗算には種々の方法がありますが,Pyxisでは2次のBoothアルゴリズムを利用しました。このアルゴリズムを用いると,64ビットの固定小数点数を,ビット数の1/2の32クロックで,しかも2の補数表現のまま演算できることが大きな特長です。他の方法,例えば単純なシフト加算方式では処理に64クロックを必要とすることに加え,乗算器の入力を予め正数にしておく必要があります。またその際,符号は別に処理しなければなりません。加減算を含む各演算回路のデータ表現を統一することはシステム的に非常に有効です。そのためにも,乗算にBoothのアルゴリズムを使うことはこの場合最適といえます。乗算回路の基本ブロック図を図4-5に示します。被乗数レジスタは64ビットパラレル出力です。乗数はシフトレジスタにロードされますが,これは2次Boothのため2ビットずつシフトする必要があります。そこで半分のサイズのシフトレジスタを2系列用意し,偶数番ビットと奇数番ビットを分けてそれぞれロード/シフトしています。そしてそのシフト出力(LSB側)の3ビットを乗数側データとして2次Booth乗算器に送っています。この両レジスタは,パイプラインのステージ間レジスタとしても機能しています。レジスタの入力側は加減算部(具体的には前項の加算・減算回路)と接続されており,そこからの出力は64ビットのLSB側より8ビットずつ8回に分けて送られてきます。乗数シフトレジスタは乗算処理の進行によりMSB側から空いてきます。この空きが8ビットになる瞬間に,加算・減算回路からの8ビット出力がそこへロードされるタイミング構成になっています。結果,例えばPEの乗算処理が終了した時点では,この乗数シフトレジスタにはPDのデータがすでに64ビット分ロードされていることになります。そして同時に,この最後の8ビットロードのタイミングで,乗数シフトレジスタにロード済みの56ビットとこの最後の8ビットを合わせて被乗数レジスタへロードし,被乗数を更新しています。ただし,生成される部分積がM×(−2,−1)の場合のLS261からの出力は1の補数でしかないことに注意します。図4-5の中に "2の補数用1生成回路" がありますが,ここで2の補数にするための1を生成しています。次にこの部分積を加算します。部分積レジスタはクロック0でクリアされ,以後クロック31まで部分積加算器の出力をクロック毎に一時的に保存します。以後,この部分積加算クロックをCKPAと表記します。部分積加算器はLS283を17個使った68ビット加算回路ですが,このキャリーを1クロック中ですべて伝搬させると非常に時間を消費してしまいます。そこで,ここでも桁上げ保存を応用しています。これにより64ビット加算でありながら,キャリー伝搬のための無駄な時間を完全に排除しています。図4-6に,乗算回路の動作を示します。この図を用いて,部分積加算における桁上げの高速処理を説明します。が入力され,その出力としてQ56〜Q59が得られています。この出力は次のCKPA=2の開始タイミングで,部分積レジスタのQ58〜Q61として2ビットずらしてロードされます。これと同時に,LS283の桁上げ先見出力C4は,桁上げ保存シフトレジスタのC26にロードされます。そしてこのC26の内容は,次の次の加算クロックCKPA=3の開始タイミングでC27にシフトされ,その出力が桁上げとして加算されます。LS283が4ビットの加算器であることと,乗数のシフトが2ビットずつであることから,保存された桁上げは本来の位取り位置に合わせるため2つ後の加算クロックにて処理しています。少しややこしい処理ですが,桁上げを伝搬させないので高速な部分積加算が実現できます。このほかの動作は,図中の説明を参照してください。乗算結果レジスタは64ビットパラレル入力のレジスタです。これにはCKPA=31の部分積加算器の出力が,次のCKPA=0の開始タイミングでロードされます。これが乗算結果ですが,一部の桁上げが桁上げ保存シフトレジスタに残っていますので,これも同時に残留桁上げレジスタ(32ビットパラレル入力)にロードします。そしてパイプラインの加減算部の先頭でこの両者を加算し,最終的な乗算結果を得ています。この両レジスタは,乗数・被乗数レジスタ同様パイプラインのステージ間レジスタとしても機能しています。両レジスタの出力側がそれぞれ8ビットのバス接続になっており,64ビットを8ビットずつ8回に分けて,時分割で加減算部へ送っています。乗算回路の速度は,Pyxisの性能を左右する重要な要素です。以上説明したように,2次Boothアルゴリズムを用いることで,2の補数64ビット同士の乗算を32回の部分積加算で実行します。また桁上げ保存の応用により,64ビットの部分積加算を行いながらも高速な動作が可能です。
実際の動作は,LSTTLベースの設計ながら,部分積加算クロックは12
基本的にはシフト加算方式ですが,64×64ビットを2
このほか,パイプラインステージ間レジスタと,乗数・被乗数・乗算結果・残留桁上げの各レジスタを共用しています。さらにそれらへのロード/ストアを部分積加算クロックと同一タイミングで実行しています。データ転送のための無駄なクロックタイミングがないので,すべてのクロックに対して演算回路は100%の効率で動作します。○次の項から,各機能ブロックの説明に入ります。その中で出てくる演算回路は,基本的に前述の加算・減算・乗算回路です。その組み合わせにより,大きな機能ブロックが構成されています。Oxのブロック図を図4-7に示します。Org,Tmp,Stpはトライステート出力の64ビットレジスタで,出力は8ビット幅のバス構造になっています。2の加算回路構成であるOx-Add及びXxの加減算部への対応のため,8ビットずつ,8回に分けた時分割出力としています。さて式(1-4)の乗算項は,もちろん乗算する必要はありません。x=0に対応するOrgを初期値として,これにStpを加算し,結果をXxの加減算部へ送ると同時にTmpへ保存します。このTmpとStpの加算と保存をxの1増加毎に行うことでCxを生成します。これがCx生成法の基本ですが,パイプラインへの対応のためもう一工夫します。Andは8個のAndゲートで構成されており,8ビットデータ(S)をそのまま通過させるか(×1),または出力を0とするか(×0)を制御するためのゲートです。Xxの加減算部には,反復演算によりPEとPDのデータが交互に回ってきますので,Cxの値もそれに同期して交互に生成する必要があります。このため,まずTmpにはPEに対応するCxだけが保存されるようにします。そしてStpは常時出力しておき,Andの制御により0を加算するかSを加算するかを切り替えます。この間,Tmpは変更されません。そしてピクセルペアの処理終了時に,TmpにSを2回加算します。反復終了時のPDに対応する出力Cx+SをTmpに保存し,さらに続いて開始される次のピクセルペアの処理の第1サイクルでAndを1にすると同時に出力をTmpにロードします。これで,次のピクセルペアに対するTmpが準備されます。ここの動作はOxと同様ですが,パイプラインに関する処理が不要なのでその機能はありません。単純にyの1増加毎にStpとTmpの加算と保存を行って,Cyを更新しています。Oyのブロック図を図4-8に示します。また,2乗の前の式(3-3)のチェックがあります。ブロック図を図4-9に示します。ブロック図を図4-10に示します。ここには,Zyの2乗のための乗算回路と,Zx2+Zy2のための加減算回路があります。ブロック図を図4-11に示します。ここには乗数,被乗数レジスタはありません。Xx,Yy内のレジスタ出力を同時に利用する事で,無駄な回路を省いています。CnはPyxis各部の制御信号すべてを生成している部分で,次の3部分より構成されています。表4-1に,内部レジスタの一覧を示します。これら内部レジスタへのインターフェース回路,アドレスデコーダなどが主な内容です。ここは,制御信号を生成するために必要となる,内部状態をカウントする同期カウンタ部です。機能上これは4つに分けられており,分周比の小さい方から,(a)パイプライン1段の中の処理クロックである,
しかし回路構成上では,この4つはシーケンシャルに接続された52ビットの完全同期カウンタになっており,12
5MHzの共通クロックで動作します。
通常の回路構成ではこのビット数を12
5MHzでカウントすることはできませんので,ちょっと凝った回路にしてみました。カウンタICに非同期キャリー出力のLS161を13個使用し,それ1個にANDゲートを2個ずつ付加して桁上げ先見しています。これにより飛躍的にクロックレートを上げることができます。原理は簡単ですので説明は省略します。回路図を参照してください。ここは,次の3つの部分で構成されています。前項のCn-Cntの出力を受けて,Pyxis各部の状態を制御する信号を生成,出力する部分です。設計当時の資料ですが,この制御信号と出力条件の一覧を付録1に示します。3で説明した反復演算の終了処理に関する部分です。正直言って,ここの動作は複雑すぎて簡単に説明できません。この反復演算の終了シーケンスには10通りの場合があり(CPUの読み出しが遅い場合の一時停止の有無や,式(1-5)判定回路3つからの信号のパターン,PEが先に終了,PDが先に終了・・・の組み合わせ),そのそれぞれについての動作があります。設計時にも,動作,タイミングの検証にずいぶん時間がかかりました。ピクセルペアPE,PDのそれぞれに対する演算結果がストアされるレジスタです。ホストの処理を軽減するため,反復がNMAX回行われたかどうかを示す1ビットのフラグMAXCNTが,結果のMSBにアサインされています。
リセットレジスタ(ビット0のみ有効:1でリセット)
演算終了ステータスレジスタ(ビット0のみ有効:1で終了)
Pyxisの回路図はOrCADの階層構造を使ってかかれており,4階層全67枚で構成されています。1枚1枚がそれぞれ機能ブロックになっており,図面番号がその機能ブロックの内容を表現しています。
○図面番号の付け方
・図面番号はファイル名と共通で,最大8文字
・第2階層以下は,機能ブロックの名称を次のように付ける。第3階層は3文字で,所属する第2階層名称の後に付加する。
第4階層も同様
ここまでの説明の中で出てきた各機能ブロックの名称はこのような形で図面番号と対応しており,それぞれ階層と機能がわかるようになっています。付録5に回路図の階層情報を示します。△ページの先頭へ戻る。
4 略記号について
3 動作の概要
1 演算フローの検討
2 数値のデータ表現
機能ブロックの解説
1 タイムチャートの表記法
2 設計目標との対比
付録1 制御信号と出力条件
付録5 回路階層と機能説明
タイミング設計として本章を設けましたが,具体的な回路の動作タイミングの説明については非常に繁雑となるため省略します。それに関してはタイムチャートを示すことにとどめ,ここではそのタイムチャートの表記法について説明します。そしてそれが,デバイスの実力値をあてにせず最大遅延時間に基づいたものであることにより,動作タイミングがきちんと確認されていることを示します。
1 タイムチャートの表記法
この表記法は筆者の自己流で,従来より長く使っているものです。簡単ですが正確で便利な書き方ですので紹介します。このように,最小遅延時間を最小時間単位に設定して導入し,その表記法と併せてそれを明示しています。わずかな工夫ですが,これにより信号の遷移状態とともに信号がいつ確定し,いつまで有効なのかがひと目でわかるようになっています。また,最小遅延時間を0でなく1/2最小目盛りとすることによって,連動している複数の信号遷移の従属関係も表現できます。設計当時に作成したタイムチャートをそのまま示します。
リセット状態から,リセット解除後反復1回分の全体の動作を検証するためのもの
ピクセルペアの処理終了時の動作を検証したもの
乗算回路のタイミングを検証したもの
Xxの加減算部のタイミングを検証したもの
以上の表記法とタイムチャートにより,最大遅延時間に基づいたワーストケースの動作タイミングを確認しています。△ページの先頭へ戻る。
4 略記号について
3 動作の概要
1 演算フローの検討
2 数値のデータ表現
機能ブロックの解説
1 タイムチャートの表記法
2 設計目標との対比
付録1 制御信号と出力条件
付録5 回路階層と機能説明
配線にはラッピングワイヤーを使用し,すべて手ハンダ,手配線で行いました。後になってネットリストから数えてみたところ,5000本以上あったようです。配線だけで半年かかりました。
趣味でやっているのですから文句も言えませんが
4枚の各基板は,上部の4カ所と下部の2カ所のMILコネクタを介して接続されている。右側の2カ所のコネクタは,2枚目と3枚目の基板を接続している。
左上の小さなコネクタは電源供給用,左下はホストとの接続用
配線材であるブルーのラッピングワイヤーが見える。すべて手ハンダによる。
基板上で横に走っている銀のものは,グランド補強用のスズメッキ線
レイアウトは紙上シミュレーションして決めてあるので,繁雑になりやすい制御回路にもかかわらず配線はすっきりしている。
下の黒いシャーシがホスト(自作8ビット機)
本レポートの描画画面の写真は,このコンピュータによるもの
現在も健在です。△ページの先頭へ戻る。
付録5 回路階層と機能説明
4 略記号について
3 動作の概要
1 演算フローの検討
2 数値のデータ表現
機能ブロックの解説
1 タイムチャートの表記法
2 設計目標との対比
付録1 制御信号と出力条件
付録5 回路階層と機能説明
Pyxisの回路図は、機能ブロックごとに分割された4階層、全67枚で構成されています。第1章〜第4章の解説と併せてご覧ください。なお、以下のリンクは全てTIFF形式の回路図です。8ビット幅のデータバスを通してホストと接続される。
ピクセルごとの実軸座標を生成
反復計算中は、パイプラインで同時に計算されている2ピクセル分の実軸座標をパイプラインに同期して生成する。反復計算において、同一ピクセルに対するCxは定数であり、また奇数側ピクセルPD用のCxは偶数側ピクセルPE用のCxからリアルタイムに生成されるので、Oxブロック内にはパイプラインレジスタは存在しない。OxAddとOyStpの間に位置し、パイプラインに同期して、ステップ幅Sを加算するかしないかを制御する。パイプラインが偶数側ピクセルPEの時には、ゲートを閉じてOxAddへの入力値を0にし、OxOrgまたはOxTmpの値がそのままPE用のCxとして使用されるようにする。ピクセルペアの処理が終了して次のピクセルペアへ移行する際にも、ゲートを開けて新しいCxが生成されるように制御する。描画領域の左下隅の実軸座標を保持する。データは64ビット固定小数点(整数部4ビット+小数部60ビット)で、ホストによりCPUバスを通して設定される。
このOxOrgが使われるのは、描画対象領域の左端のピクセルペアの処理時のみ
その時に限り、偶数側ピクセルPE用のCxとして出力される。出力はOxAddに同期して、下位側から8ビットずつ8回に分けて出力される。実軸側の処理進行に合わせて、偶数側ピクセルPE用のCxを保持する。レジスタ値は、ピクセルペアの処理終了時に、その時点でのCxにステップ幅Sを2回加算して生成される。このレジスタの値が使われるのは、描画対象領域の左端以外の処理時である。その時に、OxAddに同期して下位側から8ビットずつ8回に分けて出力される。またその時、OxOrgからの出力は行われない。
ピクセルごとの虚軸座標を生成
Cy値は実軸のスキャンの終了ごとに更新される。Oyブロック内にはパイプラインレジスタは存在しない。
1ピクセル分の座標差分値(ステップ幅)
データは64ビット固定小数点(整数部4ビット+小数部60ビット)で、ホストによりCPUバスを通して設定される。各ピクセルは正方形とみなされるので、CxとCyの両方にこの値が使用される。描画領域の左下隅の虚軸座標を保持する。データは64ビット固定小数点(整数部4ビット+小数部60ビット)で、ホストによりCPUバスを通して設定される。
OyOrgが使われるのは、描画対象領域最下端のピクセルの処理時のみ
その時に限りCyとして出力される。出力はOyAddに同期して、下位側から8ビットずつ8回に分けて出力される。虚軸側の処理進行に合わせて、各ピクセル用のCyを保持する。レジスタ値は、実軸のスキャン終了時に、その時点でのCyにステップ幅Sを加算して生成される。このレジスタの値が使われるのは、描画対象領域の最下端以外の処理時である。その時に、OyAddに同期して下位側から8ビットずつ8回に分けて出力される。またその時、OyOrgからの出力は行われない。それぞれのステージはリング状のパイプラインになっており、PEとPDの2ピクセルを同時に処理する。算出したZx2は、ここXxだけでなくRrブロックの加減算ステージへも送られて使用される。同様に、ここで使用するZy2の値は、Rrブロックの乗算ステージの計算結果である。
Zx2残留桁上げ加算回路
この加算結果が目的とするZx2であり、続く加減算ステージで使われると同時に、Rrでも使用される。
桁上げ保存加算器に2の補数回路を付加したもの
ZxからZx2を計算する乗算ステージ
64ビット固定小数点データ同士の乗算を32クロックで実行する。68ビットの桁上げ保存加算器と32ビットの桁上げ保存レジスタで構成される。
詳しい動作は図4−6を参照
部分積の累和を保存する66ビットのレジスタ
乗算のための乗数、被乗数レジスタ
両者とも、前段加減算ステージの最終結果を保存するパイプラインレジスタとしても機能している。Zx2を求めるため、両者とも同じ値Zxがロードされる。
被乗数Zxを保持する64ビットのレジスタ
2の補数用1生成回路
2の補数にするためには1を加える必要があるので、乗数の3ビットをデコードし、そのための1を生成する。2次のBoothアルゴリズムを実行するための3ビット乗数を生成する。偶数番ビット用と奇数番ビット用の2つのシフトレジスタで構成されており、1クロックで2ビットずつシフトできる。このシフト出力は同時にYyブロックでも使用される。乗算ステージの結果は、部分積32個の累和と、その桁上げ加算器に残った残留桁上げの2つに分離した状態で得られる。続く加減算ステージの先頭にて両者は加算され、所望の乗算結果となる。このブロックはパイプラインレジスタとしても機能している。
部分積32個の累和を保持する64ビットのレジスタ
値のロードは64ビット同時に行われ、出力は続く加減算ステージの動作と同期して8ビットずつ8回に分けて行われる。
Zx2用残留桁上げレジスタ
XxMulAddの桁上げ保存レジスタに残った残留桁上げを保存する32ビットのレジスタ
部分積の累和において、桁上げは1ビットおきにしか発生しないため、常に0となるビットを省いた32ビット構成となっている。値のロードは32ビット同時に行われる。出力は、省略していた1ビットおきの0を挿入しながら、続く加減算ステージと同期して4ビットずつ8回に分けて行われる。それぞれのステージはリング状のパイプラインになっており、PEとPDの2ピクセルを同時に処理する。この加算結果が目的とする2ZxZyである。64ビット固定小数点データ同士の乗算を32クロックで実行する。68ビットの桁上げ保存加算器と32ビットの桁上げ保存レジスタで構成される。
詳しい動作は図4−6を参照
部分積の累和を保存する66ビットのレジスタ
乗算のための乗数、被乗数レジスタ
両者とも、前段加減算ステージの最終結果を保存するパイプラインレジスタとしても機能している。
被乗数Zyを保持する64ビットのレジスタ
2の補数用1生成回路
2の補数にするためには1を加える必要があるので、乗数の3ビットをデコードし、そのための1を生成する。2次のBoothアルゴリズムを実行するための3ビット乗数を生成する。偶数番ビット用と奇数番ビット用の2つのシフトレジスタで構成されており、1クロックで2ビットずつシフトできる。このシフト出力はYyブロックでは使用されず、Rrブロックへ送られる。乗算ステージの結果は、部分積32個の累和と、その桁上げ加算器に残った残留桁上げの2つに分離した状態で得られる。続く加減算ステージの先頭にて両者は加算され、所望の乗算結果となる。このブロックはパイプラインレジスタとしても機能している。これにより2ZxZyにおける2倍を瞬時に実行している。
部分積32個の累和を保持する64ビットのレジスタ
値のロードは64ビット同時に行われ、出力は続く加減算ステージの動作と同期して8ビットずつ8回に分けて行われる。
YyMulAddの桁上げ保存レジスタに残った残留桁上げを保存する32ビットのレジスタ
部分積の累和において、桁上げは1ビットおきにしか発生しないため、常に0となるビットを省いた32ビット構成となっている。値のロードは32ビット同時に行われる。出力は、省略していた1ビットおきの0を挿入しながら、続く加減算ステージと同期して4ビットずつ8回に分けて行われる。それぞれのステージはパイプラインになっており、PEとPDの2ピクセルを同時に処理するが、このブロックの計算結果は反復演算で使用されないため、XxやYyのようにリング状にはなっていない。算出したZy2は、ここRrだけでなくXxブロックの加減算ステージへも送られて使用される。同様に、ここで使用するZx2の値は、Xxブロックの乗算ステージの計算結果である。
Zy2残留桁上げ加算回路
この加算結果が目的とするZy2であり、続く加減算ステージで使われると同時に、Xxでも使用される。
ZyからZy2を計算する乗算ステージ
64ビット固定小数点データ同士の乗算を32クロックで実行する。Rrブロックに乗数、被乗数レジスタは無い。共にYyブロック内のデータを利用する。68ビットの桁上げ保存加算器と32ビットの桁上げ保存レジスタで構成される。
詳しい動作は図4−6を参照
部分積の累和を保存する66ビットのレジスタ
乗算ステージの結果は、部分積32個の累和と、その桁上げ加算器に残った残留桁上げの2つに分離した状態で得られる。続く加減算ステージの先頭にて両者は加算され、所望の乗算結果となる。このブロックはパイプラインレジスタとしても機能している。
部分積32個の累和を保持する64ビットのレジスタ
値のロードは64ビット同時に行われ、出力は続く加減算ステージの動作と同期して8ビットずつ8回に分けて行われる。
Zy2用残留桁上げレジスタ
RrMulAddの桁上げ保存レジスタに残った残留桁上げを保存する32ビットのレジスタ
部分積の累和において、桁上げは1ビットおきにしか発生しないため、常に0となるビットを省いた32ビット構成となっている。値のロードは32ビット同時に行われる。出力は、省略していた1ビットおきの0を挿入しながら、続く加減算ステージと同期して4ビットずつ8回に分けて行われる。
システムの各種制御信号を生成するブロック
ホストインターフェースを含む。
25MHzのクロックから各種制御信号を生成するブロック
主に反復演算の終了制御を司る。反復演算の終了シーケンスには、ホストの読み出しが遅い場合の一時停止の有無や式(1-5)判定3回路からの信号パターン、PEが先に終了、PDが先に終了などの組み合わせにより10通りの場合があり、そのそれぞれにおける終了シーケンスを制御する。
ピクセルペアPE、PDそれぞれの演算結果が格納される2本の16ビットレジスタ
ホストの処理を軽減するため、発散の有無を示す1ビットのフラグMAXCNTがMSBにアサインされている。
よって最大反復回数は15ビット、32767回まで計算可能
CnCntの状態を受けて、各種制御信号を生成する。
システムの内部状態を規定し、各種制御信号を生成するための52ビット完全同期カウンタ
5MHz単一クロックで動作する同期カウンタとして構成
部分積加算クロックカウンタおよびピクセルペア区別用カウンタ
部分積加算クロックカウンタは5ビット
ピクセルペア区別用カウンタは1ビット
描画領域の実軸方向ピクセルカウンタ
描画領域の虚軸方向ピクセルカウンタ
内部レジスタやステータスへアクセスするための、8ビットCPUバスに直結できるインターフェース回路
△ページの先頭へ戻る。内容の説明 -
思い立ったきっかけ〜完成まで
数学が得意な、ある学友が教えてくれたのが、この魅惑の世界[マンデルブロ集合]でした。とてもシンプルなひとつの数式から、無限に複雑でかつ美しい模様が生まれることの不思議さに、たちまち虜になりました。
しかし当時のマシンスペックといえば、冒頭のとおり
現在のようなオンチップの浮動小数点演算ユニットなんて考え及びもしなかった時代です。1枚の画像を得るのに一昼夜以上かかることはざらでした。しかも、描いてみないとどんな絵になるのかわかりません。一晩待って「ガッカリ」ということもざらでした。
『これは耐えられん・・・』
というわけで、マンデルブロしか能がない、でも高速な専用ハードウェアを作ってしまいました。・・・ と文章で書くと1行なのですが、完成までに実に丸2年かかりました。家賃5千円の格安下宿とパンの耳で生きていた貧乏学生にとって、まずは予算が問題でした。当然プリント基板化なんて有り得ません。出費は労力でカバーです。
"部品代だけで3万円まで"を目安に、手配線で作れることを前提条件として、できるだけ好成績が得られる回路を考え始めました。講義に出てもうわの空です。TTL IC規格表を持ち歩き、難解なパズルを解くように、ひたすら回路を考えてました。そして設計完了から約半年、延々とユニバーサル基板に手配線しました。もちろんオシロやロジアナなどの測定器は持っていませんでした。回路の規模や複雑さを考えると、実際に形になってからミスを見つけ出すことはまず不可能と思われました。そのため、一発完動を目指して、ゆっくりと時間をかけて作業しました。幸いにも時間はありましたので、ミスの無いように慎重に、慎重に事を運びました。永かった配線作業が終わり、取り急ぎテストプログラムを書いて、マンデルブロの「雪だるま」が表示されたとき ・・・
・・・ うれしかったですね
これは筆舌に尽くせません。結果は以下の通りです。
ホストとのインターフェースは8ビットCPUバス形式
まず実行に先立って、ホストにより描画領域の左下隅の複素座標と、ピクセル間隔、最大反復回数をそれぞれレジスタに設定しておく。その後実行開始フラグをセットすると計算が開始される。マンデルブロ集合の漸化式に従って、発散するとみなされるまでの反復演算回数が計算され、結果レジスタに返される。計算は描画領域の左下隅から右へ400ピクセル、上へ320ピクセル分が自動的に順次実行される。実行開始後、ホストは各ピクセルの計算完了フラグ及び結果レジスタを読み出して、反復回数に従った色で画面に順次描画していくだけでよい。
・回路構成の概要
漸化式の反復計算を実行する5つの演算ループと、全体の制御回路で構成される。各演算ループは2段のパイプラインになっており、2ピクセル分が同時に処理される。
2次のBoothアルゴリズムによる64ビット乗算回路3個、キャリー保存型加算回路8個、同減算回路1個、発散判定回路3個
○かかった費用
400ピクセル×320ピクセル全てがマンデルブロ集合に含まれる場合(=ワーストケース)で、最大反復回数を256回とした時、比較対象1をホストとして ・・・ 83
となりました。そして、完成からずっと後の1994年に、CQ出版社の『インターフェース』誌上で開催された『ハードウェア設計コンテスト』の自由課題部門において、優秀賞をいただくことができました。Pyxis は361個もの標準TTLを使用し、ユニバーサル基板上に手配線で仕上げたシステムです。1986年から88年にかけての丸2年間、まさに寝食を忘れて没頭し、ばかばかしいほどの労力を注ぎ込んだ作品を見てやってくださいませ。タカチのアルミケースに入っています。
中身の力の入れように対して、いたってシンプル
というか、それ以上に、ケースに入れたのはずっと後になってからでした。
それまでは基板むき出し
上ふたを開けると不気味に基板が現れます。コネクタ配置の都合で、ハンダ面が上になっています。Pyxisは4枚の基板で構成されています。それぞれの主な役割は以下のとおりです。基板は4枚ともタカス電子製作所のA-711-998というユニバーサル基板を使いました。その上に361個のTTLをびっしり並べました。
この基板を選んだ大きな理由は『片面がベタ』だから
大型基板4枚に分かれたTTL361個の同期回路を安定して動作させるには、まず安定した電源系が不可欠です。
オシロも無いのにノイズに悩まされたりするのは絶対に避けたかったので、グランドとしてこのベタを使い、さらにφ0
8のスズめっき線をメッシュ状に這わせて強化してあります。
基板−はんだ面
青く見えているのが配線です。完成後、何本くらいあるのか気になったのでネットリストから推定してみたところ、5〜6,000本くらいあるようです。部品配置をどんなに工夫しても、ある程度配線が錯綜するのは避けられません。経路が遠回りにならない範囲でできるだけ集中しないように配線しました。また後からコテを当てるとき除けられるように少し浮かせてあります。
自分で言うのもなんですが、結構きれいでしょ
結局配線好きなんです。
・・・救われませんね
配線に使用したラッピングワイヤです。銀メッキの絶大なる威力により、ハンダのノリが抜群のスグレモノです。一度これを使ったら、もう他のワイヤは使えません。
詳しくはこちら愛用の工具と材料
Lynxと接続して動作しているところをビデオに撮ってみました。専用ハンドリングソフトウェア[ MP ]のオープニングです。
4MHzクロックのZ80マシンとは思えない速度でマンデルブロ集合が現れることがわかっていただけますでしょうか
今となっては遅く感じてしまいますが、当時はこれでもめちゃくちゃ速かったんです。
何しろソフトだけで描かせると一晩かかったんですから
ところで、ご覧の通りLynxではデジタル8色しか表示できないので色がさびしいです。Pyxis自体は最大反復回数として32767まで設定できますので、ホストが対応していればフルカラーに近いグラデーション表示が可能です。
実はPyxis用のISAインターフェースボードとWindows用ハンドリングソフトも作ってあって、本当はもっときれいなデモをお見せすることは可能なのですが、いかんせん今使っているマシンのマザーボードにはISAが無いのです・・・
以上、外観のご紹介でした。
より詳しい内容についてはハードウェア設計コンテスト 最終レポートのページへどうぞ
今、改めて見ると、我ながら『よく作ったなあ・・・』という感じです。これまでいろんなものを作ってきましたが、この Pyxis だけは二度と作れません。△ページの先頭へ戻る。
確か2004年の初め頃、ネットをうろうろしていたときに、その時からTimpyはスタートしました。ベタですみません。
当初の目的は「コード巻取り型ヘッドフォンに完全に内蔵すること」で、2004年9月、Rev2
1で達成できました。そしてその後も少しずつ、姿かたちを変えながら、11作目を数えるまでになりました。市販品とは違う、世界にひとつしかない『自分好みのMP3プレーヤ』にこだわった連作です。
このときはバッテリに適当なものが無かったので、1
5V系電池1個で動作するようにDC/DCが載っています。
バッテリをリチウムポリマに変更
小型軽量で実用になる電池を探しに探して、ようやく見つけた『リチウムポリマ』を採用したタイプです。7VあるのでDC/DCが不要となり、替わりにシリーズレギュレータを載せました。0のものを流用しています。
ヘッドフォンに内蔵
松下のコード巻き取り式ヘッドフォンを改造して、Rev2
0の機能を全部詰め込みました。充電用のDCジャックも見えにくいところにちゃんと付いています。当初からの目標であった「ヘッドフォンへの内蔵」を実現できた記念モデルです。
これまで使用していたVS1001からかなり改良されていて、○電源ON/OFF時のポップノイズが出ない → 外付けのアナログスイッチによるミュート回路が要らなくなる。○MP3データの途中からでも安定して再生できる → 本当の早送り/巻戻しが可能になる。などのメリットがあります。
0の基板を無理やりに流用していたので、Rev3
0として新しく基板をおこしました。以前と比べて、回路はさらにシンプルになっています。オーディオテクニカの高級ヘッドフォン、ATH-EM7に組み込んだタイプです。
ネックコード巻取り式ではないので、ヘッドフォン内部に何かを組み込むスペースがないのですが、0の基板を組み込んでみました。
FMチューナ、ワイヤレスリモコンを追加
0に、FMチューナとワイヤレスリモコンを追加したタイプです。0にUSBとバッテリ充電回路を追加しました。ヘッドフォンにセットされたmicroSDカードを、PCからリムーバブルディスクとしてアクセスできます。カードを本体にセットしたまま、エクスプローラなどでファイル管理ができるようになりました。同時にUSBバスパワーで内蔵バッテリを充電します。
ヘッドフォンをカナル型に変更
MP3プレーヤ本体は耳かけ型で、ヘッドフォンはインナーイヤーを採用したタイプです。0と同機能のプレーヤ本体とネックコード巻き取り機能を、耳かけ型ヘッドフォンの片側に詰め込みました。
うっとおしいプラグコードや別置きの本体が要らない耳かけ型プレーヤの快適さを維持しつつ、音漏れの心配がないヘッドフォンで音楽を楽しむことができます。
ちょっと寄り道で超小型化を
0はちょっと寄り道のバージョンです。新しいデコーダチップVS1053bの評価も兼ねています。
これだけ小さいと、どこにでも入ってしまいそう
0の本体にディスプレイを集積
0の機能を維持しつつ、耳かけ型のプレーヤ本体に表示デバイスを集積しました。ヘッドフォンは音漏れが少ないインナーイヤータイプ、プレーヤ本体はネックコードが巻き取れる耳かけ型という特徴はそのままに、赤外線リモコンのディスプレイ機能をヘッドフォン本体に内蔵しています。ちなみにディスプレイは外側ではなく内側に付いています。プレーヤ本体とヘッドフォンが分離しているからできるワザです。
0の機能を超小型・木製スピーカボックスに収納
携帯ストラップでぶら下げられるほど小さな木製スピーカボックスに、Rev8
0相当の機能を詰め込みました。
・有機ELディスプレイ付き
つまり、卓上や手のひらで鳴るFMラジオ付きMP3プレーヤです。サイズが小さいですから音質はそれなり、音量も小さいです。それでもがんばって鳴っている様子はとっても健気です。ページの先頭へ戻る。Timpyに関連するリンクを集めてみました。
併せてこちらもどうぞ
【放課後の電子工作 リンク集】
》自作MP3プレーヤのお友達
ここでは掲示板を通してお知り合いになれた方々の作品をご紹介しています。MP3プレーヤを自作されているみなさま、良かったら掲示板にてお知らせくださいませ。0が動作することを実証されました。
現在EAGLEで基板を設計中とのことですので,この実証をステップとしてさらに素敵な形に結実することでしょう
ごとーさんの目標はなんと25mm角です。その小ささはご覧のとおりです。うーん、これは小さい。ニッケル水素のバッテリを含め、FRISKのケースに見事に収まってます。プロセッサにはAVRを使用されています。
回路図はこちらへ
すでに2号機を検討中とのことです。この基板、何と片面基板なんです。さらに裏面には操作スイッチとクリスタルしかありません。マイコンを使わずに、VS1011eに全てを制御させる構成になっているため、驚異的にシンプルな回路に仕上がっています。FATについて知りたい方はここの解説ページが必見です。
ゆきの研究室
VS10xxシリーズによるユニークなMP3プレーヤーをいろいろ製作されています。テーマや説明、HPの作りなど、全てにおいて親切丁寧で分かりやすく、親しみやすいHPです。MP3について非常に詳しく説明されています。【2005年11月追記】 とても貴重な情報源だったのですが、現在閉鎖されているようです。WebArchiveから過去のスナップショットを得ることはできますが、残念ながら図などが残っていません。実に惜しいです。キットの販売もしています。貴重なFATの仕様書です。グラフィカルなディプレイ付きやUSB接続型など、いろいろなMP3プレーヤーの情報が公開されています。条件付きではありますが、オートルータつきの基板設計CADがフリーで使えるなんて、夢のようです。しっかり使わせていただきました。使用法についての日本語の説明はここがとても詳しいです。フィンランドにある会社です。0以降でお世話になっているFMチューナモジュールNS953Mのメーカです。リチウムポリマ電池は非常に高いエネルギー密度を有し、小型軽量で組み込みに適した高性能な二次電池です。ヘッドフォン内蔵型MP3プレーヤが実現できたのは、このバッテリのおかげといっても過言ではありません。ところで、個人で購入できるリポのほとんどはラジコン用です。ラジコン屋さんへ行くとさまざまな電圧や容量のリポが手に入ります。でもその多くは比較的大容量(500mAh以上)のものです。Timpyで採用しているような200mAh前後の単セルはなかなか見つかりません。以下に私が利用したショップを挙げてみました。この他に小容量(150mAh〜300mAh程度)の単セルを扱っているお店をご存知の方、ぜひこちらへ情報をお寄せください。その後時々チェックしているのですが最近小容量の単セルは扱っていないようです。
写真はもう手に入らない貴重な()未使用品です。所在地はフロリダでした。ここのブランドのバッテリはMagic RCでも扱われてました。現在はどちらもHPを閉鎖しているようです。ここは挙げようかどうしようか迷ったのですが、挙げておきます。注文して代金を振り込み、注文受付のメールが来たのですが、その後いつまでたっても商品が届きません。
何度もクレームのメールを送ったのですがナシのつぶて
個人的にはお勧めできません。神奈川県藤沢市にあるお店です。さすがはインドアプレーン用、10mAhなんていう小容量のものから、いろいろなサイズを取り揃えています。こちらは香港のショップです。格安なので大丈夫かなと思いながら注文してみましたが、何の問題も無くちゃんと送られてきました。2mm厚という珍しい薄型のもの(写真左下)もあって、使う予定も無いのについ買っちゃいました。
格安なのは自社製品だからということでしょうか
最近見つけたのでまだ利用してないのですが、hexTronik製のリポを各種扱っています。所在地は札幌です。米国ミズーリ州にあるショップです。
関係ないですが実務はオーナーの奥さんが担当しているとのこと
家族経営なのでしょう
『日曜日は電話しないでね』の注記がほのぼのです。米国ユタ州にある会社です。品揃えがとても豊富なので、二次電池を探している人は一度チェックしてみて損は無いと思います。例えば写真のような、厚さ1mm以下という薄型の小売は他で見たことがありません。またリチウムポリマだけでなく、コイン型のリチウムイオンなども各種扱っています。この情報は上のお友達コーナーでもご紹介しているポチさんからいただきました。ありがとうございました。さて、以下はお約束の注意事項です。リポは高性能である反面、取り扱いに注意しないと危険な代物でもあります。乾電池のように金属ケースに入っているものと違って、リポの表面はラミネートフィルムで覆われているだけです。したがって例えばカッターの刃が当たったりすると簡単に外皮が傷つきます。内部に刃が入ってショートしたりするとおそらく大変なことになります。
仮に刃物でなくても、組み込みの際に基板のはんだ面に押し付けたりするのは・・・危ないですよね
また正しく充電しないと危険であることもよく知られています。
例えばこちら
怖いですねー
不適切な充電による発火実験はいくつか目にしたことがありますが、いずれもリポのパワーを別な形で見せつけられるものばかりでした。私自身十分に注意しているつもりですが、過放電でバッテリを膨らませたり、うっかりショートさせてリード線を焼き切ったりしたことがあります。全く冷や汗ものです。
『これは画期的』と思って早速購入
試しにライターの火であぶってみましたら、残念ながら穴が開いてしまいました。(^^;;; 確かに自己消火性はあるようですが、どれほどの効果があるのかは甚だ疑問です。まあこのバッグの効果はさておき、このようなものが商品化されるくらい注意が必要なことは確かだと思います。
多くのショップでは使用上の注意を併記していますので、よく読んで安全第一でどうぞ
また最近はリポ対応の充電用ICが手に入るので充電回路を自作する人もいるでしょう
動作確認はどうか慎重にお願いします。
》電子部品のお店
秋葉原などで手に入らない部品は、通信販売を使って世界中からかき集めることになります。
しかし毎度のことですが、個人で部品を集めるのって大変です・・・
○電子部品関連のショップ情報はこちらへ移動しました。
【放課後の電子工作 リンク集】
△ページの先頭へ戻る。
私はポータブルMDプレーヤーも持っているのですが、大きな本体、それにヘッドフォンと本体をつなぐコードがうっとおしくて、使わなくなってしまいました。コードが引っかかったりした時の、引きつれた感じがいやなのです。
「これとCygnalのCPUを組み合わせればヘッドフォンに内蔵できるかも・・・」
と思いついたのがことの始まりでした。ですので、この【MP3プレーヤー内蔵ヘッドフォン】がTimpyのひとつの完成形です。ヘッドフォンには松下の、コードが収納できるタイプを使いました。
電車の中で、絡まったコードと格闘している人、見かけませんか
うっとおしいだろうなぁと思ってしまいます。
せっかく本体とのコードを無くすんですから、左右をつなぐコードもすっきりさせたいところなわけで、当初からこのヘッドフォンへの内蔵を狙ってました。耳掛け式は持って歩くのにもかさばらなくて理想的です。0と同じなのでこちらを参照してください。完成しました。コード巻き取り機能を持つ松下のヘッドフォンRP-HS102の中に何とか詰め込みました。右耳用はネックコードを巻き取りますので無改造です。左耳用内部の機器接続用コードを巻き取る機構をすべて取っ払って、さらに追加工しまくって組み込みました。ある程度は事前に当たりをつけていたのですが、バッテリがリチウムポリマになったことで予定よりも大きくなってしまったので、入れるのに一苦労でした。0同様の操作スイッチが付けてあります。カードをセットするとこんな感じになります。ほとんど中に収まってしまいます。小指の先でカードを少し押し込むとイジェクトされます。
バッテリの充電
コネクタの種類や組み込み方などいろいろと悩みましたが、何とかうまく市販のDCジャックを組み込むことができました。写真は充電中の様子です。もともとは、この穴にフォンプラグを刺すとコードが巻き取られる仕組みになっていました。巻き取り機能は不要(というか、すでに無い)なので、その穴を利用して充電用のDCジャックを付けました。その右は電源スイッチです。いくら省電力モードになっていても放っておくと過放電の恐れがあるので、機械式にスライドスイッチを設けることにしました。ケースを削って、ジャック本体ができるだけはみ出ないようにしています。もちろんDCジャック側も思い切り削ってあります。ケースはDCジャックの近くにあるネジを1本はずすと開くようになっています。前面の操作用タクトスイッチは、補強のため小さく切った基板にはんだ付けして配線した後、ケース裏面にエポキシで接着してあります。メイン基板はイヤーパッド側のプラスチック部分を大きく切り取ってはめ込んであります。バッテリはそれらの隙間にちょうど入るようになっていますが、前面のケース内側をかなり削りました。メイン基板が収まっている様子です。
寸法ぴったりすぎ
4色の操作ボタントップ、実は・・・
0でも使っていますが、4色の操作ボタンの押すところには、実はこれが貼ってあります。本来は女の子たちがケータイの飾りに使うためのシールなんだと思うのですが、色・サイズ・ふくらみ具合がちょうどいいのです。新宿の東急ハンズで見つけました。
(実際の操作ボタン部分の細工はもう少し複雑なのですが省略します)
ページの先頭へ戻る。MP3デコーダチップを新製品のVS1011に変更したタイプです。VS1011はデコーダ部の性能が向上しているらしく、安定して曲中レジュームができるようになりました。併せて部品点数の削減も可能となったので、基板を設計しなおしました。回路はとってもシンプルです。機能的にもいろいろと改善、追加して、より実用的になっています。
特に理由があったわけではなくて・・・、ちょっと作ってみたかっただけ
*耳かけ式ヘッドフォン型のMP3プレーヤです。かばんの中でもかさばりません。*巻き取り式なので、コードが絡まってイライラすることはありません。
*前回停止したところから再生します(曲中レジューム)
*早送り系の操作として、曲ごとの送り/戻し、フォルダごとの送り/戻し、曲やフォルダをまたいだ早送り/巻き戻し(送り中のプレビュー付き)ができます。*好きなところにマーカを1箇所設定して、ジャンプできます。*1曲リピート、全曲リピートができます。*ラウドネス機能を持っています。12種類の周波数特性からお好みで選べます。*充電式バッテリ(リチウム・ポリマ電池)を内蔵しています。*バッテリの電圧が低下すると、自動的に省電力モードになります。*カード込みで約45gと軽量です。電源ON/OFF時のポップノイズが低減されている。アプリケーションノートの手順どおりにやってみました。確かに、密閉式のヘッドフォンでもノイズはほとんど聞こえません。
開放型のヘッドフォンなら全然問題にならないでしょう
これで外付けのアナログスイッチを省略することができます。MP3データの途中からでも安定して再生できる。1までで実際にやってみた感じだと、9割以上の確率で途中からの再生はできるのですが、早送り/巻戻し操作となるとやはりすぐにミュートしたまま無反応になってしまいます。VS1011ではこの不具合は確かに改善されていて、ようやく本当の早送り/巻戻しができるようになりました。なお、サポートからの同メールにあったのですが、データ途中からの再生をする場合にはデータに先立って2048バイトの0を送っておく必要があるとのことでした。これはデータシートやアプリケーションノートには書いてありませんので要注意です。
ひとつ気になったこと
VS1011は確かに安定はしているのですが、データ途中からの再生の開始直後に出てくる音が一瞬ですが変になります。これも後でテクニカルサポートに問い合わせてみようと思っています。これはVS1001で必要だったBSYNCの代わりにxDCS信号を使うことで、データ送出も通常のSPIポートとして扱えるようになるものです。BSYNCは生成がちょっと面倒なので、これが不要になるとソフトウェアの簡単化ができます。Native Modeでは仕様上このような利点があるのですが、私が試したところ、そんなことより大きなメリットがあることに気が付きました。明らかに違います。詳しい説明はこちらのデータシートをご参照ください。VS1011に変更したことで、回路をさらにシンプルにすることができました。0の基板を無理やり流用していたので、この機会に基板を設計しなおしました。0はとてもシンプルな回路になっています。新しいパーツライブラリ、デザインルールファイルも一緒に入っています。
回路がシンプルになったので、Rev3
0では操作スイッチと電源スイッチも一枚に詰め込んでみました。上半分の基板だけで動作します。0と同様の操作スイッチが4つ、上下左右に配置されています。右上が電源スイッチ、左上が開発環境との接続用コネクタです。裏面にminiSDカードコネクタが実装されます。2mm多くしたので、手はんだが楽になっています。下半分の基板は、開発環境とつなぐ際に必要となるアダプタ基板です。
Cygnal純正のシリアルアダプタEC2から出ているフラットケーブル圧接の10Pコネクタと、今までは手配線の基板を使っていたので、今回一緒にプリント基板にしてみました。
・・・しかし、10Pのフラットケーブル用コネクタの大きいこと
見たときに思わず『おおっ』と驚いてしまいました。全部実装した様子です。基板単体での動作確認のために、電源スイッチ、操作スイッチもすべて載せてあります。ヘッドフォンに組み込む時は、スイッチ類は基板に実装せず、ヘッドフォンに直接取り付けます。マイクロテック、その他でも入手可能です。【2006年7月】なんと、あの秋月電子通商が取り扱いを始めました。それも驚きの秋月価格です。"e"は、それ以前の"b"バージョンの改良品を意味します。違いはVS1011のデータシートの46ページを参照してください。このスイッチは基板に実装するときのものです。ヘッドフォンに組み込むときは、基板にスイッチは実装しません。このスイッチも基板に実装するときのものです。ヘッドフォンに組み込むときは、基板にスイッチは実装せず、常時ONとなるようにパッドをショートしておきます。同時に、ちょうど良い寸法のリチウム・ポリマ電池ET-0210が、再度入手可能となっています。
(ショップからは製造中止と聞いていたのですが・・・)
まあクレジットカードが使えるようにもなりましたので、許してあげることにします(^^)
・・・と思ってよく見たら、「現在、USとカナダのみ発送」とありますね
あとでメールしてみます。問い合わせたところ、やはり日本への発送はしないとのことでした。なお、容量の大きいET-0250は、残念ながら厚さの関係でヘッドフォンに収まりません。【ご注意】リチウム・ポリマ電池の充電には必ずリチウム・ポリマ専用の充電器を使ってください。ニッケル水素やNi-Cd用の充電器を使うことは非常に危険です。次の機会に発注してみようと思います。ヘッドフォンに組み込む際に必要となります。プラグの方はリチウム・ポリマ充電器に取り付けます。マイクロテック、その他でも入手可能です。マイクロテックさんの場合、価格は、$99×為替レート+消費税でした。USから送ってもらうよりお得です。ちなみに末尾の"-J"は、日本向けのACアダプタが付属、という意味です。C8051と開発キットについてはこちらにも情報があります。これは開発環境とTimpyの基板を接続する時に必要となります。本当は4芯が欲しいのですが、残念ながら売ってるところが見つかりませんでした。仕方がないので、この6芯のFFCを、カッターで4芯に切って使っています。
こんな感じ→
★ようやく階層ディレクトリをサポートしました。ディレクトリツリーを深さ優先で探索します。miniSDカードにデータを入れる際に、例えばアルバムのディレクトリごとコピーとかできますので、 容量の大きいカードでも曲の管理がとっても楽になります。★ディレクトリジャンプ機能を追加しました。各ディレクトリ内の1曲目の間を前方/後方にジャンプする機能です。左の図の例で、【次のディレクトリへジャンプ】すると、再生中の曲を基点として順次[1]、[2]、[3]、[4]・・・とジャンプします。【前のディレクトリへジャンプ】もできます。聞きたいアルバムの1曲目をすばやく探せます。
(逆に、聞きたくないアルバムをスキップするときにも便利です)
ラウドネス機能を追加しました。12種類の周波数特性から好みのものを、聞きながら選択できます。cmd" ファイルをTimpyのソースプログラムにインクルードできるようフォーマットしなおしたものです。*このラウドネスの12種類の周波数特性グラフを含む機能の詳細については、VLSI Solution Oyの上記のページをご参照ください。
マーカ位置から再生開始
現在の停止位置にマーカを設定 (*8)
停止モードへ(ストップ)
次の曲/前の曲
ディレクトリジャンプモードへ (*12)
次の曲へジャンプ
前の曲へジャンプ
次のディレクトリへジャンプ
前のディレクトリへジャンプ
早送り/巻戻し
再生モードへ
操作は4つのスイッチ(>■∧∨)で行い、それに対するレスポンスがビープ音で返ってきます。ビープ音には3つの音程「高音(ピ)・中音(ポ)・低音(ブ)」があります。ほとんどの操作によるレスポンスは「ピ」ですが、以下のように状態によって音程が変わります。(*1)再生開始時、全曲リピートが設定されていれば「ピ」、現在の曲リピート再生が設定されていれば「ポ」、リピート設定されていなければ「ブ」です。(*5)次の曲/前の曲モード、ディレクトリジャンプモード、早送り/巻戻しモード、ラウドネス設定モード、リピート再生設定モードでは、10秒間操作がないと自動的に再生モードに移行します。(*9)バッテリの電圧をビープ音で知らせます。(*11)スイッチ操作により、ラウドネスの周波数特性を変更します。上記文書にはフィルタ番号が1から12までしかありませんが、その他に0も設定できます。フィルタ番号0はラウドネス機能OFFです。このとき、番号0を表すために「ポ」と鳴ります。0以外ではビープ音は鳴りません。
○その他の機能
停止モードが60秒間続くと、シャットダウンモードに移行します。再度再生するときは、電源スイッチを入れなおしてください。シャットダウンモードでも消費電力は0ではありませんので、バッテリの過放電を防ぐため電源スイッチは必ず切るようにしてください。
過放電を防ぐため、バッテリの電圧が3
0V以下になると自動的にシャットダウンモードへ移行します。再生は前回の停止位置から開始されます。
【不揮発メモリへの状態保存】
上記の前回停止位置や、カード識別情報、マーカ設定、リピート設定、ボリューム値は電源を切っても保存されています。SWR(■)スイッチを押しながら電源を入れることで保存値を無視することもできます。電源ON時にカードが交換されているかどうかの簡単なチェックを行います。交換されている場合、再生は1曲目の先頭からとなり、マーカ情報はクリアされます。
【早送り/巻戻し中のボリュームダウン】
早送り/巻戻し中は音飛びによるノイズが出るため、自動的に音量が小さくなります。消費電力を抑えるため、CPUがアイドル状態(miniSDカード・VS1011へのアクセスおよび操作スイッチ処理を除いた期間)の間は、CPUコアを省電力モードにするようにしています。*最初の1回目の起動時、何も鳴らなくてあせります。これは初期状態でVS1011のボリューム値が最小になっているためですので、SWRを押しながら起動して不揮発メモリを無視するようにしてください。*デバッグ中にシャットダウンモードに入ってしまうと、CPUが無応答となるため強制的にターゲットが切断されてしまいます。デバッグ中は1088行目のコメントアウトを解除すると作業効率がよくなります。
デバッグ終了時に再度コメントアウトすることをお忘れなく
*現在サポートしているのはFAT16のみです。新しいminiSDカードを使用する際には念のためにFATでフォーマットしてください。
シリアルアダプタEC2と接続して、ファームウェアをダウンロード
動作確認中の様子です。完成しました。今回はマットブラックにしてみました。3種類とも、ネックコード巻き取り機能付きです。カードをセットするとこんな感じになります。
カード全体が中に収まってしまうため、ちょっと見ただけではわかりません。指の先でカードを少し押し込むとイジェクトできます。
内蔵バッテリの充電
内蔵のリチウム・ポリマ電池への充電の様子です。専用の充電器を使っています。
今回松下のケースの内側はRev2
1のときほど削らなくても納まりました。基板やバッテリの位置がとても重要です。ちょっとでもずれているとふたが閉まりません。・・・というわけで、完成です。今後はさらにファームウェアを改良していく予定です。
》生基板、お譲りします:第3回
Timpyに興味を持ってくださった方が、もし仮に作ってみようと思ったときに、費用面で一番障害になるのは基板だと思います。0の基板を、P板さんで1枚だけ作ると、27,000円近くもかかってしまいます。
それではあまりに敷居が高いですよね
その基板ですが、先日3回目のリピート製造をしました。今回も数枚余裕を持って作りましたので、ご希望の方にお譲りします。手順などは第2回と同じです。下記をご覧ください。お送りするのは生基板のみです。部品類は一切含まれません。ご了承ください。お申し込みはとりあえずBBSへお願いします。その際に連絡先のメールアドレスをお忘れなくご記入ください。直接ご連絡いただいてもかまいません。
cc(←@を小文字にして下さい)までどうぞ
よろしくお願いします。
完成させるには、○実装部品類のほかに、C8051F330の開発環境やその他もろもろが必要になります。○面実装の手はんだのワザが必要です。1005の抵抗やコンデンサ、QFP、MLPなどの部品を使っていますので、実装にはある程度のスキルが必要です。自信がないという方はご相談ください。お手伝いします。よくご検討の上お申し込みください。ページの先頭へ戻る。或る方から、オーディオテクニカのヘッドフォン、ATH-EM7をいただきました。このヘッドフォンはネックコード巻取り式ではありません。内部に何かを組み込むスペースがあるとは思えなかったため、Timpyシリーズの候補としては考えていませんでした。実物を手にとってみると、装着感がよく、耳へのフィット感が気に入りました。ならば、組み込むしかありません。0の基板なら収まりそうだったので、ちょっと試してみました。案の定、すんなりとはいきませんでしたが、何とか形にすることができました。このヘッドフォン用に基板を作り直せば、もっとラクに収まりそうです。0の機能を詰め込むこともできるように感じましたが、深みにはまりそうだったので、とりあえずやめておきます。完成しました。
だてに高価じゃないですね
金属製のケースに高級感があります。あと、装着感、フィット感がいいです。ちょっと見ただけではTimpyとはわかりません。でもその証拠に、本体とつなぐためのプラグコードがありません。0で使用していたminiSDでは全然収まりません。写真はカードをイジェクトしたところです。カードをセットするとこんな感じになります。プッシュ−プッシュ型のコネクタを使っていますので、指の先でカードを少し押し込むとイジェクトできます。
金属ケースのデザインを尊重して、Rev3
0でのようなプッシュスイッチを使うのはやめました。代わりにALPSの複合スイッチをケース側面に取り付けました。基板はヘッドフォンの左側に、バッテリは右側に組み込みました。写真は、ヘッドフォン右側に用意した充電用のDCジャックです。内部はバッテリで占められているので、残念ながらちょっとはみ出してしまいました。コネクタの種類を変えればいいのですが、まあこれでも良しとします。実用上は何の問題もありません。ページの先頭へ戻る。
FMチューナ付きヘッドフォン内蔵型
★回路図その他、技術的な説明はこちらへ
0の軽快さをそのまま維持しつつ、FMラジオと、カラーグラフィック液晶付き赤外線ワイヤレスリモコンを付加しました。
最近のMP3プレーヤには、FMラジオが付いているものが増えてますね
完成から1年、通勤途中で毎日快適に使ってきたRev3
『FMラジオ・・・ちょっといいかも』
0計画がスタートしました。小さなヘッドフォンにFMラジオを追加するには、非常に小さなFMチューナ回路が必要です。このデバイス探しには本当に苦労しました。そしてようやく入手できたのです。早速テスト回路を組んで見たところ、こんな小さなデバイスなのに、これが良く鳴るのです。『すばらしい。これでFMラジオのめどはつきました。
でも問題点がひとつ
Timpyの操作系は4つのプッシュスイッチです。表示系はありません。MP3ならば、今どの曲を聞いているのかは聞けば分かることですが、ラジオの場合には、今どのラジオ局を聞いているのかがすぐには分かりません。何らかの形で、それをユーザ(つまり私)に伝える方法が必要です。プリセットされたラジオ局に加えて、マニュアル同調のことも考えると、ラジオ局名と周波数の両方を何とか表現したいところです。周波数だけならば、バッテリ電圧の表示と同様に、周波数を2進数でコード化してビープ音の音程で表現することはできるのですが、ここはひとつ、ちょっとがんばって、リモコンを作ることにしました。リモコンにもこだわってみました。Timpyの最大の良さであるヘッドフォン内蔵型を維持するため、赤外線によるワイヤレス方式です。表示部は160ピクセル×120ピクセルのカラーグラフィック液晶です。
これなら漢字表示も問題ないでしょう
やはり曲名表示には漢字を使いたいですよね
操作性向上のために、ロータリーエンコーダによるダイヤルも付けました。メニュー選択やFMのマニュアル同調もこれでOKです。ただし、リモコンはあくまでも操作性を向上させるためのものです。0と同様に、ヘッドフォン本体のみで動作し、全ての機能を操作できる点は変わっていません。0ではトランスフラッシュを使うことにしました。miniSDではヘッドフォンに収まらなくなったからです。
4層板でリフローが使えれば収まると思いますが、そうもいきませんので
使うのは自分ですから、何でもアリです。*耳かけ式ヘッドフォン型のMP3プレーヤです。かばんの中でもかさばりません。*巻き取り式なので、コードが絡まってイライラすることはありません。
*前回停止したところから再生します(曲中レジューム)
*早送り系の操作として、曲ごとの送り/戻し、フォルダごとの送り/戻し、曲やフォルダをまたいだ早送り/巻き戻し(送り中のプレビュー付き)ができます。*好きなところにマーカを1箇所設定して、ジャンプできます。*1曲リピート、ディレクトリリピート、全曲リピートができます。*トーンコントロールできます。低域と高域をそれぞれ2段階で強調できます。*充電式バッテリ(リチウムポリマ電池)を内蔵しています。*バッテリの電圧が低下すると、自動的に省電力モードになります。*FMチューナ内蔵です。*カラーグラフィック液晶とダイヤルつきのワイヤレスリモコンで、操作性は良好です。もちろんリモコンがなくても操作できます。*JIS第2水準までの漢字フォントを内蔵しています。曲名/アルバム名/アーティスト名を日本語で表示できます。1に対応しています。完成しました。今回もマットブラックです。もちろんネックコード巻き取り機能付きです。0とほとんど変わりません。ネックコードは交換してあります。もともと付いているものは被覆が樹脂でできたグレーのコードですが、長さ約90cmの編組被覆のものに換えました。もともと付いているコードではFMラジオのアンテナにするには短いために交換したのですが、ついでに、癖がつきにくい編組被覆のものにしました。
赤外線通信の送受信部
0での特徴のひとつ、リモコンと通信するための赤外線送受信部です。写真中央、横長の黒い長方形が受光モジュールです。その右隣に丸く、赤外線LEDが顔を出しています。トランスフラッシュカードはここから入れます。
現在は名称が変わって、microSDカードになりましたね
トランスフラッシュをセットしたところ
カードをセットするとこんな感じになります。
カード全体が中に収まってしまうため、ちょっと見ただけではわかりません。指の先でカードを少し押し込むとイジェクトできます。0の基板はこのヘッドフォンの寸法に合わせて設計してあります。このケースの改造はもう慣れました。以前と同様、回路図作成と基板設計はEagleで行いました。
機能が増えたため、プロセッサをRev3
基板の左上です。右下の小さいのがヘッドフォンアンプLM4911です。基板が小さいので、OCLのものにしました。基板最下部の突き出した部分に、赤外線通信のための受光モジュールと、送信用LEDが付いています。基板裏面です。トーンコントロールや、IC間のAC結合などのために、かなりの数のCR類が付いています。
それにしても、トランスフラッシュは小さいですね
写真右の十字型の基板は、操作スイッチ用の基板です。
0ではスイッチをケース内側に直接接着していたのですが、結構面倒な作業なので、基板にしてみました・・・が、残念ながら基板の厚さ分が収まりませんでした。
8mm厚なんですけどね
本当にぎりぎりなんです。
0と大きさ比べ
0と並べてみました。
基板サイズが多少大きくなっていますが、機能が増えた割には良く収まったと思っています(自画自賛)
実際、基板設計が結構大変でした。FMチューナや赤外線通信などの機能追加に伴って、miniSDでも組み込みが難しくなったため、思い切ってmicroSDカードを使うことにしました。以前はトランスフラッシュカードと呼ばれていた、新しいメモリカードです。
携帯などで使われていますね
写真は大きさ比べです。
(右下はトランスフラッシュ用のコネクタ)
とにかく小さいです。落としたら見つかりません。新潟精密株式会社さんの完全1チップFMチューナモジュール、NS953Mです。写真は動作確認のために組んだバラックです。わずか7mm角でバリキャップなども全て内蔵しており、IFTはじめ外付けのインダクタ類が一切不要な最新型のデバイスです。I2Cインターフェースを通してデジタル的に制御できます。このチューナについては技術情報のページを参照してください。中央は液晶パネル、右の黒い部分3箇所がプッシュスイッチです。右上角の丸くなっているところには、アップ/ダウン操作用のダイヤル(ロータリーエンコーダ)が付いています。左上の小さな黒丸2つは、左側が赤外線通信の受光部、右側が送信用の赤外線LEDです。写真の表示はプレーヤ本体が停止しているときのものです。0の頃のデザインを使って、ロゴを作ってみました。
カラーグラフィック液晶付きですから、このくらいはしないと、ね
MP3プレイ中の表示
MP3を再生しているときの液晶表示の様子です。最上部2行はステータスエリアです。ボリューム値、トーンコントロール設定、本体とリモコンそれぞれのバッテリ電圧、再生中の曲番号、赤外線通信の状態が表示されています。右端は操作用スイッチのファンクションを表示するエリアです。0のロゴの下に、再生中の曲名、アーティスト名、アルバム名と再生時間がリアルタイムに表示されます。
MP3曲セレクト実行の様子
曲リストからダイヤルで選んで、OKのスイッチを押すとジャンプします。曲数が多い場合には、もちろんダイヤル操作に合わせてリスト表示がスクロールします。このリストで曲をセレクトしてから、約5秒間操作をしないと、上のプレイ中表示に自動的に切り替わります。MP3のプレイ中にメニューボタンを押すと、MP3関連コマンドのメニューが表示されます。ダイヤルで選択してOKを押すと、そのコマンドに応じたサブメニューが表示されます。写真はリピートモードを設定しているところです。
FMラジオ受信中の表示
FMラジオモードのときは、プリセット局のリストが表示されます。受信中の局は反転表示になります。ラジオ局の選択は、MP3の曲セレクトと同様に、このリストからダイヤルで行えます。ヘッドフォンを耳に掛けた状態でネックコードをいっぱいに出し、窓際で試してみました。FMラジオ受信中にメニューボタンを押すと、FM関連コマンドのメニューになります。写真は、ダイヤルでのマニュアル選局をしているところです。
普通のラジオの選局ダイヤルと同じような感じで、0
ケースは木で作りました。写真は塗装する前のものです。天板、底板には、薄くても強度のある1mm厚の航空ベニヤを使いました。その他の部分はヒノキです。構造を考えながらだったのでここまで丸2日くらいかかりましたが、久しぶりの木工作業はとても楽しかったです。ケースを斜め上から見たところです。エンコーダのダイヤル部分はこんな風になっています。ケース裏面です。操作スイッチとは反対側の辺の角を斜めに落としてあります。これだけで見た目のボリューム感がぜんぜん違います。とても小さく見えるようになりました。ヘッドフォン本体の基板と異種面付けをして、一括して製造してもらいました。フォントにはここの12×10ピクセルのビットマップフォントを使わせていただきました。半角から第2水準まで全部組み込んであります。全角で10文字×16行表示できます。この液晶のバックライトはLEDなので、チャージポンプICをPWM制御して、輝度を調整できるようにしています。
内部の様子とリモコン基板の裏面
下半分の銀色はリチウムポリマ電池です。電池と基板の間に、液晶モジュールのコントローラ部がはさまれる形で収まっています。液晶のコントローラ部と表示部の間はFPCになっているので(下の写真参照)、そこで折り返してコントローラ部をリモコン裏側へと回し、基板と接続するようにしました。リモコン側は基板面積に余裕があるので、プロセッサにはピン数の多いC8051F310を使っています。基板右上に縦に2個並んでいるのはEEPROMです。フォントや曲名データなどの格納用です。左上の丸いものがダイアル操作用のロータリーエンコーダです。ダイヤルそのものは市販の樹脂ギヤを削ってはめ込み、接着してあります。
回路図その他、技術的な説明はこちらへどうぞ
0 技術情報のページ
ページの先頭へ戻る。もちろんWindows標準のデバイス・ドライバ経由です。さらにUSBケーブルの代わりにRS232をつなげば、ハイパー・ターミナルなどを使ってDOS風の操作もできます。ところで、このリファレンス・デザインのプログラム・ソースは、Keil社製のCコンパイラ、アセンブラ用に書かれています。しかしシリコンラボの開発キットに付属している評価版コンパイラでは、機能制限(オブジェクト・サイズ)に引っかかってコンパイルできません。そこでこれをフリーのSDCCに移植してみました。このページは、その移植作業についてまとめた備忘録です。右の写真下が今回の移植版です。C8051F340の開発キットは購入しました($99)が、リファレンス・デザインが開発キットと同じ$99だったので、手配線で作りました。
AB5基板が大したことない割りに高価なのは、256MBのSDカードが添付されているからでしょう
ドキュメントやプログラム・ソースはシリコンラボのHPでダウンロードできますので、基板とカードさえ用意できれば問題ありません。結局、秋月のユニバーサル基板にminiSDのコネクタがちょこんと付く形でできあがりです。なお、SDCCを触るのは初めてなので、頓珍漢なことをしているかもしれません。誤りなどお気づきの点がありましたら、ぜひお知らせください。よろしくお願いします。(注)写真のとおり、オリジナルではコンパクト・フラッシュもサポートされていますが、Timpyでは使用予定がないのでまじめに移植していません。単にコンパイラを通すための変更のみ加えてあります。zip ソースだけでなく、回路図その他一式が入っています。(注)各ファイルは勝手に再配布していますので最新でない場合があります。KeilからSDCCへの移植に際して、変更した主な点を以下に挙げます。書き出すとかなり長くなりそうです。少しずつ追記していきますので、長い目で見てやってください。また、ここに挙げたのはUSB-MSD-RDを移植する上で必要になったものです。一般に移植に必要な項目を網羅しているわけではありません。0にはバグがあるため、この移植には使えません。hにて宣言されています。同様のstructは複数ありますが、そのうちのひとつを例に挙げます。cにて次のように宣言されています。0でコンパイルすると、アセンブル出力は次のようになります。同じソースをスナップショット版でコンパイルすると次のようになります。
このように、2
0でみられた「ゴミ」は生成されなくなっています。めでたし、めでたし。処理系による文法的な相違はある程度やむを得ません。マニュアルを突き合せて、ガシガシ書き換えます。
まずは内部レジスタの宣言から
hが用意されていますので、それを使えばOKです。
なおSDCCのマニュアルによると、"sfr16で定義された2バイトレジスタのアクセス順は、基本的に下位バイト→上位バイトの順だが保障はされない。したがってアクセス順を守らなければならない16ビットレジスタはsfr16で宣言すべきでない"PCA0Lを先に読む必要がありますので要注意です。という"^"(キャラット)を使った記述ができますが、SDCCではできません。
》文法的な違い(2) - ポインタ宣言で記憶域を指定する際の語順
ジェネリックポインタよりも、記憶域を指定したほうが効率の良いコード生成につながります。その記憶域を指定する際の語順が両者で微妙に違います。と記述します。この変数を初期化つきで宣言する際、SDCCではそのメンバを{、}でくくる必要があります。これらはどちらも大幅に書き換えました。変更に関係する主な点を挙げておきます。
○引数の渡し方
○擬似命令の違い
○ジェネリック・ポインタの最上位バイトに格納される定数の違い
○その他もろもろ・・・
Keilのメモリ・モデルには、スモール、コンパクト、ラージの3種類があります。オリジナル版はラージ・モデルを使用しています。一方のSDCCにはスモール、ミディアム、ラージの3種類があります。移植版では、変数域の状況をそれぞれ比較した結果、スモール・モデル+stack-autoオプションを使うことにしました。オリジナルのソースではauto変数にもことごとく記憶域が指定されているため、それらを片端からコメントアウトします。
》ウォッチドッグ・タイマの無効化
C8051シリーズはウォッチドッグ・タイマ有効がデフォルトです。オリジナル版ではmainの先頭でウォッチドッグ・タイマを無効にしていますが、SDCCではスタートアップ・ルーチンの途中でリセットが発生してしまい、mainまでたどり着けませんでした。SDCCでは、スタートアップ・ルーチン内でXDATAメモリを初期化する際に、8ビット・メモリ・アドレスによる外部メモリ・アクセス命令"movx @Ri, A"を使用するようです。この場合、メモリ・アドレスの上位バイトはポート2(P2)に出力しておくのがオリジナル8051の作法です。しかし、C8051その他外部メモリを内蔵しているデバイスでは、メモリ・アクセスがデバイス内で完結しているため、P2は使えません。代わりに、デバイス内でアドレスの上位バイトを生成するためのSFRが用意されています。hの中に次の1行を入れました。これを定義しておかないと、デフォルトでP2が使われてしまいます。最初これを知らなくて、ウォッチドッグ・タイマの関係でスタートアップ・ルーチンのディスアセンブル・リストを見ていて偶然気がつきました。
「なんだこりゃ」と思ってマニュアルを良くみると、ちゃんと書いてありました(4
》エンディアンの違い
Keil対SDCCで最大の相違点といってもいいでしょう
Keilはビッグ・エンディアンですが、SDCCはリトル・エンディアンです。オリジナル版のソースはすでにこの点に配慮してあります。hのそれぞれにありますので、両方とも0と1を反転します。
cの193行目から、以下の3行をコメントアウト
を以下に修正
最後に、多バイト定数のエンディアンを逆にします。修正箇所は多くありません。全部で5、6箇所だったと思います。オリジナルのKeil版では以下のようになっていました。移植版では次のようにしました。一般の関数は常にcall命令(acall、lcall)で呼び出されるのに対し、これらの関数は、呼び出した箇所にインライン展開されることが特徴です。そこで、インラインでnopを生成する関数を作成します。引数や戻り値が無いので簡単です。処理は受信フラグのチェックとデータの読み出し、エラー時の処理だけですので数行です。大きな変更点は取りあえず挙げたつもりです。
1週間くらいの試行錯誤でしたが、こうしてみると結構ありますね
でもまだ十分でないので、もう少し書き足したいと思います。
本当はもっと網羅的にまとめられればいいのですが、そのためにはまず
両者の和文マニュアル抄を書く必要があるような気がします。0のページへ戻る。ページの先頭へ戻る。
回路図その他、技術的な説明はこちらへ
0にUSBインターフェースを追加しました。PCと接続するとリムーバブルディスクとして自動認識されます。本体にセットしたmicroSDカードへエクスプローラなどでアクセスできます。曲データの管理がとってもお手軽になりました。併せて、バスパワーで内蔵バッテリの充電もできるようにしました。*耳かけ式ヘッドフォン型のMP3プレーヤです。かばんの中でもかさばりません。*ヘッドフォン自体がプレーヤ本体ですので、他に何も要りません。うっとおしい長いコードもありません。*ネックコードは巻き取り式なので、コードが絡まってイライラすることはありません。*本体付属のスイッチだけでも全ての操作ができますが、操作性向上のためのワイヤレスリモコンも作りました。
*前回停止したところから再生します(曲中レジューム)
*早送り系の操作として、曲ごとの送り/戻し、フォルダごとの送り/戻し、曲やフォルダをまたいだ早送り/巻き戻し(送り中のプレビュー付き)ができます。*好きなところにマーカを1箇所設定して、ジャンプできます。*1曲リピート、ディレクトリリピート、全曲リピートができます。*トーンコントロールできます。低域と高域をそれぞれ2段階で強調できます。*充電式バッテリ(リチウムポリマ電池)と、USBバスパワーによる充電回路を内蔵しています。*バッテリの電圧が低下すると、自動的に省電力モードになります。*MP3データのストレージメディアとしてmicroSDカードを使用しています。*FMチューナ内蔵です。*ワイヤレスリモコンはカラーグラフィック液晶とダイヤルにより良好な操作性を持っています。*JIS第2水準までの漢字フォントを内蔵しています。曲名/アルバム名/アーティスト名を日本語で表示できます。1に対応しています。*USBを接続すれば、microSDカードにリムーバブルディスクとしてアクセスできます。もちろんネックコード巻き取り機能付きです。ネックコードは交換してあります。もともと付いているものは被覆が樹脂でできたグレーのコードですが、長さ約90cmの編組被覆のものに換えました。もともと付いているコードではFMラジオのアンテナにするには短いために交換したのですが、ついでに、癖がつきにくい編組被覆のものにしました。肌触りもこのほうがGOODです。以前はトランスフラッシュカードと呼ばれていた、恐ろしく小さなメモリカードです。このサイズで2GBの容量があります。これはカードを半挿ししたところです。カードをセットするとこんな感じになります。
カード全体が中に収まってしまうため、ちょっと見ただけではわかりません。指の先でカードを少し押し込むとイジェクトできます。左端の穴にはリモコンと通信するための赤外線LEDが顔を覗かせています。0ではバッテリ充電用のジャックが付いていたところです。その右に電源スイッチと赤外線受信モジュール、さらにUSBのmini-Bコネクタが付いています。ヘッドフォン側面にLED表示部を2箇所設けました。写真では赤ボタンの左側に並んでいる小さな丸い部分です。光っているのは光パイプの端面です。基板上に取り付けたLEDからの光をここへ導くようにしてあります。2つある表示部の上側は充電ステータスです。赤の点灯は内蔵バッテリの充電中を示します。充電が完了すると赤が緑に変わります。
LED表示−USB経由でメモリカードへアクセス中
下側のLEDはアクセスランプです。USBを接続して、エクスプローラなどを使ってメモリカードへアクセスすると、青く点灯します。0の基板はこのヘッドフォンの寸法と形状に合わせて設計してあります。左側の銀色の四角いものがリチウムポリマ電池です。その表面には、充電中に温度を監視するサーミスタが貼ってあります。LEDの光をケース表面へと導く光パイプです。ちょっと見えにくいですが、写真中央部に2本あるツノのようなものがそれです。φ2mmのプラスチックファイバを切って作りました。ファイバの側面はマジックで黒く塗ってあります。2つのLEDの光が混ざるのを防ぐためです。以前と同様、回路図作成と基板設計はEagleで行いました。0の時すでに『両面板ではもう限界かな』と思っていたのですが、さらにUSBとバッテリ充電回路を集積すべくがんばってみました。
設計ルールを0
これは現時点でのP板さんの製造限界である0
あとCR類のフットプリントを、Eagle添付のものから、Rohm推奨の小さなものに変えました。これらのおかげで何とか両面板に収まりました。
さらに以前の反省点なども考慮したので、Rev4
0よりも音が良くなりました。基板表面です。でもこれがまた大きい。USBのmini-Bコネクタの大きさから、この基板がとても小さいことが分かっていただけると思います。右上の銀色の正方形がFMチューナモジュールNS953Mです。裏にはmicroSDカードのコネクタが配置されています。FMチューナモジュールNS953MはBGAなのですが、これを手はんだするための裏ワザスルホールが左上に見えます。0の技術情報を参照してください。下にある黒い長方形のデバイスは、USBによるリチウムイオン/リチウムポリマバッテリの充電とパワーマネージメント機能を集積したICです。
デバッグの様子
開発環境との接続には0
0の頃からずっと採用しているものです。C8051F3xxシリーズのMCUは、C2インターフェースと呼ばれるたった2本の信号で、プログラムのダウンロードやリアルタイムデバッグができるようになっています。必要な信号がC2CKとC2Dの2本だけなので、それとVDD、GNDを合わせた4本をデバッグアダプタと接続しています。
左の写真にて10芯フラットケーブルと4芯FFCを変換している小さな基板はRev3
0の際に製作したものです。