【文章】MDY常用的數(shù)據(jù)選擇語(yǔ)句
本文為明德?lián)P原創(chuàng)及錄用文章,轉(zhuǎn)載請(qǐng)注明出處!
? ? Verilog語(yǔ)法中有一個(gè)常用的選擇語(yǔ)句,其語(yǔ)法形式為:
? ? vect[a +: b]或vect [a -: b];
? ? vect為變量名字,a為起始位置,加號(hào)或者減號(hào)代表著升序或者降序,b是進(jìn)行升序或者降序的寬度。
? ? vect[a +: b]等同于vect[a : a+b-1],vect的區(qū)間從a開始,往比a大的方向數(shù)b個(gè)數(shù);vect [a -: b]等同于vect[a : a-b+1],vect的區(qū)間從a開始,往比a小的方向數(shù)b個(gè)數(shù)。a可以是一個(gè)常數(shù)也可以是一個(gè)可變的數(shù),但b必須是一個(gè)常數(shù)。
? ? 例1:vect[7 +: 3];
? ? 其中,起始位置為7,+代表著升序,寬度為3。即從7開始往比7大的方向數(shù)3個(gè)數(shù)。其等價(jià)形式為:vect[7 +: 3]==vect[7 : 9]。
? ???例2:vect[9 -: 4];
? ? 其中,起始位置為9,-代表著降序,寬度為4。即從9開始往比9小的方向數(shù)4個(gè)數(shù)。其等價(jià)形式為:vect[9 -: 4]==vect[9 : 6]。
? ? 在實(shí)際使用的過程中,這個(gè)語(yǔ)法最常用的形式是將a作為一個(gè)可變的數(shù)來使用。例如需要設(shè)計(jì)如下代碼:
? ? assign data[15-8*cnt -: 8] <= din[7:0]
? ? 當(dāng)cnt==0時(shí),將din[7:0]賦值給data[15:8];當(dāng)cnt==1時(shí)將din[7:0]賦值給data[7:0]。
? ? 在設(shè)計(jì)的時(shí)候便可以寫成:(這里需要把15-8*cnt看成一個(gè)整體a,它是一個(gè)隨著cnt變化而變化的數(shù))。這樣就可以精簡(jiǎn)我們的代碼了。
? ? 筆者經(jīng)驗(yàn):在實(shí)際工程中可以多多使用選擇語(yǔ)句vect[a +: b]或vect [a -: b]的形式來寫代碼,這將有助于精簡(jiǎn)設(shè)計(jì)代碼。