k0b0's record.

Computer Engineering, Arts and Books

linux foundationのCHIPS Allianceプロジェクト

オープンソースチップ開発が加速する

 Linux Foundationがハードウェア設計のソースコードをホスト・キュレーションするCHIPS Allianceプロジェクトを立ち上げたみたい。初期のCHIPS Alliance支援企業はEsperanto Technologies、Google、SiFive、およびWestern Digital。なんだか、オープンソースプロセッサ開発がますます活気付いてきそうな予感。

詳細は以下のリンクにて。
chipsalliance.org

$readmemb()でメモリの初期値を設定する

$readmemb()でメモリの初期値を設定する

$readmemb()の書式

2進数で初期値を設定する場合は$readmemb()を使い、16進数で初期値を設定する場合は$readmemh()を使う($readmemhの書式は$readmemb()と同じである)。

$readmemb("初期値が記述されたファイルの絶対パス",  初期値を格納する配列);

$readmemb()を使ったROMの記述例

module rom (input  logic [31:0] Readaddress,
            output logic [31:0] Readdata);

// 32bit 10ワードのメモリを宣言
logic [31:0] mem [0:9];

// 初期値(rom.dat)を設定
initial 
begin
    $readmemb("$HOME/rom.dat", mem);
end

assign Readdata = mem[Readaddress];

endmodule

初期値(rom.dat)の記述例

2進数の記述は"_"で区切ることができる。

00000000_00000000_00000000_00000000
00000000_00000000_00000000_00000001
00000000_00000000_00000000_00000010
00000000_00000000_00000000_00000011
00000000_00000000_00000000_00000100
00000000_00000000_00000000_00000101
00000000_00000000_00000000_00000110
00000000_00000000_00000000_00000111
00000000_00000000_00000000_00001000
00000000_00000000_00000000_00001001

Western DigitalのRISC-VコアSweRV

Western DigitalのRISC-VコアSweRV(SystemVerilog記述)が公開されたみたい

f:id:k0b0:20180204144849p:plain
ざっくりとした仕様は以下の通り

  • Apache 2.0ライセンス
  • 32bit 9ステージパイプライン(スーパースカラ)
  • 最大4.9 CoreMarks / Mhz
  • 監視システムのリアルタイム分析などのデータ集約型アプリケーションをサポート
  • 28mm CMOSバッテリで動作し、電力効率の高い設計では最大1.8GHzで動作可能

詳細は以下を参照のこと。
msyksphinz.hatenablog.com
github.com
github.com

SystemVerilogで符号拡張を記述してみる

符号拡張

 ビット連結を利用して、符号拡張を記述してみる。

ビット連結の記述例

// 8bitのデータを二つ連結して16bitの信号に代入
data_y[15:0] = {data_x_upper[7:0], data_x_lower[7:0]}; 

符号拡張の記述例

// 上位8bitを符号拡張して16bitの信号に代入
data_y[15:0] = {{8{data_x[7]}, data_x[7:0]}; 

HiFIve1のシリアルコンソールに接続できない

f:id:k0b0:20180204144849p:plain

シリアルコンソールに接続できない

 HiFive1にCoremarkをアップロードして性能計測をしようと思ったのだが、シリアルコンソールにうまく接続できず結果を確認することができない。

 下記のコンパイルおよびアップロードまではうまくいくのだが。。。

$ make software PROGRAM=coremark
$ make upload PROGRAM=coremark

 下記のscreenコマンドがうまく動作せずシリアルコンソールに接続できない。。。

$ screen /dev/ttyUSB1 115200

 macOS、Ubuntuでテストをしているのだが、USBデバイスはちゃんと接続できてるし、認識もできている。
 調べてみると、SiFive Forumsで「ボードが破損していた。。。」と言う声も結構あった(^^;;

 ボードが破損していないことを祈りつつ、引き続き調査してみますかね。

参考サイト

forums.sifive.com

gitのエラー:fatal: remote origin already exists.

fatal: remote origin already exists.

 "git remote add origin 〜"を実行したら"fatal: remote origin already exists."と怒られた。
 とりあえず、「既にoriginは存在しますよ。」と言われたので、以下のようにoriginを消して再度"git remote add origin 〜"を実行したらうまくいった。

$ git remote rm origin
$ git remote add origin git@github.com:ユーザ名/リポジトリ名.git
$ git push -u origin master

macOSのFinderからRaspberry Pi にアクセスしてファイルを共有する

macOSからRaspberryPiのディレクトリにアクセスする

 macOSのFinderからRaspberryPiにアクセスしファイルを共有できるようにする。

1, avahi-deamonのインストール

 以下のコマンドにてRaspberryPiにavahi-deamonをインストールする。

$ sudo apt-get install avahi-daemon
$ sudo update-rc.d avahi-daemon defaults

2, afpd.serviceの設定

 ファイル”/etc/avahi/services/afpd.service”を作成する。

sudo vim /etc/avahi/services/afpd.service

 ”/etc/avahi/services/afpd.service”に以下の内容を追記する。

afpd.serviceに追記する内容

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
   <name replace-wildcards="yes">%h</name>
   <service>
      <type>_afpovertcp._tcp</type>
      <port>548</port>
   </service>
</service-group>

3, avahi-deamonを再起動

sudo /etc/init.d/avahi-daemon restart

これで、一通りの設定は完了。

macOSからRaspberryPiにアクセスしてみる

アクセス手順

  • Finderを開く
  • メニュバーの「移動」-> 「サーバへ接続」を選択
  • 「afp://ipアドレス」または「afp://ホスト名」を入力

上記の手順を実行して、FinderにRaspberryPiが表示されたらOK。