2016-05-28 63 views
2

私は古典的なHD44780のLCDにインターフェイスしようとしています。 私はディスプレイに表示したいデータを書き込むローカルRAMを実装しました。VHDL - エレガントにstd_logic_vectorの配列を初期化するには?

私はこのようにラムを定義している:

type ram_type is array (0 to (16*2)-1) of std_logic_vector(7 downto 0); 
signal lcd_mem : ram_type; 

私はこの方法でRAMを初期化しようとしました:

lcd_mem(0 to 6) <= x"45_72_72_6F_72_73_3A"; 
... 

をしかし、私は合成上のエラーが表示されます。

エラー(10515):display_ber.vhd(74)でのVHDLタイプの不一致エラー:ram_typeタイプが文字列リテラルと一致しません

同様にRAMブロックを完全に初期化する方法はありますか?

代わりに文字列型を使用する必要がありますか?

答えて

3

はいあります。 ram_typeの定義はstd_logic_vectorの配列であることに注意してください。 x"45_72_72_6F_72_73_3A"は、16進文字列リテラルです。これらは同じタイプではないので、あなたのエラーです。

したがって、値をベクトルの配列に配置する必要があります。そのようなもの:

lcd_mem(0 to 6) <= (0 => x"45", 1 => x"72", 2 => x"72", 3 => x"6F", 4 => x"72", 5 => x"73", 6 => x"3A");