国产精品久久久久久久久免费,高潮迭起av乳颜射后入,国产对白老熟女正在播放,国产精品igao视频网网址,丰满人妻熟妇乱又伦精品

機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應(yīng)用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
VHDL之狀態(tài)機學習筆記
VHDL之狀態(tài)機學習筆記
 更新時間:2008-7-27 16:55:52  點擊數(shù):3
【字體: 字體顏色
由于平時比較忙,沒有時間系統(tǒng)的學習,所以一般情況下只能周末稍微系統(tǒng)的學習一下。前幾周主要學習了一下如何用VHDL來實現(xiàn)一個狀態(tài)機。因為狀態(tài)機的應(yīng)用實在是太廣泛了,例如各種存儲器的控制,AD的控制外部器件的控制,也包括內(nèi)部電路的控制,到了非學不可的地步了。

       對于狀態(tài)機的理論沒有涉及太多,只有幾點需要注意:

       (1)moore和mealy的區(qū)別在于輸出是否只和當前狀態(tài)有關(guān)。

       (2)狀態(tài)機的兩種基本操作:一是狀態(tài)機內(nèi)部狀態(tài)的轉(zhuǎn)換,另一是產(chǎn)生輸出信號序列。

       (3)狀態(tài)機的分析可以從狀態(tài)圖入手,同樣,狀態(tài)機的設(shè)計也可以從狀態(tài)圖入手。

        在集成電路設(shè)計時,通?梢詫⒄麄系統(tǒng)劃分為兩部分,一部分是數(shù)據(jù)單元,另一部分是控制單元。數(shù)據(jù)單元包含保存運算數(shù)據(jù)和運算結(jié)果的數(shù)據(jù)寄存器,也包括完成數(shù)據(jù)運算的組合邏輯?刂茊卧脕懋a(chǎn)生信號序列,以決定何時進行何種數(shù)據(jù)運算,控制單元要從數(shù)據(jù)單元得到條件信號,以決定繼續(xù)進行那些數(shù)據(jù)運算。數(shù)據(jù)單元要產(chǎn)生輸出信號,數(shù)據(jù)運算狀態(tài)等有用信號。數(shù)據(jù)單元和控制單元中,有兩個非常重要的信號,即復(fù)位信號和時鐘信號。復(fù)位信號保證了系統(tǒng)初始狀態(tài)的確定性,時鐘信號則是時序系統(tǒng)工作的必要條件。狀態(tài)機通常在復(fù)位信號到來的時候恢復(fù)到初始狀態(tài),每個時鐘到來的時候內(nèi)部狀態(tài)發(fā)生變化。

      正如上面的(3)提到的,設(shè)計狀態(tài)機時一般先構(gòu)造出狀態(tài)圖。構(gòu)造狀態(tài)圖的一般方法是從一個比較容易描述的狀態(tài)開始,通常初始態(tài)是一個很好開始的狀態(tài),也就是狀態(tài)機復(fù)位以后開始的狀態(tài)。在建立每個狀態(tài)時最好都清楚的寫出關(guān)于這個狀態(tài)的文字描述,為硬件設(shè)計過程提供清晰的參考資料,也為最后完成的設(shè)計提供完整的設(shè)計文檔。

       下面給出一個用VHDL實現(xiàn)ADC0804控制器的完整設(shè)計過程。

首先根據(jù)ADC0804的時序圖分析所有可能的狀態(tài),并且建立起來狀態(tài)圖。

時序圖:

http://pic13.album.tom.com/album_pic/2005/09/12/b15fe2073e48e1bb3780e6431f695e8c?%75%4e%6f%44%6a%77%49%71%6d%74

4個狀態(tài)如下:

idle: CS="0",WR=0,RD=1 啟動AD0804開始轉(zhuǎn)換

convert:CS=1,WR=1,RD=1,AD0804進行數(shù)據(jù)轉(zhuǎn)換

read1:  CS="1",WR=1,RD=1,INTR,轉(zhuǎn)換結(jié)束,開始讀

read2: CS="1",WR=1,RD=0,讀取數(shù)據(jù)。

狀態(tài)圖:

http://pic13.album.tom.com/album_pic/2005/09/12/8427a2ae7a7a9c03018d4f83dfce23a4?%75%4e%6f%44%6a%77%4b%73%69%72

VHDL程序如下,所用的綜合器是XST

--------------------------------------------------------------------------------
-- Design Name:    skycanny  
-- Module Name:    ad_controller - Behavioral
-- Description:    This VHDL design is created to implement a state machine
--                 to control AD0804
--------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity ad_controller is
 port(
  reset  : in std_logic;
  clk  : in std_logic;
  intr  : in std_logic;
  data_i : in std_logic_vector(7 downto 0);
  data_o : out std_logic_vector(7 downto 0);
  cs  : out std_logic;
  wr  : out std_logic;
  rd  : out std_logic
  );
end ad_controller;

architecture Behavioral of ad_controller is

type state is (start, convert, read1, read2);
signal current_state, next_state : state;
signal data_r : std_logic_vector(7 downto 0);
signal read_data : std_logic;

begin
 sync :process(reset,clk)
 begin
  if(reset = '0') then
   current_state <= start;
  elsif(clk'event and clk = '1') then
   current_state <= next_state;
  end if;
 end process sync;

 comb :process(current_state, intr)
 begin
  case current_state is
   when start =>
    next_state <= convert;
    cs <= '0';
    wr <= '0';
    rd <= '1';
    read_data <= '0';
   when convert =>
    if(intr = '0') then
     next_state <= read1;
    else
     next_state <= convert;
    end if;
    cs <= '1';
    wr <= '1';
    rd <= '1';
    read_data <= '0';
   when read1 =>
    next_state <= read2;
    cs <= '0';
    wr <= '1';
    rd <= '0';
    read_data <= '1';
   when read2 =>
    next_state <= start;
    cs <= '1';
    wr <= '1';
    rd <= '1';
    read_data <= '0';
   when others =>
    next_state <= start;
  end case;
 end process comb;

 get_data: process(reset,clk)
 begin
  if(reset = '0') then
   data_r <= X"00";
  elsif(clk'event and clk = '1') then
   if(read_data = '1') then
    data_r <= data_i;
   end if;
  end if;
 end process;

 data_o <= data_r;
end Behavioral;

功能仿真圖:

http://pic13.album.tom.com/album_pic/2005/09/12/da734f0b3c9a730aed2a367e13d9f833?%75%4e%6f%44%6a%77%4b%75%6d%73

從仿真圖可以看出,該控制器工作正常。

RTL原理圖:

http://pic13.album.tom.com/album_pic/2005/09/12/8427a2ae7a7a9c03018d4f83dfce23a4?%75%4e%6f%44%6a%77%4b%73%69%72

總結(jié):對于時序電路中用到的狀態(tài)機,分析時序電路中間經(jīng)歷的狀態(tài)可以很快得出狀態(tài)機的整體結(jié)構(gòu),然后用VHDL實現(xiàn)就可以。另外ISE提供了StateCad,方便了狀態(tài)機的設(shè)計,仿真等等。

  • 上一篇: CPLD的LED點陣顯示控制器
  • 下一篇: FPGA的高速可變周期脈沖發(fā)生器的設(shè)計
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設(shè)備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內(nèi)容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務(wù)100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1