![數(shù)字集成電路設(shè)計工具與使用_第1頁](http://file4.renrendoc.com/view/f9b43a9532e25e397aa93020464eb096/f9b43a9532e25e397aa93020464eb0961.gif)
![數(shù)字集成電路設(shè)計工具與使用_第2頁](http://file4.renrendoc.com/view/f9b43a9532e25e397aa93020464eb096/f9b43a9532e25e397aa93020464eb0962.gif)
![數(shù)字集成電路設(shè)計工具與使用_第3頁](http://file4.renrendoc.com/view/f9b43a9532e25e397aa93020464eb096/f9b43a9532e25e397aa93020464eb0963.gif)
![數(shù)字集成電路設(shè)計工具與使用_第4頁](http://file4.renrendoc.com/view/f9b43a9532e25e397aa93020464eb096/f9b43a9532e25e397aa93020464eb0964.gif)
![數(shù)字集成電路設(shè)計工具與使用_第5頁](http://file4.renrendoc.com/view/f9b43a9532e25e397aa93020464eb096/f9b43a9532e25e397aa93020464eb0965.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
數(shù)字集成電路設(shè)計工具與使用第一頁,共134頁。前端設(shè)計
數(shù)字IC設(shè)計流程第二頁,共134頁。后端設(shè)計第三頁,共134頁。設(shè)計輸入:以電路圖或HDL語言的形式形成電路文件;輸入的文件經(jīng)過編譯后,可以形成對電路邏輯模型的標(biāo)準(zhǔn)描述;邏輯仿真(功能仿真):對如上形成的邏輯描述加入輸入測試信號,檢查輸出信號是否滿足設(shè)計要求;在此沒有考慮任何時間關(guān)系,只是檢測邏輯是否有錯;數(shù)字集成電路的設(shè)計流程第四頁,共134頁。系統(tǒng)分割(設(shè)計綜合):采用特定的設(shè)計方法分解實(shí)現(xiàn)電路模型,得到電路實(shí)際采用的邏輯單元及其相互連接形式;在GA設(shè)計時,電路會分割為2-3輸入的邏輯單元,在FPGA設(shè)計中,分割為4輸入邏輯單元,而采用CPLD設(shè)計時,則分割為更大的邏輯單元。數(shù)字集成電路的設(shè)計流程第五頁,共134頁。前仿真:采用綜合出的電路結(jié)構(gòu),對每個邏輯單元添加上對應(yīng)的時間延遲信息;在此基礎(chǔ)上進(jìn)行仿真,檢測電路是否存在邏輯或時序錯誤;電路的布局,定位與布線:對于通過前仿真的電路系統(tǒng),從全局到局部,進(jìn)行每個單元的定位以及相關(guān)的連線安排;數(shù)字集成電路的設(shè)計流程第六頁,共134頁。電路參數(shù)提?。焊鶕?jù)連線的具體長度和負(fù)載程度,提取每一根連線的電阻/電容參數(shù),得到相應(yīng)的時間延遲信息;后仿真:將提取的連線參數(shù)代入到電路中,在此基礎(chǔ)上進(jìn)行仿真,檢測電路是否存在邏輯或時序錯誤;數(shù)字集成電路的設(shè)計流程第七頁,共134頁。在邏輯設(shè)計階段,針對設(shè)計的輸入編輯、仿真和綜合過程,需要使用必要的軟件工具進(jìn)行支持;這種設(shè)計工具主要可以分為兩類:一類是由PLD的制造商推出的針對特定器件的設(shè)計工具;另一類是由專業(yè)軟件公司推出的針對特定用途的設(shè)計工具。數(shù)字集成電路的設(shè)計工具第八頁,共134頁。由PLD的制造商推出,例如Altera公司的MaxplusII,QuartusII,Xilinx公司的ISE等。這類工具的優(yōu)點(diǎn)是從設(shè)計輸入直到器件下載,設(shè)計的全過程都能在一個工具中實(shí)現(xiàn),使用非常簡單方便;缺點(diǎn)是該類工具以器件綜合為目標(biāo),對于不能實(shí)現(xiàn)直接綜合的電路的行為設(shè)計不能支持。針對特定器件的設(shè)計工具第九頁,共134頁。由專業(yè)的工具設(shè)計者推出,例如Synplicity公司的綜合工具Synplify,
ModelTechnology公司的仿真工具M(jìn)odelSim等。這類工具通常專業(yè)性比較強(qiáng),包容性好,可以最大限度地兼容HDL語言的各種描述,適應(yīng)從抽象到具體的各種設(shè)計方式。缺點(diǎn)是其專用性比較強(qiáng),使用的簡便性不及第一類。針對特定用途的設(shè)計工具第十頁,共134頁。仿真工具M(jìn)odelSim綜合工具Synplify
設(shè)計工具M(jìn)axplusII,Quartus關(guān)于設(shè)計工具的簡單介紹第十一頁,共134頁。電路仿真的要點(diǎn)使用輸入向量對電路模型進(jìn)行測試;仿真失敗表明該模型存在錯誤(不能工作);仿真成功不能證明該模型正確!仿真可以從高級別到低級別分為很多層次,高級別比較抽象,低級別比較詳細(xì)。第十二頁,共134頁。行為仿真(功能仿真)對于行為模型進(jìn)行仿真:根據(jù)輸入的變化或指定的時間,開始一個仿真循環(huán),執(zhí)行所有進(jìn)程;每個進(jìn)程啟動執(zhí)行到其中止為止;模型中的有效信號更新時,會產(chǎn)生一個事件;如果在本仿真循環(huán)中有信號產(chǎn)生了事件,則仿真將重新執(zhí)行一遍;仿真循環(huán)的執(zhí)行時間為delta時間。第十三頁,共134頁。結(jié)構(gòu)仿真(前仿真)對于電路邏輯結(jié)構(gòu)模型進(jìn)行仿真:結(jié)構(gòu)仿真可以根據(jù)使用器件的情況,為不同的元件添加不同的延遲時間,所以能夠在一定程度上反映出電路的時間性能,并分析影響電路速度的關(guān)鍵因素,便于對電路進(jìn)行修改。第十四頁,共134頁。電路仿真(后仿真)對于布局布線后的電路模型進(jìn)行仿真:電路仿真可以根據(jù)器件的布局和連接情況,通過從電路中提取連線物理參數(shù),估算出連線延遲,從而為電路中信號的傳遞附加傳輸延遲,能夠更準(zhǔn)確地反映出電路的時間性能,便于進(jìn)行電路的時序設(shè)計修改。第十五頁,共134頁。數(shù)字電路設(shè)計與Verilog硬件描述HDL(HardwareDescriptionLanguage)語言,是一種用形式化方法來描述數(shù)字電路和系統(tǒng)的語言。。HDL語言既包含一些高層程序設(shè)計語言的結(jié)構(gòu)形式,同時也兼顧描述硬件線路連接的具體構(gòu)件。通過使用結(jié)構(gòu)級或行為級描述可以在不同的抽象層次描述設(shè)計,主要包括三個領(lǐng)域五個抽象層次。
HDL語言是并發(fā)的,即具有在同一時刻執(zhí)行多任務(wù)的能力。
HDL語言有時序的概念。第十六頁,共134頁。什么是硬件描述語言HDL具有特殊結(jié)構(gòu)能夠?qū)τ布壿嬰娐返墓δ苓M(jìn)行描述的一種高級編程語言這種特殊結(jié)構(gòu)能夠:描述電路的連接描述電路的功能在不同抽象級上描述電路描述電路的時序表達(dá)具有并行性HDL主要有兩種:Verilog和VHDLVerilog起源于C語言,因此非常類似于C語言,容易掌握VHDL起源于ADA語言,格式嚴(yán)謹(jǐn),不易學(xué)習(xí)。VHDL出現(xiàn)較晚,但標(biāo)準(zhǔn)化早。IEEE1706-1985標(biāo)準(zhǔn)。第十七頁,共134頁。為什么使用HDL使用HDL描述設(shè)計具有下列優(yōu)點(diǎn):設(shè)計在高層次進(jìn)行,與具體實(shí)現(xiàn)無關(guān)設(shè)計開發(fā)更加容易早在設(shè)計期間就能發(fā)現(xiàn)問題能夠自動的將高級描述映射到具體工藝實(shí)現(xiàn)在具體實(shí)現(xiàn)時才做出某些決定HDL具有更大的靈活性可重用可以選擇工具及生產(chǎn)廠HDL能夠利用先進(jìn)的軟件更快的輸入易于管理第十八頁,共134頁。Verilog的歷史VerilogHDL是在1983年由GDA(GateWayDesignAutomation)公司的PhilMoorby所創(chuàng)。PhiMoorby后來成為Verilog-XL的主要設(shè)計者和Cadence公司的第一個合伙人。在1984~1985年間,Moorby設(shè)計出了第一個Verilog-XL的仿真器。1986年,Moorby提出了用于快速門級仿真的XL算法。1990年,Cadence公司收購了GDA公司1991年,Cadence公司公開發(fā)表Verilog語言,成立了OVI(OpenVerilogInternational)組織來負(fù)責(zé)VerilogHDL語言的發(fā)展。1995年制定了VerilogHDL的IEEE標(biāo)準(zhǔn),即IEEE1364。第十九頁,共134頁。Verilog的用途Verilog的主要應(yīng)用包括:ASIC和FPGA工程師編寫可綜合的RTL代碼高抽象級系統(tǒng)仿真進(jìn)行系統(tǒng)結(jié)構(gòu)開發(fā)測試工程師用于編寫各種層次的測試程序用于ASIC和FPGA單元或更高層次的模塊的模型開發(fā)第二十頁,共134頁。抽象級(LevelsofAbstraction)Verilog既是一種行為描述的語言也是一種結(jié)構(gòu)描述語言。Verilog模型可以是實(shí)際電路的不同級別的抽象。這些抽象的級別包括:系統(tǒng)說明-設(shè)計文檔/算法描述RTL/功能級-Verilog門級/結(jié)構(gòu)級-Verilog版圖/物理級-幾何圖形行為綜合綜合前仿真邏輯綜合綜合后仿真版圖第二十一頁,共134頁。抽象級(LevelsofAbstraction)在抽象級上需要進(jìn)行折衷系統(tǒng)說明-設(shè)計文檔/算術(shù)描述RTL/功能級-Verilog門級/結(jié)構(gòu)級-Verilog版圖/物理級-幾何圖形詳細(xì)程度低高輸入/仿真速度高低第二十二頁,共134頁。抽象級(LevelsofAbstraction)Verilog可以在三種抽象級上進(jìn)行描述行為級用功能塊之間的數(shù)據(jù)流對系統(tǒng)進(jìn)行描述在需要時在函數(shù)塊之間進(jìn)行調(diào)度賦值。RTL級/功能級用功能塊內(nèi)部或功能塊之間的數(shù)據(jù)流和控制信號描述系統(tǒng)基于一個已定義的時鐘的周期來定義系統(tǒng)模型結(jié)構(gòu)級/門級用基本單元(primitive)或低層元件(component)的連接來描述系統(tǒng)以得到更高的精確性,特別是時序方面。在綜合時用特定工藝和低層元件將RTL描述映射到門級網(wǎng)表第二十三頁,共134頁。抽象級(LevelsofAbstraction)設(shè)計工程師在不同的設(shè)計階段采用不同的抽象級首先在行為級描述各功能塊,以降低描述難度,提高仿真速度。在綜合前將各功能模塊進(jìn)行RTL級描述。用于綜合的庫中的大多數(shù)單元采用結(jié)構(gòu)級描述。在本教程中的結(jié)構(gòu)級描述部分將對結(jié)構(gòu)級(門級)描述進(jìn)行更詳細(xì)的說明。Verilog還有一定的晶體管級描述能力及算法級描述能力第二十四頁,共134頁。行為級和RTL級MUX的行為可以描述為:只要信號a或b或sel發(fā)生變化,如果sel為0則選擇a輸出;否則選擇b輸出。modulemuxtwo(out,a,b,sel);inputa,b,sel;outputout;regout;always@(seloraorb)if(!sel)out=a;elseout=b;endmodule這個行為級RTL描述不處理X和Z狀態(tài)輸入,并且沒有延時。在行為級模型中,邏輯功能描述采用高級語言結(jié)構(gòu),如@,while,wait,if,case。Testbench(testfixture)通常采用行為級描述。所有行為級結(jié)構(gòu)在testbench描述中都可以采用。RTL模型中數(shù)據(jù)流都是基于時鐘的。任何時鐘元件在時鐘沿處的行為都要精確描述。RTL級描述是行為級Verilog的子集。第二十五頁,共134頁。僅需一種語言Verilog的一個主要特點(diǎn)是可應(yīng)用于各種抽象級。建模時可采用門級和RTL級混合描述,在開發(fā)testfixture時可以采用行為級描述。第二十六頁,共134頁。結(jié)構(gòu)級描述結(jié)構(gòu)級Verilog適合開發(fā)小規(guī)模元件,如ASIC和FPGA的單元Verilog內(nèi)部帶有描述基本邏輯功能的基本單元(primitive),如and門。用戶可以定義自己的基本單元UDP(UserDefinedPrivitives)綜合產(chǎn)生的結(jié)果網(wǎng)表通常是結(jié)構(gòu)級的。用戶可以用結(jié)構(gòu)級描述粘接(glue)邏輯。下面是MUX的結(jié)構(gòu)級描述,采用Verilog基本單元(門)描述。描述中含有傳輸延時。moduletwomux(out,a,b,sl);inputa,b,sl;outputout;notu1(nsl,sl);and#1u2(sela,a,nsl);and#1u3(selb,b,sl);or#2u4(out,sela,selb);endmodule綜合不支持!第二十七頁,共134頁。VerilogHDL建模概述數(shù)字電路=線+器件線:器件管教之間的物理連接器件:組合邏輯(如與或非門等)和時序邏輯器件(如寄存器、鎖存器、RAM等)VerilogHDL建模:使用HDL語言對數(shù)字電路的兩種基本要素的特性及相互之間的關(guān)系進(jìn)行描述。2.1建模第二十八頁,共134頁。VerilogHDL建模概述是Verilog的基本描述單元,用于描述某個設(shè)計的功能或結(jié)構(gòu)及其與其他模塊通信的外部端口概念上可等同一個器件,如通用器件(與門、三態(tài)門等)或通用宏單元(計數(shù)器、ALU、CPU)等。模塊可被另一個模塊調(diào)用一個電路設(shè)計可由多個模塊組合而成。2.2模塊(module)第二十九頁,共134頁。VerilogHDL建模概述例1.加法器2.2模塊(module)簡單實(shí)例第三十頁,共134頁。VerilogHDL建模概述例2.比較器2.2模塊(module)簡單實(shí)例第三十一頁,共134頁。VerilogHDL建模概述例3.三態(tài)門驅(qū)動器2.2模塊(module)簡單實(shí)例第三十二頁,共134頁。VerilogHDL建模概述模塊內(nèi)容位于module和endmodule兩個語句之間模塊包括接口描述部分和邏輯功能描述部分??膳c實(shí)際器件相類比每個模塊要進(jìn)行端口定義,并說明輸入、輸出口,然后對模塊的功能進(jìn)行邏輯描述(測試模塊例外)書寫格式自由,一行可以寫幾個語句,一個語句可以分幾行寫。除endmodule與局外,每個語句后面需要有分號表示該語句結(jié)束2.3模塊的結(jié)構(gòu)第三十三頁,共134頁。VerilogHDL建模概述2.4模塊語法第三十四頁,共134頁。VerilogHDL建模概述一個模塊用一個文件模塊名與文件名要同名一行一句語句信號方向按輸入、輸出、雙向順序描述盡量采用參數(shù)化,提高設(shè)計的重用2.5書寫語法建議第三十五頁,共134頁。VerilogHDL建模概述信號在電路中傳輸會有傳播延時,如線延時、器件延時等時延就是對延時特性的HDL描述所有時延都必須根據(jù)時間單位進(jìn)行定義,定義方式為在文件頭添加如下語句:是VerilogHDL提供的預(yù)編譯處理命令,1ns表示時間單位是1ns,100ps表示時間精度是100ps。2.6時延第三十六頁,共134頁。VerilogHDL建模概述表示B信號在2個時間單位后得到A信號的值。2.6時延時延舉例第三十七頁,共134頁。VerilogHDL建模概述結(jié)構(gòu)化描述方式數(shù)據(jù)流描述方式行為描述方式2.7三種建模方式第三十八頁,共134頁。VerilogHDL建模概述通過對電路結(jié)構(gòu)的描述來建模,即通過對器件的調(diào)用(HDL概念稱為“例化”),并使用線來連接各器件的描述方式器件包括:Verilog的內(nèi)置門(如與門and,異或門xor等),也可以是用戶的一個設(shè)計反映了一個設(shè)計的層次結(jié)構(gòu)2.7三種建模方式結(jié)構(gòu)化描述方式第三十九頁,共134頁。VerilogHDL建模概述2.7三種建模方式結(jié)構(gòu)化描述方式例1:一位全加器第四十頁,共134頁。VerilogHDL建模概述1.兩個異或門、兩個與門、一個或門2.S1、T1、T2是門與門之間的連線3.純結(jié)構(gòu)的建模方式4.Xor、and、or為Verilog內(nèi)置的門器件Xor表明調(diào)用一個內(nèi)置的異或門,器件名稱xor,代碼實(shí)例化名X1;括號內(nèi)的S1,A,B表明該器件管腳的實(shí)際連接線的名稱,其中A、B是輸入,S1是輸出。其他相同一位全加器代碼第四十一頁,共134頁。VerilogHDL建模概述結(jié)構(gòu)化描述方式例2:兩位全加器兩位全加器結(jié)構(gòu)示意框圖第四十二頁,共134頁。VerilogHDL建模概述兩位全加器代碼第四十三頁,共134頁。VerilogHDL建模概述通過對數(shù)據(jù)流在設(shè)計中的具體行為的描述來建模使用連續(xù)賦值語句。借助于Verilog提供的一些運(yùn)算符,如按位邏輯運(yùn)算,邏輯與(&),邏輯或(|)等2.7三種建模方式數(shù)據(jù)流描述方式第四十四頁,共134頁。VerilogHDL建模概述2.7三種建模方式數(shù)據(jù)流描述方式例1:一位全加器第四十五頁,共134頁。VerilogHDL建模概述一位全加器代碼注意:各assign語句之間是并行執(zhí)行的,即各語句的執(zhí)行與語句之間的順序無關(guān)。如上,當(dāng)A有變化時,S1、T2將同時變化,S1的變化又會造成Sum和T1的同時變化。第四十六頁,共134頁。VerilogHDL建模概述采用對信號行為級的描述(不是結(jié)構(gòu)級的描述)的方法來建模一般采用initial塊語句或always塊語句通常采用行為級的運(yùn)算符如加法(+),減法(-)運(yùn)算符等2.7三種建模方式行為描述方式第四十七頁,共134頁。VerilogHDL建模概述一位全加器行為建模注意:只有寄存器類型的信號才可以在always和initial語句中進(jìn)行賦值,類型定義通過reg語句實(shí)現(xiàn)Always語句一直重復(fù)執(zhí)行,由敏感表中的變量觸發(fā)在begin和end之間的語句順序執(zhí)行,屬于串行語句行為描述方式例1第四十八頁,共134頁。VerilogHDL建模概述一位全加器行為建模采用更高級(更趨于行為級)的描述方式,即直接采用“+”來描述加法{Cout,Sun}表述將兩個信號拼接成一個寬度更長的信號。行為描述方式例2第四十九頁,共134頁。VerilogHDL建模概述實(shí)際設(shè)計中往往是多種設(shè)計模式的混合。一般,對頂層設(shè)計采用結(jié)構(gòu)描述方式;對底層模塊,可采用數(shù)據(jù)流、行為級或兩者的結(jié)合如上面的兩位全加器,對頂層模塊(Four_bit_FA)采用結(jié)構(gòu)描述方式進(jìn)行“例化”,對底層模塊(FA)可采用結(jié)構(gòu)描述、數(shù)據(jù)流描述或行為描述。2.7三種建模方式混合設(shè)計描述第五十頁,共134頁。VerilogHDL基本語法標(biāo)識符注釋格式數(shù)字值集合數(shù)據(jù)類型運(yùn)算符和表達(dá)式條件語句Case語句第五十一頁,共134頁。1、標(biāo)識符定義:標(biāo)識符(identifier)用于定義模塊名、端口名、信號等??梢允且唤M字母、數(shù)字、$符號和_(下劃線)符號的組合,但標(biāo)識符的第一個字符必須是字母或者下劃線。另外,標(biāo)識符區(qū)分大小寫。例:CountCOUNT//與Count不同R56_68FIVE$關(guān)鍵字,Verilog中的保留字。注意:只有小寫的關(guān)鍵字才是保留字第五十二頁,共134頁。書寫規(guī)范建議用有意義的有效的名字,如Sum、CPU_addr等用下劃線區(qū)分詞采用一些前綴或后綴,
時鐘采用Clk前綴:Clk_50,Clk_CPU
低電平采用_n后綴:Enable_n統(tǒng)一一定的縮寫,如全局復(fù)位信號Rst同一信號在不同層次保持一致性,如同一時鐘信號必須在各模塊中保持一致自定義的標(biāo)識符不能與保留字同名參數(shù)采用大寫,如SIZE第五十三頁,共134頁。2、注釋Verilog中有兩種注釋的方式,一種是一“/*”符號開始,以“*/”符號結(jié)束,在兩個符號之間的語句都是注釋語句,因此可以擴(kuò)展到多行。如:以上n各語句都是注釋語句另一種是以“//”開頭的語句,它表示以//開始到本行的結(jié)束都屬于注釋語句第五十四頁,共134頁。3、格式VerilogHDL是區(qū)分大小寫的,即大小寫不同的標(biāo)識符是不同的Verilog書寫格式自由,一條語句可多行書寫;一行可寫多個語句空白(新行、制表符、空格)沒有特殊意義如與是一樣的一個語句一行采用空四格的TAB鍵進(jìn)行縮進(jìn)第五十五頁,共134頁。4、數(shù)字值集合值的集合常量(整型、實(shí)型、字符型)變量第五十六頁,共134頁。4.1值集合四種基本的值類型0:邏輯0或“假”1:邏輯1或“真”X:未知值Z:高阻四種值得解釋內(nèi)置于語言中與門的輸入或表達(dá)式中的“z”的值通常解釋為“x”X值與z值不區(qū)分大小寫,及0x1z和0X1Z相同第五十七頁,共134頁。4.2常量整型、實(shí)型、字符串型下劃線符號“_”可隨意用在整數(shù)或?qū)崝?shù)中,用來提高易讀性。注:下劃線不能作為首字符。整型書寫格式:簡單的十進(jìn)制數(shù)格式;基數(shù)格式字符串型:雙引號內(nèi)的字符系列。第五十八頁,共134頁。4.2.1整型-簡單的十進(jìn)制格式帶有一個可選的“+”或“-”操作符的數(shù)字序列例如:32十進(jìn)制數(shù)32-15十進(jìn)制數(shù)-15第五十九頁,共134頁。4.2.1整型-基數(shù)表示法(一)格式:[size]’basevalueSize定義以位計的常量的位長;base為o或O(表示八進(jìn)制),b或B(表示二進(jìn)制),d或D(表示十進(jìn)制),h或H(表示十六進(jìn)制)之一;value是基于base的值的數(shù)字序列。值x和z以及十六進(jìn)制中的a到f不區(qū)分大小寫第六十頁,共134頁。4.2.1整型-基數(shù)表示法(二)合法例子:非法例子:第六十一頁,共134頁。4.2.1整型-基數(shù)表示法(三)注意:x(或z)在十六進(jìn)制中代表4位x(或z),在八進(jìn)制中代表3位x(或z),在二進(jìn)制中代表1位x(或z)。整型數(shù)的長度定義是可選的,如沒有定義長度,數(shù)的長度為相應(yīng)值中定義的位數(shù),如:如果定義的長度比常量制定的長度長,通常在左邊填0補(bǔ)位。但是如果數(shù)最左邊一位為“x”或“z”,就相應(yīng)地用x或z在左邊補(bǔ)位。如:如果長度定義的要小,最左邊的位相應(yīng)地被截斷。如:第六十二頁,共134頁。4.2.2字符串型雙引號內(nèi)的字符序列。字符串不能分成多行書寫。例:整數(shù)型常量是可以綜合的,而實(shí)數(shù)型和字符串型常量都是不可綜合的第六十三頁,共134頁。5、數(shù)據(jù)類型線網(wǎng)類型(nettype)寄存器類型(regtype)第六十四頁,共134頁。5.1數(shù)據(jù)類型-線網(wǎng)類型(nettype)常用wire定義用于對結(jié)構(gòu)化器件之間的物理連線建模代表物理連接線,不存儲邏輯值,必須由器件驅(qū)動,通常由Assign進(jìn)行賦值,如:當(dāng)一個wire類型的信號沒有被驅(qū)動時,缺省值為z(高阻)信號非有定義數(shù)據(jù)類型時,缺省為wire類型語法:第六十五頁,共134頁。5.2數(shù)據(jù)類型-寄存器類型(regtype)Reg是最常用的寄存器類型,用于對存儲單元的描述,如D觸發(fā)器,ROM。在某種觸發(fā)機(jī)制下分配一個值,在分配下一個值之前保留原值Reg類型的變量,不一定是存儲單元,如在always語句中進(jìn)行描述的必須用reg類型的變量。語法:例:第六十六頁,共134頁。5.2數(shù)據(jù)類型-寄存器類型(regtype)建模舉例:用寄存器類型構(gòu)建兩位的D觸發(fā)器:用寄存器數(shù)組類型來建立存儲器的模型,如對2個8位的RAM建模如下:存儲單元必須一個一個地賦值第六十七頁,共134頁。6、運(yùn)算符關(guān)系運(yùn)算符算術(shù)運(yùn)算符邏輯運(yùn)算符按位邏輯運(yùn)算符條件運(yùn)算符連接運(yùn)算符移位運(yùn)算符第六十八頁,共134頁。6.1運(yùn)算符-算術(shù)運(yùn)算符常用算術(shù)運(yùn)算符:加法(二元運(yùn)算符):“+”減法(二元運(yùn)算符):“-”乘法(二元運(yùn)算符):“*”除法(二元運(yùn)算符):“/”求余(二元運(yùn)算符):“%”第六十九頁,共134頁。6.2運(yùn)算符-關(guān)系運(yùn)算符(一)包括:> 大于< 小于>= 不小于<= 不大于== 等于=== 全等!= 不等!== 不全等結(jié)果為True(1)或False(0)。如果操作數(shù)中有一位為x或z,那么結(jié)果為x第七十頁,共134頁。6.2運(yùn)算符-關(guān)系運(yùn)算符(二)例:如果操作數(shù)長度不同,長度較短的操作數(shù)在左方填0補(bǔ)齊。例:邏輯相等與不等的比較中,只要一個操作數(shù)含有x或z,比較結(jié)果為未知(x)。如:第七十一頁,共134頁。6.3運(yùn)算符-邏輯運(yùn)算符(一)包括:&& 邏輯與|| 邏輯或!
邏輯非語法:(表達(dá)式1)邏輯運(yùn)算符(表達(dá)式2)運(yùn)算結(jié)果為0或1,例:第七十二頁,共134頁。6.3運(yùn)算符-邏輯運(yùn)算符(二)邏輯與(&&)的真值表:邏輯或(||)的真值表:第七十三頁,共134頁。6.4運(yùn)算符-按位邏輯運(yùn)算符(一)包括:~ 一元非,相當(dāng)于非門運(yùn)算& 二元與,相當(dāng)于與門運(yùn)算| 二元或,相當(dāng)于或門運(yùn)算^ 二元異或,相當(dāng)于異或門運(yùn)算~^,^~ 二元異或非,即同或,相當(dāng)于同或門運(yùn)算
在輸入操作數(shù)的對應(yīng)位上按位操作,產(chǎn)生向量結(jié)果。第七十四頁,共134頁。6.4運(yùn)算符-按位邏輯運(yùn)算符(二)按位邏輯運(yùn)算符真值表:第七十五頁,共134頁。6.2運(yùn)算符-按位邏輯運(yùn)算符(三)例:如果操作數(shù)長度不相等,長度較小的操作數(shù)在最左端填0補(bǔ)位。例如:第七十六頁,共134頁。6.5運(yùn)算符-條件運(yùn)算符根據(jù)條件表達(dá)式的值選擇表達(dá)式語法:cond_expr?expr1:expr2;如果cond_expr為真(1),選項expr1,如果cond_expr為假(0),選擇expr2.如果cond_expr為x或z,結(jié)果是按以下邏輯expr1和expr2按位操作的值:0與0得1,1與1得1,其余情況為x例:第七十七頁,共134頁。6.6運(yùn)算符-連接運(yùn)算符將小表達(dá)式合并形成大表達(dá)式語法:{expr1,expr2,…,exprN}例:第七十八頁,共134頁。6.7運(yùn)算符:移位運(yùn)算符<<左移位運(yùn)算符>>右移位運(yùn)算符語法:a>>n或a<<na代表要進(jìn)行移位的操作數(shù),n代表要移幾位。邏輯移位,移出的位用0填補(bǔ)例1:若A=5’b11001,則:A>>2的值為5’b00110A<<2的值為5’b00100第七十九頁,共134頁。7、If_else(條件)語句用來判定所給定的條件是否滿足,根據(jù)判定的結(jié)果(真或假)決定執(zhí)行給出的兩種操作之一。三種形式:第八十頁,共134頁。If_else語句的三種形式第八十一頁,共134頁。說明:1.if語句后面都有表達(dá)式,一般為邏輯表達(dá)式或關(guān)系表達(dá)式。0、x、z按“假”處理,1按“真”處理。2.注意分號的使用,if、else合起來是一條語句,else不能單獨(dú)使用3.if、else后面如果有多個操作語句,必須用begin和end關(guān)鍵字包含起來組成為一個復(fù)合語句,例第八十二頁,共134頁。說明:4.允許一定形式的表達(dá)式簡寫,例如:5.if語句的嵌套注意if和else的配對關(guān)系,else總是與它上面最近的if配對??梢杂胋egin、end塊語句來確定配對關(guān)系。例:第八十三頁,共134頁。例:使用begin和end塊語句來確定if和else的配對關(guān)系第八十四頁,共134頁。8、case語句多分支選擇語句三種形式:1.case(表達(dá)式)<case分支項>endcase2.casez(表達(dá)式)<case分支項>endcase3.casex(表達(dá)式)<case分支項>endcase語法:第八十五頁,共134頁。說明:1.case括號中的表達(dá)式稱為控制表達(dá)式,分支項中的表達(dá)式稱為分支表達(dá)式。2.當(dāng)控制表達(dá)式的值與分支表達(dá)式的值項相等時,就執(zhí)行分支表達(dá)式后面的語句;如果所有的分支表達(dá)式的值都沒有與控制表達(dá)式的值相匹配,就執(zhí)行default后面的語句3.default項可有可無,一個case語句只能有一個default項4.每個分支表達(dá)式的值必須互不相同,否則會出現(xiàn)矛盾。5.所有表達(dá)式值的位寬必須相等。6.case、casez、casex的區(qū)別,case為全等比較,casez對表達(dá)式中出現(xiàn)z的相應(yīng)位不予比較,casex對表達(dá)式中出現(xiàn)x、z的相應(yīng)位均不予比較,見真值表第八十六頁,共134頁。三種建模方式詳解結(jié)構(gòu)建模數(shù)據(jù)流建模行為建模第八十七頁,共134頁。1、結(jié)構(gòu)建模(一)描述語句主要是實(shí)例化語句實(shí)例化的對象主要是PLD廠家提供的宏單元和設(shè)計者已有的設(shè)計第八十八頁,共134頁。結(jié)構(gòu)建模(二)——實(shí)例化語句語法:module_nameinstance_name(port_associations);端口關(guān)聯(lián)可通過位置或名稱關(guān)聯(lián),但兩者不能混用通過位置關(guān)聯(lián)(port_expr1,port_expr2,…,port_exprn);通過名稱關(guān)聯(lián)(.PortName(portexpr1),.PortName(port_expr2),….PortName(port_exprn));第八十九頁,共134頁。結(jié)構(gòu)建模(二)——實(shí)例化語句例[1]:....moduleand(C,A,B);inputA,B;outputC;...andA1(T3,A,B);//實(shí)例化時采用位置關(guān)聯(lián),T3對應(yīng)輸出端口C,A對應(yīng)A,B對應(yīng)B。andA2(//實(shí)例化時采用名字關(guān)聯(lián),.C是and器件的端口,其與信號T3相連.C(T3),.A(A),.B(B));第九十頁,共134頁。結(jié)構(gòu)建模(二)——實(shí)例化語句port_expr可以是以下的任何類型:1)標(biāo)識符(reg或net)如.C(T3),T3為wire型標(biāo)識符。2)位選擇,如.C(D[0]),C端口接到D信號的第0bit位。3)部分選擇,如.Bus(Din[5:4])。4)上述類型的合并,如.Addr({A1,A2[1:0]}。5)表達(dá)式(只適用于輸入端口),如.A(wireZire=0)。建議:在例化的端口映射中請采用名字關(guān)聯(lián),這樣,當(dāng)被調(diào)用的模塊管腳改變時不易出錯。第九十一頁,共134頁。結(jié)構(gòu)建模(二)——實(shí)例化語句端口懸空的處理:在我們的實(shí)例化中,可能有些管腳沒用到,可在映射中采用空白處理,如:DFFd1(.Q(QS),.Qbar(),.Data(D),.Preset(),//該管腳懸空.Clock(CK));//名稱對應(yīng)方式。對輸入管腳懸空的,則該管腳輸入為高阻Z,輸出管腳被懸空的,該輸出管腳廢棄不用。第九十二頁,共134頁。當(dāng)端口和局部端口表達(dá)式的長度不同時,端口通過無符號數(shù)的右對齊或截斷方式進(jìn)行匹配例如:moduleChild(Pba,Ppy);input[5:0]Pba;output[2:0]Ppy;...endmodulemoduleTop;wire[1:2]Bdl;wire[2:6]Mpr;ChildC1(Bdl,Mpr);endmodule第九十三頁,共134頁。在對Child模塊的實(shí)例中,Bdl[2]連接到Pba[0],Bdl[1]連接到Pba[1],余下的輸入端口Pba[5]、Pba[4]和Pba[3]懸空,因此為高阻態(tài)z。與之相似,Mpr[6]連接到Ppy[0],Mpr[5]連接到Ppy[1],Mpr[4]連接到Ppy[2]。參見下圖:第九十四頁,共134頁。結(jié)構(gòu)化建模具體實(shí)例
對一個數(shù)字系統(tǒng)的設(shè)計,我們采用的是自頂向下的設(shè)計方式??砂严到y(tǒng)劃分成幾個功能模塊,每個功能模塊再劃分成下一層的子模塊。每個模塊的設(shè)計對應(yīng)一個module,一個module設(shè)計成一個verilogHDL程序文件。因此,對一個系統(tǒng)的頂層模塊,我們采用結(jié)構(gòu)化的設(shè)計,即頂層模塊分別調(diào)用了各個功能模塊。下面以一個實(shí)例(一個頻率計數(shù)器系統(tǒng))說明如何用HDL進(jìn)行系統(tǒng)設(shè)計。在該系統(tǒng)中,我們劃分成如下三個部分:2輸入與門模塊,LED顯示模塊,4位計數(shù)器模塊。系統(tǒng)的層次描述如下:第九十五頁,共134頁。頂層模塊CNT_BCD,文件名CNT_BCD.v,該模塊調(diào)用了低層模塊AND2、CNT_4b和HEX2LED。第九十六頁,共134頁。第九十七頁,共134頁。第九十八頁,共134頁。2、數(shù)據(jù)流建模(一)主要描述方式為持續(xù)性賦值語句第九十九頁,共134頁。數(shù)據(jù)流建模(二)——持續(xù)性賦值語句也稱連續(xù)賦值語句(continuousassignment)對線網(wǎng)類型變量賦值語法:assignnet_type=expression;主要用于組合邏輯的建模執(zhí)行過程:只要右邊表達(dá)式任一個變量有變化,表達(dá)式立即被計算,計算的結(jié)果立即賦給左邊信號為并行執(zhí)行語句,與書寫順序無關(guān)第一百頁,共134頁。數(shù)據(jù)流建模(二)——持續(xù)性賦值語句舉例:第一百零一頁,共134頁。例:2選1多路選擇器第一百零二頁,共134頁。阻塞(blocking)賦值方式賦值符號為“=”,如:b=a;語句結(jié)束時立即完成賦值操作,即b的值在該條件語句結(jié)束后立即改變同一個塊語句中,如果有多個阻塞賦值語句,那么前面的賦值操作沒完成之前,后面的語句就不能被執(zhí)行,仿佛被阻塞(blocking)了一樣。第一百零三頁,共134頁。阻塞性過程賦值:在其后所有語句執(zhí)行前執(zhí)行,即在下一語句執(zhí)行前該賦值語句完成執(zhí)行如:always@(AorBorCin)Begin:CARRY_OUTRegT1,T2,T3T1=A&BT2=B&CinT3=A&CinCout=(T1|T2)|T3end第一百零四頁,共134頁。使用內(nèi)部延時控制的阻塞性過程賦值語句如:initialbeginClr=#50//在0時刻執(zhí)行,5個時間單位后被賦值Clr=#41//4個時間單位后被賦值為1Clr=#100//10個時間單位后被賦值為0end第一百零五頁,共134頁。非阻塞(non-blocking)賦值方式賦值符號為“<=”,如:b<=a;非阻塞賦值在整個過程塊結(jié)束時才完成賦值操作,即b的值并不是立即就改變的第一百零六頁,共134頁。非阻塞性過程賦值中,對目標(biāo)的賦值是非阻塞的,即為時間并行的,所有的賦值均在同一時刻發(fā)生如:initialbeginClr<=#51//在第5個時間單位被賦值為1Clr<=#40//在第4個時間單位被賦值為0Clr<=#100//在第10個時間單位被賦值為0end第一百零七頁,共134頁。賦值語句—阻塞賦值與非阻塞賦值例1:非阻塞賦值例2:阻塞賦值第一百零八頁,共134頁。賦值語句—阻塞賦值與非阻塞賦值例1仿真結(jié)果例2仿真結(jié)果第一百零九頁,共134頁。賦值語句—阻塞賦值與非阻塞賦值例1綜合結(jié)果例2綜合結(jié)果第一百一十頁,共134頁。賦值語句—阻塞賦值與非阻塞賦值六點(diǎn)建議:時序電路建模時,用非阻塞賦值鎖存器電路建模時,用非阻塞賦值用always塊建立組合邏輯模型時,用阻塞賦值在同一個always塊中建立時序和組合邏輯電路時,用非阻塞賦值在同一個always塊中不要既用阻塞賦值又用非阻塞賦值不要在一個以上的always塊中為同一變量賦值第一百一十一頁,共134頁。3、行為建模通過對設(shè)計的行為的描述來實(shí)現(xiàn)對設(shè)計建模一般采用過程語句(initial語句和always語句)第一百一十二頁,共134頁。行為建模——initial語句語法1:initial
語句1;語法2:只執(zhí)行一次常用于產(chǎn)生激勵信號或寄存器變量的初始化仿真語句,不能被綜合第一百一十三頁,共134頁。行為建?!猧nitial語句例:用initial語句產(chǎn)生激勵信號第一百一十四頁,共134頁。行為建?!猘lways語句語法1:always
時序控制語句1;語法2:always語句不斷重復(fù)執(zhí)行,即一直檢測時序控制條件,一旦滿足,其后的語句被執(zhí)行一次第一百一十五頁,共134頁。行為建模——always語句例:時序控制通常為敏感信號表達(dá)式,當(dāng)表達(dá)式中變量的值改變時,其后的語句被執(zhí)行一次,多個表達(dá)式之間用“or”連接,此時的語法為:敏感信號一般為兩種類型:邊沿敏感型和電平敏感型,兩者一般不要在一個always語句中同時使用第一百一十六頁,共134頁。行為建?!猘lways語句邊沿觸發(fā)的always常常描述時序行為,綜合后生成的電路為寄存器加門級組合邏輯電平觸發(fā)的always常常描述組合邏輯行為,綜合后生成的電路為門級組合邏輯或帶鎖存器的組合邏輯例:第一百一十七頁,共134頁。行為建模—posedge和negedge關(guān)鍵字對時序電路的建模(時序電路由時鐘邊沿
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育創(chuàng)新與家教的結(jié)合如何引導(dǎo)孩子在逆境中成長
- 科技創(chuàng)新企業(yè)如何構(gòu)建高效的營銷團(tuán)隊
- 《少年閏土》教學(xué)設(shè)計與反思
- 2025年租賃合同提前解除市場影響
- 二級建造師合作合同樣本
- 互助市場拓展合作合同書
- 二手房屋購買合同誠意金約定
- 個人質(zhì)押與抵押合同
- XX公司員工培訓(xùn)合同協(xié)議
- 產(chǎn)品設(shè)計與研發(fā)合作合同范例
- 2024年泰州職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年參考題庫含答案解析
- 樓梯 欄桿 欄板(一)22J403-1
- 學(xué)生綜合素質(zhì)評定與職業(yè)規(guī)劃的關(guān)聯(lián)性分析
- 特殊家長課后溝通技巧培訓(xùn)
- 【MOOC】數(shù)字?jǐn)z影技術(shù)與藝術(shù)-西南石油大學(xué) 中國大學(xué)慕課MOOC答案
- 心內(nèi)科心衰一病一品護(hù)理成果匯報
- 2025檢驗(yàn)檢測中心年度工作總結(jié)及工作計劃
- 2024年總經(jīng)理助理年終工作總結(jié)(3篇)
- B區(qū)地下室碳纖維加固施工方案
- PEP人教版小學(xué)英語六年級下冊單詞表(含音標(biāo))
- 3人-機(jī)-環(huán)-管理本質(zhì)安全化措施課件
評論
0/150
提交評論