




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第二章Verilog語法的基本概念VerilogHDL是一種用于數(shù)字系統(tǒng)設計的語言。用VerilogHDL描述的電路設計就是該電路的VerilogHDL模型(模塊)。Verilog模型可以是實際電路的不同級別的抽象。行為描述:系統(tǒng)級、算法級、RTL級結構描述:門級、開關級2/4/20231Verilog的應用系統(tǒng)級(system):用高級語言結構實現(xiàn)設計模塊的外部性能的模型。算法級(algorithmic):用高級語言結構實現(xiàn)設計算法的模型。RTL級(RegisterTransferLevel):描述數(shù)據(jù)在寄存器之間流動和如何處理這些數(shù)據(jù)的模型。門級(gate-level):描述邏輯門以及邏輯門之間的連接的模型。開關級(switch-level):描述器件中三極管和儲存節(jié)點以及它們之間連接的模型。行為級描述modulemuxtwo(out,a,b,sl);input
a,b,sl;output
out;
regout;
always@(sloraorb)
if(!sl)out=a;
elseout=b;endmoduleabslout門級描述modulemuxtwo(out,a,b,sl);input
a,b,sl;output
out;
notu1(ns1,sl);and#1u2(sela,a,nsl);
and#1u3(selb,b,sl);
or#2u4(out,sela,selb);endmoduleoutabslselbselanslu2u3
u4
u1RTL級描述modulemuxtwo(out,a,b,sl,clk);input
a,b,sl;output
out;
regout,s;
always@(posedgeclk) out<=s;
always@(sloraorb)
if(!sl)s=a;
elses=b;endmoduleabsloutclk行為級和RTL級RTL模塊的數(shù)據(jù)流動必須基于時鐘。RTL模塊在每個時鐘的沿時刻,其變量的值必定是精確的。RTL模塊是可綜合的,它是行為模塊的一個子集合。該行為描述并沒有說明如果輸入a或b是三態(tài)的(高阻時)輸出應該是什么,但有實際電路是有一定的輸出的。abslout簡單的VerilogHDL模塊例:moduleadder(count,sum,a,b,cin);
input[2:0]a,b;
inputcin;
outputcount;
output[2:0]sum;
assign{count,sum}=a+b+cin;
endmodule
簡單的VerilogHDL模塊modulecompare(equal,a,b);outputequal;//聲明輸出信號equalinput[1:0]a,b;//聲明輸入信號a,b
assignequal=(a==b)?1:0;
/*如果兩個輸入信號相等,輸出為1。否則為0*/endmodule/*........*/和//.........表示注釋部分一個復雜電路的完整VerilogHDL模型是由若個VerilogHDL模塊構成的,每一個模塊又可以由若干個子模塊構成。
利用VerilogHDL語言結構所提供的這種功能就可以構造一個模塊間的清晰層次結構來描述極其復雜的大型設計。VerilogHDL行為描述語言作為一種結構化和過程性的語言,其語法結構非常適合于算法級和RTL級的模型設計。這種行為描述語言具有以下八項功能:Verilog的應用可描述順序執(zhí)行或并行執(zhí)行的程序結構。用延遲表達式或事件表達式來明確地控制過程的啟動時間。通過命名的事件來觸發(fā)其它過程里的激活行為或停止行為。提供了條件、if-else、case、循環(huán)程序結構。提供了可帶參數(shù)且非零延續(xù)時間的任務(task)程序結構。提供了可定義新的操作符的函數(shù)結構(function)。Verilog的應用提供了用于建立表達式的算術運算符、邏輯運算符、位運算符。VerilogHDL語言作為一種結構化的語言也非常適合于門級和開關級的模型設計。VerilogHDL的構造性語句可以精確地建立信號的模型。這是因為在VerilogHDL中,提供了延遲和輸出強度的原語來建立精確程度很高的信號模型。信號值可以有不同的的強度,可以通過設定寬范圍的模糊值來降低不確定條件的影響。Verilog的應用第三章常用Verilog語法之一模塊結構數(shù)據(jù)類型變量、基本的運算符號2/4/202314模塊的結構Verilog的基本設計單元是“模塊”(block)。一個模塊是由兩部分組成的:描述接口;描述邏輯功能,即定義輸入是如何影響輸出的。從上面的例子可以看出:-Verilog模塊結構完全嵌在module和endmodule聲明語句之間;每個Verilog程序包括四個主要部分:端口定義I/O說明內部信號聲明功能定義模塊的結構模塊的端口定義module模塊名(口1,口2,口3,…
)模塊的端口表示的是模塊的輸入輸出口名,它與別的模塊聯(lián)系端口的標識。2/4/202317modulecompare(equal,a,b);
。。。。endmodule模塊內容輸入口:input[信號位寬-1:0]端口名1;input[信號位寬-1:0]端口名2;輸出口:output[信號位寬-1:0]端口名1;output[信號位寬-1:0]端口名2;輸入/輸出口: inout[信號位寬-1:0]端口名1;inout[信號位寬-1:0]端口名2;2/4/202318I/O說明I/O說明也可以寫在端口聲明語句里modulemodule_name(inputport1,…,outputport1,….)
2/4/202319模塊內容I/O說明模塊內容模塊內部用到的與端口有關的wire和reg類型變量的聲明reg[width-1:0]R1,R2;wire[width-1:0]W1,W2;
2/4/202320內部信號聲明模塊內容功能定義:定義邏輯功能
用assign聲明語句 assigna=b&c;
用實例元件 and#2ul(q,a,b);ul為與門,輸入a,b,輸出q,輸出延遲2個時間單位2/4/202321模塊內容功能定義:定義邏輯功能用always塊(過程塊,proceduralblock)always@(posedgeclkorposedgeclr)beginif(clr)q<=0;elseif(en)q<=d;end;2/4/202322模塊內容功能定義:定義邏輯功能assign語句是描述組合邏輯常用方法;always可用于描述組合邏輯和時序邏輯;assign,always,實例化描述的邏輯功能是同時(并行)執(zhí)行;在always模塊內,邏輯是順序執(zhí)行的。但是不同的always模塊式并行執(zhí)行的。2/4/202323modulemu1(a,q,q2,b,c);inputb,c;outputq,q2,a;
assigna=b&c;
and#2ul(q,c,b);
always@(b,c)beginq2<=b&c;end;
endmodule模塊的引用嚴格按照模塊定義的端口順序來連接,不用標明原模塊定義時的端口名:
模塊名(連接端口1信號名,連接端口2信號名,….)在引用時用“.”符號,標明原模塊定義時規(guī)定的端口名.模塊名(.端口1名(連接信號1名),.端口2名(連接信號2名,….)2/4/202325要點總結Verilog模塊中所有過程塊(如initial,always)、連續(xù)賦值語句、實例引用都是并行的;它們表示的是一種通過變量名互相連接的關系;
在同一模塊中這三者出現(xiàn)的先后順序沒有關系;只有連續(xù)賦值語句和實例引用語句可以獨立于過程塊(always,initial)而存在于模塊的功能定義部分。2/4/2023263.2數(shù)據(jù)類型及其常量和變量VerilogHDL中總共有19種數(shù)據(jù)類型。數(shù)據(jù)類型是表示數(shù)字電路中的數(shù)據(jù)存儲和傳送元素的。2/4/202329常量數(shù)字——整數(shù)
二進制(b,B),十進制(d,D),十六進制(h,H),八進制(o,O)表示方法:<位寬>’<進制><數(shù)字>
<進制><數(shù)字>,默認32位
<數(shù)字>,默認32位,十進制8’b10101100,8’ha2,2/4/202330常量數(shù)字——x和z
x——不定值;z——高阻值,也可用?表示4’b10x0,4’b101z,12’dz,12’d?,8’h4x2/4/202331常量數(shù)字——負數(shù)在數(shù)字表達式的前面加‘-’-8’d52/4/202332常量數(shù)字——下劃線(underscore_)用來分割數(shù)的表達以提高程序可讀性,但不可以用在位寬和進制處,只能用在具體的數(shù)字之間16’b1010_1011_1111_10102/4/202333常量當常量不說明位數(shù)時,默認值是32位,10=32’d10,-1=-32’d1=32’hFFFF_FFFF
’BX=32’BX=32’BXXXX…X每個字母用8位的ASCII值表示
“AB”=16’B01000001_010000102/4/202334參數(shù)型(parameter)常量可以用parameter來定義常量,即用parameter定義一個標識符代表一個常量,稱為符號常量,即標識符形式的常量parameter參數(shù)名1=表達式,參數(shù)名2=表達式;
注意:表達式必須是常數(shù)表達式,只能包含數(shù)字或先前已定義過的參數(shù)parametermsb=7,e=25;parameterbyte_size=8,byte_msb=byte_size-1;2/4/202335參數(shù)型(parameter)參數(shù)型常數(shù)用來定義延遲時間和變量寬度。在模塊或實例引用時,可通過參數(shù)傳遞改變在被引用模塊或者實例中已定義的參數(shù)。2/4/202336參數(shù)型(parameter)例:moduleDecode(A,F);parameterWidth=1,Polarity=1;
……endmodulemoduleTopwire[3:0]A4;wire[15:0]F16;Decode#(4,0)D1(A4,F16);Decode#(5)
D2(A4,F16);endmodule2/4/202337變量在程序運行過程中其值可以改變的量。變量數(shù)據(jù)類型(variabledatatype),用來暫存數(shù)據(jù),在過程中被賦值的變量。可在initialprocedure,alwaysprocedure,task,function中被賦值。未被初始化時,默認值為X。默認為unsigned類型,除非指定為signed類型。默認位寬為1bit。變量網(wǎng)絡數(shù)據(jù)類型(netdatatype)表示結構實體之間的物理連接,不能儲存值,而且必須受到驅動器的驅動。如果沒有驅動器連接到網(wǎng)絡類型的變量上,則該變量就是高阻值z。Wire:表示單個門驅動或者連續(xù)賦值語句驅動的網(wǎng)絡類型數(shù)據(jù)。Tri:表示多驅動源(器)驅動的網(wǎng)絡類型數(shù)據(jù)。變量Wire:常用來表示以assign關鍵字指定的組合邏輯信號。Verilog中輸入、輸出信號類型默認時自動定義為wire型。Wire信號可以用作任何方程式的輸入可用作assign語句或實例元件的輸出。
wire[n-1:0]b,a;定義了兩條總線b、a,每條總線寬度為nbits;變量reg型:寄存器數(shù)據(jù)類型,默認初始值為不定值x。reg型數(shù)據(jù)常用來表示always模塊內的指定信號,代表觸發(fā)器。在always內被賦值的每一個信號都必須定義成reg型。
reg[n-1:0]數(shù)據(jù)名1,數(shù)據(jù)名2;
reg[n:1]數(shù)據(jù)名1,數(shù)據(jù)名2;reg[3:0]regb;reg[4:1]regc,regd;變量reg型數(shù)據(jù),其賦值語句的作用就如同改變一組觸發(fā)器的存儲單元的值;reg型數(shù)據(jù)的默認值是x,reg型數(shù)據(jù)可以賦正值、負值,若為表達式的操作數(shù),其值被當作是無符號值。
reg只表示被定義的信號將用在always塊內。memory型:Verilog通過對reg型變量建立數(shù)組來對存儲器建模,RAM型存儲器ROM存儲器reg文件。Memory型數(shù)據(jù)通過擴展reg型數(shù)據(jù)的地址范圍來生成。
reg[n-1:0]存儲器名[m-1:0];
reg[n-1:0]存儲器名[m:1];reg[7:0]mema[255:0];變量對存儲器進行地址索引的表達式必須為常數(shù)表達式,m必須為常數(shù)在同一個數(shù)據(jù)類型聲明語句里,可以同時定義存儲器型數(shù)據(jù)和reg型數(shù)據(jù)。
parameterwordsize=16,memsize=256;reg[wordsize-1:0]mem[memsize-1:0],writereg,readreg;變量注意memory型數(shù)據(jù)與reg型數(shù)據(jù)的不同
reg[n-1:0]rega;定義一個n位的寄存器,regmema[n-1:0];定義一個由n個1位寄存器構成的存儲器組。
rega=0;合法
mema=0;錯誤
mema[2]=0;正確變量3.3運算符及表達式按功能分類:算術運算符(+,-,x,/,%);位運算符(~,&,|,^,^~);邏輯運算符(&&,||,!);關系運算符(>,<,>=,<=);移位運算符(<<,>>);拼接運算符({});條件運算符(?:);賦值運算符(=,<=);
3.3運算符及表達式按運算符所帶的操作數(shù)不同:
單目運算符(unaryoperator):可以帶一個操作數(shù),操作數(shù)放在運算符的右邊;
雙目運算符(binaryoperator):可以帶兩個操作數(shù),操作數(shù)放在運算符的兩邊;三目運
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 黑龍江省哈爾濱市平房區(qū)2024-2025學年四下數(shù)學期末達標檢測試題含解析
- 黑龍江省哈爾濱第九中學2025屆高三下學期第五次半月練語文試題試卷含解析
- 有效備考國際物流師的策略與試題及答案
- 黑龍江省重點中學2024-2025學年中考物理試題必刷模擬卷含解析
- 黑龍江省鶴崗市工農(nóng)區(qū)鶴崗一中2025屆高三接軌考試英語試題理試題含解析
- 黑龍江財經(jīng)學院《基礎寫作A(一)》2023-2024學年第一學期期末試卷
- 全媒體運營發(fā)展趨勢試題及答案
- 2024年3月空間語義理論優(yōu)化《阿房宮賦》虛擬教學
- 齊齊哈爾醫(yī)學院《外科學總論A》2023-2024學年第二學期期末試卷
- 衡水中學高三上學期一調考試歷史試題
- 儲能站施工組織設計施工技術方案(技術標)
- 樓梯 欄桿 欄板(一)22J403-1
- 北京市海淀區(qū)2024年七年級下學期語文期中試卷(附答案)
- 2024年湖北職業(yè)技術學院高職單招(英語/數(shù)學/語文)筆試歷年參考題庫含答案解析
- 《阿Q正傳》《邊城》比較閱讀課件28張 統(tǒng)編版高中語文選擇性必修下冊
- 2023年小學語文教師學科專業(yè)知識考試試題及答案
- GB/T 24186-2022工程機械用高強度耐磨鋼板和鋼帶
- GB/T 7702.5-1997煤質顆?;钚蕴吭囼灧椒ㄋ萘康臏y定
- 變電站一鍵順控操作過程常見異常與處置措施探討
- 六年級下冊語文人教部編版課件綜合性學習:奮斗的歷程(課件)
- 人工呼吸的三種方式和操作方法課件
評論
0/150
提交評論