• 締切済み

PLDデバイスのリセット信号に関して

PLDデバイス(CPLD、FPGA)でHDL言語できしょうしています、 always@(posedge clk or negedge rst)begin if(!rst)begin reg <= 0; end if begin レジスタのリセットを上記の様に記述しますが、この「rst」の信号はPLDデバイスの外部から 入力される設定なのですが、通常PLDのリセット信号をどの様な回路構成で生成するのでしょうか? PLD外部にCPUが有る場合はCPUから入力すればよいと思いますが、CPUなどが無くPLDデバイス 単体の場合、PLDデバイス用のリセットICなどあるのでしょうか? PLDデバイスはCPLDタイプであっても内部的にロジックをローディングするコンフィギュレーション動作が必要でこの間は数百msec程度かかると思われます。 ※CPUのリセット時間に比べかなり長いと思われます。 しかし通常のCPU用のリセットICはそんなに長い期間用はあまり無いと思います。 又はアルテラ社のデバイスを見ると「POR](パワーオンリセット)なる、ブロックが内蔵されていますが、このモジュールをリセット回路として使用できるのでしょうか。その場合、冒頭のVerilog言語で どの様に記述すればいいのでしょうか。 よろしくお願いします。

みんなの回答

  • monova
  • ベストアンサー率68% (68/100)
回答No.1

PORに関しては、OKwebで過去の質問にあった様なので、リンクを 張らしてもらいます。 http://okwave.jp/qa/q7108828.html リセットICはルネサスから何種類か出ています。 http://japan.renesas.com/products/standard_ic/linear/single_reset/index.jsp 恐らく、もともとは三菱のリセットICだと思います。 時間固定のタイプと、キャパシタでリセット時間を決められるタイプとがあります。 お好みでお選び下さい。

関連するQ&A

  • アルテラ CYCLONE3のリセット信号は

    アルテラ社のCYCLONE3を使用した回路を製作していてリセット信号の事でお聞きします。 電源投入後コンフィギュレーションを開始しコンフィギュレーション完了後に内部ロジックが動作を始めますが、この時リセット信号は外部からリセットICなどにより入力する必要はないのでしょうか? 内部ロジックではリセット信号処理を必要としています。  always@(negedge rst or posedge clk) などとしています。 外部からリセットICなどによりリセットを入れる場合、そうとうにディレイ時間の長いリセットICが必要になると思いますが、FPGA専用のリセットICなど有るのでしょうか。 またはCYCLONE3には内部にPOR回路がある様ですが、この回路を内部ロジックのリセット信号に使用する事は出来ないのでしょうか。 宜しくお願いします。

  • verilogである信号の数クロック遅れの信号を生成させる記述方法をお

    verilogである信号の数クロック遅れの信号を生成させる記述方法をお伺いします。 動作記述でOKです。 通常、「sig_a」 から2クロック遅れの「sig_b」を生成させるのなら: > sig_a - 2clockおくれ -> sig_b ----------------------------------- reg [2:0] regs; assign sig_b = regs[2]; asisgn regs[0] = sig_a; always @(posedge CLK) regs[2:0] <= {regs[1:0], sig_a}; ----------------------------------- のように、パイプラインに信号を通すことで実現できるですが、 何クロック遅れるかを可変(動的に設定する)としたいのです。 動作モデル的な記述で簡単にかけないのでしょうか? ------------------------------------ [NGの例]: これだとNcycle_delayがSIM途中で更新されたとき、反映できない。。。 initial begin  sig_b <= #D 1'b0;   while(1) begin   repeat(Ncycyle_delay) @(posedge CLK);    while(1) begin     sig_b <= sig_a;     repeat(1) @(posedge CLK);    end   end end ------------------------------------ 宜しくお願い致します。

  • クロック信号のカウント方法について教えて下さい

    15MHZのクロックをカウントし、設定値と比較一致した場合外部に2μS巾のワンショット信号を出しタイミングによっては、カウント一致後約60μSで外部信号によってカウンタをリセットする回路を考えているのですが、いいデバイスが見つかりません。マイコン(AVR)のソフトウェア上でカウントするのは無理のようですし(?)、かといってカウンタICにもそのようなICが見つかりません。 どなたか方法をお教え頂けませんでしょうか?カウント数は10進4桁以内です。 マイコンから設定値を書き込めるカウンタICはZENIC製ZEN2024Fを見つけたのですが、使えるのかどうか今ひとつよくわかりません。マイコンはAVRを使おうと思っています。 全くのマイコン初心者です。よろしくお願いいたします。

  • CPLDはクロックを入れなくても使える?

    ザイリンクス、アルテラ、ラティスなどのCPLDを使いたいと思っています。 一般的(?)にはCPLDにクロックを入れて、そのエッジで信号を取り込んで処理する同期回路設計をすると思います。 今回はCPLDで標準ロジックを複数入れるようなものを作ってみようと思っています。 例えば5入力ANDや、4bit-16bitデコーダのような感じのものです。 これらもクロックに同期して取り込んだ方が出力がきれいに安定するのはわかるのですが、あえてこれは良しとした場合、CPLDにはクロックを入れなくても動かすことはできるのでしょうか? ご存知の方がいらっしゃいましたらご教示お願いいたします。

  • verilogでの記述、always@の使い方

    verilogでの記述の仕方について質問です。 画像のようなタイミングチャートを考えています。 clkとplsは入力、dataが出力です。 構成は、  pls↑の次のclk↑で、dataをアサートする。 というのを考えています。 pls↑やclk↑は、posedgeを使えばよいと思うのですが、 私の考え通りに記述すると always @(posedge pls)begin @(posedge clk)begin data <= 1; end end こんな感じになるのか?となってしまいます。 @()begin end の中に@()beginを記述することが出来るのか というところから疑問です。 出来たとしても、これが私が意図したとおりに動作するのかがよくわかりません。 ネットで、 always @() @() と記述すると順序回路ができるとあったのですが、いまいち動作が分かりません。 どなたか、動作を教えていただけないでしょうか。 また、pls↑の次のclk↑で、dataをアサートする方法を教えていただけないでしょうか。 よろしくお願い致します。

  • verilog HDL のレジスタ記述について

    こんにちは verilog初心者です。論理合成をしていて気になる点があったので質問させていただきました。 二つのクロックの立ち上がりで書き込むレジスタを記述していて、 (全て1bit、clkはクロック) always @(posedge clk1 or posedge clk2) begin q <= d; end としたところ、シミュレーションはできますが論理合成はできませんでした。 自分の持っている参考書に「複数の書き込み信号があるレジスタはない」という記述があったので一応納得しました。 ところが、 always @(posedge clk1 or posedge clk2) begin if (clk1==1) q <= d; else if (clk2==1) q <= d; end と記述すると論理合成できてしまいます。 両者の書き込み信号に対する振る舞いは同じように思うのですが、一体何が違うのでしょうか。 わかる方いましたら是非ご教示下さい。よろしくお願いします。

  • 内蔵パワーオンリセットの耐ノイズ性

    現在CPU周りの回路設計をしております. CPUの機能に「内蔵パワーオンリセット」がありますが 外付けでリセット回路を組んだ時とどちらが耐ノイズ性に優れていますでしょうか? 参考となるURLがございましたら そちらも紹介していただきたいと思います. よろしくお願いいたします.

  • FPGA?マイコン?

    FPGAとマイコンは何が違うのですか? FPGAはマイコンの中に入っている集積回路のことですか? マイコンはCPU・メモリ・ポートがあればマイコン? マイコンには必ずFPGAが入っているのですか? パソコンでC言語等で記述して、特定の動作をさせることができるのはFPGAのようなPLDがマザーボード上にあるからですか?

  • リセットラインのPCB設計について教えてください。

    リセットラインのPCB設計について教えてください。 会社の先輩設計者(といってもまだ20代半ばですが)から、マイコンのリセット端子と外付けリセットICを結ぶリセットラインはGNDでガードするように言われました。 外部からのノイズによってリセットラインが揺らされ、リセットがかからないようにする対策らしいですが、効果があるのかどうかはよくわからない、と言っておりました。 高周波の信号ラインはGNDガードや反対側の層をベタGNDにするというのは聞きますが、このようなリセットラインもGNDガードをしたり反対側の層をベタGNDにするのは外部からのノイズの影響を低減させる効果はあるのでしょうか?

  • RTLの書き方について 非同期リセット

    http://www.asahi-kasei.co.jp/akm/japanese/product/ak4114/ak4114_f04j.pdf 30ページ目 Figure32 Mode4,6タイミング に書かれているLRCKとBICKの関係をつかってクロックの数をカウントしていくカウンタをVHDLで作りたいのですが、リセットの部分でわからないことがあり、質問させて頂きます。 【実現したい回路】 カウンタはクロックの立下りでカウント。LRCK=1となったところでカウンタを0に戻したい。方法として自分で考えたのは、LRCK=1となった時にフラグを立ててそれによって非同期リセットをかけようと考えたのですが、下記のRTLではシミュレーションは出来ても論理合成でエラーとなってしまい記述方法に問題があるようです。そもそもこのフラグを立てる方法が間違っているなどやり方のアドバイスありましたらよろしくお願いします。 【前半略】 architecture RTL of Counter is signal CNT_REG : std_logic_vector(2 downto 0); signal FLG_REG : std_logic; begin process (BICK,RST,FLG_REG) begin if RST ='0' then CNT_REG <= (others => '0'); elsif FLG_REG='1' then CNT_REG <= (others => '0'); elsif BICK'event and BICK='0' then CNT_REG <= CNT_REG + '1'; end if; end process; CNT <= CNT_REG; process (BICK,LRCK) begin if LRCK'event and LRCK='0' then FLG_REG <= '1'; else FLG_REG <= '0'; end if; end process; end RTL;