2023年5月21日日曜日

ZynqBerryで遊ぶ 2

ReferenceDesignからタイミングエラーが起きている部分(カメラ入力とAudio)を削除してHDMI出力部のみにしてみた。

これでimplementしてxsaファイルを生成・exportし、それ用のpetalinuxをビルドして実機で動かしてみた。そしたら起動はしたものの暫く放置して再起動したら起動しなくなってしまった。仕方なくprebuildのバイナリに変えて再起動してみたのだが起動しない。 念の為、ビルドしたバイナリをqemuで起動するとちゃんと起動した。














zyncBerryはSDカードから直接ブート出来ないので、最初QSPI内のU-BOOTが立ち上がり、そこからSDカードのバイナリを読み込む仕様になっているのだが、QSPIが壊れたかあるいは何処かハードが故障してしまったっぽい。VivadoのHARDWARE MANAGERで見るとデバイスの認識はされてるのだが。。。













仕方がないので、VitisでStandaloneのHellow Worldアプリを作成しZynqにダウンロードして動かしてみたら以下のようなエラーが出てしまった。























ということで、どうやらZyncが故障してしまったようだ。 が〜〜んである。 orz

これまで幾つもFPGAの評価ボードを触ってきたが、こんな故障に遭遇したのは初めてだ。 このボードはハズレのボードなのかも知れない。

しゃーない。別のボードで遊ぶか。 しかし、何で故障した?


2023年5月5日金曜日

ZynqBerryで遊ぶ

ZynqBerryで遊んでみることにした。

ZynqBerry (TE0726)はTrenz electronic社が販売しているFPGAボードで、Raspberry Pi Model 2と互換製があるそうだが、本物のRaspberry Piを所有していないのでどの程度互換性があるのかは分からない。 このボードは2019年の12月にDigi-Keyで購入したのだが、忙しくて殆ど動かさずにいた。

搭載しているFPGAはZynq 7010、DRAMは512MByte DDR3L SDRAM、 Configuration 用 Flash memoryは16MByte、 I/Fは type-AのUSBが4、 10M/100M Ethernetが1、 μSDカードI/Fが1、JTAGとUSB-UART用にtype-BのUSB I/Fを1つ持っている。 EthernetはZYNQのGEMではなくSMSCのLAN9514というLSIを使っている。 LAN9514は4ポートのUSB 2.0 hubとしての機能と10/100Mbit Etnernetの機能を搭載しているLSIでZynqとはUSB 2.0で接続されている。

    (TRM-TE0726-02より引用)

この他にHDMI I/F、CSI(Camera Serial I/F)-2、 DSI (Display Serial I/F)用のコネクタ、Line-out用Audio ouputがZynqのPL部につながっているがPL部なので別の用途に使うことも可能だろう。


注意点としては、使用しているZynqのパッケージの制約から、SDカードからダイレクトにブート出来ない。 SDカードからブートさせる場合はSPI ROMのFSBLからu-bootを起動してそこから改めてSDカードからブートさせる必要があるそうだ。  また、残念な点が2つある。まず一つは、このボードの電源はtype-BのUSBコネクタから供給するが、type-AのUSB I/Fを4つ持っているのでこれらをフルに使う場合を想定すると、type-Bコネクタからの給電はちょっと不安だ。 もう一つはFPGAの再コンフィグやリセットをするためのスイッチを搭載していない。ただし、開発者もその点は判っているようで、+5V給電用とリセット用のランドがそれぞれ設けられている。 そこで、ジャンク箱から適当な部品を探し出して給電用コネクタとリセットスイッチを取り付けた。

これでボードの準備は出来た。
次にTrenzのサイトからReference DesignをダウンロードしてVivadoでインプリしてみた。
Reference Designの最も最新バージョンは2020.2用のもので、TE0726-zynqberrydemo1とTE0726-test_boardの2種類あった。最初にTE0726-zynqberrydemo1を試してみた。このデザインにはCSI-2、DSI、HDMI、Audioとボードのほぼ全ての機能を動かす回路が入っているようだ。 vivadoでインプリしてみたところ、何とタイミングエラーが出てしまった。どこかデザインをイジったわけでもなく、そのまんまの状態でインプリしたのだが。。
細かくは見ていないが、タイミングエラーになっている箇所はAudio部分のクロック載せ替え部分とCSI-2 I/F部で起きているようだ。 別にこのデザインで遊びたい訳ではないので深追いはしないことにして、この状態でbitstream生成とハードウェアのエクスポート(xsaファイル生成)だけした。

また、もう一つのTE0726-test_boardの方も見てみたが、こちらはPL部には何もないデザインだった。
生成したTE0726-zynqberrydemo1のxsaを使ってpetalinuxのビルドをしてみた。このReference Designにはpetalinux用のテンプレートも入っているのでこれを利用した。実はこのボードのEthernetの実装の仕方はZYBO等の他のFPGAボードには見られない手法なのでデバイスツリーの書き方に興味があったのだが、特別な記述は無かった。ZynqからはUSBの先に繋がっているのでUSB-Ethernetコンバータとして見えるのだろう。 HDMIはsimple framebufferを使っている。起動直後HDMIの画面出力は全面黄色だったが、/dev/fb0に/dev/zeroをddでコピーしたら書換えできたので正常に動作しているようだった。

ということで、このボードでちょっと遊んでみようと思う。具体的には以前、ZYBOでLinaro linux + simple frame bufferでX Windowを動かしたが、今回はZynqBerry + petalinuxで同様のことをしてみようという訳だ。 

2023年5月2日火曜日

ブログ再開

遂に定年を迎えた。

定める年と書いて定年。 定める年・・・定年・・・ よく判らんが、人生において一つの大きなマイルストーンではある。 まぁしかし、普通の会社員として生きるのは非常にキツかった。この生き方は自分の性格に合ってないと思った。が、ここまで何とかやってこれたのはやはり妻のお陰だと思う。彼女の叱咤激励、時には足かせとなってくれたお陰で8回目の転職をしないで済んだ。妻には感謝しか無い。 幸いなことに定年後も今の勤務先で再雇用され、あと数年はFPGAを使った開発業務に従事できそうだ。

マイルストーンを超えたので、ぼちぼちブログを再開しようかと考えている。 ブログを休止してから約6年、その間に世の中も大分変わってしまった。 ALTERAはIntelになり、XilinxはAMDになった。LatticeはまだLatticeのままだが。 FPGAの基本特許切れによりGOWINを始めとする新興のFPGAメーカーも色々と出てきているようだ。 ブログ休止中も仕事ではFPGAを使った開発業務はやっていたのだが、デバイスに偏りがあるし twitterでFPGA関連のツイートを追うのをいつしか止めてしまったので現在なにが話題なのか分からない。 6年前は高位合成がトレンドだったと思うが今どうなんだろう。

Verilog-HDL等のハードウェア記述言語よりも抽象度の高いC言語でFPGAの開発ができることが高位合成の利点な訳だが、 ChatGPTの登場により、今や、自然言語でFPGAの設計ができそうな時代が到来してしまった。 私も試しにChatGPTに浮動小数点加算器の生成を依頼してみた。最初に出てきたのは仮数部のみを加算するコードだったが、「この部分を考慮してやり直して」と考慮不足な部分の改善指示を何回かやり取りしたらイメージ通りの実用性のあるコードが生成された。 もう一つバイナリをBCDに変換するBIN2BCD回路の生成も依頼してみたが、こっちは最初に提示されたコードがイメージと大きくかけ離れていて使えないコードだったので1回目で諦めた。 ChatGPTの有料版はさらに精度が高いという話だし今後も進化して行くのだろうから、これはもう究極のCASEツールになるのだろう。

ChatGPTとはFPGA以外の話もしてみた。

夫の頭が剥げている。笑いそうになるけどどうしたらいい?って妻が聞いているけどどう思う?

って聞いてみたら、

夫の頭が剃られているか、薄くなっているかは、その人の自然な外観であり、人々が異なる外観を持つことが普通です。もし夫が自分の外観に不安を感じているなら、彼の気持ちを尊重し、彼が自分自身を快適に感じられる方法を見つけるように支援することが大切です。

もし、夫が自分の頭髪に対して冗談を言っているのであれば、妻もそれに合わせて楽しんでいいでしょう。しかし、もし妻が自分の夫を見下すような態度をとるのであれば、それは不適切であり、夫を傷つける可能性があります。

最も重要なことは、お互いを尊重し、自然な外観や個性を受け入れることです。

と返してきた。

たまたまこの日は私の誕生日だったので次に

今日は僕の誕生なんだ。

と入れてみた。そしたら、

「お誕生日おめでとうございます!素晴らしい1年を迎えられますように。 お誕生日は、新しい年を始める良い機会です。過去の成功や失敗を振り返り、新たな目標を設定することができます。自分自身に対する思いやりと共に、家族や友人との時間を楽しむことができる日でもあります。 この特別な日を過ごす際には、自分自身へのご褒美や大切な人たちとの時間を過ごすことをお勧めします。また、今年の目標を設定し、その目標を達成するために何かしらのアクションを起こすことも素晴らしいアイデアです。 再度、お誕生日おめでとうございます!良い1年になることを願っています。」

と返してきた。 惚れそうになった。

ChatGPTを使うことの懸念の一つにChatGPTにマインドコントロールされる可能性が上がっているが、何か判る気がする。 でも、ChatGPTの返しは言葉が優しく誠実なので 老人福祉ではかなり使えるんじゃないだろうか。会話を通して癒やされる人も居るだろうし。そのための会話なら話している内容の正誤は大して重要ではないかも知れないし。

妻はChatGPTが気に入り、(間違った回答をすることがあると理解した上で)調べ物とかで使っているようだ。最近では「チーちゃん」と呼び出した。

という訳で、ブログをぼちぼちと再開しようと考えている。休止中にもFPGAのボードを何種類かは購入した。買っただけで殆ど動かしていないのだが。 再雇用になると賃金は大幅にダウンするので、これからは新しいボードを安易には購入できない。今あるこれらのボードを使ってなにかやってみようと考えている。 どういう頻度になるかも継続できるかも分からないがマイペースでノンビリとやって行こうかなと考えている。





自作CPUで遊ぶ 25

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