版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 電路計算機輔助設(shè)計電路計算機輔助設(shè)計 吉林大學(xué)通信工程學(xué)院吉林大學(xué)通信工程學(xué)院 高燕梅高燕梅教學(xué)內(nèi)容與要求教學(xué)內(nèi)容與要求第第1 1章章 edaeda技術(shù)簡介技術(shù)簡介第第2 2章章 verilog hdlverilog hdl語言編程語言編程 (10學(xué)時)第第3 3章章 vhdlvhdl語言編程語言編程(4學(xué)時) 第第4 4章章 matlabmatlab程序入門程序入門 (12學(xué)時)第第5 5章章 matlabmatlab在電路中的應(yīng)用在電路中的應(yīng)用(4學(xué)時) 每章有實驗室上機實驗每章有實驗室上機實驗 實驗教學(xué) 成績評定標(biāo)準(zhǔn)成績評定標(biāo)準(zhǔn)五級分制五級分制作業(yè)加上機考核:作業(yè)加上機考核:1、作業(yè)必
2、做,上機交作業(yè)時隨機考兩個問題。、作業(yè)必做,上機交作業(yè)時隨機考兩個問題。2、點名沒有缺勤,加分。、點名沒有缺勤,加分。第第1章章 eda技術(shù)簡介技術(shù)簡介1.1 eda技術(shù)的主要內(nèi)容技術(shù)的主要內(nèi)容1.2 eda軟件系統(tǒng)的構(gòu)成軟件系統(tǒng)的構(gòu)成1.3 eda的工程設(shè)計流程的工程設(shè)計流程1.4 數(shù)字系統(tǒng)的設(shè)計方法數(shù)字系統(tǒng)的設(shè)計方法第第2 2章章 verilog hdlverilog hdl語言編程語言編程2.1 verilog hdl2.1 verilog hdl設(shè)計模塊的基本結(jié)構(gòu)設(shè)計模塊的基本結(jié)構(gòu)2.2 verilog hdl2.2 verilog hdl詞法構(gòu)成詞法構(gòu)成2.3 verilog hdl
3、2.3 verilog hdl的語句的語句2.4 verilog hdl2.4 verilog hdl模型模型2.5 verilog hdl2.5 verilog hdl設(shè)計電路流程設(shè)計電路流程2.6 2.6 用用verilog hdlverilog hdl描述邏輯電路的實例描述邏輯電路的實例第第3章章 vhdl 語言編程基礎(chǔ)語言編程基礎(chǔ)3.1 概述概述 3.2 vhdl程序基本結(jié)構(gòu)程序基本結(jié)構(gòu) 3.3 vhdl語言要素語言要素 3.4 vhdl順序語句順序語句 3.5 vhdl并行語句并行語句 3.6 子程序子程序(subprogram) 3.7 庫、程序包及其他庫、程序包及其他 3.8 v
4、hdl描述風(fēng)格描述風(fēng)格 3.9 基本邏輯電路設(shè)計基本邏輯電路設(shè)計 3.10 狀態(tài)機的狀態(tài)機的vhdl設(shè)計設(shè)計 第第4章章 matlab程序入門程序入門4.1基本語法基本語法4.1.1 變量及其賦值變量及其賦值4.4.2 矩陣的初等運算矩陣的初等運算4.1.3 元素群運算元素群運算4.1.4 邏輯判斷及流程控制邏輯判斷及流程控制4.2 基本繪圖方法基本繪圖方法4.2.1 m文件及程序調(diào)試文件及程序調(diào)試4.2.2 matlab的開發(fā)環(huán)境和工具的開發(fā)環(huán)境和工具第第5章章 matlab在電路中的應(yīng)用在電路中的應(yīng)用5.1 電阻電路和動態(tài)電路電阻電路和動態(tài)電路5.2 正弦穩(wěn)態(tài)電路和頻率響應(yīng)正弦穩(wěn)態(tài)電路和頻
5、率響應(yīng)5.3 二端口電路二端口電路5.4 濾波器濾波器第第1章章 eda技術(shù)簡介技術(shù)簡介 1.1 eda技術(shù)的主要內(nèi)容技術(shù)的主要內(nèi)容eda是電子設(shè)計自動化(是電子設(shè)計自動化(electronic design automation)的)的縮寫??s寫。 eda技術(shù)就是以計算機為工具,設(shè)計者在技術(shù)就是以計算機為工具,設(shè)計者在eda軟件平臺上,用軟件平臺上,用硬件描述語言硬件描述語言hdl完成設(shè)計完成設(shè)計文件,然后由計算機自動地完成邏文件,然后由計算機自動地完成邏輯輯編譯編譯、化簡、分割、綜合、優(yōu)化、布局、布線和、化簡、分割、綜合、優(yōu)化、布局、布線和仿真仿真,直至,直至對于特定目標(biāo)芯片的對于特定目標(biāo)
6、芯片的適配編譯適配編譯、邏輯映射和、邏輯映射和編程下載編程下載等工作。等工作。eda技術(shù)的出現(xiàn),極大地提高了電路設(shè)計的效率和可靠性,減技術(shù)的出現(xiàn),極大地提高了電路設(shè)計的效率和可靠性,減輕了設(shè)計者的勞動強度。輕了設(shè)計者的勞動強度。在電子技術(shù)設(shè)計領(lǐng)域,在電子技術(shù)設(shè)計領(lǐng)域,可編程邏輯器件可編程邏輯器件(如(如cpld、fpga)的)的應(yīng)用,已得到廣泛的普及,這些器件為數(shù)字系統(tǒng)的設(shè)計帶來了應(yīng)用,已得到廣泛的普及,這些器件為數(shù)字系統(tǒng)的設(shè)計帶來了極大的靈活性。極大的靈活性。cpld、fpga器件可以通過器件可以通過軟件編程軟件編程而對硬件結(jié)構(gòu)和工作方式而對硬件結(jié)構(gòu)和工作方式進行進行重構(gòu)重構(gòu),從而使得硬件的
7、設(shè)計可以如同軟件設(shè)計那樣方便快,從而使得硬件的設(shè)計可以如同軟件設(shè)計那樣方便快捷。促進了捷。促進了eda技術(shù)的迅速發(fā)展。技術(shù)的迅速發(fā)展。eda技術(shù)涉及面廣,內(nèi)容豐富,主要應(yīng)掌握如下四個方面的技術(shù)涉及面廣,內(nèi)容豐富,主要應(yīng)掌握如下四個方面的內(nèi)容:內(nèi)容: 大規(guī)??删幊踢壿嬈骷笠?guī)??删幊踢壿嬈骷抢么笠?guī)模可編程邏輯器件,大規(guī)??删幊踢壿嬈骷抢胑da技術(shù)進行電子系統(tǒng)設(shè)計的載體。技術(shù)進行電子系統(tǒng)設(shè)計的載體。 fpga和和cpld 硬件描述語言,硬件描述語言是利用硬件描述語言,硬件描述語言是利用eda技術(shù)進行電子系技術(shù)進行電子系統(tǒng)設(shè)計的主要表達手段。統(tǒng)設(shè)計的主要表達手段。vhdl、verilog、
8、abel 軟件開發(fā)工具,軟件開發(fā)工具是利用軟件開發(fā)工具,軟件開發(fā)工具是利用eda技術(shù)進行電子系技術(shù)進行電子系統(tǒng)設(shè)計的智能化的自動化設(shè)計工具。統(tǒng)設(shè)計的智能化的自動化設(shè)計工具。altera的的max+plus ii、lattice的的ispexpert、xilinx的的foundation series。 實驗開發(fā)系統(tǒng),實驗開發(fā)系統(tǒng)則是利用實驗開發(fā)系統(tǒng),實驗開發(fā)系統(tǒng)則是利用eda技術(shù)進行電子技術(shù)進行電子系統(tǒng)設(shè)計的下載工具及硬件驗證工具。系統(tǒng)設(shè)計的下載工具及硬件驗證工具。 1 大規(guī)模可編程邏輯器件大規(guī)模可編程邏輯器件 可編程邏輯器件可編程邏輯器件(簡稱簡稱pld)是一種由用戶編程以實現(xiàn)是一種由用戶編
9、程以實現(xiàn)某種邏輯功能的新型邏輯器件。某種邏輯功能的新型邏輯器件。fpga是現(xiàn)場可編程門陣列的簡稱,是現(xiàn)場可編程門陣列的簡稱,cpld是復(fù)雜可編程邏輯器件的簡稱。是復(fù)雜可編程邏輯器件的簡稱。高集成度、高速度和高可靠性是高集成度、高速度和高可靠性是fpga/cpld最明顯最明顯的特點,其時鐘延時可小至的特點,其時鐘延時可小至ns級,結(jié)合其并行工作方級,結(jié)合其并行工作方式,在超高速應(yīng)用領(lǐng)域和實時測控方面有著非常廣闊式,在超高速應(yīng)用領(lǐng)域和實時測控方面有著非常廣闊的應(yīng)用前景。的應(yīng)用前景。fpga/cpld的高可靠性還表現(xiàn)在幾乎可將整個系統(tǒng)的高可靠性還表現(xiàn)在幾乎可將整個系統(tǒng)下載于同一芯片中,實現(xiàn)所謂片上系
10、統(tǒng),從而大大縮下載于同一芯片中,實現(xiàn)所謂片上系統(tǒng),從而大大縮小了體積,易于管理和屏蔽。小了體積,易于管理和屏蔽。 2 硬件描述語言硬件描述語言(hdl) 常用的硬件描述語言有常用的硬件描述語言有vhdl、verilog、abel。 vhdl:作為:作為ieee的工業(yè)標(biāo)準(zhǔn)硬件描述語言,在的工業(yè)標(biāo)準(zhǔn)硬件描述語言,在電子工程領(lǐng)域,已成為事實上的通用硬件描述語言。電子工程領(lǐng)域,已成為事實上的通用硬件描述語言。 verilog:支持的:支持的eda工具較多,適用于工具較多,適用于rtl級級(寄存器轉(zhuǎn)換級)和門電路級的描述,其綜合過程(寄存器轉(zhuǎn)換級)和門電路級的描述,其綜合過程較較vhdl稍簡單,但其在高
11、級描述方面不如稍簡單,但其在高級描述方面不如vhdl。有專家認為,在新世紀(jì)中,有專家認為,在新世紀(jì)中,vhdl與與verilog語言將語言將承擔(dān)幾乎全部的數(shù)字系統(tǒng)設(shè)計任務(wù)。承擔(dān)幾乎全部的數(shù)字系統(tǒng)設(shè)計任務(wù)。 3 軟件開發(fā)工具軟件開發(fā)工具 目前比較流行的、主流廠家的目前比較流行的、主流廠家的eda的軟件工具有:的軟件工具有:altera的的max+plus ii、升級版、升級版quartus ii;lattice的的ispexpert;xilinx的的foundation series。 max+plus ii是是altera公司開發(fā)的公司開發(fā)的eda工具軟件。工具軟件。altera公司是世界上最
12、大的可編程邏輯器件供應(yīng)商之一。公司是世界上最大的可編程邏輯器件供應(yīng)商之一。max+plus ii軟件是一個集成化的可編程邏輯器件開發(fā)軟件是一個集成化的可編程邏輯器件開發(fā)環(huán)境,設(shè)計者能在這個環(huán)境下進行邏輯設(shè)計,完成設(shè)計環(huán)境,設(shè)計者能在這個環(huán)境下進行邏輯設(shè)計,完成設(shè)計文件的輸入編輯、編譯、仿真、綜合、布局布線和編程文件的輸入編輯、編譯、仿真、綜合、布局布線和編程下載等設(shè)計工作。軟件界面友好、方便易學(xué)、功能全面,下載等設(shè)計工作。軟件界面友好、方便易學(xué)、功能全面,是非常流行的大眾化是非常流行的大眾化eda平臺。平臺。max+plus ii:支持原理圖、:支持原理圖、vhdl和和verilog語語言文本
13、文件,以及以波形與言文本文件,以及以波形與edif等格式的文件作等格式的文件作為設(shè)計輸入,并支持這些文件的任意混合設(shè)計。為設(shè)計輸入,并支持這些文件的任意混合設(shè)計。它具有門級仿真器,可以進行功能仿真和時序仿它具有門級仿真器,可以進行功能仿真和時序仿真,能夠產(chǎn)生精確的仿真結(jié)果。真,能夠產(chǎn)生精確的仿真結(jié)果。在適配之后,在適配之后,max+plus ii生成供時序仿真用的生成供時序仿真用的edif、vhdl和和verilog這三種不同格式的網(wǎng)表文這三種不同格式的網(wǎng)表文件。件。它界面友好,使用便捷,被譽為業(yè)界最易學(xué)易用它界面友好,使用便捷,被譽為業(yè)界最易學(xué)易用的的eda的軟件的軟件 ,并支持主流的第三方
14、,并支持主流的第三方eda工具,工具,支持所有支持所有altera公司的公司的fpga/cpld大規(guī)模邏輯器大規(guī)模邏輯器件。件。 4 實驗開發(fā)系統(tǒng)實驗開發(fā)系統(tǒng) 提供芯片下載電路及eda實驗/開發(fā)的外圍資源(類似于用于單片機開發(fā)的仿真器),供硬件驗證用。一般包括: 實驗或開發(fā)所需的各類基本信號發(fā)生模塊,包括時鐘、脈沖、高低電平等; fpga/cpld輸出信息顯示模塊,包括數(shù)碼顯示、發(fā)光管顯示、聲響指示等; 監(jiān)控程序模塊,提供“電路重構(gòu)軟配置”; 目標(biāo)芯片適配座以及上面的fpga/cpld目標(biāo)芯片和編程下載電路。自己閱讀 1.2 eda軟件系統(tǒng)的構(gòu)成軟件系統(tǒng)的構(gòu)成eda技術(shù)研究的對象是電子設(shè)計的全
15、過程,有系統(tǒng)級、技術(shù)研究的對象是電子設(shè)計的全過程,有系統(tǒng)級、電路級和物理級電路級和物理級3個層次的設(shè)計。個層次的設(shè)計。涉及的電子系統(tǒng)從低頻、高頻到微波,從線性到非線性,涉及的電子系統(tǒng)從低頻、高頻到微波,從線性到非線性,從模擬到數(shù)字,從通用集成電路到專用集成電路構(gòu)造的從模擬到數(shù)字,從通用集成電路到專用集成電路構(gòu)造的電子系統(tǒng),因此電子系統(tǒng),因此eda技術(shù)研究的范疇相當(dāng)廣泛。技術(shù)研究的范疇相當(dāng)廣泛。eda軟件系統(tǒng)應(yīng)當(dāng)包含以下子模塊:軟件系統(tǒng)應(yīng)當(dāng)包含以下子模塊:設(shè)計輸入子模塊、設(shè)計輸入子模塊、設(shè)計數(shù)據(jù)庫子模塊、設(shè)計數(shù)據(jù)庫子模塊、分析驗證子模塊、分析驗證子模塊、綜合仿真子模塊、綜合仿真子模塊、布局布線子
16、模塊等。布局布線子模塊等。自己閱讀 (1) 設(shè)計輸入子模塊;用戶編輯輸入模塊的設(shè)計描設(shè)計輸入子模塊;用戶編輯輸入模塊的設(shè)計描述,并進行語義正確性、語法規(guī)則的檢查,檢查通述,并進行語義正確性、語法規(guī)則的檢查,檢查通過后,將用戶的設(shè)計描述數(shù)據(jù)轉(zhuǎn)換為過后,將用戶的設(shè)計描述數(shù)據(jù)轉(zhuǎn)換為eda軟件系統(tǒng)軟件系統(tǒng)的內(nèi)部數(shù)據(jù)格式,存入設(shè)計數(shù)據(jù)庫被其他子模塊調(diào)的內(nèi)部數(shù)據(jù)格式,存入設(shè)計數(shù)據(jù)庫被其他子模塊調(diào)用。用。設(shè)計輸入子模塊不僅能接受圖形描述輸入、硬件描設(shè)計輸入子模塊不僅能接受圖形描述輸入、硬件描述語言述語言(hdl)描述輸入,還能接受圖文混合描述輸描述輸入,還能接受圖文混合描述輸入。入。該子模塊一般包含針對不同
17、描述方式的編輯器,如該子模塊一般包含針對不同描述方式的編輯器,如圖形編輯器、文本編輯器等,同時包含對應(yīng)的分析圖形編輯器、文本編輯器等,同時包含對應(yīng)的分析器。器。自己閱讀 (2)設(shè)計數(shù)據(jù)庫子模塊:該模塊存放系統(tǒng)提供的庫單設(shè)計數(shù)據(jù)庫子模塊:該模塊存放系統(tǒng)提供的庫單元以及用戶的設(shè)計描述和中間設(shè)計結(jié)果。元以及用戶的設(shè)計描述和中間設(shè)計結(jié)果。 (3) 分析驗證子模塊:該模塊包括各個層次的模擬驗分析驗證子模塊:該模塊包括各個層次的模擬驗證、設(shè)計規(guī)則的檢查、故障診斷等。證、設(shè)計規(guī)則的檢查、故障診斷等。 (4) 綜合仿真子模塊:該模塊包括各個層次的綜合工綜合仿真子模塊:該模塊包括各個層次的綜合工具,理想的情況是
18、:從高層次到低層次的綜合仿真具,理想的情況是:從高層次到低層次的綜合仿真全部由全部由eda工具自動實現(xiàn)。工具自動實現(xiàn)。 (5) 布局布線子模塊:該模塊實現(xiàn)由邏輯設(shè)計到物理布局布線子模塊:該模塊實現(xiàn)由邏輯設(shè)計到物理實現(xiàn)的映射,因此與物理實現(xiàn)的方式密切相關(guān)。例實現(xiàn)的映射,因此與物理實現(xiàn)的方式密切相關(guān)。例如,最終的物理實現(xiàn)可以是門陣列、可編程邏輯器如,最終的物理實現(xiàn)可以是門陣列、可編程邏輯器件等,由于對應(yīng)的器件不同,因此各自的布局布線件等,由于對應(yīng)的器件不同,因此各自的布局布線工具會有很大的差異。工具會有很大的差異。 自己閱讀1.3 eda的工程設(shè)計流程的工程設(shè)計流程1 源程序的編輯和編譯源程序的編
19、輯和編譯 利用利用eda技術(shù)進行一項工程設(shè)計,首先需利用技術(shù)進行一項工程設(shè)計,首先需利用eda工工具的文本編輯器或圖形編輯器將它用文本方式或圖形方式具的文本編輯器或圖形編輯器將它用文本方式或圖形方式表達出來,進行排錯編譯,變成表達出來,進行排錯編譯,變成verilog、vhdl文件格式,文件格式,為進一步的邏輯綜合作準(zhǔn)備。為進一步的邏輯綜合作準(zhǔn)備。 常用的源程序輸入方式有三種。常用的源程序輸入方式有三種。 (1) 原理圖輸入方式:利用原理圖輸入方式:利用eda工具提供的圖形編輯器以工具提供的圖形編輯器以原理圖的方式進行輸入。原理圖輸入方式比較容易掌握,原理圖的方式進行輸入。原理圖輸入方式比較容
20、易掌握,直觀且方便,所畫的電路原理圖與傳統(tǒng)的器件連接方式完直觀且方便,所畫的電路原理圖與傳統(tǒng)的器件連接方式完全一樣,很容易被人接受,而且編輯器中有許多現(xiàn)成的單全一樣,很容易被人接受,而且編輯器中有許多現(xiàn)成的單元器件可以利用,自己也可以根據(jù)需要設(shè)計元件。元器件可以利用,自己也可以根據(jù)需要設(shè)計元件。 (2) 狀態(tài)圖輸入方式狀態(tài)圖輸入方式:以圖形的方式表示狀態(tài)圖進行輸入。當(dāng)填好時鐘信號名、狀態(tài)轉(zhuǎn)換條件、狀態(tài)機類型等要素后,就可以自動生成vhdl程序。這種設(shè)計方式簡化了狀態(tài)機的設(shè)計,比較流行。 (3) verilog、vhdl軟件程序的文本方式軟件程序的文本方式:最一般化、最具普遍性的輸入方法,任何支
21、持vhdl的eda工具都支持文本方式的編輯和編譯。 2 邏輯綜合和優(yōu)化邏輯綜合和優(yōu)化 將vhdl的軟件設(shè)計與硬件的可實現(xiàn)性掛鉤,需要利用eda軟件系統(tǒng)的綜合器進行邏輯綜合。 綜合器的功能就是將設(shè)計者在eda平臺上完成的針對某個系統(tǒng)項目的hdl、原理圖或狀態(tài)圖形的描述,針對給定硬件結(jié)構(gòu)組件進行編譯、優(yōu)化、轉(zhuǎn)換和綜合,最終獲得門級電路甚至更底層的電路描述文件。綜合器工作前,必須給定最后實現(xiàn)的硬件結(jié)構(gòu)參數(shù),它的功能就是將軟件描述與給定硬件結(jié)構(gòu)用某種網(wǎng)表文件的方式聯(lián)系起來。綜合器是軟件描述與硬件實現(xiàn)的一座橋梁。綜合過程就是將電路的高級語言描述轉(zhuǎn)換成低級的,可與fpga/cpld或構(gòu)成asic的門陣列基
22、本結(jié)構(gòu)相映射的網(wǎng)表文件。自己閱讀 1.4數(shù)字系統(tǒng)的設(shè)計方法數(shù)字系統(tǒng)的設(shè)計方法 數(shù)字系統(tǒng)設(shè)計有多種方法,如模塊設(shè)計法、自頂向下設(shè)計法和自底向上設(shè)計法等。 數(shù)字系統(tǒng)的設(shè)計一般采用自頂向下、由粗到細、逐步求精的方法。自頂向下是指將數(shù)字系統(tǒng)的整體逐步分解為各個子系統(tǒng)和模塊,若子系統(tǒng)規(guī)模較大,則還需將子系統(tǒng)進一步分解為更小的子系統(tǒng)和模塊,層層分解,直至整個系統(tǒng)中各子系統(tǒng)關(guān)系合理,并便于邏輯電路級的設(shè)計和實現(xiàn)為止。采用該方法設(shè)計時,高層設(shè)計進行功能和接口描述,說明模塊的功能和接口,模塊功能的更詳細的描述在下一設(shè)計層次說明,最底層的設(shè)計才涉及具體的寄存器和邏輯門電路等實現(xiàn)方式的描述。 采用自頂向下的設(shè)計方法
23、有如下優(yōu)點采用自頂向下的設(shè)計方法有如下優(yōu)點: (1) 自頂向下設(shè)計方法是一種模塊化設(shè)計方法。對設(shè)計的描述從自頂向下設(shè)計方法是一種模塊化設(shè)計方法。對設(shè)計的描述從上到下逐步由粗略到詳細,符合常規(guī)的邏輯思維習(xí)慣。由于高層上到下逐步由粗略到詳細,符合常規(guī)的邏輯思維習(xí)慣。由于高層設(shè)計同器件無關(guān),設(shè)計易于在各種集成電路工藝或可編程器件之設(shè)計同器件無關(guān),設(shè)計易于在各種集成電路工藝或可編程器件之間移植。間移植。 (2) 適合多個設(shè)計者同時進行設(shè)計。隨著技術(shù)的不斷進步,許多適合多個設(shè)計者同時進行設(shè)計。隨著技術(shù)的不斷進步,許多設(shè)計由一個設(shè)計者已無法完成,必須經(jīng)過多個設(shè)計者分工協(xié)作完設(shè)計由一個設(shè)計者已無法完成,必須
24、經(jīng)過多個設(shè)計者分工協(xié)作完成一項設(shè)計的情況越來越多。在這種情況下,應(yīng)用自頂向下的設(shè)成一項設(shè)計的情況越來越多。在這種情況下,應(yīng)用自頂向下的設(shè)計方法便于由多個設(shè)計者同時進行設(shè)計,對設(shè)計任務(wù)進行合理分計方法便于由多個設(shè)計者同時進行設(shè)計,對設(shè)計任務(wù)進行合理分配,用系統(tǒng)工程的方法對設(shè)計進行管理。配,用系統(tǒng)工程的方法對設(shè)計進行管理。 針對具體的設(shè)計,實施自頂向下的設(shè)計方法的形式會有所不同,針對具體的設(shè)計,實施自頂向下的設(shè)計方法的形式會有所不同,但均需遵循以下兩條原則:逐層分解功能,分層次進行設(shè)計。同但均需遵循以下兩條原則:逐層分解功能,分層次進行設(shè)計。同時,應(yīng)在各個設(shè)計層次上,考慮相應(yīng)的仿真驗證問題。時,應(yīng)
25、在各個設(shè)計層次上,考慮相應(yīng)的仿真驗證問題。自己閱讀第第2章章 verilog hdl語言語言 2.1 verilog hdl設(shè)計模塊的基本結(jié)構(gòu)設(shè)計模塊的基本結(jié)構(gòu)verilog hdl程序設(shè)計由模塊程序設(shè)計由模塊(module)構(gòu)成的,構(gòu)成的, 設(shè)計模塊的基本結(jié)構(gòu)如圖,設(shè)計模塊的基本結(jié)構(gòu)如圖,一個完整的一個完整的verilog hdl設(shè)計模塊包括端口定義、設(shè)計模塊包括端口定義、i/o聲明、信號類型聲明和聲明、信號類型聲明和功能描述功能描述4個部分。個部分。 一、模塊端口的定義一、模塊端口的定義模塊端口定義用來聲明電路設(shè)計模塊模塊端口定義用來聲明電路設(shè)計模塊 的輸入的輸入/輸出端口,端口定義格式如
26、下:輸出端口,端口定義格式如下: module 模塊名模塊名 (端口(端口1,端口,端口2,端口,端口3,););在端口定義的括號中,是設(shè)計電路模塊與外界聯(lián)系的全部輸入在端口定義的括號中,是設(shè)計電路模塊與外界聯(lián)系的全部輸入/輸出端口信號輸出端口信號或引腳,是設(shè)計實體對外的一個通信界面,是外界可以看到的部分(不包含或引腳,是設(shè)計實體對外的一個通信界面,是外界可以看到的部分(不包含電源和接地端),多個端口之間用電源和接地端),多個端口之間用“,”分隔。例如分隔。例如1位全加器位全加器adder模塊的模塊的端口定義為端口定義為module adder (sum, cout, ina, inb, ci
27、n); 模塊名模塊名adder 二、模塊內(nèi)容二、模塊內(nèi)容 模塊內(nèi)容包括模塊內(nèi)容包括i/o聲明、信號類型聲明和功能描述。聲明、信號類型聲明和功能描述。 (1)模塊的)模塊的i/o聲明聲明 模塊的模塊的i/o聲明用來聲明模塊端口定義中各端口數(shù)據(jù)流動方向,包聲明用來聲明模塊端口定義中各端口數(shù)據(jù)流動方向,包括輸入括輸入(input)、輸出、輸出(output)和雙向和雙向(inout)。i/o聲明格式如下:聲明格式如下: input 端口端口1,端口,端口2,端口,端口3,; /聲明輸入端口聲明輸入端口 output 端口端口1,端口,端口2,端口,端口3,;/聲明輸出端口聲明輸出端口例如,例如,1位
28、全加器的位全加器的i/o聲明為聲明為 input ina, inb, cin; output sum, cout; (2)信號類型聲明)信號類型聲明信號類型聲明是聲明設(shè)計電路的功能描述中所用的信號的數(shù)信號類型聲明是聲明設(shè)計電路的功能描述中所用的信號的數(shù)據(jù)類型和函數(shù)。信號的數(shù)據(jù)類型主要有連線(據(jù)類型和函數(shù)。信號的數(shù)據(jù)類型主要有連線(wire)、寄存)、寄存器(器(reg)、整型()、整型(integer)、實型()、實型(real)、和時間)、和時間(time)等。)等。 (3)功能描述)功能描述 功能描述是功能描述是verilog hdl程序設(shè)計中最主要的部分,用程序設(shè)計中最主要的部分,用來描
29、述設(shè)計模塊的內(nèi)部結(jié)構(gòu)和模塊端口間的邏輯關(guān)系,在電來描述設(shè)計模塊的內(nèi)部結(jié)構(gòu)和模塊端口間的邏輯關(guān)系,在電路上相當(dāng)于器件的內(nèi)部電路結(jié)構(gòu)。功能描述可以用路上相當(dāng)于器件的內(nèi)部電路結(jié)構(gòu)。功能描述可以用assign語語句、元件例化(句、元件例化(instantiate)方式、)方式、always塊語句、塊語句、initial塊語句等方法來實現(xiàn),通常將設(shè)計模塊描述的方法稱為建模。塊語句等方法來實現(xiàn),通常將設(shè)計模塊描述的方法稱為建模。 用用assign語句建模語句建模 用用assign語句建模的方法很簡單,只需要在語句建模的方法很簡單,只需要在“assign”后面再后面再加一個表達式。加一個表達式。assign
30、語句一般適合對組合邏輯進行賦值,稱語句一般適合對組合邏輯進行賦值,稱為連續(xù)賦值方式。為連續(xù)賦值方式。例例1 一位全加器的設(shè)計一位全加器的設(shè)計1位全加器的邏輯符號:位全加器的邏輯符號:sum是全加器的和輸出端,是全加器的和輸出端,cout是進位輸出端,是進位輸出端,ina和和inb是兩個加數(shù)輸入端,是兩個加數(shù)輸入端,cin是低位進位輸入端。是低位進位輸入端。全加器的全加器的verilog hdl源程序如下:源程序如下: module adder1 (sum, cout, ina, inb, cin); input ina, inb, cin; output sum, cout; assign c
31、out, sum = ina+inb+cin; endmodule “assign cout, sum = ina+inb+cin;”語句實現(xiàn)語句實現(xiàn)1位全加器的進位輸出位全加器的進位輸出cout與和輸出與和輸出sum的建模。的建模。在語句表達式中,用拼接運算符在語句表達式中,用拼接運算符“”將將cout、sum這這兩個兩個1位操作數(shù)拼接為一個位操作數(shù)拼接為一個2位操作數(shù)。位操作數(shù)。 用元件例化(用元件例化(instantiate)方式建模)方式建模元件例化方式建模是利用元件例化方式建模是利用verilog hdl提供的元件庫實現(xiàn)的。提供的元件庫實現(xiàn)的。例如,用與門例化元件定義一個三輸入端與門
32、可以寫為例如,用與門例化元件定義一個三輸入端與門可以寫為and myand3(y,a,b,c); and是是verilog hdl元件庫中與門元件元件庫中與門元件名,名,myand3是例化出的三輸入端與門名,是例化出的三輸入端與門名,y是與門輸出端,是與門輸出端,a、b、c是輸入端。是輸入端。 用用always塊語句建模塊語句建模 always塊語句可以產(chǎn)生各種邏輯,常用于時序邏輯的功能塊語句可以產(chǎn)生各種邏輯,常用于時序邏輯的功能描述。一個程序設(shè)計模塊中,可以包含一個或多個描述。一個程序設(shè)計模塊中,可以包含一個或多個always語句。語句。程序運行中,在某種條件滿足時,就重復(fù)執(zhí)行一遍程序運行中
33、,在某種條件滿足時,就重復(fù)執(zhí)行一遍always結(jié)構(gòu)結(jié)構(gòu)中的語句。中的語句。 例例2 8位二進制加法計數(shù)器的設(shè)計位二進制加法計數(shù)器的設(shè)計8位二進制加法計數(shù)器的邏輯符號如圖。位二進制加法計數(shù)器的邏輯符號如圖。out是是8位二進制計數(shù)器的輸出端(位二進制計數(shù)器的輸出端(8位位向量);向量);cout是進位輸出端(是進位輸出端(1位);位);data是并行數(shù)據(jù)輸入端(是并行數(shù)據(jù)輸入端(8位向量);位向量);load是計數(shù)器的預(yù)置控制輸入端,是計數(shù)器的預(yù)置控制輸入端,當(dāng)當(dāng)load=1時,時,out=data;clk是時鐘控制輸入端,上升沿為有效是時鐘控制輸入端,上升沿為有效邊沿;邊沿;clr是同步復(fù)位輸
34、入端,當(dāng)是同步復(fù)位輸入端,當(dāng)clk的上升的上升沿到來時且沿到來時且clr=1,則計數(shù)器被復(fù)位,則計數(shù)器被復(fù)位,out=00000000。(邏輯符號圖是由計算機對計數(shù)器電路的(邏輯符號圖是由計算機對計數(shù)器電路的verilog hdl源代碼源代碼編譯后產(chǎn)生的元件符號,圖中的輸入編譯后產(chǎn)生的元件符號,圖中的輸入/輸出標(biāo)識符自動被改為大輸出標(biāo)識符自動被改為大寫,而源程序中的標(biāo)識符都是小寫。)寫,而源程序中的標(biāo)識符都是小寫。) 8位二進制加法計數(shù)器的位二進制加法計數(shù)器的verilog hdl 源程序如下:源程序如下: module cnt8 (out, cout,data,load,cin,clk, c
35、lr); 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塊語句實現(xiàn)塊語句實現(xiàn)8位二進制加法計數(shù)器的建模。位二進制加法計數(shù)器的建模。(posedge clk)是時間控制敏感函數(shù),表示是時間控制敏感函數(shù),表示c
36、lk上升沿到來上升沿到來的敏感時刻。每當(dāng)?shù)拿舾袝r刻。每當(dāng)clk的上升沿到來時,的上升沿到來時,always塊語句中的塊語句中的全部語句就執(zhí)行一遍。全部語句就執(zhí)行一遍?!癮ssign cout = &out;”語句產(chǎn)生進語句產(chǎn)生進位輸出位輸出cout,在語句中,在語句中“&out”是與的縮減運算式,只有是與的縮減運算式,只有out中數(shù)字全為中數(shù)字全為1時,結(jié)果才為時,結(jié)果才為1。 用用initial塊語句建模塊語句建模initial塊語句與塊語句與always語句類似,不過在程序中它只執(zhí)行語句類似,不過在程序中它只執(zhí)行1次就結(jié)束了。次就結(jié)束了。initial塊語句的使用格式塊語句
37、的使用格式 : initial begin 語句語句1; 語句語句2; : end例例3 用用initial過程語句對測試變量賦值過程語句對測試變量賦值 initial begin for(addr=0; addr 大于大于= 大于等于大于等于 右移右移4 結(jié)果結(jié)果a=8b00001101而而a4 結(jié)果結(jié)果a=8b00010000。條件條件操作操作符符 ?: 操作數(shù)操作數(shù)=條件?表達式條件?表達式1:表:表達式達式2;當(dāng)條件為真(值為當(dāng)條件為真(值為1)時,操)時,操作數(shù)作數(shù)=表達式表達式1;為假(值為為假(值為0)時,操作數(shù))時,操作數(shù)=表達式表達式2。 三元操作符,即條件操作符有三個操作數(shù)
38、。三元操作符,即條件操作符有三個操作數(shù)。例如例如 a?b:c若條件操作數(shù)若條件操作數(shù)a是邏輯是邏輯1,則算子返回表達式,則算子返回表達式1操操作數(shù)作數(shù)b;若若a是邏輯是邏輯0,則算子返回表達式,則算子返回表達式2操作數(shù)操作數(shù)c。 并接并接操作操作符符 , 例如例如 a,2a,b 等價于等價于a,a,b,a,b。 將將1位全加器的進位位全加器的進位cout和和sum并接,表達式為并接,表達式為將兩個或兩個以上用逗號分隔的表達式按位連將兩個或兩個以上用逗號分隔的表達式按位連接在一起。還可以用常數(shù)來指定重復(fù)的次數(shù)。接在一起。還可以用常數(shù)來指定重復(fù)的次數(shù)。cout,sum=ina+inb+cin; 同
39、其他高級語言類似,各類操作符號之間有優(yōu)先級之分,如下表:同其他高級語言類似,各類操作符號之間有優(yōu)先級之分,如下表:優(yōu)先級序號優(yōu)先級序號操作符操作符操作符名稱操作符名稱! 、 邏輯非、按位取反邏輯非、按位取反*、/、%乘、除、求余乘、除、求余+、-加、減加、減左移、右移左移、右移、 、=小于、小于等于、大于、大于等于小于、小于等于、大于、大于等于=、!=、=、!=等于、不等于、全等、不全等等于、不等于、全等、不全等&、& 縮減與、縮減與非縮減與、縮減與非 、縮減異或、縮減同或縮減異或、縮減同或|、 |縮減或、縮減或非縮減或、縮減或非&邏輯與邏輯與|邏輯或邏輯或?: 條件操
40、作符條件操作符列表頂部是最高優(yōu)先級,底部是最低優(yōu)先級。列在同一行中的操作符具有相同的優(yōu)先級。所有列表頂部是最高優(yōu)先級,底部是最低優(yōu)先級。列在同一行中的操作符具有相同的優(yōu)先級。所有操作符(?:除外)在表達式中都是從左向右結(jié)合的。圓括號()用于改變優(yōu)先級或使得表達操作符(?:除外)在表達式中都是從左向右結(jié)合的。圓括號()用于改變優(yōu)先級或使得表達式中運算順序更加清晰,提高源文件的可讀性。式中運算順序更加清晰,提高源文件的可讀性。 (3)數(shù)值常量)數(shù)值常量 verilog hdl中的數(shù)值常量有整型和實型兩大類,分為十進制、十六進中的數(shù)值常量有整型和實型兩大類,分為十進制、十六進制、八進制或二進制。若在
41、前面加上一個正制、八進制或二進制。若在前面加上一個正“+”或負或負“”號就表示有號就表示有符號數(shù),否則所代表的就是無符號數(shù)。在數(shù)值常量的任意位置可以隨意符號數(shù),否則所代表的就是無符號數(shù)。在數(shù)值常量的任意位置可以隨意插入下劃線插入下劃線“_”以提高可讀性。以提高可讀性。常量定義格式為:常量定義格式為:parameter 常量名常量名1=表達式,常量名表達式,常量名2=表達式,表達式,常量名,常量名n=表達式;表達式;parameter是常量定義關(guān)鍵字,常量名是用戶定義的標(biāo)識符,表達式為常是常量定義關(guān)鍵字,常量名是用戶定義的標(biāo)識符,表達式為常量賦值。量賦值。例如例如 parameter vcc=5
42、, fbus=8b11010001;verilog hdl中的整型數(shù)值常量就是整數(shù),有兩種書寫格式:一種是無中的整型數(shù)值常量就是整數(shù),有兩種書寫格式:一種是無位寬的十進制表示法,如位寬的十進制表示法,如-132。第二種是定義位寬和進制的表示法,這。第二種是定義位寬和進制的表示法,這種表示方法通常是無符號數(shù)。種表示方法通常是無符號數(shù)。常數(shù)書寫格式是:常數(shù)書寫格式是:sizebase value其中其中size是位寬,定義了數(shù)值常量的位數(shù)(長度);是位寬,定義了數(shù)值常量的位數(shù)(長度);base 代表這個數(shù)據(jù)的代表這個數(shù)據(jù)的進制,取值范圍和相應(yīng)的進制如下表;進制,取值范圍和相應(yīng)的進制如下表;valu
43、e是一個數(shù)值常量的值,書是一個數(shù)值常量的值,書寫格式與進制寫格式與進制base相對應(yīng)。相對應(yīng)。例如例如 4h6a8c,表示一個表示一個4位十六進制數(shù)。位十六進制數(shù)。 2hf5 等于等于8b11110101; 8b1111xxxx 等價等價2hfx; 8b1101zzzz 等價等價2hdz。verilog hdl中的進制中的進制base進制代碼取值進制代碼取值對應(yīng)的進制對應(yīng)的進制b或或b二進制二進制o或或o八進制八進制d或或d十進制十進制h或或h十六進制十六進制 verilog hdl中的實型數(shù)值常量就是浮點數(shù),可以用十進制與科學(xué)計數(shù)法兩中的實型數(shù)值常量就是浮點數(shù),可以用十進制與科學(xué)計數(shù)法兩種形
44、式書寫。如果采用十進制格式,小數(shù)點兩邊必須都有數(shù)字。種形式書寫。如果采用十進制格式,小數(shù)點兩邊必須都有數(shù)字。 verilog hdl的編程最終是與硬件相對應(yīng)的。由于硬件電路中信號的邏輯的編程最終是與硬件相對應(yīng)的。由于硬件電路中信號的邏輯狀態(tài)具有特殊性,即不僅有狀態(tài)具有特殊性,即不僅有0(低電平)和(低電平)和1(高電平),還有可能是(高電平),還有可能是x(未知(未知狀態(tài))和狀態(tài))和z(高阻態(tài)),因此(高阻態(tài)),因此verilog hdl數(shù)值集合有四個基本值:數(shù)值集合有四個基本值:0:邏輯:邏輯0或假狀態(tài);或假狀態(tài);1:邏輯:邏輯1或真狀態(tài);或真狀態(tài);x:邏輯不確定;:邏輯不確定;z:高阻態(tài)。
45、:高阻態(tài)。(4)字符串)字符串字符串是雙引號字符串是雙引號“”“”括起來的字符序列,必須包含在同括起來的字符序列,必須包含在同 一行中,不一行中,不能多行書寫。在表達式或賦值語句中作為操作數(shù)的字符串被看作能多行書寫。在表達式或賦值語句中作為操作數(shù)的字符串被看作ascii值序列,即一個字符串中的每一個字符對應(yīng)一個值序列,即一個字符串中的每一個字符對應(yīng)一個8位位ascii值。值。(5)標(biāo)識符)標(biāo)識符標(biāo)識符是模塊、寄存器、端口、連線、示例和標(biāo)識符是模塊、寄存器、端口、連線、示例和begin-end塊等元素的塊等元素的名稱,是賦給對象的唯一的名稱。標(biāo)識符可以是字母、數(shù)字、名稱,是賦給對象的唯一的名稱。
46、標(biāo)識符可以是字母、數(shù)字、$符和符和下劃線下劃線“_”字符的任意組合序列。字符的任意組合序列。定義標(biāo)識符規(guī)則:定義標(biāo)識符規(guī)則:首字符不能是數(shù)字,必須以字母或下劃線首字符不能是數(shù)字,必須以字母或下劃線“_”開頭。開頭。字符數(shù)不能多于字符數(shù)不能多于1024。標(biāo)識符區(qū)分大小寫。標(biāo)識符區(qū)分大小寫。不要與關(guān)鍵字同名。不要與關(guān)鍵字同名。例如例如 ina、inb、adder、adder8、name_adder是正確的,而是正確的,而1a ?b是錯誤的。是錯誤的。(6)關(guān)鍵字)關(guān)鍵字關(guān)鍵字是關(guān)鍵字是verilog hdl預(yù)先定義的專用詞。在預(yù)先定義的專用詞。在ieee標(biāo)準(zhǔn)標(biāo)準(zhǔn)verilog hdl 1364-1
47、995中規(guī)定了中規(guī)定了102個關(guān)鍵詞,都采用小寫形式。關(guān)鍵詞有個關(guān)鍵詞,都采用小寫形式。關(guān)鍵詞有其特定和專有的語法作用,用戶不能再對它們做新的定義。其特定和專有的語法作用,用戶不能再對它們做新的定義。關(guān)鍵字關(guān)鍵字alwaysandassignattributebeginbufbufif0bufif1casecasexcasezcmosdeassigndefaultdefparamdisableedgeelseendendattributeendcaseendfunctionendmoduleendprimitiveendspecifyendtableendtaskeventforforcefo
48、reverforkfunctionhighz0 highzlifinitialinoutinputintegerjoinlargemacromodulemediummodulenandnegedgenmosnornotnotif0 notifloroutputparameterpmosposedgeprimitivepull0pull1pulldownpulluprcmosrealrealtimeregreleaserepeat rtraniflscalaredsignedsmallspecifyspecpramstrengthstrong0strong1supply0supply1table
49、tasktimetrantranif0tranif1 tritri0tri1triandtriortritegunsignedvectoredwaitwandweak0weak1whilewireworxnorxor (7)變量)變量變量是在程序運行時其值可以改變的量。在變量是在程序運行時其值可以改變的量。在verilog hdl中,變量分為網(wǎng)中,變量分為網(wǎng)絡(luò)型(絡(luò)型(nets type)和寄存器型()和寄存器型(register type)兩種。)兩種。 網(wǎng)絡(luò)型變量網(wǎng)絡(luò)型變量nets型變量是輸出值始終根據(jù)輸入變化而更新的變量,一般用來定義硬型變量是輸出值始終根據(jù)輸入變化而更新的變量,一般用來
50、定義硬件電路中的各種物理連線。件電路中的各種物理連線。verilog hdl提供了多種提供了多種nets型變量。型變量。常見的常見的nets型變量及說明型變量及說明類型類型功能說明功能說明wire、 tri連線類型(兩者功能完全相同)連線類型(兩者功能完全相同)wor、 trior具有線或特性的連線(兩者功能一致)具有線或特性的連線(兩者功能一致)wand、 triand具有線與特性的連線(兩者功能一致)具有線與特性的連線(兩者功能一致)tri1、 tri0分別為上拉電阻和下拉電阻分別為上拉電阻和下拉電阻supply1、 supply0分別為電源(邏輯分別為電源(邏輯1)和地(邏輯)和地(邏輯
51、0)s1s2s3 寄存器型變量寄存器型變量register型變量是用來描述硬件系統(tǒng)的基本數(shù)據(jù)對象。作為一種數(shù)值容型變量是用來描述硬件系統(tǒng)的基本數(shù)據(jù)對象。作為一種數(shù)值容器,可以容納當(dāng)前值,也可以保持歷史值。與寄存器的記憶功能相對應(yīng),器,可以容納當(dāng)前值,也可以保持歷史值。與寄存器的記憶功能相對應(yīng),可以作為模塊各器件間的信息傳遞通道。可以作為模塊各器件間的信息傳遞通道。register型變量與型變量與wire型變量的區(qū)別在于型變量的區(qū)別在于register型變量需要被明確的型變量需要被明確的賦值,賦值, 并且在重新賦值前一直保持原值。并且在重新賦值前一直保持原值。register型變量是在型變量是在
52、always、initial等過程語句種定義,并通過過程語句賦值。等過程語句種定義,并通過過程語句賦值。常見的常見的register型變量及說明型變量及說明類型類型功能說明功能說明reg常用的寄存器型變量常用的寄存器型變量integer32位帶符號整數(shù)型變量位帶符號整數(shù)型變量real64位帶符號實數(shù)型變量位帶符號實數(shù)型變量time無符號時間型變量無符號時間型變量2.3 verilog hdl的語句的語句verilog hdl的語句包括賦值語句、條件語句、循環(huán)語句、結(jié)構(gòu)聲明語的語句包括賦值語句、條件語句、循環(huán)語句、結(jié)構(gòu)聲明語句和編譯預(yù)處理語句等類型,每一類語句又包括幾種不同的語句。在這句和編譯預(yù)
53、處理語句等類型,每一類語句又包括幾種不同的語句。在這些語句中,有些語句屬于順序執(zhí)行語句,有些語句屬于并行執(zhí)行語句。些語句中,有些語句屬于順序執(zhí)行語句,有些語句屬于并行執(zhí)行語句。(1)賦值語句)賦值語句在在verilog hdl中,賦值語句常用于描述硬件設(shè)計電路輸出與輸入之間中,賦值語句常用于描述硬件設(shè)計電路輸出與輸入之間的信息傳送,改變輸出結(jié)果。的信息傳送,改變輸出結(jié)果。verilog hdl有有4種賦值方法:門基元、連種賦值方法:門基元、連續(xù)賦值、過程賦值和非阻塞賦值。續(xù)賦值、過程賦值和非阻塞賦值。門基元賦值語句門基元賦值語句門基元賦值語句的格式為:門基元賦值語句的格式為:基本邏輯門關(guān)鍵字基
54、本邏輯門關(guān)鍵字 (門輸出,門輸入(門輸出,門輸入1,門輸入,門輸入2,門輸入,門輸入n););例如例如 4輸入與非門的門基元賦值語句為輸入與非門的門基元賦值語句為 nand (y,a,b,c,d); /與語句與語句assign y=(a&b&c&d)等效等效 連續(xù)賦值語句連續(xù)賦值語句連續(xù)賦值語句的關(guān)鍵字連續(xù)賦值語句的關(guān)鍵字assign,賦值符號是,賦值符號是“=”,賦值語句的格式為,賦值語句的格式為 assign 賦值變量賦值變量=表達式;表達式;例如例如 assign y=(a&b&c&d);連續(xù)賦值語句的連續(xù)賦值語句的“=”兩邊的變量都應(yīng)該是
55、兩邊的變量都應(yīng)該是wire型變量。在執(zhí)行中,輸出型變量。在執(zhí)行中,輸出y的變化跟隨輸入的變化跟隨輸入a、b、c、d的變化而變化,反映了信息傳送的連續(xù)性。的變化而變化,反映了信息傳送的連續(xù)性。連續(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表示輸出與輸入信號之間具有表示輸出與輸入信號之間具有1個單位的時
56、間延遲個單位的時間延遲 endmodule 過程賦值語句過程賦值語句過程賦值語句出現(xiàn)在過程賦值語句出現(xiàn)在initial和和always塊語句中,賦值符號是塊語句中,賦值符號是“=”,語句格式為:,語句格式為: 賦值變量賦值變量=表達式;表達式;過程賦值語句過程賦值語句“=”左邊的賦值變量必須是(寄存器)左邊的賦值變量必須是(寄存器)reg型型變量,其值在該語句結(jié)束時即可得到。變量,其值在該語句結(jié)束時即可得到。如果一個塊語句中包含若干條過程賦值語句,按順序一條一如果一個塊語句中包含若干條過程賦值語句,按順序一條一條執(zhí)行,前面的語句沒完成,后面的語句就不能執(zhí)行。條執(zhí)行,前面的語句沒完成,后面的語句
57、就不能執(zhí)行。因此,過程賦值語句也稱為阻塞賦值語句。因此,過程賦值語句也稱為阻塞賦值語句。 非阻塞賦值語句非阻塞賦值語句非阻塞賦值語句也是出現(xiàn)在非阻塞賦值語句也是出現(xiàn)在initial和和always塊語句中,賦值符號是塊語句中,賦值符號是“=”,語,語句格式為:句格式為: 賦值變量賦值變量=表達式;表達式;非阻塞賦值語句非阻塞賦值語句“=”左邊的賦值變量必須是(寄存器)左邊的賦值變量必須是(寄存器)reg型變量,其值在型變量,其值在塊語句結(jié)束時才可得到,與過程賦值語句不同。塊語句結(jié)束時才可得到,與過程賦值語句不同。例如例如 下面的塊語句包含下面的塊語句包含4條賦值語句條賦值語句 always (
58、posedge clock) m=3; n=75; n=m; r=n;語句執(zhí)行結(jié)束后,語句執(zhí)行結(jié)束后,r的值是的值是75,而不是,而不是3,因為第,因為第3行是非阻塞賦值語句行是非阻塞賦值語句“n=m”,該語句要等到本塊語句結(jié)束時,該語句要等到本塊語句結(jié)束時,n的值才能改變。的值才能改變。塊語句的塊語句的“(posedge clock)”是定時控制敏感函數(shù),表示時鐘信號是定時控制敏感函數(shù),表示時鐘信號clock的的上升沿到來的敏感時刻。上升沿到來的敏感時刻。例例2 上升沿觸發(fā)的上升沿觸發(fā)的d觸發(fā)器的觸發(fā)器的verilog hdl源程序源程序 module d_ff(q,d,clock); in
59、put d,clock; /屬于屬于wire型變量,由隱含規(guī)則定義。型變量,由隱含規(guī)則定義。 output q; /屬于屬于reg型變量型變量 reg q; always (posedge clock) q=d; endmodule (2)條件語句)條件語句條件語句包含條件語句包含if語句和語句和case語句,它們都是順序語句,應(yīng)放在語句,它們都是順序語句,應(yīng)放在always塊中。塊中。 if語句語句完整的完整的verilog hdl的的if語句結(jié)構(gòu)如下:語句結(jié)構(gòu)如下: if(表達式)(表達式) begin 語句;語句; end else if(表達式)(表達式) begin 語句;語句; e
60、nd else begin 語句;語句; end在在if語句中,語句中,“表達式表達式”是邏輯表達式或關(guān)系表達式,也可以是位寬為是邏輯表達式或關(guān)系表達式,也可以是位寬為1位的位的變量。變量。系統(tǒng)對表達式的值進行判斷,系統(tǒng)對表達式的值進行判斷, 若為若為0,x,z按按“假假”處理;若為處理;若為1,按,按“真真”處理,執(zhí)行指定的語句。處理,執(zhí)行指定的語句。 例例3 8線線-3線優(yōu)先編碼器的設(shè)計線優(yōu)先編碼器的設(shè)計8線線-3線優(yōu)先編碼器的功能表線優(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=3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版煤炭資源開采權(quán)出讓合同書4篇
- 二零二五年生態(tài)治理項目土石方調(diào)配合同3篇
- 2025年度二手房裝修工期延誤賠償合同4篇
- 2025年新型大棚設(shè)施建設(shè)與租賃一體化服務(wù)協(xié)議4篇
- 2025年蓄水池施工與生態(tài)濕地建設(shè)合作協(xié)議3篇
- 2024物流中心經(jīng)營場地租賃合同
- 個人購車擔(dān)保合同(2024版)
- 個人二手物品交易平臺服務(wù)協(xié)議2024年度3篇
- 2025年新型玻璃瓶蓋研發(fā)與生產(chǎn)合作合同3篇
- 2025年新型草料加工技術(shù)研發(fā)與應(yīng)用合同3篇
- 工程物資供應(yīng)、運輸、售后服務(wù)方案
- 中國成人暴發(fā)性心肌炎診斷和治療指南(2023版)解讀
- 新生兒低血糖課件
- 自動上下料機械手的設(shè)計研究
- 電化學(xué)儲能電站安全規(guī)程
- 幼兒園學(xué)習(xí)使用人民幣教案教案
- 2023年浙江省紹興市中考科學(xué)真題(解析版)
- 語言學(xué)概論全套教學(xué)課件
- 大數(shù)據(jù)與人工智能概論
- 《史記》上冊注音版
- 2018年湖北省武漢市中考數(shù)學(xué)試卷含解析
評論
0/150
提交評論