數(shù)字電路應(yīng)用_第1頁
數(shù)字電路應(yīng)用_第2頁
數(shù)字電路應(yīng)用_第3頁
數(shù)字電路應(yīng)用_第4頁
數(shù)字電路應(yīng)用_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

數(shù)字電路應(yīng)用第1頁,課件共65頁,創(chuàng)作于2023年2月裝藥系統(tǒng)的模塊課程任務(wù): 在實(shí)驗(yàn)箱上,通過VHDL語言實(shí)現(xiàn)罐裝系統(tǒng)。第2頁,課件共65頁,創(chuàng)作于2023年2月實(shí)驗(yàn)箱介紹第3頁,課件共65頁,創(chuàng)作于2023年2月課程的主要內(nèi)容數(shù)字系統(tǒng)設(shè)計(jì)的基本概念和方法Verilog語言要素以及語法Verilog語言開發(fā)環(huán)境的使用組合邏輯電路的Verilog實(shí)現(xiàn)時(shí)序邏輯電路的Verilog實(shí)現(xiàn)FPGA(CPLD)的開發(fā)過程,程序的調(diào)試和下載第4頁,課件共65頁,創(chuàng)作于2023年2月課程安排共有6次課第一次課:

講授內(nèi)容:主要了解數(shù)字系統(tǒng)設(shè)計(jì)的基本概念和方法,并介紹Verilog的基本語法,掌握QuartusII軟件的基本使用;。

實(shí)驗(yàn)內(nèi)容:使用Verilog語言在課內(nèi)做七段譯碼器的軟件仿真實(shí)驗(yàn)。第5頁,課件共65頁,創(chuàng)作于2023年2月課程安排第二次課:

講授內(nèi)容:時(shí)序邏輯電路的Verilog實(shí)現(xiàn),Verilog的數(shù)據(jù)流建模。

實(shí)驗(yàn)內(nèi)容:使用Verilog語言在課內(nèi)設(shè)計(jì)BCD碼的加法器,并做軟件仿真實(shí)驗(yàn)。第6頁,課件共65頁,創(chuàng)作于2023年2月課程安排第三次課:

講授內(nèi)容:Verilog中任務(wù)和函數(shù)的學(xué)習(xí)。

實(shí)驗(yàn)內(nèi)容:使用VHDL語言在課內(nèi)設(shè)計(jì)同步計(jì)數(shù)器,并做軟件仿真實(shí)驗(yàn)。第7頁,課件共65頁,創(chuàng)作于2023年2月課程安排第四次課:實(shí)驗(yàn)內(nèi)容:比較器,優(yōu)先編碼器,和碼制轉(zhuǎn)換實(shí)驗(yàn)。第8頁,課件共65頁,創(chuàng)作于2023年2月課程安排第五次課:

講授內(nèi)容:實(shí)驗(yàn)箱的硬件組成以及使用方法;FPGA引腳的分配,程序的下載等。

實(shí)驗(yàn)內(nèi)容:完成裝藥系統(tǒng)各個(gè)分立模塊的調(diào)試,補(bǔ)充未完成的模塊,并在實(shí)驗(yàn)箱上調(diào)試通過。第9頁,課件共65頁,創(chuàng)作于2023年2月課程安排第六次課:

實(shí)驗(yàn)內(nèi)容:完成裝藥系統(tǒng)頂層的設(shè)計(jì),并組合各個(gè)分立模塊為一個(gè)完整的系統(tǒng),在實(shí)驗(yàn)箱上調(diào)試通過。第10頁,課件共65頁,創(chuàng)作于2023年2月Verilog語法概要第11頁,課件共65頁,創(chuàng)作于2023年2月一、Verilog的建模方式由頂向下由底向上等級(jí)方式第12頁,課件共65頁,創(chuàng)作于2023年2月罐裝系統(tǒng)示意圖第13頁,課件共65頁,創(chuàng)作于2023年2月Verilog可以實(shí)現(xiàn)的建模方式行為算法級(jí)建模數(shù)據(jù)流建模門級(jí)建模開關(guān)級(jí)建模第14頁,課件共65頁,創(chuàng)作于2023年2月二、Verilog的基本語法結(jié)構(gòu)模塊聲明,端口說明(參數(shù)說明)endmodule任務(wù)與函數(shù)Wire和reg變量聲明底層模塊的實(shí)例化always以及initial語句,行為建模數(shù)據(jù)流建模第15頁,課件共65頁,創(chuàng)作于2023年2月示例1(與門操作)moduleaddgate(a,b,out);inputa,b;outputout;assignout=a&b;endmodule第16頁,課件共65頁,創(chuàng)作于2023年2月三、數(shù)據(jù)流建模連續(xù)賦值語句assign例子:assignaddr[15:0]=addr1_bits[15:0]^addr2_bits[15:0];assignout=i1&i2;第17頁,課件共65頁,創(chuàng)作于2023年2月數(shù)據(jù)流建模位操作符號(hào)~ NOT& AND| OR^ EXOR~& nand~| 或非^~ 異或非第18頁,課件共65頁,創(chuàng)作于2023年2月例:多路選擇器4選1modulemux4_to_1(out,i0,i1,i2,i3,s1,s0);outputout; inputi0,i1,i2,i3; inputs1,s0;out=(~s1&~s0&i0)|(~s1&s0&i1)|(s1&~s0&i2)|(s1&s0&i3);endmodule第19頁,課件共65頁,創(chuàng)作于2023年2月數(shù)據(jù)流建模算術(shù)操作* 乘/ 除+ 加- 減% 取模** 指數(shù)運(yùn)算第20頁,課件共65頁,創(chuàng)作于2023年2月例4位全加器

modulefulladd4(sum,c_out,a,b,c_in); output[3:0]sum; outputc_out; input[3:0]a,b;inputc_in; assign{c_out,sum}=a+b+c_in;endmodule第21頁,課件共65頁,創(chuàng)作于2023年2月其他操作

== Equalto

!= Notequal

< Lessthan

> Greaterthan

<= Lessthanorequal

>= Greaterthanorequal

&& AND

|| OR第22頁,課件共65頁,創(chuàng)作于2023年2月其他操作

>> Shiftright

<< Shiftleft

+ Add

- Subtract

* Multiply

/ Divide

% Modulus第23頁,課件共65頁,創(chuàng)作于2023年2月數(shù)據(jù)流建模時(shí)延#assign#10out=in1&in2;第24頁,課件共65頁,創(chuàng)作于2023年2月操作優(yōu)先級(jí)操作操作標(biāo)記說明符號(hào)+-!~最高乘除*/%加減+-移位<<>>比較<><=>===位運(yùn)算&~&|~|^^~邏輯&&||條件運(yùn)算?:最低第25頁,課件共65頁,創(chuàng)作于2023年2月四、verilog示例4.1三位加法器的實(shí)現(xiàn)moduleadder(count,sum,a,b,cin);input[2:0]a,b;inputcin;outputcount;output[2:0]sum;assign{count,sum}=a+b+cin;endmodule第26頁,課件共65頁,創(chuàng)作于2023年2月四、verilog示例4.2比較器實(shí)現(xiàn)modulecompare(equal,a,b);outputequal;input[1:0]a,b;assignequal=(a==b)?1:0;

endmodule第27頁,課件共65頁,創(chuàng)作于2023年2月五、verilog中的數(shù)據(jù)類型Verilog有三種主要的數(shù)據(jù)類型:Nets

表示器件之間的物理連接,稱為網(wǎng)絡(luò)連接類型Register表示抽象的儲(chǔ)存單元,稱為寄存器/變量類型Parameter

表示運(yùn)行時(shí)的常數(shù),稱為參數(shù)類型第28頁,課件共65頁,創(chuàng)作于2023年2月五、verilog中的數(shù)據(jù)類型Nets(網(wǎng)絡(luò)連線):由模塊或門驅(qū)動(dòng)的連線。驅(qū)動(dòng)端信號(hào)的改變會(huì)立刻傳遞到輸出的連線上。例如:右圖上,selb的改變,會(huì)自動(dòng)地立刻影響或門的輸出。netsabslselbselanslout第29頁,課件共65頁,創(chuàng)作于2023年2月五、verilog中的數(shù)據(jù)類型連接(Nets)類型變量的種類:在為不同工藝的基本元件建立庫模型的時(shí)候,常常需要用不同的連接類型來與之對(duì)應(yīng),使其行為與實(shí)際器件一致。常見的有以下幾種。

類型功能wire,tri對(duì)應(yīng)于標(biāo)準(zhǔn)的互連線(缺?。﹕upply1,supply2對(duì)應(yīng)于電源線或接地線wor,trior對(duì)應(yīng)于有多個(gè)驅(qū)動(dòng)源的線或邏輯連接wand,triand對(duì)應(yīng)于有多個(gè)驅(qū)動(dòng)源的線與邏輯連接trireg對(duì)應(yīng)于有電容存在能暫時(shí)存儲(chǔ)電平的連接tri1,tri0對(duì)應(yīng)于需要上拉或下拉的連接如果不明確地說明連接是何種類型,應(yīng)該是指wire類型。第30頁,課件共65頁,創(chuàng)作于2023年2月五、verilog中的數(shù)據(jù)類型register型變量能保持其值,直到它被賦于新的值。register型變量常用于行為建模,產(chǎn)生測(cè)試的激勵(lì)信號(hào)。

寄存器(register)類型變量常用行為語句結(jié)構(gòu)來給寄存器類型的變量賦值。abslselbselansloutreg_areg_selreg_b第31頁,課件共65頁,創(chuàng)作于2023年2月五、verilog中的數(shù)據(jù)類型

寄存器(register)類型變量的數(shù)據(jù)類型寄存器類型變量共有四種數(shù)據(jù)類型:類型功能.reg無符號(hào)整數(shù)變量,可以選擇不同的位寬。integer有符號(hào)整數(shù)變量,32位寬,算術(shù)運(yùn)算可產(chǎn)生2的補(bǔ)碼。real有符號(hào)的浮點(diǎn)數(shù),雙精度。time無符號(hào)整數(shù)變量,64位寬第32頁,課件共65頁,創(chuàng)作于2023年2月五、verilog中的數(shù)據(jù)類型取值0、低、偽、邏輯低、地、VSS、負(fù)插入01XZ0bufbufbufbufif11、高、真、邏輯高、電源、VDD、正插入X、不確定:邏輯沖突無法確定其邏輯值HiZ、高阻抗、三態(tài)、無驅(qū)動(dòng)源第33頁,課件共65頁,創(chuàng)作于2023年2月五、verilog中的數(shù)據(jù)類型向量的申明wire[7:0]bus;//8為總線wire[31:0]busA,busB,busC;//3個(gè)32為總線reg[0:40]virtual_addr;//41位寄存器向量的選擇reg[255:0]data1;//小端reg[0:255]data2;//大端byte=data1[31-:8];//開始位=31,寬度=8=>data[31:24]byte=data1[24+:8];//開始位=24,寬度=8=>data[31:24]byte=data2[31-:8];//開始位=31,寬度=8=>data[24:31]byte=data2[24+:8];//開始位=24,寬度=8=>data[24:31]第34頁,課件共65頁,創(chuàng)作于2023年2月五、verilog中的數(shù)據(jù)類型賦值格式<尺寸>‘<格式><數(shù)值>.尺寸就是占的位寬格式為h,d,b(表示十六進(jìn)制,十進(jìn)制以及二進(jìn)制表示)數(shù)值就是賦值大小例:4'b111112'habc16'd255第35頁,課件共65頁,創(chuàng)作于2023年2月五、verilog中的數(shù)據(jù)類型如何選擇正確的數(shù)據(jù)類型?輸入口(input)可以由寄存器或網(wǎng)絡(luò)連接驅(qū)動(dòng),但它本身只能驅(qū)動(dòng)網(wǎng)絡(luò)連接。輸出口(output)可以由寄存器或網(wǎng)絡(luò)連接驅(qū)動(dòng),但它本身只能驅(qū)動(dòng)網(wǎng)絡(luò)連接。輸入/輸出口(inout)只可以由網(wǎng)絡(luò)連接驅(qū)動(dòng),但它本身只能驅(qū)動(dòng)網(wǎng)絡(luò)連接。如果信號(hào)變量是在過程塊(initial塊或always塊)中被賦值的,必須把它聲明為寄存器類型變量

第36頁,課件共65頁,創(chuàng)作于2023年2月五、verilog中的數(shù)據(jù)類型舉例說明數(shù)據(jù)類型的選擇moduletop;wirey;rega,b;DUTu1(y,a,b);initialbegina=0;b=0;#10a=1;….endendmodule模塊DUT的邊界輸入口輸出口輸出/入口netnetnet/registernetnet/registernetinoutmoduleDUT(Y,A,B_);outputY;inputA,B:wireY,A,B;and(Y,A,B);endmodule第37頁,課件共65頁,創(chuàng)作于2023年2月五、verilog中的數(shù)據(jù)類型選擇數(shù)據(jù)類型時(shí)常犯的錯(cuò)誤在過程塊中對(duì)變量賦值時(shí),忘了把它定義為寄存器類型(reg)或已把它定義為連接類型了(wire)把實(shí)例的輸出連接出去時(shí),把它定義為寄存器類型了把模塊的輸入信號(hào)定義為寄存器類型了。這是經(jīng)常犯的三個(gè)錯(cuò)誤!?。〉?8頁,課件共65頁,創(chuàng)作于2023年2月五、verilog中的數(shù)據(jù)類型參數(shù)(parameters)類型常用參數(shù)來聲明運(yùn)行時(shí)的常數(shù)??捎米址硎镜娜魏蔚胤?都可以用定義的參數(shù)來代替。參數(shù)是本地的,其定義只在本模塊內(nèi)有效。舉例說明:parameterport_id=5;parametercache_line_width=256;parametersigned[15:0]WIDTH;

第39頁,課件共65頁,創(chuàng)作于2023年2月五、verilog中的數(shù)據(jù)類型

Verilog語言支持寄存器陣列的聲明:舉例說明:integerNUMS[7:0];//8個(gè)整型變量的寄存器陣列timet_vals[3:0];//4個(gè)時(shí)間變量的寄存器陣列數(shù)據(jù)類型為reg的陣列常稱為存儲(chǔ)器(即memory):reg[15:0]MEM[0:1023];//1Kx16位的存儲(chǔ)器reg[7:0]PREP[‘hfffe:‘hffff];//2x8位的存儲(chǔ)器可以用參數(shù)來表示存儲(chǔ)器的大小:parameterwordsize=16;parametermemsize=1024;reg[wordsize-1:0]MEM3[memsize-1:0];第40頁,課件共65頁,創(chuàng)作于2023年2月六、行為建模學(xué)習(xí)要點(diǎn)always以及intial語句在行為建模中的使用阻塞和非阻塞過程賦值在行為建模中的時(shí)間控制機(jī)制電平敏感的時(shí)間控制機(jī)制條件指令if和else的使用多路選擇casecasex和casez的使用循環(huán)指令whileforrepeatforever的使用順序和并行語句的實(shí)現(xiàn)第41頁,課件共65頁,創(chuàng)作于2023年2月六、行為建模基本結(jié)構(gòu)–兩個(gè)關(guān)鍵字always和initialinitial在時(shí)間為0的時(shí)候開始執(zhí)行,只是執(zhí)行一次多個(gè)initial同時(shí)執(zhí)行第42頁,課件共65頁,創(chuàng)作于2023年2月六、行為建模modulestimulus;regx,y,a,b,m;initial m=1'b0;initialbegin#5a=1'b1;#25b=1'b0;endinitialbegin#10x=1'b0;#25y=1'b1;endinitial #50$finish;endmodule第43頁,課件共65頁,創(chuàng)作于2023年2月六、行為建模基本結(jié)構(gòu)–兩個(gè)關(guān)鍵字always和initialalways在時(shí)間為0的時(shí)候開始執(zhí)行,循環(huán)執(zhí)行moduleclock_gen(outputregclock);initialclock=1'b0;always #10clock=~clock;initial#1000$finish;endmodule第44頁,課件共65頁,創(chuàng)作于2023年2月六、行為建模過程賦值–阻塞和非阻塞賦值阻塞賦值,(順序執(zhí)行)使用“=”例regx,y,z;reg[15:0]reg_a,reg_b;integercount;initialbeginx=0;y=1;z=1;count=0;//0reg_a=16'b0;reg_b=reg_a;//0#15reg_a[2]=1‘b1; //10個(gè)單位 #10reg_b[15:13]={x,y,z}//25count=count+1;//25單位后賦值end第45頁,課件共65頁,創(chuàng)作于2023年2月六、行為建模過程賦值–阻塞和非阻塞賦值非阻塞賦值,(并行執(zhí)行)使用“<=”例regx,y,z;reg[15:0]reg_a,reg_b;integercount;initialbeginx=0;y=1;z=1;count=0;//0reg_a=16'b0;reg_b=reg_a;//0reg_a[2]<=#151‘b1; //10個(gè)單位 reg_b[15:13]<=#10{x,y,z}//10count=count+1;//0單位后賦值end第46頁,課件共65頁,創(chuàng)作于2023年2月使用非阻塞賦值方式進(jìn)行賦值時(shí),各個(gè)賦值語句同步執(zhí)行;因此,通常在一個(gè)時(shí)鐘沿對(duì)臨時(shí)變量進(jìn)行賦值,而在另一個(gè)時(shí)鐘沿對(duì)其進(jìn)行采樣。六、行為建模下面的模塊綜合為觸發(fā)器,其中采用了阻塞賦值方式:modulebloc(clk,a,b);inputclk,a;outputb;regb;regy;always@(posedgeclk)beginy=a;b=y;endendmodule下面的模塊綜合為兩個(gè)觸發(fā)器,其中采用了非阻塞賦值方式:modulenonbloc(clk,a,b);inputclk,a;outputb;regb;regy;always@(posedgeclk)beginy<=a;b<=y;endendmodule第47頁,課件共65頁,創(chuàng)作于2023年2月上面的兩個(gè)例子的綜合的結(jié)果不同,左邊的例子使用了阻塞賦值方式,綜合器將其綜合為一個(gè)觸發(fā)器。右邊的例子使用了非阻塞賦值方式,綜合器將其綜合為兩個(gè)觸發(fā)器,y將出現(xiàn)在綜合列表中,作為第二個(gè)觸發(fā)器的輸入。綜合結(jié)果如下所示:六、行為建模abclkclkaby第48頁,課件共65頁,創(chuàng)作于2023年2月六、行為建模時(shí)間控制方式-延時(shí)和事件(DELAYandEVENT)延時(shí):#+[時(shí)間]例:#10y=1;y=#5x+z;//xzat0,butyat5#(4:5:6)q=0;//最小,通常,最大第49頁,課件共65頁,創(chuàng)作于2023年2月六、行為建模時(shí)間控制方式-延時(shí)和事件(DELAYandEVENT)事件:符號(hào)@例:@(clock)q=d;@(posedgeclock)q=d;@(negedgeclock)q=d;q=@(posedgeclock)d;第50頁,課件共65頁,創(chuàng)作于2023年2月六、行為建模時(shí)間控制方式-延時(shí)和事件(DELAYandEVENT)事件:符號(hào)@(敏感信號(hào)1,…)例:always@(reset,clock,d)//電平敏感的異步resetbegin if(reset) q=1'b0;elseif(clock) q=d;endalways@(posedgeclk,negedgereset)//邊緣觸發(fā)D觸發(fā)器,并下降沿resetif(!reset) q<=0;elseif(clock) q<=d;end第51頁,課件共65頁,創(chuàng)作于2023年2月六、行為建模時(shí)間控制方式-延時(shí)和事件(DELAYandEVENT)事件:符號(hào)@特殊符號(hào)@*,表示與之相關(guān)的所有信號(hào)always@(aorborcordoreorforgorhorporm)beginout1=a?b+c:d+e;out2=f?g+h:p+m;endalways@*beginout1=a?b+c:d+e;out2=f?g+h:p+m;end第52頁,課件共65頁,創(chuàng)作于2023年2月六、行為建模條件語句—if()elseif()else例1:if(!lock)buffer=data;if(enable)out=in;例2:if(number_queued<MAX_Q_DEPTH)begin data_queue=data; number_queued=number_queued+1;endelse$display("QueueFull.Tryagain");第53頁,課件共65頁,創(chuàng)作于2023年2月六、行為建模條件語句—if()elseif()else例3:if(alu_control==0) y=x+z;elseif(alu_control==1) y=x-z;elseif(alu_control==2) y=x*z;else $display("InvalidALUcontrolsignal");第54頁,課件共65頁,創(chuàng)作于2023年2月六、行為建模多路選擇語句—case、endcasedefault例1:reg[1:0]alu_control;case(alu_control) 2'd0:y=x+z; 2'd1:y=x-z; 2'd2:y=x*z; default: $display("InvalidALUcontrolsignal");endcase第55頁,課件共65頁,創(chuàng)作于2023年2月六、行為建模多路選擇語句—case、endcasedefault例2:4選一多路選擇modulemux4_to_1(out,i0,i1,i2,i3,s1,s0);outputout;inputi0,i1,i2,i3;inputs1,s0;regout;always@(s1ors0ori0ori1ori2ori3)case({s1,s0})2'd0:out=i0;2'd1:out=i1;2'd2:out=i2;2'd3:out=i3;default:$display("Invalidcontrolsignals");endcaseendmodule第56頁,課件共65頁,創(chuàng)作于2023年2月六、行為建模循環(huán)語句—while、fo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論