習(xí)題講解完整_第1頁(yè)
習(xí)題講解完整_第2頁(yè)
習(xí)題講解完整_第3頁(yè)
習(xí)題講解完整_第4頁(yè)
習(xí)題講解完整_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

ASIC復(fù)習(xí)講解(參考答案)4-14.設(shè)計(jì)并驗(yàn)證一個(gè)能統(tǒng)計(jì)8位輸入字中1的個(gè)數(shù),并用4位輸出指示的Verilog模塊。問(wèn)題:如何檢測(cè)輸入8位字中有多少個(gè)1.方法1:逐位統(tǒng)計(jì)有多少個(gè)1;方法2:?4位輸入指示1的個(gè)數(shù)always

@

(posedgeCLK)if(!Reset_n)begincount<=

0;IsCount<=

0;temp<=

0;end

else

if(DataOK)begintemp<=

data;IsCount

<=

1'b1;count<=

0;

end

else

if(IsCount)begin

if(temp>0)begintemp<=temp&

(temp-1);count<=count+

1'b1;

end

else

begin

IsCount

<=

1'b0;count<=count;

end

end

endmodule

`timescale

1ns

/

1psmoduleCount1(

);wireCLK,Reset_n,DataOK;wire

[7:0]data;DataProduceutt(.CLK(CLK),.Reset_n(Reset_n),.DataOK(DataOK),.data(data));reg

[7:0]temp;

//getthedatareg

[3:0]count;

//countoutputregIsCount;//counthowmany1else

if(dataCount==7)begin

data<=

$random;

DataOK

<=

1'b1;

end

else

begin

data<=data;

DataOK

<=

1'b0;

end

always

@(posedgeCLK)if(!Reset_n)begin

dataCount

<=

0;end

else

dataCount

<=

dataCount

+

1'b1;endmodule產(chǎn)生數(shù)據(jù)模塊moduleDataProduce(output

regCLK,output

regReset_n,output

reg

[7:0]data,output

regDataOK);initial

beginCLK<=

0;

forever

#20CLK<=

~CLK;end

initial

begin

Reset_n<=1;

#30Reset_n<=

0;

forever

#100Reset_n<=

1;end

//producedataandDataOKreg

[3:0]dataCount;always

@

(posedgeCLK)if(!Reset_n)begindata<=

0;end

仿真波形另外一種方法moduleCount2(

);

reg

[7:0]data;

wire

[3:0]count;

assigncount=data[0]+data[1]+data[2]+data[3]+data[4]+data[5]+data[6]+data[7];

always

#20data=$random;endmodule`timescale

1ns

/

1psmodulecount3();reg

[7:0]data;reg

[3:0]count;reg

[4:0]temp;always

@

(data)begincount=

0;

for(temp=0;temp<8;temp=temp+1)

if(data[temp])count=count+

1'b1;end

always

#20data=

$random;endmodule

另外一種方法`timescale

1ns

/

1psmodulecount3();reg

[7:0]data;reg

[3:0]count;reg

[4:0]temp;always

@

(data)begincount<=

0;

for(temp=0;temp<8;temp=temp+1)

if(data[temp])count<=count+

1'b1;end

always

#20data=

$random;endmodule

這個(gè)仿真圖是上面哪一個(gè)的?另外一種方法moduleCount4();reg

[7:0]data;reg

[3:0]count;reg

[7:0]temp;always

@

(data)begintemp=data;count=0;

while(temp)begin

if(temp[0])count=count+

1'b1;temp=temp>>1;

end

end

always

#20data=

$random;endmodule

5-14.編寫(xiě)圖P5.14所示電路的Verilog描述,證明:如果D_in的連續(xù)取樣值具有奇數(shù)個(gè)1,那么電路的輸出P_odd有效。wire

tempD;always

@

(posedge

clk)

if(reset)begin

P_odd

<=

0;

end

else

begin

P_odd

<=

tempD;

end

assign

tempD

=

P_odd^D_in;

endmodule證明:完整程序`timescale

1ns

/

1psmodule

ch5_14();reg

clk;reg

D_in;reg

reset;wire

tempD;reg

P_odd;always

@

(posedge

clk)if(reset)beginP_odd

<=

0;end

else

begin

P_odd

<=

tempD;endassign

tempD

=

P_odd^D_in;//testalways

@(posedge

clk)if(reset)begin

D_in

<=

1'b0;end

else

D_in

<=$random;always

#5

clk

=

~clk;initial

begin

reset

=0;

clk

=0;

#20

reset

=

1;

forever

#30

reset

=0;end

endmodule

5-15.設(shè)計(jì)并驗(yàn)證符合下面規(guī)范的4位二進(jìn)制同步計(jì)數(shù)器的Verilog模型:下降沿同步、同步裝載與復(fù)位、數(shù)據(jù)并行裝載和低有效使能計(jì)數(shù)。輸入:時(shí)鐘,使能,復(fù)位,裝載輸出:計(jì)數(shù)`timescale

1ns

/

1psmodule

ch5_15(input

clk,input

reset,input

enable,input

load,input

[3:0]loadData,output

reg

[3:0]Count);always

@

(negedge

clk)if(reset)beginCount

<=

0;endelse

if(enable)

if(load)begin

Count

<=

loadData;

end

else

begin

Count

<=

Count

+

1'b1;

end

else

begin

Count

<=

Count;

end

endmodule

設(shè)計(jì)模塊`timescale

1ns

/

1psmodule

test();reg

clk,reset,enable,load;reg

[3:0]loadData;wire

[3:0]Count;ch5_15

ut(.clk(clk),.reset(reset),.enable(enable),.load(load),.loadData(loadData),.Count(Count));initial

begin

clk

=0;

forever

#10

clk

=

~clk;end

initial

begin

reset

=0;

#15

reset=1;

forever

#70

reset

=0;end

initial

begin

enable

=1;

#

200

enable

=0;

forever

#30

enable

=1;end

initial

begin

load

=0;

#300

load=1;

forever

#20

load=0;end

initial

begin

loadData

=0;

#300

loadData

=7;

forever

#20

loadData

=0;end

endmodule測(cè)試模塊5-19.設(shè)計(jì)并驗(yàn)證模6計(jì)數(shù)器的Verilog模型。為了方便,直接在第15題的基礎(chǔ)上修改那么需要思考,模6的位置放在那里?`timescale

1ns

/

1psmodule

ch5_19(input

clk,input

reset,input

enable,input

load,input

[2:0]loadData,output

reg

[2:0]Count);

always

@

(negedge

clk)if(reset)beginCount

<=

0;endelse

if(enable)

if(load)begin

Count

<=

loadData;

end

else

begin

if(Count==5)begin

Count

<=0;

end

else

begin

Count

<=

Count

+

1'b1;

end

end

else

begin

Count

<=

Count;

end

endmodule

設(shè)計(jì)模塊`timescale

1ns

/

1psmodule

test();reg

clk,reset,enable,load;reg

[3:0]loadData;wire

[3:0]Count;ch5_15

ut(.clk(clk),.reset(reset),.enable(enable),.load(load),.loadData(loadData),.Count(Count));initial

begin

clk

=0;

forever

#10

clk

=

~clk;end

initial

begin

reset

=0;

#15

reset=1;

forever

#70

reset

=0;end

initial

begin

enable

=1;

#

200

enable

=0;

forever

#30

enable

=1;end

initial

begin

load

=0;

#300

load=1;

forever

#20

load=0;end

initial

begin

loadData

=0;

#300

loadData

=5;

forever

#20

loadData

=0;end

endmodule測(cè)試模塊4、綜合軟件的功能是:A)將一個(gè)低級(jí)別的設(shè)計(jì)描述轉(zhuǎn)換為一個(gè)功能上等效的高級(jí)別的設(shè)計(jì)描述;B)將一個(gè)用某一種HDL語(yǔ)言描述的設(shè)計(jì)轉(zhuǎn)換為一個(gè)等效的用另一種HDL語(yǔ)言描述的設(shè)計(jì);C)從一個(gè)設(shè)計(jì)描述中產(chǎn)生一組測(cè)試向量;D)從一個(gè)功能上等效的、高級(jí)別的設(shè)計(jì)描述中產(chǎn)生一個(gè)低級(jí)別的設(shè)計(jì)描述。判斷題1)在理論上,一個(gè)器件能夠永遠(yuǎn)維持其亞穩(wěn)定狀態(tài)。2)一個(gè)器件進(jìn)入亞穩(wěn)定狀態(tài)的可能性隨著時(shí)鐘頻率的升高而增加。3)流水線技術(shù)可以降低系統(tǒng)功率損耗。4)由連續(xù)賦值語(yǔ)句assign賦值的變量可以是reg類(lèi)型。YNYN簡(jiǎn)答題下列程序中initial塊執(zhí)行完后,I,J,A,B的值會(huì)是多少?reg[2:0]A;reg[3:0]B;integerI,J;initialbeginI=0;A=0;I=I-1;A=A-1;B=A;J=J+1;B=B+1;endI=-1J=XA=3’b111B=4’b10003、下面語(yǔ)句的功能是什么?畫(huà)出對(duì)應(yīng)的電路圖。assigndata_out=(CS_b==0)?(WE==0)?data_in

:data_out:1’bz;當(dāng)CS_b為低,如果WE為低,則將data_in的值賦給data_out,否則data_out保持現(xiàn)有值,如果CS_b不為低,則data_out賦高阻值。帶輸出使能的D鎖存器。CDQWEdata_indata_outCS_b填空題

已知:a=4’b0010,b=4’b1110,c=6’b101101,寫(xiě)出下面verilogHDL表達(dá)式的值。①b&c=;②a&&b=;③a>>2=;④c?a:b=;⑤^c=。Verilog中更多的操作是位操作,所以要用簡(jiǎn)單的&|^來(lái)表示1、6’b001100(按位與)2、1(邏輯與)3、4’b0000(右移2位)4、4’b0010(問(wèn)號(hào)運(yùn)算法)

5、0(位異或兩兩依次異或)

填空題

某設(shè)計(jì)人員定義了下列的信號(hào)標(biāo)識(shí)符,其中哪些標(biāo)識(shí)符是非法的Name$,_Name,55Name,-Name,$Name,\-Name,a*b_name,always,Name@163,\Name@163,

/Name@163Verilog命名規(guī)則以字母或下劃線開(kāi)頭的字符串組成了Verilog的標(biāo)識(shí)符。命名中可以使用下劃線和符號(hào)$。如果以反斜線開(kāi)頭,則標(biāo)識(shí)符中可以使用特殊字符(轉(zhuǎn)義標(biāo)識(shí)符)。問(wèn)答題

談?wù)刬nitial過(guò)程塊和always過(guò)程塊的區(qū)別?一個(gè)程序塊可以有多個(gè)initial和always過(guò)程塊。每個(gè)initial和always說(shuō)明語(yǔ)句在仿真的一開(kāi)始同時(shí)開(kāi)始立即執(zhí)行。initial語(yǔ)句只執(zhí)行一次,而always語(yǔ)句則是不斷的重復(fù)活動(dòng),直到仿真結(jié)束。但always語(yǔ)句后跟著的過(guò)程塊是否運(yùn)行,則要看它的觸發(fā)條件是否滿足,如滿足則運(yùn)行過(guò)程塊一次。閱讀下面的testbench,畫(huà)出在整個(gè)仿真期間a,b,c的波形。`timescale10ns/100psmoduletb;rega,b,c;initial

begina=1’b0;b=1’b1;#10a=1’b1;#5b=1’b0;#20a=1’b0;#35b=1’b1;

#15$finish;endInitial#13c=a&b;endmoduleabcx編程題用VerilogHDL語(yǔ)言實(shí)現(xiàn)給定功能:某一輸入為in輸出為out的“1010”序列檢測(cè)器。當(dāng)輸入序列中含“1010”時(shí),輸出out為1,否則out為0。允許輸入碼型的重疊。狀態(tài)機(jī)題目state01outInitInitc10C1(1)c2c10C2(10)Initc30C3(101)OKc10OK(1010)InitC31`timescale

1ns/1psmodulese_de(inputclk,inputreset_n,inputdata_in,output

regOut);parameterinit=

3'd0;parameterC1=

3'd1;parameterC2=

3'd2;parameterC3=

3'd3;parameterOK=

3'd4;reg

[2:0]current_state,next_state;

always

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論