電路計(jì)算機(jī)輔助設(shè)計(jì)課件優(yōu)秀課件



《電路計(jì)算機(jī)輔助設(shè)計(jì)課件優(yōu)秀課件》由會(huì)員分享,可在線閱讀,更多相關(guān)《電路計(jì)算機(jī)輔助設(shè)計(jì)課件優(yōu)秀課件(105頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級(jí),,第三級(jí),,第四級(jí),,第五級(jí),,,,*,電路計(jì)算機(jī)輔助設(shè)計(jì)課件,,,教學(xué)內(nèi)容與要求,第,1,章,,EDA,技術(shù)簡(jiǎn)介,,,第,2,章,Verilog HDL,語(yǔ)言編程,(,10,學(xué)時(shí)),,,第,3,章,VHDL,語(yǔ)言編程,(,4,學(xué)時(shí)),,,第,4,章,MATLAB,程序入門,(,12,學(xué)時(shí)),,,第,5,章,MATLAB,在電路中的應(yīng)用,(,4,學(xué)時(shí)),,每章有實(shí)驗(yàn)室上機(jī)實(shí)驗(yàn),,, EDA,技術(shù)的主要內(nèi)容,,1.2 EDA,軟件系統(tǒng)的構(gòu)成,,1.3 EDA,的工程設(shè)計(jì)流程,,1.4,數(shù)字系統(tǒng)的設(shè)計(jì)方法,,第,2,章,Verilog
2、 HDL,語(yǔ)言編程,,2.1 Verilog HDL,設(shè)計(jì)模塊的基本結(jié)構(gòu),,2.2 Verilog HDL,詞法構(gòu)成,,2.3 Verilog HDL,的語(yǔ)句,,2.4 Verilog HDL,模型,,2.5 Verilog HDL,設(shè)計(jì)電路流程,,2.6,用,Verilog HDL,描述邏輯電路的實(shí)例,,第,3,章,VHDL,語(yǔ)言編程基礎(chǔ),,3.1,概述,,3.2 VHDL,程序基本結(jié)構(gòu),,3.3 VHDL,語(yǔ)言要素,,3.4 VHDL,順序語(yǔ)句,,3.5 VHDL,并行語(yǔ)句,,3.6,子程序,(SUBPROGRAM),,3.7,庫(kù)、程序包及其他,,3.8 VHDL,描述風(fēng)格,,3.
3、9,基本邏輯電路設(shè)計(jì),,3.10,狀態(tài)機(jī)的,VHDL,設(shè)計(jì),,,,第,4,章,MATLAB,程序入門,,4.1,基本語(yǔ)法,,4.1.1,變量及其賦值,,4.4.2,矩陣的初等運(yùn)算,,4.1.3,元素群運(yùn)算,,4.1.4,邏輯判斷及流程控制,,4.2,基本繪圖方法,,4.2.1 M,文件及程序調(diào)試,,4.2.2 MATLAB,的開(kāi)發(fā)環(huán)境和工具,,第,5,章,MATLAB,在電路中的應(yīng)用,,5.1,電阻電路和動(dòng)態(tài)電路,,5.2,正弦穩(wěn)態(tài)電路和頻率響應(yīng),,5.3,二端口電路,,5.4,濾波器,第,1,章,EDA,技術(shù)簡(jiǎn)介,,,1.1 EDA,技術(shù)的主要內(nèi)容,,EDA,是電子設(shè)計(jì)自動(dòng)化(,Electr
4、onic Design Automation,)的縮寫(xiě)。,,,EDA,技術(shù)就是以計(jì)算機(jī)為工具,設(shè)計(jì)者在,EDA,軟件平臺(tái)上,用,硬件描述語(yǔ)言,HDL,完成設(shè)計(jì),文件,然后由計(jì)算機(jī)自動(dòng)地完成邏輯,編譯,、化簡(jiǎn)、分割、綜合、優(yōu)化、布局、布線和,仿真,,直至對(duì)于特定目標(biāo)芯片的,適配編譯,、邏輯映射和,編程下載,等工作。,,EDA,技術(shù)的出現(xiàn),極大地提高了電路設(shè)計(jì)的效率和可靠性,減輕了設(shè)計(jì)者的勞動(dòng)強(qiáng)度。,,在電子技術(shù)設(shè)計(jì)領(lǐng)域,,可編程邏輯器件,(如,CPLD,、,FPGA,)的應(yīng)用,已得到廣泛的普及,這些器件為數(shù)字系統(tǒng)的設(shè)計(jì)帶來(lái)了極大的靈活性。,,CPLD,、,FPGA,器件可以通過(guò),軟件編程,而對(duì)硬
5、件結(jié)構(gòu)和工作方式進(jìn)行,重構(gòu),,從而使得硬件的設(shè)計(jì)可以如同軟件設(shè)計(jì)那樣方便快捷。促進(jìn)了,EDA,技術(shù)的迅速發(fā)展。,EDA,技術(shù)涉及面廣,內(nèi)容豐富,主要應(yīng)掌握如下四個(gè)方面的內(nèi)容:,,① 大規(guī)模可編程邏輯器件,大規(guī)模可編程邏輯器件是利用,EDA,技術(shù)進(jìn)行電子系統(tǒng)設(shè)計(jì)的載體。,FPGA,和,CPLD,,②,硬件描述語(yǔ)言,硬件描述語(yǔ)言是利用,EDA,技術(shù)進(jìn)行電子系統(tǒng)設(shè)計(jì)的主要表達(dá)手段。,VHDL,、,Verilog,、,ABEL,,③,軟件開(kāi)發(fā)工具,軟件開(kāi)發(fā)工具是利用,EDA,技術(shù)進(jìn)行電子系統(tǒng)設(shè)計(jì)的智能化的自動(dòng)化設(shè)計(jì)工具。,,Altera,的,MAX+plus II,、,Lattice,的,ispEXP
6、ERT,、,Xilinx,的,Foundation Series,。,,④ 實(shí)驗(yàn)開(kāi)發(fā)系統(tǒng),實(shí)驗(yàn)開(kāi)發(fā)系統(tǒng)則是利用,EDA,技術(shù)進(jìn)行電子系統(tǒng)設(shè)計(jì)的下載工具及硬件驗(yàn)證工具。,1,大規(guī)??删幊踢壿嬈骷?,,可編程邏輯器件,(,簡(jiǎn)稱,PLD),是一種由用戶編程以實(shí)現(xiàn)某種邏輯功能的新型邏輯器件。,,FPGA,是現(xiàn)場(chǎng)可編程門陣列的簡(jiǎn)稱,,,CPLD,是復(fù)雜可編程邏輯器件的簡(jiǎn)稱。,,高集成度、高速度和高可靠性是,FPGA/CPLD,最明顯的特點(diǎn),其時(shí)鐘延時(shí)可小至,ns,級(jí),結(jié)合其并行工作方式,在超高速應(yīng)用領(lǐng)域和實(shí)時(shí)測(cè)控方面有著非常廣闊的應(yīng)用前景。,,FPGA/CPLD,的高可靠性還表現(xiàn)在幾乎可將整個(gè)系統(tǒng)下載于
7、同一芯片中,實(shí)現(xiàn)所謂片上系統(tǒng),從而大大縮小了體積,易于管理和屏蔽。,2,硬件描述語(yǔ)言,(HDL),,,常用的硬件描述語(yǔ)言有,VHDL,、,Verilog,、,ABEL,。,,,VHDL,:作為,IEEE,的工業(yè)標(biāo)準(zhǔn)硬件描述語(yǔ)言,在電子工程領(lǐng)域,已成為事實(shí)上的通用硬件描述語(yǔ)言。,,,Verilog,:支持的,EDA,工具較多,適用于,RTL,級(jí)(,寄存器轉(zhuǎn)換級(jí)),和門電路級(jí)的描述,其綜合過(guò)程較,VHDL,稍簡(jiǎn)單,但其在高級(jí)描述方面不如,VHDL,。,,有專家認(rèn)為,在新世紀(jì)中,,VHDL,與,Verilog,語(yǔ)言將承擔(dān)幾乎全部的數(shù)字系統(tǒng)設(shè)計(jì)任務(wù)。,3,軟件開(kāi)發(fā)工具,,目前比較流行的、主流廠家的,E
8、DA,的軟件工具有:,,Altera,的,MAX+plus II,、升級(jí)版,Quartus II;,,Lattice,的,ispEXPERT,;,,Xilinx,的,Foundation Series,。,,,MAX+plus II,是,Altera,公司開(kāi)發(fā)的,EDA,工具軟件。,Altera,公司是世界上最大的可編程邏輯器件供應(yīng)商之一。,MAX+plus II,軟件是一個(gè)集成化的可編程邏輯器件開(kāi)發(fā)環(huán)境,設(shè)計(jì)者能在這個(gè)環(huán)境下進(jìn)行邏輯設(shè)計(jì),完成設(shè)計(jì)文件的輸入編輯、編譯、仿真、綜合、布局布線和編程下載等設(shè)計(jì)工作。軟件界面友好、方便易學(xué)、功能全面,是非常流行的大眾化,EDA,平臺(tái)。,MAX+plu
9、s II,:支持原理圖、,VHDL,和,Verilog,語(yǔ)言文本文件,以及以波形與,EDIF,等格式的文件作為設(shè)計(jì)輸入,并支持這些文件的任意混合設(shè)計(jì)。,,它具有門級(jí)仿真器,可以進(jìn)行功能仿真和時(shí)序仿真,能夠產(chǎn)生精確的仿真結(jié)果。,,在適配之后,,MAX+plus II,生成供時(shí)序仿真用的,EDIF,、,VHDL,和,Verilog,這三種不同格式的網(wǎng)表文件。,,它界面友好,使用便捷,被譽(yù)為業(yè)界最易學(xué)易用的,EDA,的軟件 ,并支持主流的第三方,EDA,工具,支持所有,Altera,公司的,FPGA/CPLD,大規(guī)模邏輯器件。,4,實(shí)驗(yàn)開(kāi)發(fā)系統(tǒng),,提供芯片下載電路及,EDA,實(shí)驗(yàn),/,開(kāi)發(fā)的外圍資源
10、,(,類似于用于單片機(jī)開(kāi)發(fā)的仿真器,),,供硬件驗(yàn)證用。一般包括:,,① 實(shí)驗(yàn)或開(kāi)發(fā)所需的各類基本信號(hào)發(fā)生模塊,包括時(shí)鐘、脈沖、高低電平等;,,②,FPGA/CPLD,輸出信息顯示模塊,包括數(shù)碼顯示、發(fā)光管顯示、聲響指示等;,,③ 監(jiān)控程序模塊,提供“電路重構(gòu)軟配置”;,,④ 目標(biāo)芯片適配座以及上面的,FPGA/CPLD,目標(biāo)芯片和編程下載電路。,自己閱讀,1.2 EDA,軟件系統(tǒng)的構(gòu)成,,EDA,技術(shù)研究的對(duì)象是電子設(shè)計(jì)的全過(guò)程,有系統(tǒng)級(jí)、電路級(jí)和物理級(jí),3,個(gè)層次的設(shè)計(jì)。,,涉及的電子系統(tǒng)從低頻、高頻到微波,從線性到非線性,從模擬到數(shù)字,從通用集成電路到專用集成電路構(gòu)造的電子系統(tǒng),因此,E
11、DA,技術(shù)研究的范疇相當(dāng)廣泛。,,EDA,軟件系統(tǒng)應(yīng)當(dāng)包含以下子模塊:,,設(shè)計(jì)輸入子模塊、,,設(shè)計(jì)數(shù)據(jù)庫(kù)子模塊、,,分析驗(yàn)證子模塊、,,綜合仿真子模塊、,,布局布線子模塊等。,自己閱讀,(1),設(shè)計(jì)輸入子模塊;用戶編輯輸入模塊的設(shè)計(jì)描述,并進(jìn)行語(yǔ)義正確性、語(yǔ)法規(guī)則的檢查,檢查通過(guò)后,將用戶的設(shè)計(jì)描述數(shù)據(jù)轉(zhuǎn)換為,EDA,軟件系統(tǒng)的內(nèi)部數(shù)據(jù)格式,存入設(shè)計(jì)數(shù)據(jù)庫(kù)被其他子模塊調(diào)用。,,設(shè)計(jì)輸入子模塊不僅能接受圖形描述輸入、硬件描述語(yǔ)言,(HDL),描述輸入,還能接受圖文混合描述輸入。,,該子模塊一般包含針對(duì)不同描述方式的編輯器,如圖形編輯器、文本編輯器等,同時(shí)包含對(duì)應(yīng)的分析器。,自己閱讀,(2),設(shè)計(jì)
12、數(shù)據(jù)庫(kù)子模塊:該模塊存放系統(tǒng)提供的庫(kù)單元以及用戶的設(shè)計(jì)描述和中間設(shè)計(jì)結(jié)果。,,,(3),分析驗(yàn)證子模塊:該模塊包括各個(gè)層次的模擬驗(yàn)證、設(shè)計(jì)規(guī)則的檢查、故障診斷等。,,,(4),綜合仿真子模塊:該模塊包括各個(gè)層次的綜合工具,理想的情況是:從高層次到低層次的綜合仿真全部由,EDA,工具自動(dòng)實(shí)現(xiàn)。,,,(5),布局布線子模塊:該模塊實(shí)現(xiàn)由邏輯設(shè)計(jì)到物理實(shí)現(xiàn)的映射,因此與物理實(shí)現(xiàn)的方式密切相關(guān)。例如,最終的物理實(shí)現(xiàn)可以是門陣列、可編程邏輯器件等,由于對(duì)應(yīng)的器件不同,因此各自的布局布線工具會(huì)有很大的差異。,,自己閱讀,1.3 EDA,的工程設(shè)計(jì)流程,,1,源程序的編輯和編譯,,,利用,EDA,技術(shù)進(jìn)行一
13、項(xiàng)工程設(shè)計(jì),首先需利用,EDA,工具的文本編輯器或圖形編輯器將它用文本方式或圖形方式表達(dá)出來(lái),進(jìn)行排錯(cuò)編譯,變成,Verilog,、,VHDL,文件格式,為進(jìn)一步的邏輯綜合作準(zhǔn)備。,,常用的源程序輸入方式有三種。,,,(1),原理圖輸入方式:利用,EDA,工具提供的圖形編輯器以原理圖的方式進(jìn)行輸入。原理圖輸入方式比較容易掌握,直觀且方便,所畫(huà)的電路原理圖與傳統(tǒng)的器件連接方式完全一樣,很容易被人接受,而且編輯器中有許多現(xiàn)成的單元器件可以利用,自己也可以根據(jù)需要設(shè)計(jì)元件。,,(2),狀態(tài)圖輸入方式,:以圖形的方式表示狀態(tài)圖進(jìn)行輸入。當(dāng)填好時(shí)鐘信號(hào)名、狀態(tài)轉(zhuǎn)換條件、狀態(tài)機(jī)類型等要素后,就可以自動(dòng)生成
14、,VHDL,程序。這種設(shè)計(jì)方式簡(jiǎn)化了狀態(tài)機(jī)的設(shè)計(jì),比較流行。,,,(3) Verilog,、,VHDL,軟件程序的文本方式,:最一般化、最具普遍性的輸入方法,任何支持,VHDL,的,EDA,工具都支持文本方式的編輯和編譯。,2,邏輯綜合和優(yōu)化,,將,VHDL,的軟件設(shè)計(jì)與硬件的可實(shí)現(xiàn)性掛鉤,需要利用,EDA,軟件系統(tǒng)的綜合器進(jìn)行邏輯綜合。,,綜合器的功能就是將設(shè)計(jì)者在,EDA,平臺(tái)上完成的針對(duì)某個(gè)系統(tǒng)項(xiàng)目的,HDL,、原理圖或狀態(tài)圖形的描述,針對(duì)給定硬件結(jié)構(gòu)組件進(jìn)行編譯、優(yōu)化、轉(zhuǎn)換和綜合,最終獲得門級(jí)電路甚至更底層的電路描述文件。,,綜合器工作前,必須給定最后實(shí)現(xiàn)的硬件結(jié)構(gòu)參數(shù),它的功能就是將
15、軟件描述與給定硬件結(jié)構(gòu)用某種網(wǎng)表文件的方式聯(lián)系起來(lái)。,,綜合器是軟件描述與硬件實(shí)現(xiàn)的一座橋梁。綜合過(guò)程就是將電路的高級(jí)語(yǔ)言描述轉(zhuǎn)換成低級(jí)的,可與,FPGA/CPLD,或構(gòu)成,ASIC,的門陣列基本結(jié)構(gòu)相映射的網(wǎng)表文件。,自己閱讀,1.4,數(shù)字系統(tǒng)的設(shè)計(jì)方法,,數(shù)字系統(tǒng)設(shè)計(jì)有多種方法,如模塊設(shè)計(jì)法、自頂向下設(shè)計(jì)法和自底向上設(shè)計(jì)法等。,,數(shù)字系統(tǒng)的設(shè)計(jì)一般采用自頂向下、由粗到細(xì)、逐步求精的方法。,,自頂向下是指將數(shù)字系統(tǒng)的整體逐步分解為各個(gè)子系統(tǒng)和模塊,若子系統(tǒng)規(guī)模較大,則還需將子系統(tǒng)進(jìn)一步分解為更小的子系統(tǒng)和模塊,層層分解,直至整個(gè)系統(tǒng)中各子系統(tǒng)關(guān)系合理,并便于邏輯電路級(jí)的設(shè)計(jì)和實(shí)現(xiàn)為止。,,采
16、用該方法設(shè)計(jì)時(shí),高層設(shè)計(jì)進(jìn)行功能和接口描述,說(shuō)明模塊的功能和接口,模塊功能的更詳細(xì)的描述在下一設(shè)計(jì)層次說(shuō)明,最底層的設(shè)計(jì)才涉及具體的寄存器和邏輯門電路等實(shí)現(xiàn)方式的描述。,,采用自頂向下的設(shè)計(jì)方法有如下優(yōu)點(diǎn),:,,(1),自頂向下設(shè)計(jì)方法是一種模塊化設(shè)計(jì)方法。對(duì)設(shè)計(jì)的描述從上到下逐步由粗略到詳細(xì),符合常規(guī)的邏輯思維習(xí)慣。由于高層設(shè)計(jì)同器件無(wú)關(guān),設(shè)計(jì)易于在各種集成電路工藝或可編程器件之間移植。,,,(2),適合多個(gè)設(shè)計(jì)者同時(shí)進(jìn)行設(shè)計(jì)。隨著技術(shù)的不斷進(jìn)步,許多設(shè)計(jì)由一個(gè)設(shè)計(jì)者已無(wú)法完成,必須經(jīng)過(guò)多個(gè)設(shè)計(jì)者分工協(xié)作完成一項(xiàng)設(shè)計(jì)的情況越來(lái)越多。在這種情況下,應(yīng)用自頂向下的設(shè)計(jì)方法便于由多個(gè)設(shè)計(jì)者同時(shí)進(jìn)行
17、設(shè)計(jì),對(duì)設(shè)計(jì)任務(wù)進(jìn)行合理分配,用系統(tǒng)工程的方法對(duì)設(shè)計(jì)進(jìn)行管理。,,針對(duì)具體的設(shè)計(jì),實(shí)施自頂向下的設(shè)計(jì)方法的形式會(huì)有所不同,但均需遵循以下兩條原則:逐層分解功能,分層次進(jìn)行設(shè)計(jì)。同時(shí),應(yīng)在各個(gè)設(shè)計(jì)層次上,考慮相應(yīng)的仿真驗(yàn)證問(wèn)題。,自己閱讀,第,2,章,Verilog HDL,語(yǔ)言,,,2.1 Verilog HDL,設(shè)計(jì)模塊的基本結(jié)構(gòu),,Verilog HDL,程序設(shè)計(jì)由模塊,(module),構(gòu)成的, 設(shè)計(jì)模塊的基本結(jié)構(gòu)如圖,一個(gè)完整的,Verilog HDL,設(shè)計(jì)模塊包括端口定義、,I/O,聲明、信號(hào)類型聲明和功能描述,4,個(gè)部分。,,,一、模塊端口的定義,,模塊端口定義用來(lái)聲明電路設(shè)計(jì)模塊
18、,,的輸入,/,輸出端口,端口定義格式如下:,,,module,模塊名 (端口,1,,端口,2,,端口,3,,,…,);,,在端口定義的括號(hào)中,是設(shè)計(jì)電路模塊與外界聯(lián)系的全部輸入,/,輸出端口信號(hào)或引腳,是設(shè)計(jì)實(shí)體對(duì)外的一個(gè)通信界面,是外界可以看到的部分(不包含電源和接地端),多個(gè)端口之間用“,”分隔。例如,1,位全加器,adder,模塊的端口定義為,,module adder (sum, cout, ina, inb, cin),; 模塊名,adder,,二、模塊內(nèi)容,,模塊內(nèi)容包括,I/O,聲明、信號(hào)類型聲明和功能描述。,,(,1,)模塊的,I/O,聲明,,模塊的,I/O,聲明用來(lái)聲明模
19、塊端口定義中各端口數(shù)據(jù)流動(dòng)方向,包括輸入,(input),、輸出,(output),和雙向,(inout),。,I/O,聲明格式如下:,,,input,端口,1,,端口,2,,端口,3,,,…,;,//,聲明輸入端口,,,output,端口,1,,端口,2,,端口,3,,,…,;,//,聲明輸出端口,,例如,,1,位全加器的,I/O,聲明為,,,input ina, inb, cin;,,output sum, cout;,,(,2,)信號(hào)類型聲明,,信號(hào)類型聲明是聲明設(shè)計(jì)電路的功能描述中所用的信號(hào)的數(shù)據(jù)類型和函數(shù)。信號(hào)的數(shù)據(jù)類型主要有連線(,wire,)、寄存器(,reg,)、整型(,i
20、nteger,)、實(shí)型(,real,)、和時(shí)間(,time,)等。,,(,3,)功能描述,,功能描述是,Verilog HDL,程序設(shè)計(jì)中最主要的部分,用來(lái)描述設(shè)計(jì)模塊的內(nèi)部結(jié)構(gòu)和模塊端口間的邏輯關(guān)系,在電路上相當(dāng)于器件的內(nèi)部電路結(jié)構(gòu)。功能描述可以用,assign,語(yǔ)句、元件例化(,instantiate,)方式、,always,塊語(yǔ)句、,initial,塊語(yǔ)句等方法來(lái)實(shí)現(xiàn),通常將設(shè)計(jì)模塊描述的方法稱為建模。,,,①,用,assign,語(yǔ)句建模,,,用,assign,語(yǔ)句建模的方法很簡(jiǎn)單,只需要在“,assign”,后面再加一個(gè)表達(dá)式。,Assign,語(yǔ)句一般適合對(duì)組合邏輯進(jìn)行賦值,稱為連續(xù)賦
21、值方式。,,例,1,一位全加器的設(shè)計(jì),,,,,1,位全加器的邏輯符號(hào):,,sum,是全加器的和輸出端,,,cout,是進(jìn)位輸出端,,ina,和,inb,是兩個(gè)加數(shù)輸入端,,,cin,是低位進(jìn)位輸入端。,全加器的,Verilog HDL,源程序如下:,,,module,adder1 (sum, cout, ina, inb, cin);,,input ina, inb, cin;,,output sum, cout;,,,assign {cout, sum} = ina+inb+cin,;,,,endmodule,,“assign {cout, sum} = ina+inb+cin
22、;”,語(yǔ)句實(shí)現(xiàn),1,位全加器的進(jìn)位輸出,cout,與和輸出,sum,的建模。,,在語(yǔ)句表達(dá)式中,用拼接運(yùn)算符“,{},”,將,cout,、,sum,這兩個(gè),1,位操作數(shù)拼接為一個(gè),2,位操作數(shù)。,,②,用元件例化(,instantiate,)方式建模,,元件例化方式建模是利用,Verilog HDL,提供的元件庫(kù)實(shí)現(xiàn)的。例如,用與門例化元件定義一個(gè)三輸入端與門可以寫(xiě)為,,and myand3(y,a,b,c);,and,是,Verilog HDL,元件庫(kù)中與門元件名,,myand3,是例化出的三輸入端與門名,,y,是與門輸出端,,a,、,b,、,c,是輸入端。,,③用,always,塊語(yǔ)句建
23、模,,,always,塊語(yǔ)句可以產(chǎn)生各種邏輯,常用于時(shí)序邏輯的功能描述。一個(gè)程序設(shè)計(jì)模塊中,可以包含一個(gè)或多個(gè),always,語(yǔ)句。程序運(yùn)行中,在某種條件滿足時(shí),就重復(fù)執(zhí)行一遍,always,結(jié)構(gòu)中的語(yǔ)句。,,例,2 8,位二進(jìn)制加法計(jì)數(shù)器的設(shè)計(jì),,8,位二進(jìn)制加法計(jì)數(shù)器的邏輯符號(hào)如圖。,,OUT,是,8,位二進(jìn)制計(jì)數(shù)器的輸出端(,8,位向量);,,COUT,是進(jìn)位輸出端(,1,位);,,DATA,是并行數(shù)據(jù)輸入端(,8,位向量);,,LOAD,是計(jì)數(shù)器的預(yù)置控制輸入端,,,當(dāng),LOAD=1,時(shí),,OUT=DATA,;,,CLK,是時(shí)鐘控制輸入端,上升沿為有效邊沿;,,CLR,是同步復(fù)位輸入
24、端,當(dāng),CLK,的上升沿到來(lái)時(shí)且,CLR=1,,則計(jì)數(shù)器被復(fù)位,,OUT=00000000,。,(邏輯符號(hào)圖是由計(jì)算機(jī)對(duì)計(jì)數(shù)器電路的,Verilog HDL,源代碼編譯后產(chǎn)生的元件符號(hào),圖中的輸入,/,輸出標(biāo)識(shí)符自動(dòng)被改為大寫(xiě),而源程序中的標(biāo)識(shí)符都是小寫(xiě)。),,8,位二進(jìn)制加法計(jì)數(shù)器的,Verilog HDL,源程序如下:,,,module,cnt8 (out, cout,data,load,cin,clk, clr);,,input [7:0] data;,,input load, cin, clk, clr,,output [7:0] out;,,output cout;,,reg
25、 [7:0] out;,,always @(posedge clk),,begin,,if (load) out=data;,,else if(clr) out=’b00000000;,,else out=out+1;,,end,,assign cout = ,,endmodule,,用,always,塊語(yǔ)句實(shí)現(xiàn),8,位二進(jìn)制加法計(jì)數(shù)器的建模。,@(posedge clk),是時(shí)間控制敏感函數(shù),表示,clk,上升沿到來(lái)的敏感時(shí)刻。每當(dāng),clk,的上升沿到來(lái)時(shí),,always,塊語(yǔ)句中的全部語(yǔ)句就執(zhí)行一遍?!?assign cout = ”,語(yǔ)句產(chǎn)生進(jìn)位輸出,cout,,在語(yǔ)句
26、中“,&out”,是與的縮減運(yùn)算式,只有,out,中數(shù)字全為,1,時(shí),結(jié)果才為,1,。,④,用,initial,塊語(yǔ)句建模,,Initial,塊語(yǔ)句與,always,語(yǔ)句類似,不過(guò)在程序中它只執(zhí)行,1,次就結(jié)束了。,,Initial,塊語(yǔ)句的使用格式 :,,,Initial,,,Begin,,,語(yǔ)句,1;,,,語(yǔ)句,2;,,:,,,end,,例,3,用,Initial,過(guò)程語(yǔ)句對(duì)測(cè)試變量賦值,,,,initial,,,begin,,for(addr=0; addr 27、end,,,從以上例子中可以看出,,,Verilog HDL,程序設(shè)計(jì)模塊的,基本結(jié)構(gòu),:,,①,Verilog HDL,程序是由模塊構(gòu)成的。每個(gè)模塊的內(nèi)容都是嵌套在,module,和,endmodule,兩語(yǔ)句之間,每個(gè)模塊實(shí)現(xiàn)特定的功能,模塊是可以進(jìn)行層次嵌套的。,,②每個(gè)模塊首先要進(jìn)行端口定義,并聲明輸入(,input,)、輸出(,output,)或雙向(,inouts,),然后對(duì)模塊的功能進(jìn)行邏輯描述。,,③,Verilog HDL,程序的書(shū)寫(xiě)格式自由,一行可以有一條或多條語(yǔ)句,一條語(yǔ)句也可以分為多行寫(xiě)。,,④除了,end,或以,end,開(kāi)頭的關(guān)鍵字(如,endmodule,)語(yǔ)句外, 28、每條語(yǔ)句后必須要有分號(hào)“;”。,,⑤可以用,/*……*/,或,//……,對(duì),Verilog HDL,程序的任何部分注釋。一個(gè)完整的源程序都應(yīng)當(dāng)加上必要的注釋,以加強(qiáng)程序的可讀性。,,2.2 Verilog HDL,詞法構(gòu)成,,Verilog HDL,的詞法標(biāo)識(shí)符包括:間隔符與注釋符、操作符、數(shù)值常量、字符串、標(biāo)識(shí)符和關(guān)鍵字。,,,(,1,)間隔符與注釋符,,間隔符又稱空白符,包括空格符、,tab,符號(hào)、換行符及換頁(yè)符等。它們的作用是分隔其他詞法標(biāo)識(shí)符。在必要的地方插入間隔符可以增強(qiáng)源文件的可讀性。但在字符串中空格符和,tab,符號(hào)(制表符)是有意義的字符。,,Verilog HDL,有單行注釋 29、和多行段注釋兩種注釋形式。單行注釋以字符“,//”,起始,到本行結(jié)束;而段注釋則以“,/*”,起始以“*,/”,結(jié)束,在段注釋中不允許嵌套,段注釋中單行注釋標(biāo)識(shí)符“,//”,沒(méi)有任何特殊意義。,,,(,2,)操作符,,Verilog HDL,中定義了操作符,又稱運(yùn)算符,按照操作數(shù)的個(gè)數(shù),可以分為一元、二元和三元操作符;按功能可以大致分為算術(shù)操作符、邏輯操作符、比較操作符等幾大類。,表,1 Verilog HDL,的操作符及簡(jiǎn)要說(shuō)明,分類,操作符及功能,簡(jiǎn)要說(shuō)明,算術(shù)操作符,+,,加,,-,,,減,,*,,乘,,/,,除,,%,,整除,二元操作符,即有兩個(gè)操作數(shù)。操作數(shù)可以是物理數(shù)據(jù)類型,也可 30、以是抽象數(shù)據(jù)類型。,,%,是求余操作符,在兩個(gè)整數(shù)相除基礎(chǔ)上,取余數(shù)。,,例如,,5%6,的值是,5,;,13%5,余數(shù),3,。,,關(guān)系操作符,>,,大于,,<,,小于,,>=,,大于等于,,<=,,小于等于,,==,,相等,,!=,,不相等,,===,,全等,,!==,,非全等,關(guān)系運(yùn)算是二元操作符,關(guān)系運(yùn)算的結(jié)果是,1,位邏輯值。如果操作數(shù)之間的關(guān)系成立,返回值為,1,;關(guān)系不成立,則返回值為,0,。,,若某一個(gè)操作數(shù)的值不定,則關(guān)系是模糊的,返回值是不定值,X,。,,,,相等與全等操作符的區(qū)別:相等運(yùn)算兩個(gè)操作數(shù)必須逐位相等,不定態(tài)和高阻態(tài)的比較結(jié)果為不定值。全等運(yùn)算要求兩個(gè)操作數(shù)完全一 31、致,。,,例如:,A=8’b1101xx01 B=8’b1101xx01,,則,A= =B,運(yùn)算結(jié)果為,x,(未知);,,A= = =B,運(yùn)算結(jié)果為,1,(真)。,位操作符,,~,,按位非,,&,,按位與,,|,按位或,,^,,按位異或,,^ ~ (~ ^),,按位同或,位運(yùn)算是將兩個(gè)操作數(shù)按對(duì)應(yīng)位進(jìn)行邏輯操作。,,“,~”,是一元操作符,其余都是二元操作符。將操作數(shù)按位進(jìn)行邏輯運(yùn)算。,,,例如:,A=8’b11010001 ~A=8’B00101110,,B=8’b00011001 A&B=8b’00010001,分類,操作符及功能,簡(jiǎn)要說(shuō)明,邏輯操作符,&&,邏輯與,,||, 32、,邏輯或,,!,,邏輯非,&&,和,||,為二元操作符;,,,!為一元操作符,即只有一個(gè)操作數(shù)。,縮減操作符,&,,歸約與,,~&,,歸約與非,,|,,歸約或,,~|,,歸約或非,,^,,歸約異或,,~ ^ (^ ~),,歸約同或,一元操作符,對(duì)操作數(shù)各位的值進(jìn)行運(yùn)算。如“,&”,是對(duì)操作數(shù)各位的值進(jìn)行邏輯與運(yùn)算,得到一個(gè)一位的結(jié)果值,1,或,0,。,,例如:,A=8’b11010001,,則,&A=0,與縮減運(yùn)算,A,中的數(shù)字全為,1,時(shí),結(jié)果才為,1,。,,,|A=1,或縮減運(yùn)算,A,中的數(shù)字全為,0,時(shí),結(jié)果才為,0,。,分類,操作符及功能,簡(jiǎn)要說(shuō)明,移位操作符,>>,,右移,,<<,, 33、左移,二元操作符,對(duì)左側(cè)的操作數(shù)進(jìn)行它右側(cè)操作數(shù)指明的位數(shù)的移位,空出的位用,0,補(bǔ)全。,,例如:設(shè),A=8’b11010001,,,則,A>>4,,結(jié)果,A=8’b00001101,,而,A<<4,,結(jié)果,A=8’b00010000,。,條件操作符,?:,,操作數(shù),=,條件?表達(dá)式,1,:表達(dá)式,2,;,,當(dāng)條件為真(值為,1,)時(shí),操作數(shù),=,表達(dá)式,1,;,,為假(值為,0,)時(shí),操作數(shù),=,表達(dá)式,2,。,三元操作符,即條件操作符有三個(gè)操作數(shù)。,,,例如,a,?,b,:,c,,若條件操作數(shù),a,是邏輯,1,,則算子返回表達(dá)式,1,操作數(shù),b,;,,若,a,是邏輯,0,,則算子返回表達(dá)式 34、,2,操作數(shù),c,。,并接操作符,{, },,,例如,{a,{2{a,b}}},,,等價(jià)于,{a,a,b,a,b},。,,,將,1,位全加器的進(jìn)位,cout,和,sum,并接,表達(dá)式為,將兩個(gè)或兩個(gè)以上用逗號(hào)分隔的表達(dá)式按位連接在一起。還可以用常數(shù)來(lái)指定重復(fù)的次數(shù)。,,,,{cout,sum}=ina+inb+cin;,,同其他高級(jí)語(yǔ)言類似,各類操作符號(hào)之間有優(yōu)先級(jí)之分,如下表:,優(yōu)先級(jí)序號(hào),操作符,操作符名稱,1,!,、,~,邏輯非、按位取反,2,*,、,/,、,%,乘、除、求余,3,+,、,-,加、減,4,<<,、,>>,左移、右移,5,<,、,<=,、,>,、,>=,小于、小于等于、大于 35、、大于等于,6,==,、,!=,、,===,、,!==,等于、不等于、全等、不全等,7,&,、,~&,,縮減與、縮減與非,8,^,、,^~,縮減異或、縮減同或,9,|,、,~ |,縮減或、縮減或非,10,&&,邏輯與,11,||,邏輯或,12,?,:,條件操作符,列表頂部是最高優(yōu)先級(jí),底部是最低優(yōu)先級(jí)。列在同一行中的操作符具有相同的優(yōu)先級(jí)。所有操作符(?:除外)在表達(dá)式中都是從左向右結(jié)合的。圓括號(hào)()用于改變優(yōu)先級(jí)或使得表達(dá)式中運(yùn)算順序更加清晰,提高源文件的可讀性。,,(,3,)數(shù)值常量,,,Verilog HDL,中的數(shù)值常量有整型和實(shí)型兩大類,分為十進(jìn)制、十六進(jìn)制、八進(jìn)制或二進(jìn)制。若在前面 36、加上一個(gè)正“,+”,或負(fù)“,—”,號(hào)就表示有符號(hào)數(shù),否則所代表的就是無(wú)符號(hào)數(shù)。在數(shù)值常量的任意位置可以隨意插入下劃線“,_”,以提高可讀性。,,常量定義格式為:,,parameter,常量名,1=,表達(dá)式,常量名,2=,表達(dá)式,,…,,常量名,n=,表達(dá)式;,,parameter,是常量定義關(guān)鍵字,常量名是用戶定義的標(biāo)識(shí)符,表達(dá)式為常量賦值。,,例如,parameter Vcc=5, fbus=8’b11010001;,,Verilog HDL,中的整型數(shù)值常量就是整數(shù),有兩種書(shū)寫(xiě)格式:一種是無(wú)位寬的十進(jìn)制表示法,如,-132,。第二種是定義位寬和進(jìn)制的表示法,這種表示方法通常是無(wú)符號(hào)數(shù) 37、。,,常數(shù)書(shū)寫(xiě)格式是:,,[size]’base value,,其中,size,是位寬,定義了數(shù)值常量的位數(shù)(長(zhǎng)度);,base,代表這個(gè)數(shù)據(jù)的進(jìn)制,取值范圍和相應(yīng)的進(jìn)制如下表;,value,是一個(gè)數(shù)值常量的值,書(shū)寫(xiě)格式與進(jìn)制,base,相對(duì)應(yīng)。,,例如,4’h6a8c,,,表示一個(gè),4,位十六進(jìn)制數(shù)。,,,2’hf5,,等于,8’b11110101,;,8’b1111xxxx,,等價(jià),2’hfx,;,,,8’b1101zzzz,,等價(jià),2’hdz,。,Verilog HDL,中的進(jìn)制,base,進(jìn)制代碼取值,對(duì)應(yīng)的進(jìn)制,b,或,B,二進(jìn)制,o,或,O,八進(jìn)制,d,或,D,十進(jìn)制,h,或,H, 38、十六進(jìn)制,,Verilog HDL,中的實(shí)型數(shù)值常量就是浮點(diǎn)數(shù),可以用十進(jìn)制與科學(xué)計(jì)數(shù)法兩種形式書(shū)寫(xiě)。如果采用十進(jìn)制格式,小數(shù)點(diǎn)兩邊必須都有數(shù)字。,,,Verilog HDL,的編程最終是與硬件相對(duì)應(yīng)的。由于硬件電路中信號(hào)的邏輯狀態(tài)具有特殊性,即不僅有,0,(低電平)和,1,(高電平),還有可能是,X,(未知狀態(tài))和,Z,(高阻態(tài)),因此,Verilog HDL,數(shù)值集合有四個(gè)基本值:,,0,:邏輯,0,或假狀態(tài);,,1,:邏輯,1,或真狀態(tài);,,X,:邏輯不確定;,,Z,:高阻態(tài)。,(,4,)字符串,,字符串是雙引號(hào)“”括起來(lái)的字符序列,必須包含在同 一行中,不能多行書(shū)寫(xiě)。在表達(dá)式或賦值語(yǔ)句 39、中作為操作數(shù)的字符串被看作,ASCII,值序列,即一個(gè)字符串中的每一個(gè)字符對(duì)應(yīng)一個(gè),8,位,ASCII,值。,,(,5,)標(biāo)識(shí)符,,標(biāo)識(shí)符是模塊、寄存器、端口、連線、示例和,begin-end,塊等元素的名稱,是賦給對(duì)象的唯一的名稱。標(biāo)識(shí)符可以是字母、數(shù)字、,$,符和下劃線“,_”,字符的任意組合序列。,,定義標(biāo)識(shí)符規(guī)則:,,①首字符不能是數(shù)字,必須以字母或下劃線“,_”,開(kāi)頭。,,②字符數(shù)不能多于,1024,。,,③標(biāo)識(shí)符區(qū)分大小寫(xiě)。,,④不要與關(guān)鍵字同名。,,例如,ina,、,inb,、,adder,、,adder8,、,name_adder,是正確的,而,1a ?b,是錯(cuò)誤的。,,(,6 40、,)關(guān)鍵字,,關(guān)鍵字是,Verilog HDL,預(yù)先定義的專用詞。在,IEEE,標(biāo)準(zhǔn),——Verilog HDL 1364-1995,中規(guī)定了,102,個(gè)關(guān)鍵詞,都采用小寫(xiě)形式。關(guān)鍵詞有其特定和專有的語(yǔ)法作用,用戶不能再對(duì)它們做新的定義。,關(guān)鍵字,,Alwaysand,,Assignattribute,,Begin,,Buf,,Bufif0,,Bufif1,,Case,,Casex,,Casez,,Cmos,,Deassign,,Defaultdefparam,,Disable,,edge,,else,,end,,endattribute,,endcase,,endfunction,,endm 41、odule,,endprimitive,,endspecify,,endtable,,endtask,,event,,for,,force,,forever,,fork,,function,,highz0,highzl,,if,,initial,,inout,,input,,integer,,join,,large,,macromodule,,medium,,module,,nand,,negedge,,nmos,,nor,,not,,notif0,notifl,,or,,output,,parameter,,pmos,,posedge,,primitive,,pull0,,pull1,,pu 42、lldown,,pullup,,rcmos,,real,,realtime,,reg,,release,,repeat,rtranifl,,scalared,,signed,,small,,specify,,specpram,,strength,,strong0,,strong1,,supply0,,supply1,,table,,task,,time,,tran,,tranif0,,tranif1,tri,,tri0,,tri1,,triand,,trior,,triteg,,unsigned,,vectored,,wait,,wand,,weak0,,weak1,,while,,wire, 43、,wor,,xnor,,xor,,(,7,)變量,,變量是在程序運(yùn)行時(shí)其值可以改變的量。在,Verilog HDL,中,變量分為網(wǎng)絡(luò)型(,nets type,)和寄存器型(,register type,)兩種。,,①網(wǎng)絡(luò)型變量,,nets,型變量是輸出值始終根據(jù)輸入變化而更新的變量,一般用來(lái)定義硬件電路中的各種物理連線。,Verilog HDL,提供了多種,nets,型變量。,,常見(jiàn)的,nets,型變量及說(shuō)明,,,類型,功能說(shuō)明,wire,、,tri,連線類型(兩者功能完全相同),wor,、,trior,具有線或特性的連線(兩者功能一致),wand,、,triand,具有線與特性的連線(兩者功 44、能一致),tri1,、,tri0,分別為上拉電阻和下拉電阻,supply1,、,supply0,分別為電源(邏輯,1,)和地(邏輯,0,),s1,s2,s3,,②,寄存器型變量,,register,型變量是用來(lái)描述硬件系統(tǒng)的基本數(shù)據(jù)對(duì)象。作為一種數(shù)值容器,可以容納當(dāng)前值,也可以保持歷史值。與寄存器的記憶功能相對(duì)應(yīng),可以作為模塊各器件間的信息傳遞通道。,,register,型變量與,wire,型變量的區(qū)別在于,register,型變量需要被明確的賦值, 并且在重新賦值前一直保持原值。,register,型變量是在,always,、,initial,等過(guò)程語(yǔ)句種定義,并通過(guò)過(guò)程語(yǔ)句賦值。,,常見(jiàn)的 45、,register,型變量及說(shuō)明,,,類型,功能說(shuō)明,reg,常用的寄存器型變量,integer,32,位帶符號(hào)整數(shù)型變量,real,64,位帶符號(hào)實(shí)數(shù)型變量,time,無(wú)符號(hào)時(shí)間型變量,2.3 Verilog HDL,的語(yǔ)句,,Verilog HDL,的語(yǔ)句包括賦值語(yǔ)句、條件語(yǔ)句、循環(huán)語(yǔ)句、結(jié)構(gòu)聲明語(yǔ)句和編譯預(yù)處理語(yǔ)句等類型,每一類語(yǔ)句又包括幾種不同的語(yǔ)句。在這些語(yǔ)句中,有些語(yǔ)句屬于順序執(zhí)行語(yǔ)句,有些語(yǔ)句屬于并行執(zhí)行語(yǔ)句。,,(,1,)賦值語(yǔ)句,,在,Verilog HDL,中,賦值語(yǔ)句常用于描述硬件設(shè)計(jì)電路輸出與輸入之間的信息傳送,改變輸出結(jié)果。,Verilog HDL,有,4,種賦值方法 46、:門基元、連續(xù)賦值、過(guò)程賦值和非阻塞賦值。,,①門基元賦值語(yǔ)句,,門基元賦值語(yǔ)句的格式為:,,基本邏輯門關(guān)鍵字 (門輸出,門輸入,1,,門輸入,2,,,…,,門輸入,n,);,,例如,4,輸入與非門的門基元賦值語(yǔ)句為,,,nand (y,a,b,c,d);,//,與語(yǔ)句,assign y=~(a&b&c&d),等效,,②,連續(xù)賦值語(yǔ)句,,連續(xù)賦值語(yǔ)句的關(guān)鍵字,assign,,賦值符號(hào)是“,=”,,賦值語(yǔ)句的格式為,,,assign,賦值變量,=,表達(dá)式;,,例如,assign y=~(a&b&c&d),;,,連續(xù)賦值語(yǔ)句的“,=”,兩邊的變量都應(yīng)該是,wire,型變量。在執(zhí)行中,輸出,y 47、,的變化跟隨輸入,a,、,b,、,c,、,d,的變化而變化,反映了信息傳送的連續(xù)性。連續(xù)賦值語(yǔ)句用于邏輯門和組合邏輯電路的描述。,,例,1,四輸入端與非門的,Verilog HDL,源程序,,,module,,example1(y,a,b,c,d);,,output y;,,input a,b,c,d;,,assign #1 y=~(a,,,//#1,表示輸出與輸入信號(hào)之間具有,1,個(gè)單位的時(shí)間延遲,,,endmodule,,③,過(guò)程賦值語(yǔ)句,,過(guò)程賦值語(yǔ)句出現(xiàn)在,initial,和,always,塊語(yǔ)句中,賦值符號(hào)是“,=”,,語(yǔ)句格式為:,,,賦值變量,=,表達(dá)式;,,過(guò)程賦值語(yǔ)句“ 48、,=”,左邊的賦值變量必須是(寄存器),reg,型變量,其值在該語(yǔ)句結(jié)束時(shí)即可得到。,,如果一個(gè)塊語(yǔ)句中包含若干條過(guò)程賦值語(yǔ)句,按順序一條一條執(zhí)行,前面的語(yǔ)句沒(méi)完成,后面的語(yǔ)句就不能執(zhí)行。,,因此,過(guò)程賦值語(yǔ)句也稱為阻塞賦值語(yǔ)句。,,④,非阻塞賦值語(yǔ)句,,非阻塞賦值語(yǔ)句也是出現(xiàn)在,initial,和,always,塊語(yǔ)句中,賦值符號(hào)是“,<=”,,語(yǔ)句格式為:,,,賦值變量,<=,表達(dá)式;,,非阻塞賦值語(yǔ)句“,<=”,左邊的賦值變量必須是(寄存器),reg,型變量,其值在塊語(yǔ)句結(jié)束時(shí)才可得到,與過(guò)程賦值語(yǔ)句不同。,,例如 下面的塊語(yǔ)句包含,4,條賦值語(yǔ)句,,,always @(posedge 49、 clock),,m=3; n=75; n<=m; r=n;,,語(yǔ)句執(zhí)行結(jié)束后,,r,的值是,75,,而不是,3,,因?yàn)榈?3,行是非阻塞賦值語(yǔ)句“,n<=m”,,該語(yǔ)句要等到本塊語(yǔ)句結(jié)束時(shí),,n,的值才能改變。,,塊語(yǔ)句的“,@(posedge clock)”,是定時(shí)控制敏感函數(shù),表示時(shí)鐘信號(hào),clock,的上升沿到來(lái)的敏感時(shí)刻。,,例,2,上升沿觸發(fā)的,D,觸發(fā)器的,Verilog HDL,源程序,,,module,,D_FF(q,d,clock);,,,input d,clock;,//,屬于,wire,型變量,由隱含規(guī)則定義。,,,output q;,//,屬于 50、,reg,型變量,,,reg q;,,always @(posedge clock),,q=d;,,,endmodule,,(,2,)條件語(yǔ)句,,條件語(yǔ)句包含,if,語(yǔ)句和,case,語(yǔ)句,它們都是順序語(yǔ)句,應(yīng)放在,always,塊中。,,,①,if,語(yǔ)句,,完整的,Verilog HDL,的,if,語(yǔ)句結(jié)構(gòu)如下:,,,if,(表達(dá)式),,,begin,,,語(yǔ)句;,,,end,,else if,(表達(dá)式),,,begin,,,語(yǔ)句;,,,end,,else,,begin,,,語(yǔ)句;,,,end,,在,if,語(yǔ)句中,“表達(dá)式”是邏輯表達(dá)式或關(guān)系表達(dá)式,也可以是位寬為,1,位的變量。,,系統(tǒng)對(duì) 51、表達(dá)式的值進(jìn)行判斷, 若為,0,,,x,,,z,按“假”處理;若為,1,,按“真”處理,執(zhí)行指定的語(yǔ)句。,,例,3 8,線,-3,線優(yōu)先編碼器的設(shè)計(jì),,8,線,-3,線優(yōu)先編碼器的功能表,,,,module,,code(y,a);,,input[7:0] a;,,output[2:0] y;,,reg[2:0] y;,,always @(a),,begin,,if(~a[7]) y<=3’b111;,,else if(~a[6]) y<=3’b110;,,else if(~a[5]) y<=3’b101;,,else if(~a[4]) y<=3’b100;,,else i 52、f(~a[3]) y<=3’b011;,,else if(~a[2]) y<=3’b010;,,else if(~a[1]) y<=3’b001;,,else y<=3’b000;,,end,,,endmodule,輸入,輸出,in0 in1 in2 in3 in4 in5 in6 in7,out2 out1 out0,x x x x x x x 0,,x x x x x x 0 1,,x x x x x 0 1 1,,x x x x 53、 0 1 1 1,,x x x 0 1 1 1 1,,x x 0 1 1 1 1 1,,x 0 1 1 1 1 1 1,,0 1 1 1 1 1 1 1,1 1 1,,1 1 0,,1 0 1,,1 0 0,,0 1 1,,0 1 0,,0 0 1,,0 0 0,,,②case,語(yǔ)句,,case 54、,語(yǔ)句是一種多分支的條件語(yǔ)句,,case,語(yǔ)句的格式為:,,,,case,(表達(dá)式),,選擇值,1,: 語(yǔ)句,1,;,,選擇值,2,: 語(yǔ)句,2,;,,,…,,,選擇值,n,: 語(yǔ)句,n,;,,,default: n+1,,,endcase,,執(zhí)行,case,語(yǔ)句時(shí),首先計(jì)算表達(dá)式的值,然后執(zhí)行條件句中相應(yīng)的“選擇值”的語(yǔ)句。當(dāng)所有的條件句的“選擇值”與表達(dá)式的值不同時(shí),則執(zhí)行“,default”,后的語(yǔ)句。,default,可以省略。,,case,語(yǔ)句多用于數(shù)字系統(tǒng)中的譯碼器、數(shù)據(jù)選擇器、狀態(tài)機(jī)及微處理器的指令譯碼器等電路的描述。,,例,4,:用,case,語(yǔ)句描述,4,選,1 55、,數(shù)據(jù)選擇器,,控制信號(hào),s1,s2,有,4,種組合,控制,a,b,c,d,中的一個(gè)數(shù)據(jù)送到輸出端。,,4,選,1,數(shù)據(jù)選擇器,Verilog HDL,的描述如下:,,,,module,,mux41(z,a,b,c,d,s1,s2);,,input s1,s2;,,input a,b,c,d;,,output z;,,reg z;,,always @(s1 or s2),,begin,,case({s1,s2}),,2’b00: z=a;,,2’b01: z=b;,,2’b10: z=c;,,2’b11: z=d;,,endcase,,end,,,endmodule,,case,語(yǔ)句 56、還有兩種變體形式,,casez,和,casex,語(yǔ)句。與,case,語(yǔ)句的區(qū)別是不考慮語(yǔ)句中的高阻,z,和未知,x,的那些位,只關(guān)注其他位的比較結(jié)果。,s1 s2,z,0 0,,0 1,,1 0,,1 1,a,,b,,c,,d,,4,選,1,數(shù)據(jù)選擇器功能表,,(,3,)循環(huán)語(yǔ)句,,循環(huán)語(yǔ)句包含,for,語(yǔ)句、,repeat,語(yǔ)句、,while,語(yǔ)句和,forever,語(yǔ)句,4,種。,,,①,for,語(yǔ)句,,for,語(yǔ)句的格式為:,,,for,(循環(huán)指針,=,初值;循環(huán)指針,<,終值;循環(huán)指針,=,循環(huán)指針,+,步長(zhǎng)值),,,begin,,,語(yǔ)句;,,,end,,fo 57、r,語(yǔ)句可以是一組語(yǔ)句重復(fù)執(zhí)行,語(yǔ)句中的參數(shù)一般屬于整型變量或常量。語(yǔ)句重復(fù)執(zhí)行的次數(shù)由語(yǔ)句中的參數(shù)確定。即,,,循環(huán)重復(fù)次數(shù),=,(終值,-,初值),/,步長(zhǎng)值,,例,5,:,8,位奇偶校驗(yàn)器的描述,,用,a,表示輸入信號(hào),長(zhǎng)度為,8,位的向量。在程序中,用,for,語(yǔ)句對(duì),a,的值,逐位進(jìn)行模,2,加運(yùn)算(即異或,XOR,),循環(huán)指針變量,n,控制模,2,加的次數(shù)。,11100110,奇數(shù)個(gè),1,,循環(huán)變量的初值為,0,,終值為,8,,因此,控制循環(huán)共執(zhí)行了,8,次。,,例,5,用,Verilog HDL,對(duì),8,位奇偶校驗(yàn)器的描述如下:,,,,module,,test8(a,out);, 58、,input[7:0] a;,,output out;,,reg out;,,integer n;,,always @(a),,begin,,out=0;,,for(n=0;n<8;n=n+1) out=out^a[n]; //,異或,,,end,,,endmodule,,②repeat,語(yǔ)句,,repeat,語(yǔ)句的語(yǔ)法格式為:,,,repeat,(循環(huán)次數(shù)表達(dá)式)語(yǔ)句;,,例,6,用,repeat,語(yǔ)句實(shí)現(xiàn),8,位奇偶校驗(yàn)器的描述如下:,,,module,,test8_1(a,out);,,parameter size=7;,,input[7:0] a;,,outpu 59、t out;,,reg out;,,integer n;,,always @(a),,begin,,out=0;,,n=0;,,repeat(size),,begin,,out=out^a[n];,,n=n+1;,,end,,end,,,endmodule,//MAX+plus II,軟件不支持,repeat,語(yǔ)句,但,synplify,軟件支持。,,③while,語(yǔ)句,,while,語(yǔ)句的語(yǔ)法格式為:,,,while,(循環(huán)執(zhí)行條件表達(dá)式),,,begin,,,重復(fù)執(zhí)行語(yǔ)句;,,修改循環(huán)條件語(yǔ)句;,,,end,,while,語(yǔ)句在執(zhí)行時(shí),首先判斷循環(huán)執(zhí)行條件表達(dá)式是否為真。若為真, 60、則執(zhí)行其后面的語(yǔ)句;若為假,則不執(zhí)行 ,表示循環(huán)結(jié)束。為了使語(yǔ)句能夠結(jié)束,在循環(huán)執(zhí)行的語(yǔ)句中必須包含一條能改變循環(huán)條件的語(yǔ)句。,,,④,forever,語(yǔ)句,,forever,語(yǔ)句的語(yǔ)法格式為:,,,forever,,begin,,,語(yǔ)句;,,,end,,forever,是一種無(wú)窮循環(huán)控制語(yǔ)句,它不斷地執(zhí)行其后的語(yǔ)句或語(yǔ)句塊,永遠(yuǎn)不會(huì)結(jié)束。,Forever,語(yǔ)句常用來(lái)產(chǎn)生周期性的波形,作為仿真激勵(lì)信號(hào)。例如產(chǎn)生時(shí)鐘,clk,的語(yǔ)句為:,,,#10 forever #10 clk=!clk;,,//#10,表示輸出與輸入信號(hào)之間具有,10,個(gè)單位的時(shí)間延遲,,!clk,取非,,(,4,)結(jié)構(gòu)聲明 61、語(yǔ)句,,Verilog HDL,的任何過(guò)程模塊都是放在結(jié)構(gòu)聲明語(yǔ)句中,結(jié)構(gòu)聲明語(yǔ)句包括,always,、,initial,、,task,和,function,等,4,種結(jié)構(gòu)。,,,①,always,塊語(yǔ)句,,在一個(gè),Verilog HDL,模塊(,module,)中,,always,塊語(yǔ)句的使用次數(shù)是不受限制的,塊內(nèi)的語(yǔ)句也是不斷重復(fù)執(zhí)行的。,always,塊語(yǔ)句的語(yǔ)法結(jié)構(gòu)為:,,,always @(),,begin,,//,過(guò)程賦值語(yǔ)句;,,,//if,語(yǔ)句,,case,語(yǔ)句;,,,//for,語(yǔ)句,,while,語(yǔ)句,,repeat,語(yǔ)句;,,,//task,語(yǔ)句、,function,語(yǔ)句 62、;,,,end,,在,always,塊語(yǔ)句中,敏感信號(hào)表達(dá)式應(yīng)該列出影響塊內(nèi)取值的所有信號(hào)(指設(shè)計(jì)電路的輸入信號(hào)),多個(gè)信號(hào)之間用“,or”,連接。當(dāng)表達(dá)式中任何信號(hào)發(fā)生變化時(shí),就會(huì)執(zhí)行一遍塊內(nèi)的語(yǔ)句。塊內(nèi)語(yǔ)句可以包括:過(guò)程賦值、,if,、,case,、,for,、,while,、,repeat,、,task,和,function,等語(yǔ)句。,,在進(jìn)行時(shí)序邏輯電路的描述中,敏感信號(hào)表達(dá)式中經(jīng)常使用“,posedge”,和“,negedge”,這兩個(gè)關(guān)鍵字來(lái)聲明事件是由輸入信號(hào)的正邊沿(上升沿)或負(fù)邊沿(下降沿)觸發(fā)的。如“,always @(posedge clk) ”,表示模塊的事件是由,cl 63、k,的上升沿觸發(fā)的;而“,always @(negedge clk) ”,表示模塊的事件是由,clk,的下降沿觸發(fā)的。,,②initial,語(yǔ)句,,initial,語(yǔ)句的語(yǔ)法格式為:,,,initial,,begin,,,語(yǔ)句,1,;,,語(yǔ)句,2,;,,,…,;,,,end,,initial,語(yǔ)句的使用次數(shù)是不受限制的,但塊內(nèi)的語(yǔ)句僅執(zhí)行一次,因此,initial,語(yǔ)句常用于仿真中的初始化。,,③task,語(yǔ)句,,在,Verilog HDL,模塊中,,task,語(yǔ)句用來(lái)定義任務(wù)。任務(wù)類似高級(jí)語(yǔ)言中的子程序,用來(lái)單獨(dú)完成某項(xiàng)具體任務(wù),并可以被模塊或其他任務(wù)調(diào)用。利用任務(wù)可以把一個(gè)大的程序模塊分解 64、成為若干小的任務(wù),使程序清晰易懂。,,可以被調(diào)用的任務(wù)必須事先用,task,語(yǔ)句定義,定義格式如下:,,,,task,,任務(wù)名;,,,端口聲明語(yǔ)句;,,類型聲明語(yǔ)句;,,,begin,,,語(yǔ)句,,,end,,,endtask,,任務(wù)定義與模塊(,module,)定義的格式相同,區(qū)別在于任務(wù)是用,task -endtask,語(yǔ)句來(lái)定義,而且沒(méi)有端口名列表。,,例如,,8,位加法器的任務(wù)定義如下:,,,,task,,adder8,,output[7:0] sum;,,output cout;,,input[7:0] ina,inb;,,input cin;,,assign{co 65、ut,sum}=ina+inb+cin;,,,endtask,任務(wù)調(diào)用的格式如下:,,,任務(wù)名 (端口名列表);,,例如,8,位加法器任務(wù)調(diào)用,,,adder8 (tsum, tcout, tina, tinb);,,,使用任務(wù)時(shí),需要注意幾點(diǎn):,,(,1,)任務(wù)的定義和調(diào)用必須在同一個(gè),module,模塊內(nèi)。,,(,2,)定義任務(wù)時(shí),沒(méi)有端口名列表,但要進(jìn)行端口和數(shù)據(jù)的聲明。,,(,3,)當(dāng)任務(wù)調(diào)用時(shí),任務(wù)被激活。任務(wù)調(diào)用與模塊調(diào)用一樣,通過(guò)任務(wù)名實(shí)現(xiàn),調(diào)用時(shí)需列出端口名列表,端口名和類型必須與任務(wù)定義的排序和類型一致。,,例如,8,位加法器任務(wù)調(diào)用時(shí)的端口名列表中的,tsum,、,tc 66、out,、,tina,、,tinb,端口,與任務(wù)定義中的端口,sum,、,cout,、,ina,、,inb,排序和類型保持一致。,,(,4,)一個(gè)任務(wù)可以調(diào)用別的任務(wù)或函數(shù),可調(diào)用的任務(wù)和函數(shù)的個(gè)數(shù)不受限制。,,④function,語(yǔ)句,,在,Verilog HDL,模塊中,,function,語(yǔ)句用來(lái)定義函數(shù)。函數(shù)類似高級(jí)語(yǔ)言中的函數(shù),用來(lái)單獨(dú)完成某項(xiàng)具體操作,并可以作為表達(dá)式中的一個(gè)操作數(shù),被模塊或任務(wù)及其他函數(shù)調(diào)用,函數(shù)調(diào)用時(shí)返回一個(gè)用于表達(dá)式的值。,,可以被調(diào)用的函數(shù)必須事先定義,函數(shù)定義格式如下:,,,function,[,最高有效位:最低有效位,],函數(shù)名;,,端口聲明語(yǔ)句;,,類型聲明語(yǔ)句;,,,begin,,,語(yǔ)句;,,,end,,,endfunction,,在函數(shù)定義語(yǔ)句中,“,[,最高有效位:最低有效位,]”,是函數(shù)調(diào)用返回值位寬或類型聲明。,,例,8,
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 踏春尋趣 樂(lè)享時(shí)光——春季旅游踏春出游活動(dòng)
- 清明假期至安全不缺席風(fēng)起正清明安全需守護(hù)
- 全國(guó)黨員教育培訓(xùn)工作規(guī)劃
- XX中小學(xué)公共衛(wèi)生培訓(xùn)樹(shù)立文明衛(wèi)生意識(shí)養(yǎng)成良好衛(wèi)生習(xí)慣
- 小學(xué)生常見(jiàn)傳染病預(yù)防知識(shí)培訓(xùn)傳染病的預(yù)防措施
- 3月18日全國(guó)愛(ài)肝日中西醫(yī)結(jié)合逆轉(zhuǎn)肝硬化
- 肝病健康宣教守護(hù)您的肝臟健康如何預(yù)防肝炎
- 垃圾分類小課堂教育綠色小衛(wèi)士分類大行動(dòng)
- 中小學(xué)班主任經(jīng)驗(yàn)交流從勝任到優(yōu)秀身為世范為人師表 立責(zé)于心履責(zé)于行
- 教師數(shù)字化轉(zhuǎn)型理解與感悟教師數(shù)字化轉(zhuǎn)型的策略與建議
- 團(tuán)建小游戲團(tuán)建破冰小游戲團(tuán)隊(duì)協(xié)作破冰游戲多人互動(dòng)
- 教師使用deepseek使用攻略讓備課效能提升
- 辦公室會(huì)議紀(jì)要培訓(xùn)會(huì)議內(nèi)容會(huì)議整理公文攥寫(xiě)
- 黨員要注重培塑忠誠(chéng)奮斗奉獻(xiàn)的人格力量
- 橙色卡通風(fēng)兒童春季趣味運(yùn)動(dòng)會(huì)
相關(guān)資源
更多