ユーザモジュールの設定と配線





配線が終わった後の図

ユーザモジュールのパラメータ設定
 前までの作業で配置されたユーザモジュールのパラメータを設定することにしよう。モジュール(Select User Modulesにあるものでも、画面中央の配置配線の画面上のブロックでもかまわない)を左クリックすると、左側のUser Module Parametersのところでそのモジュールのパラメータ設定ができるようになる。


 これはPWM16_1を選択したところである。User Module Parametersの上にもPWM16_1というリストボックスがあるので、ここで選択してしまってもかまわない。
 さて、PWM16_1、PWM16_2のパラメータを設定してしまおう。PWM16_1、PWM16_2ともほとんど設定は同じで、違うのはCompareOutとPulseWidthだけである。設定していくと、上で示した図のようにモジュールから線が伸びてきていかにも設定していますという感じになるのがちょっと面白いのではないかと思う。
 書き忘れていたのだけど、PeriodやらPulseWidthのように数値で入れる所はUp/Downするだけではなく、直接値をキーボードから入れる事もできるので、ご安心を。

PWM16_1の設定
項目 設定 備考
Clock VC2 クロック源設定。今回はVC2を使う
Enable High PWMの動作イネーブル信号。通常Highで動作イネーブル、’Low'でディセーブルになる(Invert Enableを使って反転させることも可)。今回は動きっぱなしにするのでHighに固定
CompareOut Row_0_Output_0 パルス出力はR0[0]バス(画面でモジュールの下を走っている青いバスの一番上)に出力する
TerminalCountOut None ターミナルカウント出力は使わないのでNone
Period 65535 周期設定。入力を1/Nにするときは(N-1)を設定する。65535を設定すると65536分周になる。
PulseWidth 13106 パルス幅設定
CompareType Less Than Or Equal カウント値が(Pulse Width+1)以下だったら'H'レベル出力。
65536×0.2≒13107なので、約20%
InterruptType TerminalCount 割り込みモード設定。今回は使っていないのでデフォルトのまま
ClockSync Sync to SysClk カウンタ動作の同期化。SysClkに同期させる
InvertEnable Normal イネーブル信号の極性選択。今回はNormalでいい

PWM16_2の設定
項目 設定 備考
Clock VC2 クロック源設定。今回はVC2を使う
Enable High PWMの動作イネーブル信号。通常Highで動作イネーブル、’Low'でディセーブルになる(Invert Enableを使って反転させることも可)。今回は動きっぱなしにするのでHighに固定
CompareOut Row_0_Output_1 パルス出力はR0[1]バス(画面でモジュールの下を走っている青いバスの上から二番目)に出力する
TerminalCountOut None ターミナルカウント出力は使わないのでNone
Period 65535 周期設定。入力を1/Nにするときは(N-1)を設定する。65535を設定すると65536分周になる。
PulseWidth 26213 パルス幅設定
CompareType Less Than Or Equal カウント値が(Pulse Width+1)以下だったら'H'レベル出力。
65536×0.4≒26214なので、約20%
InterruptType TerminalCount 割り込みモード設定。今回は使っていないのでデフォルトのまま
ClockSync Sync to SysClk カウンタ動作の同期化。SysClkに同期させる
InvertEnable Normal イネーブル信号の極性選択。今回はNormalでいい

配線する
 ユーザモジュールのパラメータ設定も終わって、モジュールと配線リソースの間の結線は終わったので、次は配線リソース間やI/Oピンとの結線である。これは接続点で左クリックして出てきたポップアップメニューから選ぶというのが基本操作になる。
 今回のサンプルでは入力は二つのPWMの出力をピンまで出す配線をすることになる。結線のルートはこのページの一番上の図にあるように、PWM16の下を横に走っているRow0_Outputバスから右側で縦に走っているGlobalOutputバス(GOE:Even、GOO:Odd)を通って、右側にあるピンまでたどり着くというものである。具体的には

・RO0[0]→GOE0→Port0_0
・RO0[1]→GOE1→Port0_1

というルートである。


RowOutputからGlobalOutputへの結線
 先ほどPWM16_1の出力と接続したRow0_Output_0バスの右側になにやら四角い箱が見える。ここが、右側のGlobalOutputバスとの結線ポイントである。
 これを左クリックすると、この部分の中身が現れる。

 左側の横倒しになった台形がセレクタで、右側の四角は論理演算ユニット、一番右がバッファになる。既にRO0[0]がそのままバッファまで抜けるようになっていることが見て取れるので、右側のバッファの一番上を左クリックして、GlobalOutEven0(GOE0)に出力するようにする。

 今回は使わなかったけれども、論理演算ユニットの所を左クリックすると、下の図のように、いろいろな論理演算処理ができることが分かる。上側がA入力、下側がB入力である。今回はRO0[0]がそのまま筒抜けて欲しいので、ここは単に「A」のまま(デフォルト)でいい。

 同じようにしてPWM16_2とつながっているRO0[1]をGOE1に出力するように設定する。上の図のような感じになるはずである。

I/Oピンとの結線
 続いてGOEと右側に並んでいるピンの間の結線である。GOE0のラインを右クリックすると左の図のようにピンに出すのか、内部結線にするのかの選択になる。ここではピンに出すのでPin..を選ぶ。すると、右の図のようにどのピンに出力するのかの選択を求めてくる。どのピンにも自由に出せるわけではなくて、この二つのうちどちらかを選べということである。ここではPort_0_0を選択する。

これでRO0[0]からPort0.0までの結線が終わったことになる。結線状態は上の図のように表示される。 同じようにしてGOE1をPort_0_1と結線しておこう。右の図のようになるはずである。

アプリケーションの生成
これで設定と配線はすべて終了である。いよいよプログラミングということになる。では今までの設定内容から必要なソースコードを自動生成させることにしよう。やり方は簡単である。
上のメニューからConfig=>Generate Applicationを選ぶだけである。


こんなメッセージが出て無事完了したらDevice Editorでの作業は終了である。続いてApplication Editorに移ろう。
View=>Application Editorである。