Posts Tagged with "FPGA"

既に発行済みのブログであっても適宜修正・追加することがあります。
We may make changes and additions to blogs already published.

Lチカの実装 (2)

posted by sakurai on May 14, 2018 #41

RTL設計仕様

複雑な演算や制御を含む振る舞いは高位合成したくなりますが、このようなレベルであればRTLで十分でしょう。従ってVerilogで言うモジュールの要求を以下のようにブレークダウンします。これはLチカは要求であって実装可能な手段ではないため、実装可能な手段に分割することを意味します。

  1. 高速なクロックを分周し、目で見えるレベルの低速クロックとすること
  2. 低速クロックをカウントし、流れるパターンをひとつずつ表示すること
  3. 流れるパターンは14通りであるため、13を数えたら次は0とすること
  4. カウント値をデコードし、1つのLEDが点灯しているパターンとすること

1.の要求はNbitのカウンタで実装することができます。何ビットにするかは後程設計計算を行います。 2と3の要求は14進カウンタで実装することができます。一つの要求で一つのモジュールとは限りません。 4の要求はLEDデコーダとして実装することができます。以上でモジュール分割ができたことになります。

モジュール

名称: blink

インタフェース

次の表に、モジュール全体としてのインタフェース(入力及び出力)を示します。基本的にクロックとリセットが必要であり、後はどのLEDを点灯させるかを示す信号があるのみです。

表41.1
インタフェース信号名 インタフェース信号内容
CLK 入力、100MHz
XRST 入力、リセット信号、負論理を想定
LED[7:0] 出力、8bit、正論理、LEDへの出力信号

サブモジュール

(1) Nbitカウンタ
100MHzで点滅すると人間の目に見えないため、見える範囲にまでカウントします。最後の桁上げの際に次段のカウンタを1だけ増加させます。これにより元のクロックが$2^N$分周されることになります。 0からアップカウントし、Nbitの全てのビットが1になった場合に次段のカウンタイネーブルをtrueとします。

前記のように人間の目で見える範囲内に入れるためには、例えば周期を0.5secから1.0sec未満の範囲として以下の不等式を解くことになります。 \[ 0.5\le \frac{2^N}{1e8} \lt 1.0 \] この不等式が成立する整数解Nはただ一つであることが保証され、これを解くとN=25[bit]となります。これは非機能要求である性能要求による設計計算を実施し、仕様が決定したことになります。

(2)14進カウンタ
最右のLEDが点灯しているパターンから左にシフトし、さらに右に戻ってくるまでのパターンが以下の表に示すように14パターンあるため、14進カウンタを設けます。14進カウンタのイネーブルは前記Nbitカウンタからのカウンタイネーブルを接続します。

表41.2
カウント値 パターン
0 8'b00000001
1 8'b00000010
2 8'b00000100
3 8'b00001000
4 8'b00010000
5 8'b00100000
6 8'b01000000
7 8'b10000000
8 8'b01000000
9 8'b00100000
10 8'b00010000
11 8'b00001000
12 8'b00000100
13 8'b00000010

(3)デコーダ
14進カウンタの出力はバイナリ出力のため、表41.2のビットパターンとなるようにデコーダを設けます。

今回の設計ではアップカウンタのみで構成しましたが、デコーダを倹約してアップダウンカウンタで構成することも可能です。結局のところ、設計とは新しいことを生み出すというよりも、実装できるレベルの小規模のサイズに分割し、そのトレードオフを最適化することにほかなりません。


左矢前のブログ 次のブログ右矢

Lチカの実装

posted by sakurai on May 7, 2018 #40

要求

「Lチカを実現すること」

いわゆるLチカとは評価ボード上のLEDが点滅することで、回路が思い通りに動作していることを示す振る舞いの一例です。LEDの点滅は機能要求ですが、暗黙の非機能要求があります。例えば点滅の周期です。評価ボードは内部クロックは100MHzという高速のクロックで動作しますから、単純にON/OFFさせると人間の目には点滅に見えません。従って点滅と書かれている段階で点滅に見えることが暗黙の非機能要求であり、例えば、点灯を0.5sec、消灯を0.5secのように連続させる必要があります。

PLに接続されているLEDは8bitあるので、右から左に1bitずつずらしながら点灯し、最左端に来たら左から右へ1bitずつ点灯することを要件とします。下図において、赤は点灯、灰色は消灯を意味するものとします。

Lチカ振る舞い説明図
図40.1 Lチカ振る舞い説明図

左矢前のブログ 次のブログ右矢

Zynq UltraScale+ MPSoC

posted by sakurai on April 28, 2018 #39

FPGAボード

プロセッサを含んだFPGAボードを入手しましたので、お約束のLED点滅を実験してみたいと思います。 まず、FPGAは、XilinxのZynq UltraScale+ MPSoCという部品で、ARM Cortex A53のクアッドコアとARM Cortex R5のデュアルコアを内蔵しています。

ボードの詳細は以下にあります。 http://microzed.org/product/ultrazed-eg-starter-kit

ベースボードとメザニンボードから構成されており、ベースボードの資料は、 http://picozed.org/product/ultrazed-eg-io-carrier-cardに、 メザニンボードの資料は http://microzed.org/product/ultrazed-EGにあります。

メザニンボード上にFPGA、SDRAM、Flash等が搭載されており、ベースボード上には各種高速インタフェースが搭載されています。

図FPGAボード
図39.1 FPGAボード

開発環境

最近のFPGAの開発環境の進歩はいちぢるしく、従来は高価なEDAツールが無償で使えるようになりました。XilinXが無償で提供しているVivado HLx WebPackが、上記FPGAの開発ツールです。このツールには論理合成ツール、配置配線ツール、論理シミュレータ等が含まれます。特に、最近は高位合成ツールまで無償で使用できるので、隔世の感があります。高位合成までいかなくても強力なIPインテグレータが搭載されており、従来はRTL設計するしかなかった各種AXIインタフェースに関して、単にブロックをドロップし、auto connectをクリックするだけで自動結線する、強力な機能を持ちます。

Vivadoの入手はXilinxにアカウントを作成する必要がありますが、無償ですので以下からwebpackを入手してください。 https://japan.xilinx.com/products/design-tools/vivado/vivado-webpack.html

IP Integrator

IPインテグレータでブロック設計をした結果を以下の図に示します。FPGA全体はPS(Processor System)部とPL(Plogrammable Logic)部から構成されていますが、ZynqはFPGA全体ではなく、PS部のみです。blinkはRTLで設計するブロックで、PL内に配置します。

ブロック図
図39.2 ブロック図

Zynqをダブルクリックすると以下の図のようにブロック図が現れます。APUはApplication Processing Unit、RPUはRealtime Processing Unitの略で、それぞれCA53、CR5及びそのキャッシュシステムを意味します。今回はハードのみで動作する回路を設計するため、プロセッサは全く使用しません。

Zynq内部ブロック図
図39.3 Zynq内部ブロック図

左矢前のブログ 次のブログ右矢


ページ: