<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Verilog HDL基礎知識2之運算符

Verilog HDL基礎知識2之運算符

作者: 時(shí)間:2024-02-19 來(lái)源:電子森林 收藏

Verilog HDL 介紹

本文引用地址:http://dyxdggzs.com/article/202402/455478.htm
算術(shù)

首先我們介紹的是算術(shù),所謂算術(shù)邏輯運算符就是我們常說(shuō)的加、減、乘、除等,這類(lèi)運算符的抽象層級較高,從數字邏輯電路實(shí)現上來(lái)看,它們都是基于與、或、非等基礎門(mén)邏輯組合實(shí)現的,如下。


  1. /是除法運算,在做整數除時(shí)向零方向舍去小數部分。
  2. %是取模運算,只可用于整數運算,而其他操作符既可用于整數運算,也可用于實(shí)數運算。

例子:我們在生成時(shí)鐘的時(shí)候,必須需選擇合適的timescale和precision。當我們使用“PERIOD/2”計算延遲的時(shí)候,必須保證除法不會(huì )舍棄小數部分,所以實(shí)際上我們應該使用實(shí)數除法“PERIOD/2.0”。

parameter PERIOD=15;initial begin clk <= 0; forever #(PERIOD/2) clk = ~clk; 
end  // Not correctinitial begin clk <= 0; forever #(PERIOD/2.0) clk = ~clk; 
end  // Not correct

關(guān)系運算符

關(guān)系運算符主要是用來(lái)做一些條件判斷用的,在進(jìn)行關(guān)系運算符時(shí),如果聲明的關(guān)系是假的,則返回值是 0,如果聲明的關(guān)系是真的,則返回值是 1;所有的關(guān)系運算符有著(zhù)相同的優(yōu)先級別,關(guān)系運算符的優(yōu)先級別低于算術(shù)運算符的優(yōu)先級別。如下。

邏輯運算符

邏輯運算符是連接多個(gè)關(guān)系表達式用的,可實(shí)現更加復雜的判斷,一般不單獨使用,都需要配合具體語(yǔ)句來(lái)實(shí)現完整的意思,如下。

條件運算符

Verilog 語(yǔ)言為了讓連續賦值的功能更加完善,于是又從 C 語(yǔ)言中引入了條件操作符來(lái)構建從兩個(gè)輸入中選擇一個(gè)作為輸出的條件選擇結構,功能等同于 always 中的 if-else 語(yǔ)句,如下。


例子:使用?:。wire [15:0] bus = bus_enable ? drive ? bus_data : 16'bz;
wire [7:0] data = (sel_a ? data_a :
                   sel_b ? data_b :
                   sel_c ? data_c : 8'bz);
位運算符

位運算符是一類(lèi)最基本的運算符,可以認為它們直接對應數字邏輯中的與、或、非門(mén)等邏輯門(mén)。

位運算符的與、或、非與邏輯運算符邏輯與、邏輯或、邏輯非,雖然它們處理的數據類(lèi)型不一樣,但是從硬件實(shí)現角度上來(lái)說(shuō),它們沒(méi)有區別的,如下。

移動(dòng)位運算符

在 Verilog 中有兩種移位運算符:左移位運算符和右移位運算符,這兩種移位運算符都用 0來(lái)填補移出的空位。如下。


例子:<<操作。
//In this example, the reg result is assigned the binary value 0100,
// which is 0001 shifted to the left two positions and zero-filled.module shift;
  reg [3:0] start, result;
  initial begin
    start = 1;
    result = (start << 2);
  endendmodule
拼接位運算符

在 Verilog 中有一個(gè)特殊的運算符,就是我們的位拼接運算符。用這個(gè)運算符可以把兩個(gè)或多個(gè)信號的某些位拼接起來(lái)進(jìn)行運算操作。如下。


例子:連接操作。
{a, b[3:0], w, 3'b101}
等價(jià)于
{a, b[3], b[2], b[1], b[0], w, 1'b1, 1'b0, 1'b1}
例子:復制操作。
{4{w}}          // This yields the same value as {w, w, w, w}。
{b, {3{a, b}}}  // This yields the same value as {b, a, b, a, b, a, b}。
運算符的優(yōu)先級

運算符一多,必然涉及到優(yōu)先級的問(wèn)題,為了便于大家查看這些運算符的優(yōu)先級,我們將它們制作成了表格,如下。



關(guān)鍵詞: FPGA verilog HDL 運算符

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>