前の5件 | -

VHDLで飽和演算 [IPコア]

前にVHDLのリダクション演算を書いたので、それを使った飽和演算処理を紹介。
HDLで飽和演算をしたい場面はちょくちょくでてくるものの、完全にパラメタラブルに書くのは以外と面倒くさい。

ざっくりと処理条件を書くとこうなる。
入力データをd、出力データをyとし、それぞれのビット幅をn,m、n>mとする。

(1) 正の最大値への飽和
d[n-1](MSB:符号ビット)が'0'、かつd[n-2:m-1]の全てのビットが'0'でない場合。
y[m-1] <= '0', y[m-2:0] <= 全て'1'

(2) 負の最大値への飽和
d[n-1]が'1'、かつd[n-2:m-1]の全てのビットが1でない場合。
y[m-1] <= '1', y[m-2:0] <= 全て'0'

(3) 飽和なし
y <= d[m-1:0]

VHDLでは比較演算子でオーバーロードされるので、任意長ベクタ型がゼロかどうかの比較は簡単にできるものの、即値で任意長のビット集合を生成するのにかなり鬱陶しいことをやらないといけない。
故に比較するビット幅がパラメタラブルなものは鬼門なのだけど、ここでリダクション演算を使うとすっきり記述できる。
例えば

or_reduce(A) = '0'

とするとAの全てのビットが'0'かどうかを判別できる。同様に、

and_reduce(B) = '1'

とするとBの全てのビットが'1'かどうかを判別できる。
そうすると、まとめてこんな感じで書くことができる。

y <=
  (y'left=>'0',others=>'1') when(d(d'left) = '0' and or_reduce(d(d'left-1 downto y'left)) /= '0') else
  (y'left=>'1',others=>'0') when(d(d'left) = '1' and and_reduce(d(d'left-1 downto y'left)) /= '1') else
  d(y'range);

結構長ったらしい記述だけども、注目すべきはマジックナンバーが出てこない点。つまり、これはdとyのビット長を自動的に参照して飽和演算回路を生成してくれる。
こんな感じてVHDLのアトリビュート演算子はめっちゃ便利だから皆使おう。


ちなみに飽和演算のキモは出力部以外のビットが符号値のみで構成されているかをどう判断するかである。
なので飽和条件は以下のようにもうすこし詰めることができる。

(1) d[n-1:m-1]の全てのビットが同値の場合は飽和無し
y <= d[m-1:0]

(2) それ以外の場合は符号ビットから最大値を生成
y[m-1] <= d[n-1], y[m-2:0] <= not d[n-1]

任意長ベクタの全ビット値が同じかどうかは、リダクションORとリダクションANDの一致をとれば判別できるので

y <=
  d(y'range) when(or_reduce(d(d'left downto y'left)) = and_reduce(d(d'left downto y'left)) else
  (y'left=>d(d'left),others=>not d(d'left)); 

と書ける。こちらの方がソースリストはすっきりする反面、比較条件のパスが複雑になるので必ずしもロジックが減るわけではない、という点には注意。


素数判定ルーチン

ちょっと組み込みマイコンで必要になったので、整数演算のみを使って高速かつコンパクトな9桁(10億)以下の素数を判定するルーチンを作った。
引数に10億以下の自然数を入れて呼ぶ。素数ならば返値として非ゼロ(≠0)を返す。ゼロ(=0)の場合は合成数。

#include <stdio.h>
#include <inttypes.h>

/* 素数かどうか判定 */
int isPrime(const uint32_t number)
{
  uint32_t x, y, n;
  int i;

  // numberが2以下と偶数の場合を除去 
  if (!(number & 1) || number < 2) return (number == 2);

  // 二進開平法でnumberの整数平方根を計算 
  x = number;
  i = 0;

  while(x >>= 1) i++;
  i += i & 1;

  x = number;
  n = y = 0;

  for(; i >= 0 ; i -= 2) {
    n <<= 1;
    y <<= 1;

    if ((y | 1) <= (x >> i)) {
      n |= 1;
      y |= 1;
      x -= y << i;
      y++;
    }
  }

  // 約数のチェック 
  for(x = 3 ; x <= n ; x += 2) {
    if ((number % x)== 0) {
      x = 0;
      break;
    }
  }

  return (x != 0);
}

一応、9桁範囲での全ての値でチェックをしてますが、使用は自己責任でお願いします。

Happy SIMを買え [雑談]

昨今の海外渡航で優先度上位なのが、現地でのデータ通信回線の確保、決済通貨の2つです。あとは交通系のカードがあれば使いたいですね。
現地決済は空港の為替カウンターかクレジットカードがあれば済むので、ここではデータ通信SIMと交通系電子マネーについて少々。

●データ通信SIM

シンガポールで入手できる渡航者向けのデータ通信SIMはいくつかありますが、2017年7月現在で我々海外MakerFaire出展組が入手すべきSIMはターミナル2の販売ブースで取り扱っているStarHubのHappy Travel SIM 10day(32SGD=約2500円)です。
為替カウンターの斜め向かいにあるので、換金のついでに入手しましょう。
DSC_1563.jpg
ぱっと見では10日有効の旅行者向けSIMですが、この10日有効というのは15Gバイトの無料データ通信枠+2Gバイトのローミングデータ通信枠で、32SGDのプリペイド分とSIMカードは180日間有効です。ただし10日間の有効期間終了時にSMS代がいくらかプリペイド分から引かれるようです。
期間内にクレジットカードでチャージ(Top-upという)をすればそこから有効期間が180日延長になる仕組みです。

窓口では開通手続きまではやってくれないので、自分で開通手続きとデータ回線設定を行う必要があります。とはいえ、SIMを交換した後、「*142#」へ電話をかければ終了します(※アクティベーション用の番号なのでへ変わる可能性がある。窓口で説明されるのでちゃんと聞いておこう)。
ただし、一部のスマホではAPNの設定が自動で行われないので、予め専用アプリ(Happy Prepaid)をインストールして出国したほうが良いでしょう。
空港のカウンター案内やアプリインストールはこちらから。

無料データ通信枠を使い切ったあとは、Top-upしたお金でデータ通信プランを選んで購入することになります。プランで細かい差異がありますが一度のアクティベーションで最大30日、通信量は100Gバイトまで繰り越すことができます。が、普通の滞在で通信残量を気にすることはあまりないと思います。

そして最も重要な点ですが、このHappy SIMは海外ローミングにも対応しているので、シンガポールの国外13の国と地域(日本、韓国、中国、台湾、香港、タイ、マレーシア、フィリピン、インドネシア、オーストラリア、ニュージーランド、イギリス、アメリカ)でもそのまま使えます。
(なお中国では海外ローミング扱いのため最初から盾抜けできる模様)

つまり現地でデータ通信量が余っても、帰国して残りを使うことができます。残念ながら最初に貰える無料の15Gバイト分はシンガポール国内通信専用なので、そこは少々もったいないのですが‥‥。
またSIM自体はTop-upから180日間有効なので、半年毎に課金しておけば帰国後もずっと維持しておくことができます。

さらに日本国内ではDoCoMo/KDDIにローミングできるうえ通信速度制限無しの30日1.2Gバイトプランが10SGD(約800円)からと、国内の格安データSIMと同等か、より安く使うことができます。格安データSIMでは使えないSMSに対応しているのも地味にポイントが高いです。
一応テザリングもできるようですが、SNSと一部のサイト以外への通信では何らかの本体認証と速度制限を行っているようで、日本国内サイトはゲートウェイがタイムアウトを返す場合があります。

とはいえ、東・東南アジアおよび太平洋地域では間違いなく最強のSIMで、毎年海外に行く予定がある人は、このSIMを買うためにシンガポールに行ってもいいと思える1枚です。
海外MakerFaire出展組必携。

●交通系電子マネー

一方で、交通系電子マネーはシンガポールではそれほど使い勝手がよくありません。
MRTやバスで使える交通系ICカードとしては、NETS FlashPayez-linkの2種類があります。が!
一応、コンビニをはじめ各店舗に設置をしてあるのですが、誰も使っていないのか店員が扱えないとか、最小決済額があって気軽に使えないとか、NETSのロゴを提示してるのにez-linkじゃないと決済できないなど、不都合だらけでした。

今のところ、MRTとバスに乗るためのカードと割り切って使うべきでしょう。ICカードを使うとMRTでは運賃が4割引されるので、MRTでの移動が多いなら便利です。
MRTの駅の窓口で、ez-linkカードを購入するのが良いと思います。12SGDで5ドル分がカード代、7ドル分が初期チャージになります。カードへのチャージはMRTの駅の券売機で行う事ができるので、残りが少なくなったらその都度チャージすればOKです。

●まとめ

・年に2回以上海外に行く人はHappy Travel SIM一択
・半年に一度、クレジットカードからTop-upすればSIMが維持できる
・ローミングは日本含め13の国と地域(本国のシンガポール含めると14)
・初回にシンガポール国内用15G分とローミング用2G分の無料データ通信枠が貰える
・データ通信1Gあたり800円ぐらい

・だが交通系電子マネーはいまいち


近々シンガポールに渡航される人がいましたら参考までに。

※ローミング使用時のデータ通信と初回期間終了時のプリペイド分の消費を追記 (7/30)

MakerFaireシンガポールに出展しました [雑談]

MakerFaireシンガポール2017に、ニコニコ技術部合同ブースのメンバーとして出展してきました。いつも取りまとめありがとうございます!>高須さん(@tks

さて、MakerFaireは全世界で開催されているメイカー(趣味やスタートアップなどで創作する人のこと)たちの祭典で、シンガポールは今年で5回目になります。
会場はジュロン地区にあるサイエンス・センターで、7/22~23の二日間にわたり開催されました。

関空からチャンギ国際空港まで片道6時間半、赤道直下の常夏の国。
DSC_1381.JPG
チャンギ国際空港に到着したら真っ先にSIMを入手します。
ここがこの旅一番のポイント。2017年7月現在であれば迷わずターミナル2でHappy Travel SIMを購入しよう!
Happy SIMについてもうちょっと詳しくオススメを書いたので渡航の参考まで。

さて、ホテルへ荷物を放り込んでいざ観光、の矢先に早速ぶっとばしたタップがこちらになります。
DSC_1391.JPG
シンガポールのコンセントはイギリスと同じBFタイプで240V/50Hz、最近のUSB充電器やPCのACアダプタなんかはワールドワイド対応なのでプラグ変換だけで問題なく使えるのですが、うっかりサージ保護付きタップが混ざってるとこうなるという例‥‥。

気を取り直して、早速シンガポールの電気街と言えるSim Lim Squareへ向かいます。
DSC_1400.JPG
DSC_1402.JPG
Sim Lim Squareは主にPC、スマホ、カメラが集中しているビルで、電子部品などは交差点を挟んで向かい側のSim Lim Towerに入っている模様。
DSC_1403.JPG
DSC_1405.JPG
規模としてはそれほど大きくなく、電子パーツショップというよりもArduinoなどのモジュールやケーブル類、LEDユニットなどを取り扱っている店舗が多くありました。

シンガポール名物、ベイサンズホテル&マーライオン
DSC_1406.JPG
DSC_1410.JPG
マーライオン公園はがっかりスポットとして有名だったので一体どれほどのものかと期待して行ったのに、ここ10年ぐらいで周囲にベイサンズやら超高層ビルが建ち並んで普通におしゃれな観光スポットになっており、がっかりスポットじゃなくてがっかりだよ!と理不尽なツッコミをして次へ。

ベイサンズホテルの裏手にあるのがガーデンズ・バイ・ザ・ベイという近未来植物園です。
DSC_1420.JPG
DSC_1424.JPG
DSC_1426.JPG
フラワーガーデンとクラウドフォレストの2つのドームがあり、巨大な温室は全館冷房で快適空間になっています。
DSC_1442.JPG
日が暮れると、植物園にある巨大なモニュメントがライトアップされます。綺麗。

いよいよMakerFaireシンガポール当日、サイエンスセンターに移動してセッティングします。
DSC_1454.JPG
DSC_1456.JPG
今年のニコニコ技術部ブースの目玉はなんといってもLED6600個を衣装に組み込んだテクノコスプレ研究会(http://technocosplay.com/)の展示です。二日間通してすごい人気でした。
MAKER FAIRE SINGAPORE 2017 (メイカーフェアシンガポール2017)17/07/22-23(テクノコスプレ研究会・もかプロデュース部)

DSC_1468.JPG
会場全体も大盛り上がり。
そんな中、会場を視察していたバラクリシュナン・シンガポール外務大臣がブースに来訪。
DFUjxKYVwAAeTuf.jpg
出展していたPERIDOT Pccoloボードを興味深そうに見ておられました。

サイセンスセンターも休日のかき入れ時とあって、常設展示でのショーが行われます。
DSC_1494.JPG
巨大なテスラコイルで放電。
DSC_1520.JPG
灯油を燃焼させて火炎旋風(ファイヤートルネード)を発生。
他にもアーティスティックな展示や画像処理を施した展示などもあり、MakerFaire本体よりもメイカーっぽいぞこれとインスピレーションを受けたり。

常設展示の中に鏡の迷路があり、せっかくなので電飾ドレスの撮影もしました。
DSC_1483_2.jpg
DSC_1484_2.jpg
大量のLEDが鏡に反射して素敵。

そんな電飾ドレスですが、見事ブルーリボン(MAKER of MERIT賞)をゲット!
DSC_1527.JPG
ニコニコ技術部はこれで3年連続のブルーリボン受賞です。

無事終了してタイ料理店で打ち上げ。
DSC_1538.JPG


今回は初めて東南アジア圏の中心都市であるシンガポールに渡航し、MakerFaire参加+観光をしてまわりましたが、シンガポールという国がほんとうにいろいろな文化、民族が集まってできている国なんだなと実感できてとても楽しかったです。
アジア圏では深圳が成長著しい都市としてフォーカスされることが多く、シンガポールは既に都市化された金融街や一大観光地区のベイエリアしかメディアでは取り上げられませんが、まだまだダイナミックに変わっている最中の国だということが実際行ってみてよく分かります。

MakerFaireシンガポールは今年で5回目で、第三回からニコニコ技術部はブース出展しています。だいぶ古参ですね。そして毎回ブルーリボンを貰っています。
来年もまた貰えるかはわかりませんが、次もまた参加したいと思います。

みんな、シンガポールもいいぞ!


メイカーズのエコシステム 新しいモノづくりがとまらない。 (NextPublishing)

メイカーズのエコシステム 新しいモノづくりがとまらない。 (NextPublishing)

  • 作者: 高須 正和
  • 出版社/メーカー: インプレスR&D(インプレス)
  • 発売日: 2016/04/22
  • メディア: 単行本

22 地球の歩き方 aruco シンガポール 2018~2019 (地球の歩き方aruco)

22 地球の歩き方 aruco シンガポール 2018~2019 (地球の歩き方aruco)

  • 作者:
  • 出版社/メーカー: ダイヤモンド・ビッグ社
  • 発売日: 2017/07/21
  • メディア: 単行本(ソフトカバー)


今年もNT京都2017に参加しました [雑談]

NT京都2017_トップ真面目過ぎ_軽量版.jpg
去る3月19日に、京都西院春日神社において春の恒例行事となりました「NT京都」が開催されました。
今年は西院フェスと同時開催ということもあり、屋台や手芸などの出店もあって境内がたいへん賑わっていたのが印象的です。
例年は屋外展示はわりとひっそりになりがちなうえ、ブース出展をしているとご飯を喰いそびれることもしばしばありまして、境内の屋台は大変たすかりました。煮込みハンバーグバーガー旨かった。
来年も西院フェスと同時開催できると良いと思いますね。

設営日や当日の様子などはTwilogでまとめられているので、どのような雰囲気だったかを垣間見られればと。
#NT京都2017 前日&前日設営まとめ
#NT京都2017 当日以降まとめ

またニコ技WikiのNT京都ページにも参加した方のブログなどがまとめられていますので是非。
NT京都2017

ちなみにうちのブースは当日いきなり急用をねじ込まれる等のアクシデントもあり、全体的に準備不足で新製品の物販でお茶を濁すというgdgdっぷりでした。そろそろちゃんとした展示を作らねば‥‥。
IMG_-s3j8qi.jpg

なお、当日販売していた品については、PERIDOT CRAFTオンラインショップでも購入できますので、買い逃したという方はこちらもどうぞ。
shop_banner.png
前の5件 | -