




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第4章 組合邏輯基礎 4.1概述 4.2組合邏輯電路的分析 4.3組合邏輯電路的設計 4.4組合邏輯電路中的競爭-冒險 4.5 組合邏輯電路的Verilog HDL編程入門 4.1概述1. 什么是組合邏輯電路在邏輯功能上的特點:電路任意時刻的輸出狀態(tài),只取決于該時刻的輸入狀態(tài),而與該時刻之前的電路輸入狀態(tài)和輸出狀態(tài)無關。在結構上的特點:不含有具備存儲功能的電路??梢杂蛇壿嬮T或者由集成組合邏輯單元電路組成,從輸出到各級門的輸入無任何反饋連接。2. 組合邏輯電路框圖有n個輸入變量,m個輸出變量,每個輸入/輸出變量實質(zhì)上對應于二進制信號的邏輯0和邏輯1,n個輸入變量有2n種輸入組合,對于每一種組合,
2、只有一個可能的輸出值與之對應。組合邏輯電路 A1A2AnF1F2FmF1=f1(A1,A2,An)F2=f2(A1,A2,An)Fm=fn(A1,A2,An)圖4.1 組合邏輯電路框圖 3. 組合邏輯電路必須研究的問題 邏輯分析:就是在已知電路圖的情況下,通過分析手段確定其邏輯功能,也就是要得到全部輸出與輸入之間的邏輯關系,這在分析電路性能,評價電路技術指標,或者對產(chǎn)品進行維修及改進過程中是非常重要的。邏輯設計:是在只有需求信息的情況下,根據(jù)給定的邏輯功能要求,通過某些設計工具和設計方法確定一個能實現(xiàn)這個功能、且性價比最優(yōu)的邏輯電路。 4.2組合邏輯電路的分析借助邏輯代數(shù)的知識,分析從輸入到輸
3、出每條路徑上的各個邏輯門的邏輯運算,通過導出每個點的邏輯函數(shù)或真值表,最終確定該電路的邏輯功能。從輸入端出發(fā),逐級分析每個點的邏輯運算并寫出邏輯表達式。由門電路組成的組合邏輯電路的分析步驟:根據(jù)所給的邏輯電路圖,寫出輸出函數(shù)邏輯表達式。根據(jù)已寫出的輸出邏輯函數(shù)表達式,列出該電路的真值表。由真值表或邏輯函數(shù)表達式確定電路功能?!纠?.1】分析圖4.2所示組合電路的邏輯功能。解:(1) 寫出輸出函數(shù)邏輯表達式。(式4.1) 對式4.1進行化簡和變換可得到如下兩個邏輯函數(shù)表達式:(2) 列真值表。表4.1 例4.1真值表ABCF00001111001100110101010101111110(式4.
4、2) (式4.3) 方案一方案一(3) 分析邏輯功能。電路稱為“不一致電路”?!纠?.2】分析圖4.3所示組合電路的邏輯功能。解:(1) 寫出輸出函數(shù)邏輯表達式。P1=AB(式4.5)(式4.4)(2) 根據(jù)式4.4和式4.5可列出真值表。ABCF1F20000111100110011010101010001011101101001(3) 分析邏輯功能由真值表可以看出:F1是在三個輸入變量中有兩個或兩個以上為1時,其值為1,所以相當于三個二進制數(shù)相加時的進位輸出;F2是三個輸入變量中有一個為1或三個全為1(也就是奇數(shù)個1)時,其值為1,所以相當于三個二進制數(shù)相加時的本位和輸出。因此,該電路實現(xiàn)
5、的是一位全加器的運算功能。 Proteus ISIS環(huán)境下進行仿真在做組合邏輯電路的分析過程中,還有一個簡便的方法就是在Proteus ISIS環(huán)境下進行仿真。繪制已知的邏輯電路圖,給電路的每一個輸入端配置一個LOGICSTATE,在每個輸出配置一個LOGICPROBE,通過仿真,設置不同的LOGICSTATE的值,觀察每一個LOGICPROBE的值,即可直接列出真值表。當然也可借助仿真來驗證對組合邏輯電路的分析是否正確。讀者可結合例4.1和例4.2進行驗證。4.3組合邏輯電路的設計組合電路的設計就是按給定的邏輯問題,運用相應的邏輯設計方法和邏輯器件,設計出符合要求的邏輯電路。組合邏輯電路的設
6、計非常靈活,方法也多種多樣,同一問題,不同的設計者設計,結果不一定相同,即使是同一設計者設計,采用的設計方法和邏輯器件不同,設計結果也不相同,但不怎樣,但最終得到的邏輯功能一定是相同的。組合邏輯電路的設計通常可按以下步驟進行:根據(jù)需求信息,分析事件的因果關系,確定輸入變量和輸出變量。把事件的起因定為輸入變量,把事件的結果定為輸出變量。定義邏輯狀態(tài)的含義,并對邏輯變量賦值,也就是用二值邏輯的0和1分別代表輸入變量的不同狀態(tài),對所有可能的輸入組合,確定其輸出狀態(tài)值,并根據(jù)輸出變量對不同輸入組合的響應列出真值表。由真值表寫出相應的邏輯函數(shù)表達式,并對寫出的邏輯函數(shù)表達式進行化簡或變換,使之對應的邏輯
7、電路符合所用的設計器件或達到設計結果最簡的目的。根據(jù)化簡或變換后的邏輯表達式繪制邏輯電路圖?!纠?.3】設計一個三變量輸入的一致電路。真值表ABCF00001111001100110101010110000001根據(jù)表達式 繪制的電路(b)根據(jù)式4.2求反繪制的電路【例4.4】設計一個實現(xiàn)全加器運算功能的組合邏輯電路。(1) 需求分析。(2) 確定變量。三個輸入變量:A、B表示參加本位相加的兩個二進制數(shù);C表示低位向本位的進位兩個輸出變量:本位和用F2表示;輸出向高位的進位用F1表示(3) 真值表。(式4.7) (式4.8) (4) 邏輯表達式。ABCF1F200001111001100110
8、10101010001011101101001(式4.10) (式4.7) (式4.8) (式4.9) (式4.10) 4.4組合邏輯電路中的競爭-冒險 4.4.1 競爭-冒險的產(chǎn)生4.4.2 競爭-冒險的判斷4.4.3 競爭-冒險的消除方法什么叫競爭-冒險前面分析組合邏輯電路時,是把各邏輯門電路當做理想的邏輯門來看待,只考慮了輸入和輸出穩(wěn)定狀態(tài)之間的關系,也就是說,總認為從輸入變化到輸出變化沒有任何時間延遲,變化是在同一時刻發(fā)生的。事實上,受電路上布局的影響,信號的變化速率不一定相同,而且信號在經(jīng)過任何電路時都會產(chǎn)生時間延遲,這將導致當電路的輸入達到穩(wěn)定狀態(tài)前,輸出可能出現(xiàn)不穩(wěn)定狀態(tài),使得原
9、本正常的邏輯關系出現(xiàn)了混亂,甚至導致了電路產(chǎn)生錯誤輸出,通常把這種現(xiàn)象稱為競爭-冒險。4.4.1 競爭-冒險的產(chǎn)生1由于輸入信號邊沿不陡、變化速率不同而產(chǎn)生的競爭-冒險 當其兩個輸入信號A和B同時向相反狀態(tài)變化時,如果變化的速率不同,比如A從0變到1變化略快一些,而B從1變到0略慢一點,從而導致在A和B的狀態(tài)變化過程中有一段很微小的時間里出現(xiàn)同時滿足高電平1的時刻,這就使得原本應該穩(wěn)定輸出1的F端產(chǎn)生了一個不應該出現(xiàn)的負尖脈沖輸出。競爭是指邏輯門的兩個輸入信號從不同電平同時向相反電平跳變的現(xiàn)象。由于競爭而在電路的輸出端產(chǎn)生與邏輯電平相違背的尖脈沖現(xiàn)象稱為競爭-冒險。競爭-冒險的產(chǎn)生是有條件的,
10、有競爭的存在并不一定產(chǎn)生競爭-冒險。2由于兩個輸入信號通過不同路徑時的時間延遲而產(chǎn)生的競爭-冒險 當?shù)竭_同一邏輯門的兩個輸入信號有競爭現(xiàn)象,如果這兩個信號因通過不同路徑傳輸?shù)难舆t時間不同,就會產(chǎn)生競爭-冒險。如果因為電路延遲,在應該輸出1時出現(xiàn)了不應有的瞬間0信號,即產(chǎn)生了冒險。這種冒險稱為0型冒險。如上圖的或門輸出。 如果因為電路延遲,在應該輸出0時出現(xiàn)了不應有的瞬間1信號,即產(chǎn)生了冒險。這種冒險稱為1型冒險。如上圖的與門輸出。 功能冒險和邏輯冒險 當輸入信號ABC從001變到010時,若B先于C變化,則輸入信號ABC將由001 011 010,所經(jīng)路徑的函數(shù)值不相同,輸出就會發(fā)生 0 1
11、0的錯誤。就是功能冒險。 功能冒險 在組合邏輯電路中,當有兩個或兩個以上輸入信號同時產(chǎn)生變化時,在輸出端產(chǎn)生了毛刺,這種冒險稱為功能冒險。 邏輯冒險 在組合邏輯電路中,當只有一個變量產(chǎn)生變化時出現(xiàn)的冒險,稱為邏輯冒險。4.4.2 競爭-冒險的判斷 表達式法卡諾圖法軟件仿真及實驗法例4.16.判斷以下函數(shù)是否可能產(chǎn)生冒險現(xiàn)象: 例4.15.判斷以下函數(shù)是否可能產(chǎn)生冒險現(xiàn)象: 但是當輸入變量的數(shù)目較多時,從邏輯函數(shù)表達式上難于找出所有可能產(chǎn)生的競爭-冒險。1. 表達式法 在邏輯函數(shù)表達式中,某個變量以原變量和反變量出現(xiàn)時,其它變量取1或取0,若得到表達式為 或 則可以判定存在競爭-冒險。當 B =
12、 C = 1時,所以,在A由1變0時,可能產(chǎn)生“0”型冒型。當 B = C = 0時,所以,在A由0變1時,可能產(chǎn)生“1”型冒型。 4.4.2 競爭-冒險的判斷 2卡諾圖法3軟件仿真法 通過計算機輔助分析的手段也可有效判斷電路的競爭-冒險。利用EDA設計與仿真工具,繪制電路的原理圖,再采用與典型參數(shù)值相應的激勵信號作為輸入,運行仿真程序,即可直接觀察電路的輸出是否存在競爭-冒險。 首先將邏輯關系用卡諾圖表示,若在卡諾圖畫包圍圈時,出現(xiàn)兩個包圍圈相切而不相交的情況,對應的邏輯電路將存在競爭-冒險。對于圖a,信號B=1,C=1, ,A由0變?yōu)?時,產(chǎn)生0型冒險。對于圖b,信號B=0,C=0, ,A
13、由1變?yōu)?時,產(chǎn)生1型冒險。4.4.3 競爭-冒險的消除方法競爭-冒險在某些電路中可能會引起電路操作上的錯誤,因此,作為電路的設計者,應當采取有效措施消除或避免競爭-冒險的發(fā)生。針對競爭-冒險出現(xiàn)的原因和特點,常用的方法有以下幾種。1. 增加冗余項增加冗余項的方法是通過在函數(shù)表達式中增加多余的項,使原函數(shù)不可能出現(xiàn)在某種條件下出現(xiàn)A+A或AA的輸出形式,從而有效消除競爭-冒險。例如例4.5所示函數(shù),F(xiàn)=AC+AB+AC,當BC=11時,輸入A的變化有可能使電路產(chǎn)生競爭-冒險,消除的方法是在表達式中增加一個與項BC,使輸出F在BC=11時保持為“1”即可效消除競爭-冒險??梢姡黾拥娜哂囗椌褪歉?/p>
14、爭-冒險的條件所對應的項。冗余項的選擇也可以通過卡諾圖法來實現(xiàn)。具體方法是,若卡諾圖上某兩個圈“相切”,則將相切的部分畫一個圈,該圈所對應的項就是要增加的冗余項。 2. 在輸出端接入濾波電容由于競爭-冒險而產(chǎn)生的尖峰脈沖時間很短,通常在幾十個納秒以內(nèi),所以只要在輸出端并接一個幾十至幾百皮法的濾波電容,即可將尖峰脈沖的幅度削弱到門電路的閥值以下,從而達到消除競爭-冒險的目的。4.4.3 競爭-冒險的消除方法3. 引入選通脈沖對輸出門加以控制,使輸出門在其輸入信號穩(wěn)定以后,有選擇地產(chǎn)生邏輯輸出。對于不同功能的輸出門,選通信號的形式是不同的。邏輯與性質(zhì)的輸出門,必須采用正脈沖作為選通信號;邏輯或性質(zhì)
15、的輸出門,必須采用負脈沖作為選通信號;從而達在選通信號無效時,封鎖輸出門,在選通脈沖到來時,開啟輸出門的作用。4.4.3 競爭-冒險的消除方法4.5組合邏輯電路的Verilog HDL編程入門 4.5.1 可編程邏輯器件與硬件描述語言簡介4.5.2 Verilog HDL組合邏輯電路設計實例1. 可編程邏輯器件與硬件描述語言簡介現(xiàn)在很多數(shù)字系統(tǒng)都采用可編程邏輯器件來實現(xiàn)??删幊踢壿嬈骷挠⑽娜Q為Programmable Logic Device,常用縮寫PLD表示:現(xiàn)場可編程門陣列(FPGA,F(xiàn)ield Programmable Gate Array)復雜可編程邏輯器件(CPLD,Compl
16、ex Programmable Logic Device)用于對PLD編程的語言稱為硬件描述語言 HDL-Hardware Description Language目前應用最廣泛的HDL是:Verilog HDLVHDL(Very High Speed Integrated Circuit HDL) 由于Verilog HDL具有程序結構簡單,硬件描述能力強等特點,已得到國內(nèi)外廣大EDA設計者的廣泛使用。29小規(guī)模集成電路和中規(guī)模集成電路。這些集成電路包括邏輯門和其他數(shù)字電路 在生產(chǎn)的時候就確定了,而且不能改變。如果需要某種特定邏輯功能的器件, 則需用多個器件來構造電路既浪費了電路板上的空間又
17、浪費了設計時間。在可編程邏輯器件出現(xiàn)之前,數(shù)字系統(tǒng)用各種集成邏輯電路組成Y=AB+BC+AC30可編程邏輯器件(PLD)-可以由用戶編程實現(xiàn)不同邏輯功能的數(shù)字集成電路。PLD給這些問題提供了解決辦法。在使用者第次拿到PLD的時候,器件中沒有實現(xiàn)任何邏輯功能的只有那些設計需要的邏輯功能被編程實現(xiàn)邏輯功能可以在設計和編程中合并到一塊芯片上減少器件個數(shù)、節(jié)省電路板空間可編程擦寫、再編程多次,便于修改PLD是個通用名詞。有許多類型,包括:PAL (可編程陣列邏輯)GAL (通用陣列邏輯)EPLD (可擦除可編程邏輯器件)CPLD (復雜可編程邏輯器件)FPGA (現(xiàn)場可編程邏輯)Y=AB+BC+AC3
18、1可編程邏輯器件(PLD)-為了使一個芯片通過編程變成我們構想的數(shù)字系統(tǒng)。設計輸入 仿真 編譯 裝配 編程PLD的設計方式-圖形設計文件層次化結構設計文本設計文件32層次化結構設計maj_vote2votes4votes/*半加器描述之一,根據(jù)邏輯函數(shù)表達式實現(xiàn)Date:2012-08-15*/module h_adder(a,b,so,co);input a,b; /輸入端口,參加運算的兩個1位的二進制數(shù)output so,co; /輸出端口,so為本位和,co為向高位的進位assign so=ab; /本位和為a和b的異或運算結果assign co=a&b; /向高位的進位為a和b的與運算
19、結果endmodule2. Verilog HDL組合邏輯電路設計實例【例4.6】用Verilg HDL設計半加器電路。absoco0000011010101101注:雖然都叫程序,而且Verilg程序描述與C語言程序看上去有很多相似的地方,但兩者有著很大的差別,C語言源程序是通過編譯產(chǎn)生可執(zhí)行的目標代碼,目標代碼是在計算機的CPU上執(zhí)行Verilog程序是通過綜合產(chǎn)生相應的電路描述表,將綜合后電路描述表編程到CPLD或配置到FPGA芯片上執(zhí)行。圖4.10半加器的仿真波形圖Verilog程序的基本結構 一個完整的、可綜合的Verilog程序能夠完整地描述一個電路模塊,或一片專用集成電路,必須包
20、含在一個模塊中。module和endmodule是模塊描述關鍵詞;endmodule是模塊結束語句,模塊的端口和功能描述語句必須放在module和endmodule之間。 在程序中,關鍵詞一律小寫;模塊名是用戶定義標識符,以字母開頭,可由字母、數(shù)字和下劃線構成。由于模塊名實際上也是表達當前設計的電路的器件名,所以最好是根據(jù)相應的電路功能來命名注:Verilog程序中的標識符都是區(qū)別大小寫的。module 模塊名(模塊端口名表)模塊端口和模塊功能描述endmodule模塊端口名表可以是一個或多個用逗號分隔的標識符,是模塊與外部電路的連接通道,相當于芯片引腳的功能,一個模塊只能通過端口才能與外部電
21、路交換信息。module 模塊名(模塊端口名表)模塊端口和模塊功能描述endmoduleinput/output/inout 端口名1,端口名2,;input/output/inoutmsb:lsb 端口名1,端口名2,;input/output/inout 是Verilog模塊中端口的三種不同模式,用于定義端口上數(shù)據(jù)的流動方向或方式。input表示輸入,定義的端口為單向輸入模式;output表示輸出,定義的端口為單向輸出模式;inout表示雙向,定義的通道為輸入輸出雙向模式。一個端口名可以表示一個引腳,也可以表示一組引腳。如果端口是一組信號引腳,可以在關鍵詞后的方括號中用msb和lsb分別表
22、示信號的高位和低位的位號。比如,要定義d表示四位位寬的輸入信號,可以用input3:0 d;來定義,相當于定義了d3、d2、d1、d0四個輸入信號。input/output/inout 端口名1,端口名2,;input/output/inoutmsb:lsb 端口名1,端口名2,;Verilog 程序中的注釋有兩種:一種以“/*”開始,以“*/”結束的多行注釋;另一種是,從雙斜杠“/”開始,到行末為止的單行注釋。注釋只是用來對程序中的語句或代碼段起說明作用,目的是為了增加程序的可讀性,對綜合器不起作用,所以不影響具體電路。/*半加器描述之一,根據(jù)邏輯函數(shù)表達式實現(xiàn)Date:2012-08-15
23、*/module h_adder(a,b,so,co);input a,b; /輸入端口,參加運算的兩個1位的二進制數(shù)output so,co; /輸出端口,so為本位和,co為向高位的進位assign so=ab; /本位和為a和b的異或運算結果assign co=a&b; /向高位的進位為a和b的與運算結果endmodule在module之后是模塊名和模塊端口名表,例4.6的模塊名為h_adder,該模塊有四個端口,a,b,so,co。輸入端口定義,說明本模塊有兩個用于輸入的端口,端口名稱為a和b。輸出端口定義,說明本模塊有兩個用于輸出的端口,端口名稱為so和co。用關鍵詞assign實現(xiàn)
24、的賦值語句,用來描述半加器的兩個運算功能:一個是產(chǎn)生本位和的異或運算,運算符是“”;另一個是用來產(chǎn)生向高位進位的與運算“&”。這兩種運算都是位邏輯運算,屬于這類運算還有位或“|”,位求反“”等。/*半加器描述之一,根據(jù)邏輯函數(shù)表達式實現(xiàn)Date:2012-08-15*/module h_adder(a,b,so,co);input a,b; /輸入端口,參加運算的兩個1位的二進制數(shù)output so,co; /輸出端口,so為本位和,co為向高位的進位assign so=ab; /本位和為a和b的異或運算結果assign co=a&b; /向高位的進位為a和b的與運算結果endmoduleVe
25、rilog程序中的語句有順序語句和并行語句:順序語句的執(zhí)行與書寫順序一致;并行語句的執(zhí)行不管有多少個語句都是同時執(zhí)行的。關鍵詞assign引導的賦值語句就是并行執(zhí)行語句,所以本例中的兩個assign賦值是同時執(zhí)行的。assign賦值的對象必須是wire(網(wǎng)線)類型變量,模塊的端口默認類型是wire類型,所以不需要再加以說明。Verilog程序的書寫格式與C語言相似:程序中的語句用分號結尾。一行可以寫多個語句,一個語句也可寫成多行。最后一個語句是表示模塊結束的endmodule,其后沒有分號。module h_adder(a,b,so,co);input a,b; /輸入端口output so,
26、co; /輸出端口,so為本位和,co為向高位的進位assign co,so=a+b; /將兩位二進制數(shù)相加的結果直接存入并位后的co和soendmodule其中:a + b表示對兩個參加運算的二進制數(shù)做算術加法運算; 是并位運算,用來將多個位對象按順序拼接成一個位向量;此處是把進位輸出和本位和拼成一個兩位的位向量,并且高位是進位輸出,低位是本位和,用來接收算術運算a+b的結果。 同一問題的Verilog 描述可以有多種方式,不同的程序結構綜合后的電路不一定相同,但功能是相同的,比如半加器的Verilog HDL描述還可以有以下兩種形式。半加器描述之二,直接用算術運算實現(xiàn)的描述 module
27、h_adder(a,b,so,co);input a,b;/輸入端口output so,co;/輸出端口,so為本位和,co為向高位的進位reg so,co; /寄存器變量說明,在過程中賦值的變量必須說明成reg型always (a,b) begin /過程語句開始,當敏感信號a、b有變化,過程就執(zhí)行case(a,b)/case語句開始2b00: begin so=0; co=0; end/塊語句用begin 和end 括起2b01: begin so=1; co=0; end2b10: begin so=1; co=0; end2b11: begin so=0; co=1; enddefau
28、lt: begin so=0; co=0; endendcase/case語句結束end/過程語句結束endmoduleVerilog 程序中的多個簡單語句可以用begin和end括起來構成塊語句,類似于C語言中用一對花括號括起來的復合語言。注意:end后無分號。半加器描述之三,基于case 語句的類真值表描述半加器描述之三,基于case 語句的類真值表描述always (敏感信號表) 包括塊語句在內(nèi)的各類順序語句。always關鍵詞引導的是過程語句,其一般格式為:module h_adder(a,b,so,co);input a,b;/輸入端口output so,co;/輸出端口,so為本位
29、和,co為向高位的進位reg so,co; /寄存器變量說明,在過程中賦值的變量必須說明成reg型always (a,b) begin /過程語句開始,當敏感信號a、b有變化,過程就執(zhí)行case(a,b)/case語句開始2b00: begin so=0; co=0; end/塊語句用begin 和end 括起2b01: begin so=1; co=0; end2b10: begin so=1; co=0; end2b11: begin so=0; co=1; enddefault: begin so=0; co=0; endendcase/case語句結束end/過程語句結束endmodu
30、le其中,敏感信號表可以是一個或多個用逗號(或 or)分隔的變量名。其含義表示其中任何變量有變化,都會導致過程塊語句的執(zhí)行。本例的敏感信號表說明,只要輸入端口a或b的值有變化,則會導致過程塊語句的執(zhí)行,根據(jù)當前的a和b的值來求新的本位和so和進位co。always (敏感信號表) 包括塊語句在內(nèi)的各類順序語句。以關鍵詞case語句引導的一個多分支語句。其一般格式為:case (表達式) 取值1: begin語句1; 語句2; 語句n;end取值2: begin ; end default:begin ; endendcase 執(zhí)行時,先求表達式的值,然后表達式的值與其后的各個取值比較: 若與某
31、個取值相同,則執(zhí)行其后的語句, 如果沒有相同的值與之匹配,則執(zhí)行default后的語句。 Verilog語法規(guī)定,凡是在always過程塊中賦值的變量,必須用reg說明成寄存器類型,如本例中的 reg so,co;所示,因為so和co都是在過程塊中賦值的變量。注意:此處說明為寄存器類型變量,是過程塊內(nèi)賦值語句的語法規(guī)定需要,并不意味著一定有寄存器(時序)電路與之對應。 module h_adder(a,b,so,co);input a,b;/輸入端口output so,co;/輸出端口,so為本位和,co為向高位的進位reg so,co; /寄存器變量說明,在過程中賦值的變量必須說明成reg型
32、always (a,b) begin /過程語句開始,當敏感信號a、b有變化,過程就執(zhí)行case(a,b) /case語句開始2b00: begin so=0; co=0; end/塊語句用begin 和end 括起2b01: begin so=1; co=0; end2b10: begin so=1; co=0; end2b11: begin so=0; co=1; enddefault: begin so=0; co=0; endendcase/case語句結束end/過程語句結束endmodule半加器描述之三,基于case 語句的類真值表描述Verilog HDL對二進制數(shù)的表示格式
33、其中:(1) 位寬與進制之間用左撇號分開;(2) 位寬用十進制數(shù)表示,描述數(shù)字用二進制數(shù)表示時的位數(shù);(3) 進制用字母表示,可以是B、O、H、D之一,不區(qū)分大小寫,分別表示二進制、八進制、十六進制和十進制。例如4hF表示二進制1111,也可表示成4b1111,或4o17,或4d15。 【例4.7】 在例4.6的半加器的基礎上,用Verilg HDL設計一位全加器。 由于一個Verilog模塊對應一個硬件電路功能實體器件,利用Verilog元件例化語句設計上層模塊,將半加器實體器件連接起來構成一個完整的系統(tǒng)。module f_adder(ain,bin,cin,sout,cout); /一位全
34、加器頂層設計描述 input ain,bin,cin;/定義輸入變量 output sout,cout;/定義輸出變量 wire p1,p2,p3;/定義網(wǎng)線型變量用作內(nèi)部元件間連線 h_adder u1(ain,bin,p2,p1);/半加器電路例化構成元件u1,用位置關聯(lián)法 h_adder u2(.a(p2),.b(cin),.co(p3),.so(sout);/半加器電路例化構成元件u2,用端口名關聯(lián) or u3(cout,p1,p3); /利用Verilog基本元件中的或門構成的元件u3endmodule【例4.7】 在例4.6的半加器的基礎上,用Verilg HDL設計一位全加器。m
35、odule f_adder(ain,bin,cin,sout,cout); /一位全加器頂層設計描述 input ain,bin,cin;/定義輸入變量 output sout,cout;/定義輸出變量 wire p1,p2,p3;/定義網(wǎng)線型變量用作內(nèi)部元件間連線 h_adder u1(ain,bin,p2,p1);/半加器電路例化構成元件u1,用位置關聯(lián)法 h_adder u2(.a(p2),.b(cin),.co(p3),.so(sout);/半加器電路例化構成元件u2,用端口名關聯(lián) or u3(cout,p1,p3); /利用Verilog基本元件中的或門構成的元件u3endmodul
36、e程序中用了兩個元件化語句:h_adder: 半加器元件u1和u2or : 或門u3。u1用位置關聯(lián)法,分別將當然ain,bin,p2,p1與半加器中的端口a,b,co,so按位置關系一一對應,由于是按位置關聯(lián),所以其書寫順序不能隨意更改u2采用端口名關聯(lián)法: (.a(p2),.b(cin),.co(p3),.so(sout);由于是按端口名關聯(lián),所以其書寫順序可以任意。元件例化語句門元件例化Verilog 基本語言綜合器嵌入了基本元件(Primitives),以支持一些通用的簡單電路的綜合。常用的有:and,nand, or,nor, xor,xnor,分別表示:與門,與非門,或門,或非門,
37、異或門,異或非門,其共同特點是:只有一個輸出,但可以有多個輸入。具體使用時,可與元件例化語句相似的方法,按位置關系代入具體端口名即可,格式如下:基本元件名 實例名(輸出,輸入1,輸入2,輸入n)其中實例名可以省略,例4.7的程序代碼中實例名為u3就是一個或門的具體應用,其中輸出端口是cout,輸入端口是網(wǎng)線型中間結點p1和p3or u3(cout,p1,p3); 全加器也可以不用半加器而直接描述如下,比如完全按運算結果用一個assign語句實現(xiàn)運算功能的程序如下:module f_adder(ain,bin,cin,sout,cout);/一位全加器頂層設計描述 input ain,bin,c
38、in;/定義輸入變量 output sout,cout;/定義輸出變量 assign cout,sout=ain+bin+cin;endmodule全加器的描述二module () ;output 輸出端口列表:input 輸入端口列表:/ (1) 使用assign語句定義邏輯功能wire 結果信號名;assign = 表達式 ;/ (2) 使用always塊定義邏輯功能always ()begin/ 過程賦值語句/ if語句/ case語句/ while,repeat,for循環(huán)語句/ task,function調(diào)用end/ (3) 元件例化 ();/ 模塊元件例化 (); / 門元件例化e
39、ndmoduleVerilog HDL模塊的模版(僅考慮用于邏輯綜合的部分)Verilog HDL的語句文字規(guī)則1. 整數(shù)可以用多種數(shù)制形式表示,一般格式: 其中,位寬是指二進制數(shù)的位數(shù),進制是字母B、H、O、D(不區(qū)分大寫?。┲唬謩e表示二進制、十六進制、八進制、十進制。例如:2. 標識符: 以字母或下劃線開頭,由字母、數(shù)字、下劃線和$符號構成,區(qū)分大小寫。例如:A3,clk_1,RST,Half_Adder8b1010_0110用二進制表示的8位二進制數(shù),其中的下劃線是為了提高可讀性8hA6用十六進制數(shù)表示的8位二進制數(shù)8o246用八進制數(shù)表示的8位二進制數(shù)8d166用十進制數(shù)表示的8位
40、二進制數(shù)Verilog HDL的語句文字規(guī)則3. 邏輯值4. 保留字:Verilog HDL賦予了特定含義的標識符,均為小寫。0表示邏輯01表示邏輯1z或Z表示高阻x或X表示不確定值Verilog HDL的保留字Verilog HDL的保留字Verilog HDL的常量Verilog HDL的常量1)整數(shù)型常量Verilog HDL的常量2)x和z值Verilog HDL的常量3)負數(shù)Verilog HDL的常量4)parameter常量Verilog HDL中變量的數(shù)據(jù)類型1. 網(wǎng)線型端口的默認類型,用于說明端口以外的信號或連線性質(zhì)的變量。網(wǎng)線型變量可以是單線的(1bit),也可以是多線的,
41、其說明格式有以下兩種形式:例如:wire a,b,c;wire7.0 dta,dtb;wire ,, ;wiremsb:lsb ,, ;3. 整數(shù)類型用于說明在for循環(huán)中用的控制變量等,默認是32位二進制數(shù)的寬度,說明格式為:例如:integer k,cnt;integer ,, ;2. 寄存器型用于說明在過程塊中賦值的端口或變量,其說明格式有以下兩種形式:例如:reg x,y;reg7.0 q1,q2;reg ,, ;regmsb:lsb ,, ;Verilog HDL中變量的數(shù)據(jù)類型Verilog HDL的運算符設有如下定義:wier3:0 A=4b0101,B=4b0011,X;wie
42、r7:0 C=8h00;wire F=0;操作類別運算符及其含義例子運算結果算術運算+(加)-(減)*(乘)/(除)%(求余)X = A + BX = A - BX = A * BX = A / BX = A % BX = 4B1000X = 4B0010X 4B1111X 4B0001X 4B0010邏輯運算!(邏輯非)&(邏輯與)|(邏輯或)C = !(A = B)C = A & 0C = A | 0C = 1C = 1C = 1位運算(位取反)&(與)|(或) (異或)或(同或)X = AX = A & BX = A | BX = A BX = A BX = 4B1010X4B0001X
43、4B0111X = 4B0110C = 4B1001移位運算(右移)C = A 2C = 8B00101000X = 4B 0001并位運算(并位)C = A , B C = 8B 01010011Verilog HDL的運算符操作類別運算符及其含義例子運算結果縮位運算&(與)&(與非)|(或)|(或非)(異或) 或 (同或)F = &AF = &AF = |AF = |AF = AF = AF = 0F = 1F = 1F = 0F = 0F = 1關系運算= (等于)!= (不等于) (大于)= (大于等于) BF = A = BF = A B ? A : BX = 4b0101賦值運算= (
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 西方媒體在政治中的作用試題及答案
- 小組學習軟件設計師考試試題及答案
- 公共政策與社區(qū)參與的互動研究試題及答案
- 深入學習的軟件設計師考試試題及答案
- 網(wǎng)絡設備的選用與配置技巧與試題及答案
- 移動網(wǎng)絡技術試題及答案
- 公共政策評估中的數(shù)據(jù)分析挑戰(zhàn)考點及答案
- 環(huán)境政策的評價與公眾反饋機制試題及答案
- 網(wǎng)絡工程師考試復習資料試題及答案
- 機電工程政策法規(guī)試題及答案
- 五輸穴的臨床運用
- 基于增強現(xiàn)實(AR)體驗式學習模式在小學英語情景教學中的應用
- 幼兒園游戲PPT中職學前教育專業(yè)完整全套教學課件
- 市場調(diào)查與分析考試試題
- 數(shù)據(jù)結構期末試題與答案
- 1噸串聯(lián)中頻爐原理技術與分析
- GB/T 5563-2013橡膠和塑料軟管及軟管組合件靜液壓試驗方法
- 產(chǎn)品質(zhì)量法-產(chǎn)品質(zhì)量法課件
- 變更工程量清單匯總表
- 門護板設計指導書RYSAT012課件
- 實習安全教育(39張)課件
評論
0/150
提交評論