1.題目:根據rtl圖給出hdl描述
dff的引腳功能:
pre與clr均為非同步控制訊號;pre置高,dff輸出為1;clr置高,dff輸出為0;
分析:訊號優先順序為 \(clr>pre\);當ena為1時,時鐘啟動,clr為0時,模組清零,pre為1時,模組置1;ena為時鐘控制訊號,
module dffa(set,d,clk,en,reset,q);
input d,clk,en,reset,set;
output q;
reg q;
wire pre;
always@(posedge clk,posedge pre,posedge reset)//這裡需注意邊沿觸發和電平觸發不能混用
begin
if(reset)//reset上沿敏感,因此一旦觸發,將為1
q<=0;
else if(pre)
q<=1;
else if(en)
q<=d;
endassign pre=set&(~reset);
assign q=q;
endmodule
/*一些個人糾結問題的思考與解答:
q1:en訊號要放在敏感訊號表中嗎?
a1:不用。en是時鐘控制訊號,always語句對時鐘敏感,那麼進入always語句的前提是時鐘已經開啟了。
q2:reset是電平觸發,為什麼要用posedge reset?
a2:always語句不允許有邊沿觸發和電平觸發混合形式,當有時鐘應先滿足時鐘敏感訊號觸發;另外高電平觸發的reset在到來乙個上公升沿后一定會在高電平,故if判斷reset是否為1
*/
2.題目:請畫出下述verilog所描述的rtl圖:
module reg1v(d,clk,q,oe);
input d,clk,oe;
output reg q;
wire a;
reg qt;
assign a = oe ? 1』bz : q;
always @(posedge clk) begin
qt <= a&d;
q <= qt;
endendmodule
思路:1.初步判斷,電路有兩個輸入訊號(\(d,oe\)),乙個時鐘訊號(\(clk\)),乙個輸出訊號(\(q\)),並由乙個三態門和乙個always過程語句模組組成.
2.三態門由控制端\(oe\),輸入端\(q\) (可以看到,輸出訊號\(q\)反饋回來成為了輸入量),輸出端為輔助變數\(a\).
3.後端模組是乙個時序電路,敏感訊號是時鐘上公升沿,輸入訊號是(\(a,d\))的與,再經過乙個d觸發器後輸出.
4.畫出電路圖
第五章課後練習題
1.利用迴圈結構解決問題的一般步驟?答.分析需求確定迴圈條件,確定迴圈體,然後巢狀各種 就ok了。2.使用while迴圈結構輸出 100 95 90 85 5。實現程式設計。設定斷點除錯程式,觀察迴圈變數的變化。3.使用do while迴圈實現 計算1 50中是7的倍數的數值之和並輸出。4.從鍵盤接...
python核心程式設計,第五章練習題
5.1 整型,講講python普通整型與長整型區別 python整形一共有三種 布林型,長整型和常規整型。普通型和長整型主要的區別是,能表示的資料位數的不同。5.2 定義乙個函式,用於兩個數相乘,並呼叫這個函式 def plustwo a,b return a b plustwo 3,4 12 pl...
C Primer Plus 第五章之程式設計練習題
include using namespace std intmain cout sum include using namespace std intmain return0 include using namespace std intmain cout 年後 da cl 注意設定型別,應該為d...