東華大學(xué)可編程ASIC技術(shù)作業(yè)-趙SG講解1000_第1頁(yè)
東華大學(xué)可編程ASIC技術(shù)作業(yè)-趙SG講解1000_第2頁(yè)
東華大學(xué)可編程ASIC技術(shù)作業(yè)-趙SG講解1000_第3頁(yè)
東華大學(xué)可編程ASIC技術(shù)作業(yè)-趙SG講解1000_第4頁(yè)
東華大學(xué)可編程ASIC技術(shù)作業(yè)-趙SG講解1000_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《可編程ASIC技術(shù)》課程作業(yè)20141.舉例說明阻塞賦值和非阻塞賦值有什么本質(zhì)的區(qū)別?非阻塞賦值modulenon_block(c,b,a,clk);outputc,b;inputclk,a;regc,b;always@(posedgeclk)beginb<=a;c<=b;endendmodule阻塞賦值moduleblock(c,b,a,clk);outputc,b;inputclk,a;regc,b;always@(posedgeclk)beginb=a;c=b;endendmodule并阻塞賦值仿真波形圖阻塞賦值仿真波形圖由此可見阻塞賦值是并行賦值,非阻塞賦值是隨機(jī)的。.用持續(xù)賦值語(yǔ)句描述一個(gè)4選1數(shù)據(jù)選擇器。4選1的數(shù)據(jù)選擇器程序:moduIemux4_1(out,in1,in2,in3,in4,se11,se12);inputin1,in2,in3,in4;outputout;inputsell,se12;assignout=sei1?(se12?in4:in3):(se12?in2:in1);endmoduIeSirmlati.『ntidIc:PwictiaDfil◎MwlErTirreOdi:1625ns2111P喻El-i.3mInlcrnt-1.35nsStatErd《第W需-T譽(yù)不電Vilx電Rt1白25]reLO.Djis.9£如.0ns20.0琥5HEJLidL成Ln3tnAFQtEdit5C1E,1A1aaK0aaK1A0*L一冊(cè)J_毋q一*8,■:*1-,4IIF卜.設(shè)計(jì)一個(gè)功能和引腳與74138類似的譯碼器,并仿真。譯碼器程序:moduleencoder(out,in,en);output[7:0]out;/*定義八位二進(jìn)制碼輸出口*/input[2:0]汨;/*定義三位二進(jìn)制碼輸入口*/input[2:0]en;/*三個(gè)使能端*/reg[7:0]out;always@(inoren)beginif(en==3'b100)case(in)3'd0:out=8'b11111110;3'd1:out=8'b11111101;3'd2:out=8'b11111011;3'd3:out=8'b11110111;3'd4:out=8'b11101111;3'd5:out=8'b11011111;3'd6:out=3'd7:out^'boninn;endcaseelseout=;endendmoduIe4.設(shè)計(jì)一個(gè)4位、可預(yù)置、可清零的移位寄存器,并仿真。可預(yù)置、可清零的移位寄存器程序:moduleshift_register(out,in,reset,set,clk);output[7:0]out;//定義四位輸出端inputin,reset,set,clk;//輸入信號(hào)、清零端、置數(shù)端、時(shí)鐘信號(hào)reg[7:0]out;reg[7:0]^^;//置數(shù)寄存器always@(posedgeclk)beginbeginmd=8'b00001101;end//這里預(yù)置數(shù)為00001101,可以根據(jù)需要更改if(reset)beginout<=0;endeIsebeginif(set)beginout〈二md;end//置數(shù)信號(hào)為1,置數(shù)eIsebeginout〈二{out,in};endendendendmodule5.設(shè)計(jì)一個(gè)上升沿觸發(fā)的可預(yù)置、可清零16進(jìn)制計(jì)數(shù)器,并仿真。如果要改為10進(jìn)制計(jì)數(shù)器,應(yīng)對(duì)該設(shè)計(jì)做哪些修改?modulecounter_16(Q,en,clock,clear,S);output[3:0]Q;input[3:0]S;inputen,clock,clear;reg[3:0]Q;always@(posedgeclock)beginif(clear==0)beginQ<=4'b0000;endeIseif(en-1)beginQUS;endeIsebeginQ<=Q+1'b1;endendendmodule10進(jìn)制計(jì)數(shù)器修改增加if(Q>=4'b1001)Q<=4'b0000;//當(dāng)Q的值大于等于9,跳到06.分別用結(jié)構(gòu)描述、數(shù)據(jù)流描述、行為描述三種方式,設(shè)計(jì)一個(gè)2位加法器,并比較上述三種方式各自的優(yōu)缺點(diǎn)。結(jié)構(gòu)描述modulefull_add(a,b,cin,sum,cout);inputa,b,cin;outputsum,cout;wires1,m1,m2,m3;and(m1,a,b),(m2,b,cin),(m3,a,cin);xor(s1,a,b),(sum,s1,cin);or(cout,m1,m2,m3);endmodule‘include“full_add.v”moduleadd_2_1(sum,cout,a,b,cin);inputcin;input[1:0]a,b;output[1:0]sum;outputcout;full_addf0(a[0],b[0],cin,sum[0],cin1);//級(jí)聯(lián)full_addf1(a[0],b[0],cin1,sum[1],cout);endmodule數(shù)據(jù)流描述moduleadd_2_2(a,b,cin,sum,cout);inputcin;input[1:0]a,b;output[1:0]sum;outputcout;assign{cout,sum}=a+b+cin;endmodule行為描述moduleadd_2_3(cout,sum,a,b,cin);output[1:0]sum;outputcout;input[1:0]a,b;inputcin;reg[1:0]sum;regcout;always@(aorborcin)begin{cout,sum}=a+b+cin;endendmodule7.利用狀態(tài)機(jī)設(shè)計(jì)一個(gè)序列檢測(cè)器,該檢測(cè)器在有“101”序列輸入時(shí)輸出為1,其他輸入情況下,輸出為0。請(qǐng)畫出狀態(tài)轉(zhuǎn)移圖,并用Verilog語(yǔ)言描述實(shí)現(xiàn),并仿真。狀態(tài)說明:S0:表示初始狀態(tài);S1:表示檢測(cè)到一個(gè)“1”信號(hào);S2:表示檢測(cè)到一個(gè)“10”信號(hào);S3:表示檢測(cè)到一個(gè)“101”信號(hào);序列檢測(cè)器程序:moduleserial_detected(out,in,clk,reset);outputout;/*結(jié)果輸出端*/input汨;/*串行輸入的數(shù)據(jù)*/input「656七,0山;/*清零信號(hào)、時(shí)鐘信號(hào)*/regout;reg[2:0]S,NS;parameterS0=2'b00,S1=2'b01,S2=2'b10,S3=2'b11;/*狀態(tài)編碼*/always@(posedgeclkornegedgereset)/*根據(jù)輸入信號(hào)更新狀態(tài)*/beginif(!reset)S<=S0;elseS<=NS;endalways?(Sorin)/*根據(jù)輸入,鎖存記憶輸入信號(hào)*/begincase(S)SO:if(in)NSW;elseNS=SO;S1:if(in)NSW;elseNS=S2;S2:if(in)NS=S3;elseNS=SO;if(in)NSW;elseNS=S2;endcaseendalways?(Sorresetorin)/*輸出對(duì)應(yīng)的結(jié)果*/beginif(!reset)out<=0;elseif(S=S3)out*1;eIseout<=0;endendmoduIeSiniuiatiDr'i中『an時(shí)di:msMHastaiTireBai.1G25naMHastaiTireBai.1G25na224nsIntervciL-14.DIh8SlatEnd:.設(shè)計(jì)一個(gè)加法器,實(shí)現(xiàn)sum=a0+a1+a2+a3,a0、a1、a2、a3寬度都是8位。如用下面兩種方法實(shí)現(xiàn),哪種方法更好一些(即速度更快and/or資源更省)。(1)sum=((a0+a1)+a2)+a3(2)sum=(a0+a1)+(a2+a3).用流水線技術(shù)對(duì)上例中的sum=((a0+a1)+a2)+a3的實(shí)現(xiàn)方式進(jìn)行優(yōu)化,對(duì)比最高工作頻率,并分析說明:流水線設(shè)計(jì)技術(shù)為什么能提高數(shù)字系統(tǒng)的工作頻率?未采用流水線技術(shù)程序:moduleadder8_1(sum,cout,cout1,cout2,a1,a2,a3,a4,cin,clk);output[7:0]sum;/*和*/outputcout1,cout2,cout;/*每執(zhí)行一■個(gè)加法產(chǎn)生的進(jìn)位信號(hào)*/input[7:0]21,22,23,24;/*四個(gè)八位二進(jìn)制數(shù)*/inputcin,clk;/*cin為低位進(jìn)位信號(hào),低位加法時(shí)為0,clk為時(shí)鐘信號(hào)*/reg[7:0]S1,S2,sum;regcout1,cout2,cout;always@(posedgeclk)begin{cout1,S1}=a1+a2+cin;/*第一個(gè)時(shí)鐘來執(zhí)行第一步加法*/endalways@(posedgeclk)begin{cout2,S2}=S1+a3;/*第二個(gè)時(shí)鐘來執(zhí)行第二步加法*/endalways@(posedgeclk)begin{cout,sum}=S2+a4;/*第三個(gè)時(shí)鐘來執(zhí)行第三步加法*/endendmodule采用流水線技術(shù)程序:moduleaddder8_3(cout1,cout2,cout3,sum,a1,a2,a3,a4,cin,clk);output[7:0]sum;/*總和*/outputcout1,cout2,cout3;/*每執(zhí)行兩個(gè)數(shù)相加產(chǎn)生的進(jìn)位信號(hào)*/input[7:0]21,22,23,24;/*四個(gè)加數(shù)*/inputcin,clk;/*低位進(jìn)位信號(hào),作低位加法器為0、時(shí)鐘信號(hào)*/reg[7:0]sum,sum1,sum2;regcout1,cout2,cout3,firstc,secondc,thirdc;reg[3:0]tempa1,tempa2,tempa3,tempb1,tempb2,tempb3,firstsum,secondsum,thirdsum;/*存儲(chǔ)每四位相加的寄存器類型數(shù)*/always@(posedgeclk)begin{firstc,firstsum}=a1[3:0]+a2[3:0]+cin;/*a1和a2低四位相加*/tempa1=a1[7:4];tempb1=a2[7:4];endalways@(posedgeclk)begin{cout1,sum1[7:4]}=tempa1+tempb1+firstc;/*a2和a2高四位相加*/sum1[3:0]=firstsum;endalways@(posedgeclk)begin{secondc,secondsum}=sum1[3:0]+a3[3:0];/*前兩數(shù)的和的低四位和a3低四位相加*/tempa2=sum1[7:4];tempb2=a3[7:4];endalways@(posedgeclk)begin{cout2,sum2[7:4]}=tempa2+tempb2+secondc;/*前兩數(shù)的和的高四位和a3高四位相加*/sum2[3:0]=secondsum;endalways@(posedgeclk)begin{thirdc,thirdsum}=sum2[3:0]+a4[3:0];/*前三數(shù)的和的低四位和a4低四位相加*/tempa3=sum2[7:4];tempb3=a4[7:4];endalways@(posedgeclk)begin{cout3,sum[7:4]}=tempa3+tempb3+thirdc;/*前兩數(shù)的和的高四位和a2高四位相加*/sum[3:0]=thirdsum;endendmodule一級(jí)的寄存器組將大的組合邏輯切割成小的組合邏輯,以犧牲電路的面積來?yè)Q取速度的。.分析下列的VerilogHDL模塊,畫出對(duì)應(yīng)的邏輯圖或?qū)懗鲞壿嫳磉_(dá)式(組),并概括地說明其邏輯功能。moduleexe1(out,d3,d2,d1,d0,s1,s0);outputout3,out2,out1,out0;inputd3,d2,d1,d0,s1,s0;not(not_s1,s1),(not_s0,s0);and(out0,d0,not_s1,not_s0),(out1,d1,not_s1,s0);and(out2,d2,s1,not_s0),(out3,d3,s1,s0);or(out,out0,out1,out2,out3);endmodule根據(jù)不同的si和50,輸出通道進(jìn)行變化:當(dāng)s1=0,s0=0時(shí),out0=d0;當(dāng)s1=0,s0=1時(shí),out1=d1;當(dāng)s1=1,s0=0時(shí),out2=d2;當(dāng)s1=1,s0=1時(shí),out3=d3。邏輯表達(dá)式組:{out0=SlS0d0out1=S1S0d1out2=S1S0d2out3=S1S0d3out=out0+out1+out2+out3實(shí)現(xiàn)的邏輯功能就是典型的數(shù)據(jù)通道選擇器11.分析下列的VerilogHDL模塊,用時(shí)序波圖形或流程框圖描述其行為,并概括地說明其邏輯功能。moduleexe2(fd_out,clk,d,clr);outputfd_out;regfd_out;input[15:0]d;inputclk,clr;reg[15:0]cnt;always@(posedgeclk)beginif(!clr)cnt<=4'h0000;elsebegincnt<=cnt-1;if(cnt==0)beginfd_out<=1;cnt<=d;endelsefd_out<=0;endendendmodule該程序?qū)崿F(xiàn)的是可變模的減法計(jì)數(shù)器,輸出的是每當(dāng)?shù)竭_(dá)設(shè)定模值就輸出1,相當(dāng)于對(duì)設(shè)定模進(jìn)行檢測(cè)。12.分析下列的VerilogHDL模塊,寫出對(duì)應(yīng)的邏輯表達(dá)式(組)或真值表,并概括地說明其邏輯功能。moduleexe3(op_result,func_sel,op_a,op_b);output[7:0]op_result;input[2:0]func_sel;input[3:0]op_a,op_b;reg[7:0]op_result;always@(func_selorop_aorop_b)b

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論