![電子信息工程專業(yè)基礎(chǔ)課_第1頁(yè)](http://file4.renrendoc.com/view11/M02/0E/38/wKhkGWWekMWAZh8gAABqrXl2kDg437.jpg)
![電子信息工程專業(yè)基礎(chǔ)課_第2頁(yè)](http://file4.renrendoc.com/view11/M02/0E/38/wKhkGWWekMWAZh8gAABqrXl2kDg4372.jpg)
![電子信息工程專業(yè)基礎(chǔ)課_第3頁(yè)](http://file4.renrendoc.com/view11/M02/0E/38/wKhkGWWekMWAZh8gAABqrXl2kDg4373.jpg)
![電子信息工程專業(yè)基礎(chǔ)課_第4頁(yè)](http://file4.renrendoc.com/view11/M02/0E/38/wKhkGWWekMWAZh8gAABqrXl2kDg4374.jpg)
![電子信息工程專業(yè)基礎(chǔ)課_第5頁(yè)](http://file4.renrendoc.com/view11/M02/0E/38/wKhkGWWekMWAZh8gAABqrXl2kDg4375.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
EDA技術(shù)唐英杰電子信息工程專業(yè)根底課第五章VerilogHDL言語(yǔ)〔二〕一、VerilogHDL模型的不同籠統(tǒng)級(jí)別VerilogHDL模型可以是實(shí)踐電路中不同級(jí)別的籠統(tǒng)。同一個(gè)物理電路,可以在不同的層次上用VerilogHDL語(yǔ)句來(lái)描畫它。從行為和功能的角度來(lái)描畫某一個(gè)電路模塊——行為模塊;從電路構(gòu)造的角度來(lái)描畫該電路模塊——構(gòu)造模塊?;\統(tǒng)的級(jí)別和它們對(duì)應(yīng)的模塊類型有5種:1、系統(tǒng)級(jí)2、算法級(jí)3、RTL級(jí)4、門級(jí)5、開關(guān)級(jí)行為級(jí)構(gòu)造級(jí)第五章VerilogHDL言語(yǔ)〔二〕1、VerilogHDL門級(jí)構(gòu)造描畫用于門級(jí)描畫關(guān)鍵字包括:not〔非門〕、and〔與門〕、nand〔與非門〕、or〔或門〕、nor〔或非門〕、xor〔異或門〕、xnor〔異或非門〕、buf〔緩沖器〕以及bufif1、bufif0、notif1、notif0等各種三態(tài)門。門級(jí)描畫語(yǔ)句格式為<門類型>[<驅(qū)動(dòng)才干><延時(shí)>]〔門實(shí)例列表〕;nand#10nd1(a,data,clock,clear);運(yùn)用了一個(gè)名為nd1的與非門,輸入為data、clock、clear。輸出為a,輸出與輸入的延時(shí)為10個(gè)時(shí)間單位第五章VerilogHDL言語(yǔ)〔二〕用門級(jí)構(gòu)造描畫D觸發(fā)器
第五章VerilogHDL言語(yǔ)〔二〕module flop(data,clock,clear,q,qb);input data,clock,clear;output q,qb;nand #10 nd1(a,data,clock,clear),nd2(b,ndata,clock),nd4(d,c,b,clear),nd5(e,c,nclock),nd6(f,d,nclock),nd8(qb,q,f,clear);nand #9 nd3(c,a,d),nd7(q,e,qb);not #10 iv1(ndata,data),iv2(nclock,clock);endmodule第五章VerilogHDL言語(yǔ)〔二〕由曾經(jīng)設(shè)計(jì)成的模塊構(gòu)成更高一層的模塊假設(shè)曾經(jīng)編制一個(gè)模塊,可以在另外的模塊中援用這個(gè)模塊方式:1、flopflop_d(d1,clk,clrb,q,qn);2、flopflop_d(.clock(clk),.q(q),.clear(clrb)..qb(qn),.data(d1));第五章VerilogHDL言語(yǔ)〔二〕clrdqclkclrdqclkclrdqclkq0d0clrdqclkd3d2q2q3q1d1clrbclkf4f3f2f1四位存放器電路構(gòu)造圖【例】用觸發(fā)器組成帶有清零端的4位存放器第五章VerilogHDL言語(yǔ)〔二〕`include“flop.v〞module hardreg(d,clk,clrb,q);input clk,clrb;input[3:0] d;output[3:0] q;flop f1(d[0],clk,clrb,q[0],),f2(d[1],clk,clrb,q[1],),f3(d[2],clk,clrb,q[2],),f4(d[3],clk,clrb,q[3],);endmodule第五章VerilogHDL言語(yǔ)〔二〕經(jīng)過VerilogHDL言語(yǔ)中的模塊實(shí)例可以援用,可以構(gòu)成任何復(fù)雜構(gòu)造的電路,這種以構(gòu)造方式建立的Verilog模型不僅可以仿真,而且也是可以綜合的,其本質(zhì)是表示電路的詳細(xì)構(gòu)造。第五章VerilogHDL言語(yǔ)〔二〕2、VerilogHDL的行為描畫可以用比較籠統(tǒng)的Verilog描畫方法來(lái)建立模型【例】用行為描畫的方法描畫帶有清零端的4位存放器modulehardreg(d,clk,clrb,q);inputclk,clrb;input[3:0]d;output[3:0]q;reg[3:0]q;always@(posedgeclkorposedgeclrb).
第五章VerilogHDL言語(yǔ)〔二〕beginif(clrb)q<=0;elseq<=d;endendmodule第五章VerilogHDL言語(yǔ)〔二〕3、用戶定義的原語(yǔ)用戶定義的原語(yǔ)是從英語(yǔ)userdefinedprimitives直接翻譯而來(lái),簡(jiǎn)稱UDP。利用UDP用戶可以定義本人設(shè)計(jì)的根本邏輯元件的功能,也就是,可以利用UDP來(lái)定義有本人特征的用于仿真的根本邏輯元件模塊并建立相應(yīng)的原語(yǔ)庫(kù)。primitiveudp_and(out,a,b);outputout;inputa,b;table//ab:out;00:0;01:0;10:0;11:1;endtableendprimitive第五章VerilogHDL言語(yǔ)〔二〕留意點(diǎn):UDP只能有一個(gè)輸出端,而且必需是端口闡明列表的第一項(xiàng);UDP可以有多個(gè)輸入端,最多允許有10個(gè)輸入端;UDP一切端口變量必需是標(biāo)量,也就是1位的;在UDP的真值表項(xiàng)中,只允許出現(xiàn)0、1、x,不允許出現(xiàn)Z;只需輸出端才可以被定義為存放器型變量;Initial語(yǔ)句用于為時(shí)序電路內(nèi)部賦初值,只允許賦0、1、x,默許值為x。第五章VerilogHDL言語(yǔ)〔二〕二、如何編寫和驗(yàn)證簡(jiǎn)單的純組合邏輯模塊數(shù)字邏輯系統(tǒng)的設(shè)計(jì)是一個(gè)非常細(xì)致、嚴(yán)密和費(fèi)時(shí)間的復(fù)雜過程,做這項(xiàng)任務(wù)的人員必需具有極其仔細(xì)擔(dān)任的任務(wù)態(tài)度、矯捷的頭腦、頑強(qiáng)的毅力和細(xì)致踏實(shí)的作風(fēng)。每個(gè)部件模塊的設(shè)計(jì)任務(wù)包括:1、電路模塊的設(shè)計(jì)2、測(cè)試模塊的設(shè)計(jì)3、設(shè)計(jì)文檔的編寫和整理測(cè)試模塊的設(shè)計(jì)和文檔編寫是比電路模塊設(shè)計(jì)更為重要的設(shè)計(jì)環(huán)節(jié)。測(cè)試能否嚴(yán)密和完好決議了系統(tǒng)設(shè)計(jì)的成敗,設(shè)計(jì)文檔的完好和準(zhǔn)確也是系統(tǒng)設(shè)計(jì)成敗的關(guān)鍵,短少完好的設(shè)計(jì)闡明文件,就不能維持設(shè)計(jì)任務(wù)的延續(xù)性,給今后的調(diào)試和維護(hù)帶來(lái)困難。第五章VerilogHDL言語(yǔ)〔二〕加法器moduleADDER4BIT(Ain,Bin,SUM,OVF);input[3:0]Ain,Bin;output[3:0]SUM;
output OVF;assign{OVF,SUM}=Ain+Bin;Endmodule這種描畫方法比較直觀,可以直接用綜合器轉(zhuǎn)換為門級(jí)組合邏輯相互銜接的描畫。依然用同樣的測(cè)試模塊測(cè)試。這種描畫使得邏輯關(guān)系更容易明白。第五章VerilogHDL言語(yǔ)〔二〕乘法器modulemult_8(x,y,product);input[7:0]x,y;output[15:0]product;
assignproduct=x*y;Endmodule第五章VerilogHDL言語(yǔ)〔二〕比較器modulecompare(x,y,xgy,xsy,xey);input[width-1:0]x,y;output[15:0]xgy,xsy,xey;regxgy,xsy,xeyParameterwidth=8;always@(xory)beginif(x==y)xey=1;第五章VerilogHDL言語(yǔ)〔二〕elsexey=0;if(x>y)xgy=1;elsexgy=0;if(x<y)xsy=1;elsexsy=0;endendmodule第五章VerilogHDL言語(yǔ)〔二〕多路器modulemux_8(addr,in1,in2,in3,in4,in5,in6,in7,in8,mout,ncs);input[2:0]addr;input[width-1:0]in1,in2,in3,in4,in5,in6,in7,in8;inputncs;ouput[width-1:0]mout;parameterwidth=8;always@(addrorin1orin2orin3orin4orin5orin6orin7orin8orncs)begin
第五章VerilogHDL言語(yǔ)〔二〕if(!ncs)case(addr)3’b000mout=in1;3’b001mout=in2;3’b010mout=in3;3’b011mout=in4;3’b100mout=in5;3’b101mout=in6;3’b110mout=in7;3’b111mout=in8;endcaseelsemout=0;endendmodule第五章VerilogHDL言語(yǔ)〔二〕三、復(fù)雜數(shù)字系統(tǒng)的構(gòu)成數(shù)字邏輯就其本質(zhì)而言,只需組合邏輯和時(shí)序邏輯兩大類。組合邏輯可以用來(lái)完成簡(jiǎn)單的邏輯功能時(shí)序邏輯那么可以用來(lái)產(chǎn)生與運(yùn)算過程有關(guān)的〔時(shí)鐘〕多個(gè)控制信號(hào)序列包括存儲(chǔ)運(yùn)算的結(jié)果和取出存儲(chǔ)器中的數(shù)據(jù)在用可綜合的硬件描畫言語(yǔ)設(shè)計(jì)的復(fù)雜運(yùn)算邏輯系統(tǒng)中,往往用同步形狀機(jī)來(lái)產(chǎn)生與時(shí)鐘節(jié)拍親密相關(guān)的多個(gè)控制信號(hào)序列,用它來(lái)控制多路器或數(shù)據(jù)通道的開啟/封鎖,來(lái)使有限的組合邏輯運(yùn)算器資源得到充分的運(yùn)轉(zhuǎn),并存放有意義的運(yùn)算結(jié)果,或把它們傳送到指定的地方。第五章VerilogHDL言語(yǔ)〔二〕組合邏輯:輸出只是輸入邏輯電平的函數(shù)〔有延時(shí)〕,與電路的原始形狀無(wú)關(guān)。時(shí)序邏輯:輸出不只是輸入的邏輯電平的函數(shù),還與電路所處的形狀有關(guān)。同步時(shí)序邏輯是在同一時(shí)鐘跳變節(jié)拍的前提下,如輸入條件滿足,那么進(jìn)入下一形狀,否那么仍留在原來(lái)的形狀的形狀機(jī)。數(shù)字邏輯電路的構(gòu)成第五章VerilogHDL言語(yǔ)〔二〕組合邏輯:由與、或、非門組成的網(wǎng)絡(luò)。常用的有:多路器、數(shù)據(jù)通路開關(guān)、加法器、乘法器等,沒有記憶功能。時(shí)序邏輯:由多個(gè)觸發(fā)器和多個(gè)組合邏輯塊組成的網(wǎng)絡(luò)。常用的有:計(jì)數(shù)器、復(fù)雜的數(shù)據(jù)流動(dòng)控制邏輯、運(yùn)算控制邏輯、指令分析和操作控制邏輯。同步時(shí)序邏輯的設(shè)計(jì)是設(shè)計(jì)復(fù)雜的數(shù)字邏輯系統(tǒng)的中心。第五章VerilogHDL言語(yǔ)〔二〕【例】一個(gè)八位數(shù)據(jù)通路控制器in[7]ControlSwitchout[7]in[0]out[0]…...…...`defineON1‘b1`defineOFF1‘b0wireControlSwitch;wire[7:0]out,in;assignout=(ControlSwith==`ON)?in:8‘h00第五章VerilogHDL言語(yǔ)〔二〕in[7:0]開關(guān)out[7:0]tt3102153262880215320000第五章VerilogHDL言語(yǔ)〔二〕in[7]ControlSwitchout[7]CLOCKDQ[7]CLOCKin[0]ControlSwitchout[0]DQ[0]out[7]out[0]帶存放器的八位數(shù)據(jù)通路控制器第五章VerilogHDL言語(yǔ)〔二〕`defineON1‘b1`defineOFF1‘b0wireControlSwitch;wireclockwire[7:0]out,in;always@(posedgeclock)beginif(ControlSwith==`ON)out<=in;elseout<=out;end第五章VerilogHDL言語(yǔ)〔二〕【例】一個(gè)八位三態(tài)數(shù)據(jù)通路控制器outbuf[7]LinkBusSwitchbus[7]第五章VerilogHDL言語(yǔ)〔二〕`defineON1‘b1`defineOFF1‘b0wireLinkBusSwitch;wire[7:0]outbuf;inout[7:0]bus;assignbus=(LinkBusSwitch==`ON)?outbuf:8‘hzzoutbuf[7:0]開bus[7:0]tt310215326288021532ZZZZLinkBusSwitch關(guān)第五章VerilogHDL言語(yǔ)〔二〕防止競(jìng)爭(zhēng)和冒險(xiǎn)由于組合邏輯和布線的延遲引起abcabttcclock第五章VerilogHDL言語(yǔ)〔二〕ba#2#3#4cedba#2#3#4ced總延遲=Max{2,3}+4=7時(shí)鐘周期必需>7ns總延遲={Max{2,3}+4+1}=8時(shí)鐘周期必需>4ns總處置數(shù)據(jù)的吞吐量添加#1#1clock組合邏輯和布線的延遲在組合邏輯中的疊加第五章VerilogHDL言語(yǔ)〔二〕全局時(shí)鐘網(wǎng)絡(luò)觸發(fā)器緩沖器觸發(fā)器1觸發(fā)器n圖1全局時(shí)鐘網(wǎng)表示圖圖2平衡樹構(gòu)造表示圖全局時(shí)鐘網(wǎng)和平衡樹構(gòu)造第五章VerilogHDL言語(yǔ)〔二〕四、同步形狀機(jī)的原理、構(gòu)造和設(shè)計(jì)1、為什么要設(shè)計(jì)有限形狀機(jī)?假設(shè)能嚴(yán)厲以時(shí)鐘跳變沿為前提,按排好時(shí)序來(lái)操作邏輯系統(tǒng)中每一個(gè)開關(guān)Si,那么系統(tǒng)中數(shù)據(jù)的流動(dòng)和處置睬按同一時(shí)鐘節(jié)拍有序地進(jìn)展,可以控制冒險(xiǎn)和競(jìng)爭(zhēng)景象對(duì)邏輯運(yùn)算的破壞,時(shí)延問題就能有效地加以處理。利用同步有限形狀機(jī)就能產(chǎn)生復(fù)雜的以時(shí)鐘跳變沿為前提的同步時(shí)序邏輯,并提供操作邏輯系統(tǒng)的開關(guān)陣列所需求的復(fù)雜控制時(shí)序〔具有信號(hào)互鎖和先后次序等要求的〕。第五章VerilogHDL言語(yǔ)〔二〕假設(shè)我們能設(shè)計(jì)這樣一個(gè)電路:1〕能記住本人目前所處的形狀;2〕形狀的變化只能夠在同一個(gè)時(shí)鐘的跳變沿時(shí)辰發(fā)生,而不能夠發(fā)生在恣意時(shí)辰;3〕在時(shí)鐘跳變沿時(shí)辰,如輸入條件滿足,那么進(jìn)入下一形狀,并記住本人目前所處的形狀,否那么仍保管原來(lái)的形狀;4〕在進(jìn)入不同的形狀時(shí)辰,對(duì)系統(tǒng)的開關(guān)陣列做開啟或封鎖的操作。第五章VerilogHDL言語(yǔ)〔二〕clock10nsS2開關(guān)S1tttSnS3tttS4第五章VerilogHDL言語(yǔ)〔二〕有了以上電路,我們就不難設(shè)計(jì)出復(fù)雜的控制序列來(lái)支配數(shù)字系統(tǒng)的控制開關(guān)陣列。能到達(dá)以上要求的電路就是時(shí)序和組合電路相互結(jié)合的產(chǎn)物:同步有限形狀機(jī)和由形狀和時(shí)鐘共同控制的開關(guān)邏輯陣列。我們只需掌握有限形狀機(jī)的根本設(shè)計(jì)方法,加上對(duì)根本電路的掌握,再加上對(duì)數(shù)據(jù)處置的過程的細(xì)致了解,我們就可以防止由于邏輯器件和布線延遲產(chǎn)生的冒險(xiǎn)競(jìng)爭(zhēng)景象所呵斥的破壞,設(shè)計(jì)出符合要求的復(fù)雜數(shù)字邏輯系統(tǒng)。第五章VerilogHDL言語(yǔ)〔二〕同步有限形狀機(jī)ena_2ena_3ena_nena_1clock組合邏輯1存放器組組合邏輯2存放器組組合邏輯3存放器組組合邏輯N存放器組input_1input_2input_n數(shù)字系統(tǒng)的構(gòu)成表示圖第五章VerilogHDL言語(yǔ)〔二〕2、同步有限形狀機(jī)的設(shè)計(jì)什么是有限形狀機(jī)?有限形狀機(jī)是由存放器組和組合邏輯構(gòu)成的硬件時(shí)序電路;其形狀〔即由存放器組的1和0的組合形狀所構(gòu)成的有限個(gè)形狀〕只能在同一時(shí)鐘跳變沿的情況下才干從一個(gè)形狀轉(zhuǎn)向另一個(gè)形狀;終究轉(zhuǎn)向哪一形狀不但取決于各個(gè)輸入值,還取決于當(dāng)前形狀。形狀機(jī)可用于產(chǎn)生在時(shí)鐘跳變沿時(shí)辰開關(guān)的復(fù)雜的控制邏輯,是數(shù)字邏輯的控制中心第五章VerilogHDL言語(yǔ)〔二〕Mealy形狀機(jī)
下一個(gè)形狀=F(當(dāng)前形狀,輸入信號(hào));
輸出信號(hào)=G(當(dāng)前形狀,輸入信號(hào));下一形狀的邏輯F輸出邏輯G形狀存放器時(shí)鐘信號(hào)clkclk輸入輸入輸出當(dāng)前形狀鼓勵(lì)信號(hào)第五章VerilogHDL言語(yǔ)〔二〕Moor形狀機(jī)
下一個(gè)形狀=F(當(dāng)前形狀,輸入信號(hào))
輸出信號(hào)=G(當(dāng)前形狀);下一狀態(tài)的邏輯F輸出邏輯G形狀存放器時(shí)鐘信號(hào)clkclk輸入輸入輸出當(dāng)前形狀鼓勵(lì)信號(hào)圖2.時(shí)鐘同步的形狀機(jī)構(gòu)造(Moor形狀機(jī))第五章VerilogHDL言語(yǔ)〔二〕簡(jiǎn)單的形狀機(jī)設(shè)計(jì)舉例有限形狀機(jī)的圖形表示圖形表示:形狀、轉(zhuǎn)移、條件和邏輯開關(guān)IdleStartStopClearA/K1=0!AA/K2=1!Reset/K2=0K1=0!Reset/K2=0K1=0〔!Reset|!A〕/K2=0K1=1!Reset/K2=0K1=0第五章VerilogHDL言語(yǔ)〔二〕定義模塊名和輸入輸出端口;定義輸入、輸出變量或存放器;定義時(shí)鐘和復(fù)位信號(hào);定義形狀變量和形狀存放器;用時(shí)鐘沿觸發(fā)的always塊表示形狀轉(zhuǎn)移過程;在復(fù)位信號(hào)有效時(shí)給形狀存放器賦初始值;描畫形狀的轉(zhuǎn)換過程:符合條件,從一個(gè)形狀到另外一個(gè)形狀,否那么留在原形狀;驗(yàn)證形狀轉(zhuǎn)移的正確性,必需完好和全面。有限形狀機(jī)的Verilog描畫第五章VerilogHDL言語(yǔ)〔二〕modulefsm(Clock,Reset,A,K2,K1);inputClock,Reset,A;//定義時(shí)鐘、復(fù)位和輸入信號(hào)outputK2,K1;//定義輸出控制信號(hào)的端口regK2,K1;//定義輸出控制信號(hào)的存放器reg[1:0]state;
//定義形狀存放器parameterIdle=2’b00,Start=2’b01,Stop=2’b10,Clear=2’b11;//定義形狀變量參數(shù)值always@(posedgeClock)if(!Reset)begin//定義復(fù)位后的初始形狀和輸出值state<=Idle;K2<=0;K1<=0;end【例1】第五章VerilogHDL言語(yǔ)〔二〕elsecase(state)Idle:beginif(A)beginstate<=Start;K1<=0;endelsestate<=Idle;endStart:beginif(!A)state<=Stop;elsestate<=Start;endStop:begin//符合條件進(jìn)入新形狀,否那么留在原形狀if(A)beginstate<=Clear;K2<=1;endelsestate<=Stop;end
Clear:beginif(!A)beginstate<=Idle;K2<=0;K1<=1;endelsestate<=Clear;endendcaseendmodule第五章VerilogHDL言語(yǔ)〔二〕我們還可以用另一個(gè)VerilogHDL模型來(lái)表示同一個(gè)有限形狀,【例2】用可綜合的Verilog模塊設(shè)計(jì)用獨(dú)熱碼表示形狀的形狀機(jī)modulefsm(Clock,Reset,A,K2,K1);inputClock,Reset,A;outputK2,K1;regK2,K1;reg[3:0]state;
parameterIdle=4’b1000,Start=4’b0100,Stop=4’b0010,Clear=4’b0001;第五章VerilogHDL言語(yǔ)〔二〕第五章VerilogHDL言語(yǔ)〔二〕always@(posedgeclock)if(!Reset)beginstate<=Idle;K2<=0;K1<=0;endelsecase(state)Idle:if(A)beginstate<=Start;K1<=0;endelsestate<=Idle第五章VerilogHDL言語(yǔ)〔二〕Start:if(!A)state<=Stop;elsestate<=Start;Stop:if(A)beginstate<=Clear;K2<=1;endelsestate<=Stop;Clear:if(!A)beginstate<=Idle;K2<=0;K1<=1;endelsestate<=Clear;第五章VerilogHDL言語(yǔ)〔二〕default:state<=Idle;endcaseendmodule
[例2]與[例1]的主要不同點(diǎn)是形狀編碼,[例2]采用了獨(dú)熱編碼,而[例1]那么采用Gray碼,終究采用哪一種編碼好要看詳細(xì)情況而定。第五章VerilogHDL言語(yǔ)〔二〕在比較復(fù)雜的形狀機(jī)設(shè)計(jì)過程中,我們往往把形狀的變化與輸出開關(guān)的控制分成兩部分來(lái)思索。就象前面講過的Mealy形狀機(jī)輸出部分的組合邏輯。為了調(diào)試方便,還經(jīng)常把每一個(gè)輸出開關(guān)寫成一個(gè)個(gè)獨(dú)立的always組合塊。在調(diào)試多輸出形狀機(jī)時(shí),這樣做比較容易發(fā)現(xiàn)問題和矯正模塊編寫中出現(xiàn)的問題。建議大家在設(shè)計(jì)復(fù)雜的多輸出形狀機(jī)時(shí)采用下面的風(fēng)格:
第五章VerilogHDL言語(yǔ)〔二〕modulefsm(Clock,Reset,A,K2,K1);inputClock,Reset,A;outputK2,K1;regK2,K1;reg[1:0]state,nextstate;
parameterIdle=2'b00,Start=2'b01,Stop=2'b10,Clear=2'b11;【例3】第五章VerilogHDL言語(yǔ)〔二〕//--------每一個(gè)時(shí)鐘沿產(chǎn)生一次能夠的形狀變化-----------always@(posedgeClock)beginif(!Reset)state<=Idle;elsestate<=nextstate;end//-------------------------------------------------------第五章VerilogHDL言語(yǔ)〔二〕//------產(chǎn)生下一形狀的組合邏輯-------------------------always@(stateorA)case(state)Idle:if(A)nextstate=Start;elsenextstate=Idle;Start:if(!A)nextstate=Stop;elsenextstate=Start;Stop:if(A)nextstate=Clear;elsenextstate=Stop;Clear:if(!A)nextstate=Idle;elsenextstate=Clear;default:nextstate=2'bxx;endcase第五章VerilogHDL言語(yǔ)〔二〕//----產(chǎn)生輸出K1的組合邏輯--------------always@(stateorResetorA)if(!Reset)K1=0;elseif(state==Clear&&!A)//從Clear轉(zhuǎn)向IdleK1=1;elseK1=0;第五章VerilogHDL言語(yǔ)〔二〕//---產(chǎn)生輸出K2的組合邏輯---------------always@(stateorResetorA)if(!Reset)K2=0;elseif(state==Stop&&A)//從Stop轉(zhuǎn)向ClearK2=1; elseK2=0;//------------------------------------------endmodule第五章VerilogHDL言語(yǔ)〔二〕用輸出指定的碼表示形狀的形狀機(jī)方法四采用了另一種方法:直接把形狀碼定義為輸出。也就是把形狀碼的指定與形狀機(jī)控制的輸出聯(lián)絡(luò)起來(lái),把形狀的變化直接用作輸出,這樣做可以提高輸出信號(hào)的開關(guān)速度并節(jié)省電路器件。這種設(shè)計(jì)方法常用在高速形狀機(jī)中。建議大家在設(shè)計(jì)高速形狀機(jī)時(shí)采用方法四的風(fēng)格。例中state[3]和state[0]分別表示前面兩個(gè)例子中的輸出K2和K1。第五章VerilogHDL言語(yǔ)〔二〕modulefsm(Clock,Reset,A,K2,K1,state);inputClock,Reset,A;outputK2,K1;output[4:0]state;reg[4:0]state;
assignK2=state[4];//把形狀變量的最高位用作輸出K2assignK1=state[0];//把形狀變量的最低位用作輸出K1【例4】第五章VerilogHDL言語(yǔ)〔二〕parameter//-------outputcodedstateassignment---//--------K2_i_j_n_K1–Idle=5'b0_0_0_0_0,Start=5'b0_0_0_1_0,Stop=5'b0_0_1_0_0,StopToClear=5'b1_1_0_0_0,Clear=5'b0_1_0_1_0,ClearToIdle=5'b0_0_1_1_1;
第五章VerilogHDL言語(yǔ)〔二〕always@(posedgeClock)if(!Reset)beginstate<=Idle;endelsecase(state)Idle:if(A)state<=Start;elsestate<=Idle;Start:if(!A)state<=Stop;elsestate<=Start;第五章VerilogHDL言語(yǔ)〔二〕Stop:if(A)state<=StopToClear;elsestate<=Stop;StopToClear:state<=Clear;Clear:if(!A)state<=ClearToIdle;elsestate<=Clear;ClearToIdle:state<=Idle;default:state<=Idle;endcaseendmodule第五章VerilogHDL言語(yǔ)〔二〕不同風(fēng)格的描畫適宜不同規(guī)模的形狀機(jī)和不同的綜合工具,有的風(fēng)格查錯(cuò)和修正較容易,但寫簡(jiǎn)單的形狀機(jī)時(shí)比較費(fèi)事。Synopsys公司的綜合器建議運(yùn)用這種風(fēng)格來(lái)描畫形狀機(jī)。
上面四個(gè)例子是同一個(gè)形狀機(jī)的四種不同的VerilogHDL模型,它們都是可綜合的,在設(shè)計(jì)復(fù)雜程度不同的形狀機(jī)時(shí)有它們各自的優(yōu)勢(shì)。如用不同的綜合器對(duì)這四個(gè)例子進(jìn)展綜合,綜合出的邏輯電路能夠會(huì)有些不同,但邏輯功能是一樣的。第五章VerilogHDL言語(yǔ)〔二〕有限形狀機(jī)設(shè)計(jì)的普通步驟:1、邏輯籠統(tǒng),得出形狀轉(zhuǎn)換圖:就是把給出的一個(gè)實(shí)踐邏輯關(guān)系表示為時(shí)序邏輯函數(shù)。可以用形狀轉(zhuǎn)換表來(lái)描畫,也可以用形狀轉(zhuǎn)換圖來(lái)描畫。這需求:分析給定的邏輯問題,確定輸入變量,輸出變量以及電路形狀數(shù)。通常是取緣由〔或條件〕作為輸入變量,取結(jié)果作為輸出變量;定義輸入、輸出邏輯形狀的含義,并將電路形狀順序編號(hào);按照要求列出電路的形狀轉(zhuǎn)換表或畫出形狀轉(zhuǎn)換圖這樣就把給定的邏輯問題籠統(tǒng)到一個(gè)時(shí)序邏輯函數(shù)了第五章VerilogHDL言語(yǔ)〔二〕2、形狀化簡(jiǎn):假設(shè)在形狀轉(zhuǎn)換圖中出現(xiàn)了這樣兩個(gè)形狀:它們?cè)谝粯拥妮斎胂罗D(zhuǎn)換到同一形狀去,并得到一樣的輸出,那么稱它們?yōu)榈葍r(jià)形狀。顯然等價(jià)形狀是反復(fù)的,可以合并為一個(gè)。電路的形狀數(shù)越少,存儲(chǔ)電路也就越簡(jiǎn)單。形狀化簡(jiǎn)的目的就在于將等價(jià)形狀盡能夠地合并,以得到最簡(jiǎn)的形狀轉(zhuǎn)換圖。3、形狀分配:形狀分配有稱形狀編碼。通常有很多編碼方法,編碼方案選擇得當(dāng),設(shè)計(jì)的電路可以簡(jiǎn)單;反之,選得不好,那么設(shè)計(jì)的電路就會(huì)復(fù)雜許多。在實(shí)踐設(shè)計(jì)時(shí),須綜合思索電路復(fù)雜度與電路性能這兩個(gè)要素。第五章VerilogHDL言語(yǔ)〔二〕在觸發(fā)器資源豐富的FPGA、ASIC設(shè)計(jì)中,采用獨(dú)熱碼〔one-hot-coding)既可以使電路性能得到保證又可充分利用其觸發(fā)器數(shù)量多的優(yōu)勢(shì),也可以采取輸出編碼的形狀指定來(lái)簡(jiǎn)化電路構(gòu)造,并提高形狀機(jī)的運(yùn)轉(zhuǎn)速度4、選定觸發(fā)器的類型并求出形狀方程、驅(qū)動(dòng)方程和輸出方程;5、按照方程得出邏輯圖用VerilogHDL來(lái)描畫有限形狀機(jī),可以充分發(fā)揚(yáng)硬件描畫言語(yǔ)的籠統(tǒng)建模才干,運(yùn)用always塊語(yǔ)句和case〔if〕等條件語(yǔ)句及賦值語(yǔ)句即可方便地實(shí)現(xiàn)。詳細(xì)的邏輯化簡(jiǎn)及邏輯電路到觸發(fā)器映射均可由計(jì)算機(jī)自動(dòng)完成,上述設(shè)計(jì)步驟中的第2步及4、5步不再需求很多的人為干涉,使電路設(shè)計(jì)任務(wù)得到簡(jiǎn)化,效率也有很大的提高。第五章VerilogHDL言語(yǔ)〔二〕五、設(shè)計(jì)可綜合的形狀機(jī)的指點(diǎn)原那么1、用verilogHDL言語(yǔ)設(shè)計(jì)可綜合的形狀機(jī)的指點(diǎn)原那么在設(shè)計(jì)采用FPGA實(shí)現(xiàn)的形狀機(jī)時(shí),建議采用獨(dú)熱碼形狀機(jī);建議采用case、casex或casez語(yǔ)句來(lái)建立形狀機(jī)模型,在case的最后一定要寫default,并將形狀變量設(shè)置為’bx;假設(shè)將默許形狀設(shè)計(jì)為某一確定的形狀行不行?要留意一個(gè)問題:雖然綜合器產(chǎn)生的邏輯和設(shè)置default:state=’bx時(shí)一樣,但是形狀機(jī)的模型綜合前和綜合后的仿真結(jié)果會(huì)不一致。由于啟動(dòng)仿真器時(shí),形狀機(jī)一切的輸入都不確定,因此立刻進(jìn)入default形狀,這樣的設(shè)置便會(huì)將形狀變量設(shè)為state1,但是實(shí)踐硬件電路的形狀機(jī)在通電后進(jìn)入的形狀是不確定的,很能夠不是state1的形狀,因此還是設(shè)置default:state=’bx與實(shí)踐情況相一致。但在有多余形狀情況下,還是可以經(jīng)過綜合指令將默許形狀設(shè)置為某一確定的有效形狀,由于這樣能使形狀機(jī)在偶爾進(jìn)入多余形狀后,能在下一個(gè)時(shí)鐘跳變時(shí)前往正常任務(wù)形狀,否那么會(huì)引起死鎖。第五章VerilogHDL言語(yǔ)〔二〕形狀機(jī)應(yīng)該有一個(gè)異步或同步復(fù)位端,以便在通電時(shí)將硬件電路復(fù)位到有效形狀;在veriloghdl中,形狀必需明確賦值,通常運(yùn)用參數(shù)或宏定義語(yǔ)句加上賦值語(yǔ)句來(lái)實(shí)現(xiàn)Parameterstate1=2’h1,satate2=2’h2;………Current_state=state2;第五章VerilogHDL言語(yǔ)〔二〕2、綜合的普通原那么綜合之前一定要進(jìn)展仿真;每一次規(guī)劃布線之后都要進(jìn)展仿真,在器件編程或流片之前要做最后的仿真;用verilogHDL描畫的異步形狀機(jī)是不能綜合的;假設(shè)要為電平敏感的鎖存器建模,運(yùn)用延續(xù)賦值語(yǔ)句是最簡(jiǎn)單的方法第五章VerilogHDL言語(yǔ)〔二〕3、語(yǔ)句指點(diǎn)原那么always:每個(gè)always塊只能有一個(gè)事件控制@(event-expression),而且要緊跟在always關(guān)鍵字的后面;always塊可以表示時(shí)序邏輯或者組合邏輯,也可以用always塊既表示電平敏感的透明鎖存器又同時(shí)表示組合邏輯,但是不引薦運(yùn)用這種描畫方法,由于這容易產(chǎn)生錯(cuò)誤和多余的電平敏感的透明鎖存器;帶有posedge或negedge關(guān)鍵字的事件表達(dá)式表示沿觸發(fā)的時(shí)序邏輯,沒有posedge或negedge關(guān)鍵字的表示組合邏輯或電平敏感的鎖存器,或者兩種都表示;每個(gè)表示時(shí)序的always塊中只能由一個(gè)時(shí)鐘跳變沿觸發(fā),置位或復(fù)位最好也由該時(shí)鐘跳變沿出發(fā);第五章VerilogHDL言語(yǔ)〔二〕每個(gè)always塊賦值的信號(hào)都必需定義成reg型或整型;always塊中應(yīng)該防止組合邏輯反響回路。每次執(zhí)行always塊時(shí),在生成組合邏輯的always塊中賦值的一切信號(hào)必需有明確的值;否那么,需求設(shè)計(jì)者在設(shè)計(jì)中參與電平敏感的鎖存器來(lái)堅(jiān)持賦值前的最后一個(gè)值。只需這樣,綜合器才干正常生成電路;假設(shè)不這樣做,綜合器就會(huì)發(fā)出警告,提示設(shè)計(jì)中插入了鎖存器。用always塊設(shè)計(jì)純組合邏輯電路時(shí),在生成組合邏輯的always塊中參與賦值的一切信號(hào)都必需有明確的值,即在賦值表達(dá)式右端參與賦值的信號(hào)都必需在always@(敏感電平列表〕中列出。第五章VerilogHDL言語(yǔ)〔二〕賦值:對(duì)一個(gè)存放器型〔reginteger)變量給定的賦值,只允許在一個(gè)always塊內(nèi)進(jìn)展,如在另一個(gè)always塊中也對(duì)其賦值,那么是非法的;把某信號(hào)賦值為‘bx,綜合器就把它解釋成無(wú)關(guān)形狀,因此綜合器為其生成的硬件電路最簡(jiǎn)約。第五章VerilogHDL言語(yǔ)〔二〕4、形狀機(jī)的置位與復(fù)位〔1〕形狀機(jī)的異步置位與復(fù)位異步置位與復(fù)位是與時(shí)鐘無(wú)關(guān)。當(dāng)異步置位與復(fù)位信號(hào)到來(lái)時(shí),它們立刻分別置觸發(fā)器的輸出為1或0,不需求等到時(shí)鐘沿到來(lái)時(shí)才置位或復(fù)位。形狀機(jī)的異步置位與復(fù)位是用always塊和事件控制實(shí)現(xiàn)的。事件控制語(yǔ)法:事件控制語(yǔ)法:@(<沿關(guān)鍵詞時(shí)鐘信號(hào)or沿關(guān)鍵詞復(fù)位信號(hào)or沿關(guān)鍵詞置位信號(hào)〉)沿關(guān)鍵詞:posedge,negedge.信號(hào)可以按恣意順序列出。第五章VerilogHDL言語(yǔ)〔二〕事件控制實(shí)例異步高電平有效的置位〔時(shí)鐘上升沿〕@(posedgeclkorposedgeset);異步低電平有效的置位〔時(shí)鐘上升沿〕@(posedgeclkornegedgeset);異步低電平有效的置位和高電平有效的復(fù)位〔時(shí)鐘上升沿〕@(posedgeclkornegedgesetorposedgereset);第五章VerilogHDL言語(yǔ)〔二〕帶有異步高電平有效的置位與復(fù)位的always塊:always@(posedgeclkorposedgesetorposedgereset)beginif(reset)begin//置輸出為0endelseif(set)begin//置輸出為1endelsebegin//與時(shí)鐘同步的邏輯endend第五章VerilogHDL言語(yǔ)〔二〕帶有異步高電平有效的置/復(fù)位的D觸發(fā)器:moduledff1(q,qb,d,clk,set,reset);inputd,clk,set,reset;outputq,qb;regq,qb;always@(posedgeclkorposedgesetorposedgereset)beginif(reset)beginq<=0;qb<=1;end第五章VerilogHDL言語(yǔ)〔二〕elsebeginif(set)beginq<=1;qb<=0;endelsebeginq<=d;qb<=~d;endendendmodule第五章VerilogHDL言語(yǔ)〔二〕〔2〕形狀機(jī)的同步置位與復(fù)位同步置位與復(fù)位是指只需在時(shí)鐘的有效跳變沿時(shí)辰置位或復(fù)位,信號(hào)才干使觸發(fā)器置位或復(fù)位。因此不要將set和reset信號(hào)名列入always塊的事件控制表達(dá)式,由于當(dāng)它們有變化時(shí)不應(yīng)觸發(fā)always塊的執(zhí)行。相反,always塊的執(zhí)行應(yīng)只由時(shí)鐘有效跳變沿觸發(fā),能否置位或復(fù)位應(yīng)在always塊中檢查set和reset信號(hào)的電平。所以,set和reset的電平維持時(shí)間必需大于時(shí)鐘的間隔時(shí)間,否那么set和reset不能每次都能有效地完成置位或復(fù)位的任務(wù)。事件控制語(yǔ)法:@(<沿關(guān)鍵詞時(shí)鐘信號(hào)〉)沿關(guān)鍵詞:posedge,negedge.第五章VerilogHDL言語(yǔ)〔二〕事件控制實(shí)例同步的具有高電平有效的置位與復(fù)位的always塊:always@(posedgeclk)beginif(reset)begin//置輸出為0endelseif(set)begin//置輸出為1endelsebegin//與時(shí)鐘同步的邏輯endend第五章VerilogHDL言語(yǔ)〔二〕同步的具有高電平有效的置位與復(fù)位的D觸發(fā)器:moduledff2(q,qb,d,clk,set,reset);inputd,clk,set,reset;outputq,qb;regq,qb;always@(posedgeclk)beginif(reset)beginq<=0;qb<=1;end第五章VerilogHDL言語(yǔ)〔二〕elsebeginif(set)beginq<=1;qb<=0;endelsebeginq<=d;qb<=~d;endendendmodule第五章VerilogHDL言語(yǔ)〔二〕第五章VerilogHDL言語(yǔ)〔二〕六、阻塞和非阻塞賦值的不同1、阻塞和非阻塞的不同阻塞和非阻塞賦值的言語(yǔ)構(gòu)造是VerilogHDL言語(yǔ)中最難了解的概念之一。兩個(gè)要點(diǎn):在描畫組合邏輯的always塊中運(yùn)用阻塞賦值,那么綜合成組合邏輯的電路構(gòu)造;在描畫時(shí)序邏輯的always塊中運(yùn)用非阻塞賦值,那么綜合成時(shí)序邏輯的電路構(gòu)造
方程式右手方向的表達(dá)式或變量--------RHS方程式左手方向的表達(dá)式或變量--------LHS第五章VerilogHDL言語(yǔ)〔二〕〔1〕阻塞賦值阻塞賦值操作的符號(hào)=。在操作時(shí),先計(jì)算RHS部分的值,此時(shí)賦值語(yǔ)句不允許任何別的語(yǔ)句的干擾,直到先行的賦值完成,即將RHS的值賦值給LHS后,才允許別的賦值語(yǔ)句的執(zhí)行-------阻塞的原由。所謂阻塞的概念是指在同一個(gè)always塊中,后面的賦值語(yǔ)句是在前一句賦值語(yǔ)句終了后再開場(chǎng)賦值的。假設(shè)在一個(gè)過程塊中阻塞賦值的RHS變量正好是另一個(gè)過程塊中阻塞賦值的LHS變量,這兩個(gè)過程塊又用同一個(gè)時(shí)鐘沿觸發(fā),這時(shí)阻塞賦值操作就會(huì)出現(xiàn)問題,即假設(shè)阻塞賦值的順序安排不好,就會(huì)出現(xiàn)競(jìng)爭(zhēng)。而假設(shè)這兩個(gè)阻塞賦值操作用同一個(gè)時(shí)鐘沿觸發(fā),那么執(zhí)行的順序是無(wú)法確定的。第五章VerilogHDL言語(yǔ)〔二〕【例1】采用阻塞賦值的反響振蕩器modulefboscl(y1,y2,clk,rst);inputclk,rst;outputy1,y2;regy1,y2;always@(posedgeclkorposedgerst)if(rst)y1=0;elsey1=y2;always@(posedgeclkorposedgerst)if(rst)y2=1;elsey2=y1;endmodule第五章VerilogHDL言語(yǔ)〔二〕〔2〕非阻塞賦值非阻塞賦值操作的符號(hào)<=。在操作時(shí),先計(jì)算RHS部分的值,當(dāng)賦值操作時(shí)辰終了時(shí)更新LHS,在計(jì)算非阻塞賦值的RHS的表達(dá)式和更新LHS期間,其它的Verilog語(yǔ)句,包括其它的非阻塞賦值語(yǔ)句都能同時(shí)計(jì)算RHS表達(dá)式和更新LHS。非阻塞賦值允許其它的語(yǔ)句同時(shí)進(jìn)展操作。非阻塞賦值的操作由兩個(gè)部分組成:在賦值時(shí)辰開場(chǎng)時(shí),計(jì)算非阻塞賦值RHS表達(dá)式在賦值時(shí)辰終了時(shí),更新非阻塞賦值LHS表達(dá)式非阻塞賦值操作只能用于對(duì)存放器類型變量進(jìn)展賦值,因此只能用在‘initial’塊和‘a(chǎn)lways’塊等過程塊中,而非阻塞賦值不允許用于延續(xù)賦值第五章VerilogHDL言語(yǔ)〔二〕【例2】采用阻塞賦值的反響振蕩器modulefboscl(y1,y2,clk,rst);inputclk,rst;outputy1,y2;regy1,y2;always@(posedgeclkorposedgerst)if(rst)y1<=0;elsey1<=y2;always@(posedgeclkorposedgerst)if(rst)y2<=1;elsey2<=y1;endmodule第五章VerilogHDL言語(yǔ)〔二〕2、VerilogHDL編程要點(diǎn)時(shí)序電路建模時(shí),用非阻塞賦值;鎖存器電路建模時(shí),用非阻塞賦值;用always塊建立組合邏輯模型時(shí),用阻塞賦值;在同一個(gè)always塊中建立時(shí)序和組合邏輯電路時(shí),用非阻塞賦值;在同一個(gè)always塊中不要既用非阻塞賦值又用阻塞賦值;不要在一個(gè)以上的always塊中為同一個(gè)變量賦值;用$strobe系統(tǒng)義務(wù)來(lái)顯示用非阻塞賦值的變量值;在賦值時(shí)不要運(yùn)用#0延遲。第五章VerilogHDL言語(yǔ)〔二〕3、自
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度滅火器維修保養(yǎng)與定期檢查合同
- 揚(yáng)州教師聘用合同范本(2篇)
- 二零二五年度銷售人員聘用及風(fēng)險(xiǎn)管理合同
- 2025年度影視制作公司員工薪酬合同模板版
- 物流跨境合作協(xié)議書(2篇)
- 物流公司承包協(xié)議書(2篇)
- 二零二五年度跆拳道館場(chǎng)地安全使用規(guī)范協(xié)議
- 2025年度高新技術(shù)成果知識(shí)產(chǎn)權(quán)歸屬及收益分配協(xié)議
- 2025年度家庭育兒保姆與兒童全面成長(zhǎng)支持合同
- 2025年度經(jīng)典創(chuàng)始股東協(xié)議書-股權(quán)結(jié)構(gòu)優(yōu)化與風(fēng)險(xiǎn)防控
- 2025江蘇南京市金陵飯店股份限公司招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 公共政策分析 課件匯 陳振明 第0-9章 導(dǎo)論、緒論:政策科學(xué)的“研究綱領(lǐng)”- 政策監(jiān)控
- C語(yǔ)言程序設(shè)計(jì) 教案
- 2025年牛津譯林版英語(yǔ)七年級(jí)下冊(cè)全冊(cè)單元重點(diǎn)知識(shí)點(diǎn)與語(yǔ)法匯編
- 《小學(xué)作文指導(dǎo)》課件
- 小學(xué)六年級(jí)數(shù)學(xué)方程應(yīng)用題100道及答案解析
- 2025新譯林版英語(yǔ)七年級(jí)下單詞表
- 海洋工程設(shè)備保溫保冷方案
- 文藝演出排練指導(dǎo)服務(wù)合同
- 人教版(2024新版)一年級(jí)上冊(cè)數(shù)學(xué)第一單元《數(shù)學(xué)游戲》單元整體教學(xué)設(shè)計(jì)
- 魏寧海超買超賣指標(biāo)公式
評(píng)論
0/150
提交評(píng)論