=============================================================================== Ptune3 is SH7305 CPG&BSC&DBSC tuning utility for PRIZM fx-CG50/Graph 90+E v0.25 copyright(c)2014/2015/2016/2017/2018/2019/2020/2023 by sentaro21 e-mail sentaro21@pm.matrix.jp =============================================================================== 世界初のカラーグラフ電卓、CASIOのfx-CG10/20の後継機となるfx-CG50/Graph 90+E が2017年春より発売開始されました。 先代のfx-10/20と同じSH4Aを採用しており、Ptune2同様のチューンアップ・ツールとしてPtune3を開発中です。 fx-CG50/Graph 90+EはRAMメモリがSDRAMに変更された以外は大きな変更点は無い模様です。 ・特徴  200MHz以上までオーバークロックできます。  メモリの動作限界周波数を自動的に測定します。(一部限定)  周波数/ウエイト設定をファンクションキーに保存できます。  設定をセーブしておけば次回起動時に自動的に読み込まれます。 ・欠点  速度アップに応じて消費電流が増えます。 (fx-CG50/Graph 90+Eは消費電力が削減されており、同クロックではfx-CG10/20の6割程度の消費電力です。)  十分にテストされてないので未知の不具合が起こっても不思議ではありません。 ========================== 注意!!! ============================================ このツールは安全に動作するように十分注意して作成されていますが、 あなたの電卓に重大なダメージを与える恐れがあります。 ほとんどの場合はリセットで復帰できますが、電卓のシステムがフラッシュROMにあるゆえに、 BIOSまたはOS領域への誤書込が起きた場合には確実に再起不能に陥ります。 ツールの使用はバックアップをとった上であなたの責任においてお願いいたします。 作者はこのツールの使用の結果においていかなる責任も負わないものとさせていただきます。 =============================================================================== ------------------------------------------------------------------------------- CPU ------------------------------------------------------------------------------- SH7305 ルネサスのSH7724(およびSH7730)に非常によく似たCPUですが、 電卓用にカスタマイズされたCPUです。 キャッシュはインストラクション、データともに32KB、 2本のパイプを持つスーパースカラCPUです。 細部の詳しい説明、構造はルネサスのPDF(SH7724,SH7730等)を参照してください。 ここでは違っている(と思われる)部分だけを説明します。 ------------------------------------------------------------------------------- CPG(クロックパルスジェネレータ) 参照元: SH7724 データシート ------------------------------------------------------------------------------- FLL FLL回路の逓倍率。 FLL回路は32.768KHzを逓倍して基本クロックを生成します。 FLLの逓倍率はデフォルトで900です。 SH7305の基本クロックは32.768KHzを900倍して1/2にしたした14.7456MHzが FLL回路より出力されます。 SH7724のマニュアルでは20MHz〜33MHzまでとありますが、 20MHz以下、33MHz以上でも動作可能なようです。 PLL PLL回路の逓倍率。 FLL回路より出力される基本クロックを逓倍して各種クロックの元になるクロックを生成します。 デフォルトは16倍に設定されています。 14.7456MHz * 16 = 235.9296MHz 1倍〜32倍まで設定できます。 fx-CG10/20とは違って33倍で1倍に戻ってしまうので32倍までに制限しています。 IFC CPUクロックの分周率。 PLLで生成されたクロックを分周してCPUコアに供給するクロックを生成します。 fx-CG50ではデフォルトで1/2に設定されていて117.96MHzで動作しています。 最大280MHz程度まで動作可能なようです。 SFC Sクロックの分周率。 PLLで生成されたクロックを分周してSuperHywayバスに供給するクロックを生成します。 デフォルトで1/4に設定されていて58.98MHzで動作しています。 最大200MHz程度まで動作可能なようですが160MHz程度までにした方が安全です。 BFC メモリバスクロックの分周率。 PLLで生成されたクロックを分周してメモリバスに供給するクロックを生成します。 デフォルトでは1/4に設定されていて58.98MHzで動作しています。 現バージョンのPtune3においてはSDRAMの動作限界(100+αMHz程度)が動作周波数限界となります。 PFC 周辺クロックの分周率。 PLLで生成されたクロックを分周してI/Oに供給するクロックを生成します。(RS232C等) デフォルトでは1/8に設定されていて29.49MHzで動作しています。 CG10/20よりマージンが確保されているのかより高い周波数でも動作します。 最大50MHz程度までは動作確認できています。 IFC,SFC,BFC,PFCの分周率はSH7724やSH7730とは違って1/2の倍数のみです。 0000: 1/2 0001: 1/4 IFC デフォルト 0010: 1/8 SFC,BFC デフォルト 0011: 1/16 PFC デフォルト 0100: 1/32 0101: 1/64 各分周比は IFC >= SFC >= BFC >= PFC の関係を保たないと予期せぬ動作を引き起こします。 それぞれの比率がかけ離れても予期せぬ動作が起きる可能性があります。 このツールでは正常動作する範囲内に自動調整します。 ------------------------------------------------------------------------------- BSC(バスステートコントローラ) 参照元: SH7724/SH7730 データシート ------------------------------------------------------------------------------- バスステートコントローラは各種ウエイト等の設定を行います。 レジスタの構成はSH7724と同じだと思われます。 CS0BCR, CS0WCR : FLASH ROM エリア (CS2BCR, CS2WCR :( main RAM エリア) CS3BCR, CS3WCR : SDRAM エリア CS5ABCR,CS5AWCR : LCDC その他のレジスタに使われ方は不明です。 ROM アクセスタイム100nsのNOR型フラッシュROM(32MB)が採用されており OSやアドインの格納場所として使用されています。 通常使用では書き込みはあまり起きないですが、 電源オフで自動的にフラッシュROMにメインメモリの内容をバックアップするので 電源オフで毎回フラッシュの書き込みが発生します。 ウエイト値の設定が低すぎると読み込みや書き込みコマンドにエラーが発生し、 BIOSやOSエリアに間違って書き込みが発生すると確実にフラッシュメモリの内容が 破壊されてしまいます。 このツールではそうならないようなウエイト値に自動設定しますが、 ウエイト値に余裕がない場合には誤動作する可能性があります。 RAM アクセスタイム7nsのSDRAM(8MB)が採用されており、 メインメモリやアドインのワークエリアとして使用されます。 CL2にて100MHz、CL3にて143MHzまでが定格動作ですが、現状では100数MHz以上には上げることが出来ていません。 ウエイト フラッシュROM,RAMのアクセス時に挿入されるウエイト値。 ROMのデフォルトウエイト値 8 (fx-CG50) RAMのデフォルトウエイト値 CL2 メモリのウエイトやメモリ間アクセスのアイドルタイム等、詰められるところを 改善するだけで実行速度は3割〜5割増になります。 ========================== 注意!!! ============================================ このツールは安全に動作するように十分注意して作成されていますが、 あなたの電卓に重大なダメージを与える恐れがあります。 ほとんどの場合はリセットで復帰できますが、電卓のシステムがフラッシュROMにあるゆえに、 BIOSまたはOS領域への誤書込が起きた場合には確実に再起不能に陥ります。 ツールの使用はバックアップをとった上であなたの責任においてお願いいたします。 作者はこのツールの使用の結果においていかなる責任も負わないものとします。 =============================================================================== ------------------------------------------------------------------------------- メイン画面 ------------------------------------------------------------------------------- ---------------------------------- FLL:x900 * 14.75MHz PLL:x16 *235.93MHz IFC:1/2 CPU *117.96MHz SFC:1/4 roR 8 * 58.98MHz BFC:1/4 CL 2 * 58.98MHz PFC:1/8 * 29.49MHz messeage area / benchmark score [function key] ----------------------------------- roR: ROMリードアクセスウエイトサイクル数 赤:危険範囲   緑:ウエイト減らせる可能性あり。 CL : SDRAM CL値 ------------------------------------------------------------------------------- 使用方法 ------------------------------------------------------------------------------- -[UP] どこをいじるか選択します。 (FLL,PLL,SFC,BFC,PFC) -[DOWN] -[LEFT] 一段階上げます。 -[RIGHT] 一段階下げます。 -[SHIFT]+[UP] FLLの変更が可能になります。(セットアップにて+[SHIFT]無しに変更できます。) -[F1] 電卓リセット時のデフォルトに戻します。 CPU 118MHz, PLLx16, bus 58MHz デフォルト -[F2] F2キーに記憶させた設定を呼び出します。 初期設定=> CPU 59MHz, PLLx32, bus 29MHz, ウエイト削減 -[F3] F2キーに記憶させた設定を呼び出します。 初期設定=> CPU 118MHz, PLLx32, bus 58MHz, ウエイト削減 -[F4] F2キーに記憶させた設定を呼び出します。 初期設定=> CPU 236MHz, PLLx32, bus 58MHz, ウエイト削減 -[F5] F2キーに記憶させた設定を呼び出します。 初期設定=> CPU 192MHz, PLLx26, bus 95MHz, ウエイト削減 -[F6] 簡単なベンチマークを行います。 CPUのスコアはfx-9860Gのadd-in "UTIL"と同様のタイマー設定によるループ回数をカウントします。 このツールでは100ms間でのループ回数を1/100にした値です。 50ms間のメモリアクセス(ROM,RAM,I/O)の回数をカウントします。 切り替えでPutDsipDDを1秒間に何回呼び出せるかの回数を計測します。(fps) -[SHIFT] -[F1] メインメモリにセーブします。次回起動時に自動的に読み込まれます。 -[F2] 現在の設定をF2キーに記憶させます。 -[F3] 現在の設定をF3キーに記憶させます。 -[F4] 現在の設定をF4キーに記憶させます。 -[F5] 現在の設定をF5キーに記憶させます。 -[F6] メインメモリよりロードします。 -[OPTN] 各ウエイトにおける限界周波数を一覧表示します。 -[F4] 設定を初期化します。 -[F5] ROM/RAMの限界周波数およびRAMおリード/ライト限界周波数一覧表示します。 RAMのライト限界周波数はあるところから伸びなくなり頭打ちになりますがそこがSクロック&バスクロックの限界となります。 -[F6] 各ウエイトにおける最大動作周波数を自動的に計測します。 -[VARS] -[F1] register display FRQCR -[F2] register display BCR/WCR 押すたびに切り替わります。 -[F3] (ROM)CS0BCR (RAM)CS2BCRのウエイト設定をします。 カーソルキーで選択 -[F1] + -[F2] - -[F4] ウエイト値の初期化します。 -[F4] (ROM)CS0WCR (RAM)CS2WCRのウエイト設定をします。 カーソルキーで選択 -[F1] + -[F2] - -[F4] ウエイト値を初期化します。 -[F5] CS5ABCR CS5BBCRのウエイト設定をします。 カーソルキーで選択 -[F1] + -[F2] - -[F4] ウエイト値の初期化します。 -[F6] CS5AWCR CS5BWCRのウエイト設定をします。 カーソルキーで選択 -[F1] + -[F2] - -[F4] ウエイト値を初期化します。 -[PRGM] -[F1] CS3BCR CS4BCRレジスタ設定をします。 -[F2] CS3WCR CS4WCRレジスタ設定をします。 -[F3] CS5ABCR CS5BBCRレジスタ設定をします。 -[F4] CS5AWCR CS4BWCRレジスタ設定をします。 -[F5] CS6ABCR CS6BBCRレジスタ設定をします。 -[F6] CS6AWCR CS6BWCRレジスタ設定をします。 -[EXIT] exit -[AC] 画面を初期化します。 -[EXE] ベンチマークが選択されている場合に再度実行します。 -[*] ROMのウエイト値を増やします。 -[/] ROMのウエイト値を減らします。 さらに下げられる場合は、メモリチェックが始まります。 エラーが出た場合はウエイト値は減らせません。 -[X^2] -[^] スペクトラム拡散機能のOn/Offを切り替えます。 -[SETUP] 初期設定 ROM計測時の動作マージン設定 0-15%  5% ( 1%以下の設定は危険です。) ウエイト周波数一覧はリセットされません。 RAM計測時の動作マージン設定 0-15%  5% ( 1%以下の設定は危険です。) ウエイト周波数一覧はリセットされません。 PLL周波数最大値設定 800MHz CPU周波数最大値設定 275MHz Shw周波数最大値設定 150MHz Bus周波数最大値設定 100MHz I/O周波数最大値設定 50MHz スタートアップ時のメモリチェック off F1キーを押した場合のyes/no チェック off ウエイトを自動的に下げる on RAM WWを自動的に上げ下げする off ROM IWWを自動的に下げる on PFCを自動的に上げる on シフト無しでFLL表示する off 電池電圧表示 on 実測周波数表示 on ------------------------------------------------------------------------------- 最大メモリ動作周波数の自動計測 ------------------------------------------------------------------------------- このツールにおいてはメモリの動作限界を計測することが重要です。 ROMの計測時にはまず最初にどのエリア(全体の中の64KB)が一番遅いかを計測します。 その一番遅いエリアで各ウエイト値における限界周波数を計測します。 計測といっても単純なもので、同じアドレスを連続して二度読みして違いがなければOk、 違いがあればNGということにしてあります。 SDRAMテストはウエイトを変更してのテストが出来ないので、 システムの現状としての限界メモリテストとなります。 システムエラーが出る場合があるのでそのときはリセット必須です。 エラーが出なくてもSDRAMのメモリテストを行なった後はリセットすることを推奨します。 v0.10よりSDRAMテストは現在のメモリウエイト設定でのテストになっています。 メモリタイミングを詰めると動作限界が下がっていきますが、テスト中にエラーになったりシステムエラーが起きる場合があります。 その場合は、リセットすれば復帰します。 ------------------------------------------------------------------------------- 注意 ------------------------------------------------------------------------------- 動作周波数限界テストおよびメモリテスト、各種テスト時にはUSB接続状態では実行しないで下さい。 RS232CはI/Oクロックに依存します。通信する場合はI/Oクロックを同じにしてください。 ------------------------------------------------------------------------------- 周波数のズレ対応 ver.0.20以降 ------------------------------------------------------------------------------- CG10/20では内部PLLから計算される周波数と実際の動作周波数が一致していますが、 CG50/Graph90+Eでは実測すると約1.6%ほど低い周波数で動作しているようです。 そこでver.0.20より実際の動作周波数表示に対応しました。 正確な補正値は分からないので、暫定的に内部PLL周波数に900/914を乗じた周波数を表示します。 セットアップで内部PLL周波数表示との切替が可能です。 (参考リンク) http://www.casiopeia.net/forum/viewtopic.php?f=25&t=7327 (ver.0.21) CG50ではクロック発振器のスペクトラム拡散機能がデフォルトでイネーブルされており、 実際の動作周波数が内部PLLから計算される周波数より低くなっていることが確認できました。 0.21以降ではスペクトラム拡散機能がイネーブルされている場合は画面表示の表記が変わります。 ------------------------------------------------------------------------------- 謝辞 ------------------------------------------------------------------------------- このツールはPover(Ashbad氏作成)ソースを元に拡張して、 PrizmSDK 0.3(Ptune2) にて作成されたPtune2を修正したバージョンです。 fxReverse project documentation, SuperH-based fx calculators, Cemetech WikiPrizm, 先輩ユーザーの皆様の各種解析結果に感謝いたします。 私がCG50を所持する以前のPtune3 ver0.01~0.04を作成できたのはTI-PlanetのCritor氏にテストしていただいたおかげです。 どうもありがとうございました。 このツールが皆様のお役に立てれば幸いです。 ------------------------------------------------------------------------------- ライセンス ------------------------------------------------------------------------------- このソフトウエアはフリーソフトウエアです。 ライセンスはGPLv2に準じます。 ------------------------------------------------------------------------------- v0.25 2023.10.24 [F5]の設定をPLLx25に変更しました。 v0.24 2020.2.20 "X"を乗算記号"x"に変更しました。 v0.23 2020.1.3 Colon様提供のアイコンデータによりファンクションキーの表示を改善しました。 v0.22 2019.8.29 電圧表示値を9%上方修正しました。 v0.21 2019.2.20 スペクトラム拡散機能のOn/Off機能を追加しました。 [X^2]もしくは[^]キーでOn/Offが切り替わります。 v0.20 2018.8.19 ROM/SDRAMテストプログラムを修正しました。 2018.8.18 実際の周波数とのズレを考慮して表示するようにしました。(セットアップで設定できます。) (暫定補正値 PLLより算出される内部周波数 * 900 / 914) v0.10 2017.10.1   RAMテストプログラムを設定された状態で行うように修正しました。 SDRAMのメモリタイミングを詰めるとRAMテスト中にエラーになったりシステムエラーが起きる場合があります。 その場合は、リセットすれば復帰します。 v0.05 2017.7.20   RAMテストプログラムを修正しました。     保存されないレジスタがあったのを修正しました。(CS3BCR,CS3WCR) 起動時のデフォルト設定を変更しました。 v0.04 2017.4.19 ROMテストプログラムを修正しました。 CS2WCR のレジスタ構成をSH7724に戻しました. ( SH7730 -> SH7724 ) PLL乗数の最大値を32に制限しました。 v0.03 2017.4.18 ROMテストのバグ修正しました。 v0.02 2017.4.17 CS2WCR,CS3WCR register構成をSH7730に変更しました. ( SH7724 -> SH7730 ) SDRAMの動作タイミング設定が可能になりました。 PLL乗数の最大値を33に制限しました。 v0.01 2017.4.15 初版