題目說明
考慮下面的時(shí)序電路:
圖片來自HDLBits
我們用3個(gè)包含觸發(fā)器和多路選擇器的子模塊來實(shí)現(xiàn)圖中電路。題目要求我們寫出包含一個(gè)觸發(fā)器和一個(gè)多路選擇器的子模塊。
模塊端口聲明
moduletop_module( inputclk, inputL, inputr_in, inputq_in, outputregQ);
題目解析
題目只要求我們寫出包含一個(gè)觸發(fā)器和一個(gè)多路選擇器的子模塊,所以不需要看整張圖片,看圖片前部分即可。
moduletop_module( inputlogicclk, inputlogicL, inputlogicr_in, inputlogicq_in, outputlogicQ); always_ff@(posedgeclk)begin if(L)Q<=?r_in?; ????????else??Q?<=?q_in?; ????end endmodule
點(diǎn)擊Submit,等待一會(huì)就能看到下圖結(jié)果:
注意圖中無參考波形。
這一題就結(jié)束了。
Problem 91-2014_q4a
題目說明
考慮如下所示 的n位移位寄存器電路:
圖片來自HDLBits
如上圖所示,還是實(shí)現(xiàn)包含選擇器和觸發(fā)器的部分。
模塊端口聲明
moduletop_module( inputclk, inputw,R,E,L, outputQ );
題目解析
還是實(shí)現(xiàn)包含選擇器和觸發(fā)器的部分。
moduletop_module( inputlogicclk, inputlogicw,R,E,L, outputlogicQ ); always_ff@(posedgeclk)begin casex({E,L}) 2'b00:Q<=?Q?; ????????????2'bx1:?Q?<=?R?; ????????????2'b10:?Q?<=?w?; ????????endcase ????end endmodule
點(diǎn)擊Submit,等待一會(huì)就能看到下圖結(jié)果:
注意圖中無參考波形。
這一題就結(jié)束了。
Problem 92-ece241_2014_q4
題目說明
如下圖所示的狀態(tài)機(jī),假設(shè)D觸發(fā)器在狀態(tài)機(jī)啟動(dòng)之前初始化為0,實(shí)現(xiàn)該電路:
圖片來自HDLBits
模塊端口聲明
moduletop_module( inputclk, inputx, outputz );
題目解析
首先先寫出組合電路中邏輯,然后再寫時(shí)序電路邏輯即可。
moduletop_module( inputlogicclk, inputlogicx, outputlogicz ); varlogicQ1,Q2,Q3,D1,D2,D3; always_combbegin D1=x^Q1; D2=x&~Q2; D3=x|~Q3; z=~(Q1|Q2|Q3); end always_ff@(posedgeclk)begin Q1<=?D1?; ????????Q2?<=?D2?; ????????Q3?<=?D3?; ????end endmodule
點(diǎn)擊Submit,等待一會(huì)就能看到下圖結(jié)果:
注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網(wǎng)站會(huì)對(duì)比這兩個(gè)波形,一旦這兩者不匹配,仿真結(jié)果會(huì)變紅。
這一題就結(jié)束了。
Problem 93-ece241_2013_q7
題目說明
JK 觸發(fā)器真值表如下。實(shí)現(xiàn)一個(gè) JK 觸發(fā)器。注意:Qold 是正時(shí)鐘沿之前 D 觸發(fā)器的輸出。
圖片來自HDLBits
模塊端口聲明
moduletop_module( inputclk, inputj, inputk, outputQ);
題目解析
這道題目要求是根據(jù)真值表寫出邏輯表達(dá)式,當(dāng)然也可以直接根據(jù)特性方程寫出邏輯。
JK觸發(fā)器的特性方程如下:
moduletop_module( inputlogicclk, inputlogicj, inputlogick, outputlogicQ); varlogicD; always_combbegin case({j,k}) 2'b00:D=Q; 2'b01:D='0; 2'b11:D=~Q; 2'b10:D='1; endcase end always_ff@(posedgeclk)begin Q<=?D; ????end endmodule
點(diǎn)擊Submit,等待一會(huì)就能看到下圖結(jié)果:
注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網(wǎng)站會(huì)對(duì)比這兩個(gè)波形,一旦這兩者不匹配,仿真結(jié)果會(huì)變紅。
這一題就結(jié)束了。
Problem 94-Edgedetect
題目說明
對(duì)于 8 位向量中的每一位,檢測(cè)輸入信號(hào)何時(shí)從一個(gè)時(shí)鐘周期的 0 變?yōu)橄乱粋€(gè)時(shí)鐘周期的 1(類似于上升沿檢測(cè))。輸出位應(yīng)在發(fā)生 0 到 1 轉(zhuǎn)換后的周期內(nèi)。
下圖給我們展示了輸入in[1]和輸出pedge[1]的時(shí)序關(guān)系圖:
圖片來自HDLBits
模塊端口聲明
moduletop_module( inputclk, input[7:0]in, output[7:0]pedge );
題目解析
查看:
https://blog.csdn.net/qq_31799983/article/details/81544707
moduletop_module( inputlogicclk, inputlogic[7:0]in, outputlogic[7:0]pedge ); wirelogic[7:0]in_reg_n,in_reg_l; always_ff@(posedgeclk)begin in_reg_n<=?in?; ????????in_reg_l?<=?in_reg_n?; ????end ???? ????assign?pedge?=?in_reg_n&~in_reg_l?; endmodule
點(diǎn)擊Submit,等待一會(huì)就能看到下圖結(jié)果:
注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網(wǎng)站會(huì)對(duì)比這兩個(gè)波形,一旦這兩者不匹配,仿真結(jié)果會(huì)變紅。
這一題就結(jié)束了。
Problem 95-Edgedetect2
題目說明
在一個(gè)8bit的變量中,從一個(gè)周期到另一個(gè)周期期間,檢測(cè)輸入信號(hào)變化。即上升沿變化或下降沿變化。輸出應(yīng)在0變?yōu)?后產(chǎn)生。
如下圖所示為輸入與輸出的時(shí)序關(guān)系
圖片來自HDLBits
模塊端口聲明
moduletop_module( inputclk, input[7:0]in, output[7:0]anyedge );
題目解析
雙邊沿檢測(cè),在上一題基礎(chǔ)上加上下降沿檢測(cè)即可。
moduletop_module( inputlogicclk, inputlogic[7:0]in, outputlogic[7:0]anyedge ); wirelogic[7:0]in_reg,edge_flag; always_ff@(posedgeclk)begin in_reg<=?in?; ????end ???? ????assign?edge_flag?=?in&~in_reg?|?~in&in_reg?; ???? ????always_ff@(posedge?clk)?begin ????????anyedge?<=?edge_flag?; ????end endmodule
點(diǎn)擊Submit,等待一會(huì)就能看到下圖結(jié)果:
注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網(wǎng)站會(huì)對(duì)比這兩個(gè)波形,一旦這兩者不匹配,仿真結(jié)果會(huì)變紅。
這一題就結(jié)束了。
Problem 96-Edgecapture
題目說明
對(duì)于 32 位向量中的每一位,在輸入信號(hào)從一個(gè)時(shí)鐘周期的 1 變?yōu)橄乱粋€(gè)時(shí)鐘周期的 0 時(shí)進(jìn)行捕捉?!安东@”表示輸出將保持為 1,直到寄存器復(fù)位(同步復(fù)位)。
每個(gè)輸出位的行為類似于 SR 觸發(fā)器:輸出位應(yīng)在 1 到 0 轉(zhuǎn)換發(fā)生后的周期設(shè)置(為 1)。當(dāng)復(fù)位為高電平時(shí),輸出位應(yīng)在正時(shí)鐘沿復(fù)位(為 0)。
如果上述兩個(gè)事件同時(shí)發(fā)生,則復(fù)位優(yōu)先。在下面示例波形的最后 4 個(gè)周期中,“reset”事件比“set”事件早一個(gè)周期發(fā)生,因此這里不存在沖突。
在下面的示例波形中,為清楚起見,reset、in[1] 和 out[1] 被突出顯示。
圖片來自HDLBits
模塊端口聲明
moduletop_module( inputclk, inputreset, input[31:0]in, output[31:0]out );
題目解析
moduletop_module( inputlogicclk, inputlogicreset, inputlogic[31:0]in, outputlogic[31:0]out ); varlogic[31:0]capture,in_reg; always_ff@(posedgeclk)begin if(reset)out<=?'0; ????????else ??????????????????out?<=?capture?; ????end ???? ????always_ff@(posedge?clk)?begin ???????????in_reg?<=?in?; ????end ???? ????assign?capture?=?~in?&?in_reg?|?out; endmodule
點(diǎn)擊Submit,等待一會(huì)就能看到下圖結(jié)果:
注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網(wǎng)站會(huì)對(duì)比這兩個(gè)波形,一旦這兩者不匹配,仿真結(jié)果會(huì)變紅。
這一題就結(jié)束了。
Problem 97-Dualedge
題目說明
熟悉在時(shí)鐘上升沿或時(shí)鐘下降沿觸發(fā)的觸發(fā)器。在時(shí)鐘的兩個(gè)邊沿觸發(fā)雙邊觸發(fā)觸發(fā)器。
但是,FPGA 沒有雙邊觸發(fā)觸發(fā)器,并且不接受 @(posedge clk or negedge clk)作為合法的敏感度列表。
構(gòu)建一個(gè)功能類似于雙邊觸發(fā)觸發(fā)器的電路:
(注意:不一定完全等效:觸發(fā)器的輸出沒有毛刺,但模擬這種行為的更大組合電路可能。)
圖片來自HDLBits
模塊端口聲明
moduletop_module( inputclk, inputd, outputq );
題目解析
無法在 FPGA 上創(chuàng)建雙邊觸發(fā)觸發(fā)器。但是可以同時(shí)創(chuàng)建正沿觸發(fā)和負(fù)沿觸發(fā)觸發(fā)器。
moduletop_module( inputlogicclk, inputlogicd, outputlogicq ); varlogictemp1,temp2; always_ff@(posedgeclk)begin temp1<=?d^temp2?; ????end ???? ????always_ff@(negedge?clk)?begin ????????temp2?<=?d^temp1?; ????end ???? ????assign?q?=?temp1^temp2?; endmodule
點(diǎn)擊Submit,等待一會(huì)就能看到下圖結(jié)果:
注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網(wǎng)站會(huì)對(duì)比這兩個(gè)波形,一旦這兩者不匹配,仿真結(jié)果會(huì)變紅。
這一題就結(jié)束了。
總結(jié)
今天的幾道題就結(jié)束了,對(duì)于理解觸發(fā)器的非常有幫助,而且難度稍微增加了,對(duì)于閱讀波形設(shè)計(jì)邏輯非常有幫助。
審核編輯:劉清
-
時(shí)序電路
+關(guān)注
關(guān)注
1文章
114瀏覽量
21700 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2000瀏覽量
61153 -
Verilog語言
+關(guān)注
關(guān)注
0文章
113瀏覽量
8230 -
多路選擇器
+關(guān)注
關(guān)注
1文章
22瀏覽量
6529
原文標(biāo)題:HDLBits: 在線學(xué)習(xí) SystemVerilog(十五)-Problem 90-97(觸發(fā)器和鎖存器(2))
文章出處:【微信號(hào):Open_FPGA,微信公眾號(hào):OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論