(第1実施形態)
図1は本発明の第1実施形態のデータ受信回路40を回路モジュール1_0に搭載した状態を示す回路図である。本発明の第1実施形態のデータ受信回路40は、図29に示す従来のデータ受信回路25、36の代わりに使用されるものであり、回路モジュール1_1にも搭載される。
なお、回路モジュール1_0が送信するリクエスト信号req0、アクナレッジ信号ack0、データ信号data0_00〜data0_63及び回路モジュール1_1が送信するリクエスト信号req1、データ信号data1_01〜data1_62は、図示を省略している。
本発明の第1実施形態のデータ受信回路40において、41はシステムクロックsck0を反転して反転システムクロックsck0xを出力するインバータであり、システムクロックsck0を生成するシステムクロック生成回路は、図29に示すシステムクロック生成回路18と同様に構成しており、図示を省略している。また、回路モジュール1_1が送信するリクエスト信号req1を受信する部分も、従来同様に構成しており、図示を省略している。
42は入力端子8を介して入力した回路モジュール1_1からのアクナレッジ信号ack1を遅延して、入力端子9_00〜9_63を介して入力したデータ信号data1_00〜data1_63中の最も遅れているデータ信号に対して、位相が同一又は遅れているアクナレッジ信号ack1dを出力する遅延回路であり、遅延値を固定とするものである。
遅延回路42の遅延値は、システムクロックsck0、sck1間のスキュー、及び、データ信号data1_00〜data1_63中の最も早く送信されるデータ信号(位相が最も進んでいるデータ信号)と最も遅く送信されるデータ信号(位相が最も遅れているデータ信号)間のスキューを計算し、アクナレッジ信号ack1dの位相がデータ信号data1_00〜data1_63中の最も遅れているデータ信号に対して同一又は遅れているようにするために必要な最小限の値とされる。
43は遅延回路42が出力するアクナレッジ信号ack1dをシステムクロックsck0の立ち上がりエッジに同期してラッチするDフリップフロップ、ack1dzはDフリップフロップ43が出力するアクナレッジ信号である。44は遅延回路42が出力するアクナレッジ信号ack1dを反転システムクロックsck0xの立ち上がりエッジに同期してラッチするDフリップフロップ、ack1dxはDフリップフロップ44が出力するアクナレッジ信号である。
45_00zは入力端子9_00を介して入力した回路モジュール1_1からのデータ信号data1_00をシステムクロックsck0の立ち上がりエッジに同期してラッチするDフリップフロップ、data1_00zはDフリップフロップ45_00zが出力するデータ信号である。45_00xは入力端子9_00を介して入力した回路モジュール1_1からのデータ信号data1_00を反転システムクロックsck0xの立ち上がりエッジに同期してラッチするDフリップフロップ、data1_00xはDフリップフロップ45_00xが出力するデータ信号である。
45_63zは入力端子9_63を介して入力した回路モジュール1_1からのデータ信号data1_63をシステムクロックsck0の立ち上がりエッジに同期してラッチするDフリップフロップ、data1_63zはDフリップフロップ45_63zが出力するデータ信号である。45_63xは入力端子9_63を介して入力した回路モジュール1_1からのデータ信号data1_63を反転システムクロックsck0xの立ち上がりエッジに同期してラッチするDフリップフロップ、data1_63xはDフリップフロップ45_63xが出力するデータ信号である。
なお、回路モジュール1_1からのデータ信号data1_01〜data1_62をシステムクロックsck0の立ち上がりエッジに同期してラッチするDフリップフロップ45_01z〜45_62z及びDフリップフロップ45_01z〜45_62zが出力するデータ信号data1_01z〜data1_62zは、図示を省略している。同じくデータ信号data1_01〜data1_62を反転システムクロックsck0xの立ち上がりエッジに同期してラッチするDフリップフロップ45_01x〜45_62x及びDフリップフロップ45_01x〜45_62xが出力するデータ信号data1_01x〜data1_62xは、図示を省略している。
46はDフリップフロップ43が出力するアクナレッジ信号ack1dzとDフリップフロップ44が出力するアクナレッジ信号ack1dxを入力し、アクナレッジ信号ack1dz、ack1dxのうち、どちらのアクナレッジ信号の立ち上がり遷移が早いか、即ち、遅延回路42が出力するアクナレッジ信号ack1dをDフリップフロップ43、44のどちらが先にラッチしたかを検知して検知信号syを出力する検知回路である。
検知回路46は、z端子にアクナレッジ信号ack1dzを入力し、x端子にアクナレッジ信号ack1dxを入力し、y端子に検知信号syを出力する。検知信号syは、初期状態では高電位(以下、“H”と記す。)とされ、その後、Dフリップフロップ44が先にアクナレッジ信号ack1dをラッチした場合には“H”を維持し、Dフリップフロップ43が先にアクナレッジ信号ack1dzをラッチした場合には後述する所定期間低電位(以下、“L”と記す。)とされる。
47はアクナレッジ信号ack1dz又はack1dxを選択するセレクタであり、検知信号syが選択制御信号として与えられ、検知信号syのレベル=“L”の場合には、アクナレッジ信号ack1dzを選択し、検知信号syのレベル=“H”の場合には、アクナレッジ信号ack1dxを選択するものである。ac1はセレクタ47が出力するアクナレッジ信号である。
48_00はデータ信号data1_00z又はdata1_00xを選択するセレクタであり、検知信号syが選択制御信号として与えられ、検知信号syのレベル=“L”の場合には、データ信号data1_00zを選択し、検知信号syのレベル=“H”の場合には、データ信号data1_00xを選択するものである。da1_00はセレクタ48_00が出力するデータ信号である。
48_63はデータ信号data1_63z又はdata1_63xを選択するセレクタであり、検知信号syが選択制御信号として与えられ、検知信号syのレベル=“L”の場合には、データ信号data1_63zを選択し、検知信号syのレベル=“H”の場合には、データ信号data1_63xを選択するものである。da1_63はセレクタ48_63が出力するデータ信号である。
なお、図示しないデータ信号data1_01z、data1_01x〜data1_62z、data1_62xに対応してセレクタ48_00、48_63と同様のセレクタ48_01〜48_62を設けているが、これらセレクタ48_01〜48_62は、図示を省略している。
49はセレクタ47が出力するアクナレッジ信号ac1をシステムクロックsck0の立ち上がりエッジに同期してラッチするDフリップフロップであり、Dフリップフロップ49が出力するアクナレッジ信号a1が回路モジュール1_1からのアクナレッジ信号ack1の受信信号として内部回路に転送される。
50_00はセレクタ48_00が出力するデータ信号da1_00をシステムクロックsck0の立ち上がりエッジに同期してラッチするDフリップフロップであり、Dフリップフロップ50_00が出力するデータ信号d1_00が回路モジュール1_1からのデータ信号data1_00の受信信号として内部回路に転送される。
50_63はセレクタ48_63が出力するデータ信号da1_63をシステムクロックsck0の立ち上がりエッジに同期してラッチするDフリップフロップであり、Dフリップフロップ50_63が出力するデータ信号d1_63が回路モジュール1_1からのデータ信号data1_63の受信信号として内部回路に転送される。
なお、図示しないセレクタ48_01〜48_62が出力するデータ信号da1_01〜da1_62をシステムクロックsck0の立ち上がりエッジに同期してラッチするDフリップフロップ50_01〜50_62及びDフリップフロップ50_01〜50_62が出力するデータ信号d1_01〜d1_62は、図示を省略している。
図2は検知回路46の構成を示す回路図である。図2中、52はDフリップフロップ44が出力するアクナレッジ信号ack1dxを入力するための入力バッファ、53はDフリップフロップ43が出力するアクナレッジ信号ack1dzを入力するための入力バッファである。
54は入力バッファ52の出力s1に対応して設けられた伝送ゲートであり、55はPチャネルMOSトランジスタ、56はNチャネルMOSトランジスタである。57は伝送ゲート54のオン、オフを制御する伝送ゲート制御回路であり、58はAND回路、59〜61はNOR回路である。
AND回路58は、一方の入力端子を入力バッファ52の出力端子に接続し、他方の入力端子を入力バッファ53の出力端子に接続している。NOR回路59も、一方の入力端子を入力バッファ52の出力端子に接続し、他方の入力端子を入力バッファ53の出力端子に接続している。
NOR回路60は、一方の入力端子をAND回路58の出力端子に接続し、他方の入力端子をNOR回路61の出力端子に接続し、出力端子をNチャネルMOSトランジスタ56のゲートに接続している。NOR回路61は、一方の入力端子をNOR回路59の出力端子に接続し、他方の入力端子をNOR回路60の出力端子に接続し、出力端子をPチャネルMOSトランジスタ55のゲートに接続している。
62は伝送ゲート54の出力をラッチするラッチ部であり、63、64はインバータである。インバータ63、64はリング接続され、インバータ63の入力端子とインバータ64の出力端子の接続点はノード65に接続されている。
66は遷移検知部であり、67、68はNAND回路である。NAND回路67は、一方の入力端子を入力バッファ53の出力端子に接続し、他方の入力端子をNAND回路68の出力端子に接続している。NAND回路68は、一方の入力端子をノード65に接続し、他方の入力端子をNAND回路67の出力端子に接続している。69は出力バッファであり、入力端子をNAND回路67の出力端子に接続し、出力端子に検知信号syを出力するように構成されている。
図3及び図4は検知回路46の動作例を示す波形図であり、(A)はアクナレッジ信号ack1dx(入力バッファ52の出力s1)、(B)はアクナレッジ信号ack1dz(入力バッファ53の出力s2)、(C)はAND回路58の出力s4、(D)はNOR回路59の出力s5、(E)はNOR回路61の出力s6、(F)はNOR回路60の出力s7、(G)はノード65のレベルv8、(H)はAND回路68の出力s9、(I)は検知信号sy(NAND回路67の出力s3)を示している。
図3は検知回路46の第1動作例を示しており、遅延回路42が出力するアクナレッジ信号ack1dをDフリップフロップ44が先にラッチした場合、即ち、アクナレッジ信号ack1dxの立ち上がり遷移がアクナレッジ信号ack1dzの立ち上がり遷移よりも早い場合を示している。
本例の場合、初期状態では、アクナレッジ信号ack1のレベル=“L”とされる。この結果、アクナレッジ信号ack1dx、ack1dzのレベル=“L”、入力バッファ52の出力s1のレベル=“L”、入力バッファ53の出力s2のレベル=“L”、NAND回路67の出力s3のレベル=“H”、検知信号syのレベル=“H”となる。
また、AND回路58の出力s4のレベル=“L”、NOR回路59の出力s5のレベル=“L”、NOR回路61の出力s6のレベル=“L”、NOR回路60の出力s7のレベル=“H”となり、伝送ゲート54はオン状態となる。この結果、ノード65のレベルv8=“L”、NAND回路68の出力s9のレベル=“H”となる。
この状態から、時刻t1で、Dフリップフロップ44がアクナレッジ信号ack1dを先に取込み、アクナレッジ信号ack1dxが“H”に立ち上がったとしても、アクナレッジ信号ack1dzのレベルは“L”に維持されるので、入力バッファ53の出力s2のレベル=“L”、NAND回路67の出力s3のレベル=“H”、検知信号syのレベル=“H”の状態が維持される。
また、この場合、NOR回路59の出力s5のレベル=“L”となるが、AND回路58の出力s4のレベル=“L”、NOR回路60の出力s7のレベル=“H”、NOR回路61の出力s6のレベル=“L”の状態が維持されるので、伝送ゲート54はオン状態を維持する。この結果、ノード65のレベルv8=“H”、NAND回路68の出力s9のレベル=“L”となる。
その後、時刻t2で、アクナレッジ信号ack1dzが“H”に立ち上がると、入力バッファ53の出力s2のレベル=“H”、AND回路58の出力s4のレベル=“H”、NOR回路60の出力s7のレベル=“L”、NOR回路61の出力s6のレベル=“H”となり、伝送ゲート54はオフ状態となる。この場合、ノード65のレベルv8=“H”、NAND回路68の出力s9のレベル=“L”、NAND回路67の出力s3のレベル=“H”、検知信号syのレベル=“H”の状態が維持される。
その後、時刻t3で、アクナレッジ信号ack1dxが“L”に立ち下がると、入力バッファ52の出力s1のレベル=“L”、AND回路58の出力s4のレベル=“L”となるが、NOR回路59の出力s5のレベル=“L”、NOR回路60の出力s7のレベル=“L”、NOR回路61の出力s6のレベル=“H”の状態が維持され、伝送ゲート54はオフ状態を維持する。この結果、ノード65のレベルv8=“H”、NAND回路68の出力s9のレベル=“L”、NAND回路67の出力s3のレベル=“H”、検知信号syのレベル=“H”の状態が維持される。
その後、時刻t4で、アクナレッジ信号ack1dzが“L”に立ち下がると、入力バッファ53の出力s2のレベル=L“、NOR回路59の出力s5のレベル=“H”、NOR回路61の出力s6のレベル=“L”、NOR回路60の出力s7のレベル=“H”となり、伝送ゲート54はオン状態となる。この結果、ノード65のレベルv8=“L”、NAND回路68の出力s9のレベル=“H”となるが、入力バッファ53の出力s2のレベル=“L”であるから、NAND回路67の出力s3のレベル=“H”、検知信号syのレベル=“H”の状態が維持される。
このように、遅延回路42が出力するアクナレッジ信号ack1dをDフリップフロップ44が先にラッチした場合、即ち、アクナレッジ信号ack1dxの立ち上がり遷移がアクナレッジ信号ack1dzの立ち上がり遷移よりも早い場合には、検知信号syのレベル=“H”の状態が維持されることになる。
図4は検知回路46の第2動作例を示しており、遅延回路42が出力するアクナレッジ信号ack1dをDフリップフロップ43が先にラッチした場合、即ち、アクナレッジ信号ack1dzの立ち上がり遷移がアクナレッジ信号ack1dxの立ち上がり遷移よりも早い場合である。
初期状態では、前述したように、アクナレッジ信号ack1のレベル=“L”とされ、この結果、アクナレッジ信号ack1dx、ack1dzのレベル=“L”、入力バッファ52の出力s1のレベル=“L”、入力バッファ53の出力s2のレベル=“L”、NAND回路67の出力s3のレベル=“H”、検知信号syのレベル=“H”となる。
また、AND回路58の出力s4のレベル=“L”、NOR回路59の出力s5のレベル=“H”、NOR回路61の出力s6のレベル=“L”、NOR回路60の出力s7のレベル=“H”となり、伝送ゲート54はオン状態となる。この結果、ノード65のレベルv8=“L”、NAND回路68の出力s9のレベル=“H”となる。
この状態から、時刻t1で、Dフリップフロップ43がアクナレッジ信号ack1dを先に取込み、アクナレッジ信号ack1dzが“H”に立ち上がると、入力バッファ52の出力s2のレベル=“H”、NOR回路59の出力s5のレベル=“L”となるが、AND回路58の出力s4のレベル=“L”、NOR回路60の出力s7のレベル=“H”、NOR回路61の出力s6のレベル=“L”の状態が維持されるので、伝送ゲート54はオン状態を維持する。
この結果、ノード65のレベルv8=“L”、NAND回路68の出力s9のレベル=“H”が維持されるが、入力バッファ53の出力s2のレベル=“H”となるので、NAND回路67の出力s9のレベル=“L”、検知信号syのレベル=“L”となる。
その後、時刻t2で、アクナレッジ信号ack1dxが“H”に立ち上がると、入力バッファ52の出力s1のレベル=“H”、AND回路58の出力s4のレベル=“H”、NOR回路60の出力s7のレベル=“L”、NOR回路61の出力s6のレベル=“H”となり、伝送ゲート54はオフ状態となる。
この場合、入力バッファ52の出力s1の“H”への遷移と、伝送ゲート54がオフ状態になるタイミングが同時のため、ノード65のレベルv8は不定となる。しかし、NAND回路68の出力s9のレベル=“H”、NAND回路67の出力s3のレベル=“L”、検知信号syのレベル=“L”の状態が維持される。
その後、時刻t3で、アクナレッジ信号ack1dzが“L”に立ち下がると、入力バッファ53の出力s2のレベル=“L”、NAND回路67の出力s3のレベル=“H”、検知信号syのレベル=“H”となる。この場合、AND回路58の出力s4のレベル=“L”となるが、NOR回路59の出力s5のレベル=“L”、NOR回路61の出力s6のレベル=“H”、NOR回路60の出力s7のレベル=“L”の状態が維持され、伝送ゲート54はオフ状態を維持する。この場合、ノード65のレベルv8=不定、NAND回路67の出力s3のレベル=“H”であるから、NAND回路68の出力s9のレベル=不定となる。
その後、時刻t4で、アクナレッジ信号ack1dxが“L”に立ち下がると、NOR回路59の出力s5のレベル=“H”、NOR回路61の出力s6のレベル=“L”、NOR回路60の出力s7のレベル=“H”となり、伝送ゲート54はオン状態となる。この結果、ノード65のレベルv8=“L”、NAND回路68の出力s9のレベル=“H”となるが、入力バッファ53の出力s2のレベル=“L”の状態が維持されるので、NAND回路67の出力s3のレベル=“H”、検知信号syのレベル=“H”の状態が維持される。
このように、遅延回路42が出力するアクナレッジ信号ack1dをDフリップフロップ43が先にラッチした場合、即ち、アクナレッジ信号ack1dzの立ち上がり遷移がアクナレッジ信号ack1dxの立ち上がり遷移よりも早い場合には、検知信号syは、アクナレッジ信号ack1dzの立ち上がり遷移に同期して“L”となり、アクナレッジ信号ack1dzの立ち下がり遷移に同期して“H”となる。
図5〜図8は本発明の第1実施形態のデータ受信回路40の動作例を示す波形図であり、(A)は回路モジュール1_0内のシステムクロックsck0、(B)は回路モジュール1_0内の反転システムクロックsck0xを示している。
また、(C)は回路モジュール1_0に到達したアクナレッジ信号ack1、(D)は遅延回路42が出力するアクナレッジ信号ack1d、(E)はDフリップフロップ44が出力するアクナレッジ信号ack1dx、(F)はDフリップフロップ43が出力するアクナレッジ信号ack1dz、(G)は検知回路46が出力する検知信号sy、(H)はセレクタ47が出力するアクナレッジ信号ac1、(I)はDフリップフロップ49が出力するアクナレッジ信号a1を示している。
また、(J)は回路モジュール1_0に到達したデータ信号data1_00〜data1_63、(K)はDフリップフロップ45_00z〜45_63zが出力するデータ信号data1_00z〜data1_63z、(L)はDフリップフロップ45_00x〜45_63xが出力するデータ信号data1_00x〜data1_63x、(M)はセレクタ48_00〜48_63が出力するデータ信号da1_00〜da1_63、(N)はDフリップフロップ50_00〜50_63が出力するデータ信号d1_00〜d1_63を示している。
本例では、データ送信は、バースト長=2のバースト転送で行われており、b0、b1は、それぞれ並列64ビット構成のデータ信号data1_00〜data1_63からなる64ビット幅のデータを示している。また、アクナレッジ信号ack1のHレベル幅は、システムクロックsck0の2サイクル分の長さとされ、データ信号data1_00〜data1_63のHレベル幅及びLレベル幅は、システムクロックsck0の1サイクル分の長さとされている。
ここで、初期状態では、前述したように、アクナレッジ信号ack1のレベル=“L”とされるので、アクナレッジ信号ack1dのレベル=“L”、アクナレッジ信号ack1dzのレベル=“L”、アクナレッジ信号ack1dxのレベル=“L”、検知信号syのレベル=“L”、アクナレッジ信号ac1のレベル=“L”、アクナレッジ信号a1のレベル=“L”となる。
また、アクナレッジ信号ack1dは、入力端子9_00〜9_63を介して入力したデータ信号data1_00〜data1_63中の最も遅れているデータ信号に対して位相が同一又は遅れるようにされるので、データ信号data1_00〜data1_63がアクナレッジ信号ack1よりも早く送信されたか否か、及び、アクナレッジ信号ack1dをDフリップフロップ43、44のどちらが先にラッチするかの関係では、本発明の第1実施形態のデータ受信回路40がアクナレッジ信号ack1及びデータ信号data1_00〜data1_63を受信する形態は、図5〜図8に示す4つの動作例に分類することができる。
図5は本発明の第1実施形態のデータ受信回路40の第1動作例を示しており、回路モジュール1_1がデータ信号data1_00〜data1_63をアクナレッジ信号ack1よりも早く送信し、アクナレッジ信号ack1dをDフリップフロップ44が先にラッチする0.5サイクル前に、データ信号data1_00〜data1_63をDフリップフロップ45_00z〜45_63zが先にラッチする状況にある場合を示している。
具体的には、データ信号data1_00〜data1_63は、時刻t5〜t6の間に回路モジュール1_0に到達し、時刻t6で、Dフリップフロップ45_00z〜45_63zによって先にラッチされ、また、アクナレッジ信号ack1は、時刻t6〜t7の間に回路モジュール1_0に到達し、時刻t7で、Dフリップフロップ44によって先にラッチされる状況にある場合を示している。
図6は本発明の第1実施形態のデータ受信回路40の第2動作例を示しており、回路モジュール1_1がデータ信号data1_00〜data1_63をアクナレッジ信号ack1と同等の早さで送信し、アクナレッジ信号ack1dをDフリップフロップ44が先にラッチし、また、データ信号data1_00〜data1_63をDフリップフロップ45_00x〜45_63xが先にラッチする状況にある場合を示している。
具体的には、アクナレッジ信号ack1及びデータ信号data1_00〜data1_63が共に時刻t6〜t7の間に回路モジュール1_0に到達し、アクナレッジ信号ack1dは、時刻t7で、Dフリップフロップ44によって先にラッチされ、また、データ信号data1_00〜data1_63は、時刻t7で、Dフリップフロップ45_00x〜45_63xによって先にラッチされる状況にある場合を示している。
ここで、アクナレッジ信号ack1dとデータ信号data1_00〜data1_63とが図5に示す関係にある場合であっても、図6に示す関係にある場合であっても、同一タイミングでアクナレッジ信号a1及び受信データ信号d1_00〜d1_63を内部回路に転送することができれば、データ送受信の更なる高速化により、データ信号data1_00〜data1_63中に、アクナレッジ信号ack1dをDフリップフロップ44が先にラッチする0.5サイクル前にDフリップフロップ45_00z〜45_63zが先にラッチするデータ信号が含まれている場合であっても、アクナレッジ信号a1及び受信データ信号d1_00〜d1_63の同期化を図ることができることになる。
図7は本発明の第1実施形態のデータ受信回路40の第3動作例を示しており、回路モジュール1_1がデータ信号data1_00〜data1_63をアクナレッジ信号ack1よりも早く送信し、アクナレッジ信号ack1dをDフリップフロップ43が先にラッチする0.5サイクル前に、データ信号data1_00〜data1_63をDフリップフロップ45_00x〜45_63xが先にラッチする状況にある場合を示している。
具体的には、データ信号data1_00〜data1_63は、時刻t6〜t7の間に回路モジュール1_0に到達し、時刻t7で、Dフリップフロップ45_00x〜45_63xによって先にラッチされ、また、アクナレッジ信号ack1は、時刻t7〜t8の間に回路モジュール1_0に到達し、時刻t8で、Dフリップフロップ43によって先にラッチされる状況にある場合を示している。
図8は本発明の第1実施形態のデータ受信回路40の第4動作例を示しており、回路モジュール1_1がデータ信号data1_00〜data1_63をアクナレッジ信号ack1と同等の早さで送信し、アクナレッジ信号ack1dをDフリップフロップ43が先にラッチし、また、データ信号data1_00〜data1_63をDフリップフロップ45_00z〜45_63zが先にラッチする場合を示している。
具体的には、アクナレッジ信号ack1及びデータ信号data1_00〜data1_63が共に時刻t7〜t8の間に回路モジュール1_0に到達し、アクナレッジ信号ack1dは、時刻t8で、Dフリップフロップ43によって先にラッチされ、また、データ信号data1_00〜data1_63は、時刻t8で、Dフリップフロップ45_00z〜45_63zによって先にラッチされる状況にある場合を示している。
ここで、アクナレッジ信号ack1dとデータ信号data1_00〜data1_63とが図7に示す関係にある場合であっても、図8に示す関係にある場合であっても、同一タイミングでアクナレッジ信号a1及び受信データ信号d1_00〜d1_63を内部回路に転送することができれば、データ送受信の更なる高速化により、データ信号data1_00〜data1_63中に、アクナレッジ信号ack1dをDフリップフロップ43が先にラッチする0.5サイクル前にDフリップフロップ45_00x〜45_63xが先にラッチするデータ信号が含まれている場合であっても、アクナレッジ信号a1及び受信データ信号d1_00〜d1_63の同期化を図ることができることになる。
即ち、アクナレッジ信号ack1dとデータ信号data1_00〜data1_63とが図5に示す関係にある場合であっても、図6に示す関係にある場合であっても、同一タイミングでアクナレッジ信号a1及び受信データ信号d1_00〜d1_63を内部回路に転送することができれば、また、アクナレッジ信号ack1dとデータ信号data1_00〜data1_63とが図7に示す関係にある場合であっても、図8に示す関係にある場合であっても、同一タイミングでアクナレッジ信号a1及び受信データ信号d1_00〜d1_63を内部回路に転送することができれば、データ送受信の更なる高速化により、データ信号data1_00〜data1_63中の最も早く送信されたデータ信号と最も遅く送信されたデータ信号との間に無視することができないスキューが発生した場合であっても、アクナレッジ信号a1及び受信データ信号d1_00〜d1_63の同期化を図ることができることになる。
まず、図5に示す第1動作例について説明する。図5に示す第1動作例では、アクナレッジ信号ack1は、時刻t6〜t7の間に回路モジュール1_0に到達し、遅延回路42による遅延を受けるが、アクナレッジ信号ack1dは、時刻t6〜t7の間に“H”に遷移している。この結果、Dフリップフロップ44は、アクナレッジ信号ack1dを時刻t7でラッチし、Dフリップフロップ43は、アクナレッジ信号ack1dを時刻t8でラッチすることになる。
この場合、図3の例で示したように、検知信号syは“H”を維持するので、セレクタ47は、Dフリップフロップ44が出力するアクナレッジ信号ack1dxを選択し、Dフリップフロップ49は、セレクタ47が出力するアクナレッジ信号ack1dx(ac1)を時刻t8でラッチし、アクナレッジ信号ack1dx(a1)をアクナレッジ信号ack1の受信信号として出力することになる。
他方、データ信号data1_00〜data1_63は、時刻t5〜t6の間に回路モジュール1_0に到達している。この結果、Dフリップフロップ45_00z〜45_63zは、時刻t6で、データ信号data1_00〜data1_63をラッチし、Dフリップフロップ45_00x〜45_63xは、時刻t7で、データ信号data1_00〜data1_63をラッチすることになる。
そして、検知信号syは“H”となっているので、セレクタ48_00〜48_63は、Dフリップフロップ45_00x〜45_63xが出力するデータ信号data1_00x〜data1_63xを選択し、Dフリップフロップ50_00〜50_63は、セレクタ48_00〜48_63が出力するデータ信号data1_00x〜data1_63x(da1_00〜da1_63)を時刻t8でラッチし、データ信号data1_00x〜data1_63x(d1_00〜d1_63)をデータ信号data1_00〜data1_63の受信信号として内部回路に転送することになる。
このように、データ信号data1_00〜data1_63は、時刻t5〜t6の間に回路モジュール1_0に到達し、時刻t6で、Dフリップフロップ45_00z〜45_63zによって先にラッチされ、また、アクナレッジ信号ack1は、時刻t6〜t7の間に回路モジュール1_0に到達し、時刻t7で、Dフリップフロップ44によって先にラッチされる場合には、時刻t8を転送開始時刻として、アクナレッジ信号ack1dx(a1)及びデータ信号data1_00x〜data1_63x(d1_00〜d1_63)をサイクル同期させて内部回路に転送することができる。
次に、図6に示す第2動作例について説明する。図6に示す第2動作例では、アクナレッジ信号ack1は、時刻t6〜t7の間に回路モジュール1_0に到達し、遅延回路42による遅延を受けるが、アクナレッジ信号ack1dは、時刻t6〜t7の間に“H”に遷移している。この結果、図5の場合と同様に、Dフリップフロップ44は、アクナレッジ信号ack1dを時刻t7でラッチし、Dフリップフロップ43は、アクナレッジ信号ack1dを時刻t8で取り込むことになる。
したがって、また、検知回路46が出力する検知信号syは“H”を維持するので、セレクタ47は、Dフリップフロップ44が出力するアクナレッジ信号ack1dxを選択し、Dフリップフロップ49は、セレクタ47が出力するアクナレッジ信号ack1dx(ac1)を時刻t8でラッチし、アクナレッジ信号ack1dx(a1)をアクナレッジ信号ack1の受信信号として出力することになる。
他方、データ信号data1_00〜data1_63は、時刻t6〜t7の間に回路モジュール1_0に到達している。この結果、Dフリップフロップ45_00x〜45_63xは、時刻t7で、データ信号data1_00〜data1_63をラッチし、Dフリップフロップ45_00z〜45_63zは、時刻t8で、データ信号data1_00〜data1_63をラッチすることになる。
そして、この場合、検知信号syは“H”となっているので、セレクタ48_00〜48_63は、Dフリップフロップ45_00x〜45_63xが出力するデータ信号data1_00x〜data1_63xを選択し、Dフリップフロップ50_00〜50_63は、セレクタ48_00〜48_63が出力するデータ信号data1_00x〜data1_63x(da1_00〜da1_63)を時刻t8でラッチし、データ信号data1_00x〜data1_63x(d1_00〜d1_63)をデータ信号data1_00〜data1_63の受信信号として内部回路に転送することになる。
このように、アクナレッジ信号ack1及びデータ信号data1_00〜data1_63が時刻t6〜t7の間に回路モジュール1_0に到達し、アクナレッジ信号ack1は、時刻t7で、Dフリップフロップ44によって先にラッチされ、データ信号data1_00〜data1_63は、時刻t7で、Dフリップフロップ45_00x〜45_63xによって先にラッチされる場合には、時刻t8を転送開始時刻として、アクナレッジ信号ack1dx(a1)及びデータ信号data1_00x〜data1_63x(d1_00〜d1_63)をサイクル同期させて内部回路に転送することができる。
即ち、本発明の第1実施形態のデータ受信回路40によれば、アクナレッジ信号ack1dとデータ信号data1_00〜data1_63とが図5に示す関係にある場合であっても、図6に示す関係にある場合であっても、同一タイミングで受信データ信号data1_00x〜data1_63xを内部回路に転送することができる。
したがって、データ送受信の更なる高速化により、データ信号data1_00〜data1_63中に、アクナレッジ信号ack1dをDフリップフロップ44が先にラッチする0.5サイクル前にDフリップフロップ45_00z〜45_63zが先にラッチするデータ信号が含まれている場合であっても、アクナレッジ信号a1及び受信データ信号d1_00〜d1_63の同期化を図ることができることになる。
次に、図7に示す第3動作例について説明する。図7に示す第3動作例では、アクナレッジ信号ack1は、時刻t7〜t8の間に回路モジュール1_0に到達し、遅延回路42による遅延を受けるが、アクナレッジ信号ack1は、時刻t7〜t8の間に“H”に遷移している。この結果、Dフリップフロップ43は、アクナレッジ信号ack1dを時刻t8でラッチし、Dフリップフロップ44は、アクナレッジ信号ack1dを時刻t9でラッチすることになる。
この場合、図4の例で示したように、検知信号syは、アクナレッジ信号ack1dzの立ち上がり遷移に同期して“L”となり、アクナレッジ信号ack1dzの立ち下がり遷移に同期して“H”となるので、セレクタ47は、Dフリップフロップ43が出力するアクナレッジ信号ack1dzを選択し、Dフリップフロップ49は、セレクタ47が出力するアクナレッジ信号ack1dz(ac1)を時刻t10でラッチし、アクナレッジ信号ack1dz(a1)をアクナレッジ信号ack1の受信信号として出力することになる。
他方、データ信号data1_00〜data1_63は、時刻t6〜t7の間に回路モジュール1_0に到達している。この結果、Dフリップフロップ45_00x〜45_63xは、時刻t7で、データ信号data1_00〜data1_63をラッチし、Dフリップフロップ45_00z〜45_63zは、時刻t8で、データ信号data1_00〜data1_63をラッチすることになる。
そして、この場合、検知信号syは“L”となっているので、セレクタ48_00〜48_63は、Dフリップフロップ45_00z〜45_63zが出力するデータ信号data1_00z〜data1_63zを選択し、Dフリップフロップ50_00〜50_63は、セレクタ48_00〜48_63が出力するデータ信号data1_00z〜data1_63z(da1_00〜da1_63)を時刻t10でラッチし、データ信号data1_00z〜data1_63z(d1_00〜d1_63)をデータ信号data1_00〜data1_63の受信信号として内部回路に転送することになる。
このように、アクナレッジ信号ack1及びデータ信号data1_00〜data1_63が共に時刻t7〜t8の間に回路モジュール1_0に到達し、アクナレッジ信号ack1は、時刻t8で、Dフリップフロップ43によって先にラッチされ、データ信号data1_00〜data1_63は、時刻t7で、Dフリップフロップ45_00x〜45_63xによって先にラッチされる場合には、時刻t10を転送開始時刻として、アクナレッジ信号ack1dz(a1)及びデータ信号data1_00z〜data1_63z(d1_00〜d1_63)をサイクル同期させて内部回路に転送することができる。
次に、図8に示す第4動作例について説明する。図8に示す第4動作例では、アクナレッジ信号ack1は、時刻t7〜t8の間に回路モジュール1_0に到達し、遅延回路42による遅延を受けるが、アクナレッジ信号ack1dは、時刻t7〜t8の間に“H”に遷移している。この結果、図7に示す場合と同様に、Dフリップフロップ43は、アクナレッジ信号ack1dを時刻t8で同期してラッチし、Dフリップフロップ44は、アクナレッジ信号ack1dを時刻t9でラッチすることになる。
したがって、また、検知信号syは、アクナレッジ信号ack1dzの立ち上がり遷移に同期して“L”となり、アクナレッジ信号ack1dzの立ち下がり遷移に同期して“H”となるので、セレクタ47はアクナレッジ信号ack1dzを選択し、Dフリップフロップ49は、セレクタ47が出力するアクナレッジ信号ack1dz(ac1)を時刻t10でラッチし、アクナレッジ信号ack1dz(a1)をアクナレッジ信号ack1の受信信号として出力することになる。
他方、データ信号data1_00〜data1_63は、時刻t7〜t8の間に回路モジュール1_0に到達している。この結果、Dフリップフロップ45_00z〜45_63zは、時刻t8で、データ信号data1_00〜data1_63をラッチし、Dフリップフロップ45_00x〜45_63xは、時刻t9で、データ信号data1_00〜data1_63をラッチすることになる。
そして、この場合、検知信号syは“L”となっているので、セレクタ48_00〜48_63は、Dフリップフロップ45_00z〜45_63zが出力するデータ信号data1_00z〜data1_63zを選択し、Dフリップフロップ50_00〜50_63は、セレクタ48_00〜48_63が出力するデータ信号data1_00z〜data1_63z(da1_00〜da1_63)を時刻t10でラッチし、データ信号data1_00z〜data1_63z(d1_00〜d1_63)をデータ信号data1_00〜data1_63の受信信号として内部回路に転送することになる。
このように、アクナレッジ信号ack1及びデータ信号data1_00〜data1_63が共に時刻t7〜t8の間に回路モジュール1_0に到達し、アクナレッジ信号ack1は、時刻t8で、Dフリップフロップ44によって先にラッチされ、データ信号data1_00〜data1_63は、時刻t8で、Dフリップフロップ45_00z〜45_63zによって先にラッチされる場合には、時刻t10を転送開始時刻として、アクナレッジ信号ack1dz(a1)及びデータ信号data1_00z〜data1_63z(d1_00〜d1_63)をサイクル同期させて内部回路に転送することができる。
即ち、本発明の第1実施形態のデータ受信回路40によれば、アクナレッジ信号ack1dとデータ信号data1_00〜data1_63とが図7に示す関係にある場合であっても、図8に示す関係にある場合であっても、同一タイミングで受信データ信号data1_00z〜data1_63zを内部回路に転送することができる。
したがって、データ送受信の更なる高速化により、データ信号data1_00〜data1_63中に、アクナレッジ信号ack1dをDフリップフロップ43が先にラッチする0.5サイクル前にDフリップフロップ45_00x〜45_63xが先にラッチするデータ信号が含まれている場合であっても、アクナレッジ信号a1及び受信データ信号d1_00〜d1_63の同期化を図ることができることになる。
即ち、本発明の第1実施形態のデータ受信回路40においては、アクナレッジ信号ack1dは、遅延回路42により、データ信号data1_00〜data1_63中の最も遅れているデータ信号に対して位相が同一又は遅れているように制御されるので、Dフリップフロップ43、45_00z〜45_63zからなる第1の取り込み回路及びDフリップフロップ44、45_00x〜45_63xからなる第2の取り込み回路のうち、アクナレッジ信号ack1dを先に取り込んだ取り込み回路が出力するアクナレッジ信号及びデータ信号は同期されたものとなる。
ここで、Dフリップフロップ43がアクナレッジ信号ack1dを先にラッチした場合には、セレクタ47、48_00〜48_63は、Dフリップフロップ43が出力するアクナレッジ信号ack1dz及びDフリップフロップ45_00z〜45_63zが出力するデータ信号data1_00z〜data1_63zを選択するように制御されるので、セレクタ47、48_00〜48_63が出力するアクナレッジ信号ac1及びデータ信号da1_00〜da1_63は同期されたものとなり、したがって、また、Dフリップフロップ49、50_00〜50_63が出力するアクナレッジ信号a1及びデータ信号d1_00〜d1_63は同期されたものとなる。
これに対して、Dフリップフロップ44がアクナレッジ信号ack1dを先にラッチした場合には、セレクタ47、48_00〜48_63は、Dフリップフロップ44が出力するアクナレッジ信号ack1dx及びDフリップフロップ45_00x〜45_63xが出力するデータ信号data1_00x〜data1_63xを選択するように制御されるので、セレクタ47、48_00〜48_63が出力するアクナレッジ信号ac1及びデータ信号da1_00〜da1_63は同期されたものとなり、したがって、また、Dフリップフロップ49、50_00〜50_63が出力するアクナレッジ信号a1及びデータ信号d1_00〜d1_63は同期されたものとなる。
このようにして、アクナレッジ信号ack1dとデータ信号data1_00〜data1_63とが図5に示す関係にある場合であっても、図6に示す関係にある場合であっても、同一タイミングでアクナレッジ信号ack1dx及びデータ信号data1_00x〜data1_63xを内部回路に転送することができ、また、アクナレッジ信号ack1dとデータ信号data1_00〜data1_63とが図7に示す関係にある場合であっても、図8に示す関係にある場合であっても、同一タイミングでアクナレッジ信号ack1dz及びデータ信号data1_00z〜data1_63zを内部回路に転送することができる。
したがって、本発明の第1実施形態のデータ受信回路40によれば、回路モジュール1_0、1_1間のデータ送受信の高速化に伴い、システムクロックsck0、sck1間のスキューや、データ信号data1_00〜data1_63間のスキューが無視できないようになった場合であっても、受信アクナレッジ信号a1及び受信データ信号d1_00〜d1_63の同期化を図ることができ、回路モジュール1_0、1_1間のデータ送受信の更なる高速化を図ることができる。例えば、データ1ビット当たりの送受信転送レートを200Mbps程度まで引き上げることができ、図29に示す従来のデータ受信回路25、36を使用する場合に比較して2倍程度の高速化を図ることができる。
なお、本発明の第1実施形態のデータ受信回路40では、Dフリップフロップ49、50_00〜50_63を設けているが、これらDフリップフロップ49、50_00〜50_63が存在しなくとも、図5及び図6の例では、時刻t8を転送開始時刻として、アクナレッジ信号ack1dx(a1)とデータ信号data1_00x〜data1_63x(d1_00〜d1_63)をサイクル同期させて内部回路に転送することができ、図7及び図8の例では、時刻t10を転送開始時刻として、アクナレッジ信号ack1dx(a1)とデータ信号data1_00x〜data1_63x(d1_00〜d1_63)をサイクル同期させて内部回路に転送することができるので、Dフリップフロップ49、50_00〜50_63を設けないようにしても良い。
(第2実施形態)
図9は本発明の第2実施形態のデータ受信回路71を回路モジュール1_0に搭載した状態を示す回路図である。本発明の第2実施形態のデータ受信回路71は、図1に示す遅延回路42の代わりに可変遅延回路72を設けると共に、可変遅延回路72の遅延値を制御する遅延値制御回路73を設け、その他については、図1に示す本発明の第1実施形態のデータ受信回路40と同様に構成したものである。本発明の第2実施形態のデータ受信回路71は、回路モジュール1_1にも搭載される。
図10は可変遅延回路72の構成を示す回路図である。図10中、75は遅延値をTa[sec]とするバッファ、76は遅延値を2×Ta[sec]とするバッファ、77は遅延値を4×Ta[sec]とするバッファ、78は遅延値を8×Ta[sec]とするバッファである。
79は遅延値制御回路73が出力するインクリメンタルパルスINC1をカウントしてカウント値c3(最上位ビット)、c2、c1、c0(最下位ビット)を出力するインクリメンタルカウンタ(16進カウンタ)である。
80はアクナレッジ信号ack1又はバッファ75の出力を選択するセレクタであり、カウント値c0が選択制御信号として与えられ、カウント値c0=“0”の場合には、アクナレッジ信号ack1を選択し、カウント値c0=“1”の場合には、バッファ75の出力を選択するものである。
81はセレクタ80の出力又はバッファ76の出力を選択するセレクタであり、カウント値c1が選択制御信号として与えられ、カウント値c1=“0”の場合には、セレクタ80の出力を選択し、カウント値c1=“1”の場合には、バッファ76の出力を選択するものである。
82はセレクタ81の出力又はバッファ77の出力を選択するセレクタであり、カウント値c2が選択制御信号として与えられ、カウント値c2=“0”の場合には、セレクタ81の出力を選択し、カウント値c2=“1”の場合には、バッファ77の出力を選択するものである。
83はセレクタ82の出力又はバッファ78の出力を選択するセレクタであり、カウント値c3が選択制御信号として与えられ、カウント値c3=“0”の場合には、セレクタ82の出力を選択し、カウント値c3=“1”の場合には、バッファ78の出力を選択するものである。
図11は可変遅延回路72の機能を示す表図であり、遅延値制御回路73が出力するインクリメンタルパルスINC1の合計数と、インクリメンタルカウンタ79のカウント値c3、c2、c1、c0と、可変遅延回路72の遅延値との関係を示している。即ち、可変遅延回路72は、遅延値制御回路73が出力するインクリメンタルパルスINC1を入力する度にインクリメンタルカウンタ79のカウント値c3、c2、c1、c0をインクリメントさせて遅延値を変化させるというものであり、遅延値の初期値を0[sec]とし、可変範囲を0〜15Ta[sec]とするものである。
図12は遅延値制御回路73の構成を示す回路図である。図12中、85はDフリップフロップ50_00〜50_63が出力するデータ信号d1_00〜d1_63が期待値と一致するか否かを判定して判定信号judgeを出力するデータ期待値判定部である。
86はDフリップフロップ49が出力するアクナレッジ信号a1と遅延値設定モード信号とをAND処理するAND回路、87はAND回路86の出力p1をデータ期待値判定部85から判定結果が出るまで遅延するデータ期待値判定待ち遅延部である。
88はパルス発生部であり、89〜91はデータ期待値判定待ち遅延部87の出力p2を反転遅延する反転遅延回路を構成するインバータ、92はデータ期待値判定待ち遅延部87の出力p2とインバータ91の出力p3とをAND処理するAND回路である。93はAND回路92の出力p4とデータ期待値判定部85が出力する判定信号judgeとをAND処理してインクリメンタルパルスINC1を出力するAND回路である。
図13はデータ期待値判定部85の動作真理値を示す表図である。即ち、データ期待値判定部85は、データ信号d1_00〜d1_63が全て“H”又は“L”の場合には、判定信号judgeのレベル=“L”とし、データ信号d1_00〜d1_63のうち、いずれか1ビットでも他のビットとレベルが異なる場合には、判定信号judgeのレベル=“H”とするものである。
図14は遅延値制御回路73の通常動作モード時の動作、図15は遅延値制御回路73の遅延値設定モード時の動作の一部分を示す波形図であり、(A)はDフリップフロップ49が出力するアクナレッジ信号a1、(B)はDフリップフロップ50_00〜50_63が出力するデータ信号d1_00〜d1_63、(C)はデータ期待値判定部85が出力する判定信号judge、(D)は遅延値設定モード信号、(E)はAND回路86の出力p1、(F)はデータ期待値判定待ち遅延部87の出力p2、(G)はインバータ91の出力p3、(H)はAND回路92の出力p4、(I)はAND回路93の出力(インクリメンタルパルスINC1)を示している。
図14に示すように、通常動作モード時には、遅延値設定モード信号のレベル=“L”に固定される。この結果、AND回路86の出力p1のレベル=“L”、データ期待値判定待ち遅延部87の出力p2のレベル=“L”、インバータ91の出力p3のレベル=“H”、AND回路92の出力p4のレベル=“L”、AND回路93の出力のレベル=“L”に固定され、インクリメンタルパルスINC1が発生されることはない。
他方、遅延値設定モード時には、回路モジュール1_1から遅延値設定用のデータ信号として全て“L”(又は“H”)のデータ信号data1_00〜data1_63が送信されて可変遅延回路72の遅延値が調整され、その後、回路モジュール1_1から遅延値設定用のデータ信号として全て“H”(又は“L”)のデータ信号data1_00〜data1_63が送信されて可変遅延回路72の遅延値が調整されるが、図15では、回路モジュール1_1から全て“H”のデータ信号data1_00〜data1_63が送信されて可変遅延回路72の遅延値が調整される場合の一例を示している。
図15に示すように、遅延値設定モード時には、遅延値設定モード信号のレベルは“H”に固定されるが、この結果、例えば、時刻t11で、アクナレッジ信号a1が“H”に立ち上がると、AND回路86の出力p1が“H”に立ち上がり、データ期待値判定待ち遅延部87の遅延時間経過後、データ期待値判定待ち遅延部87の出力p2が“H”に立ち上がり、更に、インバータ89〜91の合計遅延時間経過後、インバータ91の出力p3が“L”に立ち下がる。これにより、AND回路92からパルス95が発生する。
この場合において、回路モジュール1_1が遅延値設定用のデータ信号data1_00〜data1_63として全て“H”のデータ信号data1_00〜data1_63を送信した場合、データ期待値判定部85に入力するデータ信号d1_00〜d1_63のいずれか1ビットだけでも“L”の場合には、判定信号judgeのレベル=“H”となるので、AND回路92が出力したパルス95がAND回路93からインクリメンタルパルスINC1として出力される。
その後、時刻t12で、アクナレッジ信号a1が“L”に立ち下がると、AND回路86の出力p1は“L”に立ち下がり、データ期待値判定待ち遅延部87の出力p2は“L”に立ち下がり、インバータ91の出力p3は“H”に立ち上がる。
その後、時刻t13で、アクナレッジ信号a1が“H”に立ち上がると、AND回路86の出力p1が“H”に立ち上がり、データ期待値判定待ち遅延部87の遅延時間経過後、データ期待値判定待ち遅延部87の出力p2が“H”に立ち上がり、更に、インバータ89〜91の合計遅延時間経過後、インバータ91の出力p3が“L”に立ち下がる。これにより、AND回路92からパルス97が発生する。
この場合において、回路モジュール1_1が遅延値設定用のデータ信号data1_00〜data1_63として全て“H”のデータ信号data1_00〜data1_63を送信した場合、データ期待値判定部85に入力するデータ信号d1_00〜d1_63の全てが“H”の場合、即ち、データ信号d1_00〜d1_63の同期化に成功した場合には、判定信号judgeのレベル=“L”となるので、AND回路92が出力したパルス97がAND回路93からインクリメンタルパルスINC1として出力されることはない。
その後、時刻t14で、アクナレッジ信号a1が“L”に立ち下がると、AND回路86の出力p1は“L”に立ち下がり、データ期待値判定待ち遅延部87の出力p2は“L”に立ち下がり、インバータ91の出力p3は“L”から“H”に立ち上がる。
図16は可変遅延回路72の遅延値設定手順を示すフローチャートである。可変遅延回路72の遅延値設定モード時には、まず、遅延値設定モード信号が“H”とされる(ステップN1)。次に、回路モジュール1_1は、データ信号data1_00〜data1_63を全て“L”にリセットし(ステップN2)、次のサイクルで、アクナレッジ信号ack1及びデータ信号data1_00〜data1_63を送信する(ステップN3)。
回路モジュール1_0は、回路モジュール1_1から送信された全てが“L”のデータ信号data1_00〜data1_63を受信し、遅延値制御回路73においてデータ期待値判定を行い(ステップN4)、Dフリップフロップ50_00〜50_63が出力するデータ信号d1_00〜d1_63が全て“L”でない場合には、遅延値制御回路73からインクリメンタルパルスINC1を発生させて可変遅延回路72の遅延値をインクリメントし(ステップN5)、ステップN2に戻る。
そして、全て“L”のデータ信号data1_00〜data1_63の受信に成功すると、即ち、全て“L”のデータ信号d1_00〜d1_63の同期化に成功すると、回路モジュール1_1は、データ信号data1_00〜data1_63を全て“H”にリセットし(ステップN6)、次のサイクルで、アクナレッジ信号ack1及びデータ信号data1_00〜data1_63を送信する(ステップN7)。
回路モジュール1_0は、回路モジュール1_1から送信された全て“H”のデータ信号data1_00〜data1_63を受信し、遅延値制御回路73においてデータ期待値判定を行い(ステップN8)、Dフリップフロップ50_00〜50_63が出力するデータ信号d1_00〜d1_63が全て“H”でない場合には、遅延値制御回路73からインクリメンタルパルスを発生させて可変遅延回路72の遅延値をインクリメントし(ステップN9)、ステップN6に戻る。そして、全て“H”のデータ信号data1_00〜data1_63の受信に成功すると、即ち、全て“H”のデータ信号d1_00〜d1_63の同期化に成功すると、可変遅延回路72の遅延値設定を終了する。
本発明の第2実施形態のデータ受信回路71は、本発明の第1実施形態のデータ受信回路40が備える遅延回路42の代わりに可変遅延回路72を設けると共に、可変遅延回路72の遅延値を制御する遅延値制御回路73を設け、その他については、本発明の第1実施形態のデータ受信回路40と同様に構成したものであるから、本発明の第2実施形態のデータ受信回路71によれば、本発明の第1実施形態のデータ受信回路と同様に、回路モジュール1_0、1_1間のデータ送受信の高速化に伴い、システムクロックsck0、sck1間のスキューや、データ信号data1_00〜data1_63間のスキューが無視できないようになった場合でも、受信データ信号の同期化を図ることができ、回路モジュール1_0、1_1間のデータ送受信の更なる高速化を図ることができる。
また、本発明の第2実施形態のデータ受信回路71においては、遅延値制御回路73により、可変遅延回路72が出力するアクナレッジ信号ack1dの位相がデータ信号data1_00〜data1_63中の最も遅れているデータ信号に対して同一又は遅れているようにするために必要な可変遅延回路72の遅延値を自動設定することができる。
したがって、システムクロックsck0、sck1間のスキュー及びデータ信号data1_00〜data1_63中の最も早く出力されるデータ信号(位相が最も進んでいるデータ信号)と最も遅く出力されるデータ信号(位相が最も遅れているデータ信号)間のスキューを計算する必要がなく、データ受信回路の設計の容易化を図ることができる。
図17は本発明の第2実施形態のデータ受信回路71が有する問題点を説明するための波形図である。(A)は回路モジュール1_0内のシステムクロックsck0、(B)は回路モジュール1_0内の反転システムクロックsck0xを示している。
また、(C)は回路モジュール1_0に到達したアクナレッジ信号ack1、(D)は可変遅延回路72が出力するアクナレッジ信号ack1d、(E)はDフリップフロップ44が出力するアクナレッジ信号ack1dx、(F)はDフリップフロップ43が出力するアクナレッジ信号ack1dz、(G)は検知回路46が出力する検知信号sy、(H)はセレクタ47が出力するアクナレッジ信号ac1、(I)はDフリップフロップ49が出力するアクナレッジ信号a1を示している。
また、(J)は回路モジュール1_0に到達したデータ信号data1_00〜data1_63、(K)はDフリップフロップ45_00z〜45_63zが出力するデータ信号data1_00z〜data1_63z、(L)はDフリップフロップ45_00x〜45_63xが出力するデータ信号data1_00x〜data1_63x、(M)はセレクタ48_00〜48_63が出力するデータ信号da1_00〜da1_63、(N)はDフリップフロップ50_00〜50_63が出力するデータ信号d1_00〜d1_63を示している。
回路モジュール1_0、1_1間のデータ送受信の更なる高速化により、クロックサイクルタイムが短くなってくると、例えば、図17に示すように、データ信号data1_00〜data1_63中の一番早いデータ信号が、時刻t16で、Dフリップフロップ45_00z〜45_63zによって先にラッチされる場合において、アクナレッジ信号ack1dが、その0.5サイクル後に、時刻t17でDフリップフロップ44によって先にラッチできない場合が出てくる。
この場合、アクナレッジ信号ack1dは、更に0.5サイクル後、時刻t18で、システムクロックsck0の立ち上がりを待って、初めてDフリップフロップ43によってラッチされることになるので、図17(I)、(N)に示すように、回路モジュール1_0内で先頭データb0とアクナレッジ信号a1の間に1サイクルのデータずれが生じ、アクナレッジ信号a1及びデータ信号d1_00〜d1_63の同期化ができなくなってしまうことになる。このような問題点を解消したものが本発明の第3実施形態のデータ受信回路である。
(第3実施形態)
図18は本発明の第3実施形態のデータ受信回路95を回路モジュール1_0に搭載した状態を示す回路図である。本発明の第3実施形態のデータ受信回路95は、システムクロックsck0を遅延する可変遅延回路96と、可変遅延回路96の遅延値を制御する遅延値制御回路97と、可変遅延回路96が出力する遅延システムクロックsckd0を反転して反転遅延システムクロックsckd0xを出力するインバータ98を設けている。
そして、遅延システムクロックsckd0をDフリップフロップ43、45_00z〜45_63z、49、50_00〜50_63に供給し、反転遅延システムクロックsckd0xをDフリップフロップ44、45_00x〜45_63xに供給するようにし、その他については、本発明の第2実施形態のデータ受信回路71と同様に構成している。なお、本発明の第3実施形態のデータ受信回路95は、回路モジュール1_1にも搭載される。
図19は可変遅延回路96の構成を示す回路図である。図19中、100は遅延値をTb[sec]とするバッファ、101は遅延値を2×Tb[sec]とするバッファ、102は遅延値を4×Tb[sec]とするバッファ、103は遅延値を8×Tb[sec]とするバッファである。
104は遅延値制御回路97が出力するインクリメンタルパルスINC2をカウントしてカウント値e3(最上位ビット)、e2、e1、e0(最下位ビット)を出力するインクリメンタルカウンタ(16進カウンタ)である。
105はシステムクロックsck0又はバッファ100の出力を選択するセレクタであり、カウント値e0が選択制御信号として与えられ、カウント値e0=“0”の場合には、システムクロックsck0を選択し、カウント値e0=“1”の場合には、バッファ100の出力を選択するものである。
106はセレクタ105の出力又はバッファ101の出力を選択するセレクタであり、カウント値e1が選択制御信号として与えられ、カウント値e1=“0”の場合には、セレクタ105の出力を選択し、カウント値e1=“1”の場合には、バッファ101の出力を選択するものである。
107はセレクタ106の出力又はバッファ102の出力を選択するセレクタであり、カウント値e2が選択制御信号として与えられ、カウント値e2=“0”の場合には、セレクタ106の出力を選択し、カウント値e2=“1”の場合には、バッファ102の出力を選択するものである。
108はセレクタ107の出力又はバッファ103の出力を選択するセレクタであり、カウント値e3が選択制御信号として与えられ、カウント値e3=“0”の場合には、セレクタ107の出力を選択し、カウント値e3=“1”の場合には、バッファ103の出力を選択するものである。
図20は可変遅延回路96の機能を示す表図であり、遅延値制御回路97が出力するインクリメンタルパルスINC2の合計数と、インクリメンタルカウンタ104のカウント値e3、e2、e1、e0と、可変遅延回路96の遅延値との関係を示している。即ち、可変遅延回路96は、遅延値制御回路97が出力するインクリメンタルパルスINC2を入力する度にインクリメンタルカウンタ104のカウント値e3、e2、e1、e0をインクリメントさせて遅延値を変化させるというものであり、遅延値の初期値を0[sec]とし、可変範囲を0〜15Tb[sec]とするものである。
図21は遅延値制御回路97の構成を示す回路図である。図21中、110〜112は遅延値制御回路73が出力するカウント値c3を反転遅延する反転遅延回路を構成するインバータ、113はカウント値c3とインバータ112の出力q1とをNOR処理してインクリメンタルパルスINC2を出力するNOR回路である。
図22は遅延値制御回路97の動作を示す波形図であり、(A)は遅延値制御回路73が出力するインクリメンタルパルスINC1、(B)は可変遅延回路72のインクリメンタルカウンタ79のカウント値c0〜c3、(C)は遅延値制御回路97のインバータ112の出力q1、(D)は遅延値制御回路97が出力するインクリメンタルパルスINC2、(E)は可変遅延回路96のインクリメンタルカウンタ104のカウント値e0を示している。
即ち、遅延値制御回路97は、可変遅延回路72のインクリメンタルカウンタ79が出力するカウント値c3入力し、このカウント値c3が“1”から“0”に変化するごとにインクリメンタルパルスINC2を出力するものである。
図23は本発明の第3実施形態のデータ受信回路95における可変遅延回路72、96の遅延値設定手順を示すフローチャートである。即ち、可変遅延回路72、96の遅延値設定モード時には、まず、遅延値設定モード信号が“H”とされる(ステップW1)。次に、回路モジュール1_1は、データ信号data1_00〜data1_63を全て“L”にリセットし(ステップW2)、次のサイクルで、アクナレッジ信号ack1及びデータ信号data1_00〜data1_63を送信する(ステップW3)。
回路モジュール1_0は、回路モジュール1_1から送信された全て“L”のデータ信号data1_00〜data1_63を受信し、遅延値制御回路73においてデータ期待値判定を行い(ステップW4)、Dフリップフロップ50_00〜50_63が出力するデータ信号d1_00〜d1_63が全て“L”でない場合には、遅延値制御回路73からインクリメンタルパルスINC1を発生させて可変遅延回路72の遅延値をインクリメントする(ステップW5)。
次に、インクリメンタルカウンタ79のカウント値c3c2c1c0が“0000”に戻ったか否かを判断し(ステップW6)、戻っていない場合、即ち、カウント値c3c2c1c0が“0001”〜“1111”のいずれかの場合には、ステップW2に戻る。これに対して、カウント値c3c2c1c0が“0000”に戻った場合には、遅延値制御回路97からインクリメンタルパルスINC2を発生させて可変遅延回路96の遅延値をインクリメントし(ステップW7)、ステップW2に戻る。
そして、回路モジュール1_0が全て“L”のデータ信号data1_00〜data1_63の受信に成功すると、即ち、全て“L”のデータ信号d1_00〜d1_63の同期化に成功すると、回路モジュール1_1は、データ信号data1_00〜data1_63を全て“H”にリセットし(ステップW8)、次のサイクルで、アクナレッジ信号ack1及びデータ信号data1_00〜data1_63を送信する(ステップW9)。
回路モジュール1_0は、回路モジュール1_1から送信された全て“H”のデータ信号data1_00〜data1_63を受信し、遅延値制御回路73においてデータ期待値判定を行い(ステップW10)、Dフリップフロップ50_00〜50_63が出力するデータ信号d1_00〜d1_63が全て“H”ではない場合、遅延値制御回路73からインクリメンタルパルスINC1を発生させて可変遅延回路72の遅延値をインクリメントする(ステップW11)。
次に、インクリメンタルカウンタ79のカウント値c3c2c1c0が“0000”に戻ったか否かを判断し(ステップW11)、戻っていない場合、即ち、カウント値c3c2c1c0が“0001”〜“1111”のいずれかの場合には、ステップW8に戻る。これに対して、カウント値c3c2c1c0が“0000”に戻った場合には、遅延値制御回路97からインクリメンタルパルスINC2を発生させて可変遅延回路96の遅延値をインクリメントし(ステップW13)、ステップW8に戻る。
そして、回路モジュール1_0が全て“H”のデータ信号data1_00〜data1_63の受信に成功すると、即ち、全て“H”のデータ信号d1_00〜d1_63の同期化に成功すると、可変遅延回路72、96の遅延値設定を終了する。
即ち、本発明の第3実施形態のデータ受信回路95では、可変遅延回路72の遅延値の調整でアクナレッジ信号a1及び受信データ信号d1_00〜d1_63の同期化に成功すれば、可変遅延回路96の遅延値は初期値のままにされるが、可変遅延回路72の遅延値の調整でアクナレッジ信号a1及び受信データ信号d1_00〜d1_63の同期化に成功しなければ、可変遅延回路96の遅延値が調整される。
図24は本発明の第3実施形態のデータ受信回路95の動作例を示す波形図であり、図17に示す状態が回避されることを示している。(A)は回路モジュール1_0内のシステムクロックsck0、(B)は回路モジュール1_0内の遅延システムクロックsckd0、(C)は反転遅延システムクロックsckd0xを示している。
また、(D)は回路モジュール1_0に到達したアクナレッジ信号ack1、(E)は可変遅延回路72が出力するアクナレッジ信号ack1d、(F)はDフリップフロップ44が出力するアクナレッジ信号ack1dx、(G)はDフリップフロップ43が出力するアクナレッジ信号ack1dz、(H)は検知回路46が出力する検知信号sy、(I)はセレクタ47が出力するアクナレッジ信号ac1、(J)はDフリップフロップ49が出力するアクナレッジ信号a1を示している。
また、(K)は回路モジュール1_0に到達したデータ信号data1_00〜data1_63、(L)はDフリップフロップ45_00z〜45_63zが出力するデータ信号data1_00z〜data1_63z、(M)はDフリップフロップ45_00x〜45_63xが出力するデータ信号data1_00x〜data1_63x、(N)はセレクタ48_00〜48_63が出力するデータ信号da1_00〜da1_63、(O)はDフリップフロップ50_00〜50_63が出力するデータ信号d1_00〜d1_63を示している。
本発明の第3実施形態のデータ受信回路95によれば、可変遅延回路96により、遅延システムクロックsckd0及び反転遅延システムクロックsckd0xの遅延値を調整することができるので、データ送受信の更なる高速化によりクロックサイクルタイムが短くなり、例えば、図17に示すように、データ信号data1_00〜data1_63中の一番早いデータ信号が、時刻t16で、Dフリップフロップ45_00z〜45_00zによって先にラッチされる場合において、アクナレッジ信号ack1dが、その0.5サイクル後に、時刻t17で、Dフリップフロップ44によって先にラッチできない場合が生じ、受信データ信号の同期化を図ることができない場合があるという本発明の第2実施形態のデータ受信回路71が有する問題点を解決することができる。
即ち、可変遅延回路96の遅延値を調整し、図24(B)、(C)に示すように、遅延システムクロックsckd0及び反転遅延システムクロックsckd0xの遅延値を調整する場合には、Dフリップフロップ44は、アクナレッジ信号ack1dを時刻t17´でラッチし、Dフリップフロップ43は、アクナレッジ信号ack1dを時刻t18´でラッチすることができるようになる。
この場合、図3の例で示したように、検知信号syは“H”を維持するので、セレクタ47は、Dフリップフロップ44が出力するアクナレッジ信号ack1dxを選択し、Dフリップフロップ49は、セレクタ47が出力するアクナレッジ信号ack1dx(ac1)を時刻t18´でラッチし、アクナレッジ信号ack1dx(a1)をアクナレッジ信号ack1の受信信号として出力することになる。
他方、データ信号data1_00〜data1_63は、時刻t15〜t16間に回路モジュール1_0に到達している。この結果、Dフリップフロップ45_00z〜45_63zは、時刻t16´で、データ信号data1_00〜data1_63をラッチし、Dフリップフロップ45_00x〜45_63xは、時刻t17´で、データ信号data1_00〜data1_63をラッチすることになる。
そして、検知信号syは“H”となっているので、セレクタ48_00〜48_63は、Dフリップフロップ45_00x〜45_63xが出力するデータ信号data1_00x〜data1_63xを選択し、Dフリップフロップ50_00〜50_63は、セレクタ48_00〜48_63が出力するデータ信号data1_00x〜data1_63x(da1_00〜da1_63)を時刻t18´でラッチし、データ信号data1_00x〜data1_63x(d1_00〜d1_63)をデータ信号data1_00〜data1_63の受信信号として内部回路に転送することになる。
このように、データ信号data1_00〜data1_63は、時刻t15〜t16の間に回路モジュール1_0に到達し、時刻t16´で、Dフリップフロップ45_00z〜45_63zによって先にラッチされ、また、アクナレッジ信号ack1は、時刻t16〜t17の間に回路モジュール1_0に到達している場合であっても、アクナレッジ信号ack1dを時刻t17´でDフリップフロップ44によって先にラッチするように可変遅延回路96の遅延値を調整する場合には、時刻t18´を転送開始時刻として、アクナレッジ信号ack1dx(a1)及びデータ信号data1_00x〜data1_63x(d1_00〜d1_63)をサイクル同期させて内部回路に転送することができることになる。
本発明の第3実施形態のデータ受信回路95は、可変遅延回路96、遅延値制御回路97及びインバータ98を設け、その他については、本発明の第2実施形態のデータ受信回路71と同様に構成したものであるから、本発明の第3実施形態のデータ受信回路95によれば、本発明の第2実施形態のデータ受信回路71と同様に、回路モジュール1_0、1_1間のデータ送受信の高速化に伴い、システムクロックsck0、sck1間のスキューや、データ信号data1_00〜data1_63間のスキューが無視できないようになった場合でも、受信データ信号の同期化を図ることができ、回路モジュール1_0、1_1間のデータ送受信の更なる高速化を図ることができる。
また、本発明の第3実施形態のデータ受信回路95においては、本発明の第2実施形態のデータ受信回路71と同様に、遅延値制御回路73により、可変遅延回路72が出力するアクナレッジ信号ack1dの位相がデータ信号data1_00〜data1_63中の最も遅れているデータ信号に対して同一又は遅れているようにするために必要な可変遅延回路72の遅延値を自動設定することができる。
したがって、システムクロックsck0、sck1間のスキュー及びデータ信号data1_00〜data1_63中の最も早く出力されるデータ信号(位相が最も進んでいるデータ信号)と最も遅く出力されるデータ信号(位相が最も遅れているデータ信号)間のスキューを計算する必要がなく、データ受信回路の設計の容易化を図ることができる。
更に、可変遅延回路96、遅延値制御回路97及びインバータ98を設けているので、回路モジュール1_0、1_1間のデータ送受信の更なる高速化により、クロックサイクルタイムが短くなり、例えば、図17に示すように、データ信号data1_00〜data1_63中の一番早いデータ信号がDフリップフロップ45_00z〜45_63zによって先にラッチされる場合において、アクナレッジ信号ack1dが、その0.5サイクル後にDフリップフロップ44によって先にラッチできない場合であっても、アクナレッジ信号a1及びデータ信号d1_00〜d1_63の同期化を図ることができる。この特徴により、データ送受信の高速化を本発明の第2実施形態のデータ受信回路71を用いる場合の2倍とすることができる。
なお、図1、図9、図18に示す回路モジュールでは、リクエスト信号req0用の出力端子と、アクナレッジ信号ack0用の出力端子と、データ信号data0_00〜data0_63用の出力端子と、リクエスト信号req1用の入力端子と、アクナレッジ信号ack1用の入力端子と、データ信号data1_00〜data1_63用の入力端子を設けるようにしているが、これら出力端子及び入力端子の代わりに、入出力端子を設けるようにしても良い。図25、図26、図27は、このようにした場合の一部分を示している。
図25、図26、図27において、115はアクナレッジ信号ack0、ack1用の入出力端子、116_00はデータ信号data0_00、data1_00用の入出力端子を示しており、リクエスト信号req0、req1用の入出力端子、アクナレッジ信号ack0、ack1用の入出力端子、データ信号data0_01、data1_01用の入出力端子〜データ信号data0_63、data1_63用の入出力端子は、図示を省略している。117、118_00は入力バッファ、119、120_00は出力バッファ、121、122、123_00、124_00はDフリップフロップである。
ここで、本発明のデータ受信回路を整理すると、本発明のデータ受信回路には、少なくとも、以下のデータ受信回路が含まれる。
(付記1)並列送信された複数のデータ信号及び該複数のデータ信号の認識に必要なアクナレッジ信号を受信するデータ受信回路であって、前記アクナレッジ信号を遅延して、前記複数のデータ信号中の最も遅れているデータ信号に対して位相が同一又は遅れている遅延アクナレッジ信号を出力する遅延回路と、前記遅延アクナレッジ信号及び前記複数のデータ信号を第1のクロックで取り込む第1の取り込み回路と、前記遅延アクナレッジ信号及び前記複数のデータ信号を前記第1のクロックと逆相の第2のクロックで取り込む第2の取り込み回路を有し、前記第1、第2の取り込み回路のうち、前記遅延アクナレッジ信号を先に取り込んだ取り込み回路が出力するアクナレッジ信号及び複数のデータ信号を有効信号として扱うことを特徴とするデータ受信回路。
(付記2)前記第1、第2の取り込み回路が出力するアクナレッジ信号を入力し、前記第1、第2の取り込み回路のどちらが、前記遅延回路が出力するアクナレッジ信号を先に取り込んだかを検知する検知回路と、該検知回路に制御され、前記第1の取り込み回路が出力するアクナレッジ信号及び複数のデータ信号又は前記第2の取り込み回路が出力するアクナレッジ信号及び複数のデータ信号を選択する選択回路を有することを特徴とする付記1記載のデータ受信回路。
(付記3)前記選択回路が出力するアクナレッジ信号及び複数のデータ信号を前記第1のクロックで取り込む第3の取り込み回路を有することを特徴とする付記2記載のデータ受信回路。
(付記4)前記遅延回路は、可変遅延回路であり、前記遅延回路の遅延値を制御する遅延値制御回路を有することを特徴とする付記1、2又は3記載のデータ受信回路。
(付記5)前記遅延値制御回路は、前記遅延回路の遅延値を制御する遅延値制御信号として第1のインクリメンタルパルスを出力し、前記遅延回路は、前記第1のインクリメンタルパルスの数をカウントする第1のインクリメンタルカウンタと、該第1のインクリメンタルカウンタの出力により遅延値が制御される第1の可変遅延部を有することを特徴とする付記4記載のデータ受信回路。
(付記6)前記遅延値制御回路は、前記遅延回路の遅延値設定モード時に、受信した遅延値設定用の複数のデータ信号の同期化が正常になるまで、前記遅延値設定用の複数のデータ信号を受信するごとに、前記第1のインクリメンタルパルスを出力することを特徴とする付記5記載のデータ受信回路。
(付記7)前記第1のクロックを送信側の送信用クロックよりも位相が遅れているクロックとするクロック遅延回路を有することを特徴とする付記4、5又は6記載のデータ受信回路。
(付記8)前記クロック遅延回路は、可変遅延回路であり、前記クロック遅延回路の遅延値を制御するクロック遅延値制御回路を有することを特徴とする付記7記載のデータ受信回路。
(付記9)前記クロック遅延値制御回路は、前記クロック遅延回路の遅延値を制御する遅延値制御信号として第2のインクリメンタルパルスを出力し、前記クロック遅延回路は、前記第2のインクリメンタルパルスの数をカウントする第2のインクリメンタルカウンタと、該第2のインクリメンタルカウンタの出力により遅延値を制御される第2の可変遅延部を有することを特徴とする付記8記載のデータ受信回路。
(付記10)前記クロック遅延値制御回路は、前記遅延回路の遅延値設定モード時に、受信した遅延値設定用の複数のデータ信号の同期化が前記遅延回路の遅延値の調整により正常にならない場合に、前記クロック遅延回路の遅延値を初期値以外の値に調整することを特徴とする付記9記載のデータ受信回路。