最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

FPGA中的邊沿檢測(cè)

2021-12-16 12:00 作者:朝顏晚扶桑  | 我要投稿

項(xiàng)目名稱:邊沿檢測(cè)

具體要求:檢測(cè)輸入信號(hào),或者?FPGA?內(nèi)部邏輯信號(hào)的跳變,即上升沿或者下降沿的檢測(cè),當(dāng)檢測(cè)到邊沿后,發(fā)出高脈沖。

通過(guò)分析上述的“項(xiàng)目名稱”和“具體要求”,我們可以設(shè)計(jì)出如下的電路:

由于寄存器可以使信號(hào)延時(shí)一個(gè)時(shí)鐘周期,我們可以利用這點(diǎn),來(lái)完成信號(hào)的邊沿檢測(cè)。假設(shè) signal 一直為高電平,則 buffer1 和 buffer2 的輸出都是高電平,當(dāng) signal 變成低電平時(shí),buffer1 的輸出先變成低電平,我們將 buffer1 的輸出值取反(高電平)和 buffer2 的輸出(高電平)相與得到 neg_flag(高電平),下一個(gè)周期時(shí),buffer2的輸出也變成了低電平,buffer1 的輸出值取反(高電平)和 buffer2 的輸出(低電平)相與得到低電平。故而 neg_flag 只是輸出了一個(gè)時(shí)鐘周期的高脈沖。pos_flag 可以同理分析。

架構(gòu)圖如下:

signal:被檢測(cè)信號(hào)

pos_flag:檢測(cè)出上升沿后發(fā)出的高脈沖

neg_flag:檢測(cè)出下降沿后發(fā)出的高脈沖

系統(tǒng)設(shè)計(jì):

1.?工程的名稱:ckeck_edge。

設(shè)計(jì)代碼如下:

/*

模塊名稱:ckeck_edge

模塊功能:檢測(cè)上升沿或者下降沿,檢測(cè)到邊沿后,發(fā)出高脈沖。編寫時(shí)間:2020-08-16

*/

module check_edge (clk, rst_n, signal, neg_flag, pos_flag);

????input clk;

????input rst_n;

????input signal;

????output neg_flag;

????output pos_flag;

????reg buffer1;

????reg buffer2;

????always @ (posedge clk or negedge rst_n)

????????begin

????????????if (!rst_n)

????????????????begin

????????????????????buffer1 <= signal;

????????????????????buffer2 <= signal;

????????????????end

????????????else

????????????????begin

????????????????????buffer1 <= signal;

????????????????????buffer2 <= buffer1;

????????????????end

????????end

????assign neg_flag = buffer2&&(~buffer1);?

????assign pos_flag = (~buffer2)&&buffer1;

endmodule

解析:

在模塊復(fù)位時(shí),筆者將 buffer1 和 buffer2 的輸出設(shè)置成和輸入信號(hào)相同的電平值,原因如下:如果設(shè)置成高電平,而輸入信號(hào)在復(fù)位器件為低電平,那么在復(fù)位結(jié)束后就會(huì)產(chǎn)生一個(gè)我們不想要的 neg_flag(分析方法同設(shè)計(jì)方法)。另一種情況讀者可以自己分析,方法是相同的。

激勵(lì)代碼如下:

`timescale 1ns/1ps

module check_edge_tb;

????reg clk;

????reg rst_n;

????reg signal;

????wire neg_flag;

????wire pos_flag;

????initial begin

????????clk = 1'b1;

????????rst_n = 1'b0;

????????signal = 1'b1;

????????# 200.1

????????rst_n = 1'b1;

????????# 200

????????signal = 1'b0;//下降沿

????????# 200

????????signal = 1'b1;//上升沿

????????# 200

????????$stop;

????end

always # 10 clk = ~clk;

check_edge check_edge_dut(

????????.clk(clk),

????????.rst_n(rst_n),

????????.signal(signal),

????????.neg_flag(neg_flag),

????????.pos_flag(pos_flag)

????????);

endmodule

仿真波形如下:

當(dāng)輸入信號(hào)有下降沿時(shí),neg_flag輸出了高脈沖,輸入信號(hào)有上升沿時(shí),pos_flag輸出了高脈沖。

檢測(cè)邊沿是用寄存器來(lái)完成的,所以脈沖的輸出會(huì)晚一個(gè)時(shí)鐘輸出,在高頻率時(shí)鐘對(duì)低頻率信號(hào)檢測(cè)中,沒(méi)有影響。設(shè)計(jì)正確。

FPGA中的邊沿檢測(cè)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
信阳市| 辽宁省| 屯留县| 新津县| 衡水市| 沙坪坝区| 霍山县| 界首市| 化德县| 美姑县| 蕲春县| 白山市| 景洪市| 钦州市| 张家川| 鸡西市| 大安市| 龙江县| 新民市| 昌图县| 寿阳县| 呼和浩特市| 嘉义市| 永清县| 沾化县| 汶上县| 淳安县| 喀喇沁旗| 满城县| 甘泉县| 麻栗坡县| 荔浦县| 莲花县| 隆化县| 谢通门县| 灵川县| 株洲县| 通州市| 离岛区| 乐山市| 崇左市|