




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
硬件描述語言2023/2/26GUETSchoolofInformation&Communications1第一頁,共三十四頁,2022年,8月28日第二講Verilog語法Verilog模塊moduleVerilog語法要素Verilog數據類型及邏輯系統(tǒng)第二頁,共三十四頁,2022年,8月28日2.1模塊module
1.模塊:是verilog設計中的基本程序結構,定義設計的輸入/出端口,I/O接口的類型和數量.module模塊名(端口列表);端口聲明,參數聲明wire,reg和其它類型的變量聲明數據流語句(assign)低層模塊實例always和initial塊,所有行為語句都在塊內任務和函數
endmodule必須出現可選第三頁,共三十四頁,2022年,8月28日module能夠表示:物理塊,如IC或ASIC單元邏輯塊,如一個CPU設計的ALU部分整個系統(tǒng)每一個模塊的描述從關鍵詞module開始,有一個名稱(如SN74LS74,DFF,ALU等等),由關鍵詞endmodule結束。module內部的5個部分:變量聲明數據流語句低層模塊實例行為描述塊任務和函數每一部分在module內部出現的順序是任意的。一個verilog源文件中可以有多個模塊,且對排列順序不做要求。第四頁,共三十四頁,2022年,8月28日2.端口(Terminal)
端口是模塊與外界環(huán)境交互的接口.例如IC芯片的輸入、輸出引腳就是它的端口。對于外部環(huán)境來講,模塊內部是不可見的,對模塊的調用(實例引用)只能通過其端口進行。這種特點為設計者提供了很大的靈活性:只要接口保持不變,模塊內部的修改并不會影響到外部環(huán)境.我們也常常將端口稱為終端(Terminal)。模塊端口等價于芯片的管腳(pin)模塊通過端口與外部通信第五頁,共三十四頁,2022年,8月28日端口列表和端口聲明端口在模塊名字后的括號中列出端口可以說明為input,output及inout端口等價于硬件的引腳(pin)input輸入端口output輸出端口inout雙向端口端口聲明第六頁,共三十四頁,2022年,8月28日module
adder(cout,sum,a,b,cin);
input[2:0]a,b;
input
cin;
output
cout;
output[2:0]sum;
assign
{cout,sum}=a+b+cin;endmodule例設計三位全加器這個例子描述了一個三位的加法器。從例子中可以看出整個VerilogHDL程序是嵌套在module和endmodule聲明語句里的,只出現了一個assign語句。addersum[2:0]a[2:0]b[2:0]cincout模塊名端口列表端口聲明數據流語句第七頁,共三十四頁,2022年,8月28日例SR觸發(fā)器模塊//SR觸發(fā)器module
SR_FF(Q,Q_n,S,R);outputQ,Q_n;//端口聲明inputS,R;nandn1(Q,S,Q_n);nandn2(Q_n,R,Q);endmodule模塊中的5個部分并沒全部出現,只出現在低層次模塊實例化nand為verilog中的與非門門級原語部件第八頁,共三十四頁,2022年,8月28日D觸發(fā)器模塊//D觸發(fā)器moduleD_FF(d,clk,clr,q,qb);outputq,qb;inputd,clk,clr;regq,qb;//輸出端口q,qb值保存always@(posedgeclk)beginif(clr)q=1’b0;elseq=d;endnot(qb,q);endmodule該模塊內包括always行為塊語句always塊行為描述語句第九頁,共三十四頁,2022年,8月28日高層次模塊對低層次模塊的調用稱為模塊實例化??梢詫⒛K的實例通過端口連接起來構成一個大的系統(tǒng)或元件。實例名是每個對象唯一的標記,通過這個標記可以查看每個實例的內部。實例中端口的次序與模塊定義的次序相同。模塊實例化與調用程序不同。每個實例都是模塊的一個完全的拷貝,相互獨立、并行。3.模塊實例化(moduleinstances)第十頁,共三十四頁,2022年,8月28日在調用模塊時,可以用順序連接和按名連接把模塊定義的端口與外部信號連接起來順序連接:需要連接的信號需要與模塊聲明的端口列表一致;
D_FFd0(d[0],clk,clr,q[0],qb[0]);D_FFd1(d[1],clk,clr,q[1],qb[1]);D_FFd2(d[2],clk,clr,q[2],qb[2]);D_FFd3(d[3],clk,clr,q[3],qb[3]);調用模塊名例化名第十一頁,共三十四頁,2022年,8月28日當設計大規(guī)模系統(tǒng)時,端口太多,記住端口順序不大可能,可以采用按名連接方法。不需要連接的端口直接忽略掉即可D_FFd0(.d(d[0]),.clk(clk),.clr(clr),.q(q[0]),.qb(qb[0]));
D_FFd0(.d(d[0]),.clk(clk),.clr(clr),.q(q[0]));第十二頁,共三十四頁,2022年,8月28日2.2Verilog語法要素標識符關鍵詞空白和注釋常量字符串延時#操作符第十三頁,共三十四頁,2022年,8月28日1.標識符(identifiers)標識符是用戶在描述時給Verilog對象起的名字標識符必須以字母(a-z,A-Z)或(_)開頭,后面可以是字母、數字、($)或(_)。最長可以是1023個字符標識符區(qū)分大小寫,sel和SEL是不同的標識符模塊、端口和實例的名字都是標識符
moduleMUX2_1(out,a,b,sel); outputout; inputa,b,sel; notnot1(sel_,sel); andand1(a1,a,sel_); andand2(b1,b,sel); oror1(out,a1,b1); endmoduleVerilog標識符第十四頁,共三十四頁,2022年,8月28日合法和非法標識符
合法的:shift_reg_abusa_indexbus263非法的:34net//不能用數字開頭a*b_net//不能含有非字母符號*n@263//不能含有非字母符號@1、用有意義的有效的名字如Sum、CPU_addr等。2、用下劃線區(qū)分詞。3、采用一些前綴或后綴,如時鐘采用Clk前綴:Clk_50,Clk_CPU;低電平采用_n后綴:Enable_n;4、統(tǒng)一一定的縮寫如全局復位信號Rst。5、同一信號在不同層次保持一致性,如同一時鐘信號必須在各模塊保持一致。6、參數采用大寫,如SIZE。標識符書寫注意事項:
第十五頁,共三十四頁,2022年,8月28日2.關鍵詞VerilogHDL定義了一系列保留字,叫做關鍵詞。注意只有小寫的關鍵詞才是保留字。例如,標識符always(這是個關鍵詞)與標識符ALWAYS(非關鍵詞)是不同的。alwaysandassignbeginbufbufif0bufif1casecasexcasezcmosdeassigndefaultdefparamdisableedgeelseendendcaseendmoduleendfunctionendprimitiveendspecifyendtableendtaskeventforforceforeverforkfunctionhighz0highz1ififnoneinitialinoutinputintegerjoinlargemacrmodulemediummodulenandnegedgenmosnornotnotif0notif1oroutputparameterpmosposedgeprimitivepull0pull1pulluppulldownrcmosrealrealtimeregreleaserepeatrnmosrpmosrtranrtranif0rtranif1scalaredsmallspecifyspecparamstrong0strong1supply0supply1tabletasktimetrantranif0tranif1tritri0tri1triandtriortriregvectoredwaitwandweak0weak1whilewireworxnorxor第十六頁,共三十四頁,2022年,8月28日3.空白符和注釋moduleMUX2_1(out,a,b,sel);
//Portdeclarationsoutputout;inputsel,//controlinputb,/*datainputs*/a;/*Thenetlistlogicselectsinput”a”whensel=0anditselects”b”whensel=1.*/not(sel_,sel);and(a1,a,sel_),(b1,b,sel);//Whatdoesthis//linedo?or(out,a1,b1);endmodule格式自由使用空白符提高可讀性及代碼組織。Verilog忽略空白符除非用于分開其它的語言標記。多行注釋,在/**/內單行注釋到行末結束第十七頁,共三十四頁,2022年,8月28日4.整數常量和實數常量整數的大小可以定義也可以不定義。整數表示為:
<size>’<base><value>
其中
size:大小,由十進制數表示的位數(bit)表示。缺省為32位
base:數基,可為2(b)、8(o)、10(d)、16(h)進制。缺省為10進制
value:是所選數基內任意有效數字,包括X、Z。實數常量可以用十進制或科學表示法表示。
Verilog中,常量(literals)可是整數也可以是實數12unsizeddecimal(zero-extendedto32bits)'H83aunsizedhexadecimal(zero-extendedto32bits)8'b1100_00018-bitbinary64'hff0164-bithexadecimal(zero-extendedto64bits)9'O179-bitoctal32'bz01xZ-extendedto32bits3’b1010_11013-bitnumber,truncatedto3’b1016.3decimalnotation32e-4scientificnotationfor0.00324.1E3scientificnotationfor4100第十八頁,共三十四頁,2022年,8月28日5.字符串(string)字符串要在一行中用雙引號括起來,也就是不能跨行。字符串中可以使用一些C語言轉義(escape)符,如\t\n可以使用一些C語言格式符(如%b)在仿真時產生格式化輸出:
”Thisisanormalstring””Thisstringhasa\ttabandendswithanewline\n””Thisstringformatsavalue:val=%b”Verilog中,字符串大多用于顯示信息的命令中。Verilog沒有字符串數據類型第十九頁,共三十四頁,2022年,8月28日6.延時說明?!?”用于說明過程(procedural)語句和門的實例的延時,但不能用于模塊的實例化。
moduleMUX2_1(out,a,b,sel); outputout; inputa,b,sel; not#1not1(sel_,sel); and#2and1(a1,a,sel_); and#2and2(b1,b,sel); or#1or1(out,a1,b1); endmodule門延時有很多類名字:門延時(gatedelay),傳輸延時(propagationdelay),固有延時(intrinsicdelay),對象內在延時(intra-objectdelay)第二十頁,共三十四頁,2022年,8月28日7.操作符對數據進行運算,可分為算術操作符關系操作符相等操作符邏輯操作符其它第二十一頁,共三十四頁,2022年,8月28日2.3Verilog的數據類型及邏輯系統(tǒng)學習Verilog邏輯值系統(tǒng)學習Verilog中不同類的數據類型理解每種數據類型的用途及用法數據類型說明的語法學習內容:第二十二頁,共三十四頁,2022年,8月28日1.Verilog采用的四值邏輯系統(tǒng)’0’,Low,False,LogicLow,Ground,VSS,NegativeAssertion‘1’,High,True,LogicHigh,Power,VDD,VCC,PositiveAssertion’X’Unknown:OccursatLogicalWhichCannotbeResolvedConflictHiZ,HighImpedance,Tri-Stated,DisabledDriver(Unknown)第二十三頁,共三十四頁,2022年,8月28日2.主要數據類型Verilog主要有三類(class)數據類型:net(線網):表示器件之間的物理連接register(寄存器):表示抽象存儲元件parameters(參數):運行時的常數(run-timeconstants)第二十四頁,共三十四頁,2022年,8月28日(1)net類的類型(線網)wire類型是最常用的類型,表示物理連線,只有連接功能。wire和tri類型有相同的功能。用戶可根據需要將線網定義為wire或tri以提高可讀性。例如,可以用tri類型表示一個net有多個驅動源?;蛘邔⒁粋€net聲明為tri以指示這個net可以是高阻態(tài)Z(hign-impedance)第二十五頁,共三十四頁,2022年,8月28日net聲明
<net_type>[range][delay]<net_name>[,net_name];
net_type:net類型
range:矢量范圍,以[MSB:LSB]格式
delay:定義與net相關的延時
net_name:net名稱,一次可定義多個net,用逗號分開。舉例:
wirea;
tri[15:0]busa;//16位三態(tài)總線
wire[0:31]w1,w2;//兩個32位wire,MSB為bit0第二十六頁,共三十四頁,2022年,8月28日(2)寄存器類的類型寄存器類有四種數據類型寄存器類型功能
reg可定義的無符號整數變量,可以是標量(1位)或矢量,是最常用的寄存器類型
integer32位有符號整數變量,算術操作產生二進制補碼形式的結果。通常用作不會由硬件實現的的數據處理。real雙精度的帶符號浮點變量,用法與integer相同。time64位無符號整數變量,用于仿真時間的保存與處理realtime與real內容一致,但可以用作實數仿真時間的保存與處理第二十七頁,共三十四頁,2022年,8月28日Verilog中register聲明語法舉例:
rega;//一個標量寄存器
reg[3:0]v;//從MSB到LSB的4位寄存器向量
reg[7:0]m,n;//兩個8位寄存器
integerA,B,C;//3個整數型寄存器
寄存器聲明
<reg_type>[range]<reg_name>[,reg_name];
reg_type:寄存器類型
range:矢量范圍,以[MSB:LSB]格式。只對reg類型有效
reg_name:寄存器名稱,一次可定義多個寄存器,用逗號分開第二十八頁,共三十四頁,2022年,8月28日(3)Verilog中net和register區(qū)別線網類型用于對結構化器件之間的物理連線的建模。線網類型主要有wire和tri
兩種。由于線網類型代表的是物理連接線,因此它不存貯邏輯值,必須由器件所驅動。當一個wire類型的信號沒有被驅動時,缺省值為Z(高阻)。信號沒有定義數據類型時,缺省為wire
類型。線網(net)第二十九頁,共三十四頁,2022年,8月28日寄存器類型通常用于對存儲單元的描述,如D型觸發(fā)器、ROM等。存儲器類型的信號當在某種觸發(fā)機制下分配了一個值,在分配下一個值之時保留原值。
reg是最常用的寄存器類型,表示無符號整數變量。但必須注意的是,reg類型的變量,不一定都是存儲單元,如在always語句中進行描述的必須用reg類型的變量。寄存器類型的值可取負數,但若該變量用于表達式的運算中,則按無符號類型處理寄存器(Register)第三十頁,共三十四頁,2022年,8月28日(4)參數(parameters)用參數聲明一個可變常量,常用于定義延時及寬度變量。參數定義的語法:parameter<list_of_assignment>;可一次定義多個參數,用逗號隔開。在使用文字(literal)的地方都可以使用參數。參數的定義是局部的,只在當前模塊中有效。參數定義可使用以前定義的整數和實數參數。modulemod1(out,in1,in2);...parametercycle=20,prop_del=3,setup=cycle/2-prop_del,p1=8,x_word=16’bx,file="/usr1/jdough/design/mem_file.dat";...wire[p1:0]w1;//Awiredeclarationusingparameter...endmodule注意:參數file不是string,而是一個整數,其值是所有字母的擴展ASCII值。若file=“AB”,則file值為8‘h4142。用法:$fopen(file);$display(“%s”,file);第三十一頁,共三十四頁,2022年,8月28日(5)寄存器數組(RegisterArrays)在Verilog中可以說明一個寄存器數組。
integerNUMS[7:0];//包含8個整數數組變量
timet_vals[3:0];//4個時間數組變量reg類型的數組通常用于描述存儲器其語法為:reg[MSB:L
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030中國反剽竊軟件行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 2025-2030中國碳酸鈣納米粒子市場運營模式與發(fā)展戰(zhàn)略研究研究報告
- 2025-2030中國濕潤劑行業(yè)市場深度調研及發(fā)展趨勢與投資前景預測研究報告
- 2025-2030中國橫式鉆孔機行業(yè)發(fā)展分析及發(fā)展趨勢與投資前景預測研究報告
- 互聯網醫(yī)療平臺開發(fā)及運營合作合同
- 模具開發(fā)合作協議書與模具開發(fā)合同9篇
- 2025年阿里巴巴誠信通分銷合同8篇
- 活動意向合同6篇
- (檔案管理)檔案代管合同9篇
- 2025簡易勞動合同范本勞動合同5篇
- 2024-2030年中國社區(qū)醫(yī)院行業(yè)市場發(fā)展分析及前景趨勢與投資研究報告
- 脫硫技術方案鈉堿法脫硫
- 民兵思想政治教育教案
- (正式版)JTT 1218.5-2024 城市軌道交通運營設備維修與更新技術規(guī)范 第5部分:通信
- Python少兒編程全套教學課件
- MOOC 宇宙簡史-南京大學 中國大學慕課答案
- 少先隊輔導員技能大賽培訓
- 2024年高等教育經濟類自考-06270技術經濟學筆試參考題庫含答案
- 統(tǒng)編語文六年級下冊期中測試卷(附答題卡和答案)
- 屈光性白內障手術發(fā)展
- 基于物聯網的智能衣柜
評論
0/150
提交評論