2023年11月26日日曜日

自作CPUで遊ぶ 13

最近 exhausted 気味で全ッ然作業が捗らない。 ... orz

FPGAボードにZYBOを使うことにしたので、今回はPetalinuxとzumi32用クロスGCCのインストール等を行った。 また、ZYBOはVGAとHDMIのコネクタを持っており将来的にはGUIのアプリも作りたいので、simple-framebufferも入れてX11が立ち上がるようにもした。デバイスツリーのsystem-user.dtsiは以下のようにした。
simple-framebufferを使うためには、Kernel ConfigurationのDevice Drivers -> Graphics support でSimple framebuffer driverとFrame buffer Devices の Support for frame buffer devices を有効にする必要がある。
vivadoのblock designは以下のようにした。今日は時間が無かったのでZYNQ-PS部とzumi32部間はUART接続にしたが、後に共有メモリ方式に変更するつもりだ。
petalinuxはpetalinux-image-fullを16GBのSDカードにインストールして動かしていて、FAT32部を2GB、ext4部を14GBにしているのだが、今回使用したバージョン2022.2はサイズが巨大でこれだけで使用量が97%位になっている。そのため、追加のアプリやクロスコンパイラ等が入らないので別のUSBストレージを繋いで /usr/local にマウントし使用することにした。これも後にインストールするアプリを選別してサイズの縮小を図ろうと考えている。 また、petalinux-image-fullにはmatchboxっていうwindow managerが入っているのだが何かショボくて実用性は無い。軽量のウィンドウマネージャーを自分でインストールするか若しくはユーザーランドはubuntuにしたほうが良いのかも知れない。以下はmatchbox-window-managerの表示画面だ。
GTKWaveのアイコンが写っているがこれは後からインストールしたもので最初から入っている訳ではない。

 zumi32用クロスコンパイラもインストールした。ビルドに数時間かかったが何とかビルドに成功しインストールできた。
今回画面の解像度を1900x1200にした。一応、X Windowも動くが解像度が高すぎるためかウィンドウをマウスでドラッグして動かす場合のレスポンスが非常に悪い。下げたほうが良さそうだ。

2023年11月5日日曜日

自作CPUで遊ぶ 12

そろそろ実機を動かしたいところだが、CNC4030付属のコントローラはなるべく改造したくない。パルスモータドライバは今まで実験に使ったやつがあるしスイッチング電源等もジャンク品を何個か持っているのでこれらを使ってデバッグ用コントローラを組み立てることにした。ベースになる板はダイソーの穴開きボードを使っている。一見すると木製の板に見えるのだが材質は"MDF、紙"って書いてあった。厚さが5mmあるのでそこそこ強度はありそうだ。スピンドルコントローラは無いのでそれだけは付属コントローラの物を使うことになる。
スイッチング電源は出力50Wの同じ型番の物が2個あったので、これの出力をダイオードを介して並列接続して使うことにした。
FPGAボードは当初 CMOD-S7を使おうと考えていたのだが、方針を変えてZYBOを使うことにした。GコードのインタプリタやMACH3やLinuxCNCの様なGUIも可能であれば作りたいと考えているのでアプリケーション層の部分はZYBO+Petalinuxにする。Zumi32はPL部に実装してARMとZumi32間は共有メモリ(RAM)を介して通信する。 電源の一部の配線が出来た。右側の7セグ基板とその下のスイッチ基板はこのコントローラに実装するか、独立してCNCペンダント的な物にするか思案中だ。
RTLの方はパルス生成部を書いている。 最下層は pls_gen というモジュール名にして主にパルスモータードライバへのパルスを生成する。一応 en信号とdir信号も出力するがこれは入力信号を1段F/F通しただけのものになる。前回の検討ではbeat信号もこの階層に入れるつもりだったが、これは加速度 accel を更新するタイミング信号なのでもう一つ上の階層の方が良さそうだ。ということで現状入出力は以下のような感じだ。


自作CPUで遊ぶ 25

まだ制御ソフトが完成していないので今まではスピンドルを移動するために一々簡単なプログラムを書いて移動させていたのだが、非常に面倒なのでCNCペンダント的なものを作ることにした。 右側の縦に2つ並んでいるスイッチ...