FPGA と LUPO その1

Similar documents
if clear = 1 then Q <= " "; elsif we = 1 then Q <= D; end rtl; regs.vhdl clk 0 1 rst clear we Write Enable we 1 we 0 if clk 1 Q if rst =

Microsoft Word - 実験4_FPGA実験2_2015

エンティティ : インタフェースを定義 entity HLFDD is port (, : in std_logic ;, : out std_logic ) ; end HLFDD ; アーキテクチャ : エンティティの実現 architecture RH1 of HLFDD is <= xor

デザインパフォーマンス向上のためのHDLコーディング法

回路 7 レジスタ ( 同期イネーブル及び非同期リセット付 ) 入力データを保持するのに用いる記憶素子 使用用途として, マイクロプロセッサ内部で演算や実行状態の保持に用いられる Fig4-2 のレジスタは, クロック信号の立ち上がり時かつ 信号が 1 のときに外部からの 1 ビットデータ R をレ

スライド 1

Microsoft PowerPoint LC_15.ppt

Microsoft PowerPoint - 集積回路工学_ ppt[読み取り専用]

VHDL

VHDL VHDL VHDL i

TECH_I Vol.25 改訂新版PCIデバイス設計入門

フリップフロップ

- VHDL 演習 ( 組み合せ論理回路 ) 回路 半加算器 (half adder,fig.-) 全加算器を構成する要素である半加算器を作成する i) リスト - のコードを理解してから, コンパイル, ダウンロードする ii) 実験基板上のスイッチ W, が, の入力,LED, が, の出力とな

スライド 1

XAPP858 - High-Performance DDR2 SDRAM Interface In Virtex-5 Devices

Unconventional HDL Programming ( version) 1

本操作マニュアルは ATLYS ボードと一緒に Digilent 社オプションモジュールである VmodCAM - Stereo Camera Module のリファレンスデザインをそのまま流用した操作手順のご紹介になります リファレンスデザインは他にもWEB に掲載ございますので 活用頂き 本操作

デジタル回路入門

Xilinx XAPP485 Spartan-3E FPGA における最大レート 666Mbps でのデシリアライズ、アプリケーション ノート

「FPGAを用いたプロセッサ検証システムの製作」

FPGA 外部のメモリをアバロン・MM・インタフェースへ接続する方法

Microsoft PowerPoint - 3.3タイミング制御.pptx

-2 外からみたプロセッサ GND VCC CLK A0 A1 A2 A3 A4 A A6 A7 A8 A9 A10 A11 A12 A13 A14 A1 A16 A17 A18 A19 D0 D1 D2 D3 D4 D D6 D7 D8 D9 D10 D11 D12 D13 D14 D1 MEMR

Virtex-6 Clocking

2ALU 以下はデータ幅 4ビットの ALU の例 加算, 減算,AND,OR の4つの演算を実行する 実際のプロセッサの ALU は, もっと多種類の演算が可能 リスト 7-2 ALU の VHDL 記述 M use IEEE.STD_LOGIC_1164.ALL; 00 : 加算 use IEE

PowerPoint Presentation

PIC

PeakVHDL Max+Plus VGA VG

Verilog HDL による回路設計記述

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

ModelSim-Altera - RTL シミュレーションの方法

SOPC Builder ペリフェラル 簡易ユーザ・ガイド - PIO (Parallel I/O)

データ収集用 NIM/CAMAC モジュールマニュアル 2006/5/23 目次 クレート コントローラ CC/ NIM ADC 1821 (Seiko EG&G)...3 ADC インターフェイス U デッドタイム

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは?

main.dvi

Microsoft Word - N-TM307取扱説明書.doc

1. 新規プロジェクト作成の準備新規プロジェクトのためのフォルダを用意して そこにプロジェクトを作成します [ 新しいフォルダー ] をクリックして希望のフォルダに新しいフォルダを作成します この例では TrST_F401N_BlinkLD2 というフォルダを作成しました TrST_F401N_Bl

A 既製のプロジェクトがある場合

VBI VBI FM FM FM FM FM DARC DARC

PLDとFPGA

VelilogHDL 回路を「言語」で記述する

Microsoft PowerPoint - FPGA

TDK Equivalent Circuit Model Library


PRONETA

Power Calculator

オンチップ・メモリ クイック・ガイド for Cyclone III

論理設計の基礎

IntuiLink Waveform Editor 簡易取扱説明書 (2010/08/27) 概要 IntuiLink Waveform Editor は Agilent 社製ファンクションジェネレーター パルス / ファンクション / 任意波形 / ノイズ発生器用から出力する 任意波形 を作成する

! STEP 2. Quartus Prime のダウンロード WEB ブラウザで以下の URL を開きます 2 ページ中段の Quartus Prime 開発ソフトウェア ライト エディ

Microsoft PowerPoint - Lec pptx

Microsoft PowerPoint - 6.memory.ppt

SimscapeプラントモデルのFPGAアクセラレーション

スクールCOBOL2002

Maser - User Operation Manual

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

1. ST-LINK Utility のダウンロード Windows7 PC にインストールする場合について説明します 1.1. STMicroelectronics のサイト STMicroelectronics のサイトを開きます ここに ST-LINK と入力して検索します ( 右側の虫眼鏡を

VLSI工学

計算機ハードウエア

Nios II - PIO を使用した I2C-Bus (2ワイヤ)マスタの実装

2015/04/01 改定 オムロン DeviceNet ユニット CJ1W-DRM21 に関するコンフィグレーション作業について 1. 概要 DeviceNet ユニット CJ1W-DRM21 を装着したオムロン製 CJ2 シリーズと WAGO-I/0-SYSTEM DeviceNet 対応バスカ

Nios II Flash Programmer ユーザ・ガイド

Quartus II はじめてガイド - Convert Programming File の使い方

User Support Tool 操作ガイド

PowerPoint プレゼンテーション

ディジタル電子回路 設計演習課題

ATLAS 2011/3/25-26

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

XCM-025Z Series User's Manual v1.1

プログラマブル論理デバイス

Microsoft PowerPoint - Lec pptx

ディジタル回路 第1回 ガイダンス、CMOSの基本回路

パルス波高値計測回路の製作

.L.....C1208.qxd

WAGO PROFIBUS バスカプラ/コントローラと、QJ71PB92Dとのコンフィグレーションマニュアル

EDITOR を起動する 1. MS-3 をパソコンと USB ケーブルで接続し MS-3 の電源を入れます MS-3 とパソコンを USB ケーブルで接続しなくても ライブセットの編集はできます ただし パッチをエディットした結果を保存することはできません 保存にはパソコンとの接続が必要です パッ


How to Install and Configure Panorama Panorama のインストールと設定 Panorama は Palo Alto Networks のサポートサイトからダウンロード可能な VMware イメージです 本書は Panorama のインストールと Panora

1. はじめに 本書は スプリット演算器 MFS2 用コンフィギュレータソフトウェア の取扱方法 操作手順 注意事項などを説明したものです Windows の操作や用語を理解している方を前提にしています Windows の操作や用語については それぞれのマニュアルを参照してください 1.1. MFS

<91E63589F161>

本書は INpMac v2.20(intime 5.2 INplc 3 Windows7/8/8.1に対応 ) の内容を元に記載しています Microsoft Windows Visual Studio は 米国 Microsoft Corporation の米国及びその他の国における登録商標です

Nios II 簡易チュートリアル

Transcription:

FPGA Lecture for LUPO and GTO Vol. 1 2010, 31 August (revised 2013, 19 November) H. Baba

Contents FPGA の概要 LUPO の基本的な使い方 New Project Read and Write 基本的な Behavioral VHDL simulation Firmware のダウンロード

FPGA とは Field Programmable Gate Array CLB CLB CLB DCM IOB 外部 IO CLB CLB CLB Clock Manager SRAM 配線スイッチ CLB CLB CLB 内部 RAM ロジックの基本単位

CLB と配線 CLB LUT 0 1 2 3 In Out 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0 1 1 1 1 1 0 0 0 0 DFF Clock

LUPO について NIM は LVTTL に一回変換している NIM->LVTTL->FPGA FPGA->LVTTL->NIM LVDS はダイレクトに接続 IOB を 2.5V にしているので 2.5V 系しか使えない 8LED 4NIM IN 16 LVDS IO 32 LVTTL IO 4NIM OUT VME Interface (CPLD) User FPGA (Spartan 3E)

New Project for LUPO Device と Design flow は以下のとおり

Design property for GTO

入出力の定義 (LUPO) LED : LED A : CAMAC/VME アドレス CLOCK : 50MHz clock INIT : CAMAC Z/C, VME Init? IP : NIM Input 0-3 IP0 : GCLK 接続の IP0 OP : NIM Output 0-3 LVDSn/LVDSp : LVDS IO 0-15 LVDS_CLKn/p : GCLK 接続のLVDS RD : Data Read WR : Data Write RD_STRB : Read strobe WR_STRB : Write strobe

制約ファイル (UCF) をコピー vlupo.ucf gto.ucf IO 等の制約を書く Association を Implementation にしておかないとヒドイ目にあう

CAMAC/VME を使わない場合は (LUPO) これで十分 vlupo.ucf を Edit Constraints(Text) で編集 UCF に書いてある NET は entity に書いておかないとエラー

簡単に書くと (LUPO) こんな感じ Synthesize -> Implement Design まで通ればたいてい OK

同期回路を作る場合 if, else を使うときは使う signal に対しすべて明示的に値を入れておくのが吉 Warning で確認すべし 非同期的な回路で作られる この場合はちゃんと else の部分で明示的に値を代入してあげること

こういうのは大丈夫な場合が多い event 同期にしてあげると DFF を使ってくれるので期待通りに値が保持される Clock のタイミングでしか値が変化しない

基本的にすべての行は同時に動作する IP(0) e d

ループ回路は注意 回路図的には以下で Latch が作れるが Combinational loop があるよと言われる パルス幅 伝達経路 delay ジッタ等々でうまくいかないこと多し

明示的に DFF を使うと安心 process 文で event を使うと基本的に DFF にしてくれる 回路要素として FDCE(=DFF) を使うと期待通りの動作をしてくれるでしょう

VME/CAMAC バスとのやりとり (Read for LUPO) RD_STRB が 1 の時に RD にデータを保持しておく

VME/CAMAC バスとのやりとり (for LUPO) WE_STRB が 1 から 0 に遷移したタイミングで WD からデータを取り込む

実際に値を読み出す場合 (LUPO) when で VME Address (CAMAC AF) を場合分け RD_STRB= 1 の間だけ RD に値を保持しておけばよい RD <= val; それ以外は RD は切り離しておく RD <= (others => z ); elsif (WR_STRB = 1 ) then

実際に値を書き込む場合 (LUPO) 1. WR_STRB= 1 の時にフラグを立てておく set <= 1 ; 2. WR_STRB event and WR_STRB= 0 の時にフラグが立っていれば値を代入する val <= WR; 3. WR_STRB= 0 になった時でも set の値は保持しておく set <= set; set が DFF の CE (clock enable) に接続される WR set WR_STRB elsif (WR_STRB = 1 ) then val

スケーラ ( カウンタ ) を作る eventを使って同期回路を作ればよい cnt <= cnt + 1 データを読み出したい場合はRD_STRB 時に値をラッチしてあげないと時々不正な値を返す 読み出し中にcntの値が変わるとアウト 各ビット間で必ずskew(~ 20ps) がある

スケーラ ( カウンタ ) 値をラッチする 読み出し用の vector を作ってあげる iq <= cnt; ではない こうすると cnt - 1 を読み出すことになる

使うライブラリを書いておく library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; これら ARITH 等が無いと cnt <= cnt + 1 等ができない ちなみに FDCE 等組み込みライブラリを使ったものをシミュレーションする場合は下記のようにコメントアウトしておく

シミュレーションする テストベンチをつくる

初期値を設定 Implementation Simulation 切り替え

こんな感じで書く clock 部分は自動的に生成してくれる wait for 100ns; で 100ns 時間を進める ダブルクリックでシミュレーション開始

ISim の画面 全体を表示 1 ステップ進める

LUPO/GTO にダウンロードする Generate Programming File bit ファイルができる Configure Target Device impact を起動 bit ファイルから Flash memory 用のファイルを作る FPGA に書き込む まずは PROM = Flash Memory 用ファイル

PROM 用ファイル設定 GTO の場合は xcf02s xcf04s を選んで Add Xilinx Flash/PROM を選んで押す

PROM ファイルを作る ウィザード形式で 1. デバイスを追加するか聞かれるので Yes 2.bit ファイルを選ぶ 3. さらに用意するか聞かれるので No ここをダブルクリックでファイルができる MCS という拡張子

Download firmware For FPGA, 電源切ると中身が消える (bit file) For Flash ROM, 不揮発性 (mcs file) Load FPGA をつけておくと Flash ROM を書いた時に FPGA にもロードしてくれる

やらかした例 conv_std_logic_vector 5000000 という数字を 24bit のベクターに変換したい conv_std_logic_vector(5000000, 24) 正しい conv_std_logic_vector(24, 5000000) 24 という数字を 5000000bit の vector に変換しようとする Synthesize がいっこうに終わらなくなる ( いつかは終わる )

downto ( 降順 ) と to( 昇順 ) signal a : std_logic_vector(3 downto 0) := 3210 vector を使う時は downto が一般的 bit で初期値を書く時は一番右が 0bit 目なのが馴染み type ARINT is array(3 downto 0) of integer; constant b : ARINT := (0,1,2,3); b(0)=3, b(1)=2, b(2)=1,b(3)=0 になるので注意 type ARINT is array(0 to 3) of integer; constant b : ARINT := (0,1,2,3); b(0)=0, b(1)=1, b(2)=2,b(3)=3 習慣の問題ですが array の時は to の方が馴染みやすい

black box と言われる場合 attribute box_type : string; attribute box_type of FDCE : component is black_box ; と書いておけば Warning が出なくなる または Xilinx 標準のライブラリを使う場合は COMPONENT の宣言をせずに 下記をコメントアウトするだけでもよい

LVDS を使う IBUFDS 入力 OBUFDS 出力 入力の場合は UCF ファイルの DIFF_TERM を TRUE にしておく これでターミネータが入る

GCLK と BUFG GCLKにアサインされているものはClock( 配線時にSkew, Delayが少ない ) として使える IP0とLVDSClockp/n それ以外でClock( 多数の回路のClockとなるもの ) として使いたい場合はBUFGにつなげる Place & Route 時に必要に応じて自動でつなげてくれる UCFで以下の記述が必要 回路規模が大きくなってきたら Place & Route Report は要チェック BUFGMUX ではなく Local になっていて Skew が大きい場合は PlanAhead を使って配線調整