このコンテンツは,のちほど編集をかけることになるでしょう.とりとめもなくメモを貼り付けていきます.面倒なので参考文献の引用は雑にしますし,思い込みで書いている部分もありますので御注意ください….
Update:2008年12月22日 26:47頃
一般的な? device interface.メモリマップドI/Oとしてすべてを扱う.バスはセレクタのお化けになる模様.
- 同期回路で構成した,一般的なADRs/DATAs/RD/WR/CLK/WAITによる読み書き制御.ByteEnableもついて,1~4byteアクセス可能.
- R/WのWait Timeは固定にもできる.
- Burst転送も有効にすると,Burst Count信号が増設され,Burst転送モードが発生しうるようだ....
- Burst DRAM/SRAM/FLASHをつなぐときに有効,か.
→ドキュメント直訳+αへ
データフローが一方通行なもの向けのinterface.
- Interfaceのポート名 [Source] → [Sink] の方向にデータが流れる.
- scheduler/primitive命から見ると,[Sink]で受けて[Source]から吐き出すイメージ.
- moduleのクチは,[Souce]からデータを吐く,[Sink]でデータを受ける.(Figure6-1を見れ)
→ドキュメント直訳+αへ
tri-state出力のBUS.I/O Padの消費量削減のための,chipの外とのinterface用.
- 外付けSRAM,ZBT RAMの接続が可能.Avalon-TriState MM - Slave.Masterは存在しない.(BridgeがMasterとして振舞う?.interconnectはsyncroだから関係ないってことかな...)
Avalon Clock
- 通常の? 割込みコントローラ.priority encoderつき.(優先度回転とか高機能なものはない."IRQの若い者が強い"仕様のようだ.)
Avalon Conduit (導管) - SOPCの外とのinterface規格?
- System BUS(System Interconnect Fabricとは離れている.moduleと外との土管..?)
AVALON BUSに接続するためのPortとして,MasterとSlaveが存在します.データ方向は基本的に一方向であり,双方向バスではないと思われる(未確認).
Masterが制御信号を主導し,Slaveに対して読み書きを促す.Slaveからはwait信号を受け付けることもできる(Masterが許容しないとダメか?).
テンプレートで,Master/Slave Portのコードは生成されるので,自作IP?も簡単に??繋ぐことができる.
丸カッコは,Master/Slave portの表記.
(S)CSR | Control Status Register |
(M)descriptor_read | Descriptorをメモリにおいて,DMA moduleが値を読むのに使う(src/destなどがchain linkできる) |
(M)descriptor_write | Descriptorをメモリにおいて,DMA moduleが値を書き込むのに使う(Status Areaがある) |
(M)m_read/(M)write | 実際にデータをR/Wするためのクチ.(descriptorと共通にはならなかったようだ...) |
(M)out/(S)in | メモリから取ってきたデータを,別のモジュールへ吐き出すクチ. |
→ドキュメント直訳+αへ
Master - Slaveのインターコネクトを途中で集約することで,大量の配線引き回しを抑制できる.
Bridgeを通すことで,信号強度も復帰するため,(レイテンシ増加はするが)fMaxをあげることが想像できる.
また,設定方法によって,以下の名称をもつようだ.
Burstを有効にしたとき?
→ドキュメント直訳+αへ
ブリッジを挟んでクロックドメインが変わるとき.
"cyclone3_handbook.pdf" Active Parallel の説明を参照されたい.
接続については,Active Parallel(AP)によるconfigurationを行うため,FPGAの規定の端子へデバイスを接続する必要がある模様.
また,configuration後は,ソレに従うので,この物理接続を踏襲するようなpin assignが必要となる.
Wait信号は,asyncで使う分には不要(AP configuration ignores the WAIT signal during configuration mode.)であり,asyncroで使う場合には無視すればよい.(配線されているのであればinputにして捨てておく必要がある.optimizeにも注意)
CLK should be tied to a valid VIH level,
WAIT signal can be floated
ADV# must be tied to ground.
"cyclone3_handbook.pdf"の更新履歴(May 2008 v2.0)より,"Removed RDY pin and replaced with a normal I/O to monitor the WAIT signal"とある.
"CycloneIII_SB_3C25.pdf" sheet 6では,FLASH_WAITがRDY/DQ1R3(Bank6,H13@EP3C25F324C8)に接続されているが,実体は未使用ということだろう.
アドレス信号についても,256Mbit FLASHなので,A25は未使用.schematic上は接続されているが,デバイス側NCとなっています.上位互換で,容量の大きいものを刺したときを考慮しているのでしょう.
control signals
DCLK, clock(CLK)
nRESET, active-low reset (RST#)
FLASH_nCE, active-low chip enable (CE#)
nOE, active-low output enable (OE#)
nAVD, active-low address valid (ADV#)
nWE, active-low write enable (WE#)
general input, WAIT
adr/data signals
DATA[15..0]
PADD[23..0]
I2C pin | MAX II 内部結線 | Direction | HSMC name | HSMC pin | FPGA pin |
HC_I2C_SCLK | I2C_SCLK <= HC_I2C_SCLK | FPGA.output | HSMC_SCL | HSMC#34 | F3 |
I2C_SDAT | I2C_SDAT <=(MAX3378)<= HC_I2C_SDAT | FPGA.inout | HC_I2C_SDAT | HSMC#33 | E1 |
WM8731 pin | MAX II 内部結線 | Direction | HSMC name | HSMC pin | FPGA pin |
MCLK | AUD_XCK <= HC_AUD_XCK | FPGA.output | HSMC_CLKOUT0 | HSMC#39 | A1 |
BCLK | AUD_BCLK <= HC_AUD_BCLK | FPGA.output | HSMC_TX_p10 | HSMC#113 | E17 |
DAC_DAT | AUD_DACDAT <= HC_AUD_DACDAT | FPGA.output | HSMC_TX_n9 | HSMC#109 | R1 |
DAC_LRCK | AUD_DACLRCK <= HC_AUD_DACLRCK | FPGA.output | HSMC_TX_p9 | HSMC#107 | R2 |
ADC_DAT | HC_AUD_ADCDAT => AUD_ADCDAT | FPGA.input | HSMC_CLKIN0 | HSMC#40 | A9 |
ADC_LRCK | AUD_ADCLRCK <= HC_AUD_ADCLRCK | FPGA.output | HSMC_TX_n8 | HSMC#103 | M1 |
SD pin | symbol name | Direction | HSMC name | HSMC pin | FPGA pin name |
CMD/DI | HC_SD_CMD | FPGA.output | HSMC_D3 | HSMC#44 | FPGA-L6 |
DAT/DO | HC_SD_DAT | FPGA.input | HSMC_D5 | HSMC#48 | FPGA-M3 |
DAT3/CS | HC_SD_DAT3 | FPGA.output | HSMC_D8 | HSMC#53 | FPGA-N8 |
CLK | HC_SD_CLK | FPGA.output | HSMC_TX_p8 | HSMC#101 | FPGA-M2 |