数値表現
数値はビット幅と基数を指定して表現する。
基数はb(2進)、o(8進)、d(10進)、h(16進)で指定する。基数の指定が無い場合は10進数とみなされる。
ビット幅を指定しないと32ビットの信号とみなされるため注意すること。(できるだけビット幅は指定すること)
数値表現 | ビット幅 | 基数 | 2進表現 |
---|---|---|---|
1'b0 | 1 | 2進 | 0 |
1'b1 | 1 | 2進 | 1 |
8'b1010_0111 | 8 | 2進 | 10100111 |
8'ha7 | 8 | 16進 | 10100111 |
4'd5 | 4 | 10進 | 0101 |
4'o7 | 4 | 8進 | 0111 |
演算子
回路として論理合成可能な主な演算子を示す。
ビット演算
記号 | 演算 | 使用例 |
---|---|---|
~ | NOT | ~x |
& | AND | x & y |
| | OR | x | y |
^ | XOR | x ^ y |
ビットごとの論理演算を行う。
例えば a = 4'b1011, b = 4'b1100のとき、a & b = 4'b1000となる。
シフト演算
| 記号 | 演算 | 使用例 |
|:---:|:----:|:----:|---|
| << | 論理左シフト | data << shift |
| >> | 論理右シフト | data >> shift |
左辺の信号を、右辺で指定されたビット数分だけ論理シフトする。
例えば、data = 8'b10110110 のとき、data << 3'd3 = 8'b10110000 となる。
算術演算
| 記号 | 演算 | 使用例 |
|:---:|:----:|:----:|---|
| + | 加算 | x + y |
| - | 減算 | x - y |
算術演算を行う。
例えば a = 4'b1001, b = 4'b0011 のとき、a + b = 5'b01100 となる。
関係演算
| 記号 | 演算 | 使用例 |
|:---:|:----:|:----:|---|
| < | 小なり | x < y |
| <= | 小なりイコール | x <= y |
| > | 大なり | x > y |
| >= | 大なりイコール | x >= y |
| == | 一致 | x == y |
| != | 不一致 | x != y |
左辺と右辺のデータ間で指定された関係が成り立つかを判定する。
結果は1ビットの値を持ち、成立する時は1、不成立のときは0となる。
例えば x = 4'b0111, y = 4'b0101のとき、x > y = 1'b1 となる。
その他
| 記号 | 演算 | 使用例 |
|:---:|:----:|:----:|---|
| ?: | 条件演算 | (sel==1'b0) ? x : y |
| {} | 連結演算 | {x, y} |
条件演算では、最初の信号(?の左側の信号)を条件部として、条件部に1ビットでも1があるときは条件成立として、
2番目の信号(?と:の間)の値を返す。条件が不成立のときは3番目の信号(:の右側)を返す。
例えば、sel = 1'b1, x = 4'b1100, y = 4'b0011 のとき、(sel == 1'b0) ? x : y = 4'b0011 となる。
連結演算は複数の信号を一つに束ねる。
例えば, x = 3'b110, y = 5'b11110のとき、{x, y} = 8'b11011110 となる。