« 2018年11月 | トップページ

2018.12.11

XILINX Digilentのケーブル

| | コメント (0)

2018.12.09

自宅近くでマンションを探してみたけれど

本郷事務所の撤収に伴い、今後作業する部屋が必要と思い、自宅の近くでワンルームマンションを探していました。

机が最低で2個は置けなければならないし、事務作業とはんだ付けの机は分けたい、オシロやファンクションジェネレータなどの機材も置きたいので8畳は必要かなと思っていました。

オンラインの賃貸情報で数十件は見て、現地で内見も6件くらいして、だいたいこの地域の感覚がつかめてきたところで、こんな感じの超優良物件を見つけたのです。

築浅で、ほぼ新築です。

Bukken

さっそく内見をさせてもらったところ、築浅だけあってピカピカで、広さも問題なく(といってもキッチンも含めて10畳なので実質的には8畳程度)。

この地域では破格の賃料で、礼金も仲介手数料も不要、保証会社もいらないから保証金もない。すぐに契約して来週から入居可能という感じでした。

こんな超優良物件があってよいのかと興奮して帰ったのですが、フライングスター風水で調べてみると大変悪い物件だったのです。

8e

わかる人にはわかるチャートです。

風水はちょっとかじった程度ですが、悪い物件であることはすぐにわかります。

簡単に言ってしまえば、8、9、1という数字が良い数字で、2や5や7が悪い数字です。

88の部分が風呂トイレになっていてラッキーゾーンが全く活かせません。右下の97が洗濯機置き場になっていて使えないので、人の運勢も弱くなる。

オフィスの机はどこに置けばよいでしょうか?キッチンの隣に置いたら不幸になり、ベランダの横に置いたら病気になるでしょう。左下の79のところに置くと、人との争いごとになり、唯一無害な34の部分はベランダの出口を塞ぐので使えなさそう。

この物件に入居しても、何も良いことがなさそうです。

sun

非科学的と思う人もいるかもしれませんが、風水というのは本当に馬鹿にできないものです。

最近やっと気が付いたのですが、特電の本郷のオフィスは真ん中が95になっていて、今年の年飛星が9なので1年間の入囚が起きていたのです。

左側にある数字9と年飛星が被っていることを入囚というのですが、入囚すると運勢がロックされて、良いことがなくなります。

つまり、本郷のこのオフィスは2018年の2月~2019年の2月までの1年間、人に関する運が悪くなります。しかも11月の月飛星が5だから、2018年12月は人もお金も入囚していた最悪の月だったのです。

20年の入囚だけでなく、1年や1か月の入囚がこんなにも悪い力を出すとは思ってもいませんでした。

11月の終わりに気が付いて、入囚を解除する対策を施したらいきなり売上が改善したので、本当に不思議。でも改善にも限度があるので、この本郷オフィスは早く撤収することが吉です。

もっと早くに気が付いていればよかった!

| | コメント (0)

2018.12.06

Intel(ALTERA)のMAX10キットを試す

MITOUJTAGでMAX10がどう見えるかを試してみたくてIntelのMAX10評価ボード「10M50 Evaluation Kit」を購入しました。

Max10_kit_top

このボードは、MAX10の最大クラスである10M50DAF484C6GESを中心に、1G ビット(64Mx16)LPDDR2 SDRAMや、HDMI出力、CSI入出力が搭載されています。

Max10_kit_bot

HDMI出力はAnalogDevicesのADV7513を使って作られていて、I/O直結にはなっていないようです。

Max10_kit_block

MAX10のほか、MAX2も乗っていて、MAX2とCypressのEZ-USB FX2によりオンボードのUSB Blaster2を構成しています。

このボードをUSB給電で動かす際のポイントを書きます。

  • 付属する赤と黒のコネクタが付いた変なUSBケーブルは、黒いコネクタを使う
  • USBから給電する際には、J11を2-3のほうに差し替える

さて、電源を入れると動き出してLEDが点滅するわけですが、MITOUJTAGから認識しようとしても残念ながらUSB Blaster2を認識しませんでした。

Usbblaster2

どうやらUSB BlasterとUSB Blaster2は全く別物のようです。

そこで特電のUSB-JTAGケーブルをつなごうとしたのですが、それでもデバイスを認識しません。

MAX10キットの回路図を見たところ、2番ピンがUSB_DISABLEとなっていました。外部からUSB Blasterをつなぐ場合はGNDとショートされるはずです。ここをLレベルにするとオンボードのUSB Blaster2が無効になります。

Jtag_connector

というわけで、Pocket JTAG Cableの青い線をつないで、MITOUJTAGでLに設定しました。

Max10_usbjtag_disable

これでMAX10が認識されるかと思ったら、今度は不明なデバイスが2個見つかりました。

Max10kit_unknown

1つ目のデバイスのIDCODEは0620A1BB、2つ目のデバイスのIDCODEは020D10DDでした。この020D10DDというデバイスはUSB Blaster2を構成しているMAX2の中に存在する仮想的なデバイスだそうです。

読み解いた感じでは下の図のようになっています。

Vtap

最初のデバイスのIDCODE「0620A1BB」というのは正しくはMAX10のIDCODEで031050DDのはずです。

何かがバグって1bit左にシフトしているようです。VTAPのIDCODEレジスタが33bitあるのかな??

なお、Qualtusのプログラマでは次のように見えます。

Qpro1

sun

SW2.4をONにすると、MITOUJTAGでも普通のチェーン構成として見えるようになります。

Sw24

これでようやくMITOUJTAGで普通にMAX10がスキャンできるようになりました。

Max10_bscan

| | コメント (0)

2018.12.05

ZYNQ LinuxからのUSBメモリ書き込み速度

ZynqとLinuxで計測システムを作ったときに、どのくらいの速度で記録ができるのかという疑問を晴らすために、Zynq LinuxからUSBメモリに書き込む速度を測定してみました。

使用したZYNQのシステムは、Cosmo-Z Mini

Zynq_usbmem

この中にはXC7Z020が入っていて、Ubuntu Linux 14.04が起動しています。

いろいろなメモリカードやUSBメモリを用意しました。

  • TOSHIBAの32GB USBメモリ
  • SDカードリーダとTOSHIBAの16GB MicroSD (秋月)
  • Buffaloの8GB USBメモリRUF3-K8GA-BK

Zynq_usbmem1

これらのメモリにデータを書き込むわけですが、一番シンプルなのはddコマンドを使って乱数を書き込む方法です。

dd if=/dev/urandom of=/usbmem/test.bin bs=1048576 count=12000

結果の表示は 

・・・
12577055296 バイト (13 GB) コピーされました、 947.968 秒、 13.3 MB/秒

これではあまりにもシンプルすぎてつまらないので、自分でプログラムを作って書き込むことにしました。

#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <iostream>
#include <fstream>
#include <cstdlib>

const long long blocksize = 1000000;

void showspeed(struct timeval* start, int block) {
	struct timeval current;
	gettimeofday(&current, NULL);
	printf("%lld\t", (long long)blocksize * block / 1000000);
//	printf("Total %lld[MB],", (long long)blocksize * block / 1000000);
	printf("%ld\t", current.tv_sec - start->tv_sec);
//	printf("%ld[sec]", current.tv_sec - start->tv_sec);
	if(current.tv_sec != start->tv_sec) {
		double elapsed = (current.tv_sec - start->tv_sec) * 1000000 + (current.tv_usec - start->tv_usec);
		printf("%3.2f\n", (double)(blocksize * block) / elapsed);
//		printf(", Write throughput=%3.2fMB/s\n", (double)(blocksize * block) / elapsed);
	}
	else {
		printf("\n");
	}
}

int main(int argc, char *argv[]) {
	struct timeval start;

	if(argc < 3) {
		printf("usage: memfill size(GB) filename\n");
		return 1;
	}
	double size = atof(argv[1]);
	char *filename = argv[2];

	unsigned char *tmp = new unsigned char [blocksize];
	for(int j=0;j<blocksize;j++) {
		tmp[j] = rand();
	}

    std::ofstream ofs(filename,std::ios::out | std::ios::trunc | std::ios::binary);
    if (!ofs) {
        std::cerr << "error" << std::endl;
        std::exit(EXIT_FAILURE);
    }

	printf("[MB]\t[sec]\t[MB/sec]\n");

	gettimeofday(&start, NULL);
	int block;
	for(block = 0; block < size * 1000 ; block++) {
		if((block % 100) == 0) {
			showspeed(&start,block);
		}
		ofs.write((char *)tmp,blocksize);
	}
	showspeed(&start,block);

	ofs.close();
	
	delete[] tmp;
}
 

ddと比べても速度に差はなかったので、このプログラムで計測することにしました。

このプログラムを実行すると次のような表示が出ます。

Zynq_usbmem4

100MB書き込んだときは平均23.32MB/sで、500MBのときは平均14.94MB/sで、というふうに読みます。最初はおそらくキャッシュが効いていて速いのですが、だんだん遅くなってくるのがわかります。

書き込み速度のグラフを示します。

Zynq_usbmem2

サイズが大きくなるとだんだん遅くなるのがわかりますね。このまま12GBまで続けてもそれほど変わらないので、2GBで打ち切っています。

下のほうを拡大してみます。

Zynq_usbmem3

one 意外なことに、一番速かったのは、秋月で売っている東芝のMicroSDカードをext4でフォーマットしてUSBカードリーダに挿したものでした。14GB/s出ています。このMicroSDカードをFAT32にするとわずかに遅くなります。

two 次点はBuffaloのUSBメモリ(RUF3-K8GA-BK)をext4でフォーマットしたもの(水色)なのですが、RUF3-K8GA-BKはFAT32にすると激遅(黄色の線)になります。

RUF3-K8GA-BKはUSB3.0のインタフェースを積んでいるくせに、Windowsパソコンから書き込んでも7MB/secしか出ません。Amazonのレビューでも遅さが指摘されています。

three Cosmo-Z Miniは4GBのeMMCを積んでいるのですが、意外と遅いようです。10MB/sec前後です。

four しかし、一番遅いのはWindowsで使いまわしている東芝のUSBメモリで、すでにいろいろなファイルが入っているものです。

結論を言うと、

  • USBメモリの種類によってかなりばらつきがある。東芝のMicro USB速い!
  • ext4でまっさらな状態にフォーマットして使うと速くなる
  • すでに使用中のUSBメモリカードに追記すると遅くなる

という感じでした。

メモリカードと機材を選べば10MB/s以上で連続してデータを記録できそうですね。

| | コメント (1)

« 2018年11月 | トップページ