第 12 章:高速バスイ ン タ ー フ ェ イ ス
次に、USB を マ ス ス ト レージデバ イ ス と し て設定す る 方法を フ ロ ーチ ャ ー ト で示 し ます。
X-Ref Target - Figure 12-1
図 12-1: USB フ ローの例 (USB 初期化) USB config initialize
Start
Call a function to hookup the handler for control packets
Is Req type==
Std dev req?
Stall on endpoint 0
Call a function to hookup the handler for mass storage
Stall the endpoint 0
Handle standard device request
Is Req type==
class req? Handle the class request
Is Req type==
vendor req? Do nothing
Is Req ==
Mass storage reset?
Do nothing
(Status phase is handled by driver)
Is Req ==
Get_Maz_LUN Prepare a URB with number of LUNs
Yes
Yes Yes
Yes
Yes No
No
No No
No No
A
X15463-021317
第 12 章:高速バスイ ン タ ー フ ェ イ ス
X-Ref Target - Figure 12-2
図 12-2: USB フ ローの例 (バルク IN およびバルク OUT ハン ド ラ ーの接続および割 り 込み コ ン ト ロー ラ ーの初期化) Prepare device descriptors
Prepare configuration descriptors
Call a function to hookup the bulkout handler
Is phase ==
Data?
Send command status wrapper (CSW) Call a function to hookup the bulk In handler
Read the packet data into Receive Buffer Is phase ==
Status?
Initialize the driver interrupt controller
Config initialize for GIC
Connect the interrupt controller Is phase ==
Command? Parse CBW
Send reduced block command (RBC) Write operation
Is phase ==
Data?
Is RBC Mode sense ==
1?
Send CSW with mode Yes
Yes No
No
Yes No
Yes Yes
Send CSW with mode No
No
B A
X15477-021317
第 12 章:高速バスイ ン タ ー フ ェ イ ス
USB コ ン ト ロ ー ラ ーの詳細は、 こ のセ ク シ ョ ン (『Zynq UltraScale+ MPSoC テ ク ニ カルリ フ ァ レ ン ス マニ ュ アル』
(UG1085) [参照10] の第 31 章 「USB 2.0/3.0 ホ ス ト/デバ イ ス/OTG コ ン ト ロ ー ラ ー」) を参照 し て く だ さ い。
ギガ ビ ッ ト イ ーサネ ッ ト コ ン ト ロー ラ ー
ギガ ビ ッ ト イ ーサネ ッ ト コ ン ト ロ ー ラ ー (GEM) は IEEE イ ーサネ ッ ト 規格 (IEEE Std 802.3-2008) に準拠 し た 10/100/1000Mb/s イ ーサネ ッ ト MAC を実装 し てお り 、 半二重ま たは全二重 10/100 モー ド 、 お よ び全二重 1000 モー ド での動作が可能です。
プ ロ セ ッ シ ン グ シ ス テ ム (PS) には 4 つのギガ ビ ッ ト イ ーサネ ッ ト コ ン ト ロ ー ラ ーがあ り ます。
MAC の機能お よ び動作モー ド は レ ジ ス タ で設定 し ます。
DMA コ ン ト ロ ー ラ ーは AXI (Advanced eXtensible Interface) 経由で メ モ リ に接続 し ます。 こ の コ ン ト ロ ー ラ ーは MAC コ ン ト ロ ー ラ ーの FIFO イ ン タ ーフ ェ イ ス に接続 さ れてお り 、 パケ ッ ト デー タ を ス キ ャ ッ タ ーギ ャ ザー方式でプ ロ セ ッ シ ン グ シ ス テ ムに格納で き ます。
X-Ref Target - Figure 12-3
図 12-3:割 り 込みの有効化および USB コ ン ト ロー ラ ーの起動
Enable all the required interrupts
Connect the interrupt controller to the interrupt handling logic in ARM
Enable interrupts in the ARM
Wait for interrupts Start USB Controller
B
X15478-021317
第 12 章:高速バスイ ン タ ー フ ェ イ ス
次に、1 パケ ッ ト のデー タ を送信す る よ う に イ ーサネ ッ ト コ ン ト ロ ー ラ ーを設定す る 場合の例を フ ロ ーチ ャ ー ト で 示 し ます。
X-Ref Target - Figure 12-4
図 12-4:イ ーサネ ッ ト フ ローの例 (イ ーサネ ッ ト コ ン ト ロー ラ ーの初期化) Start
Set the Baudrate Set the Line Control register Invalidate the Data Cable if Data
Cache is emabled
Get the Configuration of Axi Ethernet Hardware
Is AXI FIFO present? Return error and exit
Initialize the AXI FIFO instance
Initialize AXI Ethernet hardware
Error initializing? Return error and exit
Set the MAC address
Is Phy-type==MII? Set the loopback speed to 100
Set the loopback speed to 1G Get the PHY interface Detect the PHY address
Read the PHY Model
No
Yes
Yes
No
No
Yes
A
;
第 12 章:高速バスイ ン タ ー フ ェ イ ス
X-Ref Target - Figure 12-5
図 12-5:イ ーサネ ッ ト フ ローの例 (イ ーサネ ッ ト パラ メ ー タ ーの設定および送信の開始)
&OHDUWKH3+<RIDQ\H[LVWLQJELWV 5*0,,PRGH3+<VSHFLILFUHJLVWHULQLWLDOL]DWLRQ
&RQILJXUHWKH,QWHUIDFHPRGHV 6HWWKHVSHHG SXWWKH3+<LQUHVHW
3XWWKH3+<LQORRSEDFN
5HWXUQ(UURUDQG([LW (UURU6HWWLQJWKH3+<ORRSEDFN"
6HW3+<!0$&'DWDFORFN 'HOD\
6WDUWWKH$;,(WKHUQHW'HYLFH 6HWXSWKHSDFNHWWREHWUDQVPLWWHG
&OHDURXWWKHUHFHLYHSDFNHWPHPRU\DUHD
&DOFXODWHWKHIUDPHOHQJWKQRWLQFOXGLQJ)&6 :DLWIRU),)2WREHFRPHDYDLODEOH
:ULWHWKHIUDPHGDWDWR),)2 ,QLWLDWHWKHWUDQVLW
:DLWIRUVWDWXVRIWKHWUDQVPLWWHGSDFNHW 1R
<HV
$
% ;
第 12 章:高速バスイ ン タ ー フ ェ イ ス
イ ーサネ ッ ト コ ン ト ロ ー ラ ーの詳細は、こ のセ ク シ ョ ン (『Zynq UltraScale+ MPSoC テ ク ニ カル リ フ ァ レ ン ス マニ ュ アル』 (UG1085) [参照10] の第 34 章 「ギガ ビ ッ ト イ ーサネ ッ ト コ ン ト ロ ー ラ ー」) を参照 し て く だ さ い。
X-Ref Target - Figure 12-6
図 12-6:イ ーサネ ッ ト フ ローの例 (デー タ の受信および検証)
Wait for status of the transmitted packet
Receive the packet
Return error and exit Error
Get the length of the arrived data
Read the packet data received
Verify the received frame length
Validate the frame data
Stop Ethernet Hardware No
Yes
Stop B
• • • • • • •• • • • • • X15480-111115
第 12 章:高速バスイ ン タ ー フ ェ イ ス
PCI Express
Zynq UltraScale+ MPSoC デバ イ ス には、PCI Express™ v2.1 準拠の統合ブ ロ ッ ク 、AXI-PCIe ブ リ ッ ジ、 お よ び DMA モ ジ ュ ールで構成 さ れ る PCIe コ ン ト ロ ー ラ ーがあ り ます。AXI-PCIe ブ リ ッ ジは PCIe と AXI を高速にブ リ ッ ジ接続 し ます。
次に、 デー タ 転送用に PCIe ルー ト コ ンプ レ ッ ク ス を設定す る 場合の例を フ ロ ーチ ャ ー ト で示 し ます。
X-Ref Target - Figure 12-7
図 12-7: PCIe フ ローの例 (レ ガシ割 り 込みの有効化および PCIe ルー ト バスの作成) 0DSWKHUHJLVWHUPHPRU\VSDFHIRU3&,HEULGJHDQG
FRQWUROOHU 6WDUW
0DSWKHPHPRU\VSDFHIRU(&$0
:ULWHWKHEULGJHRIIVHWLQWKHEULGJHUHJLVWHUEDVH
(QDEOHWKHEULGJHLQWKHEULGJHFRQWUROUHJLVWHU
'LVDEOHWKH'0$FKDQQHOUHJLVWHUV
(QDEOHWKHEULGJHFRQILJXUDWLRQLQWHUUXSW
(QDEOH,QJUHVV6XEWUDFWLYHGHFRGHWUDQVODWLRQ
(QDEOHPHVVDJHILOWHULQJ
*HWWKH3&,HOLQNXS
(&$0
%LW
"
5HWXUQHUURUDQGH[LW
(QDEOH(&$0LQ(&$0FRQWUROUHJLVWHU Yes
No
$
;
第 12 章:高速バスイ ン タ ー フ ェ イ ス
X-Ref Target - Figure 12-8
図 12-8: PCIe フ ローの例 (PCIe パ ラ メ ー タ ーの設定お よび送信の初期化) Clear the PHY of any existing bits
RGMII mode PHY specific register initialization Configure the Interface modes Set the speed & put the PHY in reset
Put the PHY in loopback
Return Error and Exit Error Setting the PHY loopback?
Set PHY<->MAC Data clock Delay
Start the AXI Ethernet Device Setup the packet to be transmitted Clear out the receive packet memory area Calculate the frame length (not including FCS)
Wait for FIFO to become available Write the frame data to FIFO
Initiate the transit
Wait for status of the transmitted packet No
Yes A
B
X15479-041917
第 12 章:高速バスイ ン タ ー フ ェ イ ス
X-Ref Target - Figure 12-9
図 12-9: PCIe フ ローの例 (レ ガシ割 り 込みの有効化および PCIe ルー ト バスの作成) Get the legacy interrupt number
Return error and exit Invalid interrupt
number
Register the legacy interrupt handler
Return error and exit Failed to
register handle?
Enable all legacy interrupts
Get the bridge resources
Error getting resources?
Create PCIe root bus
Return error and exit
Return error and exit Error creating
root bus? Yes Yes Yes
Yes
No
No
No
No B
C
X15483-041917
第 12 章:高速バスイ ン タ ー フ ェ イ ス
注記:エン ド ポ イ ン ト の操作については、 こ のセ ク シ ョ ン (『Zynq UltraScale+ MPSoC テ ク ニ カル リ フ ァ レ ン ス マ ニ ュ アル』 (UG1085) [参照10] の第 30 章 「PCI Express コ ン ト ロ ー ラ ー」) を参照 し て く だ さ い。
X-Ref Target - Figure 12-10
図 12-10: PCIe フ ローの例 (MSI 割 り 込みの有効化および割 り 込みの待機)
$VVLJQ06,FKLSKRRNV ,V06,ELWVHW"
6FDQWKH3&,HFKLOGEXV
$VVLJQXQDVVLJQHGEXVUHVRRXUFHV
$GG3&,HEXVGHYLFHV 6HWWKHSODWIRUPGULYHUGDWD
:DLWIRULQWHUUXSWV
<HV
1R &UHDWHWKH,54GRPDLQ
(QDEOH06,,DQG06,,VWDWXV (UURUFUHDWLQJ
,54GRPDLQ" 5HWXUQHUURUDQGH[LW
<HV 1R
06,,ELW3UHVHQW"
1R
:ULWHWKH06,,ORZDQGKLJKDGGUHVVHV
'LVDEOHDQGFOHDUDOOKLJKUDQJH06,LQWHUUXSWV
*HWWKH06,B,54QXPEHU
'LVDEOHDQGFOHDUDOOORZUDQJH06,LQWHUUXSWV
*HWWKH06,B,54QXPEHU
(QDEOHDOOORZUDQJHLQWHUUXSWV (QDEOHDOOKLJKUDQJHLQWHUUXSWV
5HPRYHWKH,QWHUUXSW'RPDLQ (UURU5HJLVWHULQJ
06,BKDQGOH"
1R
<HV 5HJLVWHUWKH06,BKDQGOH
(UURUJHWWLQJWKH,54QXPEHU"
1R (UURU5HJLVWHULQJ
06,BKDQGOH" <HV
<HV 5HJLVWHUWKH06,BKDQGOH
(UURUJHWWLQJWKH,54QXPEHU"
<HV
<HV
1R 1R
&
;
第 12 章:高速バスイ ン タ ー フ ェ イ ス
PCIe ブ リ ッ ジ と ECAM の メ モ リ 空間を マ ッ プ後、ECAM 変換を実行で き る よ う ECAM を有効に し ます。 次に、 バ ス範囲を取得 し てバ ス番号を設定 し 、primary、secondary、 お よ び subordinate バス番号を書 き 込みます。
割 り 込みシ ス テ ム を セ ッ ト ア ッ プす る 際は、 レ ガシ割 り 込みを含むすべての種類の割 り 込みを有効にす る 必要があ り ます。PCI ホ ス ト ブ リ ッ ジデバ イ ス ノ ー ド の ranges プ ロ パテ ィ を解析 し 、 その内容に基づいて リ ソ ースマ ッ プ を セ ッ ト ア ッ プで き ます。
ルー ト バ ス を作成す る には、PCIe ルー ト バ ス を割 り 当て、 そのバ ス に初期 リ ソ ース を追加 し ます。
MSI ビ ッ ト がセ ッ ト さ れてい る 場合、MSI (Message Signalling Interrupt) を有効にす る 必要があ り ます。
MSI 割 り 込みを設定 し た ら 、PCIe ス ロ ッ ト を ス キ ャ ン し て PCIe バ ス全体をエニ ュ メ レー ト し 、 ス キ ャ ン し たバス に 対 し てバ ス リ ソ ース を割 り 当て ます。
こ れで、PCIe デバ イ ス を シ ス テ ムに追加で き ます。
PCI Express の詳細は、 こ のセ ク シ ョ ン (『Zynq UltraScale+ MPSoC テ ク ニ カル リ フ ァ レ ン スマニ ュ アル』 (UG1085) [参照10] の第 19 章 「DMA コ ン ト ロ ー ラ ー」) お よ びこ のセ ク シ ョ ン (同マニ ュ アルの第 30 章 「PCI Express コ ン ト ロ ー ラ ー」) を参照 し て く だ さ い。