[新連載]CPLD入門!
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
いつか使うことになるだろうと思ってはいたのですが。
何を今頃になって、というようなものですが。
ようやく本気で、CPLDと四つに取り組みます。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第108回]
●周波数カウンタ(3)
周波数カウンタは外部から測定対象のパルス信号を入力して、その周波数を測定します。
ところで外部から信号を入力する代わりに、自分自身の水晶発信クロックをそこに入力したらどうなるでしょうか?
まあ多分このボードの場合測定結果は4.096MHzになるとは思うのですが。
ちょいとした好奇心です。
ということで、測定してみたところ、思った通り、4.096MHzぴったり、という結果になりました。
下の写真は下位4桁の表示です。
ま。
そういうことでしょうね。
もとの4.096MHzを分周して作った1秒の間に、そのもとになったクロックをカウントするわけですから。
当たり前といえば当たり前のことでした。
●端子名端子番号表について
QuartusUでは、VHDLプログラムで定義した端子名を実際の端子番号と結びつけるためには、VHDLプログラムの中で行なうのではなくてPin Plannerを使います([第85回]参照)。
今頃になって気が付いたのですが。
その[第85回]ではCPLDトレーニングボードの回路に合わせた端子名と端子番号のリストを掲載しました。
そこをよく読んでみますと、そこに掲載したリストはCPLDトレーニングボードで使う全ての端子名、端子番号ではなくて、82C55プログラムで使う端子名のリストでした。
あらためて確認してみたところ、その後の回で紹介したプログラムで新たに使うことになった端子名の端子番号への割り当てについては何も書いていませんでした。
ということであらためてリストを整理しました。
下がCPLDトレーニングボードで使う全ての端子名、端子番号のリストです。
set_location_assignment PIN_22 -to ADRSIN[7] set_location_assignment PIN_21 -to ADRSIN[6] set_location_assignment PIN_20 -to ADRSIN[5] set_location_assignment PIN_18 -to ADRSIN[4] set_location_assignment PIN_17 -to ADRSIN[3] set_location_assignment PIN_16 -to ADRSIN[2] set_location_assignment PIN_15 -to ADRSIN[1] set_location_assignment PIN_12 -to ADRSIN[0] set_location_assignment PIN_11 -to DINOUT[7] set_location_assignment PIN_10 -to DINOUT[6] set_location_assignment PIN_9 -to DINOUT[5] set_location_assignment PIN_8 -to DINOUT[4] set_location_assignment PIN_6 -to DINOUT[3] set_location_assignment PIN_5 -to DINOUT[2] set_location_assignment PIN_4 -to DINOUT[1] set_location_assignment PIN_81 -to DINOUT[0] set_location_assignment PIN_65 -to LEDOUT[3] set_location_assignment PIN_67 -to LEDOUT[2] set_location_assignment PIN_68 -to LEDOUT[1] set_location_assignment PIN_69 -to LEDOUT[0] set_location_assignment PIN_24 -to IOR set_location_assignment PIN_25 -to IOW set_location_assignment PIN_64 -to PA[7] set_location_assignment PIN_63 -to PA[6] set_location_assignment PIN_61 -to PA[5] set_location_assignment PIN_60 -to PA[4] set_location_assignment PIN_58 -to PA[3] set_location_assignment PIN_56 -to PA[2] set_location_assignment PIN_57 -to PA[1] set_location_assignment PIN_54 -to PA[0] set_location_assignment PIN_55 -to PB[7] set_location_assignment PIN_52 -to PB[6] set_location_assignment PIN_51 -to PB[5] set_location_assignment PIN_50 -to PB[4] set_location_assignment PIN_49 -to PB[3] set_location_assignment PIN_48 -to PB[2] set_location_assignment PIN_46 -to PB[1] set_location_assignment PIN_45 -to PB[0] set_location_assignment PIN_34 -to PCH[3] set_location_assignment PIN_35 -to PCH[2] set_location_assignment PIN_36 -to PCH[1] set_location_assignment PIN_37 -to PCH[0] set_location_assignment PIN_40 -to PCL[3] set_location_assignment PIN_39 -to PCL[2] set_location_assignment PIN_41 -to PCL[1] set_location_assignment PIN_44 -to PCL[0] set_location_assignment PIN_83 -to CK1 set_location_assignment PIN_2 -to CK2 set_location_assignment PIN_65 -to LEDOUT[3] set_location_assignment PIN_67 -to LEDOUT[2] set_location_assignment PIN_68 -to LEDOUT[1] set_location_assignment PIN_69 -to LEDOUT[0] set_location_assignment PIN_70 -to SEGOUT[7] set_location_assignment PIN_73 -to SEGOUT[6] set_location_assignment PIN_74 -to SEGOUT[5] set_location_assignment PIN_76 -to SEGOUT[4] set_location_assignment PIN_75 -to SEGOUT[3] set_location_assignment PIN_77 -to SEGOUT[2] set_location_assignment PIN_80 -to SEGOUT[1] set_location_assignment PIN_79 -to SEGOUT[0] set_location_assignment PIN_30 -to SWA set_location_assignment PIN_33 -to SWB set_location_assignment PIN_31 -to SWC |
上で「全ての端子」と書きましたが、実はまだリストに載せていない端子があります。
端子番号27〜29です。
[第106回]の8pinICソケットの写真を見ていただくと、ソケットの1番〜3番にその端子番号がついています。
また[第101回]の回路図を見ていただくと、10KΩでプルアップした入(出)力端子として記載してあります。
この端子はサンプルプログラムでは使っていません。
プルアップしてありますから、未定義のままにしておいても問題はありません。
ということで上のリストには記載してありませんが、もしユーザーがこの端子を使いたいということであれば、VHDLプログラムとPin Plannerで適切に定義することで、入力または出力または入出力端子として自由に使うことができます。
さてそれで、上のリストについてですが。
[第85回]で説明しましたように、このリストを見ながらPin Plannerで端子名を端子図の該当する端子に割り当てるというのが正しい使い方です。
QuartusUに慣れるためにそうしていただくのが最も良い方法です。
しかし毎回そうするのは面倒だというのも事実です。
慣れてきたら、ウラ技を試してみるのもよいかもしれません。
ウラ技については[第93回]以降に書いています(説明をよく読んで慎重に)。
上のリストはQSFファイルの必要なデータ部分のみを抽出したリストですから、これをこのままコピーしてターゲットのQSFファイルに貼り付けることができます。
下は上のリストをそのままテキストファイルにしたものです。
このファイルをダウンロードして、それを開いてコピーしてもよいでしょう。
trngqsf.txt
上のリストはCPLDトレーニングボードで使う全ての端子のリストですから、プログラムによっては使わない端子も出てきます。
上のリストをそのまま貼り付けると、そのプログラムでは使っていない端子名については「Unknown」と表示されます。
[第95回]ではそのように表示されている端子名を削除する方法について書いています。
慣れるためにはそれも試していただくのがよいのですが、Unknownと表示された端子名を削除しないでそのままにしておいても特に問題はありません。
ただし7セグメントLED回路の出力端子SEGOUTとLEDOUTはプルアップしてないため、これらの端子がUnknownになっていると実行中にノイズで誤動作する可能性があります。
これらの端子は削除しても駄目です。
7セグメントLEDを使わない場合でも必ずVHDLプログラムでSEGOUTとLEDOUTは定義しておいてください。
書き方については[第90回]のサンプルプログラムのリストを参考にしてください。
CPLD入門![第108回]
2019.9.8upload
前へ
次へ
ホームページトップへ戻る