面付基板の作り方(V-Cut)

Fusion PCBの基板製造サービス向けの面付データの作りかたをまとめます。
以前はシルクレイヤで指示していたV-Cut指示ですが、最近は外形線レイヤにて指示するみたいです。
KiCadは外形線にテキスト(シルクテキストのようなフォント置換される図形)を置くことができないのですこし無理やり感があります。

  1. 単品の基板を設計する
  2. 単品を並べる
  3. 分割指示を追加する
  4. 保存と出力

指示の仕方だけ確認したいかたは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かけていますので、外形線との位置関係を変えなければ影響ないと考えます。

まとめ

とりあえず私がいつも面付している方法をまとめました。
スクリプトを組めば簡単になるかもしれませんが、適用条件がブラックボックスになりかねないのであえて手作業を選択しています。

RAM Cartrish Design

ボードデザインについての資料ページです。

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-nameDirection
PIN_6spi_CSInput
PIN_7spi_MISOOutput
PIN_8spi_MOSIInput
PIN_10io_Vdet Input
PIN_11sfcram_DATA[7]Bidir
PIN_12sfcram_DATA[3]Bidir
PIN_13sfcram_DATA[6]Bidir
PIN_14sfcram_DATA[2]Bidir
PIN_17dbg_LED[0] Output
PIN_21sfcram_DATA[5]Bidir
PIN_22sfcram_DATA[1]Bidir
PIN_24sfcram_DATA[4]Bidir
PIN_25sfcram_DATA[0]Bidir
PIN_26sfc_SYSCLKInput
PIN_27spi_CLKInput
PIN_30dbg_LED[1]Output
PIN_32sfc_nWRInput
PIN_33sfc_nRDInput
PIN_38sfc_nROMSELInput
PIN_39sfc_nIRQInput
PIN_41sfc_ADDR[0]Input
PIN_43sfc_ADDR[23]Input
PIN_44sfc_nRESET_CICInput
PIN_45io_nOE_DATAOutput
PIN_46io_DIR_DATAOutput
PIN_47sfc_ADDR[1]Input
PIN_48dbg_LED[2]Output
PIN_50sfc_ADDR[22]Input
PIN_52sfc_ADDR[2]Input
PIN_54sfc_ADDR[21]Input
PIN_55sfc_ADDR[3]Input
PIN_56sfc_ADDR[20]Input
PIN_57sfc_ADDR[4]Input
PIN_58sfc_ADDR[19]Input
PIN_59sfc_ADDR[5]Input
PIN_60sfc_ADDR[18]Input
PIN_61dbg_LED[3]Output
PIN_62sfc_ADDR[6]Input
PIN_64sfc_ADDR[17]Input
PIN_65sfc_ADDR[7]Input
PIN_66sfc_ADDR[16]Input
PIN_69sfc_ADDR[8]Input
PIN_70sfc_ADDR[15]Input
PIN_74io_DIR_EXPANDOutput
PIN_75io_nOE_EXPANDOutput
PIN_76io_nOE_ADDRCTRLOutput
PIN_77io_DIR_ADDRCTRLOutput
PIN_78sfc_ADDR[9]Input
PIN_79sfc_ADDR[14]Input
PIN_80dbg_SW[0]Input
PIN_81sfc_ADDR[10]Input
PIN_84sfc_ADDR[13]Input
PIN_85sfc_ADDR[11]Input
PIN_86sfc_ADDR[12]Input
PIN_87sfc_nRAMSEL_REFRESHInput
PIN_88sfc_MCLKInput
PIN_89ram_ADDR[15]Output
PIN_90ram_nWE[3]Output
PIN_91ram_ADDR[14]Output
PIN_92ram_ADDR[13]Output
PIN_93ram_nWE[2]Output
PIN_96ram_ADDR[12]Output
PIN_97dbg_SW[1]Input
PIN_98ram_ADDR[11]Output
PIN_99ram_nWE[1]Output
PIN_100ram_ADDR[10]Output
PIN_101ram_ADDR[9]Output
PIN_102ram_nWE[0]Output
PIN_105ram_ADDR[8]Output
PIN_106ram_nCS[3]Output
PIN_110ram_nCS[2]Output
PIN_111ram_nCS[1]Output
PIN_113ram_nCS[0]Output
PIN_114ram_ADDR[7]Output
PIN_118ram_ADDR[6]Output
PIN_119ram_nOEOutput
PIN_120ram_ADDR[5]Output
PIN_121ram_ADDR[16]Output
PIN_122ram_ADDR[4]Output
PIN_124ram_ADDR[17]Output
PIN_127ram_ADDR[3]Output
PIN_130ram_ADDR[18]Output
PIN_131ram_ADDR[2]Output
PIN_132ram_ADDR[19]Output
PIN_134ram_ADDR[1]Output
PIN_135ram_ADDR[20]Output
PIN_140ram_ADDR[0]Output

Flex RAM Board

概要

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

RAM Cartrish v03イメージ

RAM Cartrishは5V I/Oに対応したFPGA開発ボードです。
FPGA内にロジックを組みあげることで、さまざまな用途に対応する拡張環境が構築できます。
もちろん基板単体でもFPGAやマイコンの動作は可能で、各種マイコンやFPGAのデバッグ用ポートが引き出されているため、細かな動作実験にも使えます。
プロトタイプのRAM CartriSHと比べて、FPGAのロジックエレメント数が増えています。それによりプロセッサIPも搭載しやすくなりました。(8kLE以上推奨)

RAM CartrishのFPGAは、カードエッジコネクタと周辺ポートのマッピングを担当します。外部にSRAMや周辺回路を接続し拡張することができます。
SRAMを接続した場合に備えてバッテリーバックアップ機能も付いています。

注意

このデバイスは自作プログラムの開発・デバッグ用です。
市販されているゲームカートリッジからダンプしたような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マイコン搭載

ハードウェア情報

各コネクタのピン配置は以下の通りです。
(画像準備中)

ソフトウェア情報

ベーシックなファームウェアについては準備中です。
ファームの提供は諸事情により中止します。

注意書き

このデバイスを用いたことにより生じた不利益・損害などに関して当サークルは一切責任を負わないものとします。ご自身の責任のもとご使用ください。

RAM CartriSH v0.1

SFC用プログラムを実機または互換機で動作させるためのデバイスです。
容量は32kB+32MBit(8kLEモデル)程度のプログラムを保持できます。

現状プロトタイプ段階ですが、生産性(採算)が悪いのでお蔵入り状態です。

スーファミの絵が好き。

 細かく言えば、ブラウン管テレビにコンポジットビデオケーブルで
接続して表示される、どちらかというとパキパキしていないドット絵が好き。
 にじんで汚いとか、ぶちてるとかいう感想は、私は注意を払って使う。
 ドット絵製作者の意図に無い劣化が起きた時にそう思う。
 画面に表示される画(え)が基準で描かれたドット絵の、基準がどこにあるのかがわからなければむやみに ぼやけてる とか にじんでる とかは言わないようにしている。

 ブラウン管テレビの入力信号も、元をたどればパキパキのドット絵ではあるけれど、画面に表示されるまでに通る信号処理、そして表示器そのものでなされる表示上の制約によりいろいろな変化が起こる。
 スーファミにはいくつかの接続方法があり、それによって表示される画像の品質は大きく左右される。くわえて表示に用いるテレビの方もいくつかの表示方法があるため、トータルとしての品質は上から下まで多種多様である。

 例えば、RGB21形式というアナログ信号ではRGBがすべて分離して伝送され、これを色再現性の高い液晶表示器に接続して表示される絵は「データに忠実に表示された画像」となる。「絵として一番きれいな画像」とは少し違う。
 RF信号形式で接続する場合、映像と音声を混合しアナログテレビ放送で用いら電波の周波数帯に乗せた信号に変換する。そして電波に乗せる代わりにアンテナ線で直接テレビに入力する。テレビはその信号を アンテナで受信したテレビ番組と同様に 映像と音声を分解し表示する。
 このときの混合と分離操作は可逆な変換ではなく、大幅に情報が失われ、劣化する。

 一般にこのような変換と復元の操作による情報落ちは『信号劣化』と言われるが、その劣化すら考慮して描かれるドット絵は、テレビ画面上においてはサブピクセルレベルの情報量が展開・描画されるのである。
 画面にドットを打とうと思ったときに、この色を使うと0.5ピクセルずれて打たれる とか この明るさだと縦方向に滲む とか横に繋がるとか、そういうクセを考慮して描くわけで、そういった画像が使われれているゲームのRGB21形式の出力映像は、いわば圧縮された状態のドット絵を見ている状態だと私は考えている。

 これまで(これを書いている2019年末時点)1年以上かけて、この情報圧縮された映像を、製作者が意図した本来の画像に展開する方法を模索してきた。
 その調査や実験の一環として、いろいろ作ったのでアーカイブとして残していきたいと思う。文章や画像、映像やハードウェアなど、いろいろな形で残していければいいなぁと考えている。
 ドット絵の好みは人それぞれなので、絵面的な部分だけに限らず、技術的な部分でも趣味を共有していけたらうれしい。

 好きなことを、楽しんでいきましょう。
Aios Ciao