多軸同期.COMで作成した、モータの多軸制御を行う組み込みソフトウェアに、DAコンバータ(デジタル→アナログ変換)によるアナログ信号出力の機能を追加するよう依頼がありましたので、コーディングとデバッグを行いました。
DAコンバータは、ワンチップマイコンに内蔵されている場合が多いですが、今回は、マイコンに外付けされている分解能12ビットのDAコンバータを使ってアナログ信号を出力するという仕様です。
12ビットということで、符号無しデジタル値の000H~FFFH(0~4095)が、0~5Vに対応して出力されるのだろうと思っていたら、間違っていました...
今回のH/Wでは、符号付きのデジタル値800H~7FFH(-2048~2047)が、0~5Vに対応する仕様になっていました。
勝手な思い込みはいけませんね...
最終的には、モータを制御する速度指令をアナログ信号で出力するのですが、ボード単体でデバッグを行うために、ノコギリ波状の波形出力をするようなソフトウェア処理を入れ、アナログ信号をデジタルストレージオシロスコープで観測しました。
下記のように、ちゃんと意図した通りの波形が観測されたので、バッチリです。
波形が階段状になっているのは、変化点を識別しやすいように、そうなるようなソフトウェア処理としているからです。
アナログ信号出力のソフトウェア処理は、64μsec周期の割り込み処理内で行っているので、時間軸レンジを広げて、波形を観測してみたところ、信号の変化周期は、割り込み周期程度になっていることが確認できました。
信号の変化周期にバラツキが見られるのは、S/W要因なのかH/W要因なのか、現時点では特定できませんが、外付けDAコンバータの入力がシリアル信号方式なので、その影響ではないかと思います。
この程度のバラツキの影響は問題になることは無いだろうと考えますが、来週から、お客さまのところでモータと組み合わせた実機デバッグを行う予定ですので、そのときに確認することにします。
>>多軸同期制御.COMの強み
>>多軸同期制御.COMのサービス
>>多軸同期制御.COMの事例
>>お問い合わせフォーム
マイコミジャーナルサイトにコンピュータアーキテクチャの話というコラムが連載されています。
▼【コラム】コンピュータアーキテクチャの話(マイコミジャーナル)
http://journal.mycom.co.jp/column/architecture/index.html
ここ数回の話題は、メモリアクセスとキャッシュについてです。
▼第135回 メモリのアクセス時間とローカルメモリ
http://journal.mycom.co.jp/column/architecture/135/index.html
▼第136回 ローカルメモリの2つの方法
http://journal.mycom.co.jp/column/architecture/136/index.html
▼第137回 キャッシュの仕組み
http://journal.mycom.co.jp/column/architecture/137/index.html
▼第138回 キャッシュアクセスの2つの考え方
http://journal.mycom.co.jp/column/architecture/138/index.html
コラムでは、マイクロプロセッサのクロックの例を2.5GHzとしているので、ここではパソコン用のマイクロプロセッサを想定しているようです。
組み込み用のマイコンでは、クロックはもっと低い場合がほとんどですが、メモリアクセスとキャッシュの考え方は同じように考えて差し支えありません。
マイコンシステムのリアルタイム性能は、CPUの内部クロックだけでなく、インストラクション(命令コード)格納用メモリと、データ格納用メモリのアクセス時間に大きな影響を受けます。
メモリアクセスが1クロックで行われるのが理想的ですが、高速なメモリはコストがかかるので、内部クロックが高速になればなるほど、メモリアクセスサイクルとの乖離が大きくなる傾向が発生します。
その乖離の緩衝役を担うのがキャッシュです。
逆に言うと、クロックが低くて、1サイクルでアクセスできるメモリが用意できる場合はキャッシュは必要ありません。
内部クロックが数十MHz程度のワンチップマイコンの場合は、1サイクルでアクセスできるROMやRAMを内蔵している場合が多いですね。
内部クロックが100MHz以上の場合は、現在のテクノロジだと、特にROMは1サイクルでアクセスできるものを内蔵することが難しくなってきます。
私が扱ったマイコンの例だと、NECのV850E/ME2(最大動作周波数150MHz)は、1サイクルでアクセスできる内蔵命令RAMと、内蔵データRAMを持っていました。
ROMは外付けとし、そこに格納した命令コードを内蔵命令RAMに転送して実行することで、命令コードの読み出しを1サイクルで行えるようにしていました。
ルネサステクノロジのSH7211(最大動作周波数160MHz)の場合は、内蔵RAMは1サイクルアクセスでしたが、内蔵ROMは1サイクルではなく(ROMのアクセスサイクル数はデータシートに未記載)、内蔵ROM+内蔵キャッシュで1サイクルアクセスとほぼ同等の性能を実現しているとのことでした。
SH7211のニュースリリースには下記のように記載されていました。
(1) 独自のフラッシュメモリや回路の技術により、160MHz の高速動作を実現本製品は、512K バイトの大容量フラッシュメモリを搭載しています。
CPU コア等のロジック回路は160MHz の高速動作が可能ですが、
一般的に、フラッシュメモリはロジック回路にくらべて
原理的に動作速度が遅く、高速化が困難です。
しかし、本製品では、当社がこれまで培ってきた
独自のフラッシュメモリ技術ならびにフラッシュメモリの
キャッシュ回路等の新回路方式を採用し、
160MHz で1 サイクルアクセスを行う場合と
ほぼ同等の性能を実現しています。
▼写真はSH7211を搭載した市販のマイコンボード