AC特性を実現する設計

AC特性を設計しております。遅延設計は、専門的でゼロから理解するのは困難な方もおられると思います。
その場合でも安心下さい。以下の回路構造はそのままブラックボックスで使用できますので、いじらずに、使用し、オリジナル回路を追加出来るようになっております。
以下は、見なくても、目を通すだけでも、マスターするほど熟読するのも、それぞれ自由です。




●ACタイミング


データシート規定

Output Data (FT → FPGA)  ※FT601をFTと略します

FTはFPGAにこのスペックでデータをくれる
FPGAは、ベストなタイミングでデータを受け取れるようにAC調整する


Input Data (FPGA → FT)

FPGAは、FTにこのスペックでデータを出してあげる

実際は、この数nsのスペックを満足しているとかいちいちやると大変ですが、ULOGには、標準で帯域チェッカーが搭載されています
それは、RD/WR照合ができるので、ユーザーが作った回路の安定性は、それで検証できます
波形を計測しなくて検証できます

当社には、検証するためのツールとして、ロジアナがあります。
データ信号のセットアップ、ホールドを実計測して、検証もしています。
ロジアナは、サンプリングCLK=0.66nsの超高速なので、CLK=100MHz程度の分析はかなりできています




●AC特性調整

FPGAのハンドシェイク回路は、FTからのCLKをダイレクトに使って単純同期回路を作れば、安定して動く回路が作れると考えてよいようです
当社でも遅延設計などしないで安定動作ができました。
ただ安定動作していても、上図のFTのAC timing規定は微妙に満足はしていません
実力で動作しているということです

ULOGは、汎用ボードなので、ユーザーがカスタマイズをすることが前提なので、AC特性を意識的に調整できる構造を作っています



●CLK遅延調整



CLK_ORGは、FTからのCLK入力そのままです
CLK調整回路は、ISEのCore Genの以下です
CLK調整回路からのCLKで内部処理するので、データとCLK_ORGとの位相を変えることができます




起動すると



Value の値を入力すると、遅延したCLKになって出力されます
ここでは、
40 を設定し、1.563ns 遅延しています




●効果検証

信号は幾つかあるのですが、CLK と D0〈双方向) の関係を代表で見ることで、全て同様と判断しています

検証するためのツール:
データ信号のセットアップ、ホールドを検証します
自社が所有するロジアナを使います。ロジアナは、サンプリングCLK=0.66nsの超高速なので、CLK=100MHz程度の分析はかなりできています

CLK立ち上がりに対する、D0のセットアップ、ホールドを自動算出するロジアナの付属アプリを使用。
セットアップ、ホールドを自動算出するアプリとは
、赤矢印の信号エッジ間隔を算出してくれるものです。



 セットアップ、ホールドを自動算出




遅延調整、無し

RD側
 

セットアップ、ホールドを自動算出


WR側
 

セットアップ、ホールドを自動算出

赤矢印の部分がNG

帯域チェッカーのデータ照合チェックでOK
一見問題は無いようですが、右図のアップ、ホールドを自動算出するアプリで、RD側の赤矢印が、仕様ACタイミングT4に不足しています
遅延調整をしなくてもエラーしていないので、動作するなら良いと言う判断なら、以降の解説は気にしなくても良いです
遅延調整を勉強する方は、以降を読んでください


遅延調整、有効

RD側
 

セットアップ、ホールドを自動算出

仕様ACタイミング全OK

WR側
 

セットアップ、ホールドを自動算出

仕様ACタイミング全OK

右図のアップ、ホールドを自動算出するアプリで、仕様ACタイミングも全OK
実働させた帯域チェッカーのデータ照合チェックでOK



VHDLで作った遅延をコールする方法

ソース: ftctl.vhd

--CLK-RD遅延
--基本処理はRD側
GEN_RDCLK1: if (GSEL_RDCLK = FALSE) generate

  -- 遅延調整無し
  CLK <= CLK_ORG;

end generate GEN_RDCLK1;

GEN_RDCLK2: if (GSEL_RDCLK = TRUE) generate

  -- 遅延微調整
  Inst_clk_delay_rd: clk_delay_rd PORT MAP
  (
    CLKIN_IN => CLK_ORG,
    RST_IN => not RST_N,
    CLK0_OUT => CLK,
    LOCKED_OUT => open
  );

end generate GEN_RDCLK2;


GSEL_RDCLK
FALSE: 延調整無し
TRUE: 延調整有り

回路記述
ソース: sd_r.vhd
constant GSEL_RDCLK: boolean := TRUE;


遅延回路: clk_delay_rd  
CORE Genで作成したもの





●遅延値をどう決める

以上の説明しましたが、概念が専門的になります
スキル的に無理そうなら、デフォルトで適正な遅延が有効になってますのでそのまま流用ください

簡単に説明しますが、内容の理解はユーザーのスキルにお任せします
標準で帯域チェッカーが搭載されていますので利用します。
帯域チェッカーが正常になる遅延の範囲を見つけ、中央値を求めます
手順は、

・遅延値をプラスマイナスで振ってみて正常動作範囲を確定する

・その正常範囲の中央値付近を採用する

遅延回路: clk_delay_rd (上のVHDL)
遅延値は、帯域チェッカーが正常なのは、0から120 でした
40を採用しました





※ULOGは、デルタコア社オリジナル開発です。
記載されている各名称、製品名は、各社の商標、または、登録商標です。

Copyright (c) デルタコア All Rights Reserved.