exStickGEはじめました

製品紹介

e-trees.Japanでは, exStick の後継として exStickGE を開発,発売しました.exStickでは100MbEだったネットワークインターフェースが,GbEへとパワーアップ.もちろん,e7UDP/IP IPコアが付属しますので,簡単にネットワーク接続可能なハードウェアの開発ができます.

また,256MBのDDRメモリを搭載していますので,ちょっとしたソフトコアの実装にも利用できます.オンボードの汎用I/OはPMOD1系統とちょっと寂しいですが,高密度コネクタを介してFPGAのI/Oにアクセスできます.

同時発売の画像I/Oボードを使えば,2系統のHDMIと2系統のMIPI-CSIを利用できます.

…という前置きはさておき,まずはテストプログラムによるネットワークアクセスの様子を紹介します.

テストロジック

テストロジックは,DDRメモリの初期化とUDP/IPコアの動作確認ができる,というものです.

プロジェクト一式 – exStickGE_udpip_loopback (GitHub)

cloneして,Vivadoで合成すればOKです(手元では,Vivado 2019.1で確認しました).ただし,合成には,e-trees.Japanの提供するe7UDP/IP IPコアを edif ディレクトリ に配置する必要があります.

% git clone https://github.com/e-trees/exstickge_samples.git
% cd exstickge_samples/exStickGE_udpip_loopback
% vivado -mode batch -source create_project.tcl

これで,top.bit が,exstickge_loopback/exstickge_loopback.runs/impl_1 の下にできあがります.

FPGA内でのUDP/IPパケットの様子

ILAをいれて合成すると,Hardaware ManagerでFPGA内のUDP/IPパケットの様子を眺めることができます.10.0.0.3(exStickGEに割り当てたIPアドレス)向けのパケットがFPGA内を流れている様子をキャプチャしたところです.Enable信号がアサートされている間のDataがホスト(10.0.0.1)から送られたパケットデータです.

(クリックすると大きくなります)

ちなみに,これは,次のようなUDP送受信スクリプトを用意して実行してみたものです.

受信側

#!/usr/bin/ruby
require "socket"
socket = UDPSocket.open()
socket.bind("0.0.0.0", 0x4000)
p socket.recv(65535)
socket.close

送信側

#!/usr/bin/ruby
require "socket"
socket = UDPSocket.open()
sockaddr = Socket.pack_sockaddr_in(0x4000, "10.0.0.3")
socket.send("Hello World", 0, sockaddr)
socket.close

次は

DDRメモリの活用,画像入出力の活用事例を紹介します.

 

 

 

コメント

タイトルとURLをコピーしました