色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Verilog語法中運算符的用法

FPGA開源工坊 ? 來源:FPGA開源工坊 ? 2024-10-25 15:17 ? 次閱讀

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

verilog語法中使用以下兩個運算符可以簡化我們的位選擇代碼

+:

-:

這兩個的用法如下

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

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

比如以下使用說明

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

a[7-:8]等價于a[7:0]
a[15-:16]等價于a[15:0]
a[15-:2]等價于a[15:14]

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

假設有一個128bit的數據,怎么方便的將其分割為16個8bit的數據

對一個32比特的數據進行按字節的大小端翻轉

問題一

假設有一個128bit的數據,怎么方便的將其分割為16個8bit的數據

如果要解決上面的問題,我們可以直接手動的進行位選擇,代碼如下:

`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里面的每一個元素都從a里面進行截取,如果bit數比較少的話,可以按上述代碼這樣完成,但是這個代碼看著也很啰嗦,所以可以按照下面的代碼進行改進

`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循環的方式會很方便,以后即使位寬改變了,也僅僅只是在for循環這邊改一下就好

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

問題二

對一個32比特的數據進行按字節的大小端翻轉

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

`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

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

`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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Verilog
    +關注

    關注

    28

    文章

    1351

    瀏覽量

    110234
  • 代碼
    +關注

    關注

    30

    文章

    4816

    瀏覽量

    68873
  • 語法
    +關注

    關注

    0

    文章

    44

    瀏覽量

    9848
  • 運算符
    +關注

    關注

    0

    文章

    172

    瀏覽量

    11095

原文標題:Verilog語法--位選擇運算(+: 和 -:)

文章出處:【微信號:FPGA開源工坊,微信公眾號:FPGA開源工坊】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

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

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

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

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

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

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

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

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

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

    C語言運算符的使用方法

    詳細介紹了C語言表達式、算術運算符、賦值運算符、關系運算符、條件結構、邏輯運算符、位運算符語法
    發表于 11-02 11:30 ?1707次閱讀
    C語言<b class='flag-5'>運算符</b>的使用方法

    算術運算符的相關資料分享

    一:算術運算符算術運算符非常地簡單,就是小學數學里面的一些加減乘除操作。不過呢,還是有一些語法細節需要注意的。1.加法運算符 + 1 在第3行利用加法
    發表于 11-30 06:09

    條件運算符是什么_條件運算符有哪些

    運算符優先級高于賦值、逗號運算符,低于其他運算符。關系運算實際上是邏輯比較運算,它是邏輯運算
    發表于 11-16 16:02 ?1.1w次閱讀
    條件<b class='flag-5'>運算符</b>是什么_條件<b class='flag-5'>運算符</b>有哪些

    條件運算符用法_C運算符的結合方向

    。 每個操作擁有某一級別的優先級,同時也擁有左結合性或右結合性。優先級決定一個不含括號的表達式操作數之間的“緊密”程度。例如,在表達式a*b+c,乘法運算的優先級高于加法
    發表于 02-24 16:36 ?9716次閱讀

    淺析MySQL的各類運算符

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

    python運算符是什么

    python運算符 0. 什么是運算符? 本章節主要說明Python的運算符。舉個簡單的例子 4 +5 = 9 。 例子,4和5被稱為操作數,“+”號為
    的頭像 發表于 02-21 16:44 ?2444次閱讀

    Verilog邏輯設計的循環語句和運算符

    “ 本文主要分享了在Verilog設計過程中一些經驗與知識點,主要包括循環語句(forever、repeat、while和for)、運算符。”
    的頭像 發表于 03-15 11:41 ?5275次閱讀

    C語言中位運算符的基礎用法

    運算符是一組用于在二進制數之間進行操作的運算符
    發表于 08-21 14:52 ?587次閱讀
    C語言中位<b class='flag-5'>運算符</b>的基礎<b class='flag-5'>用法</b>

    verilog的邏輯運算符

    寫在前面 之前曾經整理過verilog的各類運算符的表達方式,但是在學習的過程并未深入研究關于邏輯運算符的相關知識,導致在實際使用過程
    的頭像 發表于 09-21 10:07 ?2544次閱讀
    <b class='flag-5'>verilog</b>的邏輯<b class='flag-5'>運算符</b>

    python運算符的優先級大小

    Python運算符的優先級決定了表達式各個運算符的計算順序。了解運算符的優先級對于正確理解和編寫復雜的表達式非常重要。本文將詳細介紹Py
    的頭像 發表于 11-29 16:21 ?3512次閱讀
    主站蜘蛛池模板: 无码毛片内射白浆视频| eussse手机电影在线观看| 水蜜桃亚洲一二三四在线| 970女主播电台歌曲| 久久兔费黄A级毛片高清| 亚洲色图在线观看视频| SM调教贱屁股眼哭叫求饶H| 奶大B紧17p| 97人妻碰视频在线观看| 女人被躁到高潮嗷嗷叫69| MD传媒MD0021在线观看| 日本高清无人区影院| 性色AV乱码一区二区三区视频| 陈红下面又紧又小好爽| 久久国产亚洲电影天堂| 伊人久久大香线蕉综合亚洲| 精品久久久噜噜噜久久久app| 欧美性受xxxx狂喷水| yellow2019在线观看视频| 人与畜禽CROPROATION免费| 国产AV电影区二区三区曰曰骚网| 色噜噜狠狠色综合中文字幕| 国产精品亚洲精品久久品| 亚洲欧洲日韩天堂无吗| 久久这里只有精品国产99| 999久久国产精品免费人妻| 日本粉嫩学生毛绒绒| 父亲猜女儿在线观看| 美女被爽cao免费漫画| xart欧美一区在线播放| 伸到同桌奶罩里捏她胸h| 国模精品一区二区三区视频| 色jie戒电影| 国产在线高清视频无码不卡| 在线观看a视频| 欧美精品99久久久啪啪| 国产成人午夜精品免费视频| 色琪琪丁香婷婷综合久久| 国产日韩成人内射视频| 中文字幕在线观看网站| 精品国产高清自在线看|