硬件描述語言及其程序設(shè)計(jì)方法_第1頁
硬件描述語言及其程序設(shè)計(jì)方法_第2頁
硬件描述語言及其程序設(shè)計(jì)方法_第3頁
硬件描述語言及其程序設(shè)計(jì)方法_第4頁
硬件描述語言及其程序設(shè)計(jì)方法_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第講硬件描述語言及其程序設(shè)計(jì)方法第1頁,共34頁。目目 錄錄qSOC設(shè)計(jì)概述設(shè)計(jì)概述q可編程邏輯器件可編程邏輯器件 q硬件描述語言及其程序設(shè)計(jì)方法硬件描述語言及其程序設(shè)計(jì)方法 qSOC的設(shè)計(jì)基本工具和方法的設(shè)計(jì)基本工具和方法qSOC設(shè)計(jì)實(shí)例設(shè)計(jì)實(shí)例第2頁,共34頁。Verilog HDL 簡介簡介qVerilog HDL是一種硬件描述語言,用于從算法級(jí)、門級(jí)到開關(guān)級(jí)的多種是一種硬件描述語言,用于從算法級(jí)、門級(jí)到開關(guān)級(jí)的多種抽象設(shè)計(jì)層次的數(shù)字系統(tǒng)建模。抽象設(shè)計(jì)層次的數(shù)字系統(tǒng)建模。qVerilog HDL語言具有下述描述能力:語言具有下述描述能力:設(shè)計(jì)的行為特性設(shè)計(jì)的行為特性設(shè)計(jì)的數(shù)據(jù)流特性設(shè)計(jì)的

2、數(shù)據(jù)流特性設(shè)計(jì)的結(jié)構(gòu)組成設(shè)計(jì)的結(jié)構(gòu)組成包含響應(yīng)監(jiān)控和設(shè)計(jì)驗(yàn)證方面的時(shí)延和波形產(chǎn)生機(jī)制。包含響應(yīng)監(jiān)控和設(shè)計(jì)驗(yàn)證方面的時(shí)延和波形產(chǎn)生機(jī)制。qVerilog HDL語言不僅定義了語法,而且對(duì)每個(gè)語法結(jié)構(gòu)都定義了清語言不僅定義了語法,而且對(duì)每個(gè)語法結(jié)構(gòu)都定義了清晰的模擬、仿真語義。因此,用這種語言編寫的模型能夠使用晰的模擬、仿真語義。因此,用這種語言編寫的模型能夠使用Verilog仿真器進(jìn)行驗(yàn)證。仿真器進(jìn)行驗(yàn)證。第3頁,共34頁。Verilog HDL 簡介簡介qVerilog HDL硬件描述語言的主要能力:硬件描述語言的主要能力:基本邏輯門,例如基本邏輯門,例如and、or和和nand等都內(nèi)置在語言

3、中。等都內(nèi)置在語言中。用戶定義原語(用戶定義原語(UDP)創(chuàng)建的靈活性。用戶定義的原語既可以是組合邏輯原語,也可)創(chuàng)建的靈活性。用戶定義的原語既可以是組合邏輯原語,也可以是時(shí)序邏輯原語。以是時(shí)序邏輯原語。開關(guān)級(jí)基本結(jié)構(gòu)模型,例如開關(guān)級(jí)基本結(jié)構(gòu)模型,例如pmos和和nmos等也被內(nèi)置在語言中。等也被內(nèi)置在語言中。提供顯式語言結(jié)構(gòu)指定設(shè)計(jì)中端口到端口的時(shí)延及路徑時(shí)延和設(shè)計(jì)的時(shí)序檢查。提供顯式語言結(jié)構(gòu)指定設(shè)計(jì)中端口到端口的時(shí)延及路徑時(shí)延和設(shè)計(jì)的時(shí)序檢查。可采用三種不同方式或混合方式對(duì)設(shè)計(jì)建模。這些方式包括:可采用三種不同方式或混合方式對(duì)設(shè)計(jì)建模。這些方式包括:行為描述方式行為描述方式使用過程化結(jié)構(gòu)建

4、模;使用過程化結(jié)構(gòu)建模;數(shù)據(jù)流方式數(shù)據(jù)流方式使用連續(xù)賦值語句方式建模;使用連續(xù)賦值語句方式建模;結(jié)構(gòu)化方式結(jié)構(gòu)化方式使用門和模塊實(shí)例語句描述建模。使用門和模塊實(shí)例語句描述建模。第4頁,共34頁。Verilog HDL 簡介簡介qVerilog HDL硬件描述語言的主要能力(續(xù)):硬件描述語言的主要能力(續(xù)):Verilog HDL中有兩類數(shù)據(jù)類型:線網(wǎng)數(shù)據(jù)類型和寄存器數(shù)據(jù)類型。線網(wǎng)類型表示構(gòu)中有兩類數(shù)據(jù)類型:線網(wǎng)數(shù)據(jù)類型和寄存器數(shù)據(jù)類型。線網(wǎng)類型表示構(gòu)件間的物理連線,而寄存器類型表示抽象的數(shù)據(jù)存儲(chǔ)元件。件間的物理連線,而寄存器類型表示抽象的數(shù)據(jù)存儲(chǔ)元件。能夠描述層次設(shè)計(jì),可使用模塊實(shí)例結(jié)構(gòu)描述

5、任何層次。能夠描述層次設(shè)計(jì),可使用模塊實(shí)例結(jié)構(gòu)描述任何層次。設(shè)計(jì)的規(guī)??梢允侨我獾?;語言不對(duì)設(shè)計(jì)的規(guī)模(大?。┦┘尤魏蜗拗?。設(shè)計(jì)的規(guī)模可以是任意的;語言不對(duì)設(shè)計(jì)的規(guī)模(大?。┦┘尤魏蜗拗?。Verilog HDL不再是某些公司的專有語言而是不再是某些公司的專有語言而是IEEE標(biāo)準(zhǔn)。標(biāo)準(zhǔn)。人和機(jī)器都可以閱讀人和機(jī)器都可以閱讀Verilog語言,因此它可以作為語言,因此它可以作為EDA的工具和設(shè)計(jì)者之的工具和設(shè)計(jì)者之間的交互語言。間的交互語言。第5頁,共34頁。Verilog HDL 簡介簡介qVerilog HDL硬件描述語言的主要能力(續(xù)):硬件描述語言的主要能力(續(xù)):Verilog HDL語

6、言的描述能力能夠通過使用編程語言接口(語言的描述能力能夠通過使用編程語言接口(PLI)機(jī)制進(jìn)一)機(jī)制進(jìn)一步擴(kuò)展。步擴(kuò)展。PLI是允許外部函數(shù)訪問是允許外部函數(shù)訪問Verilog模塊內(nèi)信息、允許設(shè)計(jì)者與模擬器模塊內(nèi)信息、允許設(shè)計(jì)者與模擬器交互的例程集合。交互的例程集合。設(shè)計(jì)能夠在多個(gè)層次上加以描述,從開關(guān)級(jí)、門級(jí)、寄存器傳輸級(jí)(設(shè)計(jì)能夠在多個(gè)層次上加以描述,從開關(guān)級(jí)、門級(jí)、寄存器傳輸級(jí)(RTL)到算法級(jí),包括進(jìn)程和隊(duì)列級(jí)。到算法級(jí),包括進(jìn)程和隊(duì)列級(jí)。能夠使用內(nèi)置開關(guān)級(jí)原語在開關(guān)級(jí)對(duì)設(shè)計(jì)完整建模。能夠使用內(nèi)置開關(guān)級(jí)原語在開關(guān)級(jí)對(duì)設(shè)計(jì)完整建模。同一語言可用于生成模擬激勵(lì)和指定測試的驗(yàn)證約束條件,例如

7、輸入值的指定。同一語言可用于生成模擬激勵(lì)和指定測試的驗(yàn)證約束條件,例如輸入值的指定。Verilog HDL能夠監(jiān)控模擬驗(yàn)證的執(zhí)行,即模擬驗(yàn)證執(zhí)行過程中設(shè)計(jì)的值能夠被能夠監(jiān)控模擬驗(yàn)證的執(zhí)行,即模擬驗(yàn)證執(zhí)行過程中設(shè)計(jì)的值能夠被監(jiān)控和顯示。監(jiān)控和顯示。第6頁,共34頁。Verilog HDL 簡介簡介qVerilog HDL硬件描述語言的主要能力(續(xù)):硬件描述語言的主要能力(續(xù)):在行為級(jí)描述中,在行為級(jí)描述中,Verilog HDL不僅能夠在不僅能夠在RTL級(jí)上進(jìn)行設(shè)計(jì)描述,而且能夠在體系級(jí)上進(jìn)行設(shè)計(jì)描述,而且能夠在體系結(jié)構(gòu)級(jí)描述及其算法級(jí)行為上進(jìn)行設(shè)計(jì)描述。結(jié)構(gòu)級(jí)描述及其算法級(jí)行為上進(jìn)行設(shè)計(jì)描

8、述。能夠使用門和模塊實(shí)例化語句在結(jié)構(gòu)級(jí)進(jìn)行結(jié)構(gòu)描述。能夠使用門和模塊實(shí)例化語句在結(jié)構(gòu)級(jí)進(jìn)行結(jié)構(gòu)描述。Verilog HDL還具有內(nèi)置邏輯函數(shù),例如還具有內(nèi)置邏輯函數(shù),例如&(按位與按位與)和和 | (按位或按位或)。對(duì)高級(jí)編程語言結(jié)構(gòu),例如條件語句、情況語句和循環(huán)語句,語言中都可以使用。對(duì)高級(jí)編程語言結(jié)構(gòu),例如條件語句、情況語句和循環(huán)語句,語言中都可以使用。可以顯式地對(duì)并發(fā)和定時(shí)進(jìn)行建模??梢燥@式地對(duì)并發(fā)和定時(shí)進(jìn)行建模。提供強(qiáng)有力的文件讀寫能力。提供強(qiáng)有力的文件讀寫能力。語言在特定情況下是非確定的,即在不同的模擬器上模型可以產(chǎn)生不同的結(jié)果;語言在特定情況下是非確定的,即在不同的模擬器上

9、模型可以產(chǎn)生不同的結(jié)果;例如,事件隊(duì)列上的事件順序在標(biāo)準(zhǔn)中沒有定義。例如,事件隊(duì)列上的事件順序在標(biāo)準(zhǔn)中沒有定義。第7頁,共34頁。Verilog程序的結(jié)構(gòu)程序的結(jié)構(gòu)q模塊是模塊是Verilog的基本描述單位,用于描述某個(gè)設(shè)計(jì)的功能或的基本描述單位,用于描述某個(gè)設(shè)計(jì)的功能或結(jié)構(gòu)及其與其他模塊通信的外部端口。結(jié)構(gòu)及其與其他模塊通信的外部端口。q一個(gè)設(shè)計(jì)的結(jié)構(gòu)可使用開關(guān)級(jí)原語、門級(jí)原語和用戶一個(gè)設(shè)計(jì)的結(jié)構(gòu)可使用開關(guān)級(jí)原語、門級(jí)原語和用戶定義的原語方式描述;定義的原語方式描述;q設(shè)計(jì)的數(shù)據(jù)流行為使用連續(xù)賦值語句進(jìn)行描述;設(shè)計(jì)的數(shù)據(jù)流行為使用連續(xù)賦值語句進(jìn)行描述;q時(shí)序行為使用過程結(jié)構(gòu)描述。時(shí)序行為使用

10、過程結(jié)構(gòu)描述。q一個(gè)模塊可以在另一個(gè)模塊中使用。一個(gè)模塊可以在另一個(gè)模塊中使用。第8頁,共34頁。Verilog程序的結(jié)構(gòu)程序的結(jié)構(gòu)qVerilog程序由關(guān)鍵詞程序由關(guān)鍵詞module和和endmodule進(jìn)行定義進(jìn)行定義qVerilog HDL 大小寫敏感大小寫敏感 port declarationsdata type declarationsfunctionalitytiming specificationendmodulemodule name (port_list);第9頁,共34頁。Verilog程序的組成部分程序的組成部分這這5個(gè)組件的排個(gè)組件的排列順序是任意列順序是任意的,可以選

11、擇的,可以選擇其中的一個(gè)或其中的一個(gè)或幾個(gè)組件構(gòu)成幾個(gè)組件構(gòu)成一個(gè)一個(gè)Verilog程程序。序。endmodulemodule Name,port list, port declarations(if ports present)parameters(optional),),Declarations of wires, regs and other variablesData flow statements( assign )Always and initial blocks,All behavioral statements go in these blocks.Instantiation

12、of lower level modulesTasks and functions第10頁,共34頁。時(shí)延時(shí)延qVerilog HDL模型中的所有時(shí)延都根據(jù)單位定義。模型中的所有時(shí)延都根據(jù)單位定義。q下面是帶時(shí)延的連續(xù)賦值語句實(shí)例:下面是帶時(shí)延的連續(xù)賦值語句實(shí)例: assign #2 Sum = A B; #2指指2個(gè)時(shí)間單位。個(gè)時(shí)間單位。q如果沒有說明時(shí)延時(shí)間單位,如果沒有說明時(shí)延時(shí)間單位,Verilog HDL模擬器會(huì)指定模擬器會(huì)指定一個(gè)缺省時(shí)間單位。一個(gè)缺省時(shí)間單位。qIEEE Verilog HDL標(biāo)準(zhǔn)中沒有規(guī)定缺省時(shí)間單位。標(biāo)準(zhǔn)中沒有規(guī)定缺省時(shí)間單位。第11頁,共34頁。數(shù)據(jù)流描述數(shù)

13、據(jù)流描述q一般使用連續(xù)賦值一般使用連續(xù)賦值assign語句描述,主要語句描述,主要用于組合邏輯電路建模。用于組合邏輯電路建模。module mux2_1(out1, a, b, sel) ; output out1; input a, b; input sel;assign out1=(sel & b) | (sel & a);endmodulemodule mux2_1(out1, a, b, sel) ; output out1; input a, b; input sel;assign out1= sel ? b : a;endmodule第12頁,共34頁。行為描述行為

14、描述q一般使用一般使用Initial或或Always語句描述,可以語句描述,可以對(duì)組合、時(shí)序邏輯電路建模。對(duì)組合、時(shí)序邏輯電路建模。module mux2_1(out1, a, b, sel) ; output out1; input a, b; input sel;always (sel or a or b)begin case (sel) 1b0 : out1 = a; 1b1 : out1 = b; endcaseendendmodulemodule mux2_1(out1, a, b, sel) ; output out1; input a, b; input sel;always (

15、sel or a or b)begin if (sel) out1 = b; else out1 = a;endendmodule第13頁,共34頁。結(jié)構(gòu)描述結(jié)構(gòu)描述q一般使用一般使用內(nèi)部元件(內(nèi)部元件(Primitive)、自定義的下層模塊對(duì)電路進(jìn)、自定義的下層模塊對(duì)電路進(jìn)行描述。主要用于層次化設(shè)計(jì)中。行描述。主要用于層次化設(shè)計(jì)中。module mux2_1(out1,a,b,sel); output out1; input a,b,sel; not (sel_, sel);and (a1, a, sel_);and (b1, b, sel_);or (out1, a1, b1);endmo

16、dule第14頁,共34頁?;旌显O(shè)計(jì)描述混合設(shè)計(jì)描述q結(jié)構(gòu)結(jié)構(gòu)和和行為行為描述方式可以自由混合。模塊描述中可以包含實(shí)例化描述方式可以自由混合。模塊描述中可以包含實(shí)例化的門、模塊實(shí)例化語句、連續(xù)賦值語句以及的門、模塊實(shí)例化語句、連續(xù)賦值語句以及a l w a y s語句和語句和i n i t i a l語句的混合。它們之間可以相互包含。語句的混合。它們之間可以相互包含。q來自來自a l w a y s語句和語句和i n i t i a l語句(語句(切記只有寄存器類型數(shù)據(jù)可切記只有寄存器類型數(shù)據(jù)可以在這兩種語句中賦值以在這兩種語句中賦值)的值能夠驅(qū)動(dòng)門或開關(guān)。)的值能夠驅(qū)動(dòng)門或開關(guān)。q而來自于門

17、或連續(xù)賦值語句(而來自于門或連續(xù)賦值語句(只能驅(qū)動(dòng)線網(wǎng)只能驅(qū)動(dòng)線網(wǎng))的值能夠反過來用)的值能夠反過來用于觸發(fā)于觸發(fā)a l w a y s語句和語句和i n i t i a l語句。語句。第15頁,共34頁?;旌显O(shè)計(jì)描述混合設(shè)計(jì)描述q實(shí)例:混合設(shè)計(jì)方式的實(shí)例:混合設(shè)計(jì)方式的1位全加器位全加器module FA_Mix(A,B,Cin,Sum,Cout); input A,B,Cin; output Sum,Cout; reg Cout; reg T1,T2,T3; wire S1;xor X1(S1,A,B); /門實(shí)例語句門實(shí)例語句always (A or B or Cin) /always

18、語句語句begin T1 = A & B; T2 = A & Cin; T3 = B & Cin; Cout = (T1 | T2) | T3;endassign Sum = S1 Cin; /連續(xù)賦值語句連續(xù)賦值語句endmodule 第16頁,共34頁。Verilog 基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)q間隔符:空格、間隔符:空格、TAB鍵、換行符及換頁符鍵、換行符及換頁符q注釋注釋單行注釋用單行注釋用/標(biāo)志起頭和回車符結(jié)尾標(biāo)志起頭和回車符結(jié)尾多行注釋用多行注釋用/*標(biāo)志起頭和標(biāo)志起頭和*/標(biāo)志結(jié)尾標(biāo)志結(jié)尾q標(biāo)識(shí)符標(biāo)識(shí)符可以是任意一組字母、數(shù)字、可以是任意一組字母、數(shù)字、$符號(hào)和符號(hào)

19、和_(下劃線下劃線)符號(hào)的組合;符號(hào)的組合;必須是由字母或下劃線開頭,長度小于必須是由字母或下劃線開頭,長度小于1024字符;字符;轉(zhuǎn)義標(biāo)識(shí)符以反斜杠轉(zhuǎn)義標(biāo)識(shí)符以反斜杠“”開頭,以空白符結(jié)尾的任何字符序列;開頭,以空白符結(jié)尾的任何字符序列;標(biāo)識(shí)符區(qū)分大、小寫。標(biāo)識(shí)符區(qū)分大、小寫。q關(guān)鍵詞:關(guān)鍵詞:Verilog HDL 內(nèi)部已使用的詞,關(guān)鍵詞都是小寫。內(nèi)部已使用的詞,關(guān)鍵詞都是小寫。q格式:區(qū)分大小寫。自由格式,即結(jié)構(gòu)可以跨越多行編寫。格式:區(qū)分大小寫。自由格式,即結(jié)構(gòu)可以跨越多行編寫。第17頁,共34頁。Verilog 基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)q系統(tǒng)任務(wù)和函數(shù)系統(tǒng)任務(wù)和函數(shù)以以$字符開始的標(biāo)識(shí)符表示

20、系統(tǒng)任務(wù)或系統(tǒng)函數(shù);字符開始的標(biāo)識(shí)符表示系統(tǒng)任務(wù)或系統(tǒng)函數(shù);任務(wù)提供了一種封裝行為的機(jī)制,任務(wù)可以返回任務(wù)提供了一種封裝行為的機(jī)制,任務(wù)可以返回0個(gè)或多個(gè)值;個(gè)或多個(gè)值;函數(shù)除只能返回一個(gè)值以外與任務(wù)相同;函數(shù)除只能返回一個(gè)值以外與任務(wù)相同;函數(shù)在函數(shù)在0時(shí)刻執(zhí)行,即不允許延遲,而任務(wù)可以帶有延遲。時(shí)刻執(zhí)行,即不允許延遲,而任務(wù)可以帶有延遲。q編譯指令:以編譯指令:以(反引號(hào)反引號(hào))開始的某些標(biāo)識(shí)符開始的某些標(biāo)識(shí)符define和和undef,ifdef、else和和 endif,default_nettypeinclude,resetall,timescaleunconneted_drive和

21、和nounconnected_drivecelldefine和和endcelldefine第18頁,共34頁。Verilog 基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)q四種基本的值四種基本的值0:邏輯:邏輯0或或“假假”1:邏輯:邏輯1或或“真真”x:未知:未知z:高阻:高阻q三類常量三類常量整型數(shù):簡單的十進(jìn)制格式,基數(shù)格式(整型數(shù):簡單的十進(jìn)制格式,基數(shù)格式(5O37,4B1x_01)實(shí)數(shù):十進(jìn)制計(jì)數(shù)法,科學(xué)計(jì)數(shù)法實(shí)數(shù):十進(jìn)制計(jì)數(shù)法,科學(xué)計(jì)數(shù)法字符串:字符串是雙引號(hào)的字符序列,字符串不能分成多行書寫字符串:字符串是雙引號(hào)的字符序列,字符串不能分成多行書寫q參數(shù)參數(shù)參數(shù)是一個(gè)常量,經(jīng)常用于定義時(shí)延和變量的寬度。參數(shù)

22、是一個(gè)常量,經(jīng)常用于定義時(shí)延和變量的寬度。信號(hào)等級(jí)信號(hào)等級(jí)信信 號(hào)號(hào) 強(qiáng)強(qiáng) 度度關(guān)關(guān) 鍵鍵 字字7Supply Drivesupply0supply16Strong Drivestrong0strong15Pull Drivepull0pull14Large Capacitancelarge3Weak Driveweak0weak12Medium Capacitancemedium1Small Capacitancesmall0Hi Impedance (no drive)highz0highz1第19頁,共34頁。Verilog 基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)q數(shù)據(jù)類型數(shù)據(jù)類型線網(wǎng)類型。線網(wǎng)類型。net

23、type表示表示Verilog結(jié)構(gòu)化元件間的物理連線。結(jié)構(gòu)化元件間的物理連線。它的值由驅(qū)動(dòng)元件的值決定;如果沒有驅(qū)動(dòng)元件連接到線它的值由驅(qū)動(dòng)元件的值決定;如果沒有驅(qū)動(dòng)元件連接到線網(wǎng),線網(wǎng)的缺省值為網(wǎng),線網(wǎng)的缺省值為z。寄存器類型。寄存器類型。register type表示一個(gè)抽象的數(shù)據(jù)存儲(chǔ)單元,它只能表示一個(gè)抽象的數(shù)據(jù)存儲(chǔ)單元,它只能在在always語句和語句和initial語句中被賦值,并且它的值從一個(gè)賦值語句中被賦值,并且它的值從一個(gè)賦值到另一個(gè)賦值被保存下來。寄存器類型的變量具有到另一個(gè)賦值被保存下來。寄存器類型的變量具有x的缺省的缺省值。值。第20頁,共34頁。Verilog 基礎(chǔ)知識(shí)

24、基礎(chǔ)知識(shí)qNets數(shù)據(jù)類型:表示元件之間的結(jié)構(gòu)化連接數(shù)據(jù)類型:表示元件之間的結(jié)構(gòu)化連接wire和和tri線網(wǎng):是最常見的線網(wǎng)類型。線網(wǎng):是最常見的線網(wǎng)類型。wor和和trior線網(wǎng):如果某個(gè)驅(qū)動(dòng)源為線網(wǎng):如果某個(gè)驅(qū)動(dòng)源為1,那么線網(wǎng)的值也為,那么線網(wǎng)的值也為1。wand和和triand線網(wǎng):如果某個(gè)驅(qū)動(dòng)源為線網(wǎng):如果某個(gè)驅(qū)動(dòng)源為0,那么線網(wǎng)的值為,那么線網(wǎng)的值為0。trireg線網(wǎng):此線網(wǎng)存儲(chǔ)數(shù)值(類似于寄存器),并且用于電容節(jié)點(diǎn)的建模。線網(wǎng):此線網(wǎng)存儲(chǔ)數(shù)值(類似于寄存器),并且用于電容節(jié)點(diǎn)的建模。tri0和和tri1線網(wǎng):這類線網(wǎng)可用于線邏輯的建模,即線網(wǎng)有多于一個(gè)驅(qū)動(dòng)線網(wǎng):這類線網(wǎng)可用于線

25、邏輯的建模,即線網(wǎng)有多于一個(gè)驅(qū)動(dòng)源。源。supply0和和supply1線網(wǎng):線網(wǎng):supply0用于對(duì)用于對(duì)“地地”建模,即低電平建模,即低電平0;supply1用于對(duì)用于對(duì)電源建模,即高電平電源建模,即高電平1。第21頁,共34頁。Verilog 基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)qRegister數(shù)據(jù)類型:在程序塊中作變量用,對(duì)信號(hào)賦值需要用該數(shù)據(jù)數(shù)據(jù)類型:在程序塊中作變量用,對(duì)信號(hào)賦值需要用該數(shù)據(jù)類型,賦值時(shí)用關(guān)鍵字類型,賦值時(shí)用關(guān)鍵字initial或或always開始。開始。reg寄存器類型:是最常見的數(shù)據(jù)類型寄存器類型:是最常見的數(shù)據(jù)類型.integer寄存器類型:整數(shù)寄存器包含整數(shù)值,可以作為普通

26、寄存器使用,寄存器類型:整數(shù)寄存器包含整數(shù)值,可以作為普通寄存器使用,典型應(yīng)用為高層次行為建模。典型應(yīng)用為高層次行為建模。time類型:用于存儲(chǔ)和處理時(shí)間。類型:用于存儲(chǔ)和處理時(shí)間。real和和realtime類型:實(shí)數(shù)寄存器(或?qū)崝?shù)時(shí)間寄存器)。類型:實(shí)數(shù)寄存器(或?qū)崝?shù)時(shí)間寄存器)。第22頁,共34頁。Verilog 表達(dá)式表達(dá)式q操作數(shù)操作數(shù)常數(shù),參數(shù),線網(wǎng),寄存器,位選擇,部分選擇,存儲(chǔ)器單元,函數(shù)調(diào)用。常數(shù),參數(shù),線網(wǎng),寄存器,位選擇,部分選擇,存儲(chǔ)器單元,函數(shù)調(diào)用。q標(biāo)量線網(wǎng):標(biāo)量線網(wǎng):線寬只有一條的連線,位數(shù)只有一位的寄存器。線寬只有一條的連線,位數(shù)只有一位的寄存器。q向量線網(wǎng):向

27、量線網(wǎng):線寬大于一條的連線,位數(shù)大于一位的寄存器。線寬大于一條的連線,位數(shù)大于一位的寄存器。q向量線網(wǎng)可選用關(guān)鍵詞向量線網(wǎng)可選用關(guān)鍵詞scalared或或vectored定義。如果一個(gè)線網(wǎng)定義時(shí)定義。如果一個(gè)線網(wǎng)定義時(shí)使用了關(guān)鍵詞使用了關(guān)鍵詞vectored,那么就不允許位選擇和部分選擇該線網(wǎng)。,那么就不允許位選擇和部分選擇該線網(wǎng)。換句話說,必須對(duì)線網(wǎng)整體賦值。換句話說,必須對(duì)線網(wǎng)整體賦值。q存儲(chǔ)器的表示(存儲(chǔ)器的表示(Memory):存儲(chǔ)器是一個(gè)寄存器數(shù)組。:存儲(chǔ)器是一個(gè)寄存器數(shù)組。q宏文本替換(宏文本替換(define):):define指令用于文本替換,它很像指令用于文本替換,它很像C語

28、言中的語言中的#define 指令,如:指令,如:define MAX_BUS_SIZE 32第23頁,共34頁。Verilog 表達(dá)式表達(dá)式q運(yùn)算符(運(yùn)算符(9類)類)算術(shù)運(yùn)算符:算術(shù)運(yùn)算符: +、-、*、/、%位運(yùn)算符:位運(yùn)算符: 、&、|、縮位運(yùn)算符(單目):縮位運(yùn)算符(單目): &、&、|、|、邏輯運(yùn)算符:邏輯運(yùn)算符: !、&、|關(guān)系運(yùn)算符(雙目):關(guān)系運(yùn)算符(雙目): 、=相等與全等運(yùn)算符:相等與全等運(yùn)算符: =、!=、=、!=邏輯移位運(yùn)算符:邏輯移位運(yùn)算符: 連接運(yùn)算符:連接運(yùn)算符: 條件運(yùn)算符:條件運(yùn)算符: ?:第24頁,共34頁。門電平模型化門電

29、平模型化q在在Verilog HDL語言中已預(yù)定義了門級(jí)原型語言中已預(yù)定義了門級(jí)原型 and n-input AND gate nand n-input NAND bate or n-input OR gate nor n-input NOR gate xor n-input exclusive OR gate xnor n-input exclusive NOR gate buf n-output buffer not n-output inverter bufif0 tri-state buffer; Io enable bufif1 tri-state buffer; hi enable

30、 notif0 tri-state inverter; Io enable notif1 tri-state inverter; hi enable第25頁,共34頁。門電平模型化門電平模型化q在在Verilog HDL語言中已預(yù)定義了單向和雙向的晶體管級(jí)語言中已預(yù)定義了單向和雙向的晶體管級(jí)原型原型Pmos uni-directional PMOS switch rpmos resistive PMOS switchnmos uni-directional NMOS switch rnmos resistive NMOS switchcmos uni-directional CMOS swit

31、ch rcmos resistive CMOS switch pullup pullup resistor tran bi-directional pass transistor rtran resistive pass transistor tranif0 bi-directional trnasistor;Io enable rtranif resistive transitor; Io enable tranif1 bi-directional transistor;hi enable rtranif1 resistive transistor; hi enable pulldow pu

32、lldown resistor第26頁,共34頁。用戶定義的原語用戶定義的原語qUDP的定義的定義primitive UDP_name (OutputName, List_of_inputs) Output_declaration List_of_input_declarations Reg_declaration Initial_statement table List_of_tabel_entries endtableendprimitive第27頁,共34頁。用戶定義的原語用戶定義的原語q在組合電路在組合電路UDP中,表規(guī)定了不同的輸入組合和相對(duì)應(yīng)的輸出中,表規(guī)定了不同的輸入組合和相對(duì)應(yīng)

33、的輸出值。值。q在時(shí)序電路在時(shí)序電路UDP中,使用中,使用1位寄存器描述內(nèi)部狀態(tài)。該寄存器的值是位寄存器描述內(nèi)部狀態(tài)。該寄存器的值是時(shí)序電路時(shí)序電路UDP的輸出值。共有兩種不同類型的時(shí)序的輸出值。共有兩種不同類型的時(shí)序 電路電路UDP:模擬電平觸發(fā)行為模擬電平觸發(fā)行為模擬邊沿觸發(fā)行為模擬邊沿觸發(fā)行為q時(shí)序電路時(shí)序電路UDP使用寄存器當(dāng)前值和輸入值決定寄存器的下一狀使用寄存器當(dāng)前值和輸入值決定寄存器的下一狀態(tài)(和后繼的輸出)。態(tài)(和后繼的輸出)。第28頁,共34頁。Verilog 程序設(shè)計(jì)程序設(shè)計(jì)qif-else 條件語句條件語句qcase 語句語句qfor循環(huán)語句循環(huán)語句 if (條件表達(dá)式條

34、件表達(dá)式) 塊語句塊語句1else if (條件表達(dá)式條件表達(dá)式2) 塊語句塊語句2else if (條件表達(dá)式條件表達(dá)式n) 塊語句塊語句nelse 塊語句塊語句n+1case (敏感表達(dá)式敏感表達(dá)式) 值值1: 塊語句塊語句1 值值2: 塊語句塊語句2 值值n: 塊語句塊語句n default:塊語句:塊語句n+1endcasefor (表達(dá)式表達(dá)式1;表達(dá)式;表達(dá)式2;表達(dá)式;表達(dá)式3)塊語句)塊語句第29頁,共34頁。Verilog 程序設(shè)計(jì)程序設(shè)計(jì)q賦值語句賦值語句q阻塞型過程賦值阻塞型過程賦值賦值算符賦值算符“” :前一條語句沒有完成賦值過程之前,后面的語句不可:前一條語句沒有完成

35、賦值過程之前,后面的語句不可能被執(zhí)行。能被執(zhí)行。q非阻塞型過程賦值非阻塞型過程賦值賦值算符賦值算符“” :一條非阻塞型賦值語句的執(zhí)行,并不會(huì)影響塊中其它語句的:一條非阻塞型賦值語句的執(zhí)行,并不會(huì)影響塊中其它語句的執(zhí)行。執(zhí)行。q連續(xù)賦值語句連續(xù)賦值語句只要輸入端操作數(shù)的值發(fā)生變化,該語句就重新計(jì)算并刷新賦值結(jié)果。用關(guān)鍵詞只要輸入端操作數(shù)的值發(fā)生變化,該語句就重新計(jì)算并刷新賦值結(jié)果。用關(guān)鍵詞assign來區(qū)分。來區(qū)分?;拘问剑夯拘问剑?;外部模式:外部模式: ;內(nèi)部模式:內(nèi)部模式: ;定時(shí)控制分為兩類:定時(shí)控制分為兩類:延時(shí)控制延時(shí)控制 事件控制事件控制 (事件控制敏感表)事件控制敏感表)第30頁,共34頁。Verilog 程序設(shè)計(jì)程序設(shè)計(jì)q任務(wù)(任務(wù)(task)q函數(shù)(函數(shù)(function) q任務(wù)和函數(shù)結(jié)構(gòu)之間的差異:任務(wù)和函數(shù)結(jié)構(gòu)之間的差異:一個(gè)任務(wù)塊可以含有一個(gè)任務(wù)塊可以含有時(shí)間控制結(jié)構(gòu)時(shí)間控制結(jié)構(gòu),而函數(shù)塊則沒有;而函數(shù)塊則沒有;一個(gè)任務(wù)塊可以有一個(gè)任務(wù)塊可以有輸入和輸出輸入和輸出,而,而函數(shù)塊必須有至少一個(gè)輸入,沒函數(shù)塊必須有至少一個(gè)輸入,沒有任何輸出;有任何輸出;任務(wù)塊的引發(fā)是通過任務(wù)塊的引發(fā)是通過一條語句一條語句,而函,而函數(shù)塊只有當(dāng)它被引用在一個(gè)數(shù)塊只有當(dāng)它被引用在一個(gè)表達(dá)式表達(dá)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論