一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Verilog語法中運(yùn)算符的用法

FPGA開源工坊 ? 來源:FPGA開源工坊 ? 2024-10-25 15:17 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Verilog語法--位選擇運(yùn)算(+: 和 -:)

verilog語法中使用以下兩個(gè)運(yùn)算符可以簡化我們的位選擇代碼

+:

-:

這兩個(gè)的用法如下

wire[7:0]a;
a[base_addr+:width]
a[base_addr-:width]

其中base_addr指的是起始選擇位,width指的是選擇的位寬

比如以下使用說明

wire[31:0]a;
a[0+:8]等價(jià)于a[7:0]
a[0+:16]等價(jià)于a[15:0]
a[16+:8]等價(jià)于a[23:16]

a[7-:8]等價(jià)于a[7:0]
a[15-:16]等價(jià)于a[15:0]
a[15-:2]等價(jià)于a[15:14]

這樣寫有什么好處呢,比如下面兩個(gè)使用場景

假設(shè)有一個(gè)128bit的數(shù)據(jù),怎么方便的將其分割為16個(gè)8bit的數(shù)據(jù)

對一個(gè)32比特的數(shù)據(jù)進(jìn)行按字節(jié)的大小端翻轉(zhuǎn)

問題一

假設(shè)有一個(gè)128bit的數(shù)據(jù),怎么方便的將其分割為16個(gè)8bit的數(shù)據(jù)

如果要解決上面的問題,我們可以直接手動(dòng)的進(jìn)行位選擇,代碼如下:

`timescale1ns/1ps
moduletb(

);
wire[127:0]a;
wire[7:0]b[15:0];

assigna={8'd1,8'd2,8'd3,8'd4,8'd5,8'd6,8'd7,8'd8,8'd9,8'd10,8'd11,8'd12,8'd13,8'd14,8'd15,8'd16};

assignb[0]=[7:0];
assignb[1]=[15:8];
assignb[2]=[23:16];
assignb[3]=[31:24];
assignb[4]=[39:32];
assignb[5]=[47:40];
assignb[6]=[55:48];
assignb[7]=[63:56];
assignb[8]=[71:64];
assignb[9]=[79:72];
assignb[10]=[87:80];
assignb[11]=[95:88];
assignb[12]=[103:96];
assignb[13]=[111:104];
assignb[14]=[119:112];
assignb[15]=[127:120];
endmodule

為了方便觀察,我們將a的值賦值為1到16的特殊值,下面b里面的每一個(gè)元素都從a里面進(jìn)行截取,如果bit數(shù)比較少的話,可以按上述代碼這樣完成,但是這個(gè)代碼看著也很啰嗦,所以可以按照下面的代碼進(jìn)行改進(jìn)

`timescale1ns/1ps
moduletb(

);
wire[127:0]a;
wire[7:0]b[15:0];
genvari;

assigna={8'd1,8'd2,8'd3,8'd4,8'd5,8'd6,8'd7,8'd8,8'd9,8'd10,8'd11,8'd12,8'd13,8'd14,8'd15,8'd16};

generate
for(i=0;i

可以看到使用位選擇加for循環(huán)的方式會(huì)很方便,以后即使位寬改變了,也僅僅只是在for循環(huán)這邊改一下就好

e6e92a54-9291-11ef-a511-92fbcf53809c.png

問題二

對一個(gè)32比特的數(shù)據(jù)進(jìn)行按字節(jié)的大小端翻轉(zhuǎn)

最直接的代碼可以按下面這樣寫

`timescale1ns/1ps
moduletb(

);
wire[31:0]a;
wire[31:0]b;

assigna={8'd1,8'd2,8'd3,8'd4};

assignb={a[7:0],a[8:15],a[23:16],a[31:24]};
endmodule

當(dāng)位寬比較小的時(shí)候可以按上面的方式進(jìn)行,如果位寬比較大的話,上面的這種方法就顯得很冗余了,我們就可以使用位選擇的方式來進(jìn)行賦值

`timescale1ns/1ps
moduletb(

);
wire[31:0]a;
wire[31:0]b;

genvari;

assigna={8'd1,8'd2,8'd3,8'd4};

generate
for(i=0;i

e6f70cf0-9291-11ef-a511-92fbcf53809c.png

可以看到正確的完成了我們的需求

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • Verilog
    +關(guān)注

    關(guān)注

    29

    文章

    1366

    瀏覽量

    112043
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4893

    瀏覽量

    70442
  • 語法
    +關(guān)注

    關(guān)注

    0

    文章

    44

    瀏覽量

    10124
  • 運(yùn)算符
    +關(guān)注

    關(guān)注

    0

    文章

    173

    瀏覽量

    11411

原文標(biāo)題:Verilog語法--位選擇運(yùn)算(+: 和 -:)

文章出處:【微信號(hào):FPGA開源工坊,微信公眾號(hào):FPGA開源工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    C語言中位運(yùn)算符的高級用法(1)

    在上一篇文章,我們介紹了&運(yùn)算符的基礎(chǔ)用法,本篇文章,我們將介紹& 運(yùn)算符的一些高級用法
    發(fā)表于 08-22 10:44 ?494次閱讀
    C語言中位<b class='flag-5'>運(yùn)算符</b>的高級<b class='flag-5'>用法</b>(1)

    C語言中位運(yùn)算符的高級用法(2)

    在上一篇文章,我們介紹了&運(yùn)算符的高級用法,本篇文章,我們將介紹| 運(yùn)算符的一些高級用法
    發(fā)表于 08-22 10:45 ?470次閱讀
    C語言中位<b class='flag-5'>運(yùn)算符</b>的高級<b class='flag-5'>用法</b>(2)

    C語言中位運(yùn)算符的高級用法(3)

    在上一篇文章,我們介紹了|運(yùn)算符的高級用法,本篇文章,我們將介紹^ 運(yùn)算符的一些高級用法
    發(fā)表于 08-22 10:47 ?391次閱讀
    C語言中位<b class='flag-5'>運(yùn)算符</b>的高級<b class='flag-5'>用法</b>(3)

    C語言中位運(yùn)算符的高級用法(4)

    在上一篇文章,我們介紹了^運(yùn)算符的高級用法,本篇文章,我們將介紹~ 運(yùn)算符的一些高級用法
    發(fā)表于 08-22 10:48 ?323次閱讀
    C語言中位<b class='flag-5'>運(yùn)算符</b>的高級<b class='flag-5'>用法</b>(4)

    C語言中位運(yùn)算符的高級用法(5)

    在上一篇文章,我們介紹了~運(yùn)算符的高級用法,本篇文章,我們將介紹
    發(fā)表于 08-22 10:49 ?488次閱讀
    C語言中位<b class='flag-5'>運(yùn)算符</b>的高級<b class='flag-5'>用法</b>(5)

    C語言運(yùn)算符的使用方法

    詳細(xì)介紹了C語言表達(dá)式、算術(shù)運(yùn)算符、賦值運(yùn)算符、關(guān)系運(yùn)算符、條件結(jié)構(gòu)、邏輯運(yùn)算符、位運(yùn)算符語法
    發(fā)表于 11-02 11:30 ?2305次閱讀
    C語言<b class='flag-5'>運(yùn)算符</b>的使用方法

    條件運(yùn)算符是什么_條件運(yùn)算符有哪些

    運(yùn)算符優(yōu)先級高于賦值、逗號(hào)運(yùn)算符,低于其他運(yùn)算符。關(guān)系運(yùn)算實(shí)際上是邏輯比較運(yùn)算,它是邏輯運(yùn)算
    發(fā)表于 11-16 16:02 ?1.1w次閱讀
    條件<b class='flag-5'>運(yùn)算符</b>是什么_條件<b class='flag-5'>運(yùn)算符</b>有哪些

    單目運(yùn)算符是什么_單目運(yùn)算符有哪些

    單目運(yùn)算符是指運(yùn)算所需變量為一個(gè)的運(yùn)算符,又叫一元運(yùn)算符,其中有邏輯非運(yùn)算符:!、按位取反運(yùn)算符
    的頭像 發(fā)表于 02-24 15:42 ?6.1w次閱讀
    單目<b class='flag-5'>運(yùn)算符</b>是什么_單目<b class='flag-5'>運(yùn)算符</b>有哪些

    條件運(yùn)算符用法_C運(yùn)算符的結(jié)合方向

    。 每個(gè)操作擁有某一級別的優(yōu)先級,同時(shí)也擁有左結(jié)合性或右結(jié)合性。優(yōu)先級決定一個(gè)不含括號(hào)的表達(dá)式操作數(shù)之間的“緊密”程度。例如,在表達(dá)式a*b+c,乘法運(yùn)算的優(yōu)先級高于加法
    發(fā)表于 02-24 16:36 ?9831次閱讀

    淺析MySQL的各類運(yùn)算符

    MySQL支持多種運(yùn)算符,我們在寫SQL腳本時(shí)經(jīng)常會(huì)需要用到各種各樣的運(yùn)算符,這些運(yùn)算符可以用來連接表達(dá)式,進(jìn)而從數(shù)據(jù)庫查詢我們需要的結(jié)果集等。這些類型主要包括算術(shù)
    的頭像 發(fā)表于 05-03 17:41 ?2273次閱讀
    淺析MySQL<b class='flag-5'>中</b>的各類<b class='flag-5'>運(yùn)算符</b>

    python運(yùn)算符是什么

    python運(yùn)算符 0. 什么是運(yùn)算符? 本章節(jié)主要說明Python的運(yùn)算符。舉個(gè)簡單的例子 4 +5 = 9 。 例子,4和5被稱為操作數(shù),“+”號(hào)為
    的頭像 發(fā)表于 02-21 16:44 ?2683次閱讀

    Verilog邏輯設(shè)計(jì)的循環(huán)語句和運(yùn)算符

    “ 本文主要分享了在Verilog設(shè)計(jì)過程中一些經(jīng)驗(yàn)與知識(shí)點(diǎn),主要包括循環(huán)語句(forever、repeat、while和for)、運(yùn)算符?!?/div>
    的頭像 發(fā)表于 03-15 11:41 ?5558次閱讀

    C語言中位運(yùn)算符的基礎(chǔ)用法

    運(yùn)算符是一組用于在二進(jìn)制數(shù)之間進(jìn)行操作的運(yùn)算符
    發(fā)表于 08-21 14:52 ?832次閱讀
    C語言中位<b class='flag-5'>運(yùn)算符</b>的基礎(chǔ)<b class='flag-5'>用法</b>

    verilog的邏輯運(yùn)算符

    寫在前面 之前曾經(jīng)整理過verilog的各類運(yùn)算符的表達(dá)方式,但是在學(xué)習(xí)的過程并未深入研究關(guān)于邏輯運(yùn)算符的相關(guān)知識(shí),導(dǎo)致在實(shí)際使用過程錯(cuò)
    的頭像 發(fā)表于 09-21 10:07 ?3227次閱讀
    <b class='flag-5'>verilog</b>的邏輯<b class='flag-5'>運(yùn)算符</b>

    python運(yùn)算符的優(yōu)先級大小

    Python運(yùn)算符的優(yōu)先級決定了表達(dá)式各個(gè)運(yùn)算符的計(jì)算順序。了解運(yùn)算符的優(yōu)先級對于正確理解和編寫復(fù)雜的表達(dá)式非常重要。本文將詳細(xì)介紹Py
    的頭像 發(fā)表于 11-29 16:21 ?4144次閱讀