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はSFC用プログラム開発用のエミュレータボードです。
スーパーファミコン互換機でのプログラム実行環境を提供します。
基板単体でもFPGAやマイコンの動作は可能ですので、各種マイコンの学習にも使えます。
プロトタイプのRAM CartriSHと比べて、FPGAのロジックエレメント数が増えています。それによりプロセッサIPも搭載しやすくなりました。(8kLE以上推奨)

RAM Cartrishでは、SFCプログラムをFPGAに内蔵または外部RAMにプログラムデータをダウンロードして実行します。
開発用PCからSFC互換機本体が遠い場合の持ち運びに備えてバッテリーバックアップ機能も付いています。

注意

このデバイスは自作プログラムの開発用です。
市販されているゲームカートリッジからダンプしたようなROMイメージに対して、法律に反する形での実行や改造を幇助、奨励するものではありません。
RAM全域を用いた1本のプログラムの実行を想定しており、基本的に都度ダウンロードして動作させます。

スペック

FPGAオンチップメモリ 16kB、32kB (搭載のFPGA規模による)
SFC標準メモリバス対応 (拡張バスを利用するような特殊な機能は非対応)
拡張RAMボード(Flex RAM Boardシリーズ)対応

オプション
 ・Nios II環境構築用48MHzオシレータ実装可能
 ・拡張メモリボード「Flex RAM Board」接続可能
 ・外部メモリバッテリバックアップ機能利用可能
 ・PIC IC搭載可能

必要開発環境

本デバイスのファームウェアは書き込まれていません。
SFCプログラムのダウンロード&実行に関しては、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