數字表示法
在verilog中主要都是二進位的世界,不像C語言有浮點數、正負數、字元等等
主要只有 2進位 8進位 10進位 16進位 但在儲存方式上都是使用二進位儲存
宣告數字型態主要有分成幾個部分
Ex:
8'b0000_1111
這裡宣告了一個二進位的數字,首先" 8 "代表著幾個位元
" 'b "則是宣告了為2進位表示法
後面的0000_1111則是數值 = 十進位的15
"_"則是方便使用者分辨位元的符號 也可以不寫 像是 8'b00000000
8進位則是使用" o "來表示如 : 9'o175 //8進位最高數字到7
10進位則是使用" d " 如 : 10'd1024 //高位元如果是0可以省略
16進位則是使用" h " 如 : 16'hffff // 16進位最高數字到 f
另外在verilog中有著4種型態的數值 0 1 X Z
0在電路中代表著 LOW 低電位
1在電路中代表著HIGH 高電位
X則是在模擬時使用的資料型態表示 unknown 未知訊號
表示這時不知道是高電位還是低電位
例如 : 同時給予1以及0的訊號就會產生出 X
Z則是代表著高阻抗 也就是浮接的訊號 多在雙向的IO會出現
運算子介紹
在verilog中也有許多運算子可以使用
運算元優先表
----------------------------------
! ~ + - (unary) (highest) 1位元運算 反向 多位元反向 加 減
----------------------------------
** 次方運算 如 2**5 = 32
----------------------------------
* / % 承 除 取餘數
----------------------------------
+ - (binary) 多位元 加 減
----------------------------------
<< >> <<< >>> 位元左移 右移 算數左移 算數右移
----------------------------------
< <= > >= 比較運算 小於 小於等於 大於 大於等於
----------------------------------
== != === !== 比較運算 等於 不等於 算數等於 算術不等於 (算數包含x , z)
----------------------------------
& ^ | 位元運算 等同於邏輯的
----------------------------------
&& 邏輯運算 用在條件與條件之間的關係
----------------------------------
|| 邏輯運算 用在條件與條件之間的關係
----------------------------------
?: (lowest) if else的符號 使用在data flow宣告
----------------------------------
Data Type
在介紹後
wire 顧名思義,主要就是宣告一條線,需要不斷驅動這條線才會有數值,簡單說就是一條電線沒有給電就不會有電
reg 則是宣告一個暫存器,可以儲存數值沒有給值的時候,數值並不會消失
要注意的是,雖說是暫存器,但在不同的地方是會有不同的效果的,後面begavior描述會在解釋
再來宣告的方式主要可以分成 1 位元以及多位元宣告 如
Ex :
wire a; 宣告一個1位元的訊號 a
reg [15:0] b; 宣告一個 16 位元的 b
沒有留言:
張貼留言