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

歡迎光臨散文網(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ó)家法律
荣昌县| 临桂县| 宣威市| 灵宝市| 宁南县| 盐边县| 信宜市| 新建县| 苍南县| 丹东市| 临颍县| 青铜峡市| 石首市| 遂川县| 封开县| 六安市| 阿克| 平乡县| 灵丘县| 罗平县| 蓝田县| 石台县| 台州市| 綦江县| 河源市| 广宗县| 河东区| 望都县| 重庆市| 阿鲁科尔沁旗| 云和县| 红桥区| 烟台市| 东丰县| 呼玛县| 红桥区| 寿光市| 芮城县| 清镇市| 伊金霍洛旗| 读书|