版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
VerilogHDL設計方法簡介算法實現(xiàn)用于數(shù)字信號傳輸中所必需的濾波、變換、加密、解密、編碼、解碼、糾檢錯、壓縮、解壓縮等操作。硬線邏輯由與門、或門、非門、觸發(fā)器、多路器等基本邏輯部件造成的邏輯系統(tǒng)。從算法設計到硬線邏輯的實現(xiàn)2020/12/101VerilogHDL設計方法簡介算法實現(xiàn)2020/12/1傳統(tǒng)處理器的問題算法問題研究并行快速算法電路實現(xiàn)問題設計并研制具有并行結構的數(shù)字和計算邏輯結構。電路實現(xiàn)的兩個方向:
FPGA專用集成電路VerilogHDL建模、仿真、綜合和全面驗證。2020/12/102傳統(tǒng)處理器的問題算法問題2020/12/102什么是復雜的數(shù)字邏輯系統(tǒng)?嵌入式微處理機系統(tǒng)數(shù)字信號處理系統(tǒng)高速并行計算邏輯高速通信協(xié)議電路高速編碼/解碼、加密/解密電路復雜的多功能智能接口門邏輯總數(shù)超過幾萬門達到幾百甚至達幾千萬門的數(shù)字系統(tǒng)2020/12/103什么是復雜的數(shù)字邏輯系統(tǒng)?嵌入式微處理機系統(tǒng)2020/12/有哪幾種硬件描述語言?
各有什么特點?VerilogHDL較多的第三方工具的支持語法結構比VHDL簡單學習起來比VHDL容易仿真工具比較好使測試激勵模塊容易編寫2020/12/104有哪幾種硬件描述語言?
各有什么特點?VerilogHDLVerilogHDL的建模方式即:模塊的描述方式:行為級建模模塊內(nèi)部只包括過程塊和連續(xù)賦值語句,而不包括實例調(diào)用語句和基本元件實例調(diào)用語句。RTL級屬于行為級結構級建模模塊內(nèi)部只包括實例調(diào)用語句。包括門級和開關級行為級與結構級混合建模兩者兼而有之2020/12/105VerilogHDL的建模方式即:模塊的描述方式:202VerilogHDL的抽象級別語言本身提供了各種層次抽象的表述,可以用詳細程度有很大差別的的多層次模塊組合來描述一個電路系統(tǒng)。行為級:技術指標和算法的Verilog描述RTL級:邏輯功能的Verilog描述門級:邏輯結構的Verilog描述開關級:具體的晶體管物理器件的描述2020/12/106VerilogHDL的抽象級別語言本身提供了各種層次抽象VerilogHDL的抽象級別行為級:有關行為和技術指標模塊,容易理解RTL級:有關邏輯執(zhí)行步驟的模塊,較難理解門級:有關邏輯部件互相連接的模塊,很難理解開關級:有關物理形狀和布局參數(shù)的模塊,非常難理解2020/12/107VerilogHDL的抽象級別行為級:有關行為和技術指標抽象級別和綜合與仿真的關系行為仿真:行為的驗證和驗證模塊分割的合理性前仿真:即RTL級仿真,檢查有關模塊邏輯執(zhí)行步驟是否正確。邏輯綜合:把RTL級模塊轉換成門級。后仿真:用門級模型做驗證,檢查門的互連邏輯其功能是否正確。布局布線:在門級模型的基礎上加上了布線延時布局布線后仿真:與真實的電路最接近的驗證。2020/12/108抽象級別和綜合與仿真的關系行為仿真:行為的驗證和驗證模塊分割Verilog程序結構一個完整的電路系統(tǒng)由若干模塊構成一個模塊可由若干子模塊構成模塊——類比C語言函數(shù)是verilog的基本單位描述么個功能或結構,以及與其他模塊的通信接口一個模塊是相對獨立的功能體,一般通過高層模塊調(diào)用其他模塊的實例構成系統(tǒng)模塊是并行運行的Module模塊名(端口列表);endmodule端口定義:Input輸入端口Output輸出端口Inout輸入/輸出端口數(shù)據(jù)類型說明:RegWireparameter邏輯功能定義:AssignAlwaysFunctionTask……2020/12/109Verilog程序結構一個完整的電路系統(tǒng)由若干模塊構成ModVerilog程序結構modulerw1(a,b,out1,out2);inputa,b;outputout1,out2;regout1;wireout2;assignout2=a;always@(b)out1<=~b;endmodule2020/12/1010Verilog程序結構modulerw1(a,b,verilogHDL語法要素語言要素注釋、間隔符、標識符、關鍵字、運算符數(shù)據(jù)類型名字空間表達式模塊結構級行為級代碼風格2020/12/1011verilogHDL語法要素語言要素2020/12/1011verilogHDL數(shù)據(jù)類型數(shù)據(jù)值0、1、x、z數(shù)據(jù)類型網(wǎng)絡(wire…)變量(reg…)只有reg和integer可綜合reg只能在initial或always內(nèi)被賦值Verilog中將reg視為無符號數(shù),而integer視為有符號數(shù)。因此,進行有符號操作時使用integer,使用無符號操作時使用reg。
參數(shù)parameter向量指定了長度的wire或reg稱為矢量(否則為標量)多維向量:wire型(結構化描述);reg型(行為化描述)存儲器:reg型向量向量的可訪問性2020/12/1012verilogHDL數(shù)據(jù)類型數(shù)據(jù)值2020/12/1012Verilog模塊中的信號只有兩種主要的信號類型:-寄存器類型:reg
在always塊中被賦值的信號,往往代表觸發(fā)器,但不一定是觸發(fā)器。-連線(網(wǎng)絡)類型:wire用assign關鍵詞指定的組合邏輯的信號或連線寄存器(reg)類型不一定是觸發(fā)器。它只是在always塊中賦值的信號。2020/12/1013Verilog模塊中的信號只有兩種主要的信號類型:2020/Verilog中reg與wire的不同點用寄存器(reg)類型變量生成組合邏輯舉例:modulerw1(a,b,out1,out2);inputa,b;outputout1,out2;regout1;wireout2;assignout2=a;always@(b)out1<=~b;endmoduleaout2BUFFbINVout12020/12/1014Verilog中reg與wire的不同點用寄存器(reg)Verilog中reg與wire的不同點用寄存器(reg)類型變量生成觸發(fā)器的例子:modulerw2(clk,d,out1,out2);inputclk,d;outputout1,out2;regout1;wireout2;assignout2=d&~out1;always@(posedgeclk)beginout1<=d;endendmoduledout2AND2i1clkout1DQDFF2020/12/1015Verilog中reg與wire的不同點用寄存器(regverilogHDL名字空間2020/12/1016verilogHDL名字空間2020/12/1016verilogHDL語言表達式操作符算術、關系、相等關系、邏輯、按位、歸約、移位、條件、連接、復制延遲表達式表達式位寬2020/12/1017verilogHDL語言表達式操作符2020/12/1017VerilogHDL模塊的結構Verilog模塊的結構由在module和endmodule關鍵詞之間的四個主要部分組成:-端口信息:moduleblock1(a,b,c,d);-輸入/輸出說明:inputa,b,c;outputd;-內(nèi)部信號:wirex;-功能定義:assignd=a|x;assignx=(b&~c); and#1u3(selb,b,sl);endmodule
2020/12/1018VerilogHDL模塊的結構Verilog模塊的結構由VerilogHDL模塊中的邏輯表示在Verilog模塊中有三種方法可以生成邏輯電路:-用assign語句:
assigncs=(a0&~a1&~a2);-用元件的實例調(diào)用:and2and_inst(q,a,b);-用always塊:always@(posedgeclkorposedgeen)beginif(clr)q<=0;elseif(en)q<=d;end2020/12/1019VerilogHDL模塊中的邏輯表示在Verilog模塊并行和順序邏輯關系的表示如在模塊中邏輯功能由下面三個語句塊組成:assigncs=(a0&~a1&~a2);//-----1and2and_inst(qout,a,b);//-----2always@(posedgeclkorposedgeclr)//-----3beginif(clr)q<=0;elseif(en)q<=d;end1、2、3三條語句是并行的,它們產(chǎn)生獨立的邏輯電路;而在always塊中:begin與end之間是順序執(zhí)行的。2020/12/1020并行和順序邏輯關系的表示如在模塊中邏輯功能由下面三個語句塊組結構級outabslselbselansl只有實例調(diào)用Moduletan(out,a,b,sl);inputa,b,sl;outputout; notu1(ns1,sl);and#1u3(selb,b,sl); and#1u2(sela,a,nsl);or#2u4(out,sela,selb);endmodule2020/12/1021結構級outabslselbselansl只有實例調(diào)用202行為級只有連續(xù)賦值語句和always過程塊modulerw1(a,b,out1,out2);inputa,b;outputout1,out2;regout1;wireout2;assignout2=a;always@(b)out1<=~b;endmoduleaout2BUFFbINVout12020/12/1022行為級只有連續(xù)賦值語句和always過程塊aout2BUFF行為級模塊描述語句——過程語句Initial語句——不能被綜合帶延時控制的語句帶順序過程的語句(begin…end)只執(zhí)行一次Always語句敏感信號為組合邏輯的語句敏感信號為時鐘沿的語句(時序邏輯)語句則不斷重復執(zhí)行2020/12/1023行為級模塊描述語句——過程語句Initial語句——不能被綜行為級模塊描述語句——語句塊將兩條或更多條語句合成語法結構上相當于一條語句的機制。順序語句塊(begin…end)語句按順序一次執(zhí)行并行語句塊(fork…join)塊內(nèi)語句并發(fā)執(zhí)行2020/12/1024行為級模塊描述語句——語句塊將兩條或更多條語句合成語法結構上行為級模塊描述語句——賦值語句門基元賦值語句連續(xù)賦值語句(assign)——針對組和邏輯過程賦值語句(只出現(xiàn)在always語句中
)阻塞賦值語句(=)首先計算右邊的值,然后立即賦給左邊順序塊內(nèi)的語句依次執(zhí)行,并行塊內(nèi)語句并行執(zhí)行多用于行為仿真和時序仿真非阻塞賦值語句(<=)在begin…end順序塊中,語句間并發(fā)執(zhí)行仿真中,先計算右邊的值,在時鐘沿統(tǒng)一賦值給左邊2020/12/1025行為級模塊描述語句——賦值語句門基元賦值語句2020/12/Verilog中兩種不同的賦值語句不阻塞(non-blocking)賦值語句:
always@(posedgeclk)beginb<=a;c<=b;endclkDFFcDQDQabDFF2020/12/1026Verilog中兩種不同的賦值語句不阻塞(non-blockVerilog中兩種不同的賦值語句阻塞(blocking)賦值語句:
always@(posedgeclk)beginb=a;c=b;endclkDFFcDQab2020/12/1027Verilog中兩種不同的賦值語句阻塞(blocking)兩種不同的賦值語句區(qū)別要點非阻塞(non-blocking)賦值語句(b<=a):塊內(nèi)的賦值語句同時賦值;b的值被賦成新值a的操作,是與塊內(nèi)其他賦值語句同時完成的;建議在可綜合風格的模塊中使用不阻塞賦值。阻塞(blocking)賦值語句(b=a):完成該賦值語句后才能做下一句的操作;b的值立刻被賦成新值a;硬件沒有對應的電路,因而綜合結果未知。2020/12/1028兩種不同的賦值語句區(qū)別要點非阻塞(non-blocking)兩種不同的賦值語句區(qū)別要點阻塞賦值和非阻塞賦值就該賦值本身是沒有區(qū)別的,只是對后面的語句有不同的影響。建議設計組合邏輯電路時用阻塞賦值,設計時序電路時用非阻塞賦值。過程性賦值的賦值對象有可能綜合成wire,latch,和flip-flop,取決于具體狀況。如,時鐘控制下的非阻塞賦值綜合成flip-flop。過程性賦值語句中的任何延時在綜合時都將忽略。建議同一個變量單一地使用阻塞或者非阻塞賦值。2020/12/1029兩種不同的賦值語句區(qū)別要點阻塞賦值和非阻塞賦值就該賦值本身是行為級模塊描述語句——分支語句是verilog中的高級程序語句——來源于CIf_else分支控制語句單分支、雙分支、嵌套Case分支控制語句執(zhí)行第一個匹配項,各匹配項不需要互斥表達式不一定是常量表達式2020/12/1030行為級模塊描述語句——分支語句是verilog中的高級程序語行為級模塊描述語句——循環(huán)語句forever循環(huán)repeat循環(huán)while循環(huán)for循環(huán)2020/12/1031行為級模塊描述語句——循環(huán)語句forever循環(huán)2020/1關于調(diào)用實例調(diào)用函數(shù)調(diào)用任務調(diào)用2020/12/1032關于調(diào)用實例調(diào)用2020/12/1032組合邏輯設計要點組合邏輯的兩種VerilogHDL表示:-用assign語句:
assignq=(al==1?)d:0;-用always塊:
always@(alord)beginif(al==1)q<=d;elseq<=0;end2020/12/1033組合邏輯設計要點組合邏輯的兩種VerilogHDL表示:2組合邏輯設計要點組合邏輯的兩種VerilogHDL表示:
-用always塊時,沒注意加else語句:如:always@(alord)beginif(al==1)q<=d;end則:此時生成的不是純組合邏輯,因為當al==0時,q能保留原來的值,所以生成的電路中有鎖存器。2020/12/1034組合邏輯設計要點組合邏輯的兩種VerilogHDL表示:2組合邏輯設計要點用always塊時,必須注意電平敏感的信號表是否完全,如:always@(aorbororcord)beginout=(a&b&c)|(d&e);end此時生成的不是純組合邏輯,因為當e變化時,out不能立即跟著變化。只有當a或b或c或d變化時e的變化后果才顯示出來。可見需要有一個寄存器來儲存e的變化。2020/12/1035組合邏輯設計要點用always塊時,必須注意電平敏感的信號表時序邏輯設計要點時序邏輯的VerilogHDL表示:-用always:如:always@(posedgeclock)begin if(!reset) do_reset; elsecase(state)
state_1:do_state_1; state_2:do_state_2; state_3:do_state_3; state_4:do_state_4; state_5:do_state_5; default:state<=xx;end2020/12/1036時序邏輯設計要點時序邏輯的VerilogHDL表示:202時序邏輯設計要點taskdo_state_1;beginifCondition_Is_TrueSwitch_Proper_Control_Logic;Prepare_For_Next_State;elseStay_In_Original_State;endendtasktaskdo_state_2;beginifCondition_Is_TrueSwitch_Proper_Control_Logic;Prepare_For_Next_State;elseStay_In_Original_State;endendtasktaskdo_reset;beginReset_Every_Register;Prepare_For_Next_State;endendtask2020/12/1037時序邏輯設計要點taskdo_state_1;taskdverilogHDL代碼風格涉及的因素速度和面積功耗涉及的技術邏輯復制和復用計數(shù)并行和流水線計數(shù)同步和一、異步單元處理技術2020/12/1038verilogHDL代碼風格涉及的因素2020/12/103有關VerilogHDL的幾個重要基本概念綜合:通過工具把用VerilogHDL描述的模塊自動轉換為用門級電路網(wǎng)表表示的模塊的過程。寄存器傳輸級VerilogHDL模塊:也可稱為RTL(Verilog)HDL模塊。它是符合特定標準和風格的描述狀態(tài)轉移和變化的VerilogHDL模塊。能用綜合器把它轉換為門級邏輯。VerilogHDL測試模塊:
用VerilogHDL描述的模塊,可以用來產(chǎn)生測試信號序列并可以接收被測試模塊的信號,用于驗證所設計的模塊是否能正常運行,往往不可綜合成具體門級電路。2020/12/1039有關VerilogHDL的幾個重要基本概念綜合:2020有關VerilogHDL的幾個重要基本概念VerilogHDL頂層(測試)模塊:同上。布局布線:把用綜合器自動生成的門級網(wǎng)表(EDIF)通過運行一個自動操作的布局布線工具,使其與具體的某種FPGA或某種ASIC工藝庫器件對應起來,并加以連接的過程。VerilogHDL后仿真測試模塊:同上,但被測試的模塊至少是一個門級描述的或用具體FPGA(ASIC)庫器件(帶時間延遲信息)描述的結構型VerilogHDL模塊。2020/12/1040有關VerilogHDL的幾個重要基本概念VerilogVerilog模塊的種類——行為模塊在仿真時其表現(xiàn)的功能與某實體邏輯電路完全一致的VerilogHDL模塊,但并沒有手段生成對應的門級邏輯電路與之對應。功能用于系統(tǒng)分割時驗證各部分的功能指標分配是否合理;在仿真時可用于替代與所設計電路系統(tǒng)相連接的現(xiàn)成可購得的外圍電路;用于產(chǎn)生測試信號和數(shù)據(jù)輸入到所設計電路系統(tǒng)并接收它的應答信號和輸出以驗證其功能。2020/12/1041Verilog模塊的種類——行為模塊在仿真時其表現(xiàn)的功能與某Verilog模塊的種類——可綜合模塊可通過綜合工具,自動地轉換為門級邏輯電路的VerilogHDL模塊。它的仿真可以在兩個層次上進行,行為級和門級。功能想要設計的用硬線邏輯構成的電路系統(tǒng);以基本的邏輯器件為基礎所構成的各種層次的結構模塊;綜合器能理解并能將其編譯為門級邏輯的模塊;對一般的綜合器而言,單純的RTL級VerilogHDL模塊以及RTL和結構型混合HDL模塊。2020/12/1042Verilog模塊的種類——可綜合模塊可通過綜合工具,自動地為什么Verilog能支持大型設計Verilog語法支持多層次多模塊設計:用`include宏指令可以在一個模塊中包含多個模塊;在一個模塊中可以用實例調(diào)用別的模塊中定義的電路結構,構成多層次模塊;在一個模塊中可以用多個任務和函數(shù)來表達復雜的狀態(tài)機和結構;一個設計項目往往由一個頂層測試模塊和多個可綜合模塊和若干個外圍接口模塊構成。2020/12/1043為什么Verilog能支持大型設計Verilog語法支持多設計項目舉例——myproject可綜合部分(我們想要設計的邏輯電路部分):mk_1.v,mk_2.v,mk_3.v,.....mk_8.vmk_11.v,mk_12.v,mk_13.v.....mk_21.v,mk_22.v,mk_23.v...........mk_81.v,mk_82.v,mk_83.v.....2020/12/1044設計項目舉例——myproject可綜合部分(我們想要設計設計項目舉例——myproject外圍部分:ww_1.v,ww_2.v,ww_3.v,ww_4.v...激勵部分:SG_1.v,SG_2.v....頂層測試模塊:包括可綜合部分、外圍部分、激勵部分,還包括測試步驟和輸出文件等。2020/12/1045設計項目舉例——myproject外圍部分:2020/12/Myproject——外圍部分這部分邏輯不用綜合成電路,但為了驗證我們的設計,其行為必須與真實器件完全一致。
下面我們介紹一個簡化的RAM模塊,我們所設計的電路用到了該RAM,但電路結構中并不包括這個RAM。2020/12/1046Myproject——外圍部分這部分邏輯不用綜合成電路,但為RAM的Verilog模塊`timescale1ns/1nsmoduleram(data,addr,ena,read,write);inout[7:0]data;input[9:0]addr;inputena,read,write;reg[7:0]ram[8‘hff:0];assign#20data=(read&&ena)?ram[addr]: 8‘hzz;always@(posedgewrite)begin#10ram[addr]<=data;endendmodule2020/12/1047RAM的Verilog模塊`timescale1ns激勵源的Verilog模塊`timescale1ns/1ns`definetimeslice200modulesigs(ack,clock,read,write,addr,data);inputack;outputclock,read,write;output[15:0]addr;inout[7:0]data;regclock,read,write;reg[15:0]addr;regw_r;//usedtorecordifreadorwritereg[7:0]DataToRam;//usedtostackthedata2020/12/1048激勵源的Verilog模塊`timescale1ns/激勵源的Verilog模塊assign#10data=(w_r)?‘hzz:DataToRam;initialbegin clock=0;w_r=0; DataToRam=0;addr=16‘h0000; endalways#(`timeslice/2)clock=~clock;2020/12/1049激勵源的Verilog模塊assign#10dat激勵源的Verilog模塊always@(posedgeack)if(w_r==0)begin#(5*`timeslice)write=1;#(`timeslice)write=0;end elsebegin#(5*`timeslice)read=1;#(`timeslice)read=0;endalways@(posedgeack)begin DataToRam=DataToRam+2;addr=addr+1;endendmodule2020/12/1050激勵源的Verilog模塊always@(posed激勵源的Verilog模塊上面這個模塊可根據(jù)從被測試模塊輸出的ack信號逐一發(fā)出讀/寫、地址、數(shù)據(jù)至被測試模塊,可以用來檢驗被測試模塊的功能是否正確,但沒有具體的門級電路系統(tǒng)與之對應。2020/12/1051激勵源的Verilog模塊上面這個模塊可根據(jù)從被測試模塊頂層測試Verilog模塊`timescale1ns/1ns`include可綜合模塊.v....`include外圍電路.v....`include激勵信號.v....moduletop;wire連線定義....Reg初試化塊中寄存器定義....initialbegin定義波形記錄、輸入數(shù)據(jù)文件、記錄輸出文件、監(jiān)視重要信號、記錄重要時刻、設置仿真時間等。
end2020/12/1052頂層測試Verilog模塊`timescale1ns/頂層測試Verilog模塊信號模塊xh1(.clock(clk),.reset(rst),.ack(ackn).....);.....可綜合模塊mysj1(.clock(clk),reset(rst),.ack(ackn)...);.....外圍模塊ram1(.read(rd),.write(wrt),.data(databus)...);.....endmodule2020/12/1053頂層測試Verilog模塊信號模塊2020/12/105不同抽象級別的HDL模型系統(tǒng)級(SystemLevel)算法級(AlgorithmLevel)寄存器傳輸級(RegisterTransferLevel)門級(GateLevel)開關級(SwitchLevel)2020/12/1054不同抽象級別的HDL模型系統(tǒng)級(SystemLeve可綜合的VerilogHDL模型算法級(AlgorithmLevel)部分可綜合寄存器傳輸級(RegisterTransferLevel)完全可綜合門級(GateLevel)完全可綜合開關級(SwitchLevel)用于基本邏輯器件仿真模型的建庫2020/12/1055可綜合的VerilogHDL模型算法級(Algori綜合工具和要點綜合是把VerilogHDL源代碼通過綜合工具,轉變?yōu)橄鄳に嚨拈T級邏輯表示的一個過程;在綜合之前,VerilogHDL源代碼的風格必須經(jīng)過嚴格檢查,僅僅符合語法不一定能綜合;不同的綜合工具性能有差別,支持的VerilogHDL源代碼的語法集合和風格也略有差別。綜合工具必須在已知基本邏輯單元庫的前提下,才能進行綜合。2020/12/1056綜合工具和要點綜合是把VerilogHDL源代碼通過綜合仿真和綜合工具概述常用的仿真工具:Verilog-XLNC-VerilogModelSimVeriBestViewLogic.....常用的綜合工具SynplifyExemplarSynopsysExpressSynopsysDesigner.....2020/12/1057仿真和綜合工具概述常用的仿真工具:常用的綜合工具2020/綜合小結Verilog中的變量有線網(wǎng)類型和寄存器類型。線網(wǎng)型變量綜合成wire,而寄存器可能綜合成WIRE,鎖存器和觸發(fā)器。因些連續(xù)性賦值的目標結點總是綜合成由組合邏輯驅(qū)動的結點。Assign語句中的延時綜合時都將忽視。過程性賦值的賦值對象有可能綜合成wire,latch,和flip-flop,取決于具體狀況。過程性賦值語句中的任何延時在綜合時都將忽略。通常會將進行運算操作的結果比原操作數(shù)擴展一位,用來存放進位或者借位。2020/12/1058綜合小結Verilog中的變量有線網(wǎng)類型和寄存器類型。線網(wǎng)型PPT教學課件謝謝觀看ThankYouForWatching59PPT教學課件謝謝觀看ThankYouForWatchVerilogHDL設計方法簡介算法實現(xiàn)用于數(shù)字信號傳輸中所必需的濾波、變換、加密、解密、編碼、解碼、糾檢錯、壓縮、解壓縮等操作。硬線邏輯由與門、或門、非門、觸發(fā)器、多路器等基本邏輯部件造成的邏輯系統(tǒng)。從算法設計到硬線邏輯的實現(xiàn)2020/12/1060VerilogHDL設計方法簡介算法實現(xiàn)2020/12/1傳統(tǒng)處理器的問題算法問題研究并行快速算法電路實現(xiàn)問題設計并研制具有并行結構的數(shù)字和計算邏輯結構。電路實現(xiàn)的兩個方向:
FPGA專用集成電路VerilogHDL建模、仿真、綜合和全面驗證。2020/12/1061傳統(tǒng)處理器的問題算法問題2020/12/102什么是復雜的數(shù)字邏輯系統(tǒng)?嵌入式微處理機系統(tǒng)數(shù)字信號處理系統(tǒng)高速并行計算邏輯高速通信協(xié)議電路高速編碼/解碼、加密/解密電路復雜的多功能智能接口門邏輯總數(shù)超過幾萬門達到幾百甚至達幾千萬門的數(shù)字系統(tǒng)2020/12/1062什么是復雜的數(shù)字邏輯系統(tǒng)?嵌入式微處理機系統(tǒng)2020/12/有哪幾種硬件描述語言?
各有什么特點?VerilogHDL較多的第三方工具的支持語法結構比VHDL簡單學習起來比VHDL容易仿真工具比較好使測試激勵模塊容易編寫2020/12/1063有哪幾種硬件描述語言?
各有什么特點?VerilogHDLVerilogHDL的建模方式即:模塊的描述方式:行為級建模模塊內(nèi)部只包括過程塊和連續(xù)賦值語句,而不包括實例調(diào)用語句和基本元件實例調(diào)用語句。RTL級屬于行為級結構級建模模塊內(nèi)部只包括實例調(diào)用語句。包括門級和開關級行為級與結構級混合建模兩者兼而有之2020/12/1064VerilogHDL的建模方式即:模塊的描述方式:202VerilogHDL的抽象級別語言本身提供了各種層次抽象的表述,可以用詳細程度有很大差別的的多層次模塊組合來描述一個電路系統(tǒng)。行為級:技術指標和算法的Verilog描述RTL級:邏輯功能的Verilog描述門級:邏輯結構的Verilog描述開關級:具體的晶體管物理器件的描述2020/12/1065VerilogHDL的抽象級別語言本身提供了各種層次抽象VerilogHDL的抽象級別行為級:有關行為和技術指標模塊,容易理解RTL級:有關邏輯執(zhí)行步驟的模塊,較難理解門級:有關邏輯部件互相連接的模塊,很難理解開關級:有關物理形狀和布局參數(shù)的模塊,非常難理解2020/12/1066VerilogHDL的抽象級別行為級:有關行為和技術指標抽象級別和綜合與仿真的關系行為仿真:行為的驗證和驗證模塊分割的合理性前仿真:即RTL級仿真,檢查有關模塊邏輯執(zhí)行步驟是否正確。邏輯綜合:把RTL級模塊轉換成門級。后仿真:用門級模型做驗證,檢查門的互連邏輯其功能是否正確。布局布線:在門級模型的基礎上加上了布線延時布局布線后仿真:與真實的電路最接近的驗證。2020/12/1067抽象級別和綜合與仿真的關系行為仿真:行為的驗證和驗證模塊分割Verilog程序結構一個完整的電路系統(tǒng)由若干模塊構成一個模塊可由若干子模塊構成模塊——類比C語言函數(shù)是verilog的基本單位描述么個功能或結構,以及與其他模塊的通信接口一個模塊是相對獨立的功能體,一般通過高層模塊調(diào)用其他模塊的實例構成系統(tǒng)模塊是并行運行的Module模塊名(端口列表);endmodule端口定義:Input輸入端口Output輸出端口Inout輸入/輸出端口數(shù)據(jù)類型說明:RegWireparameter邏輯功能定義:AssignAlwaysFunctionTask……2020/12/1068Verilog程序結構一個完整的電路系統(tǒng)由若干模塊構成ModVerilog程序結構modulerw1(a,b,out1,out2);inputa,b;outputout1,out2;regout1;wireout2;assignout2=a;always@(b)out1<=~b;endmodule2020/12/1069Verilog程序結構modulerw1(a,b,verilogHDL語法要素語言要素注釋、間隔符、標識符、關鍵字、運算符數(shù)據(jù)類型名字空間表達式模塊結構級行為級代碼風格2020/12/1070verilogHDL語法要素語言要素2020/12/1011verilogHDL數(shù)據(jù)類型數(shù)據(jù)值0、1、x、z數(shù)據(jù)類型網(wǎng)絡(wire…)變量(reg…)只有reg和integer可綜合reg只能在initial或always內(nèi)被賦值Verilog中將reg視為無符號數(shù),而integer視為有符號數(shù)。因此,進行有符號操作時使用integer,使用無符號操作時使用reg。
參數(shù)parameter向量指定了長度的wire或reg稱為矢量(否則為標量)多維向量:wire型(結構化描述);reg型(行為化描述)存儲器:reg型向量向量的可訪問性2020/12/1071verilogHDL數(shù)據(jù)類型數(shù)據(jù)值2020/12/1012Verilog模塊中的信號只有兩種主要的信號類型:-寄存器類型:reg
在always塊中被賦值的信號,往往代表觸發(fā)器,但不一定是觸發(fā)器。-連線(網(wǎng)絡)類型:wire用assign關鍵詞指定的組合邏輯的信號或連線寄存器(reg)類型不一定是觸發(fā)器。它只是在always塊中賦值的信號。2020/12/1072Verilog模塊中的信號只有兩種主要的信號類型:2020/Verilog中reg與wire的不同點用寄存器(reg)類型變量生成組合邏輯舉例:modulerw1(a,b,out1,out2);inputa,b;outputout1,out2;regout1;wireout2;assignout2=a;always@(b)out1<=~b;endmoduleaout2BUFFbINVout12020/12/1073Verilog中reg與wire的不同點用寄存器(reg)Verilog中reg與wire的不同點用寄存器(reg)類型變量生成觸發(fā)器的例子:modulerw2(clk,d,out1,out2);inputclk,d;outputout1,out2;regout1;wireout2;assignout2=d&~out1;always@(posedgeclk)beginout1<=d;endendmoduledout2AND2i1clkout1DQDFF2020/12/1074Verilog中reg與wire的不同點用寄存器(regverilogHDL名字空間2020/12/1075verilogHDL名字空間2020/12/1016verilogHDL語言表達式操作符算術、關系、相等關系、邏輯、按位、歸約、移位、條件、連接、復制延遲表達式表達式位寬2020/12/1076verilogHDL語言表達式操作符2020/12/1017VerilogHDL模塊的結構Verilog模塊的結構由在module和endmodule關鍵詞之間的四個主要部分組成:-端口信息:moduleblock1(a,b,c,d);-輸入/輸出說明:inputa,b,c;outputd;-內(nèi)部信號:wirex;-功能定義:assignd=a|x;assignx=(b&~c); and#1u3(selb,b,sl);endmodule
2020/12/1077VerilogHDL模塊的結構Verilog模塊的結構由VerilogHDL模塊中的邏輯表示在Verilog模塊中有三種方法可以生成邏輯電路:-用assign語句:
assigncs=(a0&~a1&~a2);-用元件的實例調(diào)用:and2and_inst(q,a,b);-用always塊:always@(posedgeclkorposedgeen)beginif(clr)q<=0;elseif(en)q<=d;end2020/12/1078VerilogHDL模塊中的邏輯表示在Verilog模塊并行和順序邏輯關系的表示如在模塊中邏輯功能由下面三個語句塊組成:assigncs=(a0&~a1&~a2);//-----1and2and_inst(qout,a,b);//-----2always@(posedgeclkorposedgeclr)//-----3beginif(clr)q<=0;elseif(en)q<=d;end1、2、3三條語句是并行的,它們產(chǎn)生獨立的邏輯電路;而在always塊中:begin與end之間是順序執(zhí)行的。2020/12/1079并行和順序邏輯關系的表示如在模塊中邏輯功能由下面三個語句塊組結構級outabslselbselansl只有實例調(diào)用Moduletan(out,a,b,sl);inputa,b,sl;outputout; notu1(ns1,sl);and#1u3(selb,b,sl); and#1u2(sela,a,nsl);or#2u4(out,sela,selb);endmodule2020/12/1080結構級outabslselbselansl只有實例調(diào)用202行為級只有連續(xù)賦值語句和always過程塊modulerw1(a,b,out1,out2);inputa,b;outputout1,out2;regout1;wireout2;assignout2=a;always@(b)out1<=~b;endmoduleaout2BUFFbINVout12020/12/1081行為級只有連續(xù)賦值語句和always過程塊aout2BUFF行為級模塊描述語句——過程語句Initial語句——不能被綜合帶延時控制的語句帶順序過程的語句(begin…end)只執(zhí)行一次Always語句敏感信號為組合邏輯的語句敏感信號為時鐘沿的語句(時序邏輯)語句則不斷重復執(zhí)行2020/12/1082行為級模塊描述語句——過程語句Initial語句——不能被綜行為級模塊描述語句——語句塊將兩條或更多條語句合成語法結構上相當于一條語句的機制。順序語句塊(begin…end)語句按順序一次執(zhí)行并行語句塊(fork…join)塊內(nèi)語句并發(fā)執(zhí)行2020/12/1083行為級模塊描述語句——語句塊將兩條或更多條語句合成語法結構上行為級模塊描述語句——賦值語句門基元賦值語句連續(xù)賦值語句(assign)——針對組和邏輯過程賦值語句(只出現(xiàn)在always語句中
)阻塞賦值語句(=)首先計算右邊的值,然后立即賦給左邊順序塊內(nèi)的語句依次執(zhí)行,并行塊內(nèi)語句并行執(zhí)行多用于行為仿真和時序仿真非阻塞賦值語句(<=)在begin…end順序塊中,語句間并發(fā)執(zhí)行仿真中,先計算右邊的值,在時鐘沿統(tǒng)一賦值給左邊2020/12/1084行為級模塊描述語句——賦值語句門基元賦值語句2020/12/Verilog中兩種不同的賦值語句不阻塞(non-blocking)賦值語句:
always@(posedgeclk)beginb<=a;c<=b;endclkDFFcDQDQabDFF2020/12/1085Verilog中兩種不同的賦值語句不阻塞(non-blockVerilog中兩種不同的賦值語句阻塞(blocking)賦值語句:
always@(posedgeclk)beginb=a;c=b;endclkDFFcDQab2020/12/1086Verilog中兩種不同的賦值語句阻塞(blocking)兩種不同的賦值語句區(qū)別要點非阻塞(non-blocking)賦值語句(b<=a):塊內(nèi)的賦值語句同時賦值;b的值被賦成新值a的操作,是與塊內(nèi)其他賦值語句同時完成的;建議在可綜合風格的模塊中使用不阻塞賦值。阻塞(blocking)賦值語句(b=a):完成該賦值語句后才能做下一句的操作;b的值立刻被賦成新值a;硬件沒有對應的電路,因而綜合結果未知。2020/12/1087兩種不同的賦值語句區(qū)別要點非阻塞(non-blocking)兩種不同的賦值語句區(qū)別要點阻塞賦值和非阻塞賦值就該賦值本身是沒有區(qū)別的,只是對后面的語句有不同的影響。建議設計組合邏輯電路時用阻塞賦值,設計時序電路時用非阻塞賦值。過程性賦值的賦值對象有可能綜合成wire,latch,和flip-flop,取決于具體狀況。如,時鐘控制下的非阻塞賦值綜合成flip-flop。過程性賦值語句中的任何延時在綜合時都將忽略。建議同一個變量單一地使用阻塞或者非阻塞賦值。2020/12/1088兩種不同的賦值語句區(qū)別要點阻塞賦值和非阻塞賦值就該賦值本身是行為級模塊描述語句——分支語句是verilog中的高級程序語句——來源于CIf_else分支控制語句單分支、雙分支、嵌套Case分支控制語句執(zhí)行第一個匹配項,各匹配項不需要互斥表達式不一定是常量表達式2020/12/1089行為級模塊描述語句——分支語句是verilog中的高級程序語行為級模塊描述語句——循環(huán)語句forever循環(huán)repeat循環(huán)while循環(huán)for循環(huán)2020/12/1090行為級模塊描述語句——循環(huán)語句forever循環(huán)2020/1關于調(diào)用實例調(diào)用函數(shù)調(diào)用任務調(diào)用2020/12/1091關于調(diào)用實例調(diào)用2020/12/1032組合邏輯設計要點組合邏輯的兩種VerilogHDL表示:-用assign語句:
assignq=(al==1?)d:0;-用always塊:
always@(alord)beginif(al==1)q<=d;elseq<=0;end2020/12/1092組合邏輯設計要點組合邏輯的兩種VerilogHDL表示:2組合邏輯設計要點組合邏輯的兩種VerilogHDL表示:
-用always塊時,沒注意加else語句:如:always@(alord)beginif(al==1)q<=d;end則:此時生成的不是純組合邏輯,因為當al==0時,q能保留原來的值,所以生成的電路中有鎖存器。2020/12/1093組合邏輯設計要點組合邏輯的兩種VerilogHDL表示:2組合邏輯設計要點用always塊時,必須注意電平敏感的信號表是否完全,如:always@(aorbororcord)beginout=(a&b&c)|(d&e);end此時生成的不是純組合邏輯,因為當e變化時,out不能立即跟著變化。只有當a或b或c或d變化時e的變化后果才顯示出來??梢娦枰幸粋€寄存器來儲存e的變化。2020/12/1094組合邏輯設計要點用always塊時,必須注意電平敏感的信號表時序邏輯設計要點時序邏輯的VerilogHDL表示:-用always:如:always@(posedgeclock)begin if(!reset) do_reset; elsecase(state)
state_1:do_state_1; state_2:do_state_2; state_3:do_state_3; state_4:do_state_4; state_5:do_state_5; default:state<=xx;end2020/12/1095時序邏輯設計要點時序邏輯的VerilogHDL表示:202時序邏輯設計要點taskdo_state_1;beginifCondition_Is_TrueSwitch_Proper_Control_Logic;Prepare_For_Next_State;elseStay_In_Original_State;endendtasktaskdo_state_2;beginifCondition_Is_TrueSwitch_Proper_Control_Logic;Prepare_For_Next_State;elseStay_In_Original_State;endendtasktaskdo_reset;beginReset_Every_Register;Prepare_For_Next_State;endendtask2020/12/1096時序邏輯設計要點taskdo_state_1;taskdverilogHDL代碼風格涉及的因素速度和面積功耗涉及的技術邏輯復制和復用計數(shù)并行和流水線計數(shù)同步和一、異步單元處理技術2020/12/1097verilogHDL代碼風格涉及的因素2020/12/103有關VerilogHDL的幾個重要基本概念綜合:通過工具把用VerilogHDL描述的模塊自動轉換為用門級電路網(wǎng)表表示的模塊的過程。寄存器傳輸級VerilogHDL模塊:也可稱為RTL(Verilog)HDL模塊。它是符合特定標準和風格的描述狀態(tài)轉移和變化的VerilogHDL模塊。能用綜合器把它轉換為門級邏輯。VerilogHDL測試模塊:
用VerilogHDL描述的模塊,可以用來產(chǎn)生測試信號序列并可以接收被測試模塊的信號,用于驗證所設計的模塊是否能正常運行,往往不可綜合成具體門級電路。2020/12/1098有關VerilogHDL的幾個重要基本概念綜合:2020有關VerilogHDL的幾個重要基本概念VerilogHDL頂層(測試)模塊:同上。布局布線:把用綜合器自動生成的門級網(wǎng)表(EDIF)通過運行一個自動操作的布局布線工具,使其與具體的某種FPGA或某種ASIC工藝庫器件對應起來,并加以連接的過程。VerilogHDL后仿真測試模塊:同上,但被測試的模塊至少是一個門級描述的或用具體FPGA(ASIC)庫器件(帶時間延遲信息)描述的結構型VerilogHDL模塊。2020/12/1099有關VerilogHDL的幾個重要基本概念VerilogVerilog模塊的種類——行為模塊在仿真時其表現(xiàn)的功能與某實體邏輯電路完全一致的VerilogHDL模塊,但并沒有手段生成對應的門級邏輯電路與之對應。功能用于系統(tǒng)分割時驗證各部分的功能指標分配是否合理;在仿真時可用于替代與所設計電路系統(tǒng)相連接的現(xiàn)成可購得的外圍電路;用于產(chǎn)生測試信號和數(shù)據(jù)輸入到所設計電路系統(tǒng)并接收它的應答信號和輸出以驗證其功能。2020/12/10100Verilog模塊的種類——行為模塊在仿真時其表現(xiàn)的功能與某Verilog模塊的種類——可綜合模塊可通過綜合工具,自動地轉換為門級邏輯電路的VerilogHDL模塊。它的仿真可以在兩個層次上進行,行為級和門級。功能想要設計的用硬線邏輯構成的電路系統(tǒng);以基本的邏輯器件為基礎所構成的各種層次的結構模塊;綜合器能理解并能將其編譯為門級邏輯的模塊;對一般的綜合器而言,單純的RTL級VerilogHDL模塊以及RTL和結構型混合HDL模塊。2020/12/10101Verilog模塊的種類——可綜合模塊可通過綜合工具,自動地為什么Verilog能支持大型設計Verilog語法支持多層次多模塊設計:用`include宏指令可以在一個模塊中包含多個模塊;在一個模塊中可以用實例調(diào)用別的模塊中定義的電路結構,構成多層次模塊;在一個模塊中可以用多個任務和函數(shù)來表達復雜的狀態(tài)機和結構;一個設計項目往往由一個頂層測試模塊和多個可綜合模塊和若干個外圍接口模塊構成。2020/12/10102為什么Verilog能支持大型設計Verilog語法支持多設計項目舉例——myproject可綜合部分(我們想要設計的邏輯電路部分):mk_1.v,mk_2.v,mk_3.v,.....mk_8.vmk_11.v,mk_12.v,mk_13.v.....mk_21.v,mk_22.v,mk_23.v...........mk_81.v,mk_82.v,mk_83.v.....2020/12/10103設計項目舉例——myproject可綜合部分(我們想要設計設計項目舉例——myproject外圍部分:ww_1.v,ww_2.v,ww_3.v,ww_4.v...激勵部分:SG_1.v,SG_2.v....頂層測試模塊:包括可綜合部分、外圍部分、激勵部分,還包括測試步驟和輸出文件等。2020/12/10104設計項目舉例——myproject外圍部分:2020/12/Myproject——外圍部分這部分邏輯不用綜合成電路,但為了驗證我們的設計,其行為必須與真實器件完全一致。
下面我們介紹一個簡化的RAM模塊,我們所設計的電路用到了該RAM,但電路結構中并不包括這個RAM。2020/12/10105Myproject——外圍部分這部分邏輯不用綜合成電路,但為RAM的Verilog模塊`timescale1ns/1nsmoduleram(data,addr,ena,read,write);inout[7:0]data;input[9:0]addr;inputena,read,write;reg[7:0]ram[8‘hff:0];assign#20data=(read&&ena)?ram[addr]: 8‘hzz;always@(posedgewrite)begin#10ram[addr]<=data;endendmodule2020/12/10106RAM的Verilog模塊`timescale1ns激勵源的Verilog模塊`timescale1ns/1ns`definetimeslice200modulesigs(ack,clock,read,write,addr,data);inputack;outputclock,read,write;output[15:0]addr;inout[7:0]data;regclock,read,write;reg[15:0]addr;regw_r;//u
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程安全年終總結
- 讀傅雷家書有感心得(32篇)
- 小班《找春天》教案5篇
- 配音錄制委托合同(3篇)
- 計算機工業(yè)控制技術課程說課
- 三年級下冊23課教育課件
- 安全生產(chǎn)責任告知書范文6篇
- 建筑施工實習指導書
- 統(tǒng)編語文四年級上冊第六單元教材解讀及集體備課
- 高中物理新教材同步選擇性必修第三冊-第3章熱力學定律-2-熱力學第一定律-3-能量守恒定律
- 施工極端天氣應急預案方案
- 事業(yè)單位工作人員調(diào)動申報表
- (2024年)知識產(chǎn)權法宣傳課件
- 腎內(nèi)科工作發(fā)展計劃
- (高清版)DZT 0280-2015 可控源音頻大地電磁法技術規(guī)程
- 理想氣體狀態(tài)方程-物理化學課件
- 芹菜種植技術
- 《創(chuàng)業(yè)融資實務》課件-大學生創(chuàng)業(yè)貸款
- 貴金屬行業(yè)市場前景分析課件
- WebGIS原理及開發(fā)-基于開源框架的WebGIS技術全套教學課件
- 產(chǎn)后保健服務指南
評論
0/150
提交評論