音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

求教用VHDL產(chǎn)生單穩(wěn)態(tài)一定寬度脈沖

作者:pallen 欄目:EDA技術(shù)
求教用VHDL產(chǎn)生單穩(wěn)態(tài)一定寬度脈沖
假定輸入信號(hào)方波脈沖CAA,且頻率變化,要求在輸入脈沖的上升沿時(shí)輸出一個(gè)一定寬度的脈沖,當(dāng)然這個(gè)脈沖的寬度肯定時(shí)小于A的最小周期的1/2的(即保證輸入脈沖頻率等于輸入脈沖頻率)。
請(qǐng)問(wèn)各位大俠,我如何設(shè)定輸出脈沖的寬度?可以用延時(shí)實(shí)現(xiàn)嗎?
我想的辦法是,做一個(gè)計(jì)數(shù)器來(lái)計(jì)時(shí)鐘的時(shí)序,以記錄時(shí)間;
但必須在輸入脈沖A的上升沿時(shí)輸入脈沖并保持為1,并同時(shí)讓計(jì)數(shù)器開(kāi)始計(jì)數(shù)器開(kāi)始計(jì)數(shù),計(jì)到一定數(shù)值時(shí)(即脈沖寬度),使輸出脈沖輸出為0。這里出現(xiàn)了一個(gè)問(wèn)題:計(jì)數(shù)器器是在脈沖A的上升沿開(kāi)始計(jì)數(shù)的,而計(jì)數(shù)器本身用的時(shí)序是CLK0,那么如何用VHDL描述在CAA上升沿讓計(jì)數(shù)器開(kāi)始計(jì)CLK0呢?
我寫(xiě)的程序如下:
其中CAA,相當(dāng)于輸入的脈沖
LIBRARY ieee;
USE ieee.STD_LOGIC_1164.ALL;
USE ieee.std_logic_ARITH.all;
USE ieee.std_logic_UNSIGNED.all;

LIBRARY ALTERA;
USE ALTERA.maxplus2.all;

ENTITY cpld_my IS
           PORT(
              CAA,CLK0              : IN     STD_LOGIC;
              CRST: IN     STD_LOGIC;
             
        CBB             : OUT      STD_LOGIC);
END cpld_my;


ARCHITECTURE  build OF cpld_my IS

        SIGNAL COUNTER1             : STD_LOGIC_VECTOR(7 DOWNTO 0);
        

    BEGIN
   
            COUNT1:PROCESS(CAA,ZERO,CLK0)
                BEGIN
                 IF( CRST = '1') THEN
                     COUNTER1 <="00000000";
                 ELSIF(RISING_EDGE(CAA)) THEN
                IF(RISING_EDGE(CLK0)) THEN
                    IF(COUNTER1 = "01101001") THEN
                        COUNTER1 <= "00000000";
                        CBB <= '0';
                    ELSE
                        COUNTER1 <= COUNTER1 + 1;
                        CBB <= '1';
                    END IF;
                END IF;
            END IF;
        END PROCESS;
    
          END build;
請(qǐng)各位大俠指教!!



2樓: >>參與討論
picklas
re
ELSIF(RISING_EDGE(CAA)) THEN
IF(RISING_EDGE(CLK0)) THEN
這么寫(xiě)肯定錯(cuò)誤!
不能同時(shí)用兩個(gè)上升沿

3樓: >>參與討論
pallen
i know,but^
我知道這么寫(xiě)是錯(cuò)的,問(wèn)題是我不知道怎么寫(xiě)才行!
這也是我發(fā)這篇貼的原因啊!
希望哪位大俠能夠指點(diǎn)指點(diǎn)!!

4樓: >>參與討論
diploma
寫(xiě)了一個(gè),竟供參考!
LIBRARY ieee;
USE ieee.STD_LOGIC_1164.ALL;
USE ieee.std_logic_ARITH.all;
USE ieee.std_logic_UNSIGNED.all;

LIBRARY ALTERA;
USE ALTERA.maxplus2.all;

ENTITY cpld_my IS
           PORT(
              CAA,CLK0              : IN     STD_LOGIC;
              CRST: IN     STD_LOGIC;
             
        CBB             : OUT      STD_LOGIC);
END cpld_my;


ARCHITECTURE  build OF cpld_my IS
        type state is (s0,s1);
        signal st :state;
        SIGNAL COUNTER1             : STD_LOGIC_VECTOR(7 DOWNTO 0);
        signal caa_in : std_logic;
        

    BEGIN
   
            COUNT1:PROCESS(crst,CLK0)
                BEGIN
                 IF( CRST = '1') THEN
                     COUNTER1 <="00000000";
                     st <= s0;
                elsIF(RISING_EDGE(CLK0)) THEN
                    caa_in <= caa;
                    case st is
                    when s0 =>
                       if caa_in /= caa and caa = '1' then
                           st <= s1;
                       end if;
                    when s1 =>
                        IF(COUNTER1 = "01101001") THEN
                           COUNTER1 <= "00000000";
                           CBB <= '0';
                           st <= s0;
                        ELSE
                           COUNTER1 <= COUNTER1 + 1;
                           CBB <= '1';
                        END IF;
                  end case;
            END IF;
        END PROCESS;
    
          END build;

沒(méi)有綜合,不知道語(yǔ)法上面會(huì)不會(huì)有問(wèn)題。
在這里要說(shuō)明一下,clk0的頻率比輸入的caa頻率越大越好,也就是采集到caa上升邊沿后輸出脈寬的延遲將越!

5樓: >>參與討論
picklas
re
實(shí)現(xiàn)的辦法有很多,樓上的就是一種辦法,建議你把信號(hào)在拍一下,所存兩級(jí)防止亞穩(wěn)態(tài)和毛刺。工作中越高對(duì)你的計(jì)數(shù)器越有利。

6樓: >>參與討論
diploma
rrr
樓上的說(shuō)的很對(duì),caa信號(hào)進(jìn)來(lái)最好經(jīng)過(guò)一個(gè)高速時(shí)鐘消抖一下,那樣可以消除毛刺。再者,if caa_in /= caa and caa = '1' then 改成 if caa_in /= caa and caa_in = '0' then 我覺(jué)得會(huì)好一點(diǎn),其實(shí)通過(guò)了消抖后再來(lái)處理這個(gè)消抖的信號(hào),用那個(gè)都無(wú)所謂了。

7樓: >>參與討論
pallen
thanks
非常感謝diploma師兄及picklas師兄的指點(diǎn)!
再請(qǐng)教如何經(jīng)過(guò)一個(gè)高速時(shí)鐘消抖?是用D觸發(fā)器嗎?再次感謝。

8樓: >>參與討論
picklas
re
消除抖動(dòng)主要是采用同步電路的設(shè)計(jì)思路,簡(jiǎn)單的辦法就是通過(guò)d觸發(fā)器,采用兩級(jí)所存是為了,防止亞穩(wěn)態(tài)的出現(xiàn),將前后部分隔離。

9樓: >>參與討論
pallen
thanks
非常感謝picklas師兄的指點(diǎn),小弟在此多謝了

參與討論
昵稱(chēng):
討論內(nèi)容:
 
 
相關(guān)帖子
再次請(qǐng)教循環(huán)移位的問(wèn)題(verilog)
問(wèn)一個(gè)MAXPLUS2的問(wèn)題
請(qǐng)教那里可以下載quartus-ii,多謝(內(nèi)空)
單片機(jī)與閃存接口電路(接口電路用CPLD實(shí)現(xiàn))
一個(gè)讀存儲(chǔ)芯片M28C64的程序,但出現(xiàn)4處警告?
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)