電路計(jì)算機(jī)輔助設(shè)計(jì)_第1頁
電路計(jì)算機(jī)輔助設(shè)計(jì)_第2頁
電路計(jì)算機(jī)輔助設(shè)計(jì)_第3頁
電路計(jì)算機(jī)輔助設(shè)計(jì)_第4頁
電路計(jì)算機(jī)輔助設(shè)計(jì)_第5頁
已閱讀5頁,還剩100頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、電路計(jì)算機(jī)輔助設(shè)計(jì)課件第1頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五教學(xué)內(nèi)容與要求第1章 EDA技術(shù)簡介第2章 Verilog HDL語言編程 (10學(xué)時(shí))第3章 VHDL語言編程(4學(xué)時(shí)) 第4章 MATLAB程序入門 (12學(xué)時(shí))第5章 MATLAB在電路中的應(yīng)用(4學(xué)時(shí)) 每章有實(shí)驗(yàn)室上機(jī)實(shí)驗(yàn) 實(shí)驗(yàn)教學(xué) 第2頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五成績?cè)u(píng)定標(biāo)準(zhǔn)五級(jí)分制作業(yè)加上機(jī)考核:1、作業(yè)必做,上機(jī)交作業(yè)時(shí)隨機(jī)考兩個(gè)問題。2、點(diǎn)名沒有缺勤,加分。第3頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五第1章 EDA技術(shù)簡介1.1 EDA技術(shù)的主要內(nèi)容1

2、.2 EDA軟件系統(tǒng)的構(gòu)成1.3 EDA的工程設(shè)計(jì)流程1.4 數(shù)字系統(tǒng)的設(shè)計(jì)方法第4頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五第2章 Verilog HDL語言編程2.1 Verilog HDL設(shè)計(jì)模塊的基本結(jié)構(gòu)2.2 Verilog HDL詞法構(gòu)成2.3 Verilog HDL的語句2.4 Verilog HDL模型2.5 Verilog HDL設(shè)計(jì)電路流程2.6 用Verilog HDL描述邏輯電路的實(shí)例第5頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五第3章 VHDL 語言編程基礎(chǔ)3.1 概述 3.2 VHDL程序基本結(jié)構(gòu) 3.3 VHDL語言要素 3.4 VHD

3、L順序語句 3.5 VHDL并行語句 3.6 子程序(SUBPROGRAM) 3.7 庫、程序包及其他 3.8 VHDL描述風(fēng)格 3.9 基本邏輯電路設(shè)計(jì) 3.10 狀態(tài)機(jī)的VHDL設(shè)計(jì) 第6頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五第4章 MATLAB程序入門4.1基本語法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的開發(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 濾波

4、器第7頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五第1章 EDA技術(shù)簡介 1.1 EDA技術(shù)的主要內(nèi)容EDA是電子設(shè)計(jì)自動(dòng)化(Electronic Design Automation)的縮寫。 EDA技術(shù)就是以計(jì)算機(jī)為工具,設(shè)計(jì)者在EDA軟件平臺(tái)上,用硬件描述語言HDL完成設(shè)計(jì)文件,然后由計(jì)算機(jī)自動(dòng)地完成邏輯編譯、化簡、分割、綜合、優(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)用,已得到廣泛的普及,這些器件為

5、數(shù)字系統(tǒng)的設(shè)計(jì)帶來了極大的靈活性。CPLD、FPGA器件可以通過軟件編程而對(duì)硬件結(jié)構(gòu)和工作方式進(jìn)行重構(gòu),從而使得硬件的設(shè)計(jì)可以如同軟件設(shè)計(jì)那樣方便快捷。促進(jìn)了EDA技術(shù)的迅速發(fā)展。第8頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五EDA技術(shù)涉及面廣,內(nèi)容豐富,主要應(yīng)掌握如下四個(gè)方面的內(nèi)容: 大規(guī)模可編程邏輯器件,大規(guī)模可編程邏輯器件是利用EDA技術(shù)進(jìn)行電子系統(tǒng)設(shè)計(jì)的載體。 FPGA和CPLD 硬件描述語言,硬件描述語言是利用EDA技術(shù)進(jìn)行電子系統(tǒng)設(shè)計(jì)的主要表達(dá)手段。VHDL、Verilog、ABEL 軟件開發(fā)工具,軟件開發(fā)工具是利用EDA技術(shù)進(jìn)行電子系統(tǒng)設(shè)計(jì)的智能化的自動(dòng)化設(shè)計(jì)工具。

6、Altera的MAX+plus II、Lattice的ispEXPERT、Xilinx的Foundation Series。 實(shí)驗(yàn)開發(fā)系統(tǒng),實(shí)驗(yàn)開發(fā)系統(tǒng)則是利用EDA技術(shù)進(jìn)行電子系統(tǒng)設(shè)計(jì)的下載工具及硬件驗(yàn)證工具。第9頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 1 大規(guī)??删幊踢壿嬈骷?可編程邏輯器件(簡稱PLD)是一種由用戶編程以實(shí)現(xiàn)某種邏輯功能的新型邏輯器件。FPGA是現(xiàn)場(chǎng)可編程門陣列的簡稱,CPLD是復(fù)雜可編程邏輯器件的簡稱。高集成度、高速度和高可靠性是FPGA/CPLD最明顯的特點(diǎn),其時(shí)鐘延時(shí)可小至ns級(jí),結(jié)合其并行工作方式,在超高速應(yīng)用領(lǐng)域和實(shí)時(shí)測(cè)控方面有著非常廣闊的應(yīng)用

7、前景。FPGA/CPLD的高可靠性還表現(xiàn)在幾乎可將整個(gè)系統(tǒng)下載于同一芯片中,實(shí)現(xiàn)所謂片上系統(tǒng),從而大大縮小了體積,易于管理和屏蔽。第10頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 2 硬件描述語言(HDL) 常用的硬件描述語言有VHDL、Verilog、ABEL。 VHDL:作為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語言,在電子工程領(lǐng)域,已成為事實(shí)上的通用硬件描述語言。 Verilog:支持的EDA工具較多,適用于RTL級(jí)(寄存器轉(zhuǎn)換級(jí))和門電路級(jí)的描述,其綜合過程較VHDL稍簡單,但其在高級(jí)描述方面不如VHDL。有專家認(rèn)為,在新世紀(jì)中,VHDL與Verilog語言將承擔(dān)幾乎全部的數(shù)字系統(tǒng)設(shè)

8、計(jì)任務(wù)。第11頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 3 軟件開發(fā)工具 目前比較流行的、主流廠家的EDA的軟件工具有:Altera的MAX+plus II、升級(jí)版Quartus II;Lattice的ispEXPERT;Xilinx的Foundation Series。 MAX+plus II是Altera公司開發(fā)的EDA工具軟件。Altera公司是世界上最大的可編程邏輯器件供應(yīng)商之一。MAX+plus II軟件是一個(gè)集成化的可編程邏輯器件開發(fā)環(huán)境,設(shè)計(jì)者能在這個(gè)環(huán)境下進(jìn)行邏輯設(shè)計(jì),完成設(shè)計(jì)文件的輸入編輯、編譯、仿真、綜合、布局布線和編程下載等設(shè)計(jì)工作。軟件界面友好、方便易學(xué)

9、、功能全面,是非常流行的大眾化EDA平臺(tái)。第12頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五MAX+plus II:支持原理圖、VHDL和Verilog語言文本文件,以及以波形與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ī)模邏輯器件。第13頁,共1

10、05頁,2022年,5月20日,8點(diǎn)2分,星期五 4 實(shí)驗(yàn)開發(fā)系統(tǒng) 提供芯片下載電路及EDA實(shí)驗(yàn)/開發(fā)的外圍資源(類似于用于單片機(jī)開發(fā)的仿真器),供硬件驗(yàn)證用。一般包括: 實(shí)驗(yàn)或開發(fā)所需的各類基本信號(hào)發(fā)生模塊,包括時(shí)鐘、脈沖、高低電平等; FPGA/CPLD輸出信息顯示模塊,包括數(shù)碼顯示、發(fā)光管顯示、聲響指示等; 監(jiān)控程序模塊,提供“電路重構(gòu)軟配置”; 目標(biāo)芯片適配座以及上面的FPGA/CPLD目標(biāo)芯片和編程下載電路。自己閱讀第14頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 1.2 EDA軟件系統(tǒng)的構(gòu)成EDA技術(shù)研究的對(duì)象是電子設(shè)計(jì)的全過程,有系統(tǒng)級(jí)、電路級(jí)和物理級(jí)3個(gè)層次的設(shè)計(jì)

11、。涉及的電子系統(tǒng)從低頻、高頻到微波,從線性到非線性,從模擬到數(shù)字,從通用集成電路到專用集成電路構(gòu)造的電子系統(tǒng),因此EDA技術(shù)研究的范疇相當(dāng)廣泛。EDA軟件系統(tǒng)應(yīng)當(dāng)包含以下子模塊:設(shè)計(jì)輸入子模塊、設(shè)計(jì)數(shù)據(jù)庫子模塊、分析驗(yàn)證子模塊、綜合仿真子模塊、布局布線子模塊等。自己閱讀第15頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 (1) 設(shè)計(jì)輸入子模塊;用戶編輯輸入模塊的設(shè)計(jì)描述,并進(jìn)行語義正確性、語法規(guī)則的檢查,檢查通過后,將用戶的設(shè)計(jì)描述數(shù)據(jù)轉(zhuǎn)換為EDA軟件系統(tǒng)的內(nèi)部數(shù)據(jù)格式,存入設(shè)計(jì)數(shù)據(jù)庫被其他子模塊調(diào)用。設(shè)計(jì)輸入子模塊不僅能接受圖形描述輸入、硬件描述語言(HDL)描述輸入,還能接受圖

12、文混合描述輸入。該子模塊一般包含針對(duì)不同描述方式的編輯器,如圖形編輯器、文本編輯器等,同時(shí)包含對(duì)應(yīng)的分析器。自己閱讀第16頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 (2)設(shè)計(jì)數(shù)據(jù)庫子模塊:該模塊存放系統(tǒng)提供的庫單元以及用戶的設(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)可以是門陣列、可

13、編程邏輯器件等,由于對(duì)應(yīng)的器件不同,因此各自的布局布線工具會(huì)有很大的差異。 自己閱讀第17頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五1.3 EDA的工程設(shè)計(jì)流程1 源程序的編輯和編譯 利用EDA技術(shù)進(jìn)行一項(xiàng)工程設(shè)計(jì),首先需利用EDA工具的文本編輯器或圖形編輯器將它用文本方式或圖形方式表達(dá)出來,進(jìn)行排錯(cuò)編譯,變成Verilog、VHDL文件格式,為進(jìn)一步的邏輯綜合作準(zhǔn)備。 常用的源程序輸入方式有三種。 (1) 原理圖輸入方式:利用EDA工具提供的圖形編輯器以原理圖的方式進(jìn)行輸入。原理圖輸入方式比較容易掌握,直觀且方便,所畫的電路原理圖與傳統(tǒng)的器件連接方式完全一樣,很容易被人接受,而

14、且編輯器中有許多現(xiàn)成的單元器件可以利用,自己也可以根據(jù)需要設(shè)計(jì)元件。第18頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五第19頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 (2) 狀態(tài)圖輸入方式:以圖形的方式表示狀態(tài)圖進(jìn)行輸入。當(dāng)填好時(shí)鐘信號(hào)名、狀態(tài)轉(zhuǎn)換條件、狀態(tài)機(jī)類型等要素后,就可以自動(dòng)生成VHDL程序。這種設(shè)計(jì)方式簡化了狀態(tài)機(jī)的設(shè)計(jì),比較流行。 (3) Verilog、VHDL軟件程序的文本方式:最一般化、最具普遍性的輸入方法,任何支持VHDL的EDA工具都支持文本方式的編輯和編譯。第20頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 2 邏輯綜合和優(yōu)化 將

15、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ù),它的功能就是將軟件描述與給定硬件結(jié)構(gòu)用某種網(wǎng)表文件的方式聯(lián)系起來。綜合器是軟件描述與硬件實(shí)現(xiàn)的一座橋梁。綜合過程就是將電路的高級(jí)語言描述轉(zhuǎn)換成低級(jí)的,可與FPGA/CPLD或構(gòu)成ASIC的門陣列基本結(jié)構(gòu)相映射的網(wǎng)表文件。自己閱讀第21頁,共105頁,2022年,5月20日,8點(diǎn)2分,

16、星期五 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)為止。采用該方法設(shè)計(jì)時(shí),高層設(shè)計(jì)進(jìn)行功能和接口描述,說明模塊的功能和接口,模塊功能的更詳細(xì)的描述在下一設(shè)計(jì)層次說明,最底層的設(shè)計(jì)才涉及具體的寄存器和邏輯門電路等實(shí)現(xiàn)方式的描述。第22頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 采用

17、自頂向下的設(shè)計(jì)方法有如下優(yōu)點(diǎn): (1) 自頂向下設(shè)計(jì)方法是一種模塊化設(shè)計(jì)方法。對(duì)設(shè)計(jì)的描述從上到下逐步由粗略到詳細(xì),符合常規(guī)的邏輯思維習(xí)慣。由于高層設(shè)計(jì)同器件無關(guān),設(shè)計(jì)易于在各種集成電路工藝或可編程器件之間移植。 (2) 適合多個(gè)設(shè)計(jì)者同時(shí)進(jìn)行設(shè)計(jì)。隨著技術(shù)的不斷進(jìn)步,許多設(shè)計(jì)由一個(gè)設(shè)計(jì)者已無法完成,必須經(jīng)過多個(gè)設(shè)計(jì)者分工協(xié)作完成一項(xiàng)設(shè)計(jì)的情況越來越多。在這種情況下,應(yīng)用自頂向下的設(shè)計(jì)方法便于由多個(gè)設(shè)計(jì)者同時(shí)進(jìn)行設(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)在

18、各個(gè)設(shè)計(jì)層次上,考慮相應(yīng)的仿真驗(yàn)證問題。自己閱讀第23頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五第2章 Verilog HDL語言 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è)部分。 一、模塊端口的定義模塊端口定義用來聲明電路設(shè)計(jì)模塊 的輸入/輸出端口,端口定義格式如下: module 模塊名 (端口1,端口2,端口3,);在端口定義的括號(hào)中,是設(shè)計(jì)電路模塊與外界聯(lián)系的全部輸入/輸出端口信號(hào)或引腳,是

19、設(shè)計(jì)實(shí)體對(duì)外的一個(gè)通信界面,是外界可以看到的部分(不包含電源和接地端),多個(gè)端口之間用“,”分隔。例如1位全加器adder模塊的端口定義為module adder (sum, cout, ina, inb, cin); 模塊名adder第24頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 二、模塊內(nèi)容 模塊內(nèi)容包括I/O聲明、信號(hào)類型聲明和功能描述。 (1)模塊的I/O聲明 模塊的I/O聲明用來聲明模塊端口定義中各端口數(shù)據(jù)流動(dòng)方向,包括輸入(input)、輸出(output)和雙向(inout)。I/O聲明格式如下: input 端口1,端口2,端口3,; /聲明輸入端口 outpu

20、t 端口1,端口2,端口3,;/聲明輸出端口例如,1位全加器的I/O聲明為 input ina, inb, cin; output sum, cout; 第25頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 (2)信號(hào)類型聲明信號(hào)類型聲明是聲明設(shè)計(jì)電路的功能描述中所用的信號(hào)的數(shù)據(jù)類型和函數(shù)。信號(hào)的數(shù)據(jù)類型主要有連線(wire)、寄存器(reg)、整型(integer)、實(shí)型(real)、和時(shí)間(time)等。 (3)功能描述 功能描述是Verilog HDL程序設(shè)計(jì)中最主要的部分,用來描述設(shè)計(jì)模塊的內(nèi)部結(jié)構(gòu)和模塊端口間的邏輯關(guān)系,在電路上相當(dāng)于器件的內(nèi)部電路結(jié)構(gòu)。功能描述可以用ass

21、ign語句、元件例化(instantiate)方式、always塊語句、initial塊語句等方法來實(shí)現(xiàn),通常將設(shè)計(jì)模塊描述的方法稱為建模。第26頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 用assign語句建模 用assign語句建模的方法很簡單,只需要在“assign”后面再加一個(gè)表達(dá)式。Assign語句一般適合對(duì)組合邏輯進(jìn)行賦值,稱為連續(xù)賦值方式。例1 一位全加器的設(shè)計(jì)1位全加器的邏輯符號(hào):sum是全加器的和輸出端,cout是進(jìn)位輸出端,ina和inb是兩個(gè)加數(shù)輸入端,cin是低位進(jìn)位輸入端。第27頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五全加器的Verilo

22、g 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;”語句實(shí)現(xiàn)1位全加器的進(jìn)位輸出cout與和輸出sum的建模。在語句表達(dá)式中,用拼接運(yùn)算符“”將cout、sum這兩個(gè)1位操作數(shù)拼接為一個(gè)2位操作數(shù)。第28頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 用元件例化(instantiate)方式建模元件例化方

23、式建模是利用Verilog HDL提供的元件庫實(shí)現(xiàn)的。例如,用與門例化元件定義一個(gè)三輸入端與門可以寫為and myand3(y,a,b,c); and是Verilog HDL元件庫中與門元件名,myand3是例化出的三輸入端與門名,y是與門輸出端,a、b、c是輸入端。 用always塊語句建模 always塊語句可以產(chǎn)生各種邏輯,常用于時(shí)序邏輯的功能描述。一個(gè)程序設(shè)計(jì)模塊中,可以包含一個(gè)或多個(gè)always語句。程序運(yùn)行中,在某種條件滿足時(shí),就重復(fù)執(zhí)行一遍always結(jié)構(gòu)中的語句。第29頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 例2 8位二進(jìn)制加法計(jì)數(shù)器的設(shè)計(jì)8位二進(jìn)制加法計(jì)數(shù)器

24、的邏輯符號(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ù)位輸入端,當(dāng)CLK的上升沿到來時(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)被改為大寫,而源程序中的標(biāo)識(shí)符都是小寫。)第30頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 8位二進(jìn)制加法計(jì)數(shù)器的Verilog

25、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 7:0 out; always (posedge clk) begin if (load) out=data; else if(clr) out=b00000000; else out=out+1; end assign cout = &out; endmodule用always塊語句實(shí)現(xiàn)8位二進(jìn)制加法計(jì)數(shù)器的建模。(posedg

26、e clk)是時(shí)間控制敏感函數(shù),表示clk上升沿到來的敏感時(shí)刻。每當(dāng)clk的上升沿到來時(shí),always塊語句中的全部語句就執(zhí)行一遍?!癮ssign cout = &out;”語句產(chǎn)生進(jìn)位輸出cout,在語句中“&out”是與的縮減運(yùn)算式,只有out中數(shù)字全為1時(shí),結(jié)果才為1。第31頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 用initial塊語句建模Initial塊語句與always語句類似,不過在程序中它只執(zhí)行1次就結(jié)束了。Initial塊語句的使用格式 : Initial Begin 語句1; 語句2; : end例3 用Initial過程語句對(duì)測(cè)試變量賦值 initial

27、begin for(addr=0; addr 大于= 大于等于 右移4 結(jié)果A=8b00001101而A4 結(jié)果A=8b00010000。條件操作符 ?: 操作數(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á)式2操作數(shù)c。 并接操作符 , 例如 a,2a,b 等價(jià)于a,a,b,a,b。 將1位全加器的進(jìn)位cout和sum并接,表達(dá)式為將兩個(gè)或兩個(gè)以上用逗號(hào)分隔的表達(dá)式按位連接在一起。還可以用常數(shù)來指定

28、重復(fù)的次數(shù)。cout,sum=ina+inb+cin; 第37頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五同其他高級(jí)語言類似,各類操作符號(hào)之間有優(yōu)先級(jí)之分,如下表:優(yōu)先級(jí)序號(hào)操作符操作符名稱! 、 邏輯非、按位取反*、/、%乘、除、求余+、-加、減左移、右移、 、=小于、小于等于、大于、大于等于=、!=、=、!=等于、不等于、全等、不全等&、& 縮減與、縮減與非 、縮減異或、縮減同或|、 |縮減或、縮減或非&邏輯與|邏輯或?: 條件操作符列表頂部是最高優(yōu)先級(jí),底部是最低優(yōu)先級(jí)。列在同一行中的操作符具有相同的優(yōu)先級(jí)。所有操作符(?:除外)在表達(dá)式中都是從左向右結(jié)合的。圓括號(hào)()用于改

29、變優(yōu)先級(jí)或使得表達(dá)式中運(yùn)算順序更加清晰,提高源文件的可讀性。第38頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 (3)數(shù)值常量 Verilog HDL中的數(shù)值常量有整型和實(shí)型兩大類,分為十進(jìn)制、十六進(jìn)制、八進(jìn)制或二進(jìn)制。若在前面加上一個(gè)正“+”或負(fù)“”號(hào)就表示有符號(hào)數(shù),否則所代表的就是無符號(hào)數(shù)。在數(shù)值常量的任意位置可以隨意插入下劃線“_”以提高可讀性。常量定義格式為:parameter 常量名1=表達(dá)式,常量名2=表達(dá)式,常量名n=表達(dá)式;parameter是常量定義關(guān)鍵字,常量名是用戶定義的標(biāo)識(shí)符,表達(dá)式為常量賦值。例如 parameter Vcc=5, fbus=8b11010

30、001;Verilog HDL中的整型數(shù)值常量就是整數(shù),有兩種書寫格式:一種是無位寬的十進(jìn)制表示法,如-132。第二種是定義位寬和進(jìn)制的表示法,這種表示方法通常是無符號(hào)數(shù)。常數(shù)書寫格式是:sizebase value其中size是位寬,定義了數(shù)值常量的位數(shù)(長度);base 代表這個(gè)數(shù)據(jù)的進(jìn)制,取值范圍和相應(yīng)的進(jìn)制如下表;value是一個(gè)數(shù)值常量的值,書寫格式與進(jìn)制base相對(duì)應(yīng)。例如 4h6a8c,表示一個(gè)4位十六進(jìn)制數(shù)。 2hf5 等于8b11110101; 8b1111xxxx 等價(jià)2hfx; 8b1101zzzz 等價(jià)2hdz。第39頁,共105頁,2022年,5月20日,8點(diǎn)2分,星

31、期五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十六進(jìn)制 Verilog HDL中的實(shí)型數(shù)值常量就是浮點(diǎn)數(shù),可以用十進(jìn)制與科學(xué)計(jì)數(shù)法兩種形式書寫。如果采用十進(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)。第40頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五(4)

32、字符串字符串是雙引號(hào)“”括起來的字符序列,必須包含在同 一行中,不能多行書寫。在表達(dá)式或賦值語句中作為操作數(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ù)字,必須以字母或下劃線“_”開頭。字符數(shù)不能多于1024。標(biāo)識(shí)符區(qū)分大小寫。不要與關(guān)鍵字同名。例如 ina、inb、adder、adder8、name_adder是正確的,而1a ?b是錯(cuò)誤的。(6)關(guān)鍵字

33、關(guān)鍵字是Verilog HDL預(yù)先定義的專用詞。在IEEE標(biāo)準(zhǔn)Verilog HDL 1364-1995中規(guī)定了102個(gè)關(guān)鍵詞,都采用小寫形式。關(guān)鍵詞有其特定和專有的語法作用,用戶不能再對(duì)它們做新的定義。第41頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五關(guān)鍵字AlwaysandAssignattributeBeginBufBufif0Bufif1CaseCasexCasezCmosDeassignDefaultdefparamDisableedgeelseendendattributeendcaseendfunctionendmoduleendprimitiveendspecify

34、endtableendtaskeventforforceforeverforkfunctionhighz0 highzlifinitialinoutinputintegerjoinlargemacromodulemediummodulenandnegedgenmosnornotnotif0 notifloroutputparameterpmosposedgeprimitivepull0pull1pulldownpulluprcmosrealrealtimeregreleaserepeat rtraniflscalaredsignedsmallspecifyspecpramstrengthstr

35、ong0strong1supply0supply1tabletasktimetrantranif0tranif1 tritri0tri1triandtriortritegunsignedvectoredwaitwandweak0weak1whilewireworxnorxor 第42頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 (7)變量變量是在程序運(yùn)行時(shí)其值可以改變的量。在Verilog HDL中,變量分為網(wǎng)絡(luò)型(nets type)和寄存器型(register type)兩種。 網(wǎng)絡(luò)型變量nets型變量是輸出值始終根據(jù)輸入變化而更新的變量,一般用來定義硬件電路中的各種物理連線。

36、Verilog HDL提供了多種nets型變量。常見的nets型變量及說明類型功能說明wire、 tri連線類型(兩者功能完全相同)wor、 trior具有線或特性的連線(兩者功能一致)wand、 triand具有線與特性的連線(兩者功能一致)tri1、 tri0分別為上拉電阻和下拉電阻supply1、 supply0分別為電源(邏輯1)和地(邏輯0)s1s2s3第43頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 寄存器型變量register型變量是用來描述硬件系統(tǒng)的基本數(shù)據(jù)對(duì)象。作為一種數(shù)值容器,可以容納當(dāng)前值,也可以保持歷史值。與寄存器的記憶功能相對(duì)應(yīng),可以作為模塊各器件間的信

37、息傳遞通道。register型變量與wire型變量的區(qū)別在于register型變量需要被明確的賦值, 并且在重新賦值前一直保持原值。register型變量是在always、initial等過程語句種定義,并通過過程語句賦值。常見的register型變量及說明類型功能說明reg常用的寄存器型變量integer32位帶符號(hào)整數(shù)型變量real64位帶符號(hào)實(shí)數(shù)型變量time無符號(hào)時(shí)間型變量第44頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五2.3 Verilog HDL的語句Verilog HDL的語句包括賦值語句、條件語句、循環(huán)語句、結(jié)構(gòu)聲明語句和編譯預(yù)處理語句等類型,每一類語句又包括幾種

38、不同的語句。在這些語句中,有些語句屬于順序執(zhí)行語句,有些語句屬于并行執(zhí)行語句。(1)賦值語句在Verilog HDL中,賦值語句常用于描述硬件設(shè)計(jì)電路輸出與輸入之間的信息傳送,改變輸出結(jié)果。Verilog HDL有4種賦值方法:門基元、連續(xù)賦值、過程賦值和非阻塞賦值。門基元賦值語句門基元賦值語句的格式為:基本邏輯門關(guān)鍵字 (門輸出,門輸入1,門輸入2,門輸入n);例如 4輸入與非門的門基元賦值語句為 nand (y,a,b,c,d); /與語句assign y=(a&b&c&d)等效第45頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 連續(xù)賦值語句連續(xù)賦值語句的關(guān)鍵字assign,賦

39、值符號(hào)是“=”,賦值語句的格式為 assign 賦值變量=表達(dá)式;例如 assign y=(a&b&c&d);連續(xù)賦值語句的“=”兩邊的變量都應(yīng)該是wire型變量。在執(zhí)行中,輸出y的變化跟隨輸入a、b、c、d的變化而變化,反映了信息傳送的連續(xù)性。連續(xù)賦值語句用于邏輯門和組合邏輯電路的描述。例1 四輸入端與非門的Verilog HDL源程序 module example1(y,a,b,c,d); output y; input a,b,c,d; assign #1 y=(a&b&c&d); /#1表示輸出與輸入信號(hào)之間具有1個(gè)單位的時(shí)間延遲 endmodule第46頁,共105頁,2022年,5

40、月20日,8點(diǎn)2分,星期五 過程賦值語句過程賦值語句出現(xiàn)在initial和always塊語句中,賦值符號(hào)是“=”,語句格式為: 賦值變量=表達(dá)式;過程賦值語句“=”左邊的賦值變量必須是(寄存器)reg型變量,其值在該語句結(jié)束時(shí)即可得到。如果一個(gè)塊語句中包含若干條過程賦值語句,按順序一條一條執(zhí)行,前面的語句沒完成,后面的語句就不能執(zhí)行。因此,過程賦值語句也稱為阻塞賦值語句。第47頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 非阻塞賦值語句非阻塞賦值語句也是出現(xiàn)在initial和always塊語句中,賦值符號(hào)是“=”,語句格式為: 賦值變量=表達(dá)式;非阻塞賦值語句“=”左邊的賦值變量必

41、須是(寄存器)reg型變量,其值在塊語句結(jié)束時(shí)才可得到,與過程賦值語句不同。例如 下面的塊語句包含4條賦值語句 always (posedge clock) m=3; n=75; n=m; r=n;語句執(zhí)行結(jié)束后,r的值是75,而不是3,因?yàn)榈?行是非阻塞賦值語句“n=m”,該語句要等到本塊語句結(jié)束時(shí),n的值才能改變。塊語句的“(posedge clock)”是定時(shí)控制敏感函數(shù),表示時(shí)鐘信號(hào)clock的上升沿到來的敏感時(shí)刻。例2 上升沿觸發(fā)的D觸發(fā)器的Verilog HDL源程序 module D_FF(q,d,clock); input d,clock; /屬于wire型變量,由隱含規(guī)則定義

42、。 output q; /屬于reg型變量 reg q; always (posedge clock) q=d; endmodule第48頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 (2)條件語句條件語句包含if語句和case語句,它們都是順序語句,應(yīng)放在always塊中。 if語句完整的Verilog HDL的if語句結(jié)構(gòu)如下: if(表達(dá)式) begin 語句; end else if(表達(dá)式) begin 語句; end else begin 語句; end在if語句中,“表達(dá)式”是邏輯表達(dá)式或關(guān)系表達(dá)式,也可以是位寬為1位的變量。系統(tǒng)對(duì)表達(dá)式的值進(jìn)行判斷, 若為0,x,z

43、按“假”處理;若為1,按“真”處理,執(zhí)行指定的語句。第49頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 例3 8線-3線優(yōu)先編碼器的設(shè)計(jì)8線-3線優(yōu)先編碼器的功能表 module code(y,a); input7:0 a; output2:0 y; reg2:0 y; always (a) begin if(a7) y=3b111; else if(a6) y=3b110; else if(a5) y=3b101; else if(a4) y=3b100; else if(a3) y=3b011; else if(a2) y=3b010; else if(a1) y=3b001;

44、 else y=3b000; end endmodule輸入輸出in0 in1 in2 in3 in4 in5 in6 in7out2 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 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第50頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 case語句case語句是一種

45、多分支的條件語句,case語句的格式為: case(表達(dá)式) 選擇值1: 語句1; 選擇值2: 語句2; 選擇值n: 語句n; default: n+1 endcase執(zhí)行case語句時(shí),首先計(jì)算表達(dá)式的值,然后執(zhí)行條件句中相應(yīng)的“選擇值”的語句。當(dāng)所有的條件句的“選擇值”與表達(dá)式的值不同時(shí),則執(zhí)行“default”后的語句。default可以省略。 case語句多用于數(shù)字系統(tǒng)中的譯碼器、數(shù)據(jù)選擇器、狀態(tài)機(jī)及微處理器的指令譯碼器等電路的描述。第51頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 例4:用case語句描述4選1數(shù)據(jù)選擇器控制信號(hào)s1,s2有4種組合,控制a,b,c,d中

46、的一個(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) 2b00: z=a; 2b01: z=b; 2b10: z=c; 2b11: z=d; endcase end endmodulecase語句還有兩種變體形式,casez和casex語句。與case語句的區(qū)別是不考慮語句中的高阻z和未知x的那些位,只關(guān)注其他位的比較結(jié)果。s1 s2z0 00 11 0

47、1 1abcd4選1數(shù)據(jù)選擇器功能表第52頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 (3)循環(huán)語句循環(huán)語句包含for語句、repeat語句、while語句和forever語句4種。 for語句for語句的格式為: for(循環(huán)指針=初值;循環(huán)指針 終值;循環(huán)指針=循環(huán)指針+步長值) begin 語句; endfor語句可以是一組語句重復(fù)執(zhí)行,語句中的參數(shù)一般屬于整型變量或常量。語句重復(fù)執(zhí)行的次數(shù)由語句中的參數(shù)確定。即 循環(huán)重復(fù)次數(shù)=(終值-初值)/步長值第53頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 例5:8位奇偶校驗(yàn)器的描述用a表示輸入信號(hào),長度為8位的向量。

48、在程序中,用for語句對(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); input7:0 a; output out; reg out; integer n; always (a) begin out=0; for(n=0;n=b) max=a; else max=b; end endfunction函數(shù)調(diào)用的格式如下 函數(shù)名 (關(guān)聯(lián)參數(shù)表);函數(shù)調(diào)用一般是出現(xiàn)在模塊、任務(wù)或函數(shù)

49、語句中。通過函數(shù)的調(diào)用來完成摹寫數(shù)據(jù)的運(yùn)算或轉(zhuǎn)換。例如,調(diào)用上例中求最大值函數(shù)的語句為 peak=max(data, peak);其中,data和peak是與函數(shù)定義的兩個(gè)參數(shù)a、b相關(guān)聯(lián)的關(guān)聯(lián)參數(shù)。通過函數(shù)的調(diào)用,求出data和peak中的最大值,并用函數(shù)名max返回。第62頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 函數(shù)和任務(wù)存在以下幾處區(qū)別:(1)任務(wù)可以有任意不同類型輸入/輸出參數(shù),函數(shù)不能將inout類型作為輸出。(2)任務(wù)只可以在過程語句中調(diào)用,不能在連續(xù)賦值語句assign中調(diào)用;函數(shù)可以作為表達(dá)式中的一個(gè)操作數(shù),在過程賦值語句和連續(xù)賦值語句中調(diào)用。(3)任務(wù)可以調(diào)

50、用其他任務(wù)或函數(shù);函數(shù)可以調(diào)用其他函數(shù),但不能調(diào)用任務(wù)。(4)任務(wù)不向表達(dá)式返回值,函數(shù)向調(diào)用它的表達(dá)式返回一個(gè)值。第63頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五(5)語句的順序執(zhí)行與并行執(zhí)行Verilog HDL中有順序執(zhí)行語句和并行執(zhí)行語句之分。always塊語句中的語句順序語句,按照程序書寫的順序執(zhí)行。always塊本身確是并行語句,它與其他always語句及assign語句、例化元件語句都是同時(shí)(即并行)的。例9 同步清除十進(jìn)制加法計(jì)數(shù)器的描述同步清0是在時(shí)鐘信號(hào)作用下,計(jì)數(shù)器的狀態(tài)被clr清0,清0信號(hào)clr高電平有效;時(shí)鐘信號(hào)clk上升沿觸發(fā)。計(jì)數(shù)器計(jì)數(shù)狀態(tài)從4b0

51、000到4b1001循環(huán)。module cnt10(clr,clk,cnt,out); input clr,clk; output3:0 out; output cnt; reg cnt; reg3:0 out; always (posedge clk) begin if(clr) begin cnt=0;out=4b0000;end else if (out=4b1001) begin out=4b0000;cnt=1;end else begin cnt=0;out=out+1;end end endmodule 第64頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 2.4.不同

52、抽象級(jí)別的Verilog HDL模型Verilog HDL具有行為描述和結(jié)構(gòu)描述功能。行為描述是對(duì)設(shè)計(jì)電路的邏輯動(dòng)能的描述,并不關(guān)心設(shè)計(jì)電路使用哪些元件及這些元件之間的連接關(guān)系。行為描述屬于高層次的描述方法,在Verilog HDL中,行為描述包括系統(tǒng)級(jí)(System Level)、算法級(jí)(Algorithm Level)和寄存器傳輸級(jí)(RTL:Register Thansfer Level)等3種抽象級(jí)別。結(jié)構(gòu)描述是對(duì)設(shè)計(jì)電路的結(jié)構(gòu)進(jìn)行描述,既描述設(shè)計(jì)電路使用的元件及這些元件之間的連接關(guān)系。結(jié)構(gòu)描述屬于低層次的描述方法,在Verilog HDL,結(jié)構(gòu)描述包括門級(jí)(Gate Level)和開關(guān)

53、級(jí)(Switch Level)兩種抽象級(jí)別。應(yīng)重點(diǎn)掌握高層次描述方法,結(jié)構(gòu)描述也可以用來實(shí)現(xiàn)電路的系統(tǒng)設(shè)計(jì)。第65頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 (1)Verilog HDL門級(jí)描述方式Verilog HDL提供了豐富的門類型關(guān)鍵字,用于門級(jí)的描述。常用的: not非門、and與門、nand與非門、or或門、nor或非門、xor異或門、xnor同或門、buf緩沖器、及bufif1、bufif0、 notif1、notif0各種三態(tài)門。門級(jí)描述語句格式為 門類型關(guān)鍵字 (端口列表);其中,“例化門的名稱”是用戶定義的標(biāo)識(shí)符,屬可選項(xiàng);端口列表按:(輸出、輸入,使能控制端

54、)的順序列出。例如: nand nand2 (y,a,b); /二輸入端與非門 xor myxor(y,a,b) /異或門 bufif0 mybuf (y,a,en); /低電平使能的三態(tài)緩沖器第66頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五例10 采用結(jié)構(gòu)描述方式描述硬件電路module example_4_11(y,a,b,c); input a,b,c; output y; wire s1,s2,s3; not (s1,a); nand (s2,c,s1); nand (s3,a,b); nand (y,s2,s3);endmodule 第67頁,共105頁,2022年,5

55、月20日,8點(diǎn)2分,星期五 (2)Verilog HDL行為級(jí)描述Verilog HDL行為描述方式是通過行為語句來描述電路要實(shí)現(xiàn)的功能,表示輸入輸出間轉(zhuǎn)換的行為,不涉及具體結(jié)構(gòu)。行為建模是一種“高級(jí)”的描述方式。行為描述既可以描述簡單的邏輯門,又可以描述復(fù)雜的數(shù)字系統(tǒng),乃至微處理器。既可以描述組合邏輯電路,又可以描述時(shí)序邏輯電路。例11 2選1數(shù)據(jù)選擇器,用Verilog HDL對(duì)它做行為描述。 module mux_2_to_1 (a, b, out,outbar,sel); /這是一個(gè)2選1數(shù)據(jù)選擇器,名為mux_2_to_1 input a, b, sel; /定義模塊的輸入端口為a,

56、 b和sel output out, outbar; /定義模塊的輸出端口為out和outbar assign out=sel? a:b; /如果sel=1,將a賦值給out /如果sel=0,將b賦值給out assign outbar =out; /將out取反后賦值給outbar endmodule /模塊描述結(jié)束第68頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五作 業(yè)24小時(shí)計(jì)時(shí)表和計(jì)數(shù)譯碼顯示電路的編程,顯示秒、分、小時(shí), MAX+plus II 仿真。第69頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五 例12 3線-8線譯碼器的Verilog HDL設(shè)計(jì)mo

57、dule decode3_8 (a, b, c, y, en); /這是一個(gè)3線-8線譯碼器,名為decode3_8input a, b, c, en; /定義模塊的輸入端口output 7:0 y; /定義模塊的輸出端口為outreg7:0 y; always (en or a or b or c) begin if(en) y=8b11111111; else begin case(c, b, a) 3b000: y=8b11111110; 3b001: y=8b11111101; 3b010: y=8b11111011; 3b011: y=8b11110111; 3b100: y=8b1

58、1101111; 3b101: y=8b11011111; 3b110: y=8b10111111; 3b111: y=8b01111111; endcase end endendmodule /模塊描述結(jié)束第70頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五例13 8D鎖存器的設(shè)計(jì)module D_8 (d,q,en); output7:0 q; input en; input7:0 d; reg7:0 q; always (en or d) begin if(en) q=q; else q=d; endendmodule第71頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期

59、五 例14 異步清除十進(jìn)制加法計(jì)數(shù)器的描述異步清除是指復(fù)位信號(hào)有效時(shí),計(jì)數(shù)器立即被清零,不考慮時(shí)鐘。復(fù)位信號(hào)clr,高電平有效;時(shí)鐘信號(hào)clk,上升沿觸發(fā);當(dāng)clr=1,計(jì)數(shù)器清0。clr=0時(shí),計(jì)數(shù)器正常計(jì)數(shù)。module cnt10a (clr, clk, cnt, out); /模塊名稱和端口名 input clr, clk; output3:0 out; output cnt; reg3:0 out; reg cnt; always (posedge clk or posedge clr) begin if (clr) begin out=4b0000; cnt=0; end else

60、 if (out=4b1001) begin out=4b0000; cnt=1; end else begin cnt=0; out=out+1; end end endmodule 第72頁,共105頁,2022年,5月20日,8點(diǎn)2分,星期五(3)用結(jié)構(gòu)描述實(shí)現(xiàn)電路系統(tǒng)設(shè)計(jì)任何用Verilog HDL描述的電路設(shè)計(jì)模塊(module),均可用模塊例化語句,例化一個(gè)元件,來實(shí)現(xiàn)電路系統(tǒng)的設(shè)計(jì)。模塊例化語句格式與邏輯門例化語句格式相同,具體格式: 設(shè)計(jì)模塊名 (端口列表); 其中,“例化電路名”是用戶為系統(tǒng)設(shè)計(jì)定義的標(biāo)識(shí)符,相當(dāng)于系統(tǒng)電路板上為插入設(shè)計(jì)模塊元件的插座,而端口列表相當(dāng)于插座上引

溫馨提示

  • 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)論