About Hidemi

主にFPGAに関する技術アイデアのための備忘録を展開しています。

Free HTML5 Template

興味のあること

  • 萌系アニメ
  • FPGA
  • 画像処理
  • 通信(Ethenret)
  • 高位合成

Features

画像処理をする高位合成処理系などの統合開発環境を構築を進めています。

高位合成処理

新フェーズを計画中。

統合環境

高位合成からFPGA化、Linuxディストリビューションからクロス開発環境までトータルで使いやすいプラットフォーム環境の開発を進めています。

クラウドFPGA

クラウド経由でFPGAを使用する実験を計画中。JavaScriptでクラウドに配置されているFPGAの書き換えを可能にしてリモートでアクセス可能にする機能を計画中。

Webで開発

Webブラウザ上でブロックモデリング開発を計画中。Webブラウザ→Vivado→FPGAの流れを計画中。

@hidemi_ishihara

Twtitterで呟いています。ブログに書く必要のないネタや速報はTwitterで、サポートもTwitterでご質問くださいませ。
https://twitter.com/hidemi_ishihara

RSS配信

RSS配信を復活しました。最新の5件分を配信中です。こちらのURLをRSSリーダに登録してください。
http://www.sweetcafe.jp/?rss

Blog

ひるね姫とSAO オーディナルスケール

今日は会社をお休みして朝からひるね姫SAO オーディナルスケールを観てきた。

ひるね姫

朝一番だったので人が少なかった。

ひるね姫、全体的にストーリーも良かったですね。

倉敷の児島・下津井が舞台だったんですね。

劇中(エンディング)に出てきた自動運転のバイク、ああいうの作ってみたくなったね。

ベースはNSR80とか・・・

ただ、テスト運転してたけどあのスピードなら手を離しても曲がれるスピードだったですね。

SAO オーディナルスケール

午前、2つ目だったので中学生が多かった。

1本目がひるね姫だっただけに次にアクションものってのも、順番を間違えたかと思ってしまった。

オーディナルスケールも全体的に良かった。

SAOは一期目のインパクトが大きすぎるのでどんなかなぁと思ったけど、一期から観ていると楽しいストーリーだった。

SAOって、一期目を観てないと二期目以降は先祖返りするところが多いので途中参加は面白くないかも。

それより、なんでメインフレームはzシリーズがモデルなの?

IBM zシリーズ Fujitsu GSシリーズ Hitachi APシリーズ

あぁ、なんとなくわかるわぁ〜(^-^;

2017年03月24日 15時49分25秒 - Link

OpenOCD

Freedom 310(RISC-V)がArtyに書き込めたのでデバッグするのにJTAGが必要になった。

OpenOCD対応のJTAGデバッガを用意することにしよう。

SiFiveのWebページを見るとOlimex JTAG DebuggerがOptionalとして紹介されている。

https://dev.sifive.com/dev-kits/

OlimexのJTAGデバッガはARM-USB-TINY-Hという商品名らしい。

Straberry Linuxで5,000円で販売されている。

https://strawberry-linux.com/catalog/items?code=15045

JTAGデバッガは持っていないので買うかどうか後で考えましょう(^-^;

OpenOCDの構成

そもそも、OpenOCDってどんな構成でJTAGデバッグするのだろう?

USBドングル(FTDIベースとか)で使用するのが前提のようだ。

っうか、FTDIベースなんだし、GPIOでJTAG信号エミュレートできれば良くね?

ZYBOとかあるし、ZYBOのPMODにGPIO用意してOpenOCDを利用できないか?

RaspberryPiをJTAGホストにしたいって考える人いるよなぁと思って、ソースコードを覗いてみると・・・

ソースコードの入手

$ git clone git://git.code.sf.net/p/openocd/code openocd

GPIOでJTAGできそうなコードがあった。

  • ep93xx
  • at91rm9200
  • bcm2835gpio
  • jtag_vpi

JTAG_VPIはちょっと違うけど、ソースコードが短いep93xxを参照してみると・・・

やっぱり、JTAG信号叩くだけやん。

じゃぁ、作れそうですね。

どこかで頃合いを見て、作ってみよう。

2017年03月24日 01時59分08秒 - Link

Freedom

Freedomのビルドは一昨日の方法ではなく、次のようにMCSファイルを作成するとVivadoを実行するそうだ。

$ make -f Makefile.e300artydevkit mcs

これでMCSファイルができるのでArtyに書き込めということらしい。

上記のmakeを参考にVivadoをするのは下記のようになる。

VSRC_TOP=/home/h-ishihara/workspace/freedom/freedom/builds/e300artydevkit/sifive.freedom.everywhere.e300artydevkit.E300ArtyDevKitConfig.v EXTRA_VSRCS="/home/h-ishihara/workspace/freedom/freedom/rocket-chip/vsrc/AsyncResetReg.v /home/h-ishihara/workspace/freedom/freedom/rocket-chip/vsrc/DebugTransportModuleJtag.v /home/h-ishihara/workspace/freedom/freedom/sifive-blocks/vsrc/SRLatch.v" make
2017年03月24日 01時58分27秒 - Link

Guetzli

Googleが公開したJPEGエンコーダ。

libjpegよりも20〜30%ファイルが縮小されるらしい。

画質はlibjpegに比べると滑らかさが欠けるとレポートがあったが、俺が見た限りではほぼ誤差の範囲であると思う。

そんなの主観で変わるから問題ない程度と言ってしまえばそれで片付いてしまう。

$ sudo apt libpng-dev $ git clone git://github.com/google/guetzli $ cd guetzli $ make

bin/Releaseの下にguetzliが生成される。

エスパー魔美の写真

藤子・F・不二雄ミュージアムの近くにあるエスパー魔美パネルの髪の毛部分。

2.88MB(左:元JPEG) → 1.62MB(右:Guetzli)に削減した上でこのクォリティ。

花の写真

590kB(左:元JPEG) → 30kB(右:Guetzli)に削減してこの画質だ。

見た目わからない。

上図を見て差分があると見えた人は目の錯覚だ。

差分値を計算したら実はゼロだった。

差分なしでさらに圧縮がかかったってわけ?

ビューワで色が変わった。

Ubuntu標準の画像ビューワでファイルを開くと色が違った。

左が元JPEGで右がGuetzliだ。

GIMPで見た時は差分すら無かったGuetzliのJPEGデータなんだけど、おそらく、Ubuntu標準ビューワで読めないマーカが入っているんだろう。

ここまで差分無くて小さくなるならGuetzliはイイね。

Guetzliは処理が重いようなのでハード化してみたいね。

2017年03月22日 23時14分34秒 - Link

Freedom 310

RISC-VをRTLで提供しているところがいくつかある。

手っ取り早くRISC-VをFPGAに組み込んでみようと思う。

Rocket Core

もっとも一般的なRICS-V実装でChiselで実装されている。

ZScale/VScale

ZCaleは32bitでパイプライン段数が短く、面積重視のコアだね。

一方、ZScaleのVerilog HDL版といったところですが若干、未実装な部分があったりしてソースコードがあるという程度に留めておくほうが良いようだ。

Freedom

SIFiveがFreedom Everwhere 310(FE310)で製品化しているRISC-Vがオープンソースで公開されている。

Xilinx社のVC707(Virtex-7評価ボード)及びDigilent社のArty(Artix-7評価ボード)に実装できるプロジェクトが公開されている。

http://store.digilentinc.com/arty-artix-7-fpga-development-board-for-makers-and-hobbyists/ Digilent社から$99で、秋月電子で16,000円で販売されている。

今回はFreedomをArtyに実装してみる。

次のようにFreedomをダウンロードしてきて、makeする

$ git clone git://github.com/sifive/freedom.git
$ cd fpga/e300artydevkit/
$ source /opt/Xilinx/Vivado/2016.4/settings64.sh
$ make

実行すると次のようなエラーが発生する。

ERROR: [Board 49-71] The board_part definition was not found for digilentinc.com:arty:part0:1.1. The project's board_part property was not set, but the project's part property was set to xc7a35ticsg324-1L. Valid board_part values can be retrieved with the 'get_board_parts' Tcl command. Check if board.repoPaths parameter is set and the board_part is installed from the tcl app store.

これはVivadoにArtyのボード定義ファイルが入っていないために発生するエラーだ。

そこで次のWebページからArtyのボード定義ファイルをダウンロードして、Vivadoに追加する。

https://reference.digilentinc.com/reference/software/vivado/board-files?redirect=1

$ unzip vivado-boards-master.zip
$ cd vivado-boards-master/new/board_files
$ sudo cp -R arty /opt/Xilinx/Vivado/2016.4/data/boards/board_files

ボード定義ファイルを追加してからmakeを実行すると次のようなエラーが発生する。

ERROR: [Vivado 12-385] Illegal file or directory name ''

なにやら、script/prologue.tclの$vsrc_topに何も入っていないことからエラーが発生している。

rocket-chip、sifive-blocksに何もファイルが存在していない。

このfreedomリポジトリはrocket-chip、sifive-blocksのフォルダをsubmoduleとして呼び出す。

次のコマンドを実行してsubmoduleをダウンロードしておく必要がある。

$ git submodule update --init

次にrochek-chipのフォルダ内も同じようにsubmoduleをupdateする。

$ cd rocket-chip
$ git submodule update --init

どうも、makeの手順が間違っていたようだ。

本当は次のようにmakeするようだ。

$ make -f Makefile.e300artydevkit

結局、次のエラーが発生する。

/home/h-ishihara/workspace/freedom/freedom/rocket-chip/firrtl/utils/bin/firrtl.jar

javacが無いんだって・・・

$ sudo apt install default-jdk

総括するとこういうことになる。

$ git clone git://github.com/sifive/freedom.git
$ cd freedom/
$ source /opt/Xilinx/Vivado/2016.4/settings64.sh
$ git submodule update --init
$ cd rocket-chip/
$ git submodule update --init
$ cd ..
$ make -f Makefile.e300artydevkit verilog
$ cp rocket-chip/vsrc/AsyncResetReg.v fpga/e300artydevkit/src/
$ cp rocket-chip/vsrc/DebugTransportModuleJtag.v fpga/e300artydevkit/src
$ cp sifive-blocks/vsrc/SRLatch.v fpga/e300artydevkit/src
$ cd fpga/e300artydevkit
$ VSRC_TOP=../../builds/e300artydevkit make

ビルドが完了するとobjの下にsystem.bitが生成されている。

2017年03月22日 01時40分38秒 - Link