Fusion PCBの基板製造サービス向けの面付データの作りかたをまとめます。
以前はシルクレイヤで指示していたV-Cut指示ですが、最近は外形線レイヤにて指示するみたいです。
KiCadは外形線にテキスト(シルクテキストのようなフォント置換される図形)を置くことができないのですこし無理やり感があります。
- 単品の基板を設計する
- 単品を並べる
- 分割指示を追加する
- 保存と出力
指示の仕方だけ確認したいかたは3だけ読めばOKです。
1. 単品の基板を設計する
まずは回路図を起こして単品としての基板を普通に作成します。
今回は単純にLEDを光らせるだけの回路を例にしています。
回路図
アノテーション、DRCをかけて問題ないことを確認。
シンボルへのフットプリント割り付けを実施
ピン数やライブラリ、キーワードで絞り込みつつ選択
ネットリストの出力を行い、
PcbNew(基板エディタ)のアイコンから当該のプロジェクトの基板パターン編集を開始。
出力したネットリストの読み込み
ネットリストのインポート
いつもどおり、アートワーク。
GNDベタを追加してもよい
ひとまずユニットとしてのパターンはできたので保存して完了です。
このとき必ずDRCをPASSさせてから面付作業に進めましょう。
KiCadランチャーも含め終了します(必要ないかもしれませんが、とりあえず)
2. 単品を並べる
ここからはPCBNEWを直接起動して面付作業を行います。
ランチャーからは開いているプロジェクトのファイルが編集できますが、独立したファイルは編集できないようです。
デフォルトならここにあるはず
プロジェクト側で作成した単品ぶんの基板を読み込みます。
「開く」ではなく「基板を追加」
読み込まれた基板
あらかじめ基板の寸法は調べておいた方が良いかもしれません。
この時点でいったんプロジェクトの近くに保存した方がよいです。
PcbNewの直接起動で編集を始めた図面はどのプロジェクトにも属していないファイルなので、現時点で保存しておきましょう。
読み込んだ基板を選択して「配列を生成」。
「縦横に並べてコピー&配置」の意味ですね。
「配列を生成」
並べ方の指定
縦に複数枚並べることを想定しているので、横方向は1、縦の間隔は基板高さになります。
生成された配列
同じリファレンス、ネット名をもつフットプリントが複数あるため
ネットリストの表示が荒ぶります。
3. 分割指示を追加する
ここからが本命。
あとからでもいいですが、ハンドリング用の耳を付けます。
これは過去に注文した際、基板に指紋とか擦り跡が付いていたことがあったので
その対策です。
このみみにステンシル位置決め用の穴をあければ、製品に不要な穴をあける必要がなくなるので基板上に場所も確保しなくて済みます。
取っ手用のみみを追加
ここで、外形を整理します。
外形線が重なる位置関係で配列にすると、二重になるラインが生まれます。
縦線も一直線でありながら分割された外形になります。
私としては製造依頼時の不安要素に感じる部分なので外形を1本にまとめます。
要らないラインを削除
縦線の削除と、重複になる横線を削除します。
縦線を延長して外形をとじる
今回は単純な矩形なので縦線を伸ばすだけで済みましたが、
複雑な外形の場合はこのタイミングでシンプルな線数で描き直します。
V-Cut予定の線はいったんシルクレイヤに逃がしてから作業すると楽です。
横線をV-Cutラインとして使うので伸ばす
外形が決まったら、V-Cutラインを追加します。
今回はすでに描画してある横線を再利用します。
シルクレイヤに退避した場合はここで戻します。
カットラインに合わせてV-Cutの指示を追加します。
直線や円弧を駆使してテキストを描画する
今回の基板が小さいので文字が相対的に大きいです。
必要な部分に指示テキストをコピペ
基板が小さいのでとてもうるさい感じになってしまいました。
あとは基準点を指定して完成です。
4. 保存と出力
基板ファイルは適当なフォルダに保存します。
手順通り作業してればプロジェクト付近に保存されているはずです。
あとはいつもどおり「プロット」のメニューから製造に必要なデータを出力すればよいのですが、1つ注意点があります。
出力時にベタGNDなど塗りつぶし指定していた場合、塗り直しはしないこと、です。塗りつぶし情報が古いとか警告が出ることがありますが、無視します。
同じネット名が複数個所に配列化されていて、しかも外形線もマージされた状態なので、意図しない範囲で塗りつぶしされる可能性があります。
単品のレイアウト設計時点でDRCかけていますので、外形線との位置関係を変えなければ影響ないと考えます。
まとめ
とりあえず私がいつも面付している方法をまとめました。
スクリプトを組めば簡単になるかもしれませんが、適用条件がブラックボックスになりかねないのであえて手作業を選択しています。
ボードデザインについての資料ページです。
Top-Level Entity
module RamCartrishBoard
(
inout wire [7:0] sfcram_DATA,
input wire [23:0] sfc_ADDR,
input wire sfc_nROMSEL,
input wire sfc_nRD,
input wire sfc_nWR,
input wire sfc_SYSCLK,
input wire sfc_MCLK,
input wire sfc_nIRQ,
input wire sfc_nRESET_CIC,
input wire sfc_nRAMSEL_REFRESH,
output wire io_nOE_DATA,
output wire io_DIR_DATA,
output wire io_nOE_EXPAND,
output wire io_DIR_EXPAND,
output wire io_nOE_ADDRCTRL,
output wire io_DIR_ADDRCTRL,
input wire io_Vdet, // 1:Cartridge 0:Standalone
output wire [3:0] ram_nWE, // 4Banks
output wire [3:0] ram_nCS, // 4Banks
output wire ram_nOE, // Bank common
output wire [20:0] ram_ADDR, // Bank common
input wire spi_MOSI,
output wire spi_MISO,
input wire spi_CLK,
input wire spi_CS,
output wire [3:0] dbg_LED, // 1:Light 0:OFF
input wire [1:0] dbg_SW // 1:OFF 0:ON
);
endmodule
Pin Assign Table
Pin# | Signal-name | Direction |
PIN_6 | spi_CS | Input |
PIN_7 | spi_MISO | Output |
PIN_8 | spi_MOSI | Input |
PIN_10 | io_Vdet | Input |
PIN_11 | sfcram_DATA[7] | Bidir |
PIN_12 | sfcram_DATA[3] | Bidir |
PIN_13 | sfcram_DATA[6] | Bidir |
PIN_14 | sfcram_DATA[2] | Bidir |
PIN_17 | dbg_LED[0] | Output |
PIN_21 | sfcram_DATA[5] | Bidir |
PIN_22 | sfcram_DATA[1] | Bidir |
PIN_24 | sfcram_DATA[4] | Bidir |
PIN_25 | sfcram_DATA[0] | Bidir |
PIN_26 | sfc_SYSCLK | Input |
PIN_27 | spi_CLK | Input |
PIN_30 | dbg_LED[1] | Output |
PIN_32 | sfc_nWR | Input |
PIN_33 | sfc_nRD | Input |
PIN_38 | sfc_nROMSEL | Input |
PIN_39 | sfc_nIRQ | Input |
PIN_41 | sfc_ADDR[0] | Input |
PIN_43 | sfc_ADDR[23] | Input |
PIN_44 | sfc_nRESET_CIC | Input |
PIN_45 | io_nOE_DATA | Output |
PIN_46 | io_DIR_DATA | Output |
PIN_47 | sfc_ADDR[1] | Input |
PIN_48 | dbg_LED[2] | Output |
PIN_50 | sfc_ADDR[22] | Input |
PIN_52 | sfc_ADDR[2] | Input |
PIN_54 | sfc_ADDR[21] | Input |
PIN_55 | sfc_ADDR[3] | Input |
PIN_56 | sfc_ADDR[20] | Input |
PIN_57 | sfc_ADDR[4] | Input |
PIN_58 | sfc_ADDR[19] | Input |
PIN_59 | sfc_ADDR[5] | Input |
PIN_60 | sfc_ADDR[18] | Input |
PIN_61 | dbg_LED[3] | Output |
PIN_62 | sfc_ADDR[6] | Input |
PIN_64 | sfc_ADDR[17] | Input |
PIN_65 | sfc_ADDR[7] | Input |
PIN_66 | sfc_ADDR[16] | Input |
PIN_69 | sfc_ADDR[8] | Input |
PIN_70 | sfc_ADDR[15] | Input |
PIN_74 | io_DIR_EXPAND | Output |
PIN_75 | io_nOE_EXPAND | Output |
PIN_76 | io_nOE_ADDRCTRL | Output |
PIN_77 | io_DIR_ADDRCTRL | Output |
PIN_78 | sfc_ADDR[9] | Input |
PIN_79 | sfc_ADDR[14] | Input |
PIN_80 | dbg_SW[0] | Input |
PIN_81 | sfc_ADDR[10] | Input |
PIN_84 | sfc_ADDR[13] | Input |
PIN_85 | sfc_ADDR[11] | Input |
PIN_86 | sfc_ADDR[12] | Input |
PIN_87 | sfc_nRAMSEL_REFRESH | Input |
PIN_88 | sfc_MCLK | Input |
PIN_89 | ram_ADDR[15] | Output |
PIN_90 | ram_nWE[3] | Output |
PIN_91 | ram_ADDR[14] | Output |
PIN_92 | ram_ADDR[13] | Output |
PIN_93 | ram_nWE[2] | Output |
PIN_96 | ram_ADDR[12] | Output |
PIN_97 | dbg_SW[1] | Input |
PIN_98 | ram_ADDR[11] | Output |
PIN_99 | ram_nWE[1] | Output |
PIN_100 | ram_ADDR[10] | Output |
PIN_101 | ram_ADDR[9] | Output |
PIN_102 | ram_nWE[0] | Output |
PIN_105 | ram_ADDR[8] | Output |
PIN_106 | ram_nCS[3] | Output |
PIN_110 | ram_nCS[2] | Output |
PIN_111 | ram_nCS[1] | Output |
PIN_113 | ram_nCS[0] | Output |
PIN_114 | ram_ADDR[7] | Output |
PIN_118 | ram_ADDR[6] | Output |
PIN_119 | ram_nOE | Output |
PIN_120 | ram_ADDR[5] | Output |
PIN_121 | ram_ADDR[16] | Output |
PIN_122 | ram_ADDR[4] | Output |
PIN_124 | ram_ADDR[17] | Output |
PIN_127 | ram_ADDR[3] | Output |
PIN_130 | ram_ADDR[18] | Output |
PIN_131 | ram_ADDR[2] | Output |
PIN_132 | ram_ADDR[19] | Output |
PIN_134 | ram_ADDR[1] | Output |
PIN_135 | ram_ADDR[20] | Output |
PIN_140 | ram_ADDR[0] | Output |
Flex RAM Board 32
Flex RAM Board 64
概要
RAM Cartrish用のメモリ拡張ボードです。
最大容量は32MBit(2 Chip)と64MBit(4 Chip)の2種類があります。
64MBitはSFCの標準的なアドレスマッピング (Mode25) で扱える最大容量です。
ピンヘッダは2.54mmピッチで一般的なユニバーサル基板に接続できます。
RAM Cartrishだけでなく、他のシステムに用いることもできますのでご活用ください。
搭載可能SRAM IC
TSOP-II 44pinのSRAMを複数枚搭載可能で4系統のチップ選択が可能です。
- IS61WV5128EDBLL-10TLI 4Mbit
- CY7C1049GN30-10ZSXI 4Mbit
- IS61WV10248EDBLL 8Mbit
- IS61WV20488BLL-10TLI 16Mbit
SRAMはできるだけアクセス速度の速いものを選択してください。
FPGAでアドレスマッピングするため、データが有効にホールドされる期間は短くなります。
コンデンサを付けるためのパッドを用意しています。
32Mbit maxは 1005サイズ、64Mbit maxは1608サイズとなっています。
注意
64MBit版はBank3(4枚目)がカートリッジシェル内側のでっぱりに干渉してしまうという物理的な設計ミスがあります。
64Mbit版にRAM ICを4枚実装する場合はカートリッジに納めず使用するか、または3Dプリンタなどでシェルを自作して納めてください。
型番情報
- FRB-M32-UD
SRAM2枚搭載可能。部品未実装 - FRB-M64-UQ
SRAM4枚搭載可能。部品未実装
ハードウェア情報
接続のためのピン配置は以下の通りです。
Flex RAM Board ピン配置
お知らせ
この拡張ボードは多少の汎用性を持たせてありますので、今後対応するボードを増やしていく予定です。お楽しみに。
RAM Cartrishは5V I/Oに対応したFPGA開発ボードです。
FPGA内にロジックを組みあげることで、さまざまな用途に対応する拡張環境が構築できます。
もちろん基板単体でもFPGAやマイコンの動作は可能で、各種マイコンやFPGAのデバッグ用ポートが引き出されているため、細かな動作実験にも使えます。
プロトタイプのRAM CartriSHと比べて、FPGAのロジックエレメント数が増えています。それによりプロセッサIPも搭載しやすくなりました。(8kLE以上推奨)
RAM CartrishのFPGAは、カードエッジコネクタと周辺ポートのマッピングを担当します。外部にSRAMや周辺回路を接続し拡張することができます。
SRAMを接続した場合に備えてバッテリーバックアップ機能も付いています。
外観
部品面
基板の装着方向
SFCカートリッジに格納できます
注意
このデバイスは自作プログラムの開発・デバッグ用です。
市販されているゲームカートリッジからダンプしたようなROMイメージに対して、法律に反する形での実行や改造を幇助、奨励するものではありません。
スペック
FPGAオンチップメモリ 16kB、32kB (搭載のFPGA規模による)
SFC標準メモリバス対応 (拡張バスを利用するような特殊な機能は非対応)
拡張RAMボード(Flex RAM Boardシリーズ)対応
オプション
・Nios II環境構築用48MHzオシレータ実装可能
・拡張メモリボード「Flex RAM Board」接続可能
・外部メモリバッテリバックアップ機能利用可能
・PIC IC搭載可能
必要開発環境
本デバイスはファームウェアにあたるプログラムやロジック情報は書き込まれていません。
必要なインタフェースに対応させるには、必要に応じてFPGA用のコンフィギュレーションファイルや付随するマイコン用のプログラムを自作する必要があります。
ファームウェア開発ソフト&機材
・MAX10 FPGA開発環境
Intel Quartus primeなどMAX10デバイスを扱える開発環境
USB-Blaster相当のJTAGアダプタ(3.3V)
・RL78/G11マイコン開発環境
Renesas CS+ またはe²studio
RL78マイコン用ツールチェイン
フラッシュ書き込みツール
E2エミュレータ LiteなどRL78マイコン書き込み用通信ライン
・PIC12開発環境
Microchip MPLAB X IDE/IPE
PIC12シリーズ用ツールチェイン
PICKIT3以上のPIC書き込み環境
型番情報
RC2-M04-BR
MAX10 FPGA(4kLE)+外部メモリバックアップ回路、RL78マイコン搭載
RC2-M08-X48BR
MAX10 FPGA(8kLE)+外部メモリバックアップ回路、RL78マイコン搭載
ハードウェア情報
各コネクタのピン配置は以下の通りです。
(画像準備中)
ソフトウェア情報
ベーシックなファームウェアについては準備中です。
ファームの提供は諸事情により中止します。
注意書き
このデバイスを用いたことにより生じた不利益・損害などに関して当サークルは一切責任を負わないものとします。ご自身の責任のもとご使用ください。
SFC用プログラムを実機または互換機で動作させるためのデバイスです。
容量は32kB+32MBit(8kLEモデル)程度のプログラムを保持できます。
現状プロトタイプ段階ですが、生産性(採算)が悪いのでお蔵入り状態です。
細かく言えば、ブラウン管テレビにコンポジットビデオケーブルで
接続して表示される、どちらかというとパキパキしていないドット絵が好き。
にじんで汚いとか、ぶちてるとかいう感想は、私は注意を払って使う。
ドット絵製作者の意図に無い劣化が起きた時にそう思う。
画面に表示される画(え)が基準で描かれたドット絵の、基準がどこにあるのかがわからなければむやみに ぼやけてる とか にじんでる とかは言わないようにしている。
ブラウン管テレビの入力信号も、元をたどればパキパキのドット絵ではあるけれど、画面に表示されるまでに通る信号処理、そして表示器そのものでなされる表示上の制約によりいろいろな変化が起こる。
スーファミにはいくつかの接続方法があり、それによって表示される画像の品質は大きく左右される。くわえて表示に用いるテレビの方もいくつかの表示方法があるため、トータルとしての品質は上から下まで多種多様である。
例えば、RGB21形式というアナログ信号ではRGBがすべて分離して伝送され、これを色再現性の高い液晶表示器に接続して表示される絵は「データに忠実に表示された画像」となる。「絵として一番きれいな画像」とは少し違う。
RF信号形式で接続する場合、映像と音声を混合しアナログテレビ放送で用いら電波の周波数帯に乗せた信号に変換する。そして電波に乗せる代わりにアンテナ線で直接テレビに入力する。テレビはその信号を アンテナで受信したテレビ番組と同様に 映像と音声を分解し表示する。
このときの混合と分離操作は可逆な変換ではなく、大幅に情報が失われ、劣化する。
一般にこのような変換と復元の操作による情報落ちは『信号劣化』と言われるが、その劣化すら考慮して描かれるドット絵は、テレビ画面上においてはサブピクセルレベルの情報量が展開・描画されるのである。
画面にドットを打とうと思ったときに、この色を使うと0.5ピクセルずれて打たれる とか この明るさだと縦方向に滲む とか横に繋がるとか、そういうクセを考慮して描くわけで、そういった画像が使われれているゲームのRGB21形式の出力映像は、いわば圧縮された状態のドット絵を見ている状態だと私は考えている。
これまで(これを書いている2019年末時点)1年以上かけて、この情報圧縮された映像を、製作者が意図した本来の画像に展開する方法を模索してきた。
その調査や実験の一環として、いろいろ作ったのでアーカイブとして残していきたいと思う。文章や画像、映像やハードウェアなど、いろいろな形で残していければいいなぁと考えている。
ドット絵の好みは人それぞれなので、絵面的な部分だけに限らず、技術的な部分でも趣味を共有していけたらうれしい。
好きなことを、楽しんでいきましょう。
Aios Ciao