はじめに Helioボードには1GBのDDR3-SDRAMが実装されています。 デフォルトの設定ではLinuxが1GBすべてを使用します。 ただ、そうすると、FPGAからSDRAMを読み書きしようとした場合、Linuxが同じメモリー領域にアクセスされると困ります。 そこで、今回はLinuxが使用するSDRAMのメモリー領域を実装メモリーの半分に制限して、OSから邪魔されずFPGAが独占的に使用できるSDRAM領域を確保してみます。動作確認として、FPGA側とLinuxのユーザーランドでSDRAMを読み書きしてみます。 flickr: Sharing Flavored, Colored Ice 変更手順 U-Bootのパラメータを変更することでLinuxが認識するメモリーサイズを変更できます。 具体的には、mmcbootで定義されているbootargsに「mem=<サイズ>M」を追加します。
はじめに これまでの実験で、Linuxのユーザーランドからオンチップメモリーに読み書きできるようになりました。 今回は、ユーザーランドからではなく、FPGA内部の信号元から書き込む実験をします。 書き込む内容は、単純なカウンタ回路で生成したストリーム信号です。 IPコアとして提供されている、DMAコントローラとAvalon FIFOメモリーを用います。 これらのIPコアと自作のストリーム信号をQsysで合成し、ユーザーランドからDMAコントローラを制御することでDMA転送を実現します。 この記事を読むことで、Direct Memory Access(パソコン用語としても聞いたことがある方も多いと思います)についての理解が深まり、DMAの本質に近づけます。 flickr: perlin flow particle ribbon 1901 全体像 シグナルジェネレータで生成された信号データをオ
はじめに Quartus II付属のシステムコンソールを用いると、FPGA側のLEDなどのペリフェラルに対して簡単に状態取得や制御ができます。(今日知りました^^;) システムコンソールは、SoCボードのLinuxを停止した状態でも使えるため、回路単体でのデバッグに重宝しそうです。今回は、システムコンソールからLチカ、プッシュボタンの状態取得、オンチップメモリーの読み書きを試してみます。 flickr: Arashiyama Bamboo Forest in Sagano, Kyoto, Japan システムコンソールとは Quartus IIに付属するコマンドラインツールです。Tcl言語のコマンドを専用コンソールに入力することで、FPGAボードと対話的にやりとりできます。これにより、デバッグの効率を上げることができます。裏ではJTAGを通して通信が行われます。 準備 HelioボードのJ
はじめに Helioボードのリファレンスデザインには、FPGA側にオンチップメモリーがすでに実装されています。 今回は、ユーザーランドからこのオンチップメモリーに読み書きしてみます。 ただし、Cでコーディングはせず、コマンドから任意のアドレスに対して読み書きできるユーティリティを導入して試みます。 このユーティリティを応用すれば、例えば、FPGAでDMAコントローラを用いたデバイスを作成した場合に、まだデバイスドライバが用意していない状況でも、DMAコントローラのレジスタを直接操作して動作確認する、といったことが可能になります。 flickr: Buildings メモリー読み書きユーティリティ こちらで紹介されている、コマンドから任意のアドレスに対して読み書きできるユーティリティーを導入します。 このユーティリティでやっていることは、以前System IDを読み取るためにCで書いたコード
はじめに 今回は、Altera Cyclone V SoCの型番からスペックを調べる方法を紹介します。また、型番を知っていると役に立つ例として、Cyclone V SoCに実装されているオンチップメモリーの容量を型番から調べてみます。 flickr: Daily Disney (Explored) 調べ方 所有してるHelioボードのリビジョンを確認します。 確認するとリビジョンが1.4でした。 こちらにあるSchematicを確認すると、2ページ目の「FPGA Package Top View」に「Cyclone V - 5CSXFC5C6U23C7」との記述が見つかります。これが型番です。 Cyclone V Device Overviewに型番の各桁の意味とスペックが記載されています。 はじめの「5C」の次の「SX」がデバイスファミリーを表しています。そこで、「Cyclone V S
はじめに Helioボードのリファレンスデザインには、FPGA側のプッシュボタンが押されたらコンソールにそれを通知するサンプルが同梱されています。しかし、実は、Helioボードに実装されている3つのプッシュボタンのうち1つが、このサンプルでは反応してくれません。今回は、その原因を究明し、解決してみます。 今回のハイライト: Quartus IIのRTL ViewerでFPAG内部の結線状況を確認している様子です。これから赤線の一部のバス幅を2ビットから3ビットに拡張します。 プッシュボタンの割り込み検出サンプル HelioボードのLinuxを起動して、rootユーザーでログインすると、ホームディレクトリにREADMEというファイルがあります。 このREADMEにリファレンスデザインで提供されている各種サンプルの動かし方が説明されています。 root@socfpga:~# cat READM
はじめに 前回、Helioのリファレンスデザインに実装されているSystem IDをユーザーランドから取得する実験をしました。今回は一歩進んで、FPGAに自作モジュールを追加してみます。 と言っても、System IDと同じで定数を返すだけのものです。 ユーザーランドから自作モジュールにアクセスできるようにすることに注力します。 今回のハイライト: 以下の中央にある「deadbeef_0」を自作します。 自作モジュールのコード ここは今回は注力すべき所ではないため手抜きです。 System IDコアをsynthesisしたら生成されるコードがsynthesis/submodules/soc_system_sysid_qsys.vにあります。 このコードを参考に、定数を出力するモジュールを実装します。 出力する値は、ぱっと見で正しいことがわかるように、16進数でdeadbeefとします。 S
はじめに Helioボードは、FPGAとARMプロセッサが同居しており、Linuxをブートできます。 今回はHelioボードでLinuxをブートできるようにします。 HelioボードにLAN接続することで、同梱のWebサーバやsshdにPCからアクセスできるようになります。 準備 以下を事前に用意しておきます。 SDカードリーダー LANケーブル このSDカードリーダーは、SDカードアダプタを使わなくてもMicro SDカードを直接読み書きできるので便利です。 LANケーブルは、必須ではありませんが、HelioのLinuxイメージにデフォルトでセットアップされているWebサーバとsshdサーバ試したいので用意することにしました。 Win32DiskImagerのインストール MicroSDブートディスクを書き込むために必要になるのでインストールしておきます。 こちらからダウンロードしました
Controlling the LEDs Now that the pins have been assigned, you can start putting together the different modules to make the circuit work. The first module we will make is the one driving the LEDs. We will call it “blinker.v”. module blinker ( input clk, input [3:0] delay, output reg [3:0] led, input reset, input pause ); reg [23:0] count = 24'b0; reg [2:0] pos = 3'b000; reg running = 1'b1; always
はじめに FPGAに入門するため、Macnica Helio SoC評価ボードを購入しました。 今回はHelioボード内蔵のプッシュボタンとLEDを用いてブッシュボタンのON/OFFに応じてLEDを点灯してみます。 完成すると以下のような動作になります。 HelioボードでFPGA入門する人向けのまとまった良い情報が無かったので、詳しく記録に残しました。これからHelioボードでFPGAに入門する方などの参考になれば幸いです。 購入したHelioボード Macnicaオンラインストアで購入しました。 税込みで28,000円ほどでした。 ACアダプターとUSBケーブル、8GB Micro SDカード、SDカードアダプタが付属しています。 準備 ボードのリビジョン確認 まず、ボードのリビジョンを確認します。Helioボードはこれまでに何回かリビジョン更新されているようです。ボードにシールが貼っ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く