ファイルからROMをロードする必要があります。 Quartusは.mif
のファイルを直接使用することができ、シミュレータ用には、(高速で汚れた).mif
ファイルパーサをtextioの助けを借りて作成しました。シンセサイザツール(私の場合はQuartus)を検出し、シンセサイザツールでコンパイルされていない場合にのみ、textioファイルローダプロセスを生成する方法はありますか?コンパイラの検出方法
答えて
あなたのコードからROMを推測しようとしていますか? LPM機能を使用している場合、すべてが「うまくいく」べきです。
私はQuartusとModelSimのROMを問題なく使用します。 MegaWizardプラグインを使用してROM用のカスタムVHDLファイルを作成し、適切な初期化ファイルに指示するか、altsyncramコンポーネントを直接インスタンス化し、init_fileジェネリックをインクルードします。
通常と同じようにコンパイルまたはシミュレートします。 ModelSim(アルテラ・バージョンまたはスタンドアロン・バージョン)を使用して初期化されたROMでシミュレーションを実行するのに問題はなく、* .mifまたは* .hexファイルを読み取るための初期化コードを書く必要もありませんでした。参考のため
は、ここでのModelSim(INIT_FILEジェネリックに注意してください)に適切にシミュレートし、私のコードのビットから直接インスタンスROMメガファンクションです:
-- Sine lookup table
sine_lut : altsyncram
generic map (
clock_enable_input_a => "BYPASS",
clock_enable_output_a => "BYPASS",
init_file => "./video/sine_rom-512x8.mif",
intended_device_family => "Arria GX ",
lpm_hint => "ENABLE_RUNTIME_MOD=NO",
lpm_type => "altsyncram",
numwords_a => 512,
operation_mode => "ROM",
outdata_aclr_a => "NONE",
outdata_reg_a => "UNREGISTERED",
widthad_a => 9,
width_a => 8,
width_byteena_a => 1
)
port map (
-- Read port
clock0 => clk,
address_a => sine_addr,
q_a => sine_do
);
あなたが本当に対をシミュレートするときに別の何かをする必要がある場合それを合成するにはいくつかの方法があります。あなたはインターネット検索を通じてこれらのディレクティブの実例をたくさん見つけることができるはず、と私は含まれてきた
--synthesis translate-off
<code for simulation only>
--synthesis translate-on
:シンプルなものについては、次のディレクティブのようなものを使用することができます以下の1つの例です(実際のハードウェアで実行している場合とシミュレーションした場合のパワーオンリセットは短い)。一部の人々は、合成/シミュレーションの前に予備のビルドステップとしてCプリプロセッサ、M4マクロ言語、または類似のものを使用します。私はMakefileとスクリプトをFileName.sim.vhdl(シミュレーション用)をFileName.vhdl(合成用)に変換し、いくつかのテキストユーティリティで処理して、ルールに基づいてさまざまなコードブロックをコメント/非コメントにします。両方のバージョンを1つのファイルにまとめました(VHDLで使用するために強化されたCプリプロセッサのようなものを考えてください)。あなたのワークフローやチームのダイナミックス/文化に合った何かを行うだけです。
特定の合成ツールでのみ使用できるプラグマを使用して、合成ツールを検出できます。たとえば、次のように書くことができます:あなたは、この使用して、アルテラのQuartusを合成する場合にのみ
constant isQuartus : std_logic := '1'
-- altera translate_off
and '0'
-- altera translate_on
;
この定数は'1'
になります。
様々なVHDLのメタコメントプラグマの時についての詳細:助けをhttp://www.sigasi.com/content/list-known-vhdl-metacomment-pragmas
多くの感謝!要約すると:私はプラグマ/合成translate_offと - synthesis/pragma translate_onをコードの周りに追加しました。そのonluはSimulatorで使用する必要があります。 http://code.google.com/p/pakorobiol/source/browse/trunk/c25Board.vhd – nulleight