IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社リコーの特許一覧

特許7647015システム、及びプログラマブルシーケンサ
<>
  • 特許-システム、及びプログラマブルシーケンサ 図1
  • 特許-システム、及びプログラマブルシーケンサ 図2
  • 特許-システム、及びプログラマブルシーケンサ 図3
  • 特許-システム、及びプログラマブルシーケンサ 図4
  • 特許-システム、及びプログラマブルシーケンサ 図5
  • 特許-システム、及びプログラマブルシーケンサ 図6
  • 特許-システム、及びプログラマブルシーケンサ 図7
  • 特許-システム、及びプログラマブルシーケンサ 図8
  • 特許-システム、及びプログラマブルシーケンサ 図9
  • 特許-システム、及びプログラマブルシーケンサ 図10
  • 特許-システム、及びプログラマブルシーケンサ 図11
  • 特許-システム、及びプログラマブルシーケンサ 図12
  • 特許-システム、及びプログラマブルシーケンサ 図13
  • 特許-システム、及びプログラマブルシーケンサ 図14
  • 特許-システム、及びプログラマブルシーケンサ 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-03-10
(45)【発行日】2025-03-18
(54)【発明の名称】システム、及びプログラマブルシーケンサ
(51)【国際特許分類】
   G06F 9/32 20180101AFI20250311BHJP
   G05B 19/05 20060101ALI20250311BHJP
   G06F 9/30 20180101ALI20250311BHJP
【FI】
G06F9/32 360B
G05B19/05 F
G06F9/30 350A
【請求項の数】 15
(21)【出願番号】P 2019216757
(22)【出願日】2019-11-29
(65)【公開番号】P2021086506
(43)【公開日】2021-06-03
【審査請求日】2022-09-14
(73)【特許権者】
【識別番号】000006747
【氏名又は名称】株式会社リコー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】嵯峨 嘉孝
【審査官】坂東 博司
(56)【参考文献】
【文献】特開平10-149295(JP,A)
【文献】特開平02-042537(JP,A)
【文献】米国特許出願公開第2018/0032099(US,A1)
【文献】特開昭55-091029(JP,A)
【文献】特開昭56-152049(JP,A)
【文献】特開昭53-105143(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/32
G05B 19/05
G06F 9/30
(57)【特許請求の範囲】
【請求項1】
複数の実行命令を含む実行命令群を格納する格納部と、
読み出した前記実行命令に応答した動作を実行するプログラマブルシーケンサと、
前記プログラマブルシーケンサの上位に位置して処理を実行するプロセッサと、
前記プロセッサに接続された共通バスと、
前記プログラマブルシーケンサ及び前記格納部のそれぞれに接続するローカルバスと、
を備え、
前記ローカルバスは、前記共通バスよりもバス幅が狭く、
前記プログラマブルシーケンサは、前記ローカルバスに接続されたスレーブポートにのみアクセス可能であり、
前記プロセッサは、前記共通バスに接続されたスレーブポート、及び、前記ローカルバスに接続されたスレーブポートにアクセス可能であり、
前記プログラマブルシーケンサは、ポーリング実行命令に応答してポーリング動作を実行するポーリング実行部、又は繰り返しジャンプ実行命令に応答して繰り返しジャンプ動作を実行する繰り返しジャンプ実行部の少なくとも一方を備える
システム。
【請求項2】
前記ポーリング実行部は、1つの前記ポーリング実行命令に応答して前記ポーリング動作を実行する
請求項1に記載のシステム。
【請求項3】
前記繰り返しジャンプ実行部は、1つの前記繰り返しジャンプ実行命令に応答して前記繰り返しジャンプ動作を実行する
請求項1、又は2に記載のシステム。
【請求項4】
前記ポーリング実行命令は、前記実行命令の種類を識別する識別情報と、前記ポーリング動作の終了条件を指定するポーリング終了条件指定部と、を含み、
前記ポーリング動作で取得される情報を入力する入力端子を備える
請求項1乃至3の何れか1項に記載のシステム。
【請求項5】
前記ポーリング実行命令は、前記実行命令の種類を識別する識別情報と、前記ポーリング動作の終了条件を指定するポーリング終了条件指定部と、ポーリング対象を示すポーリング対象データに対して論理演算するための命令付属データと、を含み、
前記ポーリング実行部は、前記システムに含まれるアドレス空間をリードしてポーリングする
請求項1乃至4の何れか1項に記載のシステム。
【請求項6】
前記ポーリング終了条件指定部は、複数の論理演算種類のうちの1つを指定する論理演算指定データを含む
請求項5に記載のシステム。
【請求項7】
前記ポーリング終了条件指定部は、
前記ポーリング対象と前記命令付属データの全てのビットが一致すること、
前記ポーリング対象と前記命令付属データの少なくとも1ビットが異なること、
前記命令付属データの1に対応するビット位置にある前記ポーリング対象データの全てのビットが1であること、
前記命令付属データの1に対応するビット位置にある前記ポーリング対象データの少なくとも1ビットが1であること、
前記命令付属データの1に対応するビット位置にある前記ポーリング対象データの全てのビットが0であること、
又は前記命令付属データの1に対応するビット位置にある前記ポーリング対象データの少なくとも1ビット0であること、の少なくとも1つを指定する
請求項6に記載のシステム。
【請求項8】
前記プログラマブルシーケンサは、
前記格納部から直近に実行対象となる前記実行命令の前記格納部における格納位置を記憶する格納位置記憶部と、
前記格納位置に基づき、前記格納部から前記実行命令を読み出すとともに、前記格納位置記憶部に記憶された前記格納位置を更新する状態制御部と、
前記状態制御部により読み出された前記実行命令を記憶する命令記憶部と、
前記命令記憶部に記憶された前記実行命令に応答した動作を実行する命令実行部と、
前記命令実行部の動作の実行時にライト、又はリードされる実行記憶部と、を備える
請求項1乃至7の何れか1項に記載のシステム。
【請求項9】
前記繰り返しジャンプ実行命令は、前記実行命令の種類を識別する識別情報と、前記格納位置記憶部におけるジャンプ先アドレスと、繰り返しジャンプ回数を指定する回数指定部と、を含み、
前記繰り返しジャンプ実行部は、前記繰り返しジャンプ回数だけの前記繰り返しジャンプを実行後、前記格納位置記憶部に対して前記繰り返しジャンプ実行命令のデータサイズに対応した値を加算する
請求項8に記載のシステム。
【請求項10】
前記繰り返しジャンプ実行命令は、前記実行命令の種類を識別する識別情報と、前記格納位置記憶部におけるジャンプ先アドレスと、を含み、
前記繰り返しジャンプ実行部は、前記実行記憶部から取得した繰り返しジャンプ回数分のジャンプの実行完了後、前記格納位置記憶部に対して前記繰り返しジャンプ実行命令のデータサイズに対応した値を加算する
請求項8、又は9に記載のシステム。
【請求項11】
前記繰り返しジャンプ実行命令は、前記実行命令の種類を識別する識別情報と、前記格納位置記憶部におけるジャンプ先アドレスと、繰り返しジャンプ回数を指定する回数指定部と、前記繰り返しジャンプ回数の取得先を指定する取得先指定部と、を含み、
前記繰り返しジャンプ実行部は、前記繰り返しジャンプ回数の取得先から前記繰り返しジャンプ回数を取得する
請求項8乃至10の何れか1項に記載のシステム。
【請求項12】
メモリを備え、
前記メモリにおける前記プログラマブルシーケンサのアクセス可能なアドレス範囲は、前記メモリにおける前記プロセッサのアクセス可能なアドレス範囲よりも狭い
請求項1乃至11の何れか1項に記載のシステム。
【請求項13】
前記プログラマブルシーケンサと前記プロセッサの間のデータ転送用の先入れ先出し部を備える
請求項12に記載のシステム。
【請求項14】
前記共通バスと前記ローカルバスが直接接続されている
請求項1乃至13の何れか1項に記載のシステム。
【請求項15】
複数の実行命令を含む実行命令群を格納する格納部から読み出した実行命令に応答した動作を実行するプログラマブルシーケンサであって、
ポーリング実行命令に応答してポーリング動作を実行するポーリング実行部、又は繰り返しジャンプ実行命令に応答して繰り返しジャンプ動作を実行する繰り返しジャンプ実行部の少なくとも一方を備え、
前記プログラマブルシーケンサ及び前記格納部のそれぞれに接続するローカルバスは、プロセッサに接続された共通バスよりもバス幅が狭く、
前記プログラマブルシーケンサは、前記ローカルバスに接続されたスレーブポートにのみアクセス可能であり、
前記プロセッサは、前記プログラマブルシーケンサの上位に位置して処理を実行し、前記共通バスに接続されたスレーブポート、及び、前記ローカルバスに接続されたスレーブポートにアクセス可能である
プラグラマブルシーケンサ。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、システム、及びプログラマブルシーケンサに関する。
【背景技術】
【0002】
従来、メインCPU(Central Processing Unit)に代えて、専用ステートマシン又はサブCPUを用いて特定の処理を実行する技術が知られている。
【0003】
しかし、専用ステートマシンを使用する方法では、開発工数が大きい上に、仕様変更発生時の対応工数も大きくなる場合がある。またサブCPUを使用する方法では、必要な処理内容が単純な場合に、数値演算部や割り込み処理部、キャッシュ等の過剰な機能をサブCPUが備えることで回路規模が無駄に大きくなる場合がある。さらにサブCPUのソフトウェア開発環境を準備することが望ましいため、開発環境の習熟や維持に工数がかかる場合がある。
【0004】
これに対し、回路規模の大型化を抑制するために、汎用マイコンのCPUとROM(Read Only Memory)の構成をシーケンサで置き換えるものが開示されている(例えば、特許文献1参照)。またプログラミング作業を効率化するために、モーション制御用プログラミング言語と、シーケンス制御用プログラミング言語を相互変換する技術が開示されている(例えば、特許文献2参照)。
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1の構成では、演算器やレジスタ構造に汎用マイコンの構成を引き継ぐため、汎用マイコンの機能が過剰な場合に回路規模が無駄に大きくなる場合がある。また特許文献2の方法では回路規模の削減方法が開示されていないため、回路規模の大型化を抑制できない。
【0006】
本発明は、回路規模の大型化を抑制することを課題とする。
【課題を解決するための手段】
【0007】
本発明の一態様に係るシステムは、複数の実行命令を含む実行命令群を格納する格納部と、読み出した前記実行命令に応答した動作を実行するプログラマブルシーケンサと、前記プログラマブルシーケンサの上位に位置して処理を実行するプロセッサと、前記プロセッサに接続された共通バスと、前記プログラマブルシーケンサ及び前記格納部のそれぞれに接続するローカルバスと、を備え、前記ローカルバスは、前記共通バスよりもバス幅が狭く、前記プログラマブルシーケンサは、前記ローカルバスに接続されたスレーブポートにのみアクセス可能であり、前記プロセッサは、前記共通バスに接続されたスレーブポート、及び、前記ローカルバスに接続されたスレーブポートにアクセス可能であり、前記プログラマブルシーケンサは、ポーリング実行命令に応答してポーリング動作を実行するポーリング実行部、又は繰り返しジャンプ実行命令に応答して繰り返しジャンプ動作を実行する繰り返しジャンプ実行部の少なくとも一方を備え
【発明の効果】
【0008】
本発明によれば、回路規模の大型化を抑制できる。
【図面の簡単な説明】
【0009】
図1】実施形態に係るASICの構成例を示すブロック図である。
図2】実施形態に係るシーケンサの構成例を示すブロック図である。
図3】NOP命令の一例を説明する図である。
図4】GR操作命令の一例を説明する図である。
図5】出力端子制御命令の一例を説明する図である。
図6】ダイレクトバス転送命令とローカルバス転送命令の一例を説明する図である。
図7】強制ジャンプ命令の一例を説明する図である。
図8】繰り返しジャンプ命令の一例を説明する図である。
図9】GR分岐ジャンプ命令の一例を説明する図である。
図10】入力端子分岐ジャンプ命令の一例を説明する図である。
図11】入力端子ポーリング命令の一例を説明する図である。
図12】アドレス空間ポーリング命令の一例を説明する図である。
図13】実施形態に係るASICのアドレス空間割り当て例を示す図である。
図14】実施形態に係るシーケンサの動作例を示すフローチャートである。
図15図14の動作例におけるシーケンサ用ROM領域を説明する図である。
【発明を実施するための形態】
【0010】
以下、図面を参照して発明を実施するための形態について説明する。各図面において、同一の構成部分には同一符号を付し、重複した説明を省略する場合がある。
【0011】
以下では、プログラマブルシーケンサの一例であるシーケンサ100を備え、ファクシミリモデム用のアナログフロントエンドデバイスや、専用の画像処理デバイス等のレガシーデバイス30の制御機能を集積したASIC(Application Specific Integrated Circuit)1を「システム」の一例として実施形態を説明する。
【0012】
[第1実施形態]
<ASIC1の構成例>
図1は、ASIC1の構成の一例を示すブロック図である。
【0013】
図1に示すように、ASIC1は、レガシーデバイス制御部10と、メインCPU(Central Processing Unit)21と、サブCPU22と、DDR(Double Data Rate)コントローラ23と、汎用DMAC(Direct Memory Access Controller)24と、ストレージ制御部25とを備えている。これらは共通バス20を介して相互に電気的に接続されている。
【0014】
レガシーデバイス制御部10は、レガシーデバイス30を制御する機能を有し、流用モジュール11と、I/F端子12と、シーケンサ100と、ROM14と、ワーク領域15と、FIFO(First In Firest Out)16と、制御レジスタ17とを備えている。
【0015】
またレガシーデバイス制御部10は、ローカルバス13及び共通バス20を介して、メインCPU21及びサブCPU22等の上位システムとの間でデータを送受信できるようになっている。
【0016】
流用モジュール11はレガシーデバイス30の制御を実行するが、流用モジュール11自体の制御は別モジュールにより行われる必要がある。この流用モジュール11の制御をメインCPU21やサブCPU22等の上位システムが行う場合、流用モジュール11の仕様によっては、流用モジュール11の制御がシステム上の制約となり、他の処理とのスケジューリングが困難になる場合がある。
【0017】
システム上の制約となる流用モジュール11の仕様には、バス占有時間や、データ転送プロトコル、割り込み処理等が挙げられる。バス占有時間が長いために1回のアクセスに時間を要するという制約が生じる場合がある。またデータ転送プロトコルが複雑なため、単純なDMACでは制御できずにメインCPU21及びサブCPU22が直接制御することが好ましかったり、少量のデータ転送の度に割り込み処理が必要になったりするという制約が生じる場合がある。
【0018】
これに対してシーケンサ100は、上位システムであるメインCPU21及びサブCPU22の代わりに流用モジュール11の制御を実行する。メインCPU21及びサブCPU22は、流用モジュール11を直接制御せず、シーケンサ100を介して制御することで、流用モジュール11の仕様に起因する制約を回避できるようになっている。
【0019】
例えば、データをレガシーデバイス30に送信する場合、メインCPU21及びサブCPU22はまとまったデータをFIFO16に溜めておき、シーケンサ100がFIFO16に溜まったデータを流用モジュール11用の複雑なプロトコルに従って送信する。これにより、メインCPU21及びサブCPU22側からは、流用モジュール11用の複雑な制御の実行を回避できる。
【0020】
レガシーデバイス30からデータを受信する場合には、シーケンサ100が流用モジュール11の複雑なプロトコルに従ってデータを受信後にFIFO16に蓄積し、メインCPU21及びサブCPU22は、FIFO16に蓄積されたデータをリードするだけで、レガシーデバイス30からのデータを受信できるようになっている。
【0021】
シーケンサ100は、ローカルバス13を介して各種スレーブデバイスにアクセスするローカルバス用マスターポート1061と、直接アクセス可能なダイレクトバス用マスターポート1051とを備えている。
【0022】
シーケンサ100がアクセス可能な範囲は、ローカルバス13に接続された全てのスレーブデバイスと、共通バス20に接続されたDDRコントローラ23等のスレーブデバイスに設定できる。但し、共通バス20に接続されたスレーブデバイスにアクセスするためには、メインCPU21及びサブCPU22と同等のアドレス空間に対応する必要がある。従って、シーケンサ100の実行命令群も同等のアドレス空間に対応する結果、1命令当たりのサイズが大きくなるため、回路規模及びプログラムサイズも大きくなる。
【0023】
これに対し、シーケンサ100のアクセス範囲をローカルバスに直接接続されたスレーブデバイスに限定すると、対応が必要となるアドレス空間も狭くて済むため、シーケンサ100の実行命令群における1つの命令当たりのサイズを小さくできる。
【0024】
従って、本実施形態では、シーケンサ100は、ローカルバス13に接続された一部のスレーブデバイスにのみにアクセス可能で、共通バス20に接続されたデバイスにはアクセスできない構成になっている。
【0025】
ROM14は、シーケンサ100用の動作プログラムを記憶している。動作プログラムは、シーケンサ100用の実行命令群を用いて記述する。ROM14は、ローカルバス13を介さずに、直接シーケンサ100のダイレクトバス用マスターポート1051と接続することで、ROM14のリード遅延を最小化する。これにより、プログラムの実行速度を向上させるとともに、ローカルバス13の混雑具合によらずに実行タイミングを保証できるようにしている。ここで、ROM14は「格納部」の一例である。
【0026】
制御レジスタ17は、メインCPU21及びサブCPU22がシーケンサ100を動作させるために使用される。例えば、シーケンサ100の動作開始タイミングを設定(ライト)したり、動作完了フラグやステータスを確認(リード)したりするのに使用される。
【0027】
制御レジスタ17は、メインCPU21及びサブCPU22からアクセスするローカルバス用スレーブポート172と、シーケンサ100からアクセスするダイレクトバス用スレーブポート171とを備えている。
【0028】
ここで、本実施形態では、シーケンサ100から制御レジスタ17へのアクセスを、ダイレクトバス用スレーブポート171経由のみに限定し、ローカルバス13経由でのアクセスをできない構成としている。これによりローカルバス13の設計が容易になっている。
【0029】
さらに、シーケンサ100からダイレクトバス用スレーブポート171へのアクセスをリード限定とし、ライトできないようにすることで、制御レジスタ17の複数マスターからのアクセス競合を考慮する必要がなくなり、制御レジスタ17の設計が容易になっている。
【0030】
また、完了フラグやステータスのように、シーケンサ100が制御レジスタ17の内容を変更したい場合には、シーケンサ100の汎用出力ポートをレジスタ値としてリードできるようにする。これにより、メインCPU21及びサブCPU22がシーケンサ100の状態を共有できるようになっている。
【0031】
ワーク領域15は、RAM(Random Access Memory)又はレジスタで構成され、シーケンサ100の動作時における一時データの保存のために使用される。またメインCPU21及びサブCPU22がシーケンサ100の動作プログラムを書き込む領域として使用される。
【0032】
制御レジスタ17の一部にシーケンサ100起動時のブートデバイス選択bit(ビット)を設けておき、ブートデバイスをROM14、又はワーク領域15の何れかに選択できるようにしておくと、ASIC1の開発後にもシーケンサ100の動作仕様変更に対応できるため好適である。
【0033】
ワーク領域15は、シーケンサ100のダイレクトバス用マスターポート1051と接続するためのダイレクトバス用スレーブポート151と、ローカルバス13との接続用のスレーブポート152とを備えている。 シーケンサ100では、プログラムコードはダイレクトパス接続のスレーブデバイスにのみに格納するという制約を設けることで、シーケンサ100及びローカルバス13の構造を単純化している。
【0034】
「先入れ先出し部」の一例としてのFIFO16は、メインCPU21及びサブCPU22とシーケンサ100の間のデータ転送のために使用される。FIFO16はライト用スレーブポート161と、リード用スレーブポート162とを備える。
【0035】
メインCPU21及びサブCPU22からレガシーデバイス30へデータ送信する場合は、ライト用スレーブポート161に対し、メインCPU21及びやサブCPU22がライトを実行する。シーケンサ100は、流用モジュール11を経由してリード用スレーブポート162からリードしたデータをレガシーデバイス30に送信する。
【0036】
メインCPU21及びサブCPU22がレガシーデバイス30のデータを取得する場合は、シーケンサ100が流用モジュール11経由で取得したデータを、ライト用スレーブポート161にライトする。そしてメインCPU21及びサブCPU22がリード用スレーブポート162からリードする。
【0037】
FIFO16のデータ記憶状態(満杯又は空)は、制御レジスタ17からリード可能になっており、メインCPU21及びサブCPU22、並びにシーケンサ100は、FIFO16のデータ記憶状態を確認した上でリード及び/又はライトを実行できる。
【0038】
このとき、シーケンサ100は、FIFO16へのアクセス前後で、流用モジュール11の要求するプロトコルに従った処理も実行する。転送プロトコルを満足するように、ROM14又はワーク領域15に記憶するプログラムが作製されている。
【0039】
ローカルバス13は、メインCPU21及びサブCPU22が共通バス20経由で実行するマスターアクセスと、シーケンサ100が実行するマスターアクセスとを調停し、各マスターがレガシーデバイス制御部10内部のスレーブデバイスへのアクセスを中継する。
【0040】
共通バス20は、メインCPU21、サブCPU22、汎用DMAC24又はストレージ制御部25等の各マスターによるDDRコントローラ23又はレガシーデバイス制御部10等のスレーブへのアクセスを調停し、中継する。
【0041】
メインCPU21は、数百MHz~数GHzで動作し、システムのメイン処理を実行する。またサブCPU22は、数十MHz~数百MHzで動作し、省エネ時の処理等のASIC1のサブ処理を実行する。ここで、メインCPU21及びサブCPU22のそれぞれは、「プロセッサ」の一例である。
【0042】
DDRコントローラ23は、メインCPU21、サブCPU22、汎用DMAC24又はストレージ制御部25等の各マスターからの要求に従い、DDRメモリ50のリード及び/又はライトを実行する。
【0043】
DDRメモリ50はASIC1のメインメモリであり、メインCPU21とサブCPU22が実行するプログラムを展開する領域又は一時データの記憶領域等として使用される。このDDRメモリ50は「メモリ」の一例である。
【0044】
メインCPU21及びサブCPU22の動作プログラムは、外付けストレージ40に記憶されており、実行対象となる動作プログラムは、外付けストレージ40からDDRメモリ50へ都度転送される。
【0045】
ストレージ制御部25は、外付けストレージ40へのアクセスを制御する。外付けストレージ40へのライト時は、内蔵DMAC251を使用して、DDRメモリ50のデータを取得し、外付けストレージ40へのデータ送信を実行する。
【0046】
外付けストレージ40からのリード時は、外付けストレージ40から受信したデータを、内蔵DMAC251を使用してDDRメモリ50へライトする。外付けストレージ40として、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)、eMMC(Embedded Multi Media Card)等のうちの何れか1つを接続可能にしている。
【0047】
<シーケンサ100の構成例>
次に、シーケンサ100の構成について図2を参照して説明する。図2はシーケンサ100の構成の一例を示すブロック図である。
【0048】
図2に示すように、シーケンサ100は、PC102と、IR(Instruction Register)下位1031と、IR上位1032と、ダイレクトバスアクセス制御部105と、ローカルバスアクセス制御部106と、入力端子状態検出部107と、メインステートマシン101と、命令実行部1100とを備える。
【0049】
PC(Program Couter)102は、直近に実行対象となる命令が格納されたアドレス(格納位置)を記憶するプログラムカウンタである。本実施形態では、プログラムカウンタのbit幅は12bitである。ここで、このPC102は「格納位置記憶部」の一例である。
【0050】
本実施形態におけるステートマシンの命令サイズとして、2Byte(バイト)と4Byteの2種類のサイズが存在し、1アドレスあたりには1Byteのデータを格納する。そのため、2Byteの命令が実行された後には、PC102の値には2が加算され、4Byteの命令が実行された後には、PC102の値には4が加算される。
【0051】
IR下位1031は、16bit幅のインストラクションレジスタであり、2Byte命令の格納と4Byte命令の下位16bitの格納のために使用される。
【0052】
IR上位1032は、16bit幅のインストラクションレジスタであり、4Byte命令の上位16bitの格納のために使用される。
【0053】
ここで、IR下位1031及びIR上位1032のそれぞれは、「命令記憶部」の一例である。
【0054】
GR104は、8bit幅の汎用レジスタであり、各種命令の実行時に更新及び/又は参照される。このGR104は「実行記憶部」の一例である。
【0055】
ダイレクトバスアクセス制御部105は、メインステートマシン101又は命令実行部1100からの指示(対象アドレスの指定と、動作開始タイミングとを含む)に従い、ROM14又は制御レジスタ17のリード及び/又はライトを実行する。本実施形態では1回の指示で16bitのデータをリード及び/又はライト可能にする。
ローカルバスアクセス制御部106は、命令実行部1100からの指示に従い、ローカルバス13に接続された流用モジュール11、ワーク領域15又はFIFO16等のスレーブデバイスのリード及び/又はライトを実行する。本実施形態では、1回の指示で8bitのデータをリード及び/又はライト可能にする。
【0056】
入力端子状態検出部107は、シーケンサ100に入力される信号のレベルを検出する。本実施形態では8本の信号レベルを検出可能とする。入力端子状態検出部107は、8bitデータを出力する。各1bitは各入力信号1本の信号レベルに対応し、「入力端子」の一例である。
【0057】
メインステートマシン101は、フェッチ実行ステートと命令実行ステートを繰り返し遷移する。フェッチ実行ステートでは、実行すべき命令を取得する。具体的には、PC102の示すアドレスをリードする指示をダイレクトバスアクセス制御部105に対して発行し、ダイレクトバスアクセス制御部105から返ってきたリード結果をIR下位1031に格納後、PC102の値に2を加算して更新する。ここで、メインステートマシン101は「状態制御部」の一例である。
【0058】
取得した命令が2Byte命令の場合は、フェッチ実行ステートを完了し、命令実行ステートへ遷移する。取得した命令が4Byte命令の場合は、再度、PC102の示すアドレスをリードする指示をダイレクトバスアクセス制御部105に対して発行し、ダイレクトバスアクセス制御部105から返ってきたリード結果をIR上位1032に格納後、PPC102の値に2を加算して更新する。その後、フェッチ実行ステートを完了し、命令実行ステートに遷移する。
【0059】
命令実行ステートでは、フェッチ実行ステートで取得した命令に対応する命令実行指示を命令実行部1100に対して発行し、命令実行部1100からの命令完了通知を待つ。
【0060】
命令完了通知を受け取ると、命令実行ステートを完了し、フェッチ実行ステートへ遷移する。本実施形態では、「命令実行指示」と「命令完了通知」は、1つの命令種類ごとに1本の信号として用意されている。また本実施形態では、13種類の命令が存在するため、「命令実行指示」と「命令完了通知」は、各13本ずつ存在する。
【0061】
命令実行部1100は、シーケンサ100が対応する13種類の命令を実行する。この13種類の命令の組み合わせにより、シーケンサ100を意図通りに動作させることができる。
【0062】
<各命令の一例>
次に、命令実行部1100が実行する各命令の詳細について、図3図12を参照して説明する。
【0063】
(NOP命令)
図3は、NOP(No Operation)命令の一例を説明する図である。NOP命令は、2Byteサイズの命令である。
【0064】
bit[15:12]には、NOP命令を示すコード4'b0000が設定される。ここで、bit[15:12]の表記は、2Byteサイズの命令における15ビット目から12ビット目までの4ビット分の範囲を表している。また4'b0000の表記は、4ビットのコードが「0000」であることを2進数で表している。NOP命令では、15ビット目から12ビット目までの4ビット分の範囲に4ビットのコード「0000」が設定される。
【0065】
このコード4'b0000は、「実行命令の種類を識別する識別情報」の一例である。コード4'b0000が設定されると、実行命令がNOP命令であることが識別される。なお、以降でも上記と同様の表記を用いる場合があるが、表記の意味は上述したものと同様である。
【0066】
bit[11:0]は未使用であり、命令実行時には無視される。メインステートマシン101が命令実行ステートに遷移する際に、IR下位1031のbit[15:12]が4'b0000ならば、NOP命令実行部1151に対して命令実行信号が発行される。NOP命令実行部1151は、命令実行信号を受信後、命令完了通知を発行する。
【0067】
(GR操作命令)
図4は、GR(General Register)操作命令の一例を説明する図である。GR操作命令は、2Byteサイズの命令である。
【0068】
bit[15:12]には、GR操作命令を示すコード4'b0001が設定される。bit[11:8]には操作種類が設定される。GR操作命令実行部1101は、操作種類の設定に従って、作用データ[7:0]と現行のGR104のデータ[7:0]の論理演算、または代入処理を実行し、GR104の値を更新する。例えば、操作種類設定[3:0]の値毎に、GR操作命令実行部1101は、以下の動作を実行する。
【0069】
GR操作命令実行部1101は、操作種類設定[3:0]=4'h0の場合、GR104の値を作用データ[7:0]の値に書き換える。
【0070】
また、GR操作命令実行部1101は、操作種類設定[3:0]=4'h2の場合、GR104の値を現行のGR104を論理反転した値に書き換える。例えばh55をhAAに書き換える。
【0071】
また、GR操作命令実行部1101は、操作種類設定[3:0]=4'h3の場合、GR104の値を入力端子状態検出部107の出力値に書き換える。
【0072】
また、GR操作命令実行部1101は、操作種類設定[3:0]=4'hAの場合、GR104の値を現行のGR104の値と作用データ[7:0]との論理積に書き換える。
【0073】
また、GR操作命令実行部1101は、操作種類設定[3:0]=4'hBの場合、GR104の値を現行のGR1044の値と作用データ[7:0]との論理和に書き換える。
【0074】
また、GR操作命令実行部1101は、操作種類設定[3:0]=4'hCの場合、GR104の値を現行のGR104の値と作用データ[7:0]との排他的論理和に書き換える。
【0075】
また、GR操作命令実行部1101は、メインステートマシン101が命令実行ステートに遷移する際に、IR下位1031のbit[15:12]が4'b0001ならば、GR操作命令実行部1101に対して、命令実行信号が発行される。
【0076】
GR操作命令実行部1101は、GR104の書き換え完了後に、命令完了通知を発行する。
【0077】
上述した例では、操作種類設定[3:0]のバリエーションとして、数値演算を実行する設定を設けていないが、例えば、操作種類設定[3:0]=4'hFの場合、GR104の値を現行のGR104の値と作用データ[7:0]の加算結果で書き換え可能とするバリエーションを追加することもできる。これにより、汎用DMAC24のようにアクセスアドレスを一定の値で増加させながら特定のメモリ領域に連続アクセスさせる動作をシーケンサ100に容易に行わせることができる。
【0078】
(出力端子制御命令)
図5は、出力端子制御命令の一例を説明する図である。出力端子制御命令は、2Byteサイズの命令である。
【0079】
bit[15:12]には、出力端子制御命令を示すコード4'b1000が設定される。bit[11:8]には、操作種類が設定される。
【0080】
出力端子制御命令実行部1141は、操作種類設定に従って、作用データ[7:0]と現行の出力端子データ[7:0]の論理演算又は代入処理を実行し、出力端子データ[7:0]の値を更新する。
【0081】
出力端子データ[7:0]の各1bitは、シーケンサ100の出力信号端子1本に対応している。例えば、操作種類設定[3:0]の値毎に、出力端子制御命令実行部1141は以下の動作を実行する。
【0082】
出力端子制御命令実行部1141は、操作種類設定[3:0]=4'h0の場合、出力端子データの値を作用データ[7:0]の値に書き換える。
【0083】
また、出力端子制御命令実行部1141は、操作種類設定[3:0]=4'hAの場合、出力端子データの値を現行の出力端子データの値と作用データ[7:0]との論理積に書き換える。
【0084】
また、出力端子制御命令実行部1141は、操作種類設定[3:0]=4'hBの場合、出力端子データの値を現行の出力端子データの値と作用データ[7:0]との論理和に書き換える。
【0085】
また、出力端子制御命令実行部1141は、操作種類設定[3:0]=4'hDの場合、出力端子データの値を現行の出力端子データの値とGR104の値との論理積に書き換える。
【0086】
また、出力端子制御命令実行部1141は、操作種類設定[3:0]=4'hDの場合、出力端子データの値を現行の出力端子データの値とGR104の値との論理和に書き換える。
【0087】
メインステートマシン101が命令実行ステートに遷移する際に、IR下位1031のbit[15:12]が4'b1000ならば、出力端子制御命令実行部1141に対して、命令実行信号が発行される。出力端子制御命令実行部1141は、出力端子データの書き換え完了後、命令完了通知を発行する。
【0088】
(ダイレクトバス転送命令)
次に図6は、ダイレクトバス転送命令とローカルバス転送命令の一例を説明する図である。ダイレクトバス転送命令及びローカルバス転送命令のそれぞれは、2Byteサイズの命令である。
【0089】
ダイレクトバス接続デバイスにライトする場合は、bit[15:12]には、コード4'b0110が設定される。ダイレクトバス接続デバイスからリードする場合は、bit[15:12]には、コード4'b0111が設定される。
【0090】
ローカルバス接続デバイスにライトする場合は、bit[15:12]には、コード4'b0100が設定される。ダイレクトバス接続デバイスからリードする場合は、bit[15:12]には、コード4'b0101が設定される。bit[11:0]には、アクセス対象となるアドレスが設定される。各命令実行時には、対象アドレス[11:0]で指定された領域とGR104との間で、データの転送が実行される。
【0091】
メインステートマシン101が命令実行ステートに遷移する際に、IR下位1031のbit[15:12]が4'b0110ならば、ダイレクトバスライト命令実行部1131に対して命令実行信号が発行される。
【0092】
ダイレクトバスライト命令実行部1131は、ダイレクトバスアクセス制御部105に対してライト指示及びライト対象アドレスを発行する。このとき、ライトデータとしては、GR104の値を発行する。ダイレクトバスアクセス制御部105のライト動作完了後、ダイレクトバスライト命令実行部1131は、命令完了通知を発行する。
【0093】
メインステートマシン101が命令実行ステートに遷移する際に、IR下位1031のbit[15:12]が4'b0111ならば、ダイレクトバスリード命令実行部1132に対して、命令実行信号が発行される。
【0094】
ダイレクトバスリード命令実行部1132は、ダイレクトバスアクセス制御部105に対し、リード指示及びリード対象アドレスを発行する。ダイレクトバスリード命令実行部1132は、ダイレクトバスアクセス制御部105からリードデータを受信すると、受信したリードデータをGR104に格納し、命令完了通知を発行する。
【0095】
メインステートマシン101が命令実行ステートに遷移する際に、IR下位1031のbit[15:12]が4'b0100ならば、ローカルバスライト命令実行部1133に対して、命令実行信号が発行される。
【0096】
ローカルバスライト命令実行部1133は、ローカルバスアクセス制御部106に対し、ライト指示及びライト対象アドレスを発行する。このとき、ライトデータとしては、GR104の値を発行する。ローカルバスアクセス制御部106のライト動作完了後、ローカルバスライト命令実行部1133は、命令完了通知を発行する。
【0097】
メインステートマシン101が命令実行ステートに遷移する際に、IR下位1031のbit[15:12]が4'b0111ならば、ローカルバスリード命令実行部1134に対して、命令実行信号が発行される。
【0098】
ローカルバスリード命令実行部1134は、ローカルバスアクセス制御部106に対し、リード指示及びリード対象アドレスを発行する。ローカルバスリード命令実行部1134は、ローカルバスアクセス制御部106からリードデータを受信すると、受信したリードデータをGR104に格納し、命令完了通知を発行する。
【0099】
(強制ジャンプ命令)
図7は、強制ジャンプ命令の一例を説明する図である。強制ジャンプ命令は、2Byteサイズの命令である。bit[15:12]には、コード4'b1100が設定される。bit[11:0]にはジャンプ先アドレスが設定される。
【0100】
メインステートマシン101が命令実行ステートに遷移する際に、IR下位1031のbit[15:12]が4'b1100ならば、強制ジャンプ命令実行部1121に対して、命令実行信号が発行される。
【0101】
強制ジャンプ命令実行部1121は、PC102の値をジャンプ先アドレスに書き換え後、命令完了通知を発行する。
【0102】
(繰り返しジャンプ命令)
図8は、繰り返しジャンプ命令の一例を説明する図である。繰り返しジャンプ命令は、4Byteサイズの命令である。下位bit[15:12]には、コード4'b1101が設定される。下位bit[11:8]は、繰り返し回数カウンタの初期値としてロードする値を本命令の下位bit[7:0]の値とするか、又はGR104とするかの指定のために使用される。この下位bit[11:8]は、「取得先指定部」の一例である。
【0103】
下位bit[7:0]には、繰り返し回数が設定される。繰り返し回数としてGR104の値を使用する場合は、このbitは無視される。上位bit[11:0]には、ジャンプ先のアドレスが設定される。この下位bit[7:0]は、「回数指定部」の一例である。
【0104】
メインステートマシン101が命令実行ステートに遷移する際に、IR下位1031のbit[15:12]が4'b1101ならば、繰り返しジャンプ命令実行部1122に対して命令実行信号が発行される。
【0105】
繰り返しジャンプ命令実行部1122は、初回の命令実行信号受信時、ロード先選択bit[3:0]の値が4'b0000の場合は、繰り返し回数カウンタの初期値として、繰り返しジャンプ命令の下位bit[7:0]の値を設定し、ロード先選択bit[3:0]の値が4'b0001の場合は、繰り返し回数カウンタの初期値としてGR104の値を設定する。ここで、この繰り返しジャンプ命令実行部1122は「繰り返しジャンプ実行部」の一例である。
【0106】
カウンタ初期値設定後、PC102の値が本命令の上位[11:0]で設定されるジャンプ先アドレスに書き換えられる。PC102を書き換え後、カウンタ値を1だけ減算して命令完了通知が発行される。
【0107】
繰り返しジャンプ命令実行部1122は、2回目以降の命令実行信号受信時、繰り返しカウンタ値を判定し、繰り返しカウンタの値がゼロでない場合は、PC102の値を本命令の上位[11:0]で設定されるジャンプ先アドレスに書き換える。PC102を書き換え後、カウンタ値を1だけ減算して命令完了通知を発行する。繰り返しカウンタ値がゼロの場合は、何も実行せずに命令完了通知を発行する。またPC102の値に繰り返しジャンプ実行命令のデータサイズに対応した値である4を加算して、PC102の値を書き換える。
【0108】
(GR分岐ジャンプ命令)
図9は、GR分岐ジャンプ命令の一例を説明する図である。GR分岐ジャンプ命令は、4Byteサイズの命令である。下位bit[15:12]には、コード4'b1110が設定される。下位bit[11:8]には、分岐条件が設定される。上位bit[11:0]には、ジャンプ先アドレスが設定される。下位bit[7:0]には、ジャンプ判定時に、GR104のうちの判定対象となるbitを選択(指定)するためのデータが設定される。
【0109】
GR判定対象bit選択[7:0]の各bitのうち、「1」としたbit位置に対応するGR104のbitが判定対象となる。例えば、GR判定対象bit選択[7:0]の値が8'b10101010ならば、GR104のbit[7][5]3][1]の4bitを使用して、ジャンプ判定が実行される。
【0110】
メインステートマシン101が命令実行ステートに遷移する際に、IR下位1031のbit[15:12]が4'b1110ならば、GR分岐ジャンプ命令実行部1123に対して、命令実行信号が発行される。GR分岐ジャンプ命令実行部1123は、本命令の下位bit[11:8]の分岐条件設定の値により、以下のように判定動作が変化する。
【0111】
分岐条件設定の値が4'b1000の場合は、GR判定対象bit選択[7:0]と、GR104の値が完全一致した場合に分岐条件成立と判断され、PC102の値が本命令の上位[11:0]で設定されるジャンプ先アドレスに書き換えられる。PC102の書き換え後、命令完了通知が発行される。分岐条件が成立しなかった場合は、何も実行せずに命令完了通知が発行される。
【0112】
分岐条件設定の値が4'b0100の場合は、GR判定対象bit選択[7:0]によって判定対象としたGR104のbitのうち、対象bitが全て「1」の場合に、分岐条件成立と判断され、PC102の値が本命令の上位[11:0]で設定されるジャンプ先アドレスに書き換えられる。PC102の書き換え後、命令完了通知が発行される。分岐条件が成立しなかった場合は、何も実行せずに命令完了通知が発行される。
【0113】
分岐条件設定の値が4'b0101の場合は、GR判定対象bit選択[7:0]によって判定対象としたGR104のbitのうち、少なくとも1つ以上のbitが「1」の場合に分岐条件成立と判断され、PC102の値が本命令の上位[11:0]で設定されるジャンプ先アドレスに書き換えられる。PC102の書き換え後、命令完了通知が発行される。分岐条件が成立しなかった場合は、何も実行せずに命令完了通知が発行される。
【0114】
分岐条件設定の値が4'b0110の場合は、GR判定対象bit選択[7:0]によって判定対象としたGR104のbitのうち、対象bitが全て「0」の場合に分岐条件成立と判断され、PC102の値が本命令の上位[11:0]で設定されるジャンプ先アドレスに書き換えられる。PC102の書き換え後、命令完了通知が発行される。分岐条件が成立しなかった場合は、何も実行せずに命令完了通知が発行される。
【0115】
分岐条件設定の値が4'b0111の場合は、GR判定対象bit選択[7:0]によって判定対象としたGR104のbitのうち、少なくとも1つ以上のbitが「0」の場合に分岐条件成立と判断され、PC102の値が本命令の上位[11:0]で設定されるジャンプ先アドレスに書き換えられる。PC102の書き換え後、命令完了通知が発行される。分岐条件が成立しなかった場合は、何も実行せずに命令完了通知が発行される。
【0116】
分岐条件設定の値が4'b1001の場合は、GR判定対象bit選択[7:0]と、GR104の値が一致しない場合に分岐条件成立と判断され、PC102の値が本命令の上位[11:0]で設定されるジャンプ先アドレスに書き換えられる。PC102の書き換え後、命令完了通知が発行される。分岐条件が成立しなかった場合は、何もせずに命令完了通知が発行される。
【0117】
(入力端子分岐ジャンプ命令)
図10は、入力端子分岐ジャンプ命令の一例を説明する図である。入力端子分岐ジャンプ命令は、4Byteサイズの命令である。下位bit[15:12]には、コード4'b1111が設定される。下位bit[11:8]には、分岐条件が設定される。上位bit[11:0]には、ジャンプ先アドレスが設定される。下位bit[7:0]には、ジャンプ判定時に、入力端子状態検出部107の出力のうち、判定対象となるbitを選択(指定)するためのデータが設定される。入力端子判定対象bit選択[7:0]の各bitのうち、「1」としたbit位置に対応する入力端子状態検出部107の出力bitが判定対象となる。
【0118】
メインステートマシン101が命令実行ステートに遷移する際に、IR下位1031のbit[15:12]が4'b1111ならば、入力端子分岐ジャンプ命令実行部1124に対して、命令実行信号が発行される。入力端子分岐ジャンプ命令実行部1124は、本命令の下位bit[11:8]の分岐条件設定の値によって、以下のように判定動作が変化する。
【0119】
分岐条件設定の値が4'b1000の場合は、入力端子判定対象bit選択[7:0]と、入力端子状態検出部107の出力が完全一致した場合に分岐条件成立と判断され、PC102の値が本命令の上位[11:0]で設定されるジャンプ先アドレスに書き換えられる。PC102の書き換え後、命令完了通知が発行される。分岐条件が成立しなかった場合は、何も実行せずに、命令完了通知が発行される。
【0120】
分岐条件設定の値が4'b0100の場合は、入力端子判定対象bit選択[7:0]によって判定対象とした入力端子状態検出部107の出力bitのうち、対象bitが全て「1」の場合に分岐条件成立と判断され、PC102の値が本命令の上位[11:0]で設定されるジャンプ先アドレスに書き換えられる。PC102の書き換え後、命令完了通知が発行される。分岐条件が成立しなかった場合は、何も実行されずに命令完了通知が発行される。
【0121】
分岐条件設定の値が4'b0101の場合は、入力端子判定対象bit選択[7:0]によって判定対象とした入力端子状態検出部107の出力bitのうち、少なくとも1つ以上のbitが「1」の場合に、分岐条件成立と判断され、PC102の値が本命令の上位[11:0]で設定されるジャンプ先アドレスに書き換えられる。PC102の書き換え後、命令完了通知が発行される。分岐条件が成立しなかった場合は、何も実行されずに命令完了通知が発行される。
【0122】
分岐条件設定の値が4'b0110の場合は、入力端子判定対象bit選択[7:0]によって判定対象とした入力端子状態検出部107の出力bitのうち、対象bitが全て「0」の場合に分岐条件成立と判断され、PC102の値が本命令の上位[11:0]で設定されるジャンプ先アドレスに書き換えられる。PC102の書き換え後、命令完了通知が発行される。分岐条件が成立しなかった場合は、何も実行されずに命令完了通知が発行される。
【0123】
分岐条件設定の値が4'b0111の場合は、入力端子判定対象bit選択[7:0]によって判定対象とした入力端子状態検出部107の出力bitのうち、少なくとも1つ以上のbitが「0」の場合に分岐条件成立と判断され、PC102の値が本命令の上位[11:0]で設定されるジャンプ先アドレスに書き換えられる。PC102の書き換え後、命令完了通知が発行される。分岐条件が成立しなかった場合は、何も実行されずに命令完了通知が発行される。
【0124】
分岐条件設定の値が4'b1001の場合は、入力端子判定対象bit選択[7:0]と、入力端子状態検出部107の出力が一致しない場合に分岐条件成立と判断され、PC102の値が本命令の上位[11:0]で設定されるジャンプ先アドレスに書き換えられる。PC102の書き換え後、命令完了通知が発行される。分岐条件が成立しなかった場合は、何も実行されずに命令完了通知が発行される。
【0125】
(入力端子ポーリング命令)
図11は、入力端子ポーリング命令の一例を説明する図である。入力端子ポーリング命令は、2Byteサイズの命令である。bit[15:12]には、コード4'b1010が設定される。bit[11:8]には、ポーリング終了条件が設定される。このbit[11:8]は、ポーリング終了条件指定部の一例であり、bit[11:8]に設定されるデータは、「論理演算指定データ」の一例である。
【0126】
bit[7:0]には、ポーリング終了判定時に、入力端子状態検出部107の出力のうち、判定対象となるbitを選択(指定)するためのデータが設定される。入力端子判定対象bit選択[7:0]の各bitのうち、「1」としたbit位置に対応する入力端子状態検出部107の出力bitが判定対象となる。ここで、このbit[7:0]に設定されるデータは、「命令付属データ」の一例である。
【0127】
メインステートマシン101が命令実行ステートに遷移する際に、IR下位1031のbit[15:12]が4'b1010ならば、入力端子ポーリング命令実行部1111に対して命令実行信号が発行される。入力端子ポーリング命令実行部1111は、本命令のbit[11:8]の終了条件設定の値によって以下のように判定動作が変化する。ここで、この入力端子ポーリング命令実行部1111は「ポーリング実行部」の一例である。
【0128】
終了条件設定の値が4'b1000の場合は、入力端子判定対象bit選択[7:0]の値と、入力端子状態検出部107の出力bitが完全一致した場合に、ポーリング終了条件成立と判断され、何も実行されずに命令完了通知が発行される。
【0129】
ポーリング終了条件が成立しなかった場合は、PC102の値から「2」を減算して戻した後に、命令完了通知が発行されることで、再度、本命令が実行される。
【0130】
終了条件設定の値が4'b0100の場合は、入力端子判定対象bit選択[7:0]によって判定対象とした入力端子状態検出部107の出力bitのうち、対象bitが全て「1」の場合に終了条件成立と判断され、何も実行されずに命令完了通知が発行される。
【0131】
ポーリング終了条件が成立しなかった場合は、PC102の値から「2」を減算して戻した後に、命令完了通知が発行されることで、再度、本命令が実行される。
【0132】
終了条件設定の値が4'b0101の場合は、入力端子判定対象bit選択[7:0]によって判定対象とした入力端子状態検出部107の出力bitのうち、少なくとも1つ以上のbitが「1」の場合に終了条件成立と判断され、何も実行されずに命令完了通知が発行される。ポーリング終了条件が成立しなかった場合は、PC102の値から「2」を減算して戻した後に、命令完了通知が発行されることで、再度、本命令が実行される。
【0133】
終了条件設定の値が4'b0101の場合は、入力端子判定対象bit選択[7:0]によって判定対象とした入力端子状態検出部107の出力bitのうち、対象bitが全て「0」の場合に終了条件成立と判断され、何も実行されずに命令完了通知が発行される。
【0134】
ポーリング終了条件が成立しなかった場合は、PC102の値から「2」を減算して戻した後に、命令完了通知が発行されることで、再度、本命令が実行される。
【0135】
終了条件設定の値が4'b0111の場合は、入力端子判定対象bit選択[7:0]によって判定対象とした入力端子状態検出部107の出力bitのうち、少なくとも1つ以上のbitが「0」の場合に終了条件成立と判断され、何も実行されずに命令完了通知が発行される。ポーリング終了条件が成立しなかった場合は、PC102の値から「2」を減算して戻した後に、命令完了通知が発行されることで、再度、本命令が実行される。
【0136】
終了条件設定の値が4'b1001の場合は、入力端子判定対象bit選択[7:0]と、入力端子状態検出部107の出力が一致しない場合に終了条件成立と判断され、何も実行されずに命令完了通知が発行される。ポーリング終了条件が成立しなかった場合は、PC102の値から「2」を減算して戻した後に、命令完了通知が発行されることで、再度、本命令が実行される。
【0137】
(アドレス空間ポーリング命令)
図12は、アドレス空間ポーリング命令の一例を説明する図である。アドレス空間ポーリング命令は、4Byteサイズの命令である。下位bit[15:12]には、コード4'b1011が設定される。下位bit[11:8]には、終了条件が設定される。上位bit[11:0]には、ポーリングするリード対象アドレスが設定される。下位bit[7:0]には、ポーリング終了判定時にポーリング対象アドレスのリード結果のうち判定対象となるbitを選択(指定)するためのデータが設定される。リード結果判定対象bit選択[7:0]の各bitのうち、「1」としたbit位置に対応するリード結果のbitが判定対象となる。
【0138】
メインステートマシン101が命令実行ステートに遷移する際に、IR下位1031のbit[15:12]が4'b1011ならば、アドレス空間ポーリング命令実行部1112に対して命令実行信号が発行される。
【0139】
アドレス空間ポーリング命令実行部1112は、命令実行信号を受信すると、ローカルバスアクセス制御部106に対して、リード指示及びリード対象アドレスを発行する。アドレス空間ポーリング命令実行部1112は、ローカルバスアクセス制御部106からリードデータを受信すると、受信したリードデータを専用のポーリング結果レジスタ[7:0]に格納する。ポーリング結果レジスタの値と、終了条件設定の値を使用して、ポーリング動作の終了及び/又は継続が判定される。ここで、このアドレス空間ポーリング命令実行部1112は「ポーリング実行部」の一例である。
【0140】
アドレス空間ポーリング命令実行部1112は、本命令の下位bit[11:8]の終了条件設定の値によって、以下のように判定動作が変化する。
【0141】
終了条件設定の値が4'b1000の場合は、リード結果判定対象bit選択[7:0]と、ポーリング結果レジスタ[7:0]の値が完全一致した場合に、ポーリング終了条件成立と判断され、何も実行されずに命令完了通知が発行される。ポーリング終了条件が成立しなかった場合は、PC102の値をから「4」を減算して戻した後に、命令完了通知が発行されることで、再度、本命令が実行される。
【0142】
終了条件設定の値が4'b0100の場合は、リード結果判定対象bit選択[7:0]によって判定対象としたポーリング結果レジスタ[7:0]の各bitのうち、対象bitが全て「1」の場合にポーリング終了条件成立と判断され、何も実行されずに命令完了通知が発行される。ポーリング終了条件が成立しなかった場合は、PC102の値から「4」を減算して戻した後に、命令完了通知が発行されることで、再度、本命令が実行される。
【0143】
終了条件設定の値が4'b0101の場合は、リード結果判定対象bit選択[7:0]によって判定対象としたポーリング結果レジスタ[7:0]の各bitのうち、少なくとも1つ以上のbitが「1」の場合にポーリング終了条件成立と判断され、何も実行されずに命令完了通知が発行される。ポーリング終了条件が成立しなかった場合は、PC102の値から「4」を減算して戻した後に、命令完了通知が発行されることで、再度、本命令が実行される。
【0144】
終了条件設定の値が4'b0110の場合は、リード結果判定対象bit選択[7:0]によって判定対象としたポーリング結果レジスタ[7:0]の各bitのうち、対象bitが全て「0」の場合にポーリング終了条件成立と判断され、何も実行されずに命令完了通知が発行される。ポーリング終了条件が成立しなかった場合は、PC102の値から「4」を減算して戻した後に、命令完了通知が発行されることで、再度、本命令が実行される。
【0145】
終了条件設定の値が4'b0111の場合は、リード結果判定対象bit選択[7:0]によって判定対象としたポーリング結果レジスタ[7:0]の各bitのうち、少なくとも1つ以上のbitが「0」の場合にポーリング終了条件成立と判断され、何も実行されずに命令完了通知が発行される。ポーリング終了条件が成立しなかった場合は、PC102の値から「4」を減算して戻した後に、命令完了通知が発行されることで、再度、本命令が実行される。
【0146】
終了条件設定の値が4'b1001の場合は、リード結果判定対象bit選択[7:0]とポーリング結果レジスタ[7:0]の値が一致しない場合に終了条件成立と判断され、何も実行されずに命令完了通知が発行される。ポーリング終了条件が成立しなかった場合は、PC102の値から「4」を減算して戻した後に、命令完了通知が発行されることで、再度、本命令が実行される。
【0147】
<アドレス空間割当例>
次に図13は、本実施形態に係るASIC1のアドレス空間割当の一例を示す図である。
【0148】
メインCPU制御レジスタ領域210には、メインCPU21の各種設定及び/又は制御用のレジスタが割り当てられており、メインCPU21及びサブCPU22からアクセス可能であるが、シーケンサ100からはアクセス不能である。
【0149】
また、サブCPU制御レジスタ領域220は、サブCPU22の各種設定及び/又は制御用のレジスタが割り当てられており、メインCPU21及びサブCPU22からアクセス可能であるが、シーケンサ100からはアクセス不能である。
【0150】
また、DDRコントローラ制御レジスタ領域230は、DDRコントローラ23の各種設定及び/又は制御用のレジスタが割り当てられており、メインCPU21及びサブCPU22からアクセス可能であるが、シーケンサ100からはアクセス不能である。
【0151】
また、汎用DMAC制御レジスタ領域240は、汎用DMAC24の各種設定及び/又は制御用のレジスタが割り当てられており、メインCPU21及びサブCPU22からアクセス可能であるが、シーケンサ100からはアクセス不能である。
【0152】
また、ストレージ制御レジスタ領域250は、ストレージ制御部25の各種設定及び/又は制御用のレジスタが割り当てられており、メインCPU21及びサブCPU22からアクセス可能であるが、シーケンサ100からはアクセス不能である。
【0153】
また、DDRメモリ領域500は、DDRメモリ50へのリード及び/又はライト用のアドレスが割り当てられており、メインCPU21、サブCPU22、汎用DMAC24及びストレージ制御部25からアクセス可能であるが、シーケンサ100からはアクセス不能である。
【0154】
また、レガシーデバイス制御レジスタ領域900は、レガシーデバイス制御部10の各種設定及び/又は制御用のレジスタが割り当てられており、基本的にメインCPU21、サブCPU22及びシーケンサ100からアクセス可能であるが、シーケンサ用ROM領域914のように、メインCPU21及びサブCPU22からはアクセスできない領域も存在する。
【0155】
また、汎用DMAC24は、FIFOライト用領域9161及びFIFOリード用領域9162にアクセス可能である。
【0156】
また、流用モジュール制御レジスタ領域911は、流用モジュール11の各種設定及び/又は制御用のレジスタが割り当てられており、メインCPU21、サブCPU22及びシーケンサ100からアクセス可能である。
【0157】
また、シーケンサ制御レジスタ領域917は、シーケンサ100の各種設定及び/又は制御用の制御レジスタ17が割り当てられており、メインCPU21、サブCPU22及びシーケンサ100からアクセス可能である。
【0158】
シーケンサ用ROM領域914は、シーケンサ100の動作プログラム格納用のROM14が割り当てられており、シーケンサ100からのみアクセス可能である。
【0159】
リセット解除後、シーケンサ100は、ROM14の先頭アドレスである0x2000番地からフェッチ動作を開始する。但し、シーケンサ制御レジスタ領域917の一部のレジスタにシーケンサ100のブートデバイス選択bitを設けておくことで、リセット解除後の最初のフェッチアドレスをシーケンサ用ワーク領域の先頭アドレスである0x3000番地となるようにハードウエアを構成することも可能である。
【0160】
具体的には、シーケンサ100用のリセット信号と、シーケンサ制御レジスタ領域のリセット信号を分けておき、ブートデバイス選択bitの値によって、シーケンサ100のリセット解除後のPC102の初期値として0x200又は0x300の何れかを選択可能にしておく。
【0161】
シーケンサ用ROM領域914及びシーケンサ用ワーク領域915に、図3図12で説明した各種命令を配置することで、シーケンサ100の動作を定義できる。また、シーケンサ用ROM領域914の一部に、シーケンサ用ワーク領域915へのジャンプ命令を配置しておき、シーケンサ100のリセット解除前に、メインCPU21、サブCPU22、又は汎用DMAC24が、シーケンサ用ワーク領域915にシーケンサ動作プログラムを記述しておくことで、シーケンサ100の動作をある程度動的に変更することが可能になる。
【0162】
シーケンサ用ワーク領域915に記述するプログラムは、不揮発性の外付けストレージ40に記憶され、ストレージ制御部25によりDDRメモリ領域500に展開された後、メインCPU21、サブCPU22又は汎用DMAC24により、シーケンサ用ワーク領域915に転送される。
【0163】
シーケンサ用ワーク領域915は、シーケンサ100の動作プログラムやデータを格納する領域であり、メインCPU21、サブCPU22、汎用DMAC24及びシーケンサ100からアクセス可能である。
【0164】
FIFOライト用領域9161は、アドレス空間としては0x900~0x9FFまで割り当てているが、この範囲に対してライトがあった場合には、アドレスに関係なく時間的に早い方から順番にFIFO16へのデータの詰め込みが実行される。FIFOライト用領域9161は、メインCPU21、サブCPU22、汎用DMAC24及びシーケンサ100からアクセス可能である。
【0165】
FIFOリード用領域9162は、アドレス空間としては0xA00~0xAFFまで割り当てているが、この範囲に対してリードがあった場合には、アドレスに関係なく時間的に早く記憶されたデータから順番に、FIFO16からのデータの読み出しが実行される。FIFOリード用領域9162は、メインCPU21、サブCPU22、汎用DMAC24及びシーケンサ100からアクセス可能である。
【0166】
FIFO16を介して、メインCPU21、サブCPU22又は汎用DMAC24とシーケンサ100とのデータ転送を実行するようにすることで、シーケンサ100はメモリアクセスアドレスの演算を省略できる。
【0167】
<シーケンサ100の動作例>
次に、シーケンサ100の動作について図14を参照して説明する。図14は、シーケンサ100の動作の一例を示すフローチャートである。
【0168】
まず、ステップS141において、シーケンサ100は、入力端子ポーリング命令の「16'hA401」に応答してシーケンサ実行信号アサートを検出する。入力端子ポーリング命令は、シーケンサ用ROM領域914中のアドレス0x500に格納されている。
【0169】
メインCPU21又はサブCPU22が制御レジスタ17の一つとして実装されているシーケンサ実行開始bitに「1」をライトすると、シーケンサ実行信号が「1」になる。シーケンサ実行信号は、制御レジスタ17から出力され、シーケンサ100の入力端子状態検出部107のbit0に対応する端子に入力する。入力端子ポーリング命令の「16'hA401」は、入力端子状態検出部107のbit0が「1」になるまで、ポーリングを実行する命令である。
【0170】
ステップS141でシーケンサ実行信号アサートが検出された場合は(ステップS141、Yes)、動作はステップS142に移行し、検出されなかった場合は(ステップS141、No)、ステップS141の動作が繰り返される。
【0171】
続いて、ステップS142において、シーケンサ100は、繰り返しジャンプ命令の「32'h0600_D020」に応答して、32回の繰り返し処理実行を実行する。繰り返しジャンプ命令は、シーケンサ用ROM領域914中のアドレス0x502に格納されている。
【0172】
繰り返しジャンプ命令の初回実行時は、命令bit[7:0]の値8'h20が繰り返し回数としてロードされ、繰り返しジャンプ命令の2回目以降の実行時は、実行の都度、8'h20から「1」が減算される。
【0173】
繰り返し回数がゼロでない場合は、PC102の値が0x600番地で書き換えられ、繰り返し回数がゼロの場合は、PC102の値が0x506番地(繰り返しジャンプ命令の格納アドレス0x5022に「4」を加算)に書き換えられる。
【0174】
続いて、ステップS143において、シーケンサ100は、繰り返しの最終回であるか否かを判定する。
【0175】
ステップS143で繰り返しの最終回でないと判定された場合は(ステップS143、No)、ステップS145において、シーケンサ100は、アドレス空間ポーリング命令の「32'h0020_B480」に応答して、1Byteのデータ転送準備の完了を検出する。
【0176】
アドレス空間ポーリング命令は、シーケンサ用ROM領域914中のアドレス0x600に格納されている。アドレス空間ポーリング命令では、流用モジュール制御レジスタ領域911のうち、アドレス0x020のbit[7]が「1」になるまで、ポーリング動作が継続される。
【0177】
アドレス0x020のbit[7]は、レガシーデバイス30が送信したデータを受信し、流用モジュール11からのデータ取り出しが可能であることを示すものである。アドレス0x200のbit[7]が「1」になると、PC102の値に「4」が加算され、ポーリング動作が終了する。
【0178】
ステップS145で1Byteのデータ転送準備の完了が検出されない場合は(ステップS145、No)、ステップS145の動作が繰り返され、検出された場合は(ステップS145、Yes)、動作はステップS146に移行する。
【0179】
続いて、ステップS146において、シーケンサ100は、ローカルバスリード命令の「16'h5040」に応答して、流用モジュール11の送信用レジスタのリードを実行する。ローカルバスリード命令は、シーケンサ用ROM領域914中のアドレス0x604に格納されている。本命令により、流用モジュール制御レジスタ領域911のうち、アドレス0x040のデータがGR104に格納される。
【0180】
続いて、ステップS147において、シーケンサ100は、ローカルバスライト命令の「16'h4900」に応答して、リード結果のFIFO16へのライトを実行する。ローカルバスライト命令は、シーケンサ用ROM領域914中のアドレス0x606に格納されている。ローカルバスライト命令により、GR104に格納されているデータがFIFOライト用領域9161にライトされる。
【0181】
続いて、ステップS148において、シーケンサ100は、繰り返しジャンプ命令の「16'hC502」に応答して、格納アドレスへのジャンプを実行する。繰り返しジャンプ命令は、シーケンサ用ROM領域914中のアドレス0x608に格納されている。繰り返しジャンプ命令により、PC102の値が0x502に書き換えられる。
【0182】
一方、ステップS143で繰り返しの最終回であると判定された場合は(ステップS143、Yes)、ステップS144において、シーケンサ100は、出力端子制御命令の「16'h8B01」に応答して、完了信号のアサートを実行する。出力端子制御命令は、シーケンサ用ROM領域914中のアドレス0x506に格納されている。
【0183】
出力端子制御命令によって出力端子制御命令実行部1141のbit[0]に対応する信号線のレベルが「1」になる。この信号線は、制御レジスタ17のうちのシーケンサ100の完了を示すレジスタのbit[0]に接続されており、レジスタのリードによりメインCPU21及びサブCPU22から信号線のレベルを検知できる。また完了信号をメインCPU21又はサブCPU22の割り込み要因として使用することで、シーケンサ100の完了を通知することもできる。
【0184】
このようにしてシーケンサ100は動作することができる。
【0185】
ここで、図15は、図14の動作例におけるシーケンサ用ROM領域914の一例について説明する図である。図14に示した動作は、シーケンサ用ROM領域914の容量としては18Byteあれば実現できる。図14の例に限らず、シーケンサ用ROM領域914に記載する内容により、シーケンサ100の動作を定義できる。
【0186】
<シーケンサ100の作用効果>
従来、メインCPUに代えて専用ステートマシン又はサブCPUを用い、特定の処理を実行する技術が知られている。近年では、複数チップで実現していた機能をSoC(System on Chip)として1チップで実現することで、コストダウンを図る傾向がある。
【0187】
この場合に、レガシーデバイス等の既存のチップで使用していた回路を新たなSoCでそのまま流用できることが望ましいが、既存のチップのI/F(Interface)は、バス占有時間が長く1回のアクセスに時間を要したり、少しでも回路を節約するためにプロトコルが複雑化していたりするため、メインCPUのソフトウェアが複雑になること等により、既存のチップ部分の制御がシステム上の制約になる場合がある。
【0188】
この制約に対して、既存のチップを制御する専用のサブCPUや専用のステートマシンを使用して制約を解消させることも考えられるが、専用ステートマシンを使用する方法では、開発工数が大きい上に、仕様変更発生時の対応工数も大きくなってしまう場合がある。
【0189】
またサブCPUを使用する方法では、必要な処理内容が単純な場合には、サブCPUが数値演算部や割り込み処理部、キャッシュ等の過剰な機能を備えることで、無駄に回路規模が増大する場合がある。またサブCPUのソフトウェア開発環境を準備する必要があるため、専用ステートマシン開発に比べれば工数は少ないものの開発環境の習熟や維持に工数がかかる場合がある。
【0190】
これに対し、回路規模の増大を抑制するために、汎用マイコンのCPUとROMの構成をシーケンサで置き換えるものが開示されている。またプログラミング作業を効率化するために、モーション制御用プログラミング言語と、シーケンス制御用プログラミング言語を相互変換する方法が開示されている。
【0191】
しかしながら、汎用マイコンのCPUとROMの構成をシーケンサで置き換える構成では、演算器やレジスタ構造に汎用マイコンの構成を引き継ぐため、汎用マイコンの機能が過剰な場合に回路規模が無駄に大きくなる場合がある。またモーション制御用プログラミング言語とシーケンス制御用プログラミング言語を相互変換する方法では、回路規模の削減方法が開示されていないため、回路規模の大型化を抑制できない。
【0192】
これに対し、本実施形態では、ASIC1は、複数の実行命令を含む実行命令群を格納するROM14と、読み出した実行命令に応答した動作を実行するシーケンサ100とを備え、シーケンサ100は、入力端子ポーリング命令実行部1111及びアドレス空間ポーリング命令実行部1112と、繰り返しジャンプ命令実行部1122を備える。
【0193】
シーケンス制御を実行するシーケンサ100を備えることで、数値演算回路と割り込み処理回路のASIC1への搭載を不要とし、その分ASIC1の回路規模の大型化を抑制できる。
【0194】
また入力端子ポーリング命令実行部1111及びアドレス空間ポーリング命令実行部1112のそれぞれが行うポーリングと、繰り返しジャンプ命令実行部1122が行う繰り返しジャンプは、ファクシミリモデム用のアナログフロントエンドデバイスや、専用の画像処理デバイス等のレガシーデバイス30の制御において頻発する動作である。
【0195】
本実施形態では、これらの動作を1つのポーリングの実行命令、又は1つの繰り返しジャンプ命令に応答して行えるようにし、プログラム等による複雑な実行命令を不要にしている。これにより、コンパイラ等の開発環境を用いずに、アセンブラ言語によりソフトウェアを効率よく開発できる。
【0196】
また本実施形態では、ポーリング実行命令は、実行命令の種類を識別する識別情報と、ポーリング動作の終了条件を指定するポーリング終了条件指定部とを含み、ASIC1はポーリング動作で取得される情報を入力する入力端子を備える。これにより、入力端子レベルのポーリングを可能とし、シーケンサ100に直接接続する信号を使用して、シーケンサ100を制御できる。
【0197】
また本実施形態では、ポーリング実行命令は、実行命令の種類を識別する識別情報と、ポーリング動作の終了条件を指定するポーリング終了条件指定部と、ポーリング対象を示すポーリング対象データに対して論理演算するための命令付属データと、を含み、入力端子ポーリング命令実行部1111及びアドレス空間ポーリング命令実行部1112は、ASIC1に含まれるアドレス空間をリードしてポーリングする。これにより、流用モジュール11が割り込み信号を持っていない場合にも、割り込みフラグレジスタをポーリングすることで、割り込み機能と同等の動作を実現することができる。
【0198】
また本実施形態では、ポーリング終了条件指定部は、複数の論理演算種類のうちの1つを指定する論理演算指定データを含む。これにより、ポーリング終了条件を柔軟に設定することができる。
【0199】
また本実施形態では、ポーリング終了条件指定部は、ポーリング対象と命令付属データの全てのビットが一致すること、ポーリング対象と命令付属データの少なくとも1ビットが異なること、命令付属データの1に対応するビット位置にあるポーリング対象データの全てのビットが1であること、命令付属データの1に対応するビット位置にあるポーリング対象データの少なくとも1ビットが1であること、命令付属データの1に対応するビット位置にあるポーリング対象データの全てのビットが0であること、又は命令付属データの1に対応するビット位置にあるポーリング対象データの少なくとも1ビット0であること、の少なくとも1つを指定する。これにより、ポーリング終了条件を柔軟に設定することができる。
【0200】
また本実施形態では、繰り返しジャンプ実行命令は、実行命令の種類を識別する識別情報と、PC102におけるジャンプ先アドレスと、繰り返しジャンプ回数を指定する回数指定部とを含み、繰り返しジャンプ命令実行部1122は、繰り返しジャンプ回数だけの繰り返しジャンプを実行後、PC102に対して繰り返しジャンプ実行命令のデータサイズに対応した値を加算する。これにより、繰り返し回数を同一命令で設定することができる。
【0201】
また本実施形態では、繰り返しジャンプ実行命令は、実行命令の種類を識別する識別情報と、PC102におけるジャンプ先アドレスとを含み、繰り返しジャンプ命令実行部1122は、GR104から取得した繰り返しジャンプ回数分のジャンプの実行完了後、PC102に対して繰り返しジャンプ実行命令のデータサイズに対応した値を加算する。これにより、繰り返し回数を他のレジスタからリードした値で設定できる。
【0202】
また本実施形態では、繰り返しジャンプ実行命令は、実行命令の種類を識別する識別情報と、PC102におけるジャンプ先アドレスと、繰り返しジャンプ回数を指定する回数指定部と、繰り返しジャンプ回数の取得先を指定する取得先指定部とを含み、繰り返しジャンプ命令実行部1122は、繰り返しジャンプ回数の取得先から繰り返しジャンプ回数を取得する。これにより、繰り返し回数を、柔軟に設定することができる。
【0203】
また本実施形態では、メインCPU21及びサブCPU22と、DDRメモリ50と、を備え、DDRメモリ50におけるシーケンサ100のアクセス可能なアドレス範囲は、DDRメモリ50におけるメインCPU21及びサブCPU22のアクセス可能なアドレス範囲よりも狭い。これにより、シーケンサ100の回路規模を小さくすることができる。
【0204】
また本実施形態では、シーケンサ100とメインCPU21及びサブCPU22の間のデータ転送用のFIFO16を備える。これにより、シーケンサ100にアドレス演算機能がなくても、まとまった量のデータを転送することができ、演算機能の分だけシーケンサ100の回路規模を小さくすることができる。
【0205】
[その他の実施形態]
第1実施形態では、シーケンサ100を備えるASIC1をシステムの一例として説明したが、システムはASIC1に限定されるものではない。システムは、シーケンサ100、又はASIC1を備える装置であってもよい。この装置には、MFP(Multifunction Peripheral Product Printer)やPJ(Projector:プロジェクタ)、IWB(Interactive White Board:相互通信が可能な電子式の黒板機能を有する白板)、デジタルサイネージ等の出力装置、HUD(Head Up Display)装置、産業機械、撮像装置、集音装置、医療機器、ネットワーク家電、自動車(Connected Car)、ノートPC(Personal Computer)、携帯電話、スマートフォン、タブレット端末、ゲーム機、PDA(Personal Digital Assistant)、デジタルカメラ、ウェアラブルPCまたはデスクトップPC等が挙げられる。
【0206】
以上、実施形態を説明したが、本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【0207】
1 ASIC(システムの一例)
14 ROM(格納部の一例)
16 FIFO(先入れ先出し部の一例)
21 メインCPU(プロセッサの一例)
22 サブCPU(プロセッサの一例)
100 シーケンサ(プログラマブルシーケンサの一例)
101 メインステートマシン(状態制御部の一例)
102 PC(格納位置記憶部の一例)
104 GR(実行記憶部の一例)
1031 IR下位(命令記憶部の一例)
1032 IR上位(命令記憶部の一例)
1100 命令実行部
1111 入力端子ポーリング命令実行部(ポーリング実行部の一例)
1112 アドレス空間ポーリング命令実行部(ポーリング実行部の一例)
1122 繰り返しジャンプ命令実行部(繰り返しジャンプ実行部の一例)
【先行技術文献】
【特許文献】
【0208】
【文献】特開2007-233990号公報
【文献】特開2002-073120号公報
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15