以下、実施例に基づいて本発明を詳細に説明する。図1は、本実施例のパチンコ機GMを示す斜視図である。このパチンコ機GMは、島構造体に着脱可能に装着される矩形枠状の木製外枠1と、外枠1に固着されたヒンジ2を介して開閉可能に枢着される前枠3とで構成されている。この前枠3には、遊技盤5が、裏側からではなく、表側から着脱自在に装着され、その前側には、ガラス扉6と前面板7とが夫々開閉自在に枢着されている。
ガラス扉6の外周には、LEDランプなどによる電飾ランプが、略C字状に配置されている。一方、ガラス扉6の上部左右位置と下側には、全3個のスピーカが配置されている。上部に配置された2個のスピーカは、各々、左右チャネルR,Lの音声を出力し、下側のスピーカは重低音を出力するよう構成されている。
前面板7には、発射用の遊技球を貯留する上皿8が装着され、前枠3の下部には、上皿8から溢れ出し又は抜き取った遊技球を貯留する下皿9と、発射ハンドル10とが設けられている。発射ハンドル10は発射モータと連動しており、発射ハンドル10の回動角度に応じて動作する打撃槌によって遊技球が発射される。
上皿8の外周面には、チャンスボタン11が設けられている。このチャンスボタン11は、遊技者の左手で操作できる位置に設けられており、遊技者は、発射ハンドル10から右手を離すことなくチャンスボタン11を操作できる。このチャンスボタン11は、通常時には機能していないが、ゲーム状態がボタンチャンス状態となると内蔵ランプが点灯されて操作可能となる。なお、ボタンチャンス状態は、必要に応じて設けられるゲーム状態である。
上皿8の右部には、カード式球貸し機に対する球貸し操作用の操作パネル12が設けられ、カード残額を3桁の数字で表示する度数表示部と、所定金額分の遊技球の球貸しを指示する球貸しスイッチと、ゲーム終了時にカードの返却を指令する返却スイッチとが設けられている。
図2に示すように、遊技盤5の表面には、金属製の外レールと内レールとからなるガイドレール13が環状に設けられ、その略中央には、中央開口HOが設けられている。そして、中央開口HOには、大型の液晶カラーディスプレイ(LCD)で構成された表示装置DSが配置されている。
表示装置DSは、大当り状態に係わる特定図柄を変動表示すると共に背景画像や各種のキャラクタなどをアニメーション的に表示する装置である。この表示装置DSは、中央部に特別図柄表示部Da〜Dcと右上部に普通図柄表示部19とを有している。そして、特別図柄表示部Da〜Dcでは、大当り状態の招来を期待させるリーチ演出が実行されることがあり、特別図柄表示部Da〜Dc及びその周りでは、適宜な予告演出などが実行される。
遊技球が落下移動する遊技領域には、図柄始動口15、大入賞口16、普通入賞口17、及び、ゲート18が配設されている。これらの入賞口15〜18は、それぞれ内部に検出スイッチを有しており、遊技球の通過を検出できるようになっている。
図柄始動口15は、左右一対の開閉爪15aを備えた電動式チューリップで開閉されるように構成され、普通図柄表示部17の変動後の停止図柄が当り図柄を表示した場合には、所定時間だけ、若しくは、所定個数の遊技球を検出するまで、開閉爪15aが開放されるようになっている。
なお、普通図柄表示部19は、普通図柄を表示するものであり、ゲート18を通過した遊技球が検出されると、普通図柄が所定時間だけ変動し、遊技球のゲート18の通過時点において抽出された抽選用乱数値により決定される停止図柄を表示して停止する。
大入賞口16は、前後方向に進退する開閉板16aを有して構成されている。大入賞口16の動作は、特に限定されないが、典型的な大当り状態では、大入賞口16の開閉板16aが開放された後、所定時間が経過し、又は所定数(例えば10個)の遊技球が入賞すると開閉板16aが閉じる。このような動作は、最大で例えば15回まで継続され、遊技者に有利な状態に制御される。なお、特別図柄表示部Da〜Dcの変動後の停止図柄が特別図柄のうちの特定図柄であった場合には、特別遊技の終了後のゲームが高確率状態(確変状態)となるという特典が付与される。
図3は、上記した各動作を実現するパチンコ機GMの全体回路構成を示すブロック図である。図示の通り、このパチンコ機GMは、AC24Vを受けて各種の直流電圧や、電源異常信号ABN1、ABN2やシステムリセット信号(電源リセット信号)SYSなどを出力する電源基板20と、遊技制御動作を中心統括的に担う主制御基板21と、主制御基板21から受けた制御コマンドCMDに基づいてランプ演出及び音声演出を実行する演出制御基板22と、演出制御基板22から受けた制御コマンドCMD’に基づいて表示装置DSを駆動する画像制御基板23と、主制御基板21から受けた制御コマンドCMD”に基づいて払出モータMを制御して遊技球を払い出す払出制御基板24と、遊技者の操作に応答して遊技球を発射させる発射制御基板25と、を中心に構成されている。
但し、この実施例では、主制御基板21が出力する制御コマンドCMDは、コマンド中継基板26と演出インタフェイス基板27を経由して、演出制御基板22に伝送される。また、演出制御基板22が出力する制御コマンドCMD’は、演出インタフェイス基板27と画像インタフェイス基板28を経由して、画像制御基板23に伝送され、主制御基板21が出力する制御コマンドCMD”は、主基板中継基板32を経由して、払出制御基板24に伝送される。制御コマンドCMD,CMD’,CMD”は、何れも16ビット長であるが、主制御基板21や払出制御基板24が関係する制御コマンドは、8ビット長毎に2回に分けてパラレル送信されている。一方、演出制御基板22から画像制御基板23に伝送される制御コマンドCMD’は、16ビット長をまとめてパラレル伝送されている。そのため、可動予告演出を含む予告演出を、多様化して多数の制御コマンドを連続的に送受信するような場合でも、迅速にその処理を終えることができ、他の制御動作に支障を与えない。
ところで、本実施例では、演出インタフェイス基板27と演出制御基板22とは、配線ケーブルを経由することなく、雄型コネクタと雌型コネクタとを直結されて二枚の回路基板が積層されている。同様に、画像インタフェイス基板28と画像制御基板23についても、配線ケーブルを経由することなく、雄型コネクタと雌型コネクタとを直結されて二枚の回路基板が積層されている。そのため、各電子回路の回路構成を複雑高度化しても基板全体の収納空間を最小化できると共に、接続ラインを最短化することで耐ノイズ性を高めることができる。
これら主制御基板21、演出制御基板22、画像制御基板23、及び払出制御基板24には、ワンチップマイコンを備えるコンピュータ回路がそれぞれ搭載されている。そこで、これらの制御基板21〜24とインタフェイス基板27〜28に搭載された回路、及びその回路によって実現される動作を機能的に総称して、本明細書では、主制御部21、演出制御部22’、画像制御部23’、及び払出制御部24と言うことがある。すなわち、この実施例では、演出制御基板22と演出インタフェイス基板27とで演出制御部22’を構成し、画像制御基板23と画像インタフェイス基板28とで画像制御部23’を構成している。なお、演出制御部22’、画像制御部23’、及び払出制御部24の全部又は一部がサブ制御部である。
また、このパチンコ機GMは、図3の破線で囲む枠側部材GM1と、遊技盤5の背面に固定された盤側部材GM2とに大別されている。枠側部材GM1には、ガラス扉6や前面板7が枢着された前枠3と、その外側の木製外枠1とが含まれており、機種の変更に拘わらず、長期間にわたって遊技ホールに固定的に設置される。一方、盤側部材GM2は、機種変更に対応して交換され、新たな盤側部材GM2が、元の盤側部材の代わりに枠側部材GM1に取り付けられる。なお、枠側部材1を除く全てが、盤側部材GM2である。
図3の破線枠に示す通り、枠側部材GM1には、電源基板20と、払出制御基板24と、発射制御基板25と、枠中継基板35と、ランプ駆動基板36とが含まれており、これらの回路基板が、前枠3の適所に各々固定されている。
ランプ駆動基板36には、複数のLEDが接続されており、これらのLED群を駆動する駆動データSDATAは、シリアル信号として、演出制御基板22→演出インタフェイス基板27→枠中継基板34→枠中継基板35を経由して、ランプ駆動基板36に搭載された複数のドライバDRijに伝送されている。
実施例のドライバDRij(ドライバIC)は、各々、LEDや電飾ランプなどのLED群を最高24個まで駆動可能であるが、以下の説明では、ランプ駆動基板36に搭載された5個のドライバDRijによって、合計5×24個のLEDが駆動されているとする(図7参照)。そして、本明細書では、これらのLEDを、便宜上、第0チャンネル(CH0)のLED群と称する。
遊技盤5の背面には、主制御基板21、演出制御基板22、画像制御基板23が、表示装置DSやその他の回路基板と共に固定されている。そして、枠側部材GM1と盤側部材GM2とは、一箇所に集中配置された接続コネクタC1〜C4によって電気的に接続されている。
電源基板20は、接続コネクタC2を通して、主基板中継基板32に接続され、接続コネクタC3を通して、電源中継基板33に接続されている。電源基板20には、交流電源の投入と遮断とを監視する電源監視部MNTが設けられている。電源監視部MNTは、交流電源が投入されたことを検知すると、所定時間だけシステムリセット信号SYSをLレベルに維持した後に、これをHレベルに遷移させる。
また、電源監視部MNTは、交流電源の遮断を検知すると、電源異常信号ABN1,ABN2を、直ちにLレベルに遷移させる。なお、電源異常信号ABN1,ABN2は、電源投入後に速やかにHレベルとなる。
ところで、本実施例のシステムリセット信号は、交流電源に基づく直流電源によって生成されている。そのため、交流電源の投入(通常は電源スイッチのON)を検知してHレベルに増加した後は、直流電源電圧が異常レベルまで低下しない限り、Hレベルを維持する。したがって、直流電源電圧が維持された状態で、交流電源が瞬停状態となっても、システムリセット信号SYSがCPUをリセットすることはない。なお、電源異常信号ABN1,ABN2は、交流電源の瞬停状態でも出力される。
主基板中継基板32は、電源基板20から出力される電源異常信号ABN1、バックアップ電源BAK、及びDC5V,DC12V,DC32Vを、そのまま主制御部21に出力している。一方、電源中継基板33は、電源基板20から受けたシステムリセット信号SYSや、交流及び直流の電源電圧を、そのまま演出インタフェイス基板27に出力している。演出インタフェイス基板27は、受けたシステムリセット信号SYSを、そのまま演出制御部22’と画像制御部23’に出力している。
一方、払出制御基板24は、中継基板を介することなく、電源基板20に直結されており、主制御部21が受けると同様の電源異常信号ABN2や、バックアップ電源BAKを、その他の電源電圧と共に直接的に受けている。
電源基板20が出力するシステムリセット信号SYSは、電源基板20に交流電源24Vが投入されたことを示す電源リセット信号であり、この電源リセット信号によって演出制御部22’と画像制御部23’のワンチップマイコンは、その他のIC素子と共に電源リセットされるようになっている。
但し、このシステムリセット信号SYSは、主制御部21と払出制御部24には、供給されておらず、各々の回路基板21,24のリセット回路RSTにおいて電源リセット信号(CPUリセット信号)が生成されている。そのため、例えば、接続コネクタC2がガタついたり、或いは、配線ケーブルにノイズが重畳しても、主制御部21や払出制御部24のCPUが異常リセットされるおそれはない。演出制御部22’と画像制御部23’は、主制御部21からの制御コマンドに基づいて、従属的に演出動作を実行することから、回路構成の複雑化を回避するために、電源基板20から出力されるシステムリセット信号SYSを利用している。
ところで、主制御部21や払出制御部24に設けられたリセット回路RSTは、各々ウォッチドッグタイマを内蔵しており、各制御部21,24のCPUから、定時的なクリアパルスを受けない限り、各CPUは強制的にリセットされる。
また、この実施例では、RAMクリア信号CLRは、主制御部21で生成されて主制御部21と払出制御部24のワンチップマイコンに伝送されている。ここで、RAMクリア信号CLRは、各制御部21,24のワンチップマイコンの内蔵RAMの全領域を初期設定するか否かを決定する信号であって、係員が操作する初期化スイッチSWのON/OFF状態に対応した値を有している。
主制御部21及び払出制御部24は、電源基板20から電源異常信号ABN1,ABN2を受けることによって、停電や営業終了に先立って、必要な終了処理を開始するようになっている。また、バックアップ電源BAKは、営業終了や停電により交流電源24Vが遮断された後も、主制御部21と払出制御部24のワンチップマイコンの内蔵RAMのデータを保持するDC5Vの直流電源である。したがって、主制御部21と払出制御部24は、電源遮断前の遊技動作を電源投入後に再開できることになる(電源バックアップ機能)。このパチンコ機では少なくとも数日は、各ワンチップマイコンのRAMの記憶内容が保持されるよう設計されている。
図3に示す通り、主制御部21は、主基板中継基板32を経由して、払出制御部24に制御コマンドCMD”を送信する一方、払出制御部24からは、遊技球の払出動作を示す賞球計数信号や、払出動作の異常に係わるステイタス信号CONや、動作開始信号BGNを受信している。ステイタス信号CONには、例えば、補給切れ信号、払出不足エラー信号、下皿満杯信号が含まれる。動作開始信号BGNは、電源投入後、払出制御部24の初期動作が完了したことを主制御部21に通知する信号である。
また、主制御部21は、遊技盤中継基板31を経由して、遊技盤5の各遊技部品に接続されている。そして、遊技盤上の各入賞口16〜18に内蔵された検出スイッチのスイッチ信号を受ける一方、電動式チューリップなどのソレノイド類を駆動している。ソレノイド類や検出スイッチは、主制御部21から配電された電源電圧VB(12V)で動作するよう構成されている。また、図柄始動口15への入賞状態などを示す各スイッチ信号は、電源電圧VB(12V)と電源電圧Vcc(5V)とで動作するインタフェイスICで、TTLレベル又はCMOSレベルのスイッチ信号に変換された上で、主制御部21に伝送される。
先に説明した通り、演出制御基板22と演出インタフェイス基板27とはコネクタ連結によって一体化されており、演出制御部22’は、電源中継基板33を経由して、電源基板20から各レベルの直流電圧(5V,12V,32V)と、システムリセット信号SYSを受けている(図3及び図4参照)。また、演出制御部22’は、コマンド中継基板26を経由して、主制御部21から制御コマンドCMDとストローブ信号STBとを受けている(図3及び図4参照)。
そして、演出制御部22’は、演出インタフェイス基板27を経由して、ランプ駆動基板29やランプ駆動基板30に搭載されたドライバDRijに、ランプ駆動データSDATA(シリアル信号)を供給している。特に限定されるものではないが、ランプ駆動基板29,30に搭載されているドライバDRijは、ランプ駆動基板36に搭載されたドライバDRijと同一構成であり、ランプ駆動基板29,30には、各々、5個のドライバDRijが配置されている。
先に説明した通り、これらのドライバDRijは、各々、最高24個のランプを駆動可能であるが、以下の説明では、ランプ駆動基板29に接続された合計24×5個のランプを、第1チャンネルCH1のランプ群と称し、ランプ駆動基板30に接続された合計24×5個のランプを、第2チャンネルCH2のランプ群と称する(図7参照)。
このように、本実施例では、多数(3×24×5個)のランプが、チャンネルCH0〜チャンネルCH2のランプ群に三分されて、各々、ランプ駆動基板36、ランプ駆動基板29、ランプ駆動基板30に接続されている。なお、図4に関して後述するように、全てのドライバDRijは、演出制御部22’のワンチップマイコン40が、一括的に出力するシリアル信号SDATAのうち、該当信号を受信して、担当するランプ群を駆動している(図4参照)。
ところで、同じドライバDRijを使用してステッピングモータを駆動することもでき、例えば、破線に示すように、ランプ駆動基板30を経由して、演出モータ群M1〜Mnを駆動するのも好適である。この場合、モータ駆動データは、ランプ駆動データと同様のシリアル信号であり、演出内容を豊富化するべく演出モータ個数を増やしても、配線ケーブルが増加することがなく、機器構成が簡素化される。
図3及び図4に示す通り、演出制御部22’は、画像制御部23’に対して、制御コマンドCMD’及びストローブ信号STB’と、電源基板20から受けたシステムリセット信号SYSと、2種類の直流電圧(12V,5V)とを出力している。
そして、画像制御部23’では、制御コマンドCMD’に基づいて表示装置DSを駆動して各種の画像演出を実行している。表示装置DSは、LEDバックライトによって発光しており、画像インタフェイス基板28から5対のLVDS(低電圧差動伝送Low voltage differential signaling)信号と、バックライト電源電圧(12V)とを受けて駆動されている(図4参照)。
続いて、上記した演出制御部22’と画像制御部23’の構成を更に詳細に説明する。図4に示す通り、演出インタフェイス基板27は、電源中継基板33を経由して、電源基板20から3種類の直流電圧(5V,12V,32V)を受けている。ここで、直流電圧5Vは、デジタル論理回路の電源電圧として、演出インタフェイス基板27、ランプ駆動基板29、ランプ駆動基板30、画像インタフェイス基板28、及び画像制御基板23に配電されて各デジタル回路を動作させている。
但し、演出制御基板22には、直流電圧5Vが配電されておらず、12VからDC/DCコンバータで降圧された直流電圧3.3Vと、3.3VからDC/DCコンバータで更に降圧された直流電圧1.8Vだけが、演出インタフェイス基板27から演出制御基板22に配電されている。
このように、本実施例の演出制御基板22は、全ての回路が、電源電圧3.3V又はそれ以下の電源電圧で駆動されているので、電源電圧を5Vで動作する場合と比較して大幅に低電力化することができ、仮に、演出制御基板22の直上に演出インタフェイス基板27を配置して積層しても放熱上の問題が生じない。
但し、電源基板20から受けた直流電圧12Vは、そのままデジタルアンプ46の電源電圧として使用されると共に、ランプ駆動基板30とランプ駆動基板29に配電されて各ランプ群の電源電圧となる。また、直流電圧32Vは、演出インタフェイス基板のDC/DCコンバータにおいて直流電圧13Vに降圧されて、必要に応じて、演出モータM1〜Mnの駆動電源として使用される。
図4に示すように、演出制御部22’は、音声演出・ランプ演出・演出可動体による予告演出・データ転送などの処理を実行するワンチップマイコン40と、ワンチップマイコン40の制御プログラムなどを記憶するフラッシュメモリ(flash memory)41と、ワンチップマイコン40からの指示に基づいて音声信号を再生して出力する音声合成回路42と、再生される音声信号の元データである圧縮音声データを記憶する音声用メモリ43とを備えて構成されている。
ここで、ワンチップマイコン40、フラッシュメモリ41、及び音声用メモリ43は、電源電圧3.3Vで動作しており、また、音声合成回路42は、電源電圧3.3V及び電源電圧1.8Vで動作しており大幅な省電力化が実現されている。ここで、1.8Vは、音声合成回路のコンピュータ・コア部の電源電圧であり、3.3Vは、I/O部の電源電圧である。
ワンチップマイコン40には、複数のパラレル入出力ポートPIO(Pi+Po+Po’)と、複数のシリアル出力ポートSIとが内蔵されている。ここで、シリアル出力ポートSIは、より詳細には、3チャンネルのシリアルポート(S0〜S2)を含んで構成されており(図6参照)、ランプ駆動基板36、29、30に搭載された各5個のドライバDRijに、各々、ランプ駆動データSDATA0〜SDATA2を、クロック信号CK0〜CK2に同期して出力している。すなわち、シリアルポートS0〜シリアルポートS2は、クロック同期方式に基づいて、対応するランプ駆動基板36、29、30に、ランプ駆動データSDATA0〜SDATA2を伝送している。なお、ランプ駆動データSDATA0〜SDATA2は、各LEDの発光輝度をPWM制御(pulse width modulation)によって輝度調整するため輝度データである。
また、ランプ駆動基板36、29、30は、パラレル入出力ポートPIOのパラレル出力ポートPo’にも接続されており、各ランプ駆動基板36、29、30に搭載されたドライバDRijは、パラレル出力ポートPo’が出力する3ビット長の動作許可信号ENABLE0〜ENABLE2の何れかに基づいて動作を開始している。
一方、パラレル入出力ポートPIOの入力ポートPiには、主制御部21からの制御コマンドCMD及びストローブ信号STBが入力され、コマンド出力ポートPoからは、制御コマンドCMD’及びストローブ信号STB’が出力されるよう構成されている。
具体的には、入力ポートPiには、主制御基板21から出力された制御コマンドCMDとストローブ信号(割込み信号)STBとが、演出インタフェイス基板27のバッファ44において、電源電圧3.3Vに対応する論理レベルに変換されて8ビット単位で供給される。割込み信号STBは、ワンチップマイコンの割込み端子に供給され、受信割込み処理によって、演出制御部22’は、制御コマンドCMDを取得するよう構成されている。
演出制御部22’が取得する制御コマンドCMDには、(1)異常報知その他の報知用制御コマンドなどの他に、(2)図柄始動口への入賞に起因する各種演出動作の概要特定する制御コマンド(変動パターンコマンド)や、図柄種別を指定する制御コマンド(図柄指定コマンド)が含まれている。ここで、変動パターンコマンドで特定される演出動作の概要には、演出開始から演出終了までの演出総時間と、大当たり抽選における当否結果とが含まれている。
また、図柄指定コマンドには、大当たり抽選の結果に応じて、大当たりの場合には、大当たり種別に関する情報(15R確変、2R確変、15R通常、2R通常など)を特定する情報が含まれ、ハズレの場合には、ハズレを特定する情報が含まれている。変動パターンコマンドで特定される演出動作の概要には、演出開始から演出終了までの演出総時間と、大当り抽選における当否結果とが含まれている。なお、これらに加えて、リーチ演出や予告演出の有無などを含めて変動パターンコマンドで特定しても良いが、この場合でも、演出内容の具体的な内容は特定されていない。
そのため、演出制御部22’では、変動パターンコマンドを取得すると、これに続いて演出抽選を行い、取得した変動パターンコマンドで特定される演出概要を更に具体化している。例えば、リーチ演出や予告演出について、その具体的な内容が決定される。そして、決定された具体的な遊技内容にしたがい、LED群などの点滅によるランプ演出や、スピーカによる音声演出の準備動作を行うと共に、画像制御部23’に対して、ランプやスピーカによる演出動作に同期した画像演出に関する制御コマンドCMD’を出力する。
このような演出動作に同期した画像演出を実現するため、演出制御部22’は、コマンド出力ポートPoを通して、画像制御部23’に対するストローブ信号(割込み信号)STB’と共に、16ビット長の制御コマンドCMD’を演出インタフェイス基板27に向けて出力している。なお、演出制御部22’は、図柄指定コマンドや、表示装置DSに関連する報知用制御コマンドや、その他の制御コマンドを受信した場合は、その制御コマンドを、16ビット長に纏めた状態で、割込み信号STB’と共に演出インタフェイス基板27に向けて出力している。
上記した演出制御基板22の構成に対応して、演出インタフェイス基板27には出力バッファ45が設けられており、16ビット長の制御コマンドCMD’と1ビット長の割込み信号STB’を画像インタフェイス基板28に出力している。そして、これらのデータCMD’,STB’は、画像インタフェイス基板28を経由して、画像制御基板23に伝送される。
また、演出インタフェイス基板27には、音声合成回路42から出力される音声信号を受けるデジタルアンプ46が配置されている。先に説明した通り、音声合成回路42は、3.3Vと1.8Vの電源電圧で動作しており、また、デジタルアンプ46は、電源電圧12VでD級増幅動作しており、消費電力を抑制しつつ大音量の音声演出を可能にしている。
そして、デジタルアンプ46の出力によって、遊技機上部の左右スピーカと、遊技機下部のスピーカとを駆動している。そのため、音声合成回路42は、3チャネルの音声信号を生成する必要があり、これをパラレル伝送すると、音声合成回路42とデジタルアンプ46との配線が複雑化する。
そこで、本実施例では、音質の劣化を防止すると共に、配線の複雑化を回避するため、音声合成回路42とデジタルアンプ46との間は、4本の信号線で接続されており、具体的には、転送クロック信号SCLKと、チャネル制御信号LRCLKと、2ビット長のシリアル信号SD1,SD2との合計4ビットの信号線に抑制されている。なお、何れの信号も、その振幅レベルは3.3Vである。
ここで、SD1は、遊技機上部に配置された左右スピーカのステレオ信号R,Lを特定するPCMデータについてのシリアル信号であり、SD2は、遊技機下部に配置された重低音スピーカのモノラル信号を特定するPCMデータについてのシリアル信号である。そして、音声合成回路342は、チャネル制御信号LRCLKをLレベルに維持した状態で、左チャネルの音声信号Lを伝送し、チャネル制御信号LRCLKをHレベルに維持した状態で、右チャネルの音声信号Rを伝送する。なお、重低音スピーカは本実施例では1個であるので、モノラル音声信号が伝送されているが、ステレオ音声信号として伝送できるのは勿論である。
何れにしても本実施例では、4種類の音声信号を4本のケーブルで伝送可能であるので、最小のケーブル本数によってノイズによる音声劣化のない信号伝達が可能となる。すなわち、シリアル伝送であるのでパラレル伝送より圧倒的にケーブル本数が少な。なお、アナログ伝送を採る場合には、ケーブル本数は同数であるが、3.3V振幅のアナログ信号に、少なからずノイズが重畳して、音質が大幅に劣化する。一方、振幅レベルを上げると、電源配線が複雑化する上に消費電力が増加する。
このようなシリアル信号SD1,SD2は、クロック信号SCLKの立上りエッジに同期して、デジタルアンプ46に取得される。そして、デジタルアンプ46内部で、所定ビット長毎にパラレル変換され、DA変換後にD級増幅されて各スピーカに供給されている。
デジタルアンプ46の内部構成は適宜であるが、図5は、デジタルアンプとしてYDA171(YAMAHA)を使用した場合の内部構成図を示している。このような内部構成に限定されないが、何れにしても、本実施例では、音声合成回路42とデジタルアンプ46とをシリアル回線で接続するので、PCMデータ(音声データ)のビット長を如何に増やして高音質化を実現しても配線ケーブルその他を変更する必要がなく、回路構成の簡素化を維持することができる。
また、演出インタフェイス基板27には、ワンチップマイコン40のパラレル出力ポートPo’や、シリアルポートSIや出力される各種の信号を伝送する出力バッファ回路47,48,49が設けられている。ここで、出力バッファ47は、第0チャンネルのLED群に関連しており、ワンチップマイコン40が出力するランプ駆動データSDATA0、クロック信号CK0、及び、動作許可信号ENABLE0を、枠中継基板34に出力している。そして、出力された3ビットの信号は、枠中継基板34、及び、枠中継基板35を経由して、ランプ駆動基板36のドライバDRijに伝送される(図7参照)。
同様に、出力バッファ48は、ワンチップマイコン40が出力するランプ駆動データSDATA1、クロック信号CK1、及び、動作許可信号ENABLE1をランプ駆動基板29のドライバDRijに伝送しており、出力バッファ49は、ランプ駆動データSDATA2、クロック信号CK2、及び、動作許可信号ENABLE2をランプ駆動基板30のドライバDRijに伝送している(図7参照)。なお、ランプ駆動基板29のドライバDRijは、第1チャンネルのLED群を駆動し、ランプ駆動基板30のドライバDRijは、第2チャンネルのLED群を駆動している。
図6(a)は、ワンチップマイコン40に内蔵されたシリアルポートSIの内部構成を図示したものである。図示の通り、シリアルポートS0〜シリアルポートS2は全ての同一構成であり、CPUコアから1バイトデータを受ける送信データレジスタDRと、送信データレジスタDRから1バイトデータの転送を受けて、ランプ駆動データSDATAiとしてシリアル出力する送信シフトレジスタSRと、シリアルポートの内部動作状態を管理する多数の制御レジスタRGと、カウンタ回路CTの出力パルスΦを受けて制御レジスタRGが指定する分周比のクロック信号CKiを出力するボーレートジェネレータBGと、を有して構成されている。
ここで、制御レジスタRGには、エンプティビットEMPを含んだREAD可能な制御レジスタが含まれており、送信データレジスタDRが、新規データを受け入れ可能か否かを示している。すなわち、送信シフトレジスタSRの1バイトデータの送信が完了すると、エンプティビットEMPがHレベル(empty レベル)に遷移して、送信データレジスタDRに、新規データを書込むことができることが示される。したがって、CPUコア(以下、CPUと称す)は、エンプティビットEMPがHレベルであることを確認した上で、新規データを送信データレジスタDRに書込むことになる。
また、制御レジスタRGには、送信許可ビットTXEを含んだWRITE可能な制御レジスタが含まれており、CPUが送信許可ビットTXEをON(H)レベルに設定すると、シリアルポートの送信動作が許可され、OFFレベルに設定すると送信動作が禁止される。そこで、本実施例では、CPUは、送信処理の開始時に送信許可ビットTXEをON状態にセットし、送信処理の終了時に送信許可ビットTXEをOFFレベルにリセットしている。
図6(b)は、シリアルポートS0〜S2について、送信開始時の動作を示すタイムチャートである。図示の通り、シリアルポートS0〜S2が送信禁止状態(TXE=L)である場合や、送信データレジスタDRのデータがシリアル出力された後は、クロック信号CKが固定状態のHレベルである。また、送信データレジスタDRは空であり、エンプティビットEMPもHレベル(empty レベル)である。
そして、CPUが送信許可ビットTXEをON状態(送信許可状態)にセットした後、送信データレジスタDRに1バイト目の送信データを書込むと、エンプティビットEMPがLレベルに遷移すると共に、その後、所定時間(τ)経過後に、1バイト目の送信データが送信シフトレジスタSRに転送されて、シリアル送信動作が開始される。
また、送信データが送信シフトレジスタSRに転送されたことで、1ビット目のシリアル送信開始に対応して、その後は、エンプティビットEMPがHレベル(empty レベル)に遷移する。したがって、CPUは、HレベルのエンプティビットEMPを確認した上で、2バイト目の送信データを、送信データレジスタDRに書込むことになる。
すると、送信データレジスタDRへのデータ書込み動作に対応して、エンプティビットEMPがLレベル(fullレベル)に遷移する。そして、その後、1バイト目の送信データが全て送信されると、送信データレジスタDRから送信シフトレジスタSRに2バイト目のデータが転送され、2バイト目のデータ送信が開始されて、エンプティビットEMPがHレベルに遷移する。
このエンプティビットEMPは、送信データレジスタDRへの3バイト目のデータ書込み動作に対応して、Lレベルに変化するが、図示のように、新規データの書き込みがない場合にはHレベルを維持する。また、全てのデータが送信された後は、クロック信号CKがHレベルを維持して変化しない。
特に限定されないが、この実施例では、ドライバDRijの内部動作に対応して、1バイトデータのMSB(Most Significant Bit)からLSB(Least Significant Bit )に向けて、クロック信号CKに同期して送信動作が実行されるよう設定されている(MSBファースト)。具体的には、該当する制御レジスタRGに適宜な設定値が設定されている。また、クロック信号CKの立下りエッジに同期して、送信動作が進行することも図示の通りである。
なお、後述するように、本実施例では、CPUは、シリアルポートS0→シリアルポートS1→シリアルポートS2の順に、送信データレジスタDRiに1バイト目のデータ書込んだ後、各エンプティビットEMPiのHレベルを判定した上で、同じ順番に、各送信データレジスタDRiに2バイト目のデータを書込んでいる(図10参照)。
しかし、シリアルポートS0→シリアルポートS1→シリアルポートS2の順番で一連に実行されるデータ書込み処理において、1バイトデータの書込み時間差は事実上ゼロであるので(図6参照)、チャンネルCH0〜CH2のドライバDRijへのデータ送信処理は、ほぼ同時に開始されることになる。したがって、チャンネルCH0〜CH2のドライバDRijへのデータ送信処理の終了も、送信データ量が同じである限り、ほぼ同一タイミングとなり、迅速にシリアル送信処理を終えることができる(図8参照)。
図7は、ランプ駆動基板36,29,30の回路構成を確認的に図示したものである。図示の通り、ランプ駆動基板36には、5個のドライバDR00,DR01・・・DR04が搭載されて、第0チャンネルのLED群(合計5×24個のLED)を点灯駆動している。同様に、ランプ駆動基板29には、5個のドライバDR10,DR11・・・DR14が搭載され、また、ランプ駆動基板30には、5個のドライバDR18,DR19・・・DR1Cが搭載されて、各々、第1チャンネルと第2チャンネルのLED群(合計5×24個のLED)を点灯駆動している。
各ドライバDRijには、5ビットの付番端子が設けられており、この付番端子に固定的なデジタルデータが供給される回路構成を採ることで、各々スレーブアドレス(ポートアドレス)が一連に付番されている。すなわち、図示例の場合には、各ドライバ(DR00,DR01・・・DR04、DR10,DR11・・・DR14、DR18,DR19・・・DR1C)のスレーブアドレスは、16進数表示で、00H,01H・・・04H、10H,11H・・・14H、18H,19H・・・1CHとなる。
各ランプ制御基板36,29,30のドライバDRijに、一連のスレーブアドレスを付番することで、各ドライバDRijに対する輝度データなどの設定処理を迅速化することができる。この点は、さらに後述するが、一連のスレーブアドレスは、必ずしも+1の関係で一連させる必要はなく、+Nや−Nの関係であっても良い。
また、各ドライバDRijには、24個のLEDを駆動する点灯駆動信号のアナログレベルを各々規定可能な階調レジスタGR0〜GR23が内蔵されている。なお、ドライバDRijには、階調レジスタGRn以外にも多数の設定レジスタが用意されているが、本実施例では、説明の都合上、階調レジスタGRnだけを活用とすることにする。
階調レジスタGRnは、各々、8ビット長の輝度データを記憶可能であり、LEDの輝度レベルを00H〜FFHまで256段階で設定することができる。つまり、実施例で使用するドライバDRijによれば、各LEDの輝度レベルを256階調(PWM=Duty比=0〜255/256=0〜99.6%)に制御である。しかし、本実施例では、人間の視認感度を考慮して輝度レベルを16階調に抑制することとし、4ビット長16階調の輝度データ(00H〜0FH)を16倍して、00H〜F0Hの輝度データとしている。なお、輝度データ00Hは、消灯(Duty比=0%)を意味し、F0Hは、最大輝度による点灯を意味する。
図8は、各ドライバDRijの動作とCPUの動作を説明するフローチャートである。まず、ワンチップマイコン40が出力するランプ駆動データSDATA0〜SDATA2に基づいて、各ドライバDRijの階調レジスタGR0〜GR23に対する輝度データの設定処理について説明する。
階調レジスタGR0〜GR23に輝度データを設定するためには、これに先行して、各ドライバDRijを特定するスレーブアドレスの送信処理と、階調レジスタGR0〜GR23のレジスタ番号N(例えば、N=15H〜1CH)の送信処理とを実行する必要がある。但し、本実施例のように、レジスタ番号N(=15H〜1CH)が連続する場合には、最初のレジスタ番号N(=15H)を送信した後は、レジスタ番号15H以降の階調レジスタGRnに設定すべき輝度データDnを1バイト毎に出力したので足りる。
また、スレーブアドレスは、ドライバDRijを特定する5ビット長のポートアドレスであるが、適宜に3ビットを付加した8ビット長とされる。そして、この8ビット長のスレーブアドレスは、MSBからLSBに向けて送信される。図7から明らかなように、8ビット長のスレーブアドレスは、5個のドライバDRij(例えば、DR00〜DR04)に、共通的に送信されるが、送信されたスレーブアドレスに対応する特定のドライバDRijだけが、その後の送信データを受信することになる。
具体的には、全てのドライバDRij(例えば、DR00〜DR04)において、24個目(=8×3)のクロック信号CKiの立上りエッジで、1バイト目のデータ(スレーブアドレス)が取得され、自らのスレーブアドレスに一致するドライバDRijだけが、その後の受信処理を継続する。
先に説明した通り、本実施例のドライバDRijに対しては、その後、階調レジスタGRnのレジスタ番号Nを送信し、これに続いて、その階調レジスタGRnへの設定データDnを送信するようになっている。そして、その後は、指定されたスレーブアドレスに対応するドライバDRijにおいて、レジスタ番号Nが自動的にインクリメントされ、その後に受信した設定データDn+1、Dn+2・・・・が、各々、階調レジスタGRn+1,GRn+2・・・・に設定される。
先に説明した通り、本実施例では、階調レジスタGRiだけを活用しているので、ワンチップマイコン40から各チャンネル(0〜2)のドライバDRijに送信されるシリアルデータの個数は、スレーブアドレス(1バイト)と、階調レジスタGR0のレジスタ番号(15Hの1バイト)と、24個の階調レジスタGR0〜GR23に設定すべき輝度データ(24バイト)とで、総計26バイトとなる。
図8(b)に関して説明した通り、ワンチップマイコン40のシリアルポートS0〜S2では、23バイト目の輝度データを出力した後は、制御レジスタRGのエンプティビットEMPをHレベルに維持する。また、送信データレジスタDRに書込み済みの24バイト目の輝度データは、エンプティビットEMP=Hレベルが維持された状態で、送信シフトレジスタSRから1ビット毎にMSBからLSBに向けて出力される。そして、ワンチップマイコン40のシリアルポートS0〜S2が、24バイト目の輝度データのLSBを出力した後は、クロック信号CKがHレベルを維持する。
そのため、ワンチップマイコン40のCPUは、24バイト目の輝度データが、該当するドライバDRijに取得されたと思われるタイミングで、動作許可信号ENABLE0〜2をLレベルに戻すとともに、制御レジスタRGの送信許可ビットTXEを送信禁止レベルに戻している(図8参照)。すると、動作許可信号ENABLE0〜2=Lに対応して、その後、各ドライバDRijでは、階調レジスタGR0〜GR23に新規設定された、又は設定されている輝度データに基づいてLEDを駆動することになる。
なお、この実施例では、ドライバ1個分のシリアルデータを送信する毎に、送信許可ビットTXEを禁止レベルに戻しているが、何ら限定されず、全てのドライバに対する送信処理が終えた後に、禁止レベルに戻しても良い。また、特に、禁止レベルに戻す必要もない。
図9は、演出制御部22’の動作内容を説明するフローチャートであり、ワンチップマイコン40のCPUによって実行される。演出制御部22’の動作は、CPUリセット後に無限ループ状に実行されるメイン処理(図9(a))と、1mS毎に起動されるタイマ割込み処理(図9(b))と、主制御部が送信する制御コマンドを受信する受信割込み処理(不図示)と、を含んで実現される。
そこで、まず、タイマ割込み処理から説明する。なお、図9(b)は、演出モータM1〜Mnを設けた場合の処理を破線で記載している。演出モータM1〜Mnを設けた実施態様では、所定タイミング毎に、ステッピングモータを1ステップ歩進させるべく、必要時に駆動データを更新する(ST20)。そして、この駆動データを各演出モータM1〜Mnに出力し、また、画像制御部23’に送信すべき制御コマンドCMD’が存在する場合には、これを画像制御部23’に向けて出力する(ST22)。
そして、最後に割込みカウンタをインクリメントして割込み処理を終える(ST23)。
続いて、メイン処理について説明すると、CPUは、割込みカウンタを繰り返しチェックして、割込みカウンタの値が16になるのを待機する(ST10)。上記したように、割込みカウンタは、1mS毎に更新されているので(ST23)、ステップST10では、前回のステップST11の処理から、16mS経過するまでの経過時間を待機することになる。すなわち、この実施例では、ステップST11〜ST17の処理が16mS毎に繰り返される。
そこで、16mSの待機時間が経過した場合には、割込みカウンタをゼロクリアした上で(ST11)、主制御部21から送信された制御コマンドCMDを解析して、制御コマンドCMDに対応した動作を実行するべく、必要な開始処理を実行する。例えば、変動パターンコマンドCMDを受けた場合には、その制御コマンドCMDに基づいてランプ演出や音声演出などの開始処理を実行する。
次に、チャンスボタン11などのスイッチ信号を判定し(ST13)、新規に実行を開始する演出について、その演出シナリオを構築するか、実行中の演出についての演出シナリオを更新する(ST14)。そして、演出シナリオに対応して、音声再生動作を進行させる(ST15)。
続いて、各ランプ駆動基板36,29,30に接続されているLEDについて、その輝度を規定した輝度データを更新して、出力バッファテーブルTBLに格納する(ST16)。この実施例では、3個のランプ駆動基板36,29,30に、合計で3×5×24個のLEDが配置されており、各LEDは、16階調の4ビット長の輝度データに基づいて点灯制御がされている。したがって、出力バッファテーブルTBLは、3×5×24/2バイト長である。
次に、ステップST16の処理で更新された出力バッファテーブルTBLの輝度データを、シリアルポートS0〜S2を経由して、各ランプ駆動基板36,29,30に伝送する(ST17)。但し、CPUは、伝送処理そのものを担当するのではなく、CPUは、シリアルポートS0〜S2の送信データレジスタDRに、適宜なタイミングで必要データを書込むだけであり、CPUの制御負担は極めて軽微である。また、図8に示す通り、3つのランプ駆動基板36,29,30に一斉にシリアルデータが送信されるので、ステップST17の処理時間は、送信データ量に拘わらず長くない。
図8に示す通り、3つのランプ駆動基板36,29,30に搭載された3つのドライバDRに輝度データを設定するに要するクロック信号CKは、8×(2+24)個であり、しかも、伝送開始タイミングと伝送終了タイミングは、全3個のドライバDRにおいてほぼ同じである。
そのため、3つのランプ駆動基板36,29,30に搭載された3個のドライバDRの点灯状態を更新するに要する時間は、ほぼ、8×(2+24)×Tとなり、8×26×5×T程度の処理時間で、全15個のドライバの点灯状態を更新することができる。なお、この全15個のドライバに対する処理時間は、5個のドライバの点灯状態を更新するに要する時間とほぼ同じである。
ここで、Tはクロック信号のパルス周期であり、この実施例では、ボーレートジェネレータBGへの設定値に基づいて、周波数4〜5MHz程度のクロック信号に対応して、T=0.25〜0.2μSとなっている。したがって、全体の処理時間は、0.2mS程度であり、他の処理のための処理時間を消費することがない。
但し、仮に、パルス周期T=1μS程度の低速で動作させた場合でも、全体の処理時間は1mS程度であり、メイン処理の全処理時間(16mS)の中で占める割合は高くなく、他の制御処理の悪影響を与えることはない。
図10は、LED出力処理(ST17)を、より詳細に説明するフローチャートである。LED出力処理では、まず、15個全てのドライバDRijに対して、初期化データを送信して、階調レジスタに書込んだ輝度データ(PWM値)に対応してLEDが点灯されるよう設定する。
なお、このステップST17の処理についても、図8に示す手順と同じであり、以下に示すステップST31〜ST45の処理手順が採用される。すなわち、チャンネルCH0〜CH2の所定ドライバ(3個)に対して、スレーブアドレスの送信→レジスタ番号の送信→初期化データの送信処理を一括して実行し、この処理を5回繰り返すことで、15個のドライバDRijについての初期化処理を完了させる。したがって、全処理時間は、8×3×5×T[=データビット長8×データ個数3×繰り返し処理回数5×クロック周期T]程度である。
このような初期化処理を16mS毎に繰り返す必要は必ずしもないが、本実施例では、点滅状態を更新する毎に全てのドライバDRijの初期化データを送信するので、万一、初期化データの一部がビット化けしても、設定データのビット化けによる異常動作は、16mS後に自動的に解消される。
以上のようにして初期化処理が終わると(ST30)、輝度データの設定処理(ST31〜ST45)に移行する。なお、この開始タイミングでは、図6(b)に示す通り、各制御レジスタRGの送信許可ビットTXEは、OFF(L)レベルであり、エンプティビットEMPは、Hレベル(empty レベル)であり、クロック信号CKはHレベルを維持している。また、動作許可信号ENABLE0〜ENABL2はLレベルである。
以上を踏まえて説明を続けると、輝度データの設定処理では、最初に、チャンネルCH0〜CH2の各5個のドライバDRijについて、各々、開始スレーブアドレスを特定する(ST31)。図7に示すように、この実施例では、各ランプ駆動基板に搭載された5個のドライバDRijには、インクリメント関係にある一連のスレーブアドレスが付番されており、その先頭アドレスは、00H,10H,18Hである。
次に、パラレル出力ポートPo’から、各々、ON(H)レベルの動作許可信号ENABLE0〜ENABL2を出力する(ST32)。この結果、全チャンネルCH0〜CH2の全てのドライバDRijは、シリアルデータの受信動作が可能となる。
そこで、続いて、シリアルポートS0〜S2について、各制御レジスタRGの送信許可ビットTXEを各々ONレベルに設定して、シリアルポートS0〜S2の送信処理を許可状態に設定する(ST33)。また、ステップST31の処理で初期設定されたか、或いは、その後、ステップST44の処理で更新された3種類のスレーブアドレスを、各々、シリアルポートS0〜S2の送信データレジスタDRに書込む(ST33)。
図8に示す通り、このステップST33の処理によって、各シリアルポートS0〜S2の制御レジスタRGのエンプティビットEMPは、Lレベルに遷移し、所定時間(τ)後に、エンプティビットEMPがHレベルに戻ると共に、スレーブアドレスの送信動作が開始される。
そこで、エンプティビットEMPがHレベルに戻った場合には(ST34)、各ドライバDRijの階調レジスタGR0〜GR23について、そのレジスタ番号の先頭アドレスを、シリアルポートS0〜S2の送信データレジスタDRに書込む(ST35)。この実施例では、階調レジスタGR0〜GR4のレジスタ番号は、N=15H〜1CHであるので、ステップST35の処理では、シリアルポートS0〜S2の送信データレジスタDRに、各々、15Hが書込まれる。また、ステップST35の処理によって、エンプティビットEMPは、HレベルからLレベル(fullレベル)に遷移する。
その後、最初のスレーブアドレスの送信が完了すると、エンプティビットEMPがHレベル(empty レベル)に戻るので(ST36)、その後は、24個の輝度データの送信処理に移行する。
具体的には、まず、変数nをゼロに初期設定する(ST37)。ここで、変数nは、階調レジスタGR0〜GR23を特定し、変数n=1〜24が、階調レジスタGR0〜GR23に対応している。
そこで、次に、変数nをインクリメントした後(ST38)、各チャンネルCH0〜CH2の階調レジスタGRn−1に対する輝度データ(PWM値)を、出力バッファテーブルTBLから読み出して、シリアルポートS0〜S2の送信データレジスタDRに各々書込む(ST39)。なお、ステップST36の判定で、エンプティビットEMPがHレベルに遷移した後、エンプティビットEMPがLレベルに戻って、レジスタ番号の送信動作が繰り返されており、この送信動作が終わると、エンプティビットEMPがHレベルに遷移する。
そこで、次に、エンプティビットEMPがHレベルに遷移するのを待機し(ST40)、Hレベルに遷移すれば、変数nが24に達しない限り、ステップST38の処理に移行する(ST41)。そのため、このステップST38〜ST41の処理によって、階調レジスタGR0〜GR23への輝度データが、シリアルポートS0〜S2の送信データレジスタDRに順番に書込まれることになる。
なお、変数nが24に達したタイミングは、シリアルポートS0〜S2の送信データレジスタDRに24バイト目の輝度データが書込まれたに過ぎず、これがドライバDRijに取得されるのは、更に、8個程度のクロック信号CKが出力された後である。
そこで、クロック信号CKの8個分程度の時間を消費した後(ST42)、動作許可信号ENABLEを禁止レベルに戻すと共に、制御レジスタRGの送信許可ビットTXEを禁止レベルに戻す(ST43)。その結果、輝度データが更新されたドライバDRijが駆動するLEDの点灯状態が更新される。
以上の処理によって各チャンネル0〜2の3個のドライバDRijについての輝度データの設定処理と点灯更新が終わるので、次に、スレーブアドレスを更新して(ST44)、次の3個のドライバDRijに対する設定処理を繰り返す(ST45)。
以上の通り、本実施例では、ステップST32〜ST43の処理によって、3個のドライバDRijの各24個の階調レジスタに対する設定処理が一括して完了し、これを5回繰り返すことで、全ての処理が完了することができる。
そして、3個のドライバに対する設定処理は、ほぼ同時に開始され、ほぼ同時に終了する。そのため、処理総時間は、クロック信号のパルス周期Tと、ドライバDRijの総個数TOTAL=NUM×3とに対応して、8×26×NUM×T程度であり、24×NUM×3個のLEDについて、極めて迅速に輝度データの設定処理を終えることができる。
以上本発明の実施例について詳細に説明したが、具体的な記載内容は、特に本発明を限定するものではない。
例えば、実施例では、説明の便宜上、3チャンネルのランプ駆動基板36,29,30におけるドライバDRijやLEDの個数が同一であるとしたが、実際には、適宜に相違するのは当然である。このような場合、必要なドライバDRijに対する設定処理(図10のST32〜ST45)が終われば、そのチャンネルについては、その後の設定処理(ST32〜ST45)がスキップされる。
同様に、駆動するLEDの個数が24個未満のドライバDRijに関しては、図10のステップST41の処理を変更することで、不要な設定処理(ST38〜ST41)がスキップされる。
また、実施例では、説明の都合上、16mS毎に全てのドライバに対する設定処理を実行したが、これを適宜に分割するのも好適である。図9(c)は、このような動作を例示したものであり、図9(a)のステップST17のLED出力処理に代えて、割込みカウンタの値CNTに応じたLED出力処理(ST24)を実行している。
具体的には、CT=10の場合には、全てのドライバに初期化データを送信し、CT=11の場合には、1段目のドライバ3個に設定データを送信している。以下同様に、割込みカウンタの値CNTに対応するドライバ3個に設定データを送信するので、設定データを増加させても問題が生じない。
設定データとしては、Duty比(PWM)を規定する輝度データに加えて、フェードインやフェードアウトの動作態様を規定するデータを送信することが考えられる。一方、輝度データに代えて、ON/OFF状態を規定するスイッチデータを送信し、これにフェードインやフェードアウトの動作態様を規定するデータを追加して送信することも考えられる。
なお、実施例では、3チャンネルCH0〜CH2のランプ駆動基板について説明したが、ランプ駆動基板の個数に対応して、使用するシリアルポートの個数を増加すれば良い。
また、同じドライバDRijを使用してステッピングモータを駆動するもの好適であり、この場合には、モータ駆動基板を別に設けて、例えば、1mS毎にシリアル駆動データ(スイッチデータ)を送信する態様が考えられる(図9(b)のST21参照)。一方、ランプ駆動基板に、ステッピングモータを接続しても良いが、この場合には、ステッピングモータを駆動するドライバDRijについては、短い周期でシリアル駆動データの送信処理を繰り返すのが好ましい。
また、図6に示す実施例では、1バイトのシリアルデータが送信される毎に、CPUが、送信データレジスタDRに次の1バイトのパラレルデータを書込む構成を採っているが、何ら限定されない。すなわち、所定単位長(複数バイト)のパラレルデータを一時保存可能なFIFO(First In First Out)バッファを確保し、1バイトのシリアルデータが送信さる毎に、次のデータが送信データレジスタDRに自動的に補給される構成を採ることもでき、この場合には、CPUは、FIFOバッファに、例えば1バイト分の空き(空き領域)が生じたタイミングで、次の1バイトデータをFIFOバッファに補充したので足りる。
また、上記の各実施例では、専ら、CPUが、制御レジスタを繰り返しreadして、制御レジスタのempty ビットEMPをチェックする構成を採ったが、送信データレジスタDRが空(empty )になったタイミングや、FIFOバッファに空き(空き領域)が生じたタイミングで、CPUに割込みをかける構成を採るのも好適である。この場合、CPUは割込み要求に対応して、送信データレジスタDRに1バイトデータを書込むか、FIFOバッファに所定単位長のデータを書込めば良い。
更にまた、実施例のドライバには、処理時間を最小化するため、スレーブアドレス→レジスタアドレス→1バイトの駆動データ→1バイトの駆動データ→1バイトの駆動データ→・・・→1バイトの駆動データ・・・の手順を採ったが何ら限定されない。すなわち、送信するデータ個数を2バイト追加し、最初に、開始コマンド(スタートコマンド)を送信し、最後に、終了コマンド(ピリオドコマンド)を送信する構成を採っても良い。但し、この場合もスタートビットや、ストップビットは使用せず、各コマンドは、1単位長(1バイト長)である。
また、例えば、24個のランプを駆動可能なドライバに対して、駆動対象のランプを個々的に特定した状態で、各ランプの点灯状態を規定する駆動データを送信しても良い。この場合には、例えば、スタートコマンド→当該ドライバを規定するスレーブアドレス→ランプを特定するサブアドレス→そのランプに対する駆動データ→ランプを特定するサブアドレス→そのランプに対する駆動データ→・・・・→ピリオドコマンドの手順でシリアルデータが送信される。この場合、送信されるデータの合計バイト数は、一つのドライバに対して24×2+3バイトである。
また、図6〜図10の実施例では、点灯状態を更新するタイミングが、動作許可信号ENABLE0〜ENABLE2によって規定されているが、この点は、何ら限定されない。すなわち、一連のシリアルデータの最後に、終了コマンド(ピリオドコマンド)を送信する構成を採れば、ピリオドコマンド受信したことを認識したドライバDRijの内部処理に基づいて点灯状態を更新することができる。
この場合、各ドライバDRijに、例えば、0〜127の範囲で循環する内部カウンタを設けておき、ピリオドコマンド受信した後、内部カウンタが所定値(例えば127)に達したタイミングで点灯状態を更新するのが好適である。なお、このような構成を採った場合には、点灯状態が更新された後は(つまり、内部カウンタが所定値に達した後は)、同様のシリアルデータの伝送処理を開始することもでき、この意味でも、動作許可信号ENABLE0〜ENABLE2やその他の制御信号が不要となる。
また、図6〜図10の実施例では、3チャンネルのシリアルポート(S0〜S2)に、各5個のドライバDRi0〜DRi04が接続されているが(合計15個)、特に限定されず、ドライバDRijの個数を更に増加させても良い。なお、以下の説明では、ドライバとバッファとを明示的に区別するため、便宜上、LEDドライバDRijと称す。
1つのシリアルポートSiに多数のLEDドライバDRijを接続する場合には、シリアルポートSiやバッファの出力電流の最大容量を考慮して、LEDドライバDRijの入力部を、バイポーラ型の電流駆動方式ではなく、ユニポーラ型の電圧駆動方式とするのが好適である。図12(c)と図12(d)には、ユニポーラ型の入力回路が2つ例示されており、このような入力回路を有するLEDドライバDRijが好適に使用される。
また、必ずしも、複数チャンネルのシリアルポート(S0〜S2)を使用する必要はなく、単一のシリアルポートに、多数のLEDドライバDRijを接続しても良い。但し、この場合には、LEDドライバの個数分だけシリアルデータ送信処理(図10のST32〜ST43参照)を繰り返す必要があるので、クロック信号CKを限界まで高速化するのが好適である。
この場合、LEDドライバDRijの入力部を、例え、ユニポーラ型(電圧駆動方式)としても、その入力容量Cinによる波形ナマリが避けられず、高速伝送を実行すると誤動作のおそれがある。そこで、単一のシリアルポートに多数のLEDドライバDRijを接続する場合には、図11のような回路構成が使用される。
図示の通り、図11の実施例では、シリアルポートS0に、合計16個のLEDドライバDR01〜DR16が接続されており、シリアルデータ送信処理が合計16回繰り返し実行される。ここで、シリアルデータSDATAラインやクロック信号CKラインに、16個のLEDドライバDRijを直接接続すると、全体としての入力容量が16×Cinとなり、これに各ラインの漂遊容量Ccが加算されるので(16×Cin+Cc)、伝送信号の波形ナマリが避けられない。
そこで、図11の実施例では、シリアルポートS0とLEDドライバDRijの間に、集合バッファ回路BUFを配置することで、波形ナマリを解消して高速シリアル伝送を実現している。なお、各集合バッファ回路BUF1,BUF2は、図12(a)の回路構成であり、各々、8個のバッファが内蔵されている。そして、各バッファの入力端子A1〜A8は、CMOS(Complementary Metal Oxide Semiconductor )構成のインバータ回路INVに内部接続されている(図12(b)参照)。
このように、図11の実施例は、バッファの入力回路がCMOS構成であるため、入力電流が実質的にゼロである反面、入力容量Cinが波形ナマリの原因となり得る。しかし、シリアルポートS0から出力されるSDATA信号やクロック信号CKは、限定された(例えば4個の)インバータ回路INVに接続されるだけであるので、全体の入力容量が4×Cinであり、シリアルポートS0からインバータ回路INVまでの伝送距離が長くても、波形ナマリが問題にならず、高速伝送時にも誤動作のおそれがない。
また、集合バッファ回路BUFの出力側には、バッファ1個に対して、限定された(例えば4個の)LEDドライバDRijしか接続されておらず、しかも、各LEDドライバDRijの入力回路は、図12(c)や図12(d)に示すユニポーラ型としている。そのため、LEDドライバDRijの入力回路の入力容量をCinとすると、集合バッファ回路BUF1,BUF2の各バッファ出力に対する合成容量は4×Cinであり、バッファからLEDドライバDRijの伝送距離が長くても、波形ナマリが問題にならず高速伝送時にも誤動作のおそれがない。
ところで、図11の回路構成では、動作許可信号ENABLE0が使用されているが、これを省略して、図13の回路構成とすることもでき、この場合には、配線を簡素化できる利点がある。但し、動作許可信号ENABLE0を省略することに対応して、スタートコマンド(開始コマンド)と、ピリオドコマンド(終了コマンド)とが付加される。
すなわち、24個のランプの輝度データを更新する場合には、[スタートコマンド]→[当該LEDドライバを規定するスレーブアドレス]→[1番目のランプに対応するレジスタを特定するサブアドレス]→[そのレジスタに対する階調データ]→[2番目のランプに対応するレジスタを特定するサブアドレス]→[そのレジスタに対する階調データ]→・・・・→[24番目のランプに対応するレジスタを特定するサブアドレス]→[そのランプに対する階調データ]→[ピリオドコマンド]の手順で、一つのドライバに対して24×2+3バイトのシリアルデータが送信される。なお、輝度データが更新されるランプ個数がN(<24)の場合には、N×2+3バイトのシリアルデータが送信される。
図14は、図13の実施例において、輝度データを更新する処理(シリアルデータ送信処理)を示すフローチャートである。特に限定されるものではないが、この送信処理でも、図10の場合と同様に、最初に、全てのLEDドライバについて初期設定処理が実行される(ST50)。具体的には、例えば、各LEDドライバの階調レジスタ(各24個)に書込んだPWM値に対応して、24個のLEDが点灯されるようLEDドライバ毎に初期設定される。
次に、シリアルポートS0の送信データレジスタDRに、1バイト長のスタートコマンド(例えばFFH)を書込む(ST51)。そして、制御レジスタRGのエンプティビットEMPを判定することで、スタートコマンドのシリアル送信が開始されるのを待つ(ST52)。そして、制御レジスタRGのエンプティビットEMPがEMP=1となると、当該LEDドライバのスレーブアドレスを、送信データレジスタDRに書込む(ST53)。なお、スレーブアドレスは、そのLEDドライバに付番されたポート番号に他ならない。
次に、エンプティビットEMPがEMP=1となるのを待ち(ST54)、スレーブアドレス(ポート番号)のシリアル送信が開始されると、変数nをゼロに初期設定する(ST55)。変数nは、階調レジスタGR0〜GR23を特定し、変数nの値(1〜24)が、階調レジスタGR0〜GR23に対応している。
次に、変数nをインクリメントした後(ST56)、サブアドレスをシリアルポートS0の送信データレジスタDRに書込む(ST57)。ここで、サブアドレスとは、階調レジスタGR0〜GR23を特定するレジスタ番号であり、簡易的には、変数nに対応した値となる。次に、エンプティビットEMPがEMP=1となるのを待ち(ST58)、EMP=1となれば、先のサブアドレス(レジスタ番号)で特定される階調レジスタに送信すべき輝度データを送信データレジスタDRに書込む(ST59)。なお、輝度データ(PWM値)は、適宜に構成された出力バッファテーブルTBL(図9参照)から読み出される。
以下、同様であり、輝度データのシリアル送信が開始されると(ST60)、それが24番目の輝度データでない限り(ST61がNo)、次のサブアドレス(レジスタ番号)をシリアルポートS0の送信データレジスタDRに書込み(ST56〜ST57)、同様のシリアルデータ送信処理を繰り返す。
一方、24番目の輝度データのシリアル送信が開始された場合には(ST61がYes)、続いて、当該LEDドライバへのシリアル送信が終了したことを示すピリオドコマンドを送信データレジスタDRに書込む(ST62)。そして、ピリオドコマンドのシリアル送信が開始されたら(ST63)、この送信時間を確保した上で(ST64)、スレーブアドレス(ポート番号)を更新して、同様のシリアルデータ送信処理(ST51〜ST65)を繰り返す。なお、この実施例では、シリアルデータ送信処理(ST51〜ST65)が、LEDドライバの個数に対応して、合計16回繰り返されるが、高速のクロック信号CKを使用することで、送信処理(輝度データの更新処理)を迅速に終えることができる。
ちなみに、合計N個のLEDドライバDRijを使用し、各LEDドライバDRijがM個のLEDを駆動する場合であって、全ての輝度データを更新する場合、全データ数は、(M×2+3)×Nであり、N=16、M=24の場合には816バイト=6528ビットとかなりの値となる。しかし、例えば、10Mz程度のクロック信号を使用すると、0.653mS程度の処理時間で全処理を終えることができ、他の制御処理の処理時間が不足するということはない。
しかも、クロック信号CKを高速化しても、本実施例では、CKラインやSDATAラインに直結される素子の入力部がユニポーラ型であって、しかも、このような素子の個数が限定されているので、波形ナマリによる誤動作のおそれがない。なお、ここでは、説明の都合上、各LEDドライバDRijが24個のLEDを駆動する場合であって、全ての輝度データを毎回更新するとしたが、一回の更新処理で更新される階調レジスタを1/Xに間引くことで、毎回の更新処理時間を、ほぼ1/Xに短縮できる。この場合、毎回の更新処理時間は、クロック信号CKの周期τに対応して、(M×2/X+3)×N×τとなる。
また、FIFOバッファを設けたシリアルポートを使用する場合には、図14に示すシリアルデータ送信処理を簡素化することもできる。図15(b)に示す通り、FIFOバッファは、CPUコアからアクセス可能に構成され、最初にFIFOバッファに格納されたデータから順番に、1バイト毎に、送信データレジスタDRに自動転送され(First In First Out)、送信シフトレジスタSRを経由して、シリアルデータSDATAとして出力される。
この場合の処理は、例えば、図15(a)に示す通りであり、FIFOバッファを使用すること、及び、その使用バイト長をシリアルポートS0の制御レジスタRGに設定した上でステップST50〜ST66の処理が実行される。
具体的には、LEDドライバに初期化データを出力した後(ST50)、一群のデータをFIFOバッファに書込み(ST53)、FIFOバッファに空き領域が生じるのを待つ(ST54)。先に説明した通り、FIFOバッファに書込まれた複数バイト長のデータは、1バイト毎に送信データレジスタDRに自動転送され、送信シフトレジスタSRを経由して、シリアルデータSDATAとして出力される。そして、1バイトのシリアルデータの出力が完了すると、その旨が制御レジスタRGの該当フラグに示されるので、変数nを適宜に更新した上で(ST55〜ST56)、次の1バイトデータをFIFOバッファに補充すればよい(ST57)。
その後の処理も同様であり、FIFOバッファに1バイト長の空き領域が生じる毎に(ST58)、次の1バイトデータをFIFOバッファに補充する処理(ST59)を繰り返す。そして、全てのデータのシリアル送信が終われば、ピリオドコマンドをFIFOバッファに書込めば良い(ST62)。
なお、図15の実施例では、FIFOバッファの記憶容量より、送信すべき一群のデータ量(M×2+3)が多い場合を例示しているが、M×2+3バイトの記憶容量を有するFIFOバッファを確保すれば、ステップST53〜ST63の処理をまとめることができ、CPUの処理負担が極限的に軽減される。例えば、M=24とすると51バイト長のFIFOバッファが必要となるが、例えば、24個の階調レジスタを4等分して、時間的に区分された4回のLED出力処理によって階調データを更新する構成を採れば、FIFOバッファの記憶容量は15バイト長で足りて極めて合理的である。
また、スタートコマンドとピリオドコマンドを使用しない図7の構成であれば、M個の諧調レジスタを更新するのに要するシリアルデータがM+2バイトであるので、M=24の場合でも、諧調レジスタを2分してLED出力処理を2区分するだけで、14バイト長のFIFOバッファの記憶容量で足りることになる。
更にまた、1個のドライバでN個の演出モータを駆動する場合には、N個の演出モータに供給する諧調レジスタへのPWM設定値(=駆動データ:LEDの輝度を規定する輝度データに対応)が、全体としてNバイトとなる。
そのため、スタートコマンドとピリオドコマンドを使用しない図7の構成であれば、N個の演出モータの動作状態を更新するのにN+2バイト長のデータ送信で足り、16バイト長のFIFOバッファを使用すれば、FIFOバッファへの一回の書込み処理で、14個の演出モータへの設定値を書き換えることができる。例えば、1mSの割込み間隔で演出モータを歩進させる場合、CPUは、各割込み処理において、FIFOバッファに16バイトの駆動データを一気に書込めば足りるので、CPUの処理負担が極限的に軽減化される。
以上、もっぱら弾給遊技機を例にして各種の実施例を説明したが、本発明の適用は、弾球遊技機に限定されないのは勿論である。