ページ

ラベル FPGA の投稿を表示しています。 すべての投稿を表示
ラベル FPGA の投稿を表示しています。 すべての投稿を表示

2013年8月21日水曜日

FPGA(xilinx) verilogでXSTにブロックRAMを推論させる




 去年の暮れからFPGAをverilogで設計するという仕事に没頭しておりました。FPGAは、Xilinxから発表された当時(30年くらい前?)、新しいもの好きの私は、その頃高価なFPGAでトリプルポートのDRAMコントローラを画像処理用に作りました。ASICで作るよりは、FPGAで作るほうが、問題が起きた時に変更できるという利点もありましたが、高価でしたし、ゲート規模もPLDのお化けというような感じでたいしたものではなかったですが、結構設計に苦労しました。その当時まだ、論理合成なんていう便利なツールはなかったので、回路図レベルでまず設計しそれをFPGAエディターにCLBの中身を展開していくというなんとも大胆な方法で設計したものです。

 回路図をのままを設計ツールで論理合成した場合、その当時のパソコン(486レベル?)では、丸1日かかるというもので、使い物にならないというのがその理由でした。それからFPGAの設計からしばらく離れておりました。

 2012年は、verilogでの本格的な設計をはじめるきっかけとなりました。結構大規模なFPGA(xilinx)の設計で、spartan6のお世話になりました。技術の進歩は、すごいものです。しばらくFPGAから離れていただけで、タイムマシンで未来に来たかのごとく論理合成の時代は進歩していました。
 
  いろいろはまるところがありましたが、今回最も冷や汗を掻いたところは、最終段シミュレーションも大体終わり、論理合成、配置配線をしようとした時にデバイスに入りきらないというエラーが出たときです。もうボードの実装も上がり、デバイスの変更はできない状態でした。最初の想定では、デバイスの選定は問題ないはずですが、何回条件をいろいろ変えてもできなくて、悩んだのですが、聞いてみるとブロックRAMを想定して設計している部分を、論理合成ツールがブロックRAMと認識せずにCLBでRAMを構成してしまっていた事が原因でした。

 論理合成・配置配線で問題が出た場合は、ISEですと xxx.par とxxx.syr を、Planaheadですと xxx.srp とxxx.mrp を見て期待通りにブロックRAMを使って論理合成できているかを確認できます。期待するブロックRAMでできていない場合は、シュミレーションでは、動作するのですが、ブロックRAMとして認識できないような何らかの問題がRAM部の記述にあります。

 下記がブロックRAMの基本構造です。ブロックRAMの基本的な構造を理解する事で、この範囲を超えずに記述すればXSTは、ブロックRAMとして推論してくれます。完全な非同期のデュアルポートRAMを構成できます。IPブロックとして記述する方法もありますが、verilogで推論させたほうがスマートです。
心配であればコーディング途中で一度論理合成を走らせる事をお勧めします。後になって冷や汗を掻くよりは、事前にリスクを回避できれば、デバッグの効率もアップします。間違った記述でロジックを書き進めてしまってからでは、後の変更がたいへんですし、時間の浪費です。




































 どうしてもだめな場合は、(* RAM_STYLE="BLOCK" *)制約を追加する事で推論できるようになる可能性があります。基本的に上記ブロック構造を守っていればどんな複雑なロジックにしてもXSTは、ちゃんとブロックRAMとして推論してくれます。

 あたりまえのことですが、1つのデータポートにアクセスできるアドレスは1つです。この理解さえできていればブロックRAMは、攻略できます。

 XSTがブロックRAMとして推論しない認識しないと困られている皆様がんばってください。幸運を祈ります。

2012年4月6日金曜日

動的再構成FPGA

Tabula社 3PLD 「ABAX(エイバックス)」 はインテル製造。 
   
    3次元トライゲート採用で4次元チップ?
 
  動的再構成FPGAとして、とんでもなくおもしろい発想のTabula社の3PLD、これを題材に書こうと思いつつなかなか時間を得ることができなかったのですが、やっとここにきて書ける時間が出てきました。しかもその後、これをインテルのファウンドリーで製造するという発表、これが、インテル社の3次元トライゲート・トランジスター採用 22nm プロセス技術導入という事です。
 
 
  Tabla社のFPGAは、「ABAX(エイバックス)」というらしいですが、3次元PLDで3PLDというらしいです。2次元+時間軸を加えて3次元ら しいですから、これが量産時には、4次元チップとして発表されるのでしょうか?なんとなくここがインテルの3次元トライゲートを採用したい理由がわかりる よう気がします。
 
 1クロックを最大8倍してその中で動的再構成をするFPGAですので、動作スピードは犠牲になるでしょうが、ハードウエアリソースが仮想的に最大8倍と拡大されて使えるというすばらしいアイデアです。代理店のルネサスイーストン社にいろいろ質問しましたが、まだ開発ツールが、公開されないようですので、少し不便かもしれませんが、ルネサスイーストン社に依頼すると開発できるようです。
 

 こんな大容量のFPGAがどんどん出てくると、将来は、大型計算機がなくなったように、ASICの市場もいずれFPGAにとって代わられる時代が到来するのでしょうか? 

破壊的イノベーションの予感!!



2011年8月25日木曜日

ダイナミック・リコンフィギュラブル(動的再構成)

ここにきて少し最近またダイナミック・リコンフィギュラブル(動的再構成)が話題になっているようです。

Xbridge(Renesas) とやらが最近どうも気になるのですが、
以前までDRP(Dynamically Reconfigurable Processor,NEC)と言われてきていたものとどういう関係にあるのかどうかはわかりませんが、STPエンジンというのが Reconfigurable Processor らしいです。Videoカメラ、カメラ等に既に採用があり、かなりなパフォーマンスらしいです。(処理スピード/消費電力)  カシオフジフィルムから出ているのがどうもそうらしいです。ET-Westのセミナーにて根木さんがプレゼンされてました。
  「今のCPUが大企業に似ている」の意見は大いに賛同します。実際の社員(ALU)を働かせるための管理職(キャッシュ等)の機能ばかりが増えて(消費電力を食ってしまい)疲弊してきている(INTEL-CPUやたらにFANで冷やすのでうるさいんですけど、、)
代理店やNECにもいろいろ資料請求やら質問やらをしてますが、反応が薄いです。NECは、このICを手放し、一緒に開発していたCの開発ツールのみを扱っている状況のようで、「まだかなり高価なので、、、」と冷たい反応なのはわかりますが、問い合わせしているRenesas取り扱い店から全く反応がないのは、どうして?ユーザーをしぼっているのですかね?

DAP/DNAは今どうなっている?
ググルとどうも今は東京計器という会社が扱っているようです。
東芝は、ソフトウエア無線向けでADRESというのをやるらしいです


WIKI で調べるといろいろな情報があります。
いろいろなところが、やっているようですが、あんまりどこも成功してないようですね。

やっぱり既存のFPGAからのダイナミック・リコンフィギュラブルのアプローチを待ったほうがいいのかもという気持ちにもなります。せっかく再構成(コンフィグレーション)できるのに、電源起動時1回しかやらないってどう考えてももったいないですからね(これって日本人的な貧乏性的発想かも)

でも確かにパラダイムシフトの予感はします。変化はゆっくりと着実に訪れます。

参考サイト1

参考サイト2