writeとかwritelenとかではなく、ModelSimとかで波形表示する際に有効な、VHDLで文字列を格納しておく方法。
signal signal_name : string(1 to n);
で信号(というより格納領域)を定義しておいて、signal_nameには通常の信号(std_logic_vectorとか)と同様に文字列を代入する。文字列は“”で囲っておく。
例:
signal bus_condition : string(1 to 3);
:
process ( CLK, RESET ) begin
if ( RESET='1' ) then
bus_condition <= "typ"; elseif ( CLK'event and CLK='1' ) then
if ( PERR='1' ) then
bus_condition <= "err"; else bus_condition <= "typ"; end if; end if;
end process;
注意点としては、以下のとおり。
(1) bit array(と言うのも変かな?)の0番目は使用不可。
(2) 信号を定義したビット数と文字列の数が合わないとcompile時にerrorが出る。
ちなみに、信号の定義は(1 to n)でも(n downto 1)でもどちらでもいい。別に1始まりでなくてもいいけど、そうするとnが文字数になるので楽。
テストベンチでの使用になるけど、意外と便利かも。文字数に融通が効く(例えば、5文字分を定義しておいて、3文字しか入れないとか)ともっと便利なのだが。
0 件のコメント:
コメントを投稿