EDA技術(shù)教程運(yùn)算符賦值及結(jié)構(gòu)_第1頁
EDA技術(shù)教程運(yùn)算符賦值及結(jié)構(gòu)_第2頁
EDA技術(shù)教程運(yùn)算符賦值及結(jié)構(gòu)_第3頁
EDA技術(shù)教程運(yùn)算符賦值及結(jié)構(gòu)_第4頁
EDA技術(shù)教程運(yùn)算符賦值及結(jié)構(gòu)_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、1第第5 5章章 常用常用VerilogVerilog語法()語法()模塊的結(jié)構(gòu)模塊的結(jié)構(gòu)數(shù)據(jù)類型和變量數(shù)據(jù)類型和變量基本的運(yùn)算符號基本的運(yùn)算符號2 貌似極其簡單的內(nèi)容,與大家熟悉的貌似極其簡單的內(nèi)容,與大家熟悉的C語言在許多方面類似語言在許多方面類似 但時刻要記住,但時刻要記住,Verilog是面向硬件的是面向硬件的 在學(xué)習(xí)中逐漸體會和理解新概念新術(shù)語在學(xué)習(xí)中逐漸體會和理解新概念新術(shù)語 不要困惑于各種較多的新名詞不要困惑于各種較多的新名詞 在練習(xí)中學(xué)習(xí),在學(xué)習(xí)中理解和提高在練習(xí)中學(xué)習(xí),在學(xué)習(xí)中理解和提高35.1 Verilog5.1 Verilog HDL HDL基本結(jié)構(gòu)基本結(jié)構(gòu)1.Veri

2、log HDL1.Verilog HDL模塊的結(jié)構(gòu)模塊的結(jié)構(gòu) VerilogVerilog的基本設(shè)計(jì)單元是的基本設(shè)計(jì)單元是“模塊模塊 (block) ” (block) ” 。 Verilog Verilog 模塊的結(jié)構(gòu)由在模塊的結(jié)構(gòu)由在modulemodule和和endmoduleendmodule關(guān)鍵詞關(guān)鍵詞之間的之間的4 4個主要部分組成:個主要部分組成:module block1(amodule block1(a,b,c,b,c,d ),d ); input a input a,b,b,c,c; output d output d; wire x wire x; assign d =

3、a | x assign d = a | x; assign x = ( b & assign x = ( b & c )c );endmoduleendmoduleI/O說明說明端口定義端口定義功能描述功能描述信號類型聲明信號類型聲明123445.1.1 5.1.1 模塊的端口定義模塊的端口定義 模塊的端口定義模塊的輸入輸出口,格式如下模塊的端口定義模塊的輸入輸出口,格式如下 module modele_name ( port1, port2, ) 端口分端口分輸入、輸出及雙向輸入、輸出及雙向 端口是與其它模塊端口聯(lián)系的標(biāo)識端口是與其它模塊端口聯(lián)系的標(biāo)識 例例11: : mo

4、dule adder ( count,sum,a,b,cin ); input 2:0 a,b; input cin; output count; output 2:0 sum; assign count,sum=a+b+cin; endmodule5模塊引用時端口連接方法模塊引用時端口連接方法1.引用時,嚴(yán)格按照模塊定義的端口順序來連接,不用標(biāo)明原模塊引用時,嚴(yán)格按照模塊定義的端口順序來連接,不用標(biāo)明原模塊定義時規(guī)定的端口名。定義時規(guī)定的端口名。 模塊名(連接端口模塊名(連接端口1信號名,連接端口信號名,連接端口2信號名,信號名, )2.使用使用“.”符號,符號,標(biāo)明原模塊是定義時規(guī)定的端口

5、名。標(biāo)明原模塊是定義時規(guī)定的端口名。 模塊名(模塊名(.端口端口1名(連接信號名(連接信號1名),名),.端口端口1名(連接信號名(連接信號1名)名),)舉例舉例 My DesignMK M1(.sin(SerialIn),.pout(ParallelOut),);方法方法2可以使端口名與被引用模塊的端口對應(yīng),不必嚴(yán)格按方法可以使端口名與被引用模塊的端口對應(yīng),不必嚴(yán)格按方法1的順序,程序可讀性可移植性好。的順序,程序可讀性可移植性好。5.1.1 5.1.1 模塊的端口定義模塊的端口定義61.模塊的內(nèi)容模塊的內(nèi)容I/O說明的格式說明的格式輸入口:輸入口: input 信號位寬信號位寬1:0 端口

6、名端口名1; input 信號位寬信號位寬1:0 端口名端口名2; input 信號位寬信號位寬1:0 端口名端口名 i;輸出口:輸出口: output 信號位寬信號位寬1:0 端口名端口名1; output 信號位寬信號位寬1:0 端口名端口名2; output 信號位寬信號位寬1:0 端口名端口名 i;輸入輸入/輸出口輸出口 inout 信號位寬信號位寬1:0 端口名端口名1; inout 信號位寬信號位寬1:0 端口名端口名2; inout 信號位寬信號位寬1:0 端口名端口名 i;5.1.2 5.1.2 模塊的內(nèi)容模塊的內(nèi)容75.1.2 5.1.2 模塊的內(nèi)容模塊的內(nèi)容 reg reg

7、width-1:0 R變量變量1,R變量變量2; Wire wirewidth-1:0 W變量變量1,W變量變量2;2. 模塊內(nèi)與端口有關(guān)的信號說明模塊內(nèi)與端口有關(guān)的信號說明85.1.2 5.1.2 模塊的內(nèi)容模塊的內(nèi)容3. 3. 邏輯功能定義邏輯功能定義 在在Verilog Verilog 模塊中有模塊中有3 3種方法可以描述電路的邏輯功能種方法可以描述電路的邏輯功能:(1 1)用用assign 語句語句 assign x = ( b & c );連續(xù)賦值語句連續(xù)賦值語句常用于描述組合組合邏輯門元件例化門元件例化模塊元件例化模塊元件例化例化元件名門元件關(guān)鍵字(2 2)用元件例化(用元

8、件例化(instantiate)and myand3( f,a,b,c);v 注注1 1:元件例化即是調(diào)用:元件例化即是調(diào)用VerilogVerilog HDL HDL提供的元件;提供的元件;v 注注2 2:元件例化包括:元件例化包括門門元件例化和元件例化和模塊模塊元件例化;元件例化;v 注注3 3:每個實(shí)例元件的名字必須每個實(shí)例元件的名字必須唯一唯一!以避免與其!以避免與其它調(diào)用元件的實(shí)例相混淆。它調(diào)用元件的實(shí)例相混淆。v 注注4 4:例化元件名也可以省略!例化元件名也可以省略!95.1.2 5.1.2 模塊的內(nèi)容模塊的內(nèi)容(3 3)用用 “always” “always” 塊語句塊語句 a

9、lways (posedge clk) / 每當(dāng)時鐘上升沿到來時執(zhí)行一遍塊內(nèi)語句每當(dāng)時鐘上升沿到來時執(zhí)行一遍塊內(nèi)語句 begin if(load) out = data; / 同步預(yù)置數(shù)據(jù)同步預(yù)置數(shù)據(jù) else out = data + 1 + cin; / 加加1計(jì)數(shù)計(jì)數(shù) end結(jié)構(gòu)說明語句結(jié)構(gòu)說明語句v注注1 1:“always” “always” 塊語句塊語句常用于描述常用于描述時序時序邏輯,也邏輯,也可描述可描述組合組合邏輯。邏輯。v注注2 2:“always” “always” 塊塊可用多種手段來表達(dá)邏輯關(guān)系可用多種手段來表達(dá)邏輯關(guān)系,如用,如用if-elseif-else語句或語句

10、或casecase語句。語句。v注注3 3: “always” “always” 塊語句與塊語句與assignassign語句是并發(fā)執(zhí)行語句是并發(fā)執(zhí)行的,的, assignassign語句一定要放在語句一定要放在“always” “always” 塊語句之外塊語句之外!105.1.2 5.1.2 模塊的內(nèi)容模塊的內(nèi)容v Verilog HDLVerilog HDL模塊的模板(僅考慮用于邏輯綜合的部分)模塊的模板(僅考慮用于邏輯綜合的部分)module () ; output 輸出端口列表;輸出端口列表; input 輸入端口列表輸入端口列表; /(1)使用)使用assign語句定義邏輯功能語句

11、定義邏輯功能 wire 結(jié)果信號名;結(jié)果信號名; assign = 表達(dá)式表達(dá)式 ; /(2)使用)使用always塊定義邏輯功能塊定義邏輯功能 always () begin /過程賦值語句過程賦值語句 /if語句語句 / case語句語句 / while,repeat,for循環(huán)語句循環(huán)語句 / task,function調(diào)用調(diào)用 end115.1.2 5.1.2 模塊的內(nèi)容模塊的內(nèi)容/ (3)元件例化)元件例化 (); / 模塊元件例化模塊元件例化 (); / 門元件例化門元件例化endmodule例化元件名例化元件名也可也可以省略!以省略!125.1.2 5.1.2 模塊的內(nèi)容模塊的內(nèi)

12、容 標(biāo)識符標(biāo)識符 任何用任何用Verilog Verilog HDLHDL語言描述的語言描述的“東西東西”都通過其名字來識別,都通過其名字來識別,這個名字被稱為這個名字被稱為標(biāo)識符標(biāo)識符。 如源文件名、模塊名、端口名、變量名、常量名、實(shí)例名等。如源文件名、模塊名、端口名、變量名、常量名、實(shí)例名等。 標(biāo)識符可由字母、數(shù)字、下劃線和標(biāo)識符可由字母、數(shù)字、下劃線和$ $符號構(gòu)成;符號構(gòu)成;但第一個字符但第一個字符必須是字母或下劃線,不能是數(shù)字或必須是字母或下劃線,不能是數(shù)字或$ $符號符號! 在在Verilog HDLVerilog HDL中變量名是區(qū)分大小寫的!中變量名是區(qū)分大小寫的! 合法合法的

13、名字的名字:A_99_ZReset_54MHz_Clock$Module 不合法不合法的名字:的名字:123a$datamodule7seg.v標(biāo)識符標(biāo)識符不能與不能與關(guān)鍵字關(guān)鍵字同名!同名!13順序執(zhí)行順序執(zhí)行 Vs 并行執(zhí)行并行執(zhí)行Very important concept145.1.3 5.1.3 并行執(zhí)行與順序執(zhí)行并行執(zhí)行與順序執(zhí)行assign a=b & c;assign a=b & c;and #2 u1(q,a,b);and #2 u1(q,a,b);always (posedge clk or posedge clralways (posedge clk or

14、 posedge clr) ) begin begin if (clr if (clr) q=0;) q=0; else if (en) q=d; else if (en) q=d; end end并行并行155.1.4 5.1.4 要點(diǎn)總結(jié)要點(diǎn)總結(jié)!1.1.VerilogVerilog中所有過程塊(如中所有過程塊(如initial, alwaysinitial, always)、連續(xù)賦值)、連續(xù)賦值語句、實(shí)例引用都是并行的語句、實(shí)例引用都是并行的2.2.它們表示的是一種通過變量名互相連接的關(guān)系它們表示的是一種通過變量名互相連接的關(guān)系3.3.在同一模塊中這三者出現(xiàn)的先后順序沒有關(guān)系在同一模塊中

15、這三者出現(xiàn)的先后順序沒有關(guān)系4.4.只有連續(xù)賦值語句只有連續(xù)賦值語句assignassign和實(shí)例引用可以獨(dú)立于過程塊而和實(shí)例引用可以獨(dú)立于過程塊而存在于模塊的功能定義部分。存在于模塊的功能定義部分。165.2 5.2 數(shù)據(jù)類型及常量、變量數(shù)據(jù)類型及常量、變量一、數(shù)據(jù)類型一、數(shù)據(jù)類型二、常量二、常量三、變量三、變量 175.2 5.2 數(shù)據(jù)類型及常量、變量數(shù)據(jù)類型及常量、變量一、數(shù)據(jù)類型一、數(shù)據(jù)類型 數(shù)據(jù)類型是用來表示數(shù)字電路中的數(shù)據(jù)存儲和傳送單元。數(shù)據(jù)類型是用來表示數(shù)字電路中的數(shù)據(jù)存儲和傳送單元。 Verilog HDLVerilog HDL中共有中共有19種數(shù)據(jù)類型;種數(shù)據(jù)類型; 其中其中

16、4個最基本的數(shù)據(jù)類型為:個最基本的數(shù)據(jù)類型為:integer型parameter型reg型wire型 其 它 數(shù) 據(jù) 類 型 :其 它 數(shù) 據(jù) 類 型 :large型、medium型、 scalared型、 small型、time型、tri型、tri0型、tri1型、triand型、trior型、trireg型、vectored型、wand型、wor型等二、常量二、常量 在程序運(yùn)行過程中,其值不能被改變的量,稱為在程序運(yùn)行過程中,其值不能被改變的量,稱為常量常量。數(shù)字?jǐn)?shù)字(包括整數(shù),x和z值,負(fù)數(shù))parameterparameter常量常量(或稱符號常量)185.2 5.2 數(shù)據(jù)類型及常量、

17、變量數(shù)據(jù)類型及常量、變量整常數(shù)的整常數(shù)的3種表達(dá)方式:種表達(dá)方式:表表 達(dá)達(dá) 方方 式式說說 明明 舉舉 例例 完整的表達(dá)方式8b11000101或8 hc5 缺省位寬,則位寬由機(jī)器系統(tǒng)決定,至少32位hc5 缺省進(jìn)制為十進(jìn)制,位寬默認(rèn)為32位197(1 1)整數(shù)型常量整數(shù)型常量(即(即整常數(shù)整常數(shù))的)的4 4種進(jìn)制表示形式:種進(jìn)制表示形式:二進(jìn)制整數(shù)(二進(jìn)制整數(shù)(b b或或B B););十進(jìn)制整數(shù)十進(jìn)制整數(shù)(d d或或D D););十六進(jìn)制整數(shù)十六進(jìn)制整數(shù)(h h或或H H););八進(jìn)制整數(shù)(八進(jìn)制整數(shù)(o o或或O O)。)。v注:注:這里位寬指對應(yīng)二進(jìn)制數(shù)的寬度。這里位寬指對應(yīng)二進(jìn)制數(shù)

18、的寬度。195.2 5.2 數(shù)據(jù)類型及常量、變量數(shù)據(jù)類型及常量、變量(2 2)x x和和z z值值x x表示不定值,表示不定值,z z表示高阻值;表示高阻值;8b1001xxxx或8 h9x8b1010zzzz或8 haz每個字符代表的二進(jìn)制數(shù)的寬度取決于所用的進(jìn)制;每個字符代表的二進(jìn)制數(shù)的寬度取決于所用的進(jìn)制;當(dāng)用二進(jìn)制表示時,已標(biāo)明位寬的數(shù)若用當(dāng)用二進(jìn)制表示時,已標(biāo)明位寬的數(shù)若用x x或或z z表示某些位,則只有在表示某些位,則只有在最左邊最左邊的的x x或或z z具有具有擴(kuò)展性擴(kuò)展性!為清晰可見,最好直接寫出每一位的值!為清晰可見,最好直接寫出每一位的值! 例例8bzx = 8bzzzz

19、_zzzx 8bzx = 8bzzzz_zzzx 例例8b1x = 8b0000_001x8b1x = 8b0000_001x“?”是是z z的另一種表示符號,建議在的另一種表示符號,建議在casecase語句中使用語句中使用?表示表示高阻態(tài)高阻態(tài)z 例例 casez casez (select) (select) 4b?1: out = a; 4b?1: out = a; 4b?1?: out = b; 4b?1?: out = b; 4b?1?: out = c; 4b?1?: out = c; 4b1?: out = d; 4b1?: out = d; endcase endcase20

20、5.2 5.2 數(shù)據(jù)類型及常量、變量數(shù)據(jù)類型及常量、變量(3 3)負(fù)數(shù)負(fù)數(shù)在位寬前加一個減號,即表示負(fù)數(shù)在位寬前加一個減號,即表示負(fù)數(shù)如:如:-8-8d5 /5的補(bǔ)數(shù),的補(bǔ)數(shù),= 8b11111011減號不能放在位寬與進(jìn)制之間,也不能放在進(jìn)制減號不能放在位寬與進(jìn)制之間,也不能放在進(jìn)制與數(shù)字之間!與數(shù)字之間!8 d-5 /非法格式非法格式v 為提高可讀性,在較長的數(shù)字之間可用下劃線為提高可讀性,在較長的數(shù)字之間可用下劃線_ _隔開!但隔開!但不可以用在不可以用在和和之間。之間。 如:如:16b1010_1011_1100_1111 /16b1010_1011_1100_1111 /合法合法 8b

21、8b_ _0011_1010 /0011_1010 /非法非法v當(dāng)常量未指明位寬時,默認(rèn)為當(dāng)常量未指明位寬時,默認(rèn)為3232位。位。10 = 32d10 = 32b101010 = 32d10 = 32b1010- 1 = - 3 2 d 1 = 3 2 b 1 1 1 1- 1 = - 3 2 d 1 = 3 2 b 1 1 1 1 1 1 1 1 = 1 1 1 1 = 32hFFFFFFFF32hFFFFFFFF215.2 5.2 數(shù)據(jù)類型及常量、變量數(shù)據(jù)類型及常量、變量(4 4)parameterparameter常量(符號常量)常量(符號常量)用用parameterparameter

22、來定義一個標(biāo)識符,代表一個常量來定義一個標(biāo)識符,代表一個常量稱為稱為符號符號常量。常量。參數(shù)型數(shù)據(jù)的確認(rèn)符parameterparameter 參數(shù)名參數(shù)名1 = 1 = 表達(dá)式表達(dá)式, ,參數(shù)名參數(shù)名2 = 2 = 表達(dá)式表達(dá)式, , ;每個賦值語句的右邊必須為常數(shù)表達(dá)式,即只能包含數(shù)字或先前定義過的符號常量! parameter addrwidth = 16; /合法格式 parameter addrwidth = datawidth*2; /非法格式常用參數(shù)來定義延遲時間和變量寬度。可用字符串表示的任何地方,都可以用定義的參數(shù)來代替。參數(shù)是本地的,其定義只在本模塊內(nèi)有效。在模塊或?qū)嵗?/p>

23、時,可通過參數(shù)傳遞改變在被引用模塊或?qū)嵗幸讯x的參數(shù)!賦值語句表225.2 5.2 數(shù)據(jù)類型及常量、變量數(shù)據(jù)類型及常量、變量模塊實(shí)例引用時參數(shù)的傳遞模塊實(shí)例引用時參數(shù)的傳遞方法之一方法之一:利用利用defparamdefparam定義參數(shù)聲明語句!定義參數(shù)聲明語句!defparam 例化模塊名例化模塊名.參數(shù)名參數(shù)名1 = 常數(shù)常數(shù)表達(dá)式表達(dá)式, 例化模塊名例化模塊名.參數(shù)名參數(shù)名2 = 常數(shù)常數(shù)表達(dá)式表達(dá)式, ; defparamdefparam語句在編譯時可重新定義參數(shù)值。語句在編譯時可重新定義參數(shù)值。 可綜合性問題:一般情況下是不可綜合的??删C合性問題:一般情況下是不可綜合的。 提示:

24、不要使用提示:不要使用defparamdefparam語句!在模塊的實(shí)例引用語句!在模塊的實(shí)例引用時可用時可用“# #”號后跟參數(shù)的語法來重新定義參數(shù)。號后跟參數(shù)的語法來重新定義參數(shù)。23 例例 module mod ( out, ina, inb); parameter cycle = 8, real_constant = 2.039, file = “/user1/jmdong/design/mem_file.dat”; endmodulemodule test; mod mk(out,ina,inb); / 對模塊對模塊modmod的實(shí)例引用的實(shí)例引用 defparam mk.cycle

25、 = 6, mk.file = “./my_mem.dat”; / 參數(shù)的傳遞參數(shù)的傳遞 endmodule5.2 5.2 數(shù)據(jù)類型及常量、變量數(shù)據(jù)類型及常量、變量被引用模塊參數(shù)名參數(shù)名例化模塊名例化模塊名24 例例 module mod ( out, ina, inb); parameter cycle = 8, real_constant = 2.039, file = “/user1/jmdong/design/mem_file.dat”; endmodulemodule test; mod # (5, 3.20, “./my_mem.dat”) mk(out,ina,inb); / 對

26、模塊對模塊modmod的實(shí)例引用的實(shí)例引用 endmodule5.2 5.2 數(shù)據(jù)類型及常量、變量數(shù)據(jù)類型及常量、變量模塊實(shí)例引用時參數(shù)的傳遞模塊實(shí)例引用時參數(shù)的傳遞方法之二方法之二:利用特殊符號:利用特殊符號“#” 被引用模塊參數(shù)的傳遞參數(shù)的傳遞必須與被引用模塊中的參數(shù)一一對應(yīng)!必須與被引用模塊中的參數(shù)一一對應(yīng)!建議用此建議用此方法!方法!被引用模塊名被引用模塊名 # # (參數(shù)參數(shù)1,參數(shù)參數(shù)2,)例化模塊名(端口列表)例化模塊名(端口列表);255.2 5.2 數(shù)據(jù)類型及常量、變量數(shù)據(jù)類型及常量、變量三、變量三、變量 在程序運(yùn)行過程中,其值可以改變的量,稱為在程序運(yùn)行過程中,其值可以改變

27、的量,稱為變量變量。 其數(shù)據(jù)類型有其數(shù)據(jù)類型有1919種,常用的有種,常用的有3 3種:種:網(wǎng)絡(luò)型(網(wǎng)絡(luò)型(nets typenets type)寄存器寄存器型(型(register type register type )數(shù)組(數(shù)組(memory typememory type)1. nets1. nets型變量型變量 定義定義輸出始終隨輸入的變化而變化的變量輸出始終隨輸入的變化而變化的變量。 表示結(jié)構(gòu)實(shí)體(如門)之間的表示結(jié)構(gòu)實(shí)體(如門)之間的物理物理連接。連接。常用常用netsnets型變量:型變量:wirewire,tritri:連線類型(兩者功能一致):連線類型(兩者功能一致)wor

28、wor,triortrior:具有線或特性的連線(兩者功能一致):具有線或特性的連線(兩者功能一致)wandwand,triandtriand:具有線與特性的連線(兩者功能一致):具有線與特性的連線(兩者功能一致)tri1tri1,tri0tri0:上拉電阻和下拉電阻:上拉電阻和下拉電阻supply1supply1,supply0supply0:電源(邏輯:電源(邏輯1 1)和地(邏輯)和地(邏輯0 0)netsnets型變量型變量不能儲存值!不能儲存值!265.2 5.2 數(shù)據(jù)類型及常量、變量數(shù)據(jù)類型及常量、變量 wire型變量型變量最常用的nets型變量,常用來表示以assign語句賦值的

29、組合邏輯信號。模塊中的輸入/輸出信號類型缺省為wire型??捎米鋈魏畏匠淌降妮斎?,或“assign”語句和實(shí)例元件的輸出。wirewire 數(shù)據(jù)名數(shù)據(jù)名1,1,數(shù)據(jù)名數(shù)據(jù)名2, 2, , ,數(shù)據(jù)名數(shù)據(jù)名n;n;wiren-1:0wiren-1:0 數(shù)據(jù)名數(shù)據(jù)名1,1,數(shù)據(jù)名數(shù)據(jù)名2, 2, , ,數(shù)據(jù)名數(shù)據(jù)名m;m;或或 wiren:1wiren:1 數(shù)據(jù)名數(shù)據(jù)名1,1,數(shù)據(jù)名數(shù)據(jù)名2, 2, , ,數(shù)據(jù)名數(shù)據(jù)名m;m;每條總線位寬為n共有m條總線wirewire型向量(總線)型向量(總線)275.2 5.2 數(shù)據(jù)類型及常量、變量數(shù)據(jù)類型及常量、變量 定義定義對應(yīng)對應(yīng)具有狀態(tài)保持作用具有狀態(tài)保

30、持作用的電路元件(如觸發(fā)器、的電路元件(如觸發(fā)器、寄存器等)寄存器等), ,常用來表示常用來表示過程塊過程塊語句(如語句(如initialinitial,alwaysalways,tasktask,functionfunction)內(nèi)的指定信號)內(nèi)的指定信號 。 常用常用registerregister型變量:型變量:reg:常代表觸發(fā)器integer:32位帶符號整數(shù)型變量real:64位帶符號實(shí)數(shù)型變量time:無符號時間變量純數(shù)學(xué)的純數(shù)學(xué)的抽象描述抽象描述2. register2. register型變量型變量285.2 5.2 數(shù)據(jù)類型及常量、變量數(shù)據(jù)類型及常量、變量vregister

31、register型變量與型變量與netsnets型變量的根本區(qū)別是:型變量的根本區(qū)別是: registerregister型型變量需要被明確地賦值,并且在被重新賦值前一直保持變量需要被明確地賦值,并且在被重新賦值前一直保持原值。原值。vregisterregister型變量必須通過型變量必須通過過程過程賦值語句賦值!不能通過賦值語句賦值!不能通過assignassign語句賦值!語句賦值!v在過程塊內(nèi)被賦值的每個信號必須定義成在過程塊內(nèi)被賦值的每個信號必須定義成registerregister型!型!295.2 5.2 數(shù)據(jù)類型及常量、變量數(shù)據(jù)類型及常量、變量 reg型變量型變量定義定義在過程

32、塊中被賦值的信號在過程塊中被賦值的信號,往往往往代表觸發(fā)器,代表觸發(fā)器,但但不一定不一定就是觸發(fā)器(也可以是組合邏輯信號)!就是觸發(fā)器(也可以是組合邏輯信號)!regreg 數(shù)據(jù)名數(shù)據(jù)名1,1,數(shù)據(jù)名數(shù)據(jù)名2, 2, , ,數(shù)據(jù)名數(shù)據(jù)名n;n;regn-1:0regn-1:0 數(shù)據(jù)名數(shù)據(jù)名1,1,數(shù)據(jù)名數(shù)據(jù)名2, 2, , ,數(shù)據(jù)名數(shù)據(jù)名m;m;或或 regn:1regn:1 數(shù)據(jù)名數(shù)據(jù)名1,1,數(shù)據(jù)名數(shù)據(jù)名2, 2, , ,數(shù)據(jù)名數(shù)據(jù)名m;m;每個向量位寬為n共有m個reg型向量 例例 reg4:1 regc,regd reg4:1 regc,regd; /; / /regc,regdreg

33、c,regd為為4 4位寬的位寬的regreg型向量型向量regreg型向量(總線)型向量(總線)305.2 5.2 數(shù)據(jù)類型及常量、變量數(shù)據(jù)類型及常量、變量用用regreg型變量生成型變量生成組合邏輯組合邏輯舉例舉例:module rw1( a, b, out1, out2 ) ; input a, b; output out1, out2; reg out1; wire out2; assign out2 = a ; always (b) out1 = b;endmoduleaout2BUFFbINVout1過程賦值語句連續(xù)賦值語句電平電平觸發(fā)Verilog中中reg與與wire的區(qū)別的區(qū)

34、別regreg型變量既可生成觸發(fā)器,型變量既可生成觸發(fā)器,也可生成組合邏輯;也可生成組合邏輯; wirewire型變量只能生成組合邏輯。型變量只能生成組合邏輯。315.2 5.2 數(shù)據(jù)類型及常量、變量數(shù)據(jù)類型及常量、變量用用regreg型變量生成型變量生成觸發(fā)器觸發(fā)器舉例舉例:module rw2( clk, d, out1, out2 ); input clk, d; output out1, out2; reg out1; wire out2; assign out2 = d & out1 ; always (posedge clk) begin out1 = d ; endend

35、module過程賦值語句連續(xù)賦值語句dout2AND2i1clkout1D QDFF沿沿觸發(fā)325.2 5.2 數(shù)據(jù)類型及常量、變量數(shù)據(jù)類型及常量、變量 定義定義由若干個相同寬度的由若干個相同寬度的regreg型向量構(gòu)成的數(shù)組。型向量構(gòu)成的數(shù)組。 Verilog HDL通過reg型變量建立數(shù)組來對存儲器建模。 memory型變量可描述RAM、ROM和reg文件。 memory型變量通過擴(kuò)展reg型變量的地址范圍來生成:regn-1:0regn-1:0 存儲器名存儲器名m-1:0m-1:0; ;或或 regn-1:0regn-1:0存儲器名存儲器名m:1m:1; ;每個存儲單元位寬為n共有m個存

36、儲單元3. memory3. memory型變量型變量數(shù)組數(shù)組MAXPlusMAXPlus II II不支持!不支持!vVerilogVerilog HDL HDL中的變量名、參數(shù)名等標(biāo)記中的變量名、參數(shù)名等標(biāo)記符是對大小寫字母敏感的!符是對大小寫字母敏感的!335.2 5.2 數(shù)據(jù)類型及常量、變量數(shù)據(jù)類型及常量、變量 含義不同含義不同例 regn-1:0 rega;/一個n位的寄存器 reg mema n-1:0 ;/由n個1位寄存器組成的存儲器 必須指明存儲單元的地址地址!0n-10n-1n-2地址 賦值方式不同賦值方式不同 一個一個n n位的寄存器可用一條賦值語句賦值;位的寄存器可用一條

37、賦值語句賦值; 一個完整一個完整的存儲器則不行!若要對某存儲器中的存儲單元進(jìn)行的存儲器則不行!若要對某存儲器中的存儲單元進(jìn)行讀寫操作,必須指明該單元在存儲器中的讀寫操作,必須指明該單元在存儲器中的地址地址! 例 rega = 0; /合法賦值語句 mema = 0 ; /非法賦值語句 mema8 = 1 ; /合法賦值語句 mema1023:0 = 0 ;/合法賦值語句memory型變量型變量與與reg型變量型變量的區(qū)別的區(qū)別345.3 5.3 運(yùn)算符及表達(dá)式運(yùn)算符及表達(dá)式一、算術(shù)運(yùn)算符一、算術(shù)運(yùn)算符二、邏輯運(yùn)算符二、邏輯運(yùn)算符三、位運(yùn)算符三、位運(yùn)算符四、關(guān)系運(yùn)算符四、關(guān)系運(yùn)算符五、等式運(yùn)算符

38、五、等式運(yùn)算符 六、縮減運(yùn)算符六、縮減運(yùn)算符七、移位運(yùn)算符七、移位運(yùn)算符八、條件運(yùn)算符八、條件運(yùn)算符九、位拼接運(yùn)算符九、位拼接運(yùn)算符十、運(yùn)算符的優(yōu)先級十、運(yùn)算符的優(yōu)先級 355.3 5.3 運(yùn)算符及表達(dá)式運(yùn)算符及表達(dá)式運(yùn)算符按運(yùn)算符按功能功能分為分為9 9類類:算術(shù)算術(shù)運(yùn)算符運(yùn)算符邏輯邏輯運(yùn)算符運(yùn)算符關(guān)系關(guān)系運(yùn)算符運(yùn)算符等式等式運(yùn)算符運(yùn)算符縮減縮減運(yùn)算符運(yùn)算符條件條件運(yùn)算符運(yùn)算符位位運(yùn)算符運(yùn)算符移位移位運(yùn)算符運(yùn)算符位拼接位拼接運(yùn)算符運(yùn)算符 運(yùn)算符按運(yùn)算符按操作數(shù)的個數(shù)操作數(shù)的個數(shù)分為分為3 3類類:單目單目運(yùn)算符運(yùn)算符帶一個操作數(shù)帶一個操作數(shù) 邏輯非!,按位取反邏輯非!,按位取反 ,縮減運(yùn)算,

39、縮減運(yùn)算符,移位運(yùn)算符符,移位運(yùn)算符雙目雙目運(yùn)算符運(yùn)算符帶兩個操作數(shù)帶兩個操作數(shù) 算術(shù)、關(guān)系、等式運(yùn)算符,邏輯算術(shù)、關(guān)系、等式運(yùn)算符,邏輯、位運(yùn)算符的大部分、位運(yùn)算符的大部分三目三目運(yùn)算符運(yùn)算符帶三個操作數(shù)帶三個操作數(shù) 條件運(yùn)算符條件運(yùn)算符365.3 5.3 運(yùn)算符及表達(dá)式運(yùn)算符及表達(dá)式一、算術(shù)運(yùn)算符一、算術(shù)運(yùn)算符算術(shù)運(yùn)算符算術(shù)運(yùn)算符說明說明 */%加減乘除求模雙雙目運(yùn)算符 進(jìn)行整數(shù)除法運(yùn)算時,結(jié)果值略去小數(shù)部分,只取整數(shù)部分!進(jìn)行整數(shù)除法運(yùn)算時,結(jié)果值略去小數(shù)部分,只取整數(shù)部分! % %稱為稱為求模求模(或(或求余求余)運(yùn)算符,要求)運(yùn)算符,要求% %兩側(cè)均為兩側(cè)均為整型整型數(shù)據(jù);數(shù)據(jù); 求模運(yùn)算結(jié)果值的符號位取第一個操作數(shù)的符號位!求模運(yùn)算結(jié)果值的符號位取第一個操作數(shù)的符號位! 例例 -11%3 -11%3 結(jié)果為結(jié)果為-2-2 進(jìn)行算術(shù)運(yùn)算時,若某操作數(shù)為不定值進(jìn)行算術(shù)運(yùn)算時,若某操作數(shù)為不定值x x,則整個結(jié)果也為,則整個結(jié)果也為x x。 MAX + PLUS IIMAX + PLUS II不支持不支持“/ /” ” 和和“%”運(yùn)算!運(yùn)算!QuartusQuartus II II都支持!都支持!37

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論