同步整形電路

iteye_8379發表於2010-12-21
CPLD/FPGA同步電路具備最穩定的工作狀態和工作效能,因此經常需要將外部輸入的非同步訊號進行同步處理(與系統時鐘同步)和整形(將輸入訊號由不規則波形提取為具備一個時鐘週期長的脈衝訊號)
同步整形的基本方法就是通過時鐘對非同步訊號連續取樣得到同步訊號,然後由前後兩次的同步取樣進行邏輯組合得到整形輸出。
以下是一個利用上升沿完成訊號同步整形的設計:
module syn_posedge_2WideClk(clk, rst_n, din, dout);
input clk;
input rst_n;
input din;
output dout;

reg d_temp1, d_temp0, d_temp2;

always @(posedge clk) begin

if(!rst_n) begin
d_temp2 <= 0;
d_temp1 <= 0;
d_temp0 <= 0;
end
else begin
d_temp0 <= din;
d_temp1 <= d_temp0;
d_temp2 <= d_temp1;
end
end

assign dout = d_temp0 && (~d_temp2);

endmodule

功能模擬得到的波形為:

[img]http://dl.iteye.com/upload/attachment/371704/197e93d2-f35d-3108-98c0-4c3011b61273.bmp[/img]

[color=darkred][size=medium]總結:首先,通過D觸發器取樣輸入訊號,將其數值寬度劃分為一個時鐘週期寬度的數值。其次,設定兩次取樣,則是結合後面的處理電路,將輸出訊號同步到一個時鐘寬度。如果要將輸入訊號同步到N個時鐘寬度,則需要N+1級D觸發器級聯,然後將第1級和第N+1級觸發器的值送入後續處理邏輯。第三,對D觸發取樣值的處理邏輯,就是一個簡單的判斷上升沿的組合邏輯,其邏輯為:dout = d_temp0 && (d_temp(N+1))[/size][/color]

相關文章