<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • 電子工程網

    標題: 計數計數模塊設計遇到的問題 [打印本頁]

    作者: woshaogang123    時間: 2012-6-13 08:19
    標題: 計數計數模塊設計遇到的問題
    我正在用CPLD設計一個計時計數模塊:按下reset清零,按一下start開始計時,按一下stop停止計時把結果傳給單片機,現在就是控制不了stop,就是仿真時start為高電平1時計數器工作,為0時停止計數,stop控制不了,請問應該怎樣才能控制呢
    作者: asyou    時間: 2012-6-13 11:05
    最好不用電平控制,而用沿控制!檢測start,stop的沿!
    作者: woshaogang123    時間: 2012-6-13 15:02
    但是在一個進程中好像不能有超過兩個以上的邊沿檢測
    作者: szaeia    時間: 2012-6-13 15:37
    最好不用電平控制,而用沿控制!檢測start,stop的沿!
    汽車電子
    作者: woshaogang123    時間: 2012-6-14 10:19
    程序是
    entity count  is
       port(
                clk,start,stop,reset : in std_logic;
                 cout ut  std_logic_vector(7 downto 0)
              );
    end count;
    architecture behav of count
    begin
    process(clk,start,stop,reset)
      variable c : std_logic_vector(7 downto 0);
    begin
    if reset='1' then
    c:="00000000";
    if clk'event and clk='1'  then
    if start'event and start='1'  then
    c:=c+1
    elsif stop'event and stop='1'  then
    cout<=c;
    end if;
    end if;
    cout<=c;
    end process;
    end behav
    編譯后出現錯誤:can't infer register for "c[0]" at count.vhd,because it does not hold its value outside the clock edge
    作者: asyou    時間: 2012-6-14 16:33
    回復5樓woshaogang123

    你不能這樣檢測沿,用兩個D觸發器緩存,當前一個信號為高,后一個信號為低的時候就是下降沿到來了!
    作者: woshaogang123    時間: 2012-6-15 09:50
    我做的是一個激光測距儀,用CPLD作時間間隔測量,就是測量激光從發射出去到碰到目標反射回來的時間,start是一PWM信號,作啟動計數器的開門信號.stop就是回波信號,作關閉計數器的關門信號,我的思路是檢測start信號的第一個上升沿作開門信號,stop的第一個上升沿作關門信號
    作者: asyou    時間: 2012-6-15 11:59
    回復7樓woshaogang123

    這很簡單!你先搞清楚怎么檢測信號的上升沿吧,用一個參考時鐘加兩個D觸發器就可以了!
    作者: woshaogang123    時間: 2012-6-15 14:14
    還是不明白,兩個D觸發器怎么用啊,能舉個例子嗎
    作者: joywyc    時間: 2012-6-17 06:00
    主要的問題不在于是電平觸發還是邊沿觸發,問題是按鍵的動作會引起觸點一連串的電平跳變。按一次機械觸點,跳變大約持續十幾毫秒時間,相當于許多個隨機的高低電平或上下邊沿的變化。在一次按動中,是無法確定最后一次被取到的是高還是低、上沿還是下沿。特別是對CPLD等高速邏輯電路,要真正處理掉這一問題,就要采取延時加多點采樣判別技術,來消除手動啟?刂频臏蚀_性問題。
    作者: klhchz    時間: 2012-7-8 09:52
    同意10樓意見,此類現象在別的場合也經常遇到。




    歡迎光臨 電子工程網 (http://www.portaltwn.com/) Powered by Discuz! X3.4
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷