在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > FPGA:數(shù)字示波器 3 - 觸發(fā)器

            FPGA:數(shù)字示波器 3 - 觸發(fā)器

            作者: 時(shí)間:2024-01-12 來(lái)源:EEPW編譯 收藏

            我們的第一個(gè)觸發(fā)因素很簡(jiǎn)單 - 我們檢測(cè)到上升沿越過(guò)固定閾值。 由于我們使用的是 8 位 ADC,因此采集范圍從 0x00 到 0xFF。
            因此,讓我們暫時(shí)將閾值設(shè)置為0x80。

            本文引用地址:http://www.biyoush.com/article/202401/454721.htm

            檢測(cè)上升沿

            如果樣本高于閾值,但前一個(gè)樣本低于閾值,則觸發(fā)!

            reg Threshold1, Threshold2;
            always @(posedge clk_flash) Threshold1 <= (data_flash_reg>=8'h80);
            always @(posedge clk_flash) Threshold2 <= Threshold1;

            assign Trigger = Threshold1 & ~Threshold2;  // if positive edge, trigger!

            中間顯示觸發(fā)器

            的一大特點(diǎn)是能夠看到觸發(fā)前發(fā)生的事情。

            這是如何工作的?
            示波器不斷采集。 示波器內(nèi)存一遍又一遍地被覆蓋 - 當(dāng)我們到達(dá)終點(diǎn)時(shí),我們從頭開(kāi)始。 但是,如果發(fā)生觸發(fā),示波器會(huì)繼續(xù)獲取其內(nèi)存深度的一半,然后停止。 因此,它保留了一半的記憶,以及觸發(fā)后發(fā)生的事情。

            我們?cè)谶@里使用 50% 或“中間顯示觸發(fā)器”(其他流行的設(shè)置本來(lái)是 25% 和 75% 設(shè)置,但這很容易在以后添加)。

            實(shí)施很容易。 首先,我們必須跟蹤存儲(chǔ)了多少字節(jié)。

            reg [8:0] samplecount;


            內(nèi)存深度為 512 字節(jié),我們首先確保獲取至少 256 字節(jié),然后停止計(jì)數(shù),但在等待觸發(fā)時(shí)繼續(xù)獲取。 一旦觸發(fā)器到來(lái),我們?cè)俅伍_(kāi)始計(jì)數(shù)以再獲取 256 個(gè)字節(jié),然后停止。

            reg PreTriggerPointReached;
            always @(posedge clk_flash) PreTriggerPointReached <= (samplecount==256);


            決策邏輯處理所有這些步驟:

            always @(posedge clk_flash)
            if(~Acquiring)
            begin
              Acquiring <= startAcquisition2;  // start acquiring?
              PreOrPostAcquiring <= startAcquisition2;
            end
            else
            if(&samplecount)  // got 511 bytes? stop acquiring
            begin
              Acquiring <= 0;
              AcquiringAndTriggered <= 0;
              PreOrPostAcquiring <= 0;
            end
            else
            if(PreTriggerPointReached)  // 256 bytes acquired already?
            begin
              PreOrPostAcquiring <= 0;
            end
            else
            if(~PreOrPostAcquiring)
            begin
              AcquiringAndTriggered <= Trigger;  // Trigger? 256 more bytes and we're set
              PreOrPostAcquiring <= Trigger;
              if(Trigger) wraddress_triggerpoint <= wraddress;  // keep track of where the trigger happened
            end

            always @(posedge clk_flash) if(Acquiring) wraddress <= wraddress + 1;
            always @(posedge clk_flash) if(PreOrPostAcquiring) samplecount <= samplecount + 1;

            reg Acquiring1; always @(posedge clk) Acquiring1 <= AcquiringAndTriggered;
            reg Acquiring2; always @(posedge clk) Acquiring2 <= Acquiring1;
            assign AcquisitionStarted = Acquiring2;


            請(qǐng)注意,我們注意記住觸發(fā)發(fā)生的位置。 這用于確定要發(fā)送到 PC 的 RAM 中示例窗口的開(kāi)始。

            reg [8:0] rdaddress, SendCount;
            reg Sending;
            wire TxD_busy;

            always @(posedge clk)
            if(~Sending)
            begin
              Sending <= AcquisitionStarted;
              if(AcquisitionStarted) rdaddress <= (wraddress_triggerpoint ^ 9'h100);
            end
            else
            if(~TxD_busy)
            begin
              rdaddress <= rdaddress + 1;
              SendCount <= SendCount + 1;
              if(&SendCount) Sending <= 0;
            end

            通過(guò)這種設(shè)計(jì),我們終于得到了一個(gè)有用的示波器。我們現(xiàn)在只需要自定義它。



            關(guān)鍵詞: FPGA 數(shù)字示波器

            評(píng)論


            相關(guān)推薦

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

            關(guān)閉