在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 【E討論】關(guān)于邊沿檢測簡單理解

            【E討論】關(guān)于邊沿檢測簡單理解

            作者: 時(shí)間:2016-05-03 來源:網(wǎng)絡(luò) 收藏

              1、所謂,就是檢測輸入信號(hào)或FPGA內(nèi)部邏輯信號(hào)電平的跳變,即實(shí)現(xiàn)上升沿或下降沿的檢測,捕獲到以后以此用作使能信號(hào)(簡單可理解為:一旦檢測到這個(gè)信號(hào),則發(fā)生什么什么),來作為時(shí)序邏輯的觸發(fā)信號(hào)??傊?,在基礎(chǔ)中,這個(gè)還是很重要的,在后面的串口和SPI接口中都要用到。

            本文引用地址:http://www.biyoush.com/article/201605/290591.htm

              (一)、一級(jí)

                

            blob.png

             

              從一級(jí)中很好理解下降沿和上升沿的檢測:a和b都是從trigger來的(三者一樣),只是b比a在時(shí)間上遲了一個(gè)的時(shí)間?,F(xiàn)在假設(shè)0時(shí)刻到了,trigger到a了,但是還沒有到b,到了寄存器,被寄存了;等待下一個(gè)時(shí)刻1到來,a走了(不用管了),來了一個(gè)新的叫c,同時(shí),b從寄存器得到了之前寄存的,那個(gè)現(xiàn)在的1時(shí)刻,有了兩個(gè)信號(hào),b和c,而且b是前一個(gè)時(shí)刻的,而c是現(xiàn)在時(shí)刻的(誰先誰后這點(diǎn)很重要)。所以:

              下降沿 neg_edge = b & ~c;

                

            blob.png

             

              由上圖可以看出,當(dāng)下降沿來的時(shí)候,c取反再與上b,得出輸出為1;反過來想,輸出neg_edge為1的時(shí)候就表示檢測到下降沿了。

              上升沿 pos_edge = ~b & c;

                

            無標(biāo)題.jpg

             

              同理。當(dāng)pos_edge為1,表示檢測到上升沿。

              (二)兩級(jí)寄存器

              moduleedge_tech_design

              (

              clk,

              rst_n,

              s,

              neg_edge,

              pos_edge

              );

              inputclk;

              inputrst_n;

              inputs;

              outputneg_edge;

              outputpos_edge;

              regc,d;

              always@(posedgeclkornegedgerst_n)

              if(!rst_n)begin

              c<=1'b0;

              d<=1'b0;

              end

              elsebegin

              c<=s;

              d<=c;

              end

              assignneg_edge=d&!c;

              assignpos_edge=!d&c;

              endmodule

              為了在波形圖中能看到c、d寄存器,把程序修改為

              moduleedge_tech_design

              (

              clk,

              rst_n,

              s,

              neg_edge,

              pos_edge,

              c,//為了觀察c和d的波形而添加的

              d//為了觀察c和d的波形而添加的

              );

              inputclk;

              inputrst_n;

              inputs;

              outputneg_edge;

              outputpos_edge;

              outputc,d;//為了觀察c和d的波形而添加的

              regc,d;

              always@(posedgeclkornegedgerst_n)

              if(!rst_n)begin

              c<=1'b0;

              d<=1'b0;

              end

              elsebegin

              c<=s;

              d<=c;

              end

              assignneg_edge=d&!c;

              assignpos_edge=!d&c;

              endmodule

              測試文件如下:

              `timescale1ns/1ns

              `defineclk_period20

              moduleedge_tech_design_tb;

              regclk;

              regrst_n;

              regs;

              wireneg_edge;

              wirepos_edge;

              wirec,d;//為了觀察c和d的波形而添加的

              edge_tech_designedge_tech_design

              (

              .clk(clk),

              .rst_n(rst_n),

              .s(s),

              .neg_edge(neg_edge),

              .pos_edge(pos_edge),

              .c(c),//為了觀察c和d的波形而添加的

              .d(d)//為了觀察c和d的波形而添加的

              );

              initialclk=1;

              always#(`clk_period/2)clk=~clk;

              initialbegin

              rst_n=1'b0;

              s=1'b0;

              #(`clk_period/4)

              #(`clk_period)

              rst_n=1'b1;

              s=1'b1;

              #(`clk_period*5)

              s=1'b0;

              #(`clk_period)

              s=1'b1;

              #(`clk_period)

              s=1'b0;

              #(`clk_period*3)

              s=1'b1;

              #(`clk_period)

              s=1'b0;

              #(`clk_period*5)

              s=1'b1;

              #(`clk_period)

              s=1'b0;

              #(`clk_period*3)

              s=1'b1;

              #(`clk_period)

              s=1'b0;

              #(`clk_period)

              s=1'b1;

              #(`clk_period*3)

              s=1'b0;

              #(`clk_period)

              s=1'b1;

              #(`clk_period)

              s=1'b0;

              #(`clk_period)

              $stop;

              end

              endmodule

                

            QQ截圖20160428235415.jpg

             

              在仿真圖中可以看到這樣的圖形(街區(qū)圖中下降沿部分一小段)

                

            QQ截圖20160429000245.jpg

             

              輸入信號(hào)s從高變成低的時(shí)候,出現(xiàn)下降沿,然后等到時(shí)鐘clk的上升沿到來,s傳輸?shù)絚,d還沒傳輸?shù)?,被寄存在d之前的寄存器內(nèi),等待第二個(gè)時(shí)鐘上升沿到來,寄存器中的信號(hào)傳輸?shù)絛了,此時(shí)根據(jù)

              neg_edge = d & ~c;

              可以得到neg_edge的波形。



            關(guān)鍵詞: 邊沿檢測 寄存器

            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉