|
|
|
|
|
|
---|
構文 | processの中 | processの外 | 備考 |
---|---|---|---|
if ( 条件 ) then ...; elsif ( 条件 ) then ...; else ...; end if; |
○ | × | 条件には a="0000" or a="0001" など複雑なものも可能である。 |
case ( 信号 ) is when 値 => ...; when 値 => ...; when others => ...; end case; |
○ | × | 値は "0000" | "0001" などと複数個羅列することができる。 |
信号 <= ... when 条件 else ... when 条件 else ... when 条件 else ...; |
× | ○ | 条件には a="0000" or a="0001" など複雑なものも可能である。 |
with ( 信号 ) select 信号 <= ... when 値, ... when 値, ... when others; |
× | ○ | 値は "0000" | "0001" などと複数個羅列することができる。 |
構文 | Quartus/ Max+plus | ModelSim | 意味 |
---|---|---|---|
for i in a'range loop ...; end loop; |
○ | ○ | aの配列またはバスの範囲がある限りiを増加させながらループを繰り返す。 processの中で利用する。 |
for i in a to b loop ...; end loop; |
多分○ | ○ | aからbまでiを増加させながらループを繰り返す。 processの中で利用する。 |
while 条件 loop ...; end loop; |
多分○ | ○ | 条件が真のときループを繰り返す。 processの中で利用する。 |
a: loop case c is when '0' => exit a; when '1' => ...; when others => null; end case; end loop a; |
? | ○ | 無限にループを繰り返す。 ループを抜け出すときは例のようにexitを利用する。 processの中で利用する。 |
a: for i in 0 to num generate ...; end generate a; |
○ | 多分○ | numで指定された数までiを増加させながら繰り返すことによって、 「...」で指定された部品を繰り返した数だけ作る。 同じような部品を数多く生成する場合は便利である。 なお、必ずユニット名を指定する(ここでは「a」としている)。 processの外で利用する。 |
構文 | Quartus/ Max+plus | ModelSim | 意味 |
---|---|---|---|
assert 条件 report "Message." severity WARNING |
× | ○ | 条件が負のとき警告を行う。(FALSEと書くと必ず警告が起こる。) severityには重要度を記述する。 FATAL … 重大エラー FAILURE … 失敗 ERROR … エラー WARNING … 警告 NOTE … 注意 下に行くほどが重要度が低い。 |
assert 条件 report "Message." |
× | ○ | 上記のseverityを省略した形。 ERRORと同じ重要度になる。 |
例 | Quartus/ Max+plus | ModelSim | 意味 |
---|---|---|---|
type testa_add_record_t is record a : std_logic_vector(7 downto 1); b : std_logic_vector(7 downto 1); cin : std_logic; s : std_logic_vector(7 downto 1); cout : std_logic; end record; |
多分○ | ○ | 構造体。 |
type test_add_array_t is array(positive range <>) of testa_add_record_t; | 多分○ | ○ | 配列。 positive range <>は必要な数だけ作るという意味(だと思う)。 Quartus や Max+plus ではこれを使えるかどうかは不明。 |
CD\AB | 00 | 01 | 11 | 10 |
---|---|---|---|---|
00 | 0 | 0 | 1 | 0 |
01 | 1 | 1 | Φ | Φ |
11 | 0 | Φ | Φ | 1 |
10 | 0 | 0 | 1 | 0 |
ツール名 | バージョン | 結果 | コメント |
---|---|---|---|
MAX+plus II | 10.1 BASELINE | casecheck.rptを参照。 冗長を0と扱ったと警告が出る。 | |
Quartus II | 2.0 Web Edition Full | casecheck.eqnを参照。 | |
LeonardoSpectrum | OEM2002a Altera NIGHTLY 14 | casecheck.edfを参照。 |