9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Verilog HDLでの回路記述で用いる数値表現と演算子 (授業用)

Posted at

数値表現

数値はビット幅と基数を指定して表現する。
基数は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 となる。

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?