




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1第三章第三章 硬件描述語(yǔ)言簡(jiǎn)介硬件描述語(yǔ)言簡(jiǎn)介Chapter 3 Intoduction of Hardware Description Language本章主要內(nèi)容本章主要內(nèi)容 第一節(jié)第一節(jié) 概述概述 第二節(jié)第二節(jié) VHDL簡(jiǎn)介簡(jiǎn)介 第三節(jié)第三節(jié) Verilog HDL簡(jiǎn)介簡(jiǎn)介2 HDL(Hardware Description Language)是一種國(guó)際上流行的描述數(shù)字電路和系統(tǒng)的語(yǔ)是一種國(guó)際上流行的描述數(shù)字電路和系統(tǒng)的語(yǔ)言,可以在言,可以在EDA工具的支持下,快速實(shí)現(xiàn)設(shè)計(jì)工具的支持下,快速實(shí)現(xiàn)設(shè)計(jì)者的設(shè)計(jì)意圖。者的設(shè)計(jì)意圖。 常用的常用的HDL語(yǔ)言有語(yǔ)言有VHDL 和和Verilog
2、 HDL兩兩種。種。3.1 概述33.1 概述pHDL功能:l描述數(shù)字系統(tǒng);描述數(shù)字系統(tǒng);l描述多個(gè)數(shù)字電路模塊之間的連接,組描述多個(gè)數(shù)字電路模塊之間的連接,組合成一個(gè)較大的系統(tǒng);合成一個(gè)較大的系統(tǒng);l建立測(cè)試激勵(lì)信號(hào)文件,在仿真環(huán)境中,建立測(cè)試激勵(lì)信號(hào)文件,在仿真環(huán)境中,對(duì)設(shè)計(jì)好的系統(tǒng)進(jìn)行調(diào)試驗(yàn)證。對(duì)設(shè)計(jì)好的系統(tǒng)進(jìn)行調(diào)試驗(yàn)證。4一、一、VHDL定義及發(fā)展簡(jiǎn)介。定義及發(fā)展簡(jiǎn)介。二、二、Verilog HDL概況及發(fā)展簡(jiǎn)介。概況及發(fā)展簡(jiǎn)介。 3.1 概述53.1.1 VHDL定義及發(fā)展簡(jiǎn)介p什么是VHDL?VHDL: V VHSIC (Very High Speed IntegratedHSIC
3、 (Very High Speed Integrated Circuit) Circuit) H Hardwareardware D Descriptionescription L Languageanguage63.1.1 VHDL定義及發(fā)展簡(jiǎn)介pVHDL定義及發(fā)展歷程;lVery High Speed Integrated Circuit Hardware Description Language:超高速集成電路硬件描述語(yǔ)言。l1980年開(kāi)始在美國(guó)國(guó)防部的指導(dǎo)下開(kāi)發(fā);l1987.12IEEE Std 1076-1987: VHDL87l1993 更新為IEEE Std 1164-1993,
4、 VHDL93lIEEE還成立了專(zhuān)門(mén)機(jī)構(gòu)推廣VHDL, VASG(VHDL Analysis and Standard Group)73.1.1 VHDL定義及發(fā)展簡(jiǎn)介pVHDL作用:1 1、VHDLVHDL打破軟、硬件的界限。打破軟、硬件的界限。 傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計(jì)分為:傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計(jì)分為: 硬件設(shè)計(jì)(硬件設(shè)計(jì)人員)硬件設(shè)計(jì)(硬件設(shè)計(jì)人員) 軟件設(shè)計(jì)(軟件設(shè)計(jì)人員)軟件設(shè)計(jì)(軟件設(shè)計(jì)人員) VHDLVHDL是電子系統(tǒng)設(shè)計(jì)者和是電子系統(tǒng)設(shè)計(jì)者和 EDA EDA工具之間的界面。工具之間的界面。 EDA EDA工具及工具及 HDLHDL的流行,使電子系統(tǒng)向集成化、大規(guī)模的流行,使電子系統(tǒng)向集成
5、化、大規(guī)模和高速度等方向發(fā)展。和高速度等方向發(fā)展。 美國(guó)硅谷約有美國(guó)硅谷約有80%80%的的 ASICASIC和和 FPGA/CPLDFPGA/CPLD已采用已采用 HDL HDL進(jìn)進(jìn)行設(shè)計(jì)。行設(shè)計(jì)。83.1.1 VHDL定義及發(fā)展簡(jiǎn)介pVHDL特點(diǎn);1 1、VHDLVHDL具有強(qiáng)大的語(yǔ)言結(jié)構(gòu),系統(tǒng)硬件描述能力強(qiáng)、設(shè)計(jì)效具有強(qiáng)大的語(yǔ)言結(jié)構(gòu),系統(tǒng)硬件描述能力強(qiáng)、設(shè)計(jì)效率高;具有較高的抽象描述能力。率高;具有較高的抽象描述能力。2 2、VHDLVHDL語(yǔ)言可讀性強(qiáng),易于修改和發(fā)現(xiàn)錯(cuò)誤。語(yǔ)言可讀性強(qiáng),易于修改和發(fā)現(xiàn)錯(cuò)誤。3 3、VHDLVHDL具有豐富的仿真語(yǔ)句和庫(kù)函數(shù),可對(duì)具有豐富的仿真語(yǔ)句和庫(kù)函
6、數(shù),可對(duì)VHDLVHDL源代碼進(jìn)行源代碼進(jìn)行早期功能仿真,有利于大系統(tǒng)的設(shè)計(jì)與驗(yàn)證。早期功能仿真,有利于大系統(tǒng)的設(shè)計(jì)與驗(yàn)證。4 4、VHDLVHDL設(shè)計(jì)與硬件電路關(guān)系不大。設(shè)計(jì)與硬件電路關(guān)系不大。 5 5、VHDLVHDL設(shè)計(jì)不依賴(lài)于器件,與工藝無(wú)關(guān)設(shè)計(jì)不依賴(lài)于器件,與工藝無(wú)關(guān) 。6 6、移植性好。、移植性好。 7 7、VHDLVHDL體系符合體系符合TOP-DOWNTOP-DOWN和和CECE(并行工程)設(shè)計(jì)思想。(并行工程)設(shè)計(jì)思想。8 8、VHDLVHDL設(shè)計(jì)效率高,產(chǎn)品上市時(shí)間快,成本低。設(shè)計(jì)效率高,產(chǎn)品上市時(shí)間快,成本低。9 9、易于、易于ASICASIC實(shí)現(xiàn)。實(shí)現(xiàn)。93.1.2 V
7、erilog HDL概況及發(fā)展簡(jiǎn)介pVerilog HDL的定義lVerilog HDL是硬件描述語(yǔ)言的一種,用于數(shù)是硬件描述語(yǔ)言的一種,用于數(shù)字電子系統(tǒng)設(shè)計(jì)。該語(yǔ)言允許設(shè)計(jì)者進(jìn)行各種字電子系統(tǒng)設(shè)計(jì)。該語(yǔ)言允許設(shè)計(jì)者進(jìn)行各種級(jí)別的邏輯設(shè)計(jì),進(jìn)行數(shù)字邏輯系統(tǒng)的仿真驗(yàn)級(jí)別的邏輯設(shè)計(jì),進(jìn)行數(shù)字邏輯系統(tǒng)的仿真驗(yàn)證、時(shí)序分析、邏輯綜合。它是目前應(yīng)用最廣證、時(shí)序分析、邏輯綜合。它是目前應(yīng)用最廣泛的一種硬件描述語(yǔ)言。泛的一種硬件描述語(yǔ)言。p Verilog于1983年首創(chuàng),1995年成為IEEE 1364-1995標(biāo)準(zhǔn)。103.1.2 Verilog HDL概況及發(fā)展簡(jiǎn)介p1983年:Gateway Des
8、ign Automation公司在C語(yǔ)言的基礎(chǔ)上,開(kāi)發(fā)了Verilog HDL。p1989年,Cadence收購(gòu)了GDA,1990年該公司成立OVI(Open Verilog International)組織,推廣該語(yǔ)言。p1995年: IEEE制定了IEEE標(biāo)準(zhǔn)IEEE 1364-1995標(biāo)準(zhǔn)。p2001年:發(fā)布了Verilog HDL 1364-2001標(biāo)準(zhǔn),加入了Verilog HDL-A標(biāo)準(zhǔn),使其具有描述模擬電路的能力。11其他HDL語(yǔ)言p其他HDL語(yǔ)言l最流行的最流行的HDL 語(yǔ)言是語(yǔ)言是Verilog 和和VHDL。 后來(lái)后來(lái)在其基礎(chǔ)上又發(fā)展出了許多抽象程度更高的硬在其基礎(chǔ)上又發(fā)展
9、出了許多抽象程度更高的硬件描述語(yǔ)言,如件描述語(yǔ)言,如SystemVerilog 、Superlog 、SystemC 和和CoWare C 等。這些高級(jí)等。這些高級(jí)HDL語(yǔ)語(yǔ)言的語(yǔ)法結(jié)構(gòu)更加豐富,更適合用于系統(tǒng)級(jí)、言的語(yǔ)法結(jié)構(gòu)更加豐富,更適合用于系統(tǒng)級(jí)、功能級(jí)等高層次的設(shè)計(jì)描述和仿真。功能級(jí)等高層次的設(shè)計(jì)描述和仿真。12其他HDL語(yǔ)言13l相同點(diǎn):相同點(diǎn):都可以借助類(lèi)似高級(jí)語(yǔ)言的特性來(lái)抽象描述數(shù)字電路的結(jié)構(gòu)和功能,都可以對(duì)設(shè)計(jì)出來(lái)的電路進(jìn)行驗(yàn)證和仿真,以確保電路的正確性,以及都可以實(shí)現(xiàn)電路描述與工藝實(shí)現(xiàn)的分離。l 不同點(diǎn):不同點(diǎn):Verilog具有較多的第三方工具的支持;語(yǔ)法結(jié)構(gòu)比VHDL簡(jiǎn)單
10、;Verilog 類(lèi)C,學(xué)習(xí)起來(lái)比VHDL容易。3.1 概述14VerilogVHDL系統(tǒng)級(jí)系統(tǒng)級(jí)算法級(jí)算法級(jí)寄存器傳輸級(jí)寄存器傳輸級(jí)邏輯門(mén)級(jí)邏輯門(mén)級(jí)開(kāi)關(guān)電路級(jí)開(kāi)關(guān)電路級(jí)Verilog與與VHDL建模能力比較建模能力比較3.1 概述153.2 VHDL簡(jiǎn)介一、一、VHDL設(shè)計(jì)描述的基本結(jié)構(gòu)。設(shè)計(jì)描述的基本結(jié)構(gòu)。二、數(shù)據(jù)類(lèi)型、詞法、運(yùn)算符、對(duì)象、屬性。二、數(shù)據(jù)類(lèi)型、詞法、運(yùn)算符、對(duì)象、屬性。 三、三、VHDL語(yǔ)句、庫(kù)和語(yǔ)句、庫(kù)和use子句子句四、四、VHDL設(shè)計(jì)實(shí)體及舉例設(shè)計(jì)實(shí)體及舉例16pVHDL設(shè)計(jì)簡(jiǎn)述lVHDL主要用于描述數(shù)字系統(tǒng)的主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行結(jié)構(gòu)、行為、功能和接口為、功
11、能和接口。l VHDL將一個(gè)設(shè)計(jì)將一個(gè)設(shè)計(jì)(元件、電路、系統(tǒng)元件、電路、系統(tǒng))分分為:為: 外部(可視部分、端口) 內(nèi)部(不可視部分、內(nèi)部功能、算法)3.2 VHDL簡(jiǎn)介17p外部與內(nèi)部:3.2 VHDL簡(jiǎn)介器件或子系統(tǒng) ARCHITECTURE Process ProcessENTITYSequentialProcessCombinational Processportsportscomponentportsports18pVHDL語(yǔ)言的一些基本特點(diǎn):lVHDL語(yǔ)言由保留關(guān)鍵字組成;語(yǔ)言由保留關(guān)鍵字組成;l一般,一般,VHDL語(yǔ)言對(duì)字母大小寫(xiě)不敏感;語(yǔ)言對(duì)字母大小寫(xiě)不敏感; 例外:例外: 、
12、“ ”所括的字符、字符串;所括的字符、字符串;l每條每條VHDL語(yǔ)句由一個(gè)分號(hào)(;)結(jié)束;語(yǔ)句由一個(gè)分號(hào)(;)結(jié)束;lVHDL語(yǔ)言對(duì)空格不敏感,增加可讀性;語(yǔ)言對(duì)空格不敏感,增加可讀性;l在在“-”之后的是之后的是VHDL的注釋語(yǔ)句;的注釋語(yǔ)句;lVHDL有以下描述風(fēng)格:有以下描述風(fēng)格:行為描述;數(shù)據(jù)流(寄存器傳輸RTL)描述;結(jié)構(gòu)化描述; 3.2 VHDL簡(jiǎn)介19p基本結(jié)構(gòu)包括:l實(shí)體(實(shí)體(Entity)l結(jié)構(gòu)體(結(jié)構(gòu)體(Architecture)l配置(配置(Configuration)l庫(kù)(庫(kù)(Library)、程序包()、程序包(Package)VHDL程序基本結(jié)構(gòu)20VHDL程序基
13、本結(jié)構(gòu) 庫(kù)、程序包庫(kù)、程序包 實(shí)體(實(shí)體(Entity) 結(jié)構(gòu)體結(jié)構(gòu)體 (Architecture) 進(jìn)程或其它進(jìn)程或其它并行結(jié)構(gòu)并行結(jié)構(gòu) 配置(配置(Configuration)212 2 選選 1 1 選擇器選擇器:VHDL程序基本結(jié)構(gòu)22一、實(shí)體一、實(shí)體 實(shí)體(說(shuō)明):實(shí)體(說(shuō)明): 定義系統(tǒng)的輸入輸出端口定義系統(tǒng)的輸入輸出端口 語(yǔ)法:語(yǔ)法: ENTITY IS Generic Declarations Port DeclarationsEND ; (1076-1987 version)END ENTITY ; ( 1076-1993 version)VHDL程序基本結(jié)構(gòu)233.2 VH
14、DL簡(jiǎn)介1 1、類(lèi)屬說(shuō)明、類(lèi)屬說(shuō)明 確定實(shí)體或組件中定義的局部常數(shù)。模塊化確定實(shí)體或組件中定義的局部常數(shù)。模塊化設(shè)計(jì)時(shí)多用于不同層次模塊之間信息的傳遞。設(shè)計(jì)時(shí)多用于不同層次模塊之間信息的傳遞??蓮耐獠扛淖儍?nèi)部電路結(jié)構(gòu)和規(guī)模??蓮耐獠扛淖儍?nèi)部電路結(jié)構(gòu)和規(guī)模。 類(lèi)屬說(shuō)明類(lèi)屬說(shuō)明必須放在端口說(shuō)明之前必須放在端口說(shuō)明之前。 Generic (Generic ( 常數(shù)名稱(chēng):類(lèi)型常數(shù)名稱(chēng):類(lèi)型 := = 缺省值缺省值 常數(shù)名稱(chēng):類(lèi)型常數(shù)名稱(chēng):類(lèi)型 := = 缺省值缺省值 ) );一、實(shí)體一、實(shí)體243.2 VHDL簡(jiǎn)介1 1、類(lèi)屬常用于定義:、類(lèi)屬常用于定義: 實(shí)體端口的大小、設(shè)計(jì)實(shí)體的物理特性、總實(shí)體端
15、口的大小、設(shè)計(jì)實(shí)體的物理特性、總線寬度、元件例化的數(shù)量等。線寬度、元件例化的數(shù)量等。例:例: entity mck isentity mck is generic(width: integer:=16);generic(width: integer:=16); port(add_bus:out std_logic_vector port(add_bus:out std_logic_vector ( (width-1width-1 downto 0); downto 0); 一、實(shí)體一、實(shí)體253.2 VHDL簡(jiǎn)介例:例:2 2輸入與門(mén)的實(shí)體描述輸入與門(mén)的實(shí)體描述 entity and2 ise
16、ntity and2 is generic(risewidth: time:= 1 ns;generic(risewidth: time:= 1 ns; fallwidth: time:= 1 ns); fallwidth: time:= 1 ns); port(a1: in std_logic; port(a1: in std_logic; a0: in std_logic; a0: in std_logic; z0: out std_loigc); z0: out std_loigc); end entity and2; end entity and2; 注:數(shù)據(jù)類(lèi)型注:數(shù)據(jù)類(lèi)型 time
17、 time 用于仿真模塊的設(shè)計(jì)。用于仿真模塊的設(shè)計(jì)。 綜合器僅支持?jǐn)?shù)據(jù)類(lèi)型為整數(shù)的類(lèi)屬值。綜合器僅支持?jǐn)?shù)據(jù)類(lèi)型為整數(shù)的類(lèi)屬值。263.2 VHDL簡(jiǎn)介其中,其中,端口模式:端口模式: in:in: 輸入型,此端口為只讀型。輸入型,此端口為只讀型。 out:out: 輸出型,只能在實(shí)體內(nèi)部對(duì)其賦值。輸出型,只能在實(shí)體內(nèi)部對(duì)其賦值。 inout:inout:輸入輸出型,既可讀也可賦值。輸入輸出型,既可讀也可賦值。 buffer:buffer: 緩沖型,與緩沖型,與 out out 相似,但可讀。相似,但可讀。Port Port ( ( 端口名稱(chēng)端口名稱(chēng) ,端口名稱(chēng),端口名稱(chēng) :端口模式端口模式 數(shù)
18、據(jù)類(lèi)型;數(shù)據(jù)類(lèi)型; 端口名稱(chēng)端口名稱(chēng) ,端口名稱(chēng),端口名稱(chēng) :端口模式:端口模式 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型 ) );2 2、端口聲明、端口聲明端口聲明:確定輸入、輸出端口的數(shù)目和類(lèi)型。端口聲明:確定輸入、輸出端口的數(shù)目和類(lèi)型。一、實(shí)體一、實(shí)體273.2 VHDL簡(jiǎn)介一、實(shí)體一、實(shí)體 指端口上流動(dòng)的數(shù)據(jù)的表達(dá)格式。為預(yù)先定義好指端口上流動(dòng)的數(shù)據(jù)的表達(dá)格式。為預(yù)先定義好的數(shù)據(jù)類(lèi)型。的數(shù)據(jù)類(lèi)型。 如:如:bitbit、bit_vectorbit_vector、integerinteger、 std_logicstd_logic、std_logic_vectorstd_logic_vector 等。等。例:例
19、:entity nand2 is entity m81 isentity nand2 is entity m81 is port ( port( port ( port( a,b:in a,b:in bitbit; a:in ; a:in bit_vectorbit_vector(7 downto 0); (7 downto 0); z: out z: out bitbit sel:in sel:in bit_vectorbit_vector(2 downto 0); (2 downto 0); ) ; b:out bit); ) ; b:out bit); end entity nand2;
20、 end entity m81;end entity nand2; end entity m81;3 3、數(shù)據(jù)類(lèi)型、數(shù)據(jù)類(lèi)型283.2 VHDL簡(jiǎn)介作用:定義系統(tǒng)(或模塊)的行為、元件及內(nèi)部作用:定義系統(tǒng)(或模塊)的行為、元件及內(nèi)部 的連接關(guān)系,即描述其邏輯功能。的連接關(guān)系,即描述其邏輯功能。兩個(gè)組成部分:兩個(gè)組成部分: 對(duì)數(shù)據(jù)類(lèi)型、常數(shù)、信號(hào)、子程序、元件等對(duì)數(shù)據(jù)類(lèi)型、常數(shù)、信號(hào)、子程序、元件等 元素的元素的說(shuō)明說(shuō)明部分。部分。 以各種不同的描述風(fēng)格描述的系統(tǒng)的邏輯功以各種不同的描述風(fēng)格描述的系統(tǒng)的邏輯功 能實(shí)現(xiàn)的部分。常用的描述風(fēng)格有:能實(shí)現(xiàn)的部分。常用的描述風(fēng)格有:行為描行為描 述、數(shù)據(jù)
21、流描述、述、數(shù)據(jù)流描述、 結(jié)構(gòu)化描述結(jié)構(gòu)化描述。二、結(jié)構(gòu)體二、結(jié)構(gòu)體293.2 VHDL簡(jiǎn)介結(jié)構(gòu)體結(jié)構(gòu)體說(shuō)明結(jié)構(gòu)體功能描述 常數(shù)說(shuō)明 數(shù)據(jù)類(lèi)型說(shuō)明 信號(hào)說(shuō)明 例化元件說(shuō)明 子程序說(shuō)明 塊語(yǔ)句 進(jìn)程語(yǔ)句 信號(hào)賦值語(yǔ)句 子程序調(diào)用語(yǔ)句 元件例化語(yǔ)句 303.2 VHDL簡(jiǎn)介實(shí)體與結(jié)構(gòu)體的關(guān)系:實(shí)體與結(jié)構(gòu)體的關(guān)系:設(shè)計(jì)實(shí)體結(jié)構(gòu)體1結(jié)構(gòu)體2結(jié)構(gòu)體3結(jié)構(gòu)體n。 一個(gè)設(shè)計(jì)實(shí)體可有多個(gè)結(jié)構(gòu)體,代表實(shí)體一個(gè)設(shè)計(jì)實(shí)體可有多個(gè)結(jié)構(gòu)體,代表實(shí)體的多種實(shí)現(xiàn)方式。各個(gè)結(jié)構(gòu)體的地位相同。的多種實(shí)現(xiàn)方式。各個(gè)結(jié)構(gòu)體的地位相同。313.2 VHDL簡(jiǎn)介注:同一實(shí)體的結(jié)構(gòu)體不能同名。定義語(yǔ)句中的注:同一實(shí)體的結(jié)構(gòu)體不能同名。定
22、義語(yǔ)句中的 常數(shù)、信號(hào)不能與實(shí)體中的端口同名。常數(shù)、信號(hào)不能與實(shí)體中的端口同名。architecturearchitecture 結(jié)構(gòu)體名稱(chēng) ofof 實(shí)體名稱(chēng) is 說(shuō)明語(yǔ)句內(nèi)部信號(hào)、常數(shù)、 數(shù)據(jù)類(lèi)型、子程序(函數(shù)、過(guò)程)、 元件等的說(shuō)明; beginbegin 并行處理(功能描述)語(yǔ)句; endend architecture 結(jié)構(gòu)體名稱(chēng);語(yǔ)法:語(yǔ)法:二、結(jié)構(gòu)體二、結(jié)構(gòu)體323.2 VHDL簡(jiǎn)介例:一個(gè)完整描述(例:一個(gè)完整描述(3 bit 3 bit 計(jì)數(shù)器)計(jì)數(shù)器)333.2 VHDL簡(jiǎn)介程序包:程序包: 已定義的常數(shù)、數(shù)據(jù)類(lèi)型、元件調(diào)用說(shuō)明、已定義的常數(shù)、數(shù)據(jù)類(lèi)型、元件調(diào)用說(shuō)明、子程
23、序的一個(gè)集合。子程序的一個(gè)集合。 目的:方便公共信息、資源的訪問(wèn)和共享。目的:方便公共信息、資源的訪問(wèn)和共享。庫(kù):庫(kù): 多個(gè)程序包構(gòu)成庫(kù)。多個(gè)程序包構(gòu)成庫(kù)。 三、程序包、庫(kù)三、程序包、庫(kù)343.2 VHDL簡(jiǎn)介程序包說(shuō)明的內(nèi)容:程序包說(shuō)明的內(nèi)容: 常量說(shuō)明;常量說(shuō)明; VHDLVHDL數(shù)據(jù)類(lèi)型說(shuō)明;數(shù)據(jù)類(lèi)型說(shuō)明; 元件說(shuō)明;元件說(shuō)明; 子程序說(shuō)明;子程序說(shuō)明;程序包的結(jié)構(gòu)包括:程序包的結(jié)構(gòu)包括: 程序包說(shuō)明(包首)程序包說(shuō)明(包首) 程序包主體(包體)程序包主體(包體)三、程序包、庫(kù)三、程序包、庫(kù)353.2 VHDL簡(jiǎn)介包聲明項(xiàng)可由以下語(yǔ)句組成:包聲明項(xiàng)可由以下語(yǔ)句組成: use use 語(yǔ)句
24、(用來(lái)包括其它程序包);語(yǔ)句(用來(lái)包括其它程序包); 類(lèi)型說(shuō)明;子類(lèi)型說(shuō)明;常量說(shuō)明;類(lèi)型說(shuō)明;子類(lèi)型說(shuō)明;常量說(shuō)明; 信號(hào)說(shuō)明;子程序說(shuō)明;元件說(shuō)明。信號(hào)說(shuō)明;子程序說(shuō)明;元件說(shuō)明。 package 程序包名 is 包說(shuō)明項(xiàng) end 程序包名;1 1、程序包說(shuō)明(包首)、程序包說(shuō)明(包首)語(yǔ)法:語(yǔ)法:三、程序包、庫(kù)三、程序包、庫(kù)363.2 VHDL簡(jiǎn)介三、程序包、庫(kù)三、程序包、庫(kù)包體說(shuō)明項(xiàng)可含:包體說(shuō)明項(xiàng)可含: use use 語(yǔ)句;子程序語(yǔ)句;子程序說(shuō)說(shuō)明;明;子程序主體子程序主體; 類(lèi)型類(lèi)型說(shuō)說(shuō)明;子類(lèi)型明;子類(lèi)型說(shuō)說(shuō)明;常量明;常量說(shuō)說(shuō)明。明。 package body 程序包名 is
25、 包體說(shuō)明項(xiàng) end 程序包名;2 2、程序包包體、程序包包體程序包的內(nèi)容:程序包的內(nèi)容:子程序的實(shí)現(xiàn)算法子程序的實(shí)現(xiàn)算法。包體語(yǔ)法:包體語(yǔ)法:373.2 VHDL簡(jiǎn)介3 3、庫(kù)的種類(lèi)、庫(kù)的種類(lèi) VHDLVHDL庫(kù)可分為庫(kù)可分為 5 5種:種: 1 1)IEEE IEEE 庫(kù)庫(kù) 定義了四個(gè)常用的程序包: std_logic_1164 std_logic_1164 (std_logic types & related functions) std_logic_arith std_logic_arith (arithmetic functions) std_logic_signed std
26、_logic_signed (signed arithmetic functions) std_logic_unsigned std_logic_unsigned (unsigned arithmetic functions)三、程序包、庫(kù)三、程序包、庫(kù)383.2 VHDL簡(jiǎn)介 2 2)STD STD 庫(kù)(默認(rèn)庫(kù))庫(kù)(默認(rèn)庫(kù)) 庫(kù)中程序包為:庫(kù)中程序包為:standardstandard, 定義最基本的數(shù)據(jù)類(lèi)型:定義最基本的數(shù)據(jù)類(lèi)型: BitBit,bit_vector bit_vector ,BooleanBoolean, IntegerInteger,RealReal,and Timean
27、d Time 注:注:Type BitType Bit 2 logic value system (0, 2 logic value system (0, 1)1) 3 3)面向)面向ASICASIC的庫(kù)的庫(kù) 4 4)WORKWORK庫(kù)(默認(rèn)庫(kù))庫(kù)(默認(rèn)庫(kù)) 5 5)用戶定義庫(kù))用戶定義庫(kù)3 3、庫(kù)的種類(lèi)、庫(kù)的種類(lèi) 三、程序包、庫(kù)三、程序包、庫(kù)393.2 VHDL簡(jiǎn)介4 4、庫(kù)及程序包的使用、庫(kù)及程序包的使用 庫(kù)及程序包的說(shuō)明總是放在實(shí)體單元前面,庫(kù)及程序包的說(shuō)明總是放在實(shí)體單元前面,默認(rèn)庫(kù)及程序包可不作說(shuō)明。用關(guān)健字默認(rèn)庫(kù)及程序包可不作說(shuō)明。用關(guān)健字librarylibrary 說(shuō)明要使用的
28、庫(kù),用關(guān)健字說(shuō)明要使用的庫(kù),用關(guān)健字 use use 說(shuō)明要使用的庫(kù)中的程說(shuō)明要使用的庫(kù)中的程序包。序包。 庫(kù)及程序包的作用范圍:僅限于所說(shuō)明的設(shè)計(jì)實(shí)體。庫(kù)及程序包的作用范圍:僅限于所說(shuō)明的設(shè)計(jì)實(shí)體。 每一個(gè)設(shè)計(jì)實(shí)體都必須有自已完整的庫(kù)及程序包說(shuō)每一個(gè)設(shè)計(jì)實(shí)體都必須有自已完整的庫(kù)及程序包說(shuō)明語(yǔ)句。明語(yǔ)句。三、程序包、庫(kù)三、程序包、庫(kù)403.2 VHDL簡(jiǎn)介庫(kù)的使用語(yǔ)法:庫(kù)的使用語(yǔ)法:程序包的使用有兩種常用格式:程序包的使用有兩種常用格式: 例:例: library ieeelibrary ieee; use ieee.std_logic_1164.alluse ieee.std_logic_1
29、164.all; use ieee.std_logic_unsigned.conv_integer;use ieee.std_logic_unsigned.conv_integer; library 庫(kù)名;庫(kù)名; use 庫(kù)名程序包名項(xiàng)目名庫(kù)名程序包名項(xiàng)目名 use 庫(kù)名程序包名庫(kù)名程序包名All;41VHDL語(yǔ)言要素四類(lèi)語(yǔ)言要素:四類(lèi)語(yǔ)言要素: 數(shù)據(jù)對(duì)象數(shù)據(jù)對(duì)象(Data ObjectData Object) 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型(Data TypeData Type) 操作數(shù)操作數(shù)(OperandsOperands) 操作符操作符(OperatorOperator)42p一、VHDL文字規(guī)則l
30、1、數(shù)字型文字;、數(shù)字型文字;l2、字符串型文字(文字串和數(shù)字串);、字符串型文字(文字串和數(shù)字串);l3、標(biāo)識(shí)符;、標(biāo)識(shí)符;l4、下標(biāo)名及下標(biāo)段名;、下標(biāo)名及下標(biāo)段名;VHDL語(yǔ)言要素43二、數(shù)據(jù)對(duì)象二、數(shù)據(jù)對(duì)象 三種對(duì)象:三種對(duì)象:常量(常量(ConstantConstant) 變量(變量(VariableVariable) 信號(hào)(信號(hào)(SignalSignal) 三種對(duì)象的物理含義:三種對(duì)象的物理含義: 常量常量代表數(shù)字電路中的電源、地、恒定邏代表數(shù)字電路中的電源、地、恒定邏 輯值等常數(shù);輯值等常數(shù); 變量變量代表代表暫存暫存某些值的載體,常用于描述某些值的載體,常用于描述 算法;算法;
31、 信號(hào)信號(hào)代表物理設(shè)計(jì)中的某一條硬件連接線,代表物理設(shè)計(jì)中的某一條硬件連接線, 包括輸入、輸出端口。包括輸入、輸出端口。VHDL語(yǔ)言要素44三、三、VHDLVHDL數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型 VHDLVHDL是一種強(qiáng)數(shù)據(jù)類(lèi)型語(yǔ)言。是一種強(qiáng)數(shù)據(jù)類(lèi)型語(yǔ)言。 要求設(shè)計(jì)實(shí)體中的每一個(gè)常數(shù)、信號(hào)、變量、要求設(shè)計(jì)實(shí)體中的每一個(gè)常數(shù)、信號(hào)、變量、函數(shù)以及設(shè)定的各種參量都必須具有確定的數(shù)據(jù)類(lèi)函數(shù)以及設(shè)定的各種參量都必須具有確定的數(shù)據(jù)類(lèi)型,并且相同數(shù)據(jù)類(lèi)型的量才能互相傳遞和作用。型,并且相同數(shù)據(jù)類(lèi)型的量才能互相傳遞和作用。 VHDLVHDL數(shù)據(jù)類(lèi)型分為四大類(lèi):數(shù)據(jù)類(lèi)型分為四大類(lèi): 標(biāo)量類(lèi)型(標(biāo)量類(lèi)型(SCALAR TYP
32、ESCALAR TYPE);); 復(fù)合類(lèi)型(復(fù)合類(lèi)型(COMPOSITE TYPECOMPOSITE TYPE);); 存取類(lèi)型(存取類(lèi)型(ACCESS TYPEACCESS TYPE);); 文件類(lèi)型(文件類(lèi)型(FILES TYPEFILES TYPE)。)。VHDL語(yǔ)言要素45四、四、VHDLVHDL中的表達(dá)式中的表達(dá)式 表達(dá)式:表達(dá)式:由操作符和操作數(shù)構(gòu)成,完成算術(shù)或 邏輯運(yùn)算。 1 1、操作符、操作符 VHDL操作符的分類(lèi): 邏輯操作符(Logical Operator)、 關(guān)系操作符(Relational Operator)、 算術(shù)操作符(Arithmetic Operator)、
33、重載操作符(Overloading Operator) VHDL語(yǔ)言要素462 2、操作數(shù)、操作數(shù) 操作數(shù): 操作符進(jìn)行運(yùn)算時(shí)所需的數(shù)據(jù)。 操作數(shù)的種類(lèi): 標(biāo)志符;集合;屬性;表達(dá)式;函數(shù) 調(diào)用;索引名;文字;限定表達(dá)式;記 錄和域;片段名;類(lèi)型轉(zhuǎn)換; 四、四、VHDLVHDL中的表達(dá)式中的表達(dá)式VHDL語(yǔ)言要素473 3、重載操作符、重載操作符 VHDL是強(qiáng)類(lèi)型語(yǔ)言,相同類(lèi)型的操作數(shù)才能進(jìn)行操作。VHDL自身定義的算術(shù)和布爾函數(shù)僅對(duì)內(nèi)部數(shù)據(jù)類(lèi)型(standard 程序包中的數(shù)據(jù)類(lèi)型)有效。即: 算術(shù)運(yùn)算符算術(shù)運(yùn)算符+,-, = +,-, = 僅對(duì)僅對(duì)integerinteger類(lèi)型有類(lèi)型有效
34、。邏輯運(yùn)算符效。邏輯運(yùn)算符AND, OR, NOTAND, OR, NOT僅對(duì)僅對(duì) bit bit 類(lèi)型有效。類(lèi)型有效。 如: variable a,b,c :integer; variable x,y,z :bit; c := a + b; z := x and y;四、四、VHDLVHDL中的表達(dá)式中的表達(dá)式VHDL語(yǔ)言要素483.2 VHDL簡(jiǎn)介 硬件執(zhí)行:并發(fā)執(zhí)行(VHDL本質(zhì)) 仿真執(zhí)行:順序執(zhí)行、并發(fā)執(zhí)行 分為兩大類(lèi):順序(Sequential)描述語(yǔ)句 并發(fā)(Concurrent)描述語(yǔ)句 ARCHITECTURE Process ProcessENTITYSequentialP
35、rocessCombinationalProcessportsportscomponent4 VHDL順序語(yǔ)句(順序語(yǔ)句(Sequential)493.2 VHDL簡(jiǎn)介順序描述語(yǔ)句:順序描述語(yǔ)句: 執(zhí)行順序與書(shū)寫(xiě)順序一致,與傳統(tǒng)軟件設(shè)計(jì)執(zhí)行順序與書(shū)寫(xiě)順序一致,與傳統(tǒng)軟件設(shè)計(jì)語(yǔ)言的特點(diǎn)相似。語(yǔ)言的特點(diǎn)相似。順序語(yǔ)句只能用在進(jìn)程與子程順序語(yǔ)句只能用在進(jìn)程與子程序中。序中。 可描述組合邏輯、時(shí)序邏輯??擅枋鼋M合邏輯、時(shí)序邏輯。常用的順序描述語(yǔ)句:常用的順序描述語(yǔ)句:賦值語(yǔ)句;賦值語(yǔ)句;ifif語(yǔ)句;語(yǔ)句;casecase語(yǔ)句;語(yǔ)句;nullnull語(yǔ)句;語(yǔ)句;looploop語(yǔ)句;語(yǔ)句;nextne
36、xt語(yǔ)句;語(yǔ)句;exitexit語(yǔ)句;子程序;語(yǔ)句;子程序;returnreturn語(yǔ)句;語(yǔ)句;waitwait語(yǔ)句語(yǔ)句503.2 VHDL簡(jiǎn)介 5 VHDL并發(fā)語(yǔ)句(并發(fā)語(yǔ)句(Concurrent) Architecture并發(fā)語(yǔ)句并發(fā)語(yǔ)句并發(fā)語(yǔ)句信號(hào)信號(hào)信號(hào)513.2 VHDL簡(jiǎn)介常用的并發(fā)描述語(yǔ)句有:常用的并發(fā)描述語(yǔ)句有: 進(jìn)程(進(jìn)程(processprocess)語(yǔ)句)語(yǔ)句、 塊(block)語(yǔ)句、 順序描述語(yǔ)句的并行版本、 并行過(guò)程調(diào)用語(yǔ)句、 元件例化語(yǔ)句元件例化語(yǔ)句、 生成語(yǔ)句生成語(yǔ)句。 523.2 VHDL簡(jiǎn)介6 VHDL描述風(fēng)格描述風(fēng)格三種描述風(fēng)格: 行為描述 數(shù)據(jù)流(寄存器傳
37、輸)描述 結(jié)構(gòu)描述 53一一 行為描述行為描述 行為描述是以算法形式對(duì)系統(tǒng)模型、功能的描述,與硬件結(jié)構(gòu)無(wú)關(guān)。抽象程度最高。 常用語(yǔ)句:進(jìn)程、過(guò)程、函數(shù)。 行為描述主要用于:模型仿真、功能仿真。 例:8位加法計(jì)數(shù)器VHDL的描述風(fēng)格5455二二 數(shù)據(jù)流描述:數(shù)據(jù)流描述: 數(shù)據(jù)流描述又稱(chēng)為寄存器傳輸級(jí)描述(RTL _Register Transfer Level)。RTL級(jí)描述是以寄存器為特征,在寄存器之間插入組合邏輯電路。即以描述數(shù)據(jù)流的流向?yàn)樘卣?。VHDL的描述風(fēng)格56三三 結(jié)構(gòu)化描述:結(jié)構(gòu)化描述: 在多層次的設(shè)計(jì)中,高層次的設(shè)計(jì)模塊調(diào)用低層次的設(shè)計(jì)模塊,構(gòu)成模塊化的設(shè)計(jì)。VHDL的描述風(fēng)格5
38、7結(jié)構(gòu)描述是元件互連的描述,使用元件例化語(yǔ)句。一位全加器的原理圖VHDL的描述風(fēng)格58一位全加器的一位全加器的VHDLVHDL結(jié)構(gòu)化描述結(jié)構(gòu)化描述59一位全加器的一位全加器的VHDLVHDL結(jié)構(gòu)化描述結(jié)構(gòu)化描述603.3 Verilog HDL簡(jiǎn)介一、基本程序結(jié)構(gòu)。一、基本程序結(jié)構(gòu)。二、詞法構(gòu)成。二、詞法構(gòu)成。 三、模塊的兩種描述方式。三、模塊的兩種描述方式。61Verilog HDL描述層次l 行為級(jí):行為級(jí):有關(guān)行為和技術(shù)指標(biāo)模塊,容易理解有關(guān)行為和技術(shù)指標(biāo)模塊,容易理解l RTL級(jí):級(jí):有關(guān)邏輯執(zhí)行步驟的模塊,較難理解有關(guān)邏輯執(zhí)行步驟的模塊,較難理解l 門(mén)級(jí):門(mén)級(jí):有關(guān)邏輯部件互相連接的
39、模塊,很難理解有關(guān)邏輯部件互相連接的模塊,很難理解l 開(kāi)關(guān)級(jí):開(kāi)關(guān)級(jí):有關(guān)物理形狀和布局參數(shù)的模塊,非常有關(guān)物理形狀和布局參數(shù)的模塊,非常難理解難理解62Verilog HDL描述層次行為級(jí)行為級(jí)行為綜合行為綜合RTL級(jí)級(jí)門(mén)級(jí)門(mén)級(jí)開(kāi)關(guān)級(jí)開(kāi)關(guān)級(jí)邏輯綜合邏輯綜合布局布線布局布線綜合前仿真綜合前仿真綜合后仿真綜合后仿真63pVerilog HDL標(biāo)識(shí)符:l所謂標(biāo)識(shí)別符就是用戶為程序描述中的所謂標(biāo)識(shí)別符就是用戶為程序描述中的Verilog 對(duì)象所起的名字;對(duì)象所起的名字;l標(biāo)識(shí)符必須以英語(yǔ)字母(標(biāo)識(shí)符必須以英語(yǔ)字母(a-z, A-Z)起頭,或)起頭,或者用下橫線符(者用下橫線符(_)起頭。內(nèi)容可以包含
40、數(shù)字、)起頭。內(nèi)容可以包含數(shù)字、$符和下橫線符;符和下橫線符;l標(biāo)識(shí)符最長(zhǎng)可以達(dá)到標(biāo)識(shí)符最長(zhǎng)可以達(dá)到1023個(gè)字符;個(gè)字符;l Verilog語(yǔ)言是大小寫(xiě)敏感的,因此語(yǔ)言是大小寫(xiě)敏感的,因此sel和和SEL 是兩個(gè)不同的標(biāo)識(shí)符。是兩個(gè)不同的標(biāo)識(shí)符。Verilog HDL標(biāo)識(shí)符64Verilog HDL標(biāo)識(shí)符合法的:合法的: 非法的:非法的:shift_reg_a 34net busa_index a*b_netbus263 n263 /不能用數(shù)字開(kāi)頭不能用數(shù)字開(kāi)頭/不能含有非字母符號(hào)不能含有非字母符號(hào)* */不能含有非字母符號(hào)不能含有非字母符號(hào) 65Verilog HDL模塊結(jié)構(gòu)CDABF66
41、Verilog HDL模塊結(jié)構(gòu)Verilog描述:描述:module AOI(A,B,C,D,F)input A,B,C,D;output F; assign F=(A&B)|(C&D);endmodule67Verilog HDL模塊結(jié)構(gòu)端口定義端口定義input 輸入端口輸入端口output 輸出端口輸出端口inout 端口端口module 名字名字 (端口名端口名);endmodule信號(hào)類(lèi)型定義信號(hào)類(lèi)型定義wireregparameter邏輯功能定義邏輯功能定義assignalwaysfunctiontask.68Verilog HDL模塊結(jié)構(gòu)module dder4(
42、cout,sum,ina,inb,cin);input3:0 ina,inb;input cin;output3:0 sum;output cout;assign cout,sum=ina+inb+cin;endmodule69Verilog HDL模塊結(jié)構(gòu)module count4(out,reset,clk);output3:0 out;input reset,clk;reg3:0 out;always (posedge clk)begin if (!reset) out=0; /同步復(fù)位同步復(fù)位 else out=out+1;/計(jì)數(shù)計(jì)數(shù)endendmodule70Verilog HDL模
43、塊結(jié)構(gòu)模塊實(shí)例化模塊實(shí)例化( (module instances) ):格式:格式: ( ); ;71Verilog HDL模塊結(jié)構(gòu)p將模塊的實(shí)例通過(guò)端口連接起來(lái)構(gòu)成一個(gè)大的系統(tǒng)或元件;p 實(shí)例中端口的次序與模塊定義的次序相同;p 模塊實(shí)例化與C語(yǔ)言函數(shù)調(diào)用不同,每個(gè)實(shí)例都是模塊的一個(gè)完全拷貝,相互獨(dú)立、并行。72Verilog HDL模塊結(jié)構(gòu)pVerilog語(yǔ)言特點(diǎn):lVerilog程序是由模塊構(gòu)成的。每個(gè)模塊的內(nèi)容程序是由模塊構(gòu)成的。每個(gè)模塊的內(nèi)容都嵌在都嵌在module和和endmodule兩個(gè)關(guān)鍵字之間,兩個(gè)關(guān)鍵字之間,每個(gè)模塊實(shí)現(xiàn)特定功能,模塊可以進(jìn)行層次嵌每個(gè)模塊實(shí)現(xiàn)特定功能,模塊
44、可以進(jìn)行層次嵌套;套;l 每個(gè)模塊首先要進(jìn)行端口定義,并說(shuō)明端口類(lèi)每個(gè)模塊首先要進(jìn)行端口定義,并說(shuō)明端口類(lèi)型,然后對(duì)模塊的功能進(jìn)行邏輯描述;型,然后對(duì)模塊的功能進(jìn)行邏輯描述;73Verilog HDL模塊結(jié)構(gòu)pVerilog語(yǔ)言特點(diǎn):lVerilog程序書(shū)寫(xiě)格式自由,一行可以寫(xiě)幾個(gè)語(yǔ)程序書(shū)寫(xiě)格式自由,一行可以寫(xiě)幾個(gè)語(yǔ)句,一個(gè)語(yǔ)句也可以分多行寫(xiě);句,一個(gè)語(yǔ)句也可以分多行寫(xiě);l 除了除了endmodule等少數(shù)語(yǔ)句外,每個(gè)語(yǔ)句的等少數(shù)語(yǔ)句外,每個(gè)語(yǔ)句的最后必須有分號(hào);最后必須有分號(hào);l 可以用可以用 /*/ 和和 / 對(duì)對(duì)Verilog程序作注程序作注釋?zhuān)玫脑闯绦蚨紤?yīng)當(dāng)加上必要的注釋?zhuān)栽鲠專(zhuān)?/p>
45、的源程序都應(yīng)當(dāng)加上必要的注釋?zhuān)栽鰪?qiáng)程序的可讀性和可維護(hù)性。強(qiáng)程序的可讀性和可維護(hù)性。74Verilog HDL數(shù)據(jù)類(lèi)型p定義l數(shù)據(jù)類(lèi)型(數(shù)據(jù)類(lèi)型(Data Type)是用來(lái)表示數(shù)字)是用來(lái)表示數(shù)字電路中的電路中的物理連線、數(shù)據(jù)存儲(chǔ)和傳送單物理連線、數(shù)據(jù)存儲(chǔ)和傳送單元元等物理量的。等物理量的。75Verilog HDL數(shù)據(jù)類(lèi)型p Verilog HDL共有19種數(shù)據(jù)類(lèi)型:包括wire、integer、parameter、time等;p 最基本的是兩類(lèi):l 連線型連線型: wirel 寄存器型寄存器型: regp 最常用:wire、reg、parameter、integer76Verilog H
46、DL數(shù)據(jù)類(lèi)型p數(shù)據(jù)類(lèi)型分類(lèi):l常量數(shù)據(jù)類(lèi)型常量數(shù)據(jù)類(lèi)型 integer x和z parameterl 變量數(shù)據(jù)類(lèi)型變量數(shù)據(jù)類(lèi)型 nets register77Verilog HDL數(shù)據(jù)類(lèi)型pinteger:完整數(shù)字表達(dá)式:完整數(shù)字表達(dá)式: 舉例:舉例: 8b10101000 8b1010_1000 8ha8 16878Verilog HDL數(shù)據(jù)類(lèi)型px和z :x x表示不確定值表示不確定值舉例:舉例:8b1010 xxxx8b1010 xxxx 8hax 8haxz z表示高阻值表示高阻值舉例:舉例:assign i2c_sda = sda_oe ? i2c_sda_o : 1bz;79Ver
47、ilog HDL數(shù)據(jù)類(lèi)型pparameter:格式:格式:parameter 參數(shù)名參數(shù)名1= =表達(dá)式,表達(dá)式,,參數(shù)名參數(shù)名n= =表達(dá)式表達(dá)式; ;舉例:舉例:Parameter msb=7,f=18; ;Parameter average_delay=(msb+f)/2;80Verilog HDL數(shù)據(jù)類(lèi)型pnets :l由模塊或門(mén)驅(qū)動(dòng)的由模塊或門(mén)驅(qū)動(dòng)的連線連線l驅(qū)動(dòng)端信號(hào)的改變驅(qū)動(dòng)端信號(hào)的改變會(huì)立刻傳遞到輸出會(huì)立刻傳遞到輸出的連線上的連線上nets81Verilog HDL數(shù)據(jù)類(lèi)型p種類(lèi): 類(lèi)型類(lèi)型 功能功能 wire, tri 對(duì)應(yīng)于標(biāo)準(zhǔn)的互連線(缺?。?duì)應(yīng)于標(biāo)準(zhǔn)的互連線(缺?。﹕u
48、pply1, supply2 對(duì)應(yīng)于電源線或接地線對(duì)應(yīng)于電源線或接地線wor, trior 對(duì)應(yīng)于有多個(gè)驅(qū)動(dòng)源的對(duì)應(yīng)于有多個(gè)驅(qū)動(dòng)源的線或線或邏輯連接邏輯連接wand, triand 對(duì)應(yīng)于有多個(gè)驅(qū)動(dòng)源的對(duì)應(yīng)于有多個(gè)驅(qū)動(dòng)源的線與線與邏輯連接邏輯連接trireg 對(duì)應(yīng)于有電容存在暫時(shí)存儲(chǔ)電平的連接對(duì)應(yīng)于有電容存在暫時(shí)存儲(chǔ)電平的連接tri1, tri0 對(duì)應(yīng)于對(duì)應(yīng)于需要上拉或下拉的需要上拉或下拉的連接連接82Verilog HDL數(shù)據(jù)類(lèi)型pwire:l wire是最常用的連線型變量;是最常用的連線型變量;l 模塊中的輸入輸出信號(hào)類(lèi)型缺省時(shí)自動(dòng)定義為模塊中的輸入輸出信號(hào)類(lèi)型缺省時(shí)自動(dòng)定義為wire型;
49、型;l 可用作任何表達(dá)式的輸入,也可用作可用作任何表達(dá)式的輸入,也可用作“assign”語(yǔ)句和實(shí)例元件的輸出,在綜合器中,可取四值:語(yǔ)句和實(shí)例元件的輸出,在綜合器中,可取四值:0、1、X、Z;p格式:wire 數(shù)據(jù)名數(shù)據(jù)名1,數(shù)據(jù)名,數(shù)據(jù)名n;wiren-1:0 數(shù)據(jù)名數(shù)據(jù)名1,數(shù)據(jù)名,數(shù)據(jù)名n;83Verilog HDL數(shù)據(jù)類(lèi)型pregister:l對(duì)應(yīng)的是具有狀態(tài)保持作用的電路元件;對(duì)應(yīng)的是具有狀態(tài)保持作用的電路元件;l 需要被明確賦值,在重新賦值前一直保持原值;需要被明確賦值,在重新賦值前一直保持原值;l 須放在過(guò)程語(yǔ)句(如須放在過(guò)程語(yǔ)句(如initial,always)中,通)中,通過(guò)
50、過(guò)程賦值語(yǔ)句賦值。過(guò)過(guò)程賦值語(yǔ)句賦值。p格式reg 數(shù)據(jù)名數(shù)據(jù)名1,數(shù)據(jù)名,數(shù)據(jù)名n;regn-1:0 數(shù)據(jù)名數(shù)據(jù)名1,數(shù)據(jù)名,數(shù)據(jù)名n;84Verilog HDL數(shù)據(jù)類(lèi)型p舉例:85Verilog HDL數(shù)據(jù)類(lèi)型p描述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 ; endendmodule 86Verilog HDL數(shù)據(jù)類(lèi)型p如何選擇正確的數(shù)據(jù)
51、類(lèi)型? inoutinout?87Verilog HDL數(shù)據(jù)類(lèi)型p數(shù)據(jù)類(lèi)型選擇:l輸入口(輸入口(input)可以由寄存器或網(wǎng)絡(luò)連接驅(qū)動(dòng),)可以由寄存器或網(wǎng)絡(luò)連接驅(qū)動(dòng),但它本身只能驅(qū)動(dòng)網(wǎng)絡(luò)連接;但它本身只能驅(qū)動(dòng)網(wǎng)絡(luò)連接;l 輸出口輸出口 (output)可以由寄存器或網(wǎng)絡(luò)連接驅(qū)動(dòng),可以由寄存器或網(wǎng)絡(luò)連接驅(qū)動(dòng),但它本身只能驅(qū)動(dòng)網(wǎng)絡(luò)連接;但它本身只能驅(qū)動(dòng)網(wǎng)絡(luò)連接;l輸入輸入/輸出口輸出口(inout)只可以由網(wǎng)絡(luò)連接驅(qū)動(dòng)只可以由網(wǎng)絡(luò)連接驅(qū)動(dòng),且本,且本身只能驅(qū)動(dòng)網(wǎng)絡(luò)連接;身只能驅(qū)動(dòng)網(wǎng)絡(luò)連接;l 如果信號(hào)變量是在過(guò)程塊如果信號(hào)變量是在過(guò)程塊 (initial塊塊 或或 always塊塊)中被賦值的,
52、必須把它聲明為寄存器類(lèi)型變量。中被賦值的,必須把它聲明為寄存器類(lèi)型變量。88Verilog HDL數(shù)據(jù)類(lèi)型p數(shù)據(jù)類(lèi)型選擇:net/registerinoutinoutnetnetnetnet/registernet89Verilog HDL數(shù)據(jù)類(lèi)型module test1(clk,rst_n,cen16);input clk, rst_n;output cen16;reg cen16; reg 3:0count;always(posedge clk) beginif (!rst_n) begin cen16=0; count =0; endelse if(&count) begin c
53、ount =0; cen16=1; endelse begin count = count +1; cen16=0; end endendmodule 90Verilog HDL數(shù)據(jù)類(lèi)型module test2(clk,rst_n,cen4);input clk, rst_n;output cen4;reg cen4; reg 1:0count;always(posedge clk) beginif (!rst_n) begin cen4=0; count =0; endelse if(&count) begin count =0; cen4=1; endelse begin coun
54、t = count +1; cen4=0; end endendmodule 91Verilog HDL數(shù)據(jù)類(lèi)型module test (clk,rst_n,cen64);input clk, rst_n;output cen64;wire cen16;test1 test1(clk, rst_n,cen16);test2 test2(cen16, rst_n,cen64);endmodule 92Verilog HDL數(shù)據(jù)類(lèi)型p選擇數(shù)據(jù)類(lèi)型時(shí)常犯的三個(gè)錯(cuò)誤:l在過(guò)程塊中對(duì)變量賦值時(shí),忘了把它定義為寄在過(guò)程塊中對(duì)變量賦值時(shí),忘了把它定義為寄存器類(lèi)型(存器類(lèi)型(reg),或已把它定義為連接類(lèi)型)
55、,或已把它定義為連接類(lèi)型了(了(wire););l把實(shí)例的輸出連接出去時(shí),將它定義為寄存器把實(shí)例的輸出連接出去時(shí),將它定義為寄存器類(lèi)型了;類(lèi)型了;l把模塊的輸入信號(hào)定義為寄存器類(lèi)型了。把模塊的輸入信號(hào)定義為寄存器類(lèi)型了。93Verilog HDL 運(yùn)算符p按功能分:l算術(shù)運(yùn)算符、邏輯運(yùn)算符、關(guān)系運(yùn)算符、縮減算術(shù)運(yùn)算符、邏輯運(yù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)算符等。p 按操作數(shù)分:l 單目運(yùn)算符、雙目運(yùn)算符、三目運(yùn)算符。單目運(yùn)算符、雙目運(yùn)算符、三目運(yùn)算符。94p算術(shù)運(yùn)算符 (Arithmetic ope
56、rator) + 加加 - 減減 * 乘乘 / 除除 % 求模求模p邏輯運(yùn)算符(Logical operator) & 邏輯與邏輯與 | 邏輯或邏輯或 ! 邏輯非邏輯非 Verilog HDL 運(yùn)算符95Verilog HDL 運(yùn)算符A B A&BA|B!A !B1 1110 01 0010 10 1011 00 0001 196p位運(yùn)算符(Bitwise operator) 按位取反按位取反 & 按位與按位與 | 按位或按位或 按位異或按位異或, 按位同或按位同或Verilog HDL 運(yùn)算符97Verilog HDL 運(yùn)算符設(shè)設(shè)a=4b0011,b=4b1010,c
57、=3b011,d=4b11x0則:則:a/按位取反,結(jié)果是按位取反,結(jié)果是4b1100b&c/按位與運(yùn)算,結(jié)果是按位與運(yùn)算,結(jié)果是4b0010ad/按位同或運(yùn)算,結(jié)果是按位同或運(yùn)算,結(jié)果是4b00 x0a&b/邏輯與運(yùn)算,等價(jià)于邏輯與運(yùn)算,等價(jià)于1&198p關(guān)系運(yùn)算符 (Relational operator) 小于小于 大于大于= 大于或等于大于或等于注意:“n或或A 右移右移 左移左移102p條件運(yùn)算符 (Conditional operator) Verilog HDL 運(yùn)算符這是一個(gè)三目運(yùn)算符,對(duì)這是一個(gè)三目運(yùn)算符,對(duì)3 3個(gè)操作數(shù)進(jìn)行運(yùn)算。個(gè)操作數(shù)進(jìn)行運(yùn)算。用
58、法:用法: signal=condition?true_expression:flase_expression; 即:信號(hào)即:信號(hào)= =條件?表達(dá)式條件?表達(dá)式1 1:表達(dá)式:表達(dá)式2 2; 條件成立時(shí),信號(hào)取表達(dá)式條件成立時(shí),信號(hào)取表達(dá)式1 1的值,反之取的值,反之取2 2。 ?103p條件運(yùn)算符 舉例Verilog HDL 運(yùn)算符01sel in0in1 out104p位接運(yùn)算符 Verilog HDL 運(yùn)算符 用法:用法: 信號(hào)信號(hào)1的某幾位的某幾位,信號(hào)信號(hào)2的某幾位的某幾位,信號(hào)信號(hào)n的某幾位的某幾位舉例:舉例:assign cout,sum = a+b+cin;105運(yùn)算符運(yùn)算符優(yōu)
59、先級(jí)優(yōu)先級(jí)! * / %+ - = != = !=& & | &|? :106Verilog HDL 語(yǔ)句p分類(lèi)l過(guò)程語(yǔ)句過(guò)程語(yǔ)句l塊語(yǔ)句塊語(yǔ)句l賦值語(yǔ)句賦值語(yǔ)句l條件語(yǔ)句條件語(yǔ)句l循環(huán)語(yǔ)句循環(huán)語(yǔ)句l編譯向?qū)Ь幾g向?qū)?07類(lèi)類(lèi) 別別語(yǔ)語(yǔ) 句句可綜合性可綜合性過(guò)程語(yǔ)句過(guò)程語(yǔ)句always initial塊語(yǔ)句塊語(yǔ)句串行塊串行塊begin-end并行塊并行塊fork-join 賦值語(yǔ)句賦值語(yǔ)句持續(xù)賦值持續(xù)賦值assign過(guò)程賦值過(guò)程賦值=、=條件語(yǔ)句條件語(yǔ)句if-elsecase 循環(huán)語(yǔ)句循環(huán)語(yǔ)句forrepeat while forever 編譯向?qū)Ь幾g向?qū)efinei
60、ncludeifdef,else,endif108Verilog HDL 語(yǔ)句always ()begin/過(guò)程賦值過(guò)程賦值/if-else,case選擇語(yǔ)句選擇語(yǔ)句end109Verilog HDL 語(yǔ)句敏感信號(hào)類(lèi)型:敏感信號(hào)類(lèi)型:(a)(a or b)(posedge clock)(negedge clock)(posedge clk or negedge reset)110Verilog HDL 語(yǔ)句舉例:舉例:DFFmodule DFF (d , clk, reset, q, qb ); output q, qb; input clk, reset,d; reg q, qb; always (posedge clk) begin if (!reset) begin q =0; qb=1; end else
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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)估調(diào)查計(jì)劃
- 科技企業(yè)如何有效維護(hù)知識(shí)產(chǎn)權(quán)
- 科技企業(yè)知識(shí)產(chǎn)權(quán)管理的咨詢(xún)方案
- 社會(huì)支持網(wǎng)絡(luò)在心理健康中的重要性研究
- 私人修路合同范本
- 小麥淀粉生產(chǎn)考核試卷
- 正規(guī)兼職合同范本
- 家禽飼養(yǎng)業(yè)職業(yè)技能培訓(xùn)與認(rèn)證體系構(gòu)建考核試卷
- 奶茶加盟品牌合同范本
- 財(cái)務(wù)教育的重要性與實(shí)施計(jì)劃
- 小升初、小學(xué)生滿分優(yōu)秀作文匯編100篇
- 次聲波在臨床醫(yī)學(xué)及麻醉中的作用 次聲波在臨床麻醉中的作用
- 加盟招商方案PPT模板
- 中石油HSE培訓(xùn)試題集(共33頁(yè))
- 2022年云南省中考數(shù)學(xué)試題及答案解析
- 噴(烤)漆房VOCs治理設(shè)施日常運(yùn)行臺(tái)賬
- TS16949五大工具:SPC
- 五年級(jí)下冊(cè)-綜合實(shí)踐教案
- 貴州出版社小學(xué)五年級(jí)下冊(cè)綜合實(shí)踐活動(dòng)教案全冊(cè)
- [方案]隱框玻璃幕墻施工方案
- 設(shè)備安裝檢驗(yàn)批表格
評(píng)論
0/150
提交評(píng)論