VHDLのフリップフロップに関して

J

jianhuachews

Guest
こんにちはみんな、私は "ff_return"を押して毎回インチ駆動同じ入力から2outputs FFの出力を取得したい、FFが開始されます。以下の私のプログラムです。私はそれをコンパイルしようとしたが、それは、ModelSimでのエラーを示した。誰も私を導き、啓発することはできますか?事前に感謝します。
#**エラー:C:\ Modeltech_pe_edu_10.0a \例\ test_flipflop.vhd(23):出力 "q"を読み取ることができません
Code:
ライブラリのIEEE; IEEE.std_logic_1164.allを使用します。使用するIEEE 。std_logic_unsigned.all;エンティティのフリップフロップはポートです(:STD_LOGIC_VECTORで(0〜15 '1)ff_clk、ff_return、ff_rst:ff_keyin std_logicで; Q、qbar:アウトSTD_LOGIC_VECTOR(0 '1 15)) -  Qは、最初のFFの出力です。 、qbarはqから二番目のFF出力される。最後のフリップフロップ、フリップフロップの行動アーキテクチャでは、信号ff_return_int、行われます:トライステート、プロセス(ff_clk)始める場合(をff_rst = '1 ')をqbar '0')を開始、Q '0 '); ELSIF(ff_clk'eventとff_clk = '1 ')した場合(ff_return = '1'し)Q
 
あなたは出力ポートを読み取ることができないように、内部的に一時的な信号を必要とするので、この行は無効です。qbar
 
他のオプションは、バッファの代わりに、出力としてQを定義することです。これとは別に問題から、よく考えられて見ていないコード内の詳細は、があります。 ff_return_intにのみ設定がリセットされることはありません。
 
多くのトリッキーありがとう!ああ私は全くそれを忘れてしまった代わりに一時信号に割り当てる必要があります。 FVMこんにちは、私はバッファに慣れていないよ...いやそう。助けのおかげで、私はいくつかの変更後、私ff_return_intリセットをしたい。ガイドをありがとう!とにかく私はちょっと私のプログラムを変更しました。それは私の目的に道理にかなっていれば誰も私を伝えることができますか?目的は
私は "ff_return"を押して毎回インチ駆動同じ入力から2outputs FFの出力を取得したい、FFが開始されます。
私はFF、それが二回、それが元のデータに戻るならば私が実現し、私はどのように愚かな私..以下の修正プログラムです!私はそれをシミュレートしたい、それが正常に見える...私は思う。
Code:
ライブラリのIEEE;使用IEEE.std_logic_unsigned.all; IEEE.std_logic_1164.allを使用するエンティティフリップフロップは、ポート(ff_keyinです:STD_LOGIC_VECTORで(0〜15 '1)ff_clk、ff_return、ff_rst:std_logicで; firstq、secondq:std_logic_vectorを出(0 '1 15));エンドフリップフロップ、フリップフロップの行動アーキテクチャでは、信号ff_return_intです:;信号firstq_s、secondq_sトライステート:STD_LOGIC_VECTOR(0 '1 15)、プロセス(ff_clk)を開始し始める場合(ff_rst = '1 ')をfirstq_s '0' '); secondq_s '0'); ff_return_int
 
両者が数値ではないので、あなたは、ビットだけの負荷を2 std_logic_vectorsを追加することはできません。また、あなたがnumeric_stdパッケージを使用して符号付きまたは符号なしの型にそれらを変換する必要があります何か他のものに加えてを割り当てる必要があります。あなたはこのような何かを離れて得ることができます:use ieee.numeric_std.all、出力
 
FPGA開発の基本的なエラーが発生しました。 FPGA内にその管理のロジックに違反するフリップフロップとしないで構成されていることに注意しますが、これらのフリップフロップをHDLで作成して、フリップフロップとしてそれらの話はありません。
 
こんにちはみんな、誰もがこれで私を助けることができますか? ModelSimは私にエラーた "タイプのieee.std_logic_1164.STD_LOGICとしてスライス名を解決できないことを。"それは緊急助けてくださいよ! :(
Code:
プロセス(追加)を開始した場合(= '1 'を追加')その後add_op_s(0 '1 15)
 
OMGごめんなさい私の悪い!それは今行われている!しかし、私は結核でそれをシミュレートするときに正しく加算を実行しませんでした!あなたはそれを見てみることができますか?私は、波形を添付しました。 overflow_sとadd_op_sに期待される出力は、firstq_sとsecondq_sを追加した後に、'1 'と "1111 1111 1111 1111"であることになっています。 [アタッチ= CONFIG] 60135 [/添付]
 
シミュレーションの結果は、この式は
Code:
 add_op_s(0 '1 15)正しい
 
はい式は右です!しかし出力結果ではありませんでした。波形は、出力add_op_sとsecondq_sが等しいことを示しています。 、firstq_sは "1111 1111 1111 1111"で、他の信号であるため、これは、ありません。これはどのように起こってすることができます!
 
波形出力add_op_sとsecondq_sが等しいことを示しています
?? "0000 0000 0000 1010" + "1111 1111 1111 1111" = "0000 0000 0000 1001" 私の考えでは合理的に見える。 16ビットのターゲット·サイズに応じて、オーバーフローはもちろん、関与しています。
 
OMGとても残念...それは今右の私が仕事をする心の私の右の状態ではありませんだからIM病気です。はいANW、ありがとう!とあなたが言及したものに関しては、オーバーフローが必要となります。私はそれがあったが、シミュレーションでは初期化されていない示しています!
Code:
 overflow_s
 
OMGとても残念...それは今右の私が仕事をする心の私の右の状態ではありませんだからIM病気です。はいANW、ありがとう!とあなたが言及したものに関しては、私はそれは、[コード]のプロセス(追加)を開始した場合(= '1 'を追加')にadd_op_sを変更した
 
しかし、私はシミュレーションを実行したときに私は致命的なエラーが発生したときに "追加= '1 '"このように出力されません全く何もない!
はい、それは理解しやすくなります。あなたは、さらに作業をするために17ビットへの入力条件のいずれかを拡張する必要があります。以下のような例:
Code:
 add_op_s
 
それが動作ああ!私はそのような方法でプログラム知らなかった...私そんなにFVMを誘導していただきありがとうございます! :)
 

Welcome to EDABoard.com

Sponsor

Back
Top