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

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

▶ 深▲セン▼市紫光同創電子有限公司の特許一覧

特許7041285FPGAと通信するホスト、FPGAと通信する方法、および通信システム
<>
  • 特許-FPGAと通信するホスト、FPGAと通信する方法、および通信システム 図1
  • 特許-FPGAと通信するホスト、FPGAと通信する方法、および通信システム 図2A
  • 特許-FPGAと通信するホスト、FPGAと通信する方法、および通信システム 図2B
  • 特許-FPGAと通信するホスト、FPGAと通信する方法、および通信システム 図2C
  • 特許-FPGAと通信するホスト、FPGAと通信する方法、および通信システム 図3
  • 特許-FPGAと通信するホスト、FPGAと通信する方法、および通信システム 図4
  • 特許-FPGAと通信するホスト、FPGAと通信する方法、および通信システム 図5
  • 特許-FPGAと通信するホスト、FPGAと通信する方法、および通信システム 図6
  • 特許-FPGAと通信するホスト、FPGAと通信する方法、および通信システム 図7
  • 特許-FPGAと通信するホスト、FPGAと通信する方法、および通信システム 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-03-14
(45)【発行日】2022-03-23
(54)【発明の名称】FPGAと通信するホスト、FPGAと通信する方法、および通信システム
(51)【国際特許分類】
   H04L 69/14 20220101AFI20220315BHJP
   G06F 13/10 20060101ALI20220315BHJP
【FI】
H04L69/14
G06F13/10 320Z
【請求項の数】 20
(21)【出願番号】P 2020568804
(86)(22)【出願日】2020-06-24
(65)【公表番号】
(43)【公表日】2021-11-25
(86)【国際出願番号】 CN2020097858
(87)【国際公開番号】W WO2020259523
(87)【国際公開日】2020-12-30
【審査請求日】2020-12-10
(31)【優先権主張番号】201910580647.9
(32)【優先日】2019-06-28
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】520412486
【氏名又は名称】深▲セン▼市紫光同創電子有限公司
(74)【代理人】
【識別番号】110002468
【氏名又は名称】特許業務法人後藤特許事務所
(72)【発明者】
【氏名】馮 展鵬
【審査官】佐々木 洋
(56)【参考文献】
【文献】特開2012-022613(JP,A)
【文献】国際公開第2018/235967(WO,A1)
【文献】中国実用新案第201111013(CN,Y)
【文献】中国特許出願公開第109446135(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 69/14
G06F 13/10
(57)【特許請求の範囲】
【請求項1】
FPGAと通信するホストであって、
伝送データを特定するように上位レイヤアプリケーションに公開される呼出インターフェースを定義するためのソフトウェアインターフェースモジュールと、
前記呼出インターフェースにより前記伝送データを取得し、前記伝送データをプロトコルパケットモジュールに送信するホストインターフェースチップcableオブジェクトを管理し、少なくとも二つのcableオブジェクトに同時に並列にアクセスすることを許可するリソース管理モジュールと、
前記伝送データを受信し、FPGAのインターフェースプロトコルおよび前記cableオブジェクトに対応するチャンネルプロトコルに基づいて、伝送データをカプセル化してデータパケットを取得し、前記データパケットをホストチャンネルインターフェースモジュールに送信する前記プロトコルパケットモジュールと、
前記データパケットを受信し、前記データパケットをFPGAインターフェースチップと合意されたプリセットデータフォーマットに基づいてパッケージ化し、チャンネルにより送信する前記ホストチャンネルインターフェースモジュールと、を含む
ことを特徴とするFPGAと通信するホスト。
【請求項2】
請求項1に記載のFPGAと通信するホストであって、
前記ホストチャンネルインターフェースモジュールが前記データパケットを送信した後、前記ホストとFPGAインターフェースチップとの接続を遮断するインターフェースリリースモジュールをさらに含む
ことを特徴とするFPGAと通信するホスト。
【請求項3】
請求項1に記載のFPGAと通信するホストであって、
前記呼出インターフェースは、初期化インターフェース、データ書込インターフェース、データ読取インターフェース、およびリリースインターフェースが含まれFPGAと通信する基本ソフトウェアインターフェースを含む
ことを特徴とするFPGAと通信するホスト。
【請求項4】
請求項1に記載のFPGAと通信するホストであって、
前記cableオブジェクトは、USBケーブルが接続されるケーブル、イーサネットポートを介して接続される回路基板のケーブル、PCIEを介して接続されるPCIEカードのケーブル、およびプリンタパラレルポートのうちの少なくとも一つを含む
ことを特徴とするFPGAと通信するホスト。
【請求項5】
請求項4に記載のFPGAと通信するホストであって、
前記cableオブジェクトは、区別されるように唯一のMACアドレスとタイプ標識識別子が割り当てられる
ことを特徴とするFPGAと通信するホスト。
【請求項6】
請求項5に記載のFPGAと通信するホストであって、
前記cableオブジェクトがUSB ケーブルである場合、前記MACアドレスは、USBのEEPROMに記録されるシリアル番号であり、
前記cableオブジェクトがイーサネットバーチャルケーブルである場合、前記MACアドレスは、イーサネットバーチャルケーブルのIPアドレスまたはFPGAインターフェースチップリアルMACアドレスであり、
前記cableオブジェクトがPCIEボードのケーブルである場合、前記MACアドレスは、PCIEバスのアドレスまたはPCIEバスのインターフェースチップのシリアル番号であり、
前記cableオブジェクトがプリンタパラレルポートである場合、前記MACアドレスは、パラレルポートアドレスである
ことを特徴とするFPGAと通信するホスト。
【請求項7】
請求項4に記載のFPGAと通信するホストであって、
前記リソース管理モジュールは、アクセスが許可されるcableオブジェクトをスキャンしてリストを作成する
ことを特徴とするFPGAと通信するホスト。
【請求項8】
請求項7に記載のFPGAと通信するホストであって、
前記呼出インターフェースは、アクセス可能なcableオブジェクトを取得するプローブインターフェースをさらに含み、
前記リソース管理モジュールは、前記上位レイヤアプリケーションが前記FPGAと通信するアクセスcableオブジェクトを特定するように、アクセスcableオブジェクトをスキャンしてリストを作成した後、前記プローブインターフェースを介して前記リストを前記上位レイヤアプリケーションに返信する
ことを特徴とするFPGAと通信するホスト。
【請求項9】
請求項1から8のいずれか一項に記載のFPGAと通信するホストであって、
前記ホストチャンネルインターフェースモジュールは、前記FPGAインターフェースチップの実装方式に基づいて前記FPGAインターフェースチップと前記プリセットデータフォーマットを合意する
ことを特徴とするFPGAと通信するホスト。
【請求項10】
請求項9に記載のFPGAと通信するホストであって、
前記FPGAインターフェースチップがFT2232HのUSBインターフェースチップを含む場合、前記プリセットデータフォーマットは、コマンドコードおよびデータ長で構成されるパケットヘッダと、データと、を含む
ことを特徴とするFPGAと通信するホスト。
【請求項11】
通信システムであって、
請求項1から10のいずれか一項に記載のFPGAと通信するホストと、
前記ホストから送信されるデータパケットを受信し、前記データパケットをFPGAに必要な通信信号に変換してFPGAと直接通信を行うFPGAインターフェースチップと、を備える、
ことを特徴とする通信システム
【請求項12】
請求項11に記載の通信システムであって、
前記FPGAインターフェースチップは、イーサネット、USB、LTP、およびワイヤレスネットを含む
ことを特徴とする通信システム
【請求項13】
請求項12に記載の通信システムであって、
前記FPGAインターフェースチップがFT2232HのUSBインターフェースチップを含む場合、前記プリセットデータフォーマットは、コマンドコードおよびデータ長で構成されるパケットヘッダと、データと、を含む
ことを特徴とする通信システム
【請求項14】
請求項11に記載の通信システムであって、
前記FPGAインターフェースチップは、初期化インターフェースを介して前記FPGAと通信するホストに接続される
ことを特徴とする通信システム
【請求項15】
請求項11に記載の通信システムであって、
前記FPGAがサポートするインターフェースプロトコルは、JTAG、I2C、SPI、および並列インターフェースを含む
ことを特徴とする通信システム
【請求項16】
請求項11に記載の通信システムであって、
前記FPGAインターフェースチップは、請求項1から9のいずれか一項に記載のFPGAと通信するホストから送信されるデータパケットを受信するチャンネルインターフェースモジュールを含む
ことを特徴とする通信システム
【請求項17】
FPGAと通信する方法であって、
FPGAと通信するホストのソフトウェアインターフェースモジュールが、伝送データを特定可能に上位レイヤアプリケーションに公開される呼出インターフェースを定義するステップと、
FPGAと通信する前記ホストのリソース管理モジュールが、前記呼出インターフェースにより前記伝送データを取得し、前記伝送データをプロトコルパケットモジュールに送信するホストインターフェースチップcableオブジェクトを管理し、少なくとも二つのcableオブジェクトに同時に並列にアクセスすることを許可するステップと、
前記プロトコルパケットモジュールが、前記伝送データを受信し、FPGAのインターフェースプロトコルおよび前記cableオブジェクトに対応するチャンネルプロトコルに基づいて、伝送データをカプセル化してデータパケットを取得し、前記データパケットを前記FPGAと通信するホストのホストチャンネルインターフェースモジュールに送信するステップと、
前記ホストチャンネルインターフェースモジュールが、前記データパケットを受信し、前記データパケットをFPGAインターフェースチップと合意されたプリセットデータフォーマットに基づいてパッケージ化し、チャンネルを介してFPGAインターフェースチップに送信するステップと、
前記FPGAインターフェースチップが、前記データパケットを受信し、前記データパケットをFPGAに必要な通信信号に変換し、FPGAと直接通信を行うステップと、を含む
ことを特徴とするFPGAと通信する方法。
【請求項18】
請求項17に記載のFPGAと通信する方法であって、
前記FPGAインターフェースチップが前記データパケットを受信した後、
前記FPGAと通信するホストが、インターフェースをリリースすることにより、前記FPGAインターフェースチップとの接続を遮断するステップをさらに含む
ことを特徴とするFPGAと通信する方法。
【請求項19】
請求項17または18に記載のFPGAと通信する方法であって、
前記リソース管理モジュールがホストインターフェースチップcableオブジェクトを管理するステップは、
前記リソース管理モジュールは、アクセスが許可されるcableオブジェクトをスキャンしてリストを作成するステップを含む
ことを特徴とするFPGAと通信する方法。
【請求項20】
請求項19に記載のFPGAと通信する方法であって、
前記呼出インターフェースは、アクセス可能なcableオブジェクトを取得するプローブインターフェースをさらに含み、
前記リソース管理モジュールがホストインターフェースチップcableオブジェクトを管理するステップは、
前記リソース管理モジュールが、前記上位レイヤアプリケーションが前記FPGAと通信するアクセスcableオブジェクトを特定するように、アクセスcableオブジェクトをスキャンしてリストを作成した後、前記プローブインターフェースを介して前記リストを前記上位レイヤアプリケーションに返信するステップをさらに含む
ことを特徴とするFPGAと通信する方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラマブルロジックデバイス分野に関する。具体的には、FPGAと通信するホスト、FPGAと通信する方法、およびFPGAインターフェースチップに関する。
【背景技術】
【0002】
FPGA(Field-Programmable Gate Array、フィールド・プログラマブル・ゲート・アレイ)は、プログラマブルロジックデバイスである。FPGAチップでは、通常、オンチップ制御システムが統合される。当該オンチップ制御システムにおいて、ユーザがJTAG(Joint Test Action Group、共同テストアクショングループ)や、SPI(Serial Peripheral Interface、シリアル・ペリフェラル・インターフェース)のようなインターフェースを介してFPGAに対して配置し、デバッグしまたはソフトコアデータとハードコアデータを読み取り、書き込みなどの操作を行うことが許可される。通信プロセスでは、上位コンピュータは、異なるチャンネルを利用してFPGAと通信することができる。受信側には、通常、ホストのメッセージを送受信し、FPGAと直接通信するために用いられるインターフェースチップが設けられる。当該インターフェースチップで構成されるサブシステムは、一般にダウンローダ(cable)と呼ばれる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本発明に係る態様により提供されるFPGAと通信するホスト、FPGAと通信する方法、およびFPGAインターフェースチップは、主にインターフェースソフトウェアの設計において、スケーラビリティが低く、複数種の通信リソースを並行して使用してFPGAインターフェースチップと通信することができないという従来の問題を解決することを目的とする。
【課題を解決するための手段】
【0004】
本発明のある態様によれば、伝送データを特定するように上位レイヤアプリケーションに公開される呼出インターフェースを定義するためのソフトウェアインターフェースモジュールと、前記呼出インターフェースにより前記伝送データを取得し、前記伝送データをプロトコルパケットモジュールに送信するホストインターフェースチップcableオブジェクトを管理し、少なくとも二つのcableオブジェクトに同時に並列にアクセスすることを許可するリソース管理モジュールと、前記伝送データを受信し、FPGAのインターフェースプロトコルおよび前記cableオブジェクトに対応するチャンネルプロトコルに基づいて、伝送データをカプセル化してデータパケットを取得し、前記データパケットをホストチャンネルインターフェースモジュールに送信する前記プロトコルパケットモジュールと、前記データパケットを受信し、前記データパケットをFPGAインターフェースチップと合意されたプリセットデータフォーマットに基づいてパッケージ化し、チャンネルにより送信する前記ホストチャンネルインターフェースモジュールと、を含むFPGAと通信するホストが提供される。
【0005】
本発明の他の態様によれば、前記FPGAインターフェースチップは、前記ホストから送信されるデータパケットを受信し、前記データパケットをFPGAに必要な通信信号に変換し、FPGAと直接通信を行うFPGAインターフェースチップが提供される。
【0006】
本発明のその他の態様によれば、FPGAと通信するホストのソフトウェアインターフェースモジュールが、伝送データを特定可能に上位レイヤアプリケーションに公開される呼出インターフェースを定義するステップと、FPGAと通信する前記ホストのリソース管理モジュールが、前記呼出インターフェースにより前記伝送データを取得し、前記伝送データをプロトコルパケットモジュールに送信するホストインターフェースチップcableオブジェクトを管理し、少なくとも二つのcableオブジェクトに同時に並列にアクセスすることを許可するステップと、前記プロトコルパケットモジュールが、前記伝送データを受信し、FPGAのインターフェースプロトコルおよび前記cableオブジェクトに対応するチャンネルプロトコルに基づいて、伝送データをカプセル化してデータパケットを取得し、前記データパケットを前記FPGAと通信するホストのホストチャンネルインターフェースモジュールに送信するステップと、前記ホストチャンネルインターフェースモジュールが、前記データパケットを受信し、前記データパケットをFPGAインターフェースチップと合意されたプリセットデータフォーマットに基づいてパッケージ化し、チャンネルを介してFPGAインターフェースチップに送信するステップと、前記FPGAインターフェースチップが、前記データパケットを受信し、前記データパケットをFPGAに必要な通信信号に変換し、FPGAと直接通信を行うステップと、を含むFPGAと通信する方法が提供される。
【発明の効果】
【0007】
本発明の態様は、下記の有益な効果を奏する。
従来のインターフェースソフトウェアの設計において、スケーラビリティが低く、複数種の通信リソースを並行に使用してFPGAインターフェースチップと通信できないという問題を解決するために、FPGAと通信するホストおよびFPGAインターフェースチップが提供される。本発明に係るソフトウェアインターフェースモジュールは、上位レイヤアプリケーションに公開される呼出インターフェースを定義し、リソース管理モジュールは、ホストインターフェースチップcableオブジェクトを管理し、少なくとも二つのcableオブジェクトに同時に並列にアクセスすることを許可し、cableオブジェクトは、呼出インターフェースを共有し、プロトコルパケットモジュールは、FPGAのインターフェースプロトコルおよびcableオブジェクトに対応するチャンネルプロトコルに基づいて、伝送データをカプセル化してデータパケットを取得し、ホストチャンネルインターフェースモジュールは、データパケットをFPGAインターフェースチップと合意されたプリセットデータフォーマットに基づいてパッケージ化し、チャンネルにより送信する。すなわち、本発明のFPGAと通信するホストは、インターフェースソフトウェアを階層化することにより、複数のインターフェースリソースに並行にアクセスすることを図る。また、利用されるソフトウェアインターフェースは、同一であるため、FPGAクラスターリソース管理に適する。また、本発明のFPGAと通信するホストは、移植性が良いため、完全に階層化されて異なるプラットフォームに移植されても、ホストチャンネルインターフェースだけが異なり、操作プロセスを変更する必要がないため、全体的なスケーラビリティと保守性が向上する。また、FPGA通信インターフェースの各操作を完全に抽象化することにより、呼出インターフェースソフトウェアの上位レイヤコードは、チャンネル、受信側ケーブル、インターフェースプロトコルのようなディテールを考慮しなくてよく、特定のFPGAの特定のインターフェースの通信プロセスだけに注目すればよい。
【図面の簡単な説明】
【0008】
図1】本発明の実施例1に係るFPGAと通信するホストの構造模式図である。
図2A】本発明の実施例1に係るFPGAと通信するホストがイーサネットを介してFPGAインターフェースチップに接続される模式図である。
図2B】本発明の実施例1に係るFPGAと通信するホストがワイヤレスネットを介してFPGAインターフェースチップに接続される模式図である。
図2C】本発明の実施例1に係るFPGAと通信するホストがUSBまたはLPTなどのケーブルを介してFPGAインターフェースチップに接続される模式図である。
図3】本発明の実施例1に係るFPGAと通信するホストがイーサネットを介してFPGAインターフェースチップと通信する模式図である。
図4】本発明の実施例1に係るプリセットデータフォーマットの模式図である。
図5】本発明の実施例2に係るFPGAインターフェースチップがFPGAに接続される模式図である。
図6】本発明の実施例2に係るソフトウェア階層構造図である。
図7】本発明の実施例3に係るFPGAと通信するホストがFPGAと通信するプロセス図である。
図8】本発明の実施例3に係るFPGAと通信する方法のプロセス図である。
【発明を実施するための形態】
【0009】
以下、図面と実施例を参照しながら本発明を詳しく説明する。
【0010】
本発明の目的、技術的解決策、及び利点をより明確に説明するために、図面を参照しながら、本発明の実施例をさらに詳しく説明する。ここで、記載される具体的な実施例は、本発明を説明するためのものに過ぎず、本発明を限定するものではない。
【0011】
従来のFPGAメーカが開発した通信インターフェースソフトウェアには、一定の制限がある。例えば、ホストのUSBインターフェースケーブルを利用しなければFPGAと通信することができないため、複数のリソースを並行に使用することはできない。これにより、一度に一人のユーザしかリソースを利用することができないため、スケーラビリティが低いなどの欠点がある。一部のFPGAメーカは、ユーザがケーブル(実際、イーサネットインターフェースを介して回路基板上のFPGAにアクセスするもの)をローカルで仮想して通常のUSBケーブルとして利用できるように、ザイリンクスバーチャルケーブル(Xilinx Virtual Cable)のようなバーチャルケーブルのコンセプトを提案した。しかしながら、実際、このコンセプトを実現するためのソフトウェアが相互に独立したものであるため、FPGAの特定のオンチップインターフェースの通信プロセスコードを書き込む際に、異なるチャンネルに対して別々に書き込む必要がある。このため、開発リソースが浪費され、メンテナンスコストが増加する。上述の事情に鑑み、本発明は、以下の対策案を提示する。
【0012】
実施例1
本実施例では、FPGA通信インターフェースの各操作を完全に抽象化することにより、呼出インターフェースソフトウェアの上位レイヤコードは、チャンネル、受信側ケーブル、インターフェースプロトコルのようなディテールを考慮しなくてよく、特定のFPGAの特定のインターフェースの通信プロセスだけに注目すればよい。これにより、ソフトウェア全体のスケーラビリティと保守性が向上する。図1に示すように、本実施例に係るホストは、FPGAと通信する。当該ホストは、コンピュータ、ノートパソコンなどであってもよいが、この限りではない。当該ホストは、ソフトウェアインターフェースモジュール101、リソース管理モジュール102、プロトコルパケットモジュール103、およびホストチャンネルインターフェースモジュール104を含む。
【0013】
ソフトウェアインターフェースモジュール101は、上位レイヤアプリケーションに公開される呼出インターフェースを定義するためのものである。呼出インターフェースは、伝送データを特定するためのものである。
【0014】
リソース管理モジュール102は、ホストインターフェースチップcableオブジェクトを管理し、少なくとも二つのcableオブジェクトに同時に並列してアクセスすることを許可する。前記cableオブジェクトは、前記呼出インターフェースにより伝送データを取得し、伝送データをプロトコルパケットモジュール103に送信する。
【0015】
プロトコルパケットモジュール103は、伝送データを受信し、FPGAのインターフェースプロトコルおよび前記cableオブジェクトに対応するチャンネルプロトコルに基づいて、伝送データをカプセル化してデータパケットを取得し、データパケットをホストチャンネルインターフェースモジュール104に送信する。
【0016】
ホストチャンネルインターフェースモジュール104は、データパケットを受信し、データパケットをFPGAインターフェースチップと合意されたプリセットデータフォーマットに基づいてパッケージ化し、チャンネルにより送信する。
【0017】
係る実施例では、ソフトウェアインターフェースモジュール101によりユーザに公開される呼出インターフェースは、伝送データを特定することができる。リソース管理モジュール102によりFPGAインターフェースチップと通信するcableオブジェクトが確定される。cableオブジェクトは、呼出インターフェースにより伝送データを取得し、伝送データをプロトコルパケットモジュール103に送信する。プロトコルパケットモジュール103は、FPGAのインターフェースプロトコルおよび前記cableオブジェクトに対応するチャンネルプロトコルに基づいて、伝送データをカプセル化してデータパケットを取得し、データパケットをホストチャンネルインターフェースモジュール104に送信する。
【0018】
ここで、cableオブジェクトが異なれば、これに対応するチャンネルが異なる。cableオブジェクトは、USB(Universal Serial Bus、ユニバーサルシリアルバス)ケーブルが接続されるケーブル、イーサネットポートを介して接続される回路基板のケーブル、PCIE(peripheral component interconnect express、高速シリアルコンピュータ拡張バス規格)を介して接続されるPCIEカードのケーブル、およびプリンタパラレルポートに接続されるケーブルのうちの少なくとも一つを含む。cableオブジェクトに対応するチャンネルは、それぞれUSB、イーサネットポート、PCIE、およびプリンタパラレルポートである。ホストチャンネルインターフェースモジュール104は、チャンネルに関する処理のみを行い、データをパッケージ化する。そして、ホストチャンネルインターフェースモジュール104は、送信する際に、FPGAインターフェースチップと必要なデータパケットフォーマットを合意し、チャンネルに用いられるプロトコル規則に基づいてデータパケットを送信する必要がある。異なるFPGAインターフェースチップに対して、合意されたデータパケットフォーマットが異なる。
【0019】
係る実施例では、ソフトウェアインターフェースモジュール101は、FPGAと通信するホストのインターフェースソフトウェアライブラリとして、ユーザに公開されるインターフェースを含む。呼出インターフェースは、FPGAと通信する基本ソフトウェアインターフェースを含む。図2A図2B図2Cに示すように、FPGAと通信するホストは、イーサネット、USB、LPTのようなケーブルやWi-Fi(ワイヤレスネット)を介してFPGAインターフェースチップに接続される。理解できるように、異なるタイプのFPGAインターフェースチップ、例えばUSB、イーサネット、WIFIなどは、通信プロセスがほぼ同じであり、必要なプロセスとしては、初期化してから接続し、データを相互に読み取り、書き出し、最後にリリースすることである。図3に示すように、FPGAと通信するホストは、イーサネットを介してFPGAインターフェースチップと通信するプロセスであり、具体的には、FPGAインターフェースチップは、特定のポートを監視し、接続を待機する。そして、FPGAと通信するホストは、IP(Internet Protocol、インターネットプロトコル)アドレスに基づいてソケット(socket)の接続を初期化し、接続が成功した後、FPGAと通信するホストは、ソケットによりデータの読み取り/書き込みを行い、FPGAインターフェースチップは、ソケット内のデータをデカプセルし、当該データをFPGAに必要な信号に変換する。その後、FPGAと通信するホストがリリースし、ソケットの接続が遮断され、FPGAインターフェースチップは、特定のポートを再度監視する。
【0020】
そこで、本実施例では、FPGAと通信するホストが異なるタイプのFPGAインターフェースチップと通信できるように、ソフトウェアインターフェースモジュール101を統合して抽象化することにより、固定された基本ソフトウェアインターフェースが形成される。すなわち、上位レイヤソフトウェアは、各FPGAインターフェースチップと通信する際に、同じ基本ソフトウェアインターフェースを利用することができる。このため、本実施例に係る基本ソフトウェアインターフェースは、初期化(Init)インターフェース、データ書き込み(Write)インターフェース、データ読み取り(Read)インターフェース、およびリリース(Release)インターフェースを含む。例えば、FPGAと通信するホストがイーサネットを利用してFPGAインターフェースチップと通信する場合、初期化とは、TCP(Transmission Control Protocol、伝送制御プロトコル)/IPプロトコルを利用してシステムのソケットによりリモートのFPGAインターフェースチップとの接続をトライし、接続が成功した後、データパケットを送信し、特定の初期化操作を行い、FPGAインターフェースチップがデータパケットに対応する信号をホストに返信することであり、リリースとは、接続を遮断することであり、書き込みとは、バイナリデータをソケットへ書き込むことであり、読み取りとは、データをソケットから読み取ることである。FPGAと通信するホストがUSBを利用してFPGAインターフェースチップと通信する場合、初期化とは、システムインターフェースを呼び出してUSBデバイスを申請し、初期化操作を行うことであり、リリースとは、リソースをシステムへリリースすることであり、読み取り/書き込みとは、システムインターフェースを利用してデータを読み取り、書き込むことである。もちろん、FPGAと通信するホストとFPGAインターフェースチップとの間で伝送されたデータは、いずれも合意されたプリセットデータフォーマットに基づいてパッケージ化されるものである。
【0021】
係る実施例では、伝送データが前記基本ソフトウェアインターフェースに伝送される過程において、リクエストオブジェクトを定義する必要がある。リクエストオブジェクトが構造体であるため、伝送データの構造は、リクエストオブジェクトを含む。前記リクエストオブジェクトは、事前に定義された操作コード、データ、オブジェクト、コールバック関数、および拡張void(型なし)ポインターのうちの少なくとも一つを含み、上位レイヤコードが統一された形式で基本ソフトウェアインターフェースにアクセスすることが許可される。
【0022】
係る実施例では、リソース管理モジュール102は、利用可能なすべてのcableオブジェクトを管理する。当該cableオブジェクトは、USBケーブルに接続されるケーブルのような実在のものであってもよく、イーサネットポートを介して接続される回路基板のインターフェースチップまたはPCIEを介して接続されるPCIEカードのインターフェースチップのようなバーチャルしたものであってもよい。リソース管理モジュール102は、各タイプのcableオブジェクトの具体的な数および占用される状況を具体的に管理し、少なくとも二つのcableオブジェクトに同時に並列にアクセスすることを許可する。もちろん、当該少なくとも二つのcableオブジェクトは干渉しない。本実施例では、各cableオブジェクトを容易に管理するために、各cableオブジェクトは、区別されやすいように、唯一のMACアドレスと識別子が割り当てられる。これにより、リソース管理モジュール102は、cableオブジェクトを唯一に特定することができる。
【0023】
係る実施例では、cableオブジェクトに割り当てられる識別子は、当該cableオブジェクトのタイプ属性を定義するために用いられる。当該識別子は、FPGAと通信するホストによってカスタム設定される。例えば、cableオブジェクトがUSB ケーブルである場合、cableオブジェクトに対応する識別子がUSBであり、cableオブジェクトがイーサネットバーチャルケーブルである場合、cableオブジェクトに対応する識別子がイーサネットである。係る実施例では、ケーブルのタイプが明示されれば、識別子は、カスタム番号などであってもよい。
【0024】
ここで、ケーブル自身が実在のMACを有するか否かに関わらず、唯一のMACアドレスが唯一のリソース識別子としてケーブルに割り当てられる。具体的には、前記cableオブジェクトがUSB ケーブルである場合、前記MACアドレスは、USBのEEPROMに記録されるシリアル番号であり、前記cableオブジェクトがイーサネットバーチャルケーブルである場合、前記MACアドレスがイーサネットバーチャルケーブルのIPアドレスまたはFPGAインターフェースチップリアルMACアドレスであり、前記cableオブジェクトがPCIEボードのケーブルである場合、前記MACアドレスは、PCIEバスのアドレスまたはPCIEバス上のインターフェースチップ内のシリアル番号であり、前記cableオブジェクトがプリンタパラレルポートである場合、前記MACアドレスがパラレルポートアドレスである。
【0025】
ここで、ユーザは、FPGAインターフェースチップに接続される任意のcableオブジェクトを選択してもよい。具体的には、リソース管理モジュール102は、アクセス可能なcableオブジェクトリストをスキャンしてリストを作成した後、当該リストをユーザに提供する。
【0026】
係る実施例では、呼出インターフェースは、アクセス可能なcableオブジェクトを取得するプローブ(Probe)インターフェースを含み、当該プローブインターフェースは、現在アクセス可能なcableオブジェクトの使用状況を検出することができる。上位レイヤアプリケーションが前記FPGAと通信するアクセスcableオブジェクトを特定するために、リソース管理モジュール102は、リストを作成した後、プローブインターフェースによりリストを前記上位レイヤアプリケーションに返信する。
【0027】
係る実施例では、プロトコルパケットモジュール103は、主にFPGAのインターフェースプロトコルおよびチャンネルプロトコルに基づいて、受信した伝送データをカプセル化する。ここで、FPGAのハードコアとソフトコアは、通常、JTAG(Joint Test Action Group、ジョイントテストアクショングループ)、I2C(Inter-Integrated Circuit、2線式シリアルバス)、SPI(Serial Peripheral Interface、シリアルペリフェラルインターフェース)、および並列インターフェースなどのインターフェースをサポートする。これらのインターフェースプロトコルは、プロトコルの関連情報に基づいてアプリケーションレイヤで特別な処理を行う必要がある場合がある。
【0028】
例えば、JTAGプロトコルについては、JTAGチェーンがある場合、実際、このチェーンに数多くのデバイスが設けられ、そのうちの一部がFPGAである可能性があり、そうでない可能性もある。このように、JTAGプロトコルソフトウェアは、必要に応じて一定の処理を行うことがある。例えば、JTAGコマンドを書き込む場合、チェーンの状況に応じて必要なバイパスコマンドを先に書き込む必要があり、JTAGデータを書き込む場合、1などを適当に足す必要がある。伝送データが伝送される場合、プロトコルパケットモジュール103は、チャンネルに用いられるプロトコルに基づいて伝送データを再度カプセル化する。例えば、イーサネットに対応するチャンネルを利用する場合、TCP/IPプロトコルに基づいて伝送データを再度カプセル化してホストチャンネルインターフェースモジュール104に送信するデータパケットを取得する。そして、TCP/IPデータをFPGAインターフェース情報により解析することで、抽出されるコンテンツは、合意されたプリセットデータパケットフォーマットである。
【0029】
係る実施例では、ホストチャンネルインターフェースモジュール104とFPGAインターフェースチップとの間を通信するために、特定のフォーマットのデータを合意する必要がある。FPGAインターフェースチップがデータパケットを受信してデータパケットを解析することをしやすくするために、合意されたプリセットデータフォーマットは、FPGAインターフェースチップの実装方式に関連するものである。このため、ホストチャンネルインターフェースモジュール104は、FPGAインターフェースチップの実装方式に基づいて前記FPGAインターフェースチップと前記プリセットデータフォーマットを合意する。電子部品間のデジタル信号の通信において、バイナリデータについて特定のフォーマットを合意し、当該フォーマットでバイナリデータを送信する。
【0030】
ここで、前記FPGAインターフェースチップは、FT2232HのUSBインターフェースチップを含む。前記プリセットデータフォーマットは、パケットヘッダと、データと、を含む。前記パケットヘッダは、コマンドコードおよびデータ長で構成される。図4に示すように、32ビット(bits)コマンドコードは、JTAGプロトコルの状態遷移、属性の設定、JTAGデータの読み取り/書き込みのようなFPGAインターフェースチップが実行する必要のある操作を決定する。32ビットのデータ長は、後ろのデータ量を示す。
【0031】
係る実施例では、FPGAインターフェースチップは、MCU(Microcontroller Unit、マイクロコントロールユニット)をイーサネットポートチップと組み合わせて実現される。FPGAインターフェースチップがプログラマブルであるため、FPGAインターフェースチップが受信するネットデータパケットのコンテンツフォーマットを合意することができる。そして、両者は、合意されたコンテンツに基づいてデータパケットをデカプセルすることができる。
【0032】
本実施例により提供されるFPGAと通信するホストは、階層化されるインターフェースソフトウェア設計モードを含み、ソフトウェアインターフェースモジュール101、リソース管理モジュール102、プロトコルパケットモジュール103、およびホストチャンネルインターフェースモジュール104により、FPGA通信インターフェースの各操作が完全に抽象化される。これにより、呼出インターフェースソフトウェアの上位レイヤコードは、チャンネル、受信側ケーブル、インターフェースプロトコルのようなディテールを考慮しなくてよく、特定のFPGAの特定のインターフェースの通信プロセスだけに注目すればよい。これにより、ソフトウェア全体のスケーラビリティと保守性が向上する。
【0033】
実施例2
図5に示すように、本実施例により提供されるFPGAインターフェースチップは、FPGA側チャンネルインターフェースモジュールを含む。FPGA側チャンネルインターフェースモジュールは、FPGAと通信するホストから送信されるデータパケットを受信する。そして、FPGAインターフェースチップは、FPGAと通信するホストのホストチャンネルインターフェースモジュール104と合意されたプリセットデータフォーマットに基づいて前記データパケットを解析し、前記データパケットをFPGAに必要な通信信号に変換し、FPGAと直接通信を行う。
【0034】
ここで、FPGA側チャンネルインターフェースモジュールがデータを解析することは、チップレベルの動作であり、すなわちチャンネルから直接データを読み取り、データを解析した後、FPGAに必要なJTAG、SPIなどの通信信号に直接変換し、FPGAと直接通信を行う。
【0035】
例えば、インターフェースチップがUSB ケーブルである場合、USBケーブルによりFPGAと通信するホストのデータを取得し、JTAGなどのプロトコル信号に変換し、FPGAと通信を行う。ここで、前記FPGAインターフェースチップは、FT2232HのUSBインターフェースチップを含む。前記プリセットデータフォーマットは、パケットヘッダと、データと、を含む。前記パケットヘッダは、コマンドコードおよびデータ長で構成される。コマンドコードは、JTAGプロトコルの状態遷移、属性の設定、JTAGデータの読み取り/書き込みのようなFPGAインターフェースチップが実行する必要のある操作を決定する。データ長は、後ろのデータ量を示す。
【0036】
本実施例によれば、FPGAと通信するインターフェース設計が提供される。階層化することによりインターフェースソフトウェアが図られる。図6に示すように、当該インターフェース設計は、ソフトウェアインターフェース、リソース管理、cableオブジェクト、プロトコルパケット、ホストチャンネルインターフェース、およびFPGA側チャンネルインターフェースを備える。
【0037】
ソフトウェアインターフェースは、上位レイヤアプリケーションに公開されるインターフェースを定義し、リソースのリリースと申請を行うインターフェース、リソースリストを取得するプローブインターフェース、FPGAに直接関連する各プロトコルの読み書きインターフェース、初期化インターフェースなどを含む。これらの基本インターフェースを定義することにより、FPGAと通信するホストのインターフェースは、操作ユニット(オペレータ)に抽象化される。各タイプのオペレータは、対応する機能が図られる。これらのオペレータは、データの直接読み取り/書き込み、またはインターフェースの変換、初期化とリリース、およびリソース状況の収集のみを行う。異なるオペレータは、独自の特性に応じてカスタム機能を発揮するが、上位レイヤ機能は、これらの基本インターフェースしか想定していない。
【0038】
リソース管理とは、リソースの管理を図り、cableリソースを管理し、複数の通信リソースに同時に並列にアクセスすることを許可するものである。リソース管理は、各タイプのリソース数、リソースが占用される状況などのすべての利用可能なcableリソースを管理する。リソース管理レイヤでリソースのリリースと申請を行うメカニズムが図られる。ユーザは、オブジェクトを申請するときにハンドルオブジェクトを取得し、これらのハンドルオブジェクトを用いて操作を行う。リソース管理は、自動的に利用可能なリソースをスキャンし、当該リストをユーザに提供する。プローブ機能インターフェースにおいて、返信されるのは、関連するリソースのリストである。ユーザは、選択した後、当該リストに対応するcableリソースに並列にアクセスすることができる。各cableリソースは、MAC、タイプなどによって唯一に区別される。プロセスにとっては、当該リソース管理オブジェクトは、一例にすぎない。
【0039】
cableオブジェクトとは、USBケーブルに接続されるケーブルのような実在のものであってもよく、イーサネットポートを介して接続される回路基板のインターフェースチップまたはPCIEを介して接続されるPCIEカードのインターフェースチップのようなバーチャルしたものであってもよい。ソフトウェア設計レベルにおいて、これらのcableオブジェクトを一つのcableオブジェクトに抽象する必要がある。cableオブジェクトは、現在のタイプのcableにサポートされる各タイプのオペレータを統合し、統一されるハンドルソフトウェアインターフェースを実現することを目的とする。これにより、上位レイヤは、操作コードを伝送するだけでデータの読み取り/書き込みが図られる。cableオブジェクトは、初期化インターフェース,リリースインターフェースなどの基本インターフェースを提供する必要がある。これらのインターフェース方法は、関連するオペレータを呼び出してリソースの申隅とリリースを行うことである。
【0040】
プロトコルパケットレイヤとは、FPGAが用いるJTAG、SPIなどのプロトコルに関するデータを特定の規則に基づいてデータパケットに作成し、当該データパケットを処理するために下位レイヤのオペレータオブジェクトに送信するものである。下位レイヤのオペレータは、チャンネルに関する問題のみを処理し、FPGAに関するプロトコル操作は、一部のプロトコルオペレータを実現してより下位レイヤに位置するオペレータをパッケージ化することにより図られる。プロトコルオペレータが位置するレイヤにおける処理は、ユーザから伝送されたプロトコルに関するデータパケットを分割または再編成し、基本読み取り/書き込みインターフェースを呼び出して行う処理である。プロトコルのオペレータは、下位レイヤのオペレータを必要とし、基本的にすべての下位レイヤのオペレータは、同一のプロトコルに関するオペレータを共有する。
【0041】
ホストチャンネルインターフェースレイヤとは、主にシステムのドライブインターフェースを呼び出す下位レイヤのオペレータを実現し、チャンネルリクエストに基づいて上位レイヤから伝送されたデータを再度カプセル化して送信するものである。チャンネルが異なると、必要なエンコード方法も異なる。これは、FPGA側インターフェースにも関連する。データがチャンネルリクエストに基づいて送信された後、FPGA側チャンネルインターフェースに受信される。受信側が異なると、データパケットリクエストも異なるが、上位レイヤのソフトウェアは、特定のパケット条件を考慮せず、各受信側のプラットフォームごとに合意すればよい。そして、これらの合意に基づいて、独立したオペレータが図られる。
【0042】
FPGA側チャンネルインターフェースとは、FPGA側にインターフェースチップが設けられるものである。FPGA側チャンネルインターフェースが例えばUSB ケーブルであれば、インターフェースチップを有するケーブルである。当該ケーブルは、USBケーブルを介してFPGAと通信するホストのデータを取得し、JTAGなどのプロトコル信号に変換し、FPGAと通信を行う。インターフェースチップが異なると、必要な処理も異なるため、FPGAと通信するホスト側の協力が必要である。しかしながら、ほとんどの場合、これは、カプセル化されたデータを組み合わせる方法の違いにすぎない。受信側は、インターフェースハードウェアをより柔軟に選択することができるので、FPGAと通信するホスト側は、受信側のハードウェア自身のリクエストによってデータをカプセル化する。この場合、インターフェースハードウェアチップは、データのデカプセルをサポートし、FPGAに必要な通信信号を変換し、FPGAと直接通信を行う必要がある。
【0043】
本実施例では、階層化されたインターフェースソフトウェア設計モードは、以下の利点を有する。上位レイヤアプリケーションは、インターフェースチップ、FPGA自身のインターフェースプロトコルなどの特別な処理ディテールを考慮しなくてよい。これにより、スケーラビリティと保守性が向上する。チャンネルの如何を問わず、インターフェースリソースが上位レイヤアプリケーションに公開されることが決まっている。また、干渉しないインターフェースリソースは、並行してアクセスされるため、サーバープロセスとして利用される。イーサネットなどの相互接続構造を導入できれば、特定の分散特性も図られる。上位レイヤソフトウェアは、ネットワークにおける各FPGAリソースと通信する際に同じソフトウェアインターフェースを利用することができるため、FPGAクラスターリソースに適する。また、本発明のFPGAと通信するホストは、移植性が良いため、完全に階層化されて異なるプラットフォームに移植されても、ホストチャンネルインターフェースだけが異なるため、このレイヤで各オペレータを置き換えることにより、コードの移行が実現され、上位レイヤの操作プロセスを変更する必要がない。さらに、インターフェースソフトウェアは、様々な環境に適用し、ワイヤレス、有線などによりFPGAと通信することができる。
【0044】
実施例3
本実施例は、FPGAと通信するホストのFPGAとの通信プロセスについて説明する。図7に示すように、S701において、FPGAと通信するホスト側は、プローブインターフェースに基づいてFPAGと通信するcableリソースを特定する。
【0045】
本実施例では、プローブインターフェースは、主に現在のタイプのアクセス可能なリソースの総数を検出し、リストを作成して上位レイヤソフトウェアに返信する。これにより、ユーザは、どのcableリソースを利用してFPAGと通信するかを決定する。ここで、各cableリソースを区別するために、cableリソースには、MACアドレス及び識別子が割り当てられる。USBケーブルに接続されるケーブルおよびイーサネットがシミュレーションしたケーブルを利用してFPAGと通信することが決定されると、S702において、FPGAと通信するホスト側は、初期化インターフェースを介してFPAGのFPAGインターフェースチップに接続される。
【0046】
イーサネットを利用する場合、初期化とは、TCP/IPプロトコルとシステムのソケットを利用してリモートで受信側に接続することであり、USBを利用する場合、初期化とは、システムインターフェースを呼び出してUSBデバイスを申請して初期化操作を行うことである。
【0047】
S703において、書き込みデータインターフェースを利用してバイナリデータを書き込む際に、FPGAと通信するホスト側は、FPGAに用いられるインターフェースプロトコルに関するデータを特定の規則に基づいて組み合わせてデータパケットを作成する。
【0048】
イーサネットを利用する場合、バイナリデータをソケットに書き込み、USBを利用する場合、システムインターフェースを利用してバイナリデータを書き込む。その後、JTAG、SPIなどのプロトコルに関するデータを利用して特定の規則に基づいてバイナリデータを組み合わせてデータパケットを作成する。
【0049】
S704において、FPGAと通信するホスト側は、プリセットデータフォーマットに基づいて組み合わせてデータパケットを作成し、cableリソースに対応するチャンネルを介してFPAGインターフェースチップに送信する。
【0050】
本実施例では、FPAGインターフェースチップは、FT2232HのUSBインターフェースチップを含む。プリセットデータフォーマットは、パケットヘッダと、データと、を含む。パケットヘッダは、コマンドコードおよびデータ長で構成される。コマンドコードは、JTAGプロトコルの状態遷移、属性の設定、JTAGデータの読み取り/書き込みのようなFPGAインターフェースチップが実行する必要のある操作を決定する。データ長は、後ろのデータ量を示す。FPAGインターフェースチップは、MCUをイーサネットポートチップと組み合わせて実現される。FPGAインターフェースチップがプログラマブルであるため、FPGAインターフェースチップが受信するネットデータパケットのコンテンツフォーマットを合意することができる。イーサネットを利用する場合、データパケットが伝送される際に、利用されるTCP/IPプロトコルは、データパケットを再度カプセル化してイーサネットポートチップに送信する。
【0051】
S705において、FPAGインターフェースチップは、チャンネルからデータパケットを読み取り、解析し、FPGAに必要な通信信号に変換し、FPGAと直接通信を行う。
【0052】
FPAGインターフェースチップは、プリセットデータフォーマットに基づいてデータパケットを解析する。FPAGインターフェースチップは、データをFPGAと通信するホスト側に送信するときもプリセットデータフォーマットに基づいてデータをパッケージ化する。
【0053】
S706において、FPGAと通信するホスト側は、インターフェースをリリースすることにより、FPAGインターフェースチップとの接続を遮断する。
【0054】
本発明の実施例によりFPGAと通信する方法が提供される。図8に示すように、当該方法は、以下のステップにより実現される。
【0055】
S11において、FPGAと通信するホストのソフトウェアインターフェースモジュール101は、伝送データを特定するように上位レイヤアプリケーションに公開される呼出インターフェースを定義する。
【0056】
S12において、FPGAと通信するホストのリソース管理モジュール102は、呼出インターフェースにより伝送データを取得し、伝送データをプロトコルパケットモジュール103に送信するホストインターフェースチップcableオブジェクトを管理し、少なくとも二つのcableオブジェクトに同時に並列にアクセスすることを許可する。
【0057】
S13において、プロトコルパケットモジュール103は、伝送データを受信し、FPGAのインターフェースプロトコルおよびcableオブジェクトに対応するチャンネルプロトコルに基づいて、伝送データをカプセル化してデータパケットを取得し、データパケットをFPGAと通信するホストのホストチャンネルインターフェースモジュール104に送信する。
【0058】
S14において、ホストチャンネルインターフェースモジュール104は、前記データパケットを受信し、データパケットをFPGAインターフェースチップと合意されたプリセットデータフォーマットに基づいてパッケージ化し、チャンネルを介してFPGAインターフェースチップに送信する。
【0059】
S15において、FPGAインターフェースチップは、データパケットを受信し、データパケットをFPGAに必要な通信信号に変換し、FPGAと直接通信を行う。
【0060】
また、FPGAインターフェースチップがデータパケットを受信した後、FPGAと通信する方法は、以下のステップをさらに有する。FPGAと通信するホストは、インターフェースをリリースすることにより、FPAGインターフェースチップとの接続を遮断する。
【0061】
本発明の実施例では、FPGAと通信する方法についての説明および当該方法の有益效果は、いずれも上述した実施例に係るFPGAと通信するホストについての説明および有益效果と同じであるため、ここで省略する。なお、「含む」、「有する」、またはその他の変形は、非排他的に含むことを意図しているため、一連の要素を含むプロセス、方法、物品、またはデバイスは、それらの要素を含むだけでなく、リストされていない他の要素を含み、或いはプロセス、方法、物品、またはデバイスに固有する要素を含む場合がある。
【0062】
上述した本発明の実施例の番号は、説明のみを目的とし、実施例の優劣を示すものではない。
【0063】
上記実施形態の説明を通じて、当業者は、上記実施形態に係る方法が、ソフトウェアおよび必要なハードウェアプラットフォームによって実現されることを明確に理解することができる。もちろん、ハードウェアによっても実現できるが、ほとんどの場合、前者の方が好ましい。このような理解に基づいて、本発明の特別な技術的特徴、または従来技術に寄与する特徴は、ソフトウェア製品の形で表現される。コンピュータソフトウェア製品は、記憶媒体(ROM/RAM、磁気ディスク、光ディスク)に記憶され、デバイス(携帯電話、コンピュータ、サーバー、エアコン、ネットワークデバイスなど)に各実施例に係る方法を実行させるためのいくつかの命令を含む。
【0064】
上記の内容は、具体的な実施様態に基づいて本発明の実施例をさらに詳しく説明したものであり、本発明の具体的な実施がこれらの説明に限定されると考えることはできない。当業者は、本発明の精神から逸脱しない限り、若干の改良及び修正を加えることができる。これらの改良及び修正も本発明の保護の範囲と見なされる。
【0065】
本願は、2019年06月28日に中国専利局に提出された、出願番号が201910580647.9であり、発明の名称が「FPGAと通信するホストおよびFPGAインターフェースチップ」である中国特許出願の優先権を主張するものであり、先願の内容をすべて組み込んでいる。
図1
図2A
図2B
図2C
図3
図4
図5
図6
図7
図8