• 検索結果がありません。

Report Template

N/A
N/A
Protected

Academic year: 2021

シェア "Report Template"

Copied!
26
0
0

読み込み中.... (全文を見る)

全文

(1)

MachXO2 EFB(Embedded

Function Block)

(2)

目次

1

このドキュメントの概要 ··· 3

2

EFB の構成··· 4

3

EFB とハードマクロの生成と注意事項 ··· 5

3.1

EFB Enables タブの設定 ... 5

3.2

I2C タブの設定 ... 6

3.3

SPI タブの設定 ... 7

3.4

Timer/Counter タブの設定 ... 9

4

Wishbone から I2C マクロへのアクセス ··· 12

4.1

I2C マスターモード時の制御 ... 12

4.1.1 Write アクセス ... 12 4.1.2 Read アクセス ... 14

5

Wishbone から SPI マクロへのアクセス ··· 16

5.1

SPI マスターモード時の制御 ... 16

5.1.1 Write アクセス ... 16 5.1.2 Read アクセス ... 19

6

EFB のシミュレーション ··· 23

6.1

テストベンチ作成時の注意点 ... 23

6.2

I2C マクロの入出力信号 ... 24

6.3

WISHBONE バスへの入力データ ... 25

7

改訂履歴

··· 26

(3)

1 このドキュメントの概要

このドキュメントでは、MachXO2 に内蔵されている EFB(Embedded Function Block)の I2C、SPI、

Timer/Counter 機能や使用方法について説明します。

内蔵Flash メモリへのアクセス方法については、別途リリースされているドキュメント(JUG10_001)

(4)

2 EFB の構成

EFB は、MachXO2 ファミリのデバイスに内蔵されている固有の機能を持つ複数のブロックと、それ らおよびデバイスのファブリックを接続するバスから構成されるハードマクロです (図 2-1)。 図 2-1 EFB のブロックダイアグラム 固有の機能ブロックとしては、以下のものが内蔵されています。 I2C インターフェイス ×2 SPI インターフェイス ×1 タイマーカウンター ×1 ユーザーFlash メモリ ×1 Configuration 回路 ×1 パワーセーブ回路 ×1 PLL デバイス依存(×2 or ×1 or ×0) これらのブロック間およびユーザーロジックは、Wishbone バスを介して接続されています。

(5)

3 EFB とハードマクロの生成と注意事項

EFB および各種ペリフェラルを使用する場合、それらの HDL ソースは IPexpress で生成します。 3.1 EFB Enables タブの設定

EFB タブでは、使用するマクロの選択等を行います。 使用するマクロの選択

EFB を使用する場合、まず IPexpress の[EFB Enables]タブで使用するハードマクロを選択します。 [EFB Enables]タブには、選択可能なハードマクロのリストが表示されていますので、使用するマク ロにチェックを入れます。チェックを入れると該当するハードマクロの設定タブがアクティブになり パラメータ設定が可能になります。

図 3-1 ハードマクロ選択タブ クロック周波数の設定

EFB を使用する場合、必ず IPexpress の[EFB Enables]で、[WISHBONE Clock Frequency]欄に実 際に使用するクロックの周波数を入力してください。

各種ハードマクロは、このクロックで動作します。I2C や SPI マクロからの出力クロックはこれを分

周したものが出力されます。分周比は、この周波数設定を基準に行いますので、実際に使用するクロッ ク周波数が違うと適当な出力クロックが得られません。注意してください。

(6)

図 3-2 WISHBONE clock 周波数の設定 3.2 I2C タブの設定

I2C タブでは、I2C マクロ 2 つ(Primary/Secondary)の設定が行えます。

図 3-3 I2C マクロ設定タブ General Call Enable

General Call(アドレス all’0’)のアクセスに対するレスポンス可否の設定です。チェックが入っている

(7)

Wakeup Enable

パワーダウン状態でアクセスがあった場合のレスポンス可否の設定です。チェックが入っていると パワーダウン状態で該当アドレスへのアクセスがあった場合にパワーダウンから自動的に復帰し ます。

I2C Bus Performance

I2C バスのスループット(クロック周波数)を選択します。この設定から内部のクロック分周比が決

まるので、必ず適当な値を選択してください。 I2C Addressing

I2C のアドレスモード(7bit or 10bit)を選択します。

Slave Address 当該デバイスのI2C slave アドレスを設定します。 3.3 SPI タブの設定 図 3-4 SPI マクロの設定タブ SPI mode SPI マクロの動作モードを選択します。

Master Clock Rate

Master モードでの動作時の出力クロック周波数を設定します。モードとして[Slave & Master]を

選択した場合に設定可能です。Wishbone クロックを分周して生成するので、Wishbone クロック を分周して生成できる周波数を入力してください。

(8)

SPI Protocol Options SPI の各種オプションの初期値設定です。Wishbone バスからのレジスタアクセスで設定を変更す ることもできます。 LSB First チェックが入っていると LSB から出力/入力します。 Inverted Clock チェックが入っていると、クロック極性が反転します。内部のレジスタCPOL の初期値設定です。 Phase Adjust チェックが入っているとデータ出力のクロック位相(エッジ)が立上がり同期になります。 図 3-5 Phase Adjust チェックなし 図 3-6 Phase Adjust チェックあり Interrupts バスの割り込みを有効にするフラグを選択します。 Master Chip select

Master モードで動作させる際に出力する Chip select の数を選択します。

Misc

Wake up Enable

パワーダウン状態でアクセスがあった場合のレスポンス可否の設定です。チェックが入ってい るとパワーダウン状態でアクセスがあった場合に、パワーダウンから自動的に復帰します。

(9)

3.4 Timer/Counter タブの設定

Timer/Counter タブでは、マクロの動作モードやカウント値の初期値設定を行います。これらの値は Wishbone バスから随時変更することも出来ます(EFB Enables タブで Timer/Counter の動作モード を[Dynamic…]に設定している場合)。

図 3-7 Timer/Counter マクロの設定タブ

Mode Selection

[Timer/Counter Mode]欄でマクロの動作モードを、[Output Function]欄で出力ポート[tc_oc]の振

る舞いを選択します。

各選択の概略は以下の様になります。

Timer/Counter Mode

CTCM (Clear Timer on Compare Match)

内部カウンタはカウントアップしていき、レジスタ[TCTOP]の値と一致すると 0 に戻ります。

図 3-8 TCTM の内部カウンタと tc_oc の振る舞い(Output Function = TOGGLE)

[Output Function]で[TOGGLE]を選択すると、[tc_oc]ポートからは[TCTOP]サイクル周期で

トグルする波形が出力されます。

レジスタ[TCTOP]については、こちらを参照ください。

内部カウンタ値 tc_oc

(10)

Fast PWM Mode

内部カウンタはカウントアップしていき、レジスタ[TCTOP]の値と一致すると 0 に戻ります。 [Output Function]で[TOGGLE]を選択すると、レジスタ[TCOCR]およびレジスタ[TCTOP]とカ ウント値が一致した場合に[tc_oc]がトグルします。

図 3-9 Fast PWM Mode の内部カウンタと tc_oc の振る舞い

レジスタ[TCTOP]と[TCOCR]については、こちらを参照ください。

Phase and Frequency Correct PWM mode

内部カウンタは0 からカウントアップしていき、レジスタ[TCTOP]の値と一致するとカウントダ

ウンを始めます。カウント値が0 になると再びカウントアップを始めます。

[Output Function]で[TOGGLE]を選択すると、レジスタ[TCOCR]とカウント値が一致した場合 に[tc_oc]がトグルします。

図 3-10 Phase and Frequency Correct PWM Mode の内部カウンタと tc_oc の振る舞い

レジスタ[TCTOP]と[TCOCR]については、こちらを参照ください。

Clock Selection

内部カウンタを動作させるクロックについての設定を行います。

Clock Edge Selection

カウンタで使用するクロックのエッジを選択します。 [PCLOCK] : tc_clki の立ち上がりエッジ

[NCLOCK] : tc_clki の立ち下がりエッジ

Prescale Divider Value

カウンタに入力する前のクロック分周比設定です。Tc_clki を最大 1024 分周できます。

図 3-11 カウンタと Prescale Divider 内部カウンタ値

tc_oc

TCOCR Count up

TCTOP 0 Count up TCTOP 0 Count up

内部カウンタ値 tc_oc

TCOCR Count down

(11)

Counter Value

各カウンタモードで使用するレジスタ[TCTOP]と[TCOCR]の初期値を設定します。

Timer Counter Top

レジスタ[TCTOP]の初期値設定です。[TCOCR]を使用するモードでは、[TCOCR]より大きな値 を設定してください。

Output Compare Value

(12)

4 Wishbone から I2C マクロへのアクセス

4.1 I2C マスターモード時の制御 4.1.1 Write アクセス

XO2 の I2C マクロをマスタとして、接続されるスレーブデバイスに[N]byte のデータを Write するに は、図 4-1 の手順に従って wishbone バスにアクセスします。

図 4-1 Wishbone バスから IC2 マクロで[N]byte データの Write を行うためのフローの例

※1 Timeout について

一定時間(I2C クロック9サイクル分)経過しても ACK が検出さなければ、出力した slave アドレ スに該当するデバイスがバス上に存在しないことを意味するのでアクセスを終了します。

(13)

図 4-2 Wishbone バスから IC2 マクロで Write を行うためのレジスタアクセス例 w b _c lk _i w b _c yc _i w b _s tb _i w b _w e _i w b _a d r_i [7 :0 ] w b _d at _i w b _d at _o w b _a c k_ o ※1 7 b itア ド レ ス + '0 ' ※2 I2 C か ら 出 力 す る デ ー タ ※3 R A R X (w b _d at _o [5 ])と T R R D Y (w b _d at _o [2 ])を チ ェ ッ ク ※4 T R R D Y (w b _d at _o [2 ])を チ ェ ッ ク N/A 45 N/A 45 44 ※1 41 90 N/A N/A 45 41 40 ※3 ※3 ※4 ※4 44 N/A 41 N/A 45 ※2 N/A 10 N/A 必 要 な 回 数 繰 り 返 し

(14)

4.1.2 Read アクセス

XO2 の I2C マクロをマスタとして、接続されるスレーブデバイスから[N]byte のデータを Read する には、図 4-3 の手順に従って wishbone バスにアクセスします。

図 4-3 Wishbone バスから IC2 マクロで[N]byte データの Read を行うためのフローの例 ※1Timeout について

一定時間(I2C クロック9サイクル分)経過しても ACK が検出さなければ、出力した slave アドレ スに該当するデバイスがバス上に存在しないことを意味するので、そのままアクセスを終了。

(15)

図 4-4 Wishbone バスから IC2 マクロで Read を行うためのレジスタアクセス例 w b _c lk _i w b _c yc _i w b _s tb _i w b _w e _i w b _a d r_i [7 :0 ] w b _d at _i w b _d at _o w b _a c k_ o ※1 7 b itア ド レ ス + '0 ' ※2 R A R X (w b _d at _o [5 ])と T R R D Y (w b _d at _o [2 ])を チ ェ ッ ク ※3 T R R D Y (w b _d at _o [2 ])を チ ェ ッ ク ※4 I2 C の R e ad デ ー タ ※4 47 N/A 20 N/A N/A 41 68 N/A N/A N/A N/A 45 ※2 ※2 ※3 ※4 ※3 ※1 90 45 47 45 41 44 41 45

(必要な回数

)繰

(16)

5 Wishbone から SPI マクロへのアクセス

5.1 SPI マスターモード時の制御 5.1.1 Write アクセス

MachXO2 の SPI マクロをマスタとして、接続されるスレーブデバイスに[N]byte のデータを Write するには、図 5-1 の手順に従って wishbone バスにアクセスします。

図 5-1 Wishbone バスから SPI マクロで[N]byte データの Write を行うためのフローの例 ※1 Write データの出力開始タイミングについて

SPI マクロがアクティブでマスターモード設定されている場合、アドレス 0x59 にデータを write

するとSPI のポートからクロックと Write したデータの出力が開始されます。1byte のデータ出

力が終わると、次のデータがアドレス0x59 に write されるまで SPI の出力クロックは停止しま す(図 5-2)。 ※2 ※4 ※1 ※3

(17)

図 5-2 SPI データ出力開始タイミング ※2 ダミーデータの Read について SPI マクロは回路構成上、アクセス内容にかかわらずクロックを出力すると SI ポートのデータ を受信データとして取り込んでしまいます。Write アクセスの際は、余分なデータが受信データ 用のバッファに保存されてしまうので、以後のRead アクセスを正常に行うためにデータを出力 する度に余分なデータを破棄する必要があります。 ※3 byte データの送信完了確認について SPI マクロには、アドレス 0x59 に write したデータの送信完了フラグがありません。前述のよ うにWrite アクセス時にも SI ポート上のデータがマクロ内に取り込まれ、1byte 分たまると受 信データのread 可能フラグ(RRDY)が立つので、それを送信完了フラグの代わりに使用します。 ※4 繰り返し回数について αは、SPI のコマンドおよびオペランドの byte 数です。

(18)

図 5-3 Wishbone バスから SPI マクロで Write を行うためのレジスタアクセス例 w b _c lk _i w b _c yc _i w b _s tb _i w b _w e _i w b _a d r_i [7 :0 ] w b _d at _i w b _d at _o w b _a c k_ o ※1 T R D Y (w b _d at _o [4 ])を チ ェ ッ ク ※2 任 意 の 出 力 デ ー タ (コ マ ン ド 、 オ ペ ラ ン ド 、 W rit e デ ー タ ) ※3 R R D Y (w b _d at _o [3 ])を チ ェ ッ ク ※4 R e ad し た デ ー タ は 破 棄 ※1 ※1 ※3 ※3 ※4 56 C0 N/A ※2 N/A 80 59 N/A 5A 5A 59 56 N/A 5A 5A

(必要な回数

)繰

(19)

5.1.2 Read アクセス

MachXO2 の SPI マクロをマスタとして、接続されるスレーブデバイスから[N]byte のデータを Read するには、図 5-4 の手順に従って wishbone バスにアクセスします。

※1

(20)

図 5-4 Wishbone バスから SPI マクロで[N]byte データの Read を行うためのフローの例 ※1 Write データの出力開始タイミングについて

SPI マクロがアクティブでマスターモード設定されている場合、アドレス 0x59 にデータを write

するとSPI のポートからクロックと Write したデータの出力が開始されます。1byte のデータ出

力が終わると、次のデータがアドレス0x59 に write されるまで SPI の出力クロックは停止しま

す(図 5-5)。

図 5-5 SPI データ出力開始タイミング ※3

(21)

※2 ダミーデータの Read について SPI マクロは回路構成上、アクセス内容にかかわらずクロックを出力すると SI ポートのデータ を受信データとして取り込んでしまいます。Write アクセスの際は、余分なデータが受信データ 用のバッファに保存されてしまうので、以後のRead アクセスを正常に行うためにデータを出力 する度に余分なデータを破棄する必要があります。 ※3 ダミーデータの write について マスターモードのSPI マクロから SPI クロックを出力するためにはアドレス 0x59 へのデータの write が必要になります。このため、Read アクセスの際でもクロックを出力させるためにアドレ ス0x59 へのダミーデータの write を行います。

(22)

図 5-6 Wishbone バスから SPI マクロで Read を行うためのレジスタアクセス例 w b _c lk _i w b _c yc _i w b _s tb _i w b _w e _i w b _a d r_i [7 :0 ] w b _d at _i w b _d at _o w b _a c k_ o ※1 T R D Y (w b _d at _o [4 ])を チ ェ ッ ク ※2 任 意 の 出 力 デ ー タ (コ マ ン ド 、 オ ペ ラ ン ド 、 W rit e デ ー タ ) ※3 R R D Y (w b _d at _o [3 ])を チ ェ ッ ク ※4 ダ ミ ー の R e ad デ ー タ (R e ad し た デ ー タ は 破 棄 ) ※5 S P Iの R e ad デ ー タ ※3 ※3 ※5 59 56 0 N/A N/A 80 ※1 ※1 ※3 ※3 ※4 59 N/A 5A 5A N/A 5A 5A 59 C0 N/A ※2 N/A 56 N/A 5A 5A 59 N/A (必要な回数 )繰 り 返 し (必要な回数 )繰 り 返 し

(23)

6 EFB のシミュレーション

6.1 テストベンチ作成時の注意点 EFB のシミュレーションには、最上位階層のテストベンチに以下の2つのモジュールのインスタンス が必要です。また、これらのモジュールのインスタンス名は以下のものでないと、エラーになります。 表 6-1 GSR/PUR のインスタンス名 モジュール名 インスタンス名 備考

GSR GSR_INST Global Set/Reset 出力モジュール

PUR PUR_INST Power Up Set/Reset 出力モジュール

エラメッセージの例

# ELAB2: Fatal Error: ELAB2_0036 Unresolved hierarchical reference to

"GSR_INST.GSRNET" from module "testbench.u1_efb_i2c_ms.EFBInst_0" (module not found).

# ELAB2: Last instance before error: /u1_efb_i2c_ms/EFBInst_0 # KERNEL: Error: E8005 : Kernel process initialization failed. # Error: Fatal error occurred during simulation initialization. 記述例 library ieee, std; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith; use ieee.std_logic_textio.all; use std.textio.all; library ovi_machxo2; use ovi_machxo2.all; entity testbench is end testbench; architecture BL of testbench is component GSR port( GSR : in std_logic ); end component; component PUR port( PUR : in std_logic ); end component; ・

(24)

・ ・ Begin GSR_INST : GSR port map( GSR => wb_xrst_i ); PUR_INST : PUR port map( PUR => c_vcc ); ・ ・ ・ end BL; 6.2 I2C マクロの入出力信号

I2C マクロからの出力は、I2C の仕様どおり’0’または’Z’です。I2C マクロから’1’や’H’は出力されませ ん。従って外部で’H’レベルへのプルアップ処理が必要になります。

(25)

6.3 WISHBONE バスへの入力データ WISHBONE バスから EFB にアクセスする場合、クロックに対してデータの遅延が小さい場合は wb_ack_o 信号がテクニカルノート TN1205 のタイムチャートとは違うタイミングでアサートされま す(図 6-2、図 6-3)。 --- ただし、Read/Write アクセス自体は正しく行われます。 --- 図 6-2 WISHBONE バスのアクセス波形(TN1205) 図 6-3 WISHBONE バスのシミュレーション波形(入力データ遅延なし) シミュレーション時のwb_ack_o のタイミングを TN1205 と同じにするためには WISHBONE バス への入力信号に、クロックに対して20ps 以上の遅延をつけてください。 図 6-4 WISHBONE バスのシミュレーション波形(入力データ遅延あり)

(26)

7 改訂履歴

表 7-1 改訂履歴

バージョン リリース 改訂内容

図  3-1  ハードマクロ選択タブ  クロック周波数の設定
図  3-2 WISHBONE clock 周波数の設定  3.2    I2C タブの設定
図  3-7 Timer/Counter マクロの設定タブ
図  3-9 Fast PWM Mode の内部カウンタと tc_oc の振る舞い
+7

参照

関連したドキュメント

たとえば、市町村の計画冊子に載せられているアンケート内容をみると、 「朝食を摂っています か 」 「睡眠時間は十分とっていますか」

ているかというと、別のゴミ山を求めて居場所を変えるか、もしくは、路上に

基準の電力は,原則として次のいずれかを基準として決定するも

倫理委員会の各々は,強い道徳的おののきにもかかわらず,生と死につ

①配慮義務の内容として︑どの程度の措置をとる必要があるかについては︑粘り強い議論が行なわれた︒メンガー

「海にまつわる思い出」「森と海にはどんな関係があるのか」を切り口に

※優良緑地として登録を 希望する場合は、第 6 条各 号の中から2つ以上の要 件について取組内容を記

Dual I/O リードコマンドは、SI/SIO0、SO/SIO1 のピン機能が入出力に切り替わり、アドレス入力 とデータ出力の両方を x2