北郵數電 愛課堂答案 Verilog專題
1.在以下的積體電路元件中,無法用Verilog HDL語言描述的是______。
A.四或非門CD4001
B.微控制器8051
C.譯碼器74138
D.整合運放uA741
E.電壓比較器LM311
積體電路可分為模擬IC和數字IC。模擬IC:處理連續性的聲、光、電、電磁波、速度和溫度等自然模擬訊號的積體電路為通常意義上的模擬IC。
Verilog HDL是一種用於數位電路設計的硬體描述語言(Hardware Description Language,HDL) ,可以進行數位電路的模擬驗證、時序分析、邏輯綜合等。
Verilog只能描述數位電路,無法描述類比電路IC。
2.在Verilog HDL中,已知“a=1b'1; b=3b'001;”,那麼{a,b}=____.
{a, b}意思是將a與b相連線,因此{a,b}的結果為4b'1001.
3.在Verilog HDL中,不屬於並行語句的是____。
在Verilog HDL語言中, case 語句是一種多分支選擇語句。
4. 在begn…end中的變數只能被宣告為reg型別。
5. 在Verilog HDL語言中,若a=4b'1011,則&a=____.
&作為單目運算子使用時,表示的是縮減運算子(reduction operator)中的一種,計算過程為: &a=1&0&1&1=0, 故答案為D選項。
6.若P、Q、R都是4bit的輸入向量,下面哪一種表達形式是正確的_
A. input P[3:0],Q,R;
B. input P,Q,R[3:0];
C. input P[3:0],Q[3:0],R[3:0];
D. input [3:0]P,Q,R;
解析:
I/O說明的格式為:
(1)輸入口: input [訊號位寬-1:0] 埠名;
(2)輸出口: output[訊號位寬-1:0] 埠名;
7. Verilog HDL中,b被賦成新值a的操作並不是立刻完成,而是在塊結束時才完成,且塊內多條賦值語句在塊結束時同時賦值的形式,被稱為 非阻塞賦值方式 ,賦值語句為 b<=a 。
非阻塞賦值(b <= a)的賦值方式:
(1)在語句塊中,上面語句所賦予的變數值不能立即就為下面的語句使用;
(2)塊結束後才能完成這次賦值操作,而所賦的變數值是上一次賦值所得到的;
(3)在編寫可綜合的時序邏輯模組時,這是最常用的賦值方法。
8. always塊與assign語句是併發執行的,assign語句一定要放在always塊之外。(對)
9.在Verilog HDL中,“a=4'b1001, b=4'bx110"選出正確的運算結果:
A. a&b = 0
B. a&&b = 1
C. b&a = x
D. b&&a = x
在Verilog HDL語言中, &代表的是按位與, &&代表的是邏輯與。
故本題中,a&b 的結果為4'bx000 (x與1邏輯與運算結果為x),
a&&b的結果為邏輯1 (只要不為0,均視為邏輯1),
綜上B為正確選項。
10. 串列埠通訊中可以使用偶校驗檢錯,方法是在要傳送的位元組中加入校驗位,使輸出的9位資料中出現1的次數永遠為偶數。可以實現該校驗的Verilog 描述為____.
A. assign output[8:0] = {1'b1, input[7:0]}; .
B. assign output[8:0] = {1'b0, input[7:0]};
C. assign output[8:0] = {~input[7:0], input[7:0]};
D. assign output[8:0] = {^input[7:0], input[7:0]};
由題描述,偶校驗驗錯是指:當輸出資料中有奇數個1時校驗碼為1,
而當輸出資料中有偶數個1時校驗碼為0,
其中校驗碼加在資料末尾。
顯然A、B選項的描述是有失偏頗的。
對於C,~是取反操作,拼接之後會形成16位數,賦值操作將報錯。
對於D,^為縮減運算子(異或操作):偶數個1異或為0,奇數個1異或為1,與題目描述功能符合.
11. 資料傳送端使用偶校驗傳送9位資料欄位,在該欄位中,若1的出現次數是偶數次,則資料有效,valid訊號輸出1,則判斷資料是否有效的正確Verilog實現是___。
A. assign valid = ~&input[8:0];
B. assign valid = ~input[8:0];
C. assign valid = ^input[8:0];
D. assign valid = ~^input[8:0];
本題答案選D。此題在問題10的基礎上需要著重注意操作符順序選取。
對於A,&為縮減運算子(與操作)。只要input中存在一個0則valid就被賦值為1。
而B中右端是一個九位二進位制數,賦值操作會出錯。
D中~^並不是指同或,而是先對input縮減運算異或運算,再取反。
12. 低密度FPGA常使用四輸入查詢表實現可程式設計組合邏輯,其原理用Verilog描述如下:
module lut4(in, table, out)
input [3:0] in;
input [15:0] table;
output out;
assign out = table[in];
endmodule
若想實現四輸入與門,in 為輸入,out 為輸出,則table 應該輸入
A.16'b000000000000001
B.16'd1024
C.16'hF000
D.16'h8000
四輸入查詢表實現的功能是通過4為input輸入,通過一定對映關係在table表中輸出查詢值。要想實現四輸入與門,即有:當且僅當輸入全為1時table值為1,即table[15]=1。
故table應輸入2'b1000_0000_0000_0000=16'd32768=16'h8000。
13.以下Verilog程式碼可實現USB傳輸中的迴圈冗餘校驗,其生成多項式為: x^16+x^15+x^2+1。
module crc16(data, crc, newcrc);
input data;
input [15:0] crc.
output [15:0] newcrc;
wire d = data;
wire c = crc;
assign newcrc[15:0]= {d^c[14]^c[15],c[13:2],d^c[1]^c[15], c[0],d^c[15]};
endmodule
對於該模組,以下理解中正確的是
A.該模組輸入資料data是以位元組為單位的
B.該模組是組合邏輯,不需要時鐘訊號驅動即可輸出結果
C.newcrc是輸出訊號,預設是reg型別
D.該模組複雜冗餘,不可綜合
A選項錯誤,1位元組=8bit,1bit代表的是一位二進位制數,資料data是以位元為單位的。
B項正確,任意時刻輸出只與對應時刻的輸入有關。
C選項錯誤,newcrc預設是wire型別,只有在always等模組中變數賦值需要定義為reg型別。
14.用組合邏輯可實現一位半加器. a,b為輸入,c為輸出,不正確的Verilog描述是
A. assign = a + b;
B. assign = a ^ b;
C. assign ={a ,b};
D. always @(*)c=a+b;
A為或運算子,B為異或運算子,C為拼接運算子,
D為一always模組,其中*代表所有變數,
顯然c若是作為a、b的拼接輸出是錯誤的。
15. 以下Verilog程式碼可以實現全加器的功能: assign {m,n}= a + b + cin;
對該程式碼理解不正確的是___.
A. m為進位輸出,n是全加器的和
B. m和n一定是wire型變數
C. m == a & b & cin
D. n == a ^ b ^ cin
如題所示,assign 實現的是連續賦值語句,
其中m代表進位cout,n代表全加器加法結果sum,即A正確。
assign是對wire型變數賦值,即B正確。
C錯誤,邏輯不正確。
若a、b、cin中有奇數個1則n輸出為1,即為異或關係,D正確。
16. 在Verilog HDL中,非阻塞賦值是指在過程塊內當前賦值語句不會阻斷其後的語句,該操作只能用於"initial"塊和"always"塊等過程塊中reg型變數賦值。(對)
在"initial"和"always"等模組中給變數賦值,變數型別應為reg型,即暫存器型別;
非阻塞賦值就是指賦值會在模組執行結束之後再進行,不會阻斷其後的語句。
17. 下面的Verilog程式碼實現了___功能。
A.半加器 B.全減器 C.乘法器 D.以上都不對
module SomeModule(a, b, C1, C2, S);
input a,b,C1;
output C2,S;
wire x, y, z;-
xor xor1(x, a, b);
xor2(S, x, C1);-
and andl(y, a, b);
and2(z, C1, x);
or or1(C2, y, z);
endmodule
本題首先要明確輸入輸出變數:其中a、b、C1是輸入,C2、s是輸出變數。
事實上,輸入輸出變數的命名就給我們提供了很大的提示,可以聯想到可能是全加器.
接下來進行具體功能分析:
S輸出的是三個變數的異或運算結果,
C2輸出的是輸入中兩個及兩個以上為高電平的情況,
功能與全加器符合!
18. 以下Verilog程式碼是按鍵消抖程式的一部分,實現了按鍵訊號的跨時鐘域同步,其中PB為按鍵訊號輸入,在以下理解中,正確的是___.
A.在數位電路中按鍵消抖只是一種傳說,無法實現
B.按鍵消抖完全可以使用組合邏輯實現
C.PB_sync_1 永遠比PB_sync_0滯後一個clk週期
D.可以使用event訊號識別按鍵訊號PB的下降沿
reg PB_sync_0, PB_sync_1;
always @(posedge clk)
begin
PB_sync_0 <= PB;
PB_sync_1 <= PB_sync_0;
end
wire event = PB_sync_0 & ~PB_sync_1
A選項,按鍵消抖不是傳說,相信很多同學都通過小腳丫實現了按鍵消抖!
B選項,按鍵消抖通過時序邏輯實現;
C選項,注意到是非阻塞賦值,即該賦值語句不會影響下面語句執行,在模組結束後再執行賦值操作,故在PB輸入後PB_sync_1永遠比PB_sync_0滯後一個clk週期。
D選項,識別的目的在於若輸入訊號在clk一個週期後保持不變,則確認為按鍵按下。若用event來識別下降沿,假設PB_sync_0先變為低電平,此時PB_sync_1還為高電平,則輸出為低電平;當一個clk週期後PB_sync_1 變為低電平時,輸出仍不變為低電平(無論PB_sync_1變不變,輸出均為低電平)。
19. 在進行邏輯模擬時,某同學使用Verilog HDL實現了模組"testbench0",用來測試現有模組"blackbox"的邏輯功能,對該程式碼正確的理解是___。
A.模組testbench0可用於模擬,不可綜合
B.模組testbench0描述了或門,其中a和b為輸入,c為輸出
C.模擬時,clk 訊號的頻率為100MHz
D.模擬條件過於理想,與現實情況不符,沒有必要進行模擬
`timescale 10ns/1ns
module testbench0;
reg a, b, clk;
wire c;
initial begin
a=0;b= 0;
#10 a= 1;
#10 a=0;b= 1;
#10 a= 1;
#10 $finish;
end
always #1 clk = ~clk;
blackbox bb(clk, a, b, c);
endmodule
選項A,與可綜合Verilog程式碼所不同的是,testbench是在計算機主機.上的模擬器中執行的,其只能用於模擬,而不能綜合。
選項B,別人都是blackbox 了,實現什麼功能我們無從得知。
選項C,對於timescale 10ns/1ns而言,前面的10ns描述的單位時間延遲,即#1 進行時延的單位是10ns,而後面的1ns是指時間精度,可達到1ns, clk訊號是01、01不斷變化,週期為2*10ns,頻率為50MHz。
選項D,對於一個問題的研究往往是由淺入深,從理想到複雜,大躍進般的思想在數電學習中一定是行不通的!
20. 某Verilog HDL程式碼如下,則該模組的邏輯功能為___.
A.比較器 B.資料選擇器 C.譯碼器 D.以上都不對
module ex02 (out, a, b, sel);
output out;
input a, b, sel;
reg out;
always @(a or b or sel )
begin
case (sel)
1'b0: out = a;
1'bl: out = b;
default: out = 'bx;
endcase
end
endmodule
由Verilog程式碼所示功能,當sel為0時,out=a;
當sel=1時,out=b。
實質上代表的是一個資料選擇器。
© 2020 北郵學習部,All rights reserved.
筆者編輯整理
相關文章
- 課堂
- 活動預告|網路安全攻與防專題課堂
- 西湖邊 課堂前|《資料安全實踐專題培訓》即將開課
- Python入門第7課——tuple變數(只讀課堂)Python變數
- 北郵CSAPP第二章之浮點數APP
- 北郵CSAPP第二章之整數表示APP
- Writeup-北郵新生賽MRCTF-Misc題:ezmisc
- 網易雲課堂影片課件課程下載工具,如何在電腦端下載網易雲課堂影片課程課件資料到本地?
- 課堂練習
- 鮮棗課堂:大唐電信的滄桑往事
- Python入門第5課——字串變數初級(只讀課堂)Python字串變數
- 楊老師課堂之JavaSe部分面試題Java面試題
- 阿里面試題BIO和NIO數量問題附答案和程式碼 java愛好者阿里面試題Java
- 《軟體工程導論》課後習題答案軟體工程
- 牛客網 比較奇偶個數(水、北郵機試)
- 課堂知識整理
- 9.23課堂作業
- 課堂筆記4筆記
- linux課堂視訊Linux
- hadoop課堂筆記Hadoop筆記
- 2020清北學堂秋季營感想——HoarfrostROS
- 學堂線上影片課件課程下載工具,如何在電腦端下載學堂線上影片課程課件資料PDF,PPT到本地?
- 教你爬取騰訊課堂、網易雲課堂、mooc等所有課程資訊
- 程式設計平臺-北郵程式設計
- sql 經典面試題及答案(選課表)SQL面試題
- 對分課堂總結
- 如何搭建“網路課堂”
- 網付課堂:數字化轉型是什麼意思
- [Electron]仿寫一個課堂隨機點名小專案隨機
- 綠盟星課堂公益直播課,來了
- Python快速程式設計入門課後程式題答案Python程式設計
- 2024/11/30課堂記錄
- 2024/12/7課堂記錄
- python 實現課堂練習Python
- 7/21日課堂總結
- 5月26號課堂加分
- 3月27課堂測試
- 江民小課堂之防毒引擎防毒