VHDLの型変換

By 酔漢 - Last updated: 火曜日, 9月 20, 2016

週末はVHDLの型変換について調べていました。

だいぶわかってきたのですが、もう一押し、と思っていたところすばらしい解説を見つけました。VHDL Type Conversionにはビット・ベクトルと数値の間の変換をまとめています。

ビット・ベクトル間だと型のキャスティングだけでよいのですが、ビット・ベクトルと数値の間では変換関数を使います。そして変換関数は”to_”で始まる名前です。

わかりやすいですね。

Filed in 日記

genericでstd_logic_vectorの幅をコントロールする

By 酔漢 - Last updated: 月曜日, 9月 19, 2016

VHDLを使って気になっていたことがあるのでちょっと実験してみました。

気になっていた事というのは、「コンポーネントとして設計した部品のデータ幅を使用時に変えることが出来るか」という点です。たとえば、DDSをコンポーネントとしたときに、利用する度に12bit, 16bitのようにかえられるでしょうか。

Read the rest of this entry »

Filed in 日記

std_logic_vector型と整数型の変換

By 酔漢 - Last updated: 日曜日, 9月 18, 2016

VHDLのstd_logic_vector型と整数型の間の変換について調べました。調べ終わったあとは何もかもすっきりして澄み切った視界を手に入れたような気分です。

結論から言えば、VHDL言語はstd_logic_vector型と整数型の間の自動変換をしません。

Read the rest of this entry »

Filed in VHDL

VHDLでの計算

By 酔漢 - Last updated: 土曜日, 9月 17, 2016

試しにCORDICの実装を試みています。

CORDICはサブモジュールの繰り返しからなるため、サブモジュールを手始めに実装しています。これが難しい。ネットで調べてみると、stl_logic_arithではなく、numeric_stdを使おうという意見を見ます。一方、VHDL2002の標準はインデックスも構成も雑で、パッケージ毎のきっちりした定義を参照できるようにはなっていません。

これで世の中のSoCが記述されているのかと考えると肝が冷えます。

ともかく、固定小数点パッケージもちゃんと用意されていますので、必要とあればこれらを使ってもいいでしょう。CORDICに固定小数点は必要ありませんが、丸めと飽和を勝手にやってくれるのは便利です。

Filed in 日記

三角関数の実装について

By 酔漢 - Last updated: 木曜日, 9月 15, 2016

VHDLの学習環境がととなったので、再び少しずつ前に進めることにしました。

とりあえずDDSを作りたいのですが、そうなると三角関数の実装が必要です。CORDICなり、DSPでよく使った三角関数の公式とテーブル・ルックアップを使った方法なりを実装することになります。

最初は手慣れたテーブル・ルックアップと思っていたのですが、乗算器を結構消費するんですよね。プロセッサとしてのDSPの場合、乗算器ははじめからあるもので有り、プログラムがシーケンシャルである以上、いくらでも使い回しができます。FPGAの場合、乗算器は限りある資源であり、並列に使用されるため明示的に時分割しない限りばんばん減っていきます。

とりあえずべた書きのパイプラインCODICかなぁと考えています。

Filed in 日記

MAX10のDSP乗算器

By 酔漢 - Last updated: 火曜日, 9月 13, 2016

MAX10にはDSPブロックと称して18×18のハードウェア乗算器が搭載されています。

調べてみたところ、この乗算器は2分割して二つの9×9ハードウェア乗算器としても使えます。BeMicro MAX10に搭載されているMAX 10M08はこのDSPブロックを24個持っています。9×9として使うなら48個です。

複素乗算1回あたり、乗算器は4つ必要になります。複素DDSで三角関数の公式から値を計算する場合、8つ必要になります。なかなか厳しい話ですが、9×9乗算器なら48個中8個なので、まぁまぁかなとも感じます。

Filed in 日記

コマンドラインでのVHDLシミュレーション

By 酔漢 - Last updated: 日曜日, 9月 11, 2016

Altera Quartus Prime 16.0同梱のModelsimを使って、Ubuntu 16.04の上でVHDLによる回路のコンパイルとシミュレーションを行いました。

Quartus Primeによる回路のコンパイルとシミュレーションは春頃にすでに行っています。しかし、あれはすべてGUIアプリケーションによるものです。実際に何らかのアプリケーションをVHDLで開発するとなると、執拗にテストを走らせなければなりません。その場合、テストは自動化すべきで、結果的にコマンドラインからのコンパイルとシミュレーションが必要になります。

先週ちょこちょこと再構築したVHDL処理環境を使って、週末にこの目標に挑戦しました。なお、実行するコマンドライン等はネットで調べた知識とマニュアルで調べた知識のごった煮になっています。あまり参考にならないでしょう。

Read the rest of this entry »

Filed in VHDL

Eclipse Verilog Editor

By 酔漢 - Last updated: 土曜日, 9月 10, 2016

UbuntuでVHDL編集を楽にするために、Eclipse Verilog Editorを導入してみました。

EclipseのNew Software Install…機能にも対応しているとのことですが、Ubuntu 16.04 の Eclipse 3.8で動作しなかったため、プラグインをダウンロードして /use/lib/eclipse/pluginsにコピーしました。

VHDLファイルを新しく作るウィザードに癖がありますが、VHDLの予約語入力補完機能とシンタックス・カラーリングがあるため大助かりです。Sigasi Studio Starterのほうが良い、という声も聞こえるのですが、SIGASIはEclipse 3シリーズにいんすとーるできませんのであきらめました。

次はModelSimのvsimをコマンドラインから動かします。

Filed in VHDL, 日記

Extreme USB 64GBにQuartusを入れた

By 酔漢 - Last updated: 金曜日, 9月 9, 2016

高速なUSBメモリ、Sandisk Extreme USB 64GBAltera Quartus Primeをインストールしました。

Extreme USBは2012年登場ですが、おそらく同価格帯では今でも最速です。発熱が少なく内蔵HDDより高速なため、16GB品を2012年12月からポータブルubuntu用に使っています。最近64GB品に切り替えました。これも2012年からの製品ですが、当初より16GBより2ランク速いと評判だった製品です。

さて、このUSBメモリ上にUbuntu 16.04を入れています。このシステム上にはPythonの環境OpenCVの環境を構築し、出先でも気が向いたときにつつけるようにしています。これに続いてAltera Quartus Primeをインストールしました。

Empty Machine-2016-09-09-07-50-36

ダウンロードに躓いたことは以前書きましたが、その他にもダウンロードサイズ13GB、展開サイズ13GB、インストール後のサイズ20GB越えというQuartus Prime 16.0のインストールが素直に64GBメモリ上で済むはずもありません。結論から言えばVMwareの仮想ディスクを増設してmountしてしのぎました。

VMWare万歳!Unix万歳!

これでもうちょっとですね。あとはVHDLの良いエディタを探しています。

Filed in Quartus, 日記

Alt mode

By 酔漢 - Last updated: 月曜日, 9月 5, 2016

​USB Type-C のホストはalt modeを複数持つことができますが、機器の側はalt modeを複数持つことができるのでしょうか?

​ 現在、alt modeとしてはDisplay Port、MHL、HDMIが規格化されています。それぞれ、変換ケーブル内蔵のチップとホストがネゴシエーションを行ってalt modeの有無を調べるとのこと。

​常識的にはホスト側が持っているモードの一覧を提供し、デバイス側が内蔵機能の一覧と照らし合わせ、そのうちひとつを選ぶことになるはずです。デバイス側が決め打ちでひとつ宣言する仕様だと、ホストがそのモードを持っていないときにユーザーが混乱しそうです。

​表示装置をUSB接続するときに悩みそう。杞憂だとは思いますが。

Filed in 日記