




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
ASIC復(fù)習(xí)講解(參考答案)4-14.設(shè)計并驗證一個能統(tǒng)計8位輸入字中1的個數(shù),并用4位輸出指示的Verilog模塊。問題:如何檢測輸入8位字中有多少個1.方法1:逐位統(tǒng)計有多少個1;方法2:?4位輸入指示1的個數(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
這個仿真圖是上面哪一個的?另外一種方法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.編寫圖P5.14所示電路的Verilog描述,證明:如果D_in的連續(xù)取樣值具有奇數(shù)個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è)計并驗證符合下面規(guī)范的4位二進制同步計數(shù)器的Verilog模型:下降沿同步、同步裝載與復(fù)位、數(shù)據(jù)并行裝載和低有效使能計數(shù)。輸入:時鐘,使能,復(fù)位,裝載輸出:計數(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è)計模塊`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測試模塊5-19.設(shè)計并驗證模6計數(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è)計模塊`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測試模塊4、綜合軟件的功能是:A)將一個低級別的設(shè)計描述轉(zhuǎn)換為一個功能上等效的高級別的設(shè)計描述;B)將一個用某一種HDL語言描述的設(shè)計轉(zhuǎn)換為一個等效的用另一種HDL語言描述的設(shè)計;C)從一個設(shè)計描述中產(chǎn)生一組測試向量;D)從一個功能上等效的、高級別的設(shè)計描述中產(chǎn)生一個低級別的設(shè)計描述。判斷題1)在理論上,一個器件能夠永遠(yuǎn)維持其亞穩(wěn)定狀態(tài)。2)一個器件進入亞穩(wěn)定狀態(tài)的可能性隨著時鐘頻率的升高而增加。3)流水線技術(shù)可以降低系統(tǒng)功率損耗。4)由連續(xù)賦值語句assign賦值的變量可以是reg類型。YNYN簡答題下列程序中initial塊執(zhí)行完后,I,J,A,B的值會是多少?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ī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,寫出下面verilogHDL表達式的值。①b&c=;②a&&b=;③a>>2=;④c?a:b=;⑤^c=。Verilog中更多的操作是位操作,所以要用簡單的&|^來表示1、6’b001100(按位與)2、1(邏輯與)3、4’b0000(右移2位)4、4’b0010(問號運算法)
5、0(位異或兩兩依次異或)
填空題
某設(shè)計人員定義了下列的信號標(biāo)識符,其中哪些標(biāo)識符是非法的Name$,_Name,55Name,-Name,$Name,\-Name,a*b_name,always,Name@163,\Name@163,
/Name@163Verilog命名規(guī)則以字母或下劃線開頭的字符串組成了Verilog的標(biāo)識符。命名中可以使用下劃線和符號$。如果以反斜線開頭,則標(biāo)識符中可以使用特殊字符(轉(zhuǎn)義標(biāo)識符)。問答題
談?wù)刬nitial過程塊和always過程塊的區(qū)別?一個程序塊可以有多個initial和always過程塊。每個initial和always說明語句在仿真的一開始同時開始立即執(zhí)行。initial語句只執(zhí)行一次,而always語句則是不斷的重復(fù)活動,直到仿真結(jié)束。但always語句后跟著的過程塊是否運行,則要看它的觸發(fā)條件是否滿足,如滿足則運行過程塊一次。閱讀下面的testbench,畫出在整個仿真期間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語言實現(xiàn)給定功能:某一輸入為in輸出為out的“1010”序列檢測器。當(dāng)輸入序列中含“1010”時,輸出out為1,否則out為0。允許輸入碼型的重疊。狀態(tài)機題目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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 圖書修復(fù)與保護保證館藏書籍的保存質(zhì)量計劃
- 專業(yè)品牌營銷團隊的組建要點計劃
- 腦卒中的預(yù)防和護理
- 發(fā)展團隊領(lǐng)導(dǎo)能力提升團隊士氣計劃
- 社團工作的組織和具體安排計劃
- 四川峨邊華竹溝礦業(yè)開發(fā)有限公司華竹溝磷礦礦山地質(zhì)環(huán)境保護與土地復(fù)墾方案情況
- 茶飲店基礎(chǔ)知識培訓(xùn)課件
- 肺部粒子植入患者護理
- 2025年曲靖貨運車從業(yè)考試題
- 2025年黔東南貨車資格證考試題
- 花城版三年級上冊音樂教學(xué)計劃
- GB/T 31821-2015電梯主要部件報廢技術(shù)條件
- GB/T 17574.11-2006半導(dǎo)體器件集成電路第2-11部分:數(shù)字集成電路單電源集成電路電可擦可編程只讀存儲器空白詳細(xì)規(guī)范
- 快手磁力聚星知識考試題庫及答案
- 學(xué)校衛(wèi)生監(jiān)督協(xié)管巡查記錄
- 《勾股定理在實際生活中的應(yīng)用》教學(xué)反思
- 游泳池給水排水安裝工程識圖
- 配位鍵和配位化合物課件
- 政 審 表打印模板
- 成人心肺復(fù)蘇(雙人)課件
- 蘇教版數(shù)學(xué)二年級下冊《認(rèn)識時分》教案(無錫公開課)
評論
0/150
提交評論