下降沿采樣寄存器
01
在設(shè)計雙邊沿采樣電路(Dual-edge triggered flip-flop)之前,先從單邊沿采樣電路設(shè)計(Edge capture register)開始。
題目:對于32位向量中的每個位,當(dāng)輸入信號從一個時鐘周期的1變?yōu)橄乱粋€時鐘周期的0時捕獲?!安东@”表示在寄存器復(fù)位(同步復(fù)位)之前,輸出將保持為1。
每個輸出位的行為都類似于SR觸發(fā)器:應(yīng)在從1到0的跳變發(fā)生后的周期內(nèi)將輸出位設(shè)置(設(shè)置為1)。復(fù)位為高電平時,應(yīng)在時鐘的上升沿將輸出位復(fù)位(清零)。如果以上兩個事件同時發(fā)生,則復(fù)位優(yōu)先。
在下面的示例波形中,為清楚起見,分別顯示了reset,in [1]和out [1]。
這里要注意的是,這題與專題十的邊緣檢測不一樣,本題是邊緣“捕獲”,即捕獲到下降沿之后要一直保持1,直到復(fù)位信號為1才變位0。
module top_module (
input clk,
input reset,
input [31:0] in,
output [31:0] out
);
reg[31:0] p1,in_last;
always@(posedge clk) begin
in_last <= in;
if(reset)
out <= 0;
else begin
p1 = in_last&~in;
if(p1!=0)
out <= p1|out;
else
out <= out;
end
end
endmodule
第9行 in_last <= in ; 記錄信號in上一個cycle的狀態(tài);
第13行 p1 = in_last&~ in ;檢測下降沿,簡答來說就是檢測輸入信號in由1變0。
第14-17行的mux是保持“捕獲”or“未捕獲”狀態(tài),**if(p1!=0)**表示有下降沿信號發(fā)生,**out <= p1|out; **表示繼續(xù)更新置1的位數(shù);else p1==0,則out保持原來的狀態(tài),即已經(jīng)被捕獲的位保持“1”狀態(tài)、還未被捕獲的位保持“0”狀態(tài)。
正確的仿真波形如下圖所示:
這里有一個很重要的細(xì)節(jié): 第十三行用的是阻塞賦值p1 = in_last&~in; 。即要等p1信號更新完畢之后才能進(jìn)行if的判斷,假如用非阻塞語句會導(dǎo)致out會晚一個周期才有反應(yīng),錯誤波形如下:
雙邊沿采樣觸發(fā)器
02
題目:您熟悉在時鐘的上升沿或時鐘的下降沿觸發(fā)的觸發(fā)器。雙沿觸發(fā)觸發(fā)器在時鐘的兩個邊沿觸發(fā)。但是,FPGA沒有雙沿觸發(fā)觸發(fā)器,因此始終不接受@(posedge clk或negedge clk)作為合法敏感性列表。
構(gòu)建功能上類似于雙沿觸發(fā)觸發(fā)器的電路:
module top_module (
input clk,
input d,
output q
);
reg q1,q2;
always@(posedge clk)begin
q1 <= d;
end
always@(negedge clk)begin
q2 <= d;
end
assign q = clk?q1:q2;
endmodule
還有一種可行的方案:
module top_module(
input clk,
input d,
output q);
reg p, n;
// A positive-edge triggered flip-flop
always @(posedge clk)
p <= d ^ n;
// A negative-edge triggered flip-flop
always @(negedge clk)
n <= d ^ p;
// Why does this work?
// After posedge clk, p changes to d^n. Thus q = (p^n) = (d^n^n) = d.
// After negedge clk, n changes to p^n. Thus q = (p^n) = (p^p^n) = d.
// At each (positive or negative) clock edge, p and n FFs alternately
// load a value that will cancel out the other and cause the new value of d to remain.
assign q = p ^ n;
endmodule
-
FPGA設(shè)計
+關(guān)注
關(guān)注
9文章
428瀏覽量
26465 -
寄存器
+關(guān)注
關(guān)注
31文章
5294瀏覽量
119814 -
采樣電路
+關(guān)注
關(guān)注
10文章
63瀏覽量
28277 -
SR觸發(fā)器
+關(guān)注
關(guān)注
0文章
13瀏覽量
12618 -
狀態(tài)機(jī)
+關(guān)注
關(guān)注
2文章
491瀏覽量
27456
發(fā)布評論請先 登錄
相關(guān)推薦
評論