FPGAの部屋FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。Kitのダイナミック点灯回路でやってみることにした。最初にそのまま、インプリメントしてみた。その次に非同期リセットを同期リセットに変更してインプリメントしてみた。process;こうした。process;この結果、非同期リセットのMAPの結果は以下の通り。secs次に、同期リセットに修正したMAP結果は以下の通り。非同期リセットが72、同期リセットが33で、同期リセットのほうが半分以下になっている。Floorplanerでも比較してみた。右が非同期リセット、左が同期リセットだ。明らかに同期リセットのほうが使用SLICEが少ない。こんなに違うのは、なんかおかしい気がするが、同期リセットのほうがかなり有利ということになるのだろうか?一応、ちょっとは双方の回路ともシミュレーションしてあるが、実機に入れて確かめてはいない。検証してみようと思う。»コメントこんばんはすごい効果がでていますね。節約がヒットしやすい回路だった気がするのですが。※以下、LUT意識の合成をしていないので誤解がありましたら御免なさい。・節約できるパタンは、LUT入力が、約4n+1の時だけということだと理解しましたが。約5入力だからLUT1個節約できたが、約4入力では変わらない。LUT2個が1個になれば50%ですが、LUTが20個連結されたときでも最後の1個が節約できることも、ある、ということになると思います。その場合、節約率はずいぶん小さくなります。・Virtex5はたぶん6入力LUTなので、この節約できる割合が減ってくるのでしょう。・非同期リセットは、ある意味便利なので使っていることがあると思います。起動時の外部リセットは通常そのままでは非同期ですし。私の場合、基本処理CLKと高速IO用CLKはDLLを使っても同期していないので、同一のリセットで2系統をリセットする場合、非同期も例外的に使用します。(以上に理解に間違い無かったことを前提に)従って、”テクニックとして覚えておくと有効”という感じのものと考えています。非同期リセットで懸念されているのは、メタステーブルでしょうか。あるならその話も哲学的には深いのかも知れませんが、私はリセット後アイドル2CLK以上あれば問題ないものと理解しています。]NSXさん、こんにちは。私も節約できるパターンだったんだと思います。Editorで見たところSLICEのFFのREV入力に入っているSLICEはありませんでした。いうことは、節約できるパターンを使っていないということですよね?たまたまXSTの最適化のつぼにはまったのでしょうか?ちがう回路、ステートマシンが入っているものなどで確かめてみようと思います。うちのボードも動作クロックが複数あるので悩みどころですが、そのクロックで同期化してやれば良いと思っています。リセットのメタステーブルで、怖いのはリセットを解除するときに、リセットが全体の回路で伝播する際に1クロック時間以上ずれないか?ということです。ずれないならばよいと思いますが、全体でリセットが解除されるクロックが違ってしまうという状態はぜひともさけたいと思っています。保険のためにDFFを2段くらいにしておくのが良いんじゃないかなと思っています。Editor自体使用しない平凡な合成しかしないので、知識がありません。(使うときはmarseeさんのブログを見て教わりながらやってます)xcell記事からFDRSEの同期SETの分が1個節約できるので、約4n+1の時だけということだと理解したのですが。ベストパタンで50%に近づきます。この回路は、16bitカウンタで一様にランダム性もある気がします。LUTで、48/87=55%。これでは効果ありすぎと思います。記事からは読み取れない何か他にカラクリがあるのかな。効果ありすぎなのでおそらく他の回路でも程度はあっても一様に効果あると思います。]NSXさん、こんにちは。なんかおかしいですよね。どこか間違えているか?勘違いしているか?違うのでもやってみようと思うんですが、セミナに行くので、終わってからやります。]ずいぶんと前から、Xilinxは最適化の為に同期リセットを推奨しています。ガイドhttp://toolbox.xilinx.com/docsan/xilinx9j/books/docs/sim/sim.pdfP53から「同期システムで非同期リセットを使用することによってタイミング解析が困難になることはよく知られていますが、最適化に影響することはあまり知られていません。」Xilinxで速い回路を書く必要があるときは同期リセットを積極的に使う必要があります。LUTをシフトレジスタとして使うためにあえてリセットを入れない、等の小技を駆使する必要があります。最適化の技をいくつか知っておくと、いざというときに役に立つかもしれませんね。]なつたんさん、こんばんは。いま、セミナから帰って食事したところです。横浜まで家から3時間かかるので、きついです。今日は目を使いすぎて頭が痛いです。教えていただいて、ありがとうございました。同期リセットにして早くなるなんで、思いもしませんでした。検証してみようと思います。]FDのCLRやSETを論理入力として使うようになるため、もともと少ないLUTの入力を、より意味のある信号として使えるようになるためだったと思います。以前TechXClusiveか何かで、同期リセットのほうがよいと書かれていたのを覚えています。それ以来私は同期リセット派です。]なひたふさん、コメントありがとうございます。同期リセットのほうが有利みたいですね。一度確かめてみようと思います。]私の場合は、外部の非同期リセット入力はめったに使いません。いうかリセット入力自体をめったに使いません。FPGA内にタイマーを仕込んでおいて、そのタイマーの出力を利用して、必要最小限の部分だけリセットすることが多いです。]なひたふさん、お答えいただいて、ありがとうございます。電源ONの時には、水晶発信器のクロックが安定しないので、FPGAの内部回路の動作は正常動作するかどうかわからないので、必ず水晶発信器のクロック安定時間よりも長いリセット信号を入れてリセットする。いうように考えていたのですが、そこまでしなくても大丈夫そうですね。]みなさま、お疲れ様です。marseeさん、なんだか変な問題定義をしてしまいみなさまにお時間取らせてしまい恐縮しています。ひたふさんが仰るように私も必要最小限の同期リセット派なのですが、前の投稿でもお話ししたように多段タップのフィードバックするフィルターロジックをピンポイントでリセットしてもModelsimのシミュレーションはタップ間に存在するドンドケアが回ってしまい・・・リセットは非同期がいい?というご質問をさせていただいた次第でした。(笑)まぁ、個別回路のリセット問題云々は別にしてもリセットは動作スピードとリソースに大きく影響するようなので重要な要素であることは間違いないですね。]hypermacさん、こんにちは。同期リセットについて、教えていただいてありがとうございます。やってみていますが、いろんな疑問が出てきます。URLhttps://marsee101.blog.fc2.com/tb.php/677-0eaf2556この記事にトラックバックする(FC2ブログユーザー)プロフィールAuthor:marseeFPGAの部屋へようこそ!FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。WEBブログデザイナ。