(57)【要約】      （修正有）【課題】FPGAへのコンフィグレーション・エラーの監視、コンフィグレーション・データの保護を行う。【解決手段】回路情報を随時書換え可能なFPGAに対して、回路情報を記憶したコンフィグレーション用不揮発性メモリーを二重化して配置する。コンフィグレーション時に両不揮発性メモリーから読み出された値をビット比較することでコンフィグレーション・データの異常発生を監視する。コンフィグレーションに成功した場合、コンフィグレーション用不揮発性メモリーを再書込み(一種のリフレッシュ書込み)する。逆にコンフィグレーションに失敗した場合、コンフィグレーション用不揮発性メモリーの正誤判定を行い、正しい情報に更新する機能を有することで、恒久的に安定したコンフィグレーションを保障する。【選択図】図８
2019109764.tif 000002
【特許請求の範囲】
【請求項１】
回路情報を随時書換え可能なゲートアレイと、
前記ゲートアレイに展開する回路情報を記憶可能な第１コンフィグレーション用不揮発性メモリーと、
前記第１コンフィグレーション用不揮発性メモリーと同じデータを記憶した第２コンフィグレーション用不揮発性メモリーと、
前記第１コンフィグレーション用不揮発性メモリーと前記第２コンフィグレーション用不揮発性メモリーから読み出された回路情報をビット比較するための比較器と、
を備えたことを特徴とするコンフィグレーション装置。
【請求項２】
前記第１コンフィグレーション用不揮発性メモリーと前記第２コンフィグレーション用不揮発性メモリーに対してリード・ライト制御するためのコンフィグレーション機能を設けたことを特徴とする請求項１に記載のコンフィグレーション装置。
【請求項３】
前記ゲートアレイ内部にコンフィグレーションが正常完了したかを識別するための自己診断回路を設けたことを特徴とする請求項２に記載のコンフィグレーション装置。
【請求項４】
前記第１コンフィグレーション用不揮発性メモリーと前記第２コンフィグレーション用不揮発性メモリーに対してコンフィグレーション・データの書込み要求制御回路を設けたことを特徴とする請求項２又は３に記載のコンフィグレーション装置。
【請求項５】
前記第１コンフィグレーション用不揮発性メモリーと前記第２コンフィグレーション用不揮発性メモリーからの0リード観測器を設けたことを特徴とする請求項１乃至４のいずれか１項に記載のコンフィグレーション装置。
【請求項６】
請求項１乃至５のいずれか１項に記載のコンフィグレーション装置を備えたことを特徴とする画像読取装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンフィグレーション装置及びこのコンフィグレーション装置を備えた画像読取装置に関し、例えば、FPGA(Field Programmable Gate Array)を実装した画像読取装置を対象として、FPGAに展開するコンフィグレーション・データの監視およびコンフィグレーション・データの保護に関するものである。
【背景技術】
【０００２】
昨今の業務用スキャナーでは高機能・高付加価値のため回路規模の集積化が進んでいる。またコンシューマ向けのモバイルスキャナーを例に取ると、限られた小規模基板内で回路実装するため配線スペースが微細化され、CISセンサーやモーターICからのノイズの影響が顕著になってきた。
【０００３】
集積化と微細化が進む中、製品開発を短縮する手段のひとつとして設計とデバッグ効率の良さを活かしたFPGAを製品に実装するケースがある。FPGAとは、回路情報を随時書換可能なゲートアレイである。
【０００４】
回路情報はコンフィグレーションROMと呼ばれる外部記憶装置に保持しており、FPGAをマスタ、コンフィグレーションROM(以下コンフィグレーション用不揮発性メモリー)をスレーブとして、IICやSPI等のシリアルデータ通信によってFPGA上に展開される。
【０００５】
このようなシリアル通信は、複数デバイスを接続するためにオープンドレイン接続となるので、外因ノイズに弱い。例えばクロックライン上にノイズによる短パルスが生じた場合、このときの間違ったポジエッジにてデータを取り込み、その結果、意図しない回路がFPGA上に構成される恐れがある。
【０００６】
加えて、昨今のFPGAは大規模化が進み、コンフィグレーションに必要な時間は、数百msと長くなる傾向にあり、コンフィグレーション時の懸念事項となってきた。
【０００７】
一方、コンフィグレーション用不揮発性メモリーとしてFlashメモリーを搭載するケースが増えている。このFlashメモリーは、データ保持特性としての問題を抱えている。Flashメモリーは、20v程度の高電圧を加えることでフローティングゲート(電荷蓄積膜)に電子を蓄積/放電し、閾値電圧を変化させることで”1”および”0”を記憶する不揮発性メモリーである。
【０００８】
しかし、フローティングゲート内に蓄積された電子は、時間経過に伴い序々に放電され最終的には初期値”1”に戻る。その期間は、文献にもよるが短いもので5年〜10年と報告されている。データ保持期間を延長するための安価な方法としては、データ化けが発生する前に再書込み(一種のリフレッシュ)することである。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１０−６６９６１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
特許文献１に記載の方法では、タイマー機能によりコンフィグレーション完了時間を監視し期待時間と比較するので、1ビットのデータ化けは検出できない。またデータ転送クロックとタイマー機能のベースクロックが非同期であるため、本来の転送量に対して数十ビットの増減があってもエラーと識別することは困難である。
【００１１】
また最近では元々強いとされてきた中性子線でもソフトエラーが発生しデータ化けすることが報告されている。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、回路情報を随時書換え可能なFPGA部と、前記FPGA部に展開する回路情報を記憶可能な一つ目のコンフィグレーション用不揮発性メモリーと、前記一つ目のコンフィグレーション用不揮発性メモリーと同じデータを記憶した二つ目のコンフィグレーション用不揮発性メモリーと、前記一つ目のコンフィグレーション用不揮発性メモリーと前記二つ目のコンフィグレーション用不揮発性メモリーから出力された回路情報をビット比較するための比較器とを有した構成を特徴とする。
【００１３】
または、前記構成に加えて、前記一つ目のコンフィグレーション用不揮発性メモリーと前記二つ目のコンフィグレーション用不揮発性メモリーに対するリードあるいはライトを制御するコンフィグレーション制御部とを有した構成を特徴とする。
【００１４】
または、前記構成に加えて、前記FPGA内部でコンフィグレーションが正常終了したことを確認するための自己診断回路とを有することを特徴とする。
【００１５】
または、前記構成に加えて、前記一つ目のコンフィグレーション用不揮発性メモリーと前記二つ目のコンフィグレーション用不揮発性メモリーへのコンフィグレーション・データの書込み要求を受け付ける回路（書込み要求制御回路）とを有することを特徴とする。
【００１６】
または、前記構成に加えて、前記一つ目のコンフィグレーション用不揮発性メモリーと前記二つ目のコンフィグレーション用不揮発性メモリーへの”0”リード観測器（0リード観測器）と前記一つ目のコンフィグレーション用不揮発性メモリーと前記二つ目のコンフィグレーション用不揮発性メモリーの読出し周波数を制御するクロック発振制御器とを有することを特徴とする。
【発明の効果】
【００１７】
本発明によりFPGAのコンフィグレーション用不揮発性メモリーを二重化することで、コンフィグレーション時にビットレベルで比較し異常発生を監視することができる。チェックサムを用いた場合よりも検出精度は高くCRCのような演算も不要である。
【００１８】
またタイマー機能による間接的な監視ではないので精度的にも最適な監視方法といえる。回路構成としては、ふたつのコンフィグレーション用不揮発性メモリーから出力されたコンフィグレーション・データを、コンフィグレーション時の転送クロックに同期して比較する。既存の転送クロックを援用するのでソフトウェアのオーバーヘッド増加もない、安価でかつ小規模回路で実現可能である。
【００１９】
次にコンフィグレーションに成功した場合、コンフィグレーション用不揮発性メモリーを再書込み(一種のリフレッシュ書込み)する。逆にコンフィグレーションに失敗した場合、コンフィグレーション用不揮発性メモリーの正誤判定を行い、正しい情報に更新する機能を有することで、恒久的に安定したコンフィグレーションを保障する。
【図面の簡単な説明】
【００２０】
【図１】本実施形態に係る画像読取装置の模式図。
【図２】画像読取装置および画像読取装置に接続するＰＣの構成ブロック図。
【図３】実施例1の状態遷移図。
【図４】実施例１のブロック図。
【図５】実施例１の動作。
【図６】実施例１のフローチャート。
【図７】実施例２の状態遷移図。
【図８】実施例２のブロック図。
【図９】実施例２の動作(コンフィグレーション時)。
【図１０】実施例２の動作(正常完了時)。
【図１１】実施例２の動作(異常完了時)。
【図１２】実施例２のフローチャート。
【図１３】実施例３の状態遷移図。
【図１４】実施例４の状態遷移図。
【図１５】実施例４のブロック図。
【図１６】実施例４のフローチャート。
【図１７】実施例５の状態遷移図。
【図１８】実施例５のブロック図。
【図１９】実施例５の”0”リード可否判定部の動作原理。
【図２０】実施例５のフローチャート。
【発明を実施するための形態】
【００２１】
以下、本発明を実施の形態に基づいて詳細に説明する。
【００２２】
(実施例１)
図１は、本発明に係る画像読取装置１００の模式図である。以下、画像読取装置１００が備える各構成について説明する。
【００２３】
原稿台１０２は、読取対象となる原稿１０１を積載収納する。原稿台１０２上の原稿１０１は、給紙ローラー１０６によって１枚ずつ分離して搬送路１０８に送り出され、搬送ローラー１０７によって搬送路１０８に沿って搬送され、排出部１０３に排出される。排出部１０３は画像読取処理を終えた原稿１０１を積載収納する。
【００２４】
レジストセンサー１０９は搬送路１０８上を搬送される原稿１０１を検出する。レジストセンサー１０９が原稿１０１を検出すると、画像読取ユニット１０４で原稿１０１の読取りを開始する。
【００２５】
本実施形態の場合、画像読取ユニット１０４は２つ設けられており、一方が原稿１０１の表面を、他方が原稿１０１の裏面を読取る。もちろん、画像読取ユニット１０４を１つ設けて、原稿１０１の片面のみを読取る構成としてもよい。
【００２６】
各画像読取ユニット１０４に対向する位置には、対向面部材である背景板１０５がそれぞれ設けられている。背景板１０５は、例えば、黒色で非蛍光部材である。
【００２７】
次に、画像読取装置１００の制御系の構成について説明する。図２は、画像読取装置１００の制御系のブロック図及び画像読取装置１００に接続可能なＰＣ（パソコン）２００のブロック図である。
【００２８】
画像読取装置１００は、制御部１０を備える。制御部１０は、ＣＰＵ１１と、ＲＯＭ１２と、ＲＡＭ１３と、入出力Ｉ／Ｆ（インターフェース）１４と、通信Ｉ／Ｆ（インターフェース）１５と、を備える。
【００２９】
ＣＰＵ１１は、ＲＯＭ１２に記憶されたプログラムを実行し、画像読取装置１００全体の制御を行う。ＲＯＭ１２には、ＣＰＵ１１が実行するプログラムや固定的なデータが記憶される。
【００３０】
ＲＡＭ１３には、画像読取ユニット１０４が読取った画像データや、ＣＰＵ１１の演算結果といった可変データが記憶される。ＲＯＭ１２及びＲＡＭ１３は他の記憶手段でもよい。
【００３１】
入出力Ｉ／Ｆ１４には以下の構成が接続され、ＣＰＵ１１とデータの入出力が行われる。駆動回路２２は、給紙ローラー１０６、搬送ローラー１０７等を駆動するモーター２１をＣＰＵ１１の命令に従って駆動する。
【００３２】
センサー２３には、上述したレジストセンサー１０９や原稿１０１の搬送終了を検出する排出検出センサー等が含まれ、その検出結果をＣＰＵ１１は取得することができる。
【００３３】
駆動回路２４は、各画像読取ユニット１０４の一対の発光部１０４４をＣＰＵ１１の命令に従って駆動する。一対の発光部１０４４は、それぞれ独立して駆動される。また、駆動回路２４は、発光部１０４４の発光強度を可変にするもの（例えば、発光部１０４４への供給電力量を可変とするもの）である。
【００３４】
Ａ／Ｄ変換器２５及び画像処理回路２６は、各画像読取ユニット１０４の画像読取ユニット１０４毎に設けられる。Ａ／Ｄ変換器２５は、画像読取ユニット１０４が出力する、画像を示すアナログ画像信号をデジタル画像信号に変換する。
【００３５】
画像処理回路２６は、Ａ／Ｄ変換器２５が変換したデジタル画像信号に対して、シェーディング補正等の画像処理を行う。ＣＰＵ１１は、画像処理回路２６から出力される画像信号を取得することができる。
【００３６】
通信Ｉ／Ｆ１５には、ＰＣ２００が接続可能であり、これによりＣＰＵ１１はＰＣ２００と通信可能である。通信Ｉ／Ｆ１５は、ネットワークに接続するためのインターフェースであってもよい。
【００３７】
ＰＣ２００は、一般的なパソコンであり、制御部２１０を備える。制御部２１０は、ＣＰＵ２１１と、ＲＯＭ２１２と、ＲＡＭ２１３と、入出力Ｉ／Ｆ（インターフェース）２１４と、通信Ｉ／Ｆ（インターフェース）２１５と、ＨＤＤ（ハードディスクドライブ）２１６と、を備える。
【００３８】
ＣＰＵ２１１は、ＲＯＭ２１２やＨＤＤ２１６に記憶されたプログラムを実行する。ＨＤＤ２１６には、例えば画像読取装置１００用のドライバが記憶される。ＲＯＭ２１２及びＲＡＭ２１３及びＨＤＤ２１６は、他の記憶手段でもよい。入出力Ｉ／Ｆ２１４には、ディスプレイ２２１や、キーボード、マウスといった入力部２２２が接続される。通信Ｉ／Ｆ２１５は、画像読取装置１００が接続される。
【００３９】
次に、画像読取装置１００が実行する処理について説明する。画像読取装置１００は、例えば、ＰＣ２００を介して、ユーザーが読取り開始を指示した場合に原稿１０１の読取りを開始する。
【００４０】
ＣＰＵ１１は、まず給紙ローラー１０６を駆動して原稿１０１の搬送を開始する。レジストセンサー１０９によって原稿１０１が画像読取ユニット１０４に到達したことが検出されると、ＣＰＵ１１は、発光部１０４４の発光を開始すると共に、画像読取ユニット１０４を駆動して原稿１０１の画像を読取る。
【００４１】
図３にコンフィグレーション制御回路の状態遷移図を示す。リセット解除後は直ちに”初期状態”に遷移する。その後、ENABLE=1により”コンフィグレーション状態”に遷移する。次に、ERR=1によりコンフィグレーションエラー状態に遷移する。
【００４２】
図４は本実施形態であり、回路情報を随時書換可能なゲートアレイであるFPGA(Field Programmable Gate Array)３０１を中心にしたときのコンフィグレーション制御回路を示している。
【００４３】
また、本実施形態では、FPGA３０１と、コンフィグレーション用不揮発性メモリーを二重化したROM1(３０３)およびROM2(３０４)と、ROM1(３０３)およびROM2(３０４)から出力されたコンフィグレーション・データを比較する比較器３０５を有する。
【００４４】
なお、二重化したROM1(３０３)およびROM2(３０４)には同じコンフィグレーション・データが既に書き込まれている。本実施形態では、FPGA３０１を画像処理系統に組み込んだ例で説明しているが、本発明はこれに限定されるものではない。
【００４５】
そして、このようなコンフィグレーション制御回路は、第１コンフィグレーション用不揮発性メモリーとなるROM1(３０３)及び、第２コンフィグレーション用不揮発性メモリーとなるROM2（３０４）に対して、FPGA３０１を使って画像処理を行うときに使用するデータであるコンフィグレーション・データをリード・ライト制御するためのコンフィグレーション機能を実施するための回路となり得る。
【００４６】
FPGA３０１からは、出力信号として、コンフィグレーション時のデータ転送元を選択するCS信号、転送クロックSCL信号、転送入力データSDI信号を有する。
【００４７】
ROM1(３０３)およびROM2(３０４)からは、出力信号として、SDO1とSDO2を有する。
【００４８】
比較器305からは、出力信号として、FPGA３０１のコンフィグレーション時に必要なコンフィグレーション・データを転送するためのSDO信号、ふたつのコンフィグレーション・データSDO1とSDO2を比較し不一致だったときに外部に通知するためのERR信号、を発行する。
【００４９】
図５はFPGAのコンフィグレーションを行っているときのデータの流れ方(黒矢印)を示す。図３の”コンフィグレーション状態”に遷移したときの動作である。FPGA３０１からCS信号、SCL信号、SDI信号が発行されると、二重化したROM1(３０３)およびROM2(３０４)から同じタイミングでコンフィグレーション・データ(SDO1およびSDO2)を出力する。
【００５０】
コンフィグレーション・データ(SDO1およびSDO2)は、比較器３０５に入力される。比較器３０５ではデータ比較タイミングクロックSCLのタイミングでコンフィグレーション・データ(SDO1およびSDO2)をビット比較する。エラー発生時は、ERR信号を発行する。
【００５１】
この方法によりビット比較をROM内の全ビットに対して実施することができる。またコンフィグレーション中に平行してビット比較を行うため転送自体を阻害することもなく、比較結果がすぐに取得できるというメリットがある。更に予備の演算処理やソフトウェアの介在は不要であるため安価な実装が期待できる。
【００５２】
図６にフローチャートを示す。ステップS01は電源投入直後の状態であり、外部からの指示待ち状態である。ステップS02は、外部からの要求を受けてコンフィグレーション開始状態である。
【００５３】
外部からの要求としては、物理スイッチをはじめとしたハードウェア要求、ユーザーインタフェースを介したソフトウェア要求などである。ステップS03では、前記要求にうけてROM1(３０３)およびROM2(３０４)から読出しを行う。
【００５４】
ステップS04とステップS05とステップS06でROM1(３０３)およびROM2(３０４)から読み出されたビット情報を最終アドレスまで比較する。全ビットで異常が発生しなかった場合ステップS1８へ遷移する。ビット比較が誤った場合、ステップS１7に遷移する。
【００５５】
ステップS18に遷移するとFPGAに展開するコンフィグレーション・データの監視が正常に完了した状態となり、続いてスキャン実行可能な状態に移行する。
【００５６】
(実施例２)
図７にコンフィグレーション制御回路の状態遷移図を示す。リセット解除後は直ちに”初期状態”に遷移する。その後、ENABLE=1により”コンフィグレーション状態”に遷移する。
【００５７】
次に、ERR=1によりコンフィグレーションエラー状態に遷移し、MODE=1で”ROMデータ正誤判定待ち状態”に遷移する。この状態はエラーフラグの原因となったコンフィグレーション用不揮発性メモリーの特定を行う。
【００５８】
その後、コンフィグレーションに成功するとCONFIG=1となり続いて”データコピー状態”に遷移する。また”コンフィグレーション状態”からERRが発生せず正常にコンフィグレーションが完了した場合(CONFIG=1かつMODE=1)となると、”データコピー状態”に遷移する。
【００５９】
図８は実施例１の実施形態(図４)に対してコンフィグレーション時のデータの出力方向を制御するコンフィグレーション制御回路３０２を追加したものである。
【００６０】
FPGA３０１からは、出力信号として、コンフィグレーション時のデータ転送元を選択するCS信号、転送クロックSCL信号、転送入力データSDI信号およびコンフィグレーションが完了したことを示すCONFIG信号を有する。
【００６１】
なおCONFIG信号は、極性の設定に依存するが、説明のために、ここではLowレベルでコンフィグレーション未完了の状態となり、Highレベルでコンフィグレーション完了の状態になるとする。
【００６２】
CONFIG信号は、各種FPGAにて標準出力端子として実装されており、チェックサムを用いてコンフィグレーション・データをチェックする機能を有している。異常がない場合は、CONFIG信号が発行される。
【００６３】
コンフィグレーション制御回路３０２からは、出力信号として、ROM1(３０３)用およびROM2(３０４)用にコンフィグレーション時のデータ転送元を選択するCS信号、転送クロックSCL信号、転送入力データSDI信号を有する。それぞれ１と２のサフィックスで区別する。
【００６４】
その他に動作モードを識別するMODE信号、データ比較タイミングクロックSCLを有する。なおMODE信号は、Lowレベルでbit比較が有効な状態となり、Highレベルでbit比較が無効な状態となる。
【００６５】
ROM1(３０３)およびROM2(３０４)からは、出力信号として、SDO1とSDO2を有する。
【００６６】
比較器305からは、出力信号として、FPGA３０１のコンフィグレーション時に必要なコンフィグレーション・データを転送するためのSDO信号、ふたつのコンフィグレーション・データSDO1とSDO2を比較し不一致だったときに外部に通知するためのERR信号、ROM1(３０３)およびROM2(３０４)間のデータコピー時に必要なコンフィグレーション・データを転送するためのSDO_REG信号、を有する。なおERR信号は、コンフィグレーション制御回路302にも出力する。
【００６７】
図９はFPGAのコンフィグレーションを行っているときのデータの流れ方(黒矢印)を示す。図７の”コンフィグレーション状態”に遷移したときの動作である。FPGA３０１からCS信号、SCL信号、SDI信号が発行されると、コンフィグレーション制御回路内で、CS1とCS2を同じタイミング、SCL1とSCL2を同じタイミング、SDI1とSDI2を同じタイミングで出力する。
【００６８】
また比較器３０５のためにMODE信号(コンフィグレーション中なのでLowレベル)とデータ比較タイミングクロックSCLを出力する。その後、二重化したROM1(３０３)およびROM2(３０４)から同じタイミングでコンフィグレーション・データ(SDO1およびSDO2)を出力する。
【００６９】
コンフィグレーション・データ(SDO1およびSDO2)は、比較器３０５に入力される。MODE信号がLowでコンフィグレーション中にあるとき、比較器３０５ではデータ比較タイミングクロックSCLのタイミングでコンフィグレーション・データ(SDO1およびSDO2)をビット比較する。エラー発生時は、ERR信号を発行する。
【００７０】
この方法によりビット比較をROM内の全ビットに対して実施することができる。またコンフィグレーション中に平行してビット比較を行うため転送自体を阻害することもなく、比較結果がすぐに取得できるというメリットがある。更に予備の演算処理やソフトウェアの介在は不要であるため安価な実装が期待できる。
【００７１】
図１０はERR信号が発行されなかった場合(コンフィグレーションが正常完了した場合)のデータの流れ方(黒矢印と（１）、（２）番号)を示す。図７の”データコピー状態”に遷移したときの動作である。本状態では、FPGA３０１からのCONFIG信号がHighの状態であり、ROM1(３０３)およびROM2(３０４)のコンフィグレーション・データはふたつとも正しい状態となる。
【００７２】
ROM1(３０３)からROM2(３０４)にデータをコピーする場合、コンフィグレーション制御回路302から、CS1、SCL1、SDI1を入力し、SDO1に読み出し後(（１）読み出し)、比較器３０５内でSDO_REGに出力を選択する。その後、コンフィグレーション制御回路３０２でSDI2を介してROM2(３０４)に書き込む(（１）書込み)。
【００７３】
ROM2(３０４)からROM1(３０３)にデータをコピーする場合、コンフィグレーション制御回路302から、CS2、SCL2、SDI2を入力し、SDO2に読み出し後(（２）読み出し)、比較器３０５内でSDO_REGに出力を選択する。その後、コンフィグレーション制御回路３０２でSDI1を介してROM1(３０３)に書き込む(（２）書込み)。定期的なFlashメモリーのリフレッシュ書込みによりビット化けを低減する。
【００７４】
図１１はERR信号が発行された場合(コンフィグレーションが異常完了した場合)のデータの流れ方(黒矢印)を示す。図７の”コンフィグレーションエラー状態”に遷移したときの動作である。
【００７５】
FPGA本状態では、FPGA３０１からのCONFIG信号がLowの状態であり、ROM1(３０３)およびROM2(３０４)のコンフィグレーション・データはいずれかが正しい状態となる。そのため、ROM1(３０３)あるいはROM2(３０４)からそれぞれコンフィグレーションを行い、FPGA３０１から出力されたCONFIG信号がHighとなるコンフィグレーション用不揮発性メモリーを特定する必要がある。
【００７６】
なお、上述したとおり、CONFIG信号は、各種FPGAにて標準出力端子として実装されており、チェックサムを用いてコンフィグレーション・データをチェックする機能を有している。異常がない場合は、CONFIG信号がHighにセットされる。この機能を利用してROM1(３０３)およびROM2(３０４)の正誤判定を行うことが可能である。
【００７７】
ROM1(３０３)のデータが正誤を判定するため、コンフィグレーション制御回路302から、CS1信号、SCL1信号、SDI1信号を入力し、SDO1信号に読み出し後、比較器３０５内でSDO_REG信号に出力し、FPGA３０１に書き込む。正しい場合、FPGA３０１のCONFIG信号がHighとなり、誤りの場合はLowを維持する。
【００７８】
ROM2(３０４)のデータが正誤を判定するため、コンフィグレーション制御回路302から、CS2信号、SCL2信号、SDI2信号を入力し、SDO2信号に読み出し後、比較器３０５内でSDO_REG信号に出力し、FPGA３０１に書き込む。正しい場合、FPGA３０１のCONFIG信号がHighとなり、誤りの場合はLowを維持する。いずれか一方が成立するため、最終的にCONFIG信号はHighとなる。
【００７９】
ROM1(３０３)およびROM2(３０４)の正誤判定の結果、ROM1(３０３)が正しい場合、図１０に示した（１）の方法でROM1(３０3)のコンフィグレーション・データをROM2(３０４)にデータコピーする。逆にROM2(３０4)が正しい場合、図１０に示した（２）の方法でROM2(３０４)のコンフィグレーション・データをROM1(３０３)にデータコピーする。
【００８０】
図１２にフローチャートを示す。ステップS01は電源投入直後の状態であり、外部からの指示待ち状態である。ステップS02は、外部からの要求を受けてコンフィグレーション開始状態である。外部からの要求としては、物理スイッチをはじめとしたハードウェア要求、ユーザーインタフェースを介したソフトウェア要求などである。
【００８１】
ステップS03では、前記要求にうけてROM1(３０３)およびROM2(３０４)から読出しを行う。ステップS04とステップS05とステップS06でROM1(３０３)およびROM2(３０４)から読み出されたビット情報を最終アドレスまで比較する。全ビットで異常が発生しなかった場合、ステップS11へ遷移する。ビット比較が誤った場合、ステップS07に遷移する。
【００８２】
ステップS11では、ROM1(３０３)およびROM2(３０４)の両ROMのデータコピーである。コピー前後で同じ値を書き込むことになるため一種のリフレッシュ再書込みと同じである。データコピー完了後、ステップS12に遷移する。
【００８３】
ステップS07およびステップS08で、ROM1(３０３)のメモリー情報の正誤判定を行う。ROM1(３０３)が正しい場合、ROM2(３０４)が誤りを含むことになるため、引き続いてステップS13およびステップS14でROM1(３０３)からROM2(３０４)へデータコピーする。
【００８４】
ステップS08でROM1(３０３)に誤りを含む場合、ステップS9でROM2(３０４)のメモリー情報の正誤判定を行う。ROM2(３０４)が正しい場合、引き続いてステップS15およびステップS16でROM2(３０４)からROM1(３０３)へデータコピーする。ステップS10でROM2(３０４)が誤りを含む場合、ステップS17でユーザーに向けて異常通知を行う。
【００８５】
ステップS12、ステップS14、ステップS16のいずれかが実行されると、ステップS18のFPGAに展開するコンフィグレーション・データの監視およびコンフィグレーション・データの保護が正常に完了した状態となり、続いてスキャン実行可能な状態に移行する。
【００８６】
(実施例３)
本実施例は、図７の状態遷移図における”データ正誤判定待ち”を実現する手段のひとつである。
【００８７】
図１３は実施例２の実施形態(図８)に対してFPGA３０１の内部に自己診断回路４０２を実装する。またコンフィグレーション制御回路３０２の内部にパターン発生器４０１と判定回路４０３を実装する。すなわち、本実施例では、ゲートアレイであるFPGA３０１の内部にコンフィグレーションが正常完了したかを識別するための自己診断回路４０２を設けている。
【００８８】
パターン発生器４０１は、自己診断回路４０２に対して演算パターンを伝えるためのCALC信号と、判定回路４０３に対して演算結果を要求するREQ信号を有する。自己診断回路４０２は、CALC信号から得たデータを自己診断回路で演算し、その結果をANSWER信号に出力する。判定回路４０３内部には、自己診断回路４０２の同じ演算器が予め実装されており、ANSWER信号とREQ信号で演算結果の正誤を判定する。
【００８９】
同種の機能として、前述したCONFIG信号と併用することでコンフィグレーション終了時の判定精度を高めることができる。
【００９０】
実施例２のフローチャート（図１２）においては、ステップS08、ステップS10の分岐条件の精度向上に相当する。
【００９１】
図１４に状態遷移図を示す。図７の状態遷移図に”スキャン実行”状態と、”ユーザー書込み要求”状態を加えたものである。”スキャン実行”状態とは、コンフィグレーションが完了してユーザーによる原稿読取操作が可能な状態である。
【００９２】
”ユーザー書込み要求”状態とは、ユーザーによる原稿読取操作が可能な状態で、ユーザーが読み取った画像を見て正しい読取が行われたと判断できたときに、ユーザー要求によって遷移できる状態である。本状態では、ROM1(３０３)およびROM2(３０４)に書き込まれた情報を再書込みする。
【００９３】
図１５は実施例２の実施形態(図８)に対して書込み要求回路５０１を実装する。書込み要求回路５０１は、ユーザー要求としてWR_IRQ信号と、コンフィグレーション制御回路３０２に対するライト要求としてWR_REQ信号を有する。
【００９４】
図１６にフローチャートを示す。実施例２のフローチャート(図１２)に対して、ステップS19、ステップS20、ステップS21を加えたものである。ステップS19でユーザー割込み要求が発生した場合、ステップS20、ステップS21に遷移しROM1(３０３)およびROM2(３０４)に書き込まれた情報を再書込みする。
【００９５】
なお、ステップS11からステップS16の各工程のデータコピーは、ステップS20、ステップS21の各データコピーは同じ内容であるため、ステップS11からステップS16の工程を省くことも可能である。
【００９６】
(実施例５)
図１７に状態遷移図を示す。図７の状態遷移図に”スキャン実行”状態と、”0リード可否判定”状態を加えたものである。”スキャン実行”状態とは、コンフィグレーションが完了してユーザーによる原稿読取操作が可能な状態である。” 0リード可否判定”状態とは、ROM1(３０３)およびROM2(３０４)に書き込まれたコンフィグレーション・データから”0”データをリードすることで、Flashメモリーにおける閾値電圧の経時劣化を判定する。
【００９７】
図１８は実施例２の実施形態(図８)に対して”0”リード可否判定部６０１（リード観測器）を実装する。”0”リード可否判定部６０１は、ユーザー要求としてMEAS_IRQ信号と、コンフィグレーション制御回路３０２への出力であるMEAS_SCL信号とが入出力される。MEAS_SCL信号は、コンフィグレーション制御回路３０２内でROM1(３０３)およびROM2(３０４)に対するSCL1とSCL2を生成する。
【００９８】
図１９に”0”リード可否判定部６０１の動作原理を示す。図１９(Ａ)にFlashメモリーの読出し回路、図１９(Ｂ)に”0”リード閾値電圧の経時変化、図１９(Ｃ)および(Ｄ)に読み出し周波数の違いによる”0”データの読出し誤り波形をそれぞれ示す。
【００９９】
Flashメモリーの読出し回路は、word線とbit線の交差点に配置されたメモリーセルと読出し時の信号を増幅するセンスアンプより構成される。フローティングゲートと呼ぶ電荷蓄積膜に電子がディスチャージされた状態を”1”データ、逆に電子がチャージされた状態を”0”データと定義している。
【０１００】
フローティングゲートの電荷量は、メモリーセルの閾値電圧に変化を与える。電子がチャージされると、閾値電圧はプラスとなるためメモリーセルのId電流は流れない。逆に電子がディスチャージされると閾値電圧がマイナスとなるためメモリーセルのId電流が流れる。ただし、チャージされた電子は、時間経過に伴って次第に放電される。
【０１０１】
従って、”0”を書き込んだときの閾値電圧(プラス)は、次第に左側にシフトしマイナスとなり、”1”データに化ける。
【０１０２】
“0”リードを通常周波数で実施したときの動作を示す。読出し開始直後にHighレベルのbit線電位は、メモリーセルの閾値電圧が左側(マイナス方向)にあるほどより速く低下する。僅かに左側にシフトしただけでは、低下したbit線電位はセンスアンプによりHigh側に戻すことができるが、左側に大きくシフトするほどbit線電位が速く低下するので”0”データは”1”と誤ってリードする。
【０１０３】
上記動作を通常よりも低い周波数で実施したときの動作を示す。基本的な動作は上述したとおりであるが、周波数が低くなるのでリードサイクルが長くなる。その結果、bit線電位はより下がるためリードサイクルが完了時に誤リードになりやすい。誤リードは、リード周波数が低いほど、あるいは経時による閾値電圧のシフト量が大きいほど発生しやすくなる。
【０１０４】
上記現象を応用して、”0”リード可否判定部６０１では、通常のコンフィグレーションを実施する周波数よりも、敢えて低い周波数でROM1(３０３)およびROM2(３０４)からリードし、”0”データが正しく読めることを確認する。低い周波数で誤リードした場合、経時による閾値電圧のシフトが進んでいると考えられ、そのまま放置すると、やがて通常周波数でも誤リードに至る。
【０１０５】
低い周波数で誤リードした場合、通常のコンフィグレーション時よりも高い周波数でコンフィグレーション・データを正しくリードし、ROM1(３０３)およびROM2(３０４)に対して、リフレッシュのための再書込みを行うことでコンフィグレーション・データを保護する。
【０１０６】
図２０にフローチャートを示す。実施例２のフローチャート(図１２)に対して、ステップS22、ステップS23、ステップS24、ステップS25、ステップS26、ステップS27を加えたものである。ステップS22でユーザー割込み要求が発生した場合、ステップS23に遷移しROM1(３０３)およびROM2(３０４)に書き込まれたデータの”0”リードを確認する。
【０１０７】
”0”リードを正しくリードできた場合は、次スキャンに遷移する。”0”リードが正しくリードできない場合は、ステップS25に遷移し、リードクロックを上げることで正しいデータを読み出す。その後、ステップS26およびステップS27にてROM1(３０３)およびROM2(３０４)にリフレッシュのための再書込みを行うことでコンフィグレーション・データの保護を保護する。
【０１０８】
なお、ステップS11からステップS16の各工程のデータコピーは、ステップS20、ステップS21の各データコピーは同じ内容であるため、ステップS11からステップS16の工程を省くことも可能である。
【符号の説明】
【０１０９】
１００  画像読取装置
１０１  原稿
１０２  原稿台
１０３  排出部
１０４  画像読取ユニット
１０５  背景板
１０６  給紙ローラー
１０７  搬送ローラー
１０８  搬送路
１０９  レジストセンサー
１０  画像読取装置制御部
１１  ＣＰＵ
１２  ＲＯＭ
１３  ＲＡＭ
１４  入出力Ｉ／Ｆ
１５  通信Ｉ／Ｆ
２１  モーター
２２  モーター駆動回路
２３  センサー
２４  発光部駆動回路
２５  Ａ／Ｄ変換器
２６  画像処理回路
２００  ＰＣ
２１１  ＣＰＵ
２１２  ＲＯＭ
２１３  ＲＡＭ
２１４  入出力Ｉ／Ｆ
２１５  通信Ｉ／Ｆ
２１６  ＨＤＤ
２２１  ディスプレイ
２２２  入力部
３０１  FPGA
３０２  コンフィグレーション制御回路
３０３  コンフィグレーション用ROM(第１コンフィグレーション用不揮発性メモリー)
３０４  コンフィグレーション用ROM(第２コンフィグレーション用不揮発性メモリー)
３０５  比較器
４０１  パターン発生器
４０２  自己診断回路
４０３  判定回路
５０１  書込み要求回路
６０１  “0”リード観測器
【図１】
2019109764.tif 000003
【図２】
2019109764.tif 000004
【図３】
2019109764.tif 000005
【図４】
2019109764.tif 000006
【図５】
2019109764.tif 000007
【図６】
2019109764.tif 000008
【図７】
2019109764.tif 000009
【図８】
2019109764.tif 000010
【図９】
2019109764.tif 000011
【図１０】
2019109764.tif 000012
【図１１】
2019109764.tif 000013
【図１２】
2019109764.tif 000014
【図１３】
2019109764.tif 000015
【図１４】
2019109764.tif 000016
【図１５】
2019109764.tif 000017
【図１６】
2019109764.tif 000018
【図１７】
2019109764.tif 000019
【図１８】
2019109764.tif 000020
【図１９】
2019109764.tif 000021
【図２０】
2019109764.tif 000022