日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用VHDL实现有限状态机

發(fā)布時間:2024/3/26 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用VHDL实现有限状态机 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

背景

在數(shù)字系統(tǒng)中,有兩種基本類型的電路。第一類是組合邏輯電路在組合邏輯電路中,輸出僅依賴于輸入。組合邏輯電路的例子包括加法器,編碼器和多路復(fù)用器。例如,在加法器中,輸出只是輸入的總和;?無論以前的輸入或輸出是什么都沒有關(guān)系。第二種類型的數(shù)字邏輯電路是時序邏輯電路在順序邏輯電路中,輸出不僅取決于輸入,還取決于系統(tǒng)的當(dāng)前狀態(tài)(即輸出值和任何內(nèi)部信號或變量)。順序邏輯電路的復(fù)雜程度不同于簡單的計數(shù)器,這些計數(shù)器以基本序列(例如,0,1,2,3 ... 0,1,2,3 ...)從一種狀態(tài)移動到另一種狀態(tài),到超大規(guī)模電路(例如微處理器)本文的重點將放在順序邏輯電路表示為有限狀態(tài)機(jī)以及如何將這些有限狀態(tài)機(jī)轉(zhuǎn)換為硬件描述語言VHDL。

順序邏輯系統(tǒng)是有限狀態(tài)機(jī)(FSM)。作為FSM,它們由一組狀態(tài),一些輸入,一些輸出以及一組從狀態(tài)到狀態(tài)的規(guī)則組成。在進(jìn)行數(shù)字系統(tǒng)設(shè)計時,從定義系統(tǒng)如何??與有限狀態(tài)機(jī)模型一起工作開始非常常見。這一設(shè)計步驟允許設(shè)計人員從高級角度考慮設(shè)計,而不必考慮系統(tǒng)將實施什么樣的硬件或?qū)嵤┰O(shè)計需要哪些設(shè)計工具。一旦完全設(shè)計FSM,如果設(shè)計良好,則很容易用硬件描述語言(例如Verilog或VHDL)寫出設(shè)計,以便在數(shù)字IC(集成電路)上實現(xiàn)。

本文將通過首先定義設(shè)計問題來完成創(chuàng)建數(shù)字系統(tǒng)的設(shè)計過程,其次,將系統(tǒng)的計算模型創(chuàng)建為有限狀態(tài)機(jī),然后將FSM轉(zhuǎn)換為硬件描述語言VHDL。(VHDL實際上是雙重縮寫詞,VHDL代表VHSIC硬件描述語言,VHSIC代表甚高速集成電路)。

讀者應(yīng)該有一些數(shù)字電路和IC的經(jīng)驗他們還應(yīng)該對VHDL有基本的了解,或者至少有一些閱讀結(jié)構(gòu)化計算機(jī)代碼的經(jīng)驗。使用計算機(jī)代碼的經(jīng)驗將幫助你認(rèn)識到VHDL的一些結(jié)構(gòu)和結(jié)構(gòu),但應(yīng)該指出的是,VHDL不是一種編程語言;?它是一種硬件描述語言(HDL)。換句話說,您所編寫的語句將在您正在設(shè)計的系統(tǒng)中創(chuàng)建硬件(門,觸發(fā)器等)。

?

有限狀態(tài)機(jī)

要設(shè)計的系統(tǒng)是一個非常簡單的系統(tǒng),其目的是引入將FSM轉(zhuǎn)換為VHDL的想法。此FSM具有四個狀態(tài):A,B,C,和d該系統(tǒng)具有被稱為一個輸入信號P,和的值P確定什么狀態(tài)系統(tǒng)移動到下一個。只要輸入P為高電平(1),系統(tǒng)就會將狀態(tài)從A更改BCD.?如果P低,并且系統(tǒng)處于狀態(tài)A,BC,則狀態(tài)不會改變。如果系統(tǒng)處于狀態(tài)d,則切換到如果P高和,如果P低。系統(tǒng)還有一個稱為R的輸出,如果處于狀態(tài)D,則該輸出為1?,否則它是0.圖1是FSM的示意圖,但首先這里是關(guān)于此圖的一些注釋:

  • 圓圈代表狀態(tài)
  • 圓圈之間的箭頭代表從狀態(tài)變?yōu)闋顟B(tài)的規(guī)則。例如,在這個系統(tǒng)中,如果輸入P等于1(否則它保持在狀態(tài)A,狀態(tài)機(jī)從狀態(tài)A移到狀態(tài)B
  • 圓圈下方的信息代表每種狀態(tài)下的輸出值。
  • 從“無處”到A的箭頭表示A是初始狀態(tài)。

圖1.簡單的有限狀態(tài)機(jī)

?

這個完全定義的狀態(tài)機(jī)可以很容易地轉(zhuǎn)換為VHDL。請記住,在編寫VHDL代碼時,您正在做的是描述如何實現(xiàn)硬件(即數(shù)字門)。因此,例如,當(dāng)您在此系統(tǒng)中定義一組狀態(tài)(如A,B,CD)時,這些狀態(tài)將由位來表示,更具體地由觸發(fā)器的輸出表示。在一個有四個狀態(tài)的系統(tǒng)中,就像這個狀態(tài)一樣,可以用2個位來表示這四個狀態(tài)(2個觸發(fā)器)。還有其他方式可以代表國家。其中一種方法是使用四位,其中每一位表示一個狀態(tài),但一次只能打開一位。所以A將由0001表示,B乘以0010,C乘以0100,D乘以1000.使用高級硬件描述語言的好處之一是,您通常可以忽略這一級別的細(xì)節(jié)。

圖2顯示了在將VHDL代碼合成為創(chuàng)建硬件時將創(chuàng)建的硬件電路的總體思路。

圖2.為狀態(tài)機(jī)創(chuàng)建的邏輯的框圖表示

此圖表明,有一組?觸發(fā)器表示的狀態(tài)。還有一些邏輯使用觸發(fā)器的輸出和系統(tǒng)的輸入來確定下一個狀態(tài)。最后,有一些邏輯解碼觸發(fā)器的輸出值來創(chuàng)建m個輸出信號。

同樣,在使用HDL時,您通常可以忽略設(shè)計中的這一級別細(xì)節(jié)。了解HDL創(chuàng)建什么樣的電路仍然很重要,因為可能會有一段時間您必須計算并最小化設(shè)計中的邏輯門數(shù)。了解您的HDL聲明創(chuàng)建的內(nèi)容后,您可以設(shè)計最大限度地減少大門的創(chuàng)建。

?

VHDL設(shè)計實現(xiàn)

編寫此FSM的VHDL的第一步是定義VHDL實體。VHDL實體描述了您正在設(shè)計的系統(tǒng)的外部接口,其中包括輸入,輸出和實體名稱。實體名稱將為SimpleFSM,輸入為時鐘信號,復(fù)位信號和P信號,輸出為R信號。應(yīng)該提到的是,時鐘信號是周期性的高低電平信號,它控制著這個同步系統(tǒng)的定時。任何同步系統(tǒng)都有一個控制時鐘信號,用于同步系統(tǒng)中的所有模塊,使它們同時發(fā)生變化。

把所有的信息放在一起給出一個看起來像這樣SimpleFSM實體:

ENTITY SimpleFSM is -- SimpleFSM實體定義 PORT (clock: ?? IN STD_LOGIC;P: ?????? IN STD_LOGIC;reset: ?? IN STD_LOGIC;R : ????? OUT STD_LOGIC); END SimpleFSM;

?

關(guān)于實體的最后一點是所有的輸入和輸出都是單個位,所以可以使用數(shù)據(jù)類型std_logic,它是VHDL中的標(biāo)準(zhǔn)類型,用于單位信號。

?

下一步是定義實體的功能;?這塊VHDL被稱為體系結(jié)構(gòu)。我們正在實現(xiàn)的功能是圖1中定義的狀態(tài)機(jī)的功能。下面的示例顯示了實現(xiàn)SimpleFSM所需的代碼。雖然這段代碼是特定于SimpleFSM的,但我會描述代碼中的每一部分,以便將代碼替換為您自己的狀態(tài)機(jī)的代碼是一個簡單的過程。

?

Architecture RTL of SimpleFSM is TYPE State_type IS (A, B, C, D); -- 定義狀態(tài)SIGNAL State : State_Type; -- 創(chuàng)建信號 -- 不同狀態(tài) BEGIN PROCESS (clock, reset) BEGIN If (reset = ‘1’) THEN -- 復(fù)位reset,復(fù)位狀態(tài)為AState <= A;ELSIF rising_edge(clock) THEN -- clock上升沿觸發(fā)狀態(tài)轉(zhuǎn)變CASE State IS-- If the current state is A and P is set to 1, then the-- next state is BWHEN A => IF P='1' THEN State <= B; END IF; -- If the current state is B and P is set to 1, then the-- next state is CWHEN B => IF P='1' THEN State <= C; END IF; -- If the current state is C and P is set to 1, then the-- next state is DWHEN C => IF P='1' THEN State <= D; END IF; -- If the current state is D and P is set to 1, then the-- next state is B.-- If the current state is D and P is set to 0, then the-- next state is A.WHEN D=> IF P='1' THEN State <= B; ELSE State <= A; END IF; WHEN others =>State <= A;END CASE; END IF; END PROCESS;R <= ‘1’ WHEN State=D ELSE ‘0’; END rtl;

?

這是狀態(tài)機(jī)所需的全部代碼。現(xiàn)在我們來看看架構(gòu)代碼的一些細(xì)節(jié)。

架構(gòu)定義指出:

Architecture RTL of SimpleFSM is

該語句是VHDL體系結(jié)構(gòu)的標(biāo)準(zhǔn)語句,它基本上說明了體系結(jié)構(gòu)中將要描述的抽象級別。代表寄存器傳輸級別的RTL是抽象的中間級別。

行為??是最高級別的抽象,在編寫行為代碼時,您只需要定義輸入和輸出之間的關(guān)系,而不指定如何實現(xiàn)這些關(guān)系。有時行為描述太高而不能實際合成硬件。如果你正在做一個模擬,只需要一個塊以某種方式行事,那么行為模型就足夠了。

結(jié)構(gòu)??代碼是最低級別的抽象。在編寫結(jié)構(gòu)代碼時,您將描述低層結(jié)構(gòu)(如邏輯門)如何連接在一起以提供所需的系統(tǒng)。如果您需要對將要創(chuàng)建的邏輯門進(jìn)行精確控制,那么您需要一個結(jié)構(gòu)模型。

RTL適合在中間。它具體描述輸入和輸出之間的關(guān)系,描述數(shù)據(jù)如何在硬件寄存器之間移動。RTL描述可用硬件實現(xiàn)。對于這個特定的例子,了解體系結(jié)構(gòu)類型(行為,RTL或結(jié)構(gòu))的細(xì)微差別并不是很重要,你只需要將它定義為某種東西。

下一個塊定義狀態(tài)并創(chuàng)建一個將定義狀態(tài)作為其值的信號。在這里列出的狀態(tài)應(yīng)該與FSM圖中由圓圈表示的狀態(tài)一一對應(yīng)。

TYPE State_type IS (A, B, C, D); -- the 4 different statesSIGNAL State : State_Type; -- Create a signal that uses -- the 4 different states

?

下一條語句是在其靈敏度列表中使用信號時鐘復(fù)位的VHDL過程的開始

PROCESS (clock, reset) BEGIN If (reset = ‘1’) THEN -- Upon reset, set the state to AState <= A;ELSIF rising_edge(clock) THEN

同樣,關(guān)于流程聲明的許多細(xì)節(jié)可以在本文中被忽略。所有你需要了解的是,在RTL級設(shè)計中,這個過程將創(chuàng)建一個寄存器,用于在過程中為它們分配的所有信號。在這種情況下,只有狀態(tài)信號具有分配,因此將創(chuàng)建由足夠的觸發(fā)器組成的用于表示狀態(tài)值的寄存器該寄存器將被同步到時鐘的上升沿,并可通過復(fù)位信號進(jìn)行異步復(fù)位在圖2中可以看到由該過程創(chuàng)建的電路的一般視覺表示。

rising_edge(clock)語句后面的代碼體是一個VHDL?case語句,它將被合成為邏輯,用于控制時鐘的每個上升沿上State變化的例如,聲明

WHEN A => IF P='1' THEN State <= B; END IF;

意味著如果狀態(tài)的值為A,則如果信號P為1,則在時鐘上升沿狀態(tài)更改B.

案例中的最后一個陳述是

WHEN others =>State <= A;

這個陳述是一個全面的聲明,以確保如果狀態(tài)不知為何具有不等于A,B,CD的值,那么它將重置為A的值

代碼的最后一部分在流程之外完成并創(chuàng)建一個組合邏輯塊。?

R <= ‘1’ WHEN State=D ELSE0’;

這個陳述正在做的是確定輸出R的值如果國家D,R將是1在所有其他州將為0。這里需要注意的一點是,這個狀態(tài)機(jī)的輸出僅依賴于狀態(tài)。目前狀態(tài)是確定輸出的唯一狀態(tài)的狀態(tài)機(jī)稱為Moore狀態(tài)機(jī)。另一大類的狀態(tài)機(jī)是輸出不僅取決于當(dāng)前狀態(tài),還取決于輸入。這種狀態(tài)機(jī)稱為Mealy狀態(tài)機(jī)。在實踐中,使用什么樣的狀態(tài)機(jī)通常沒有關(guān)系,如果您知道您使用的是哪種狀態(tài)機(jī),則無關(guān)緊要。所有重要的是你按照你的定義來實現(xiàn)狀態(tài)機(jī)。

設(shè)計這個系統(tǒng)的最后幾個步驟將包括模擬系統(tǒng)以確保它完成預(yù)期的工作,然后在物理系統(tǒng)(CPLD,FPGA,ASIC等)上最終綜合硬件實現(xiàn)。

?

概要

這些圖表顯示了有限狀態(tài)機(jī)圖和實現(xiàn)狀態(tài)機(jī)所需的VHDL代碼之間的關(guān)系。

圖3. FSM圖和VHDL中的狀態(tài)定義

?

圖4. FSM圖和VHDL中的狀態(tài)轉(zhuǎn)換規(guī)則

圖5. FSM圖和VHDL中的輸出

總結(jié)

本文對硬件描述語言的本質(zhì)以及HDL語句與所實現(xiàn)硬件之間的關(guān)系進(jìn)行了一些討論。但是,主要目的是向您展示如何編寫VHDL來實現(xiàn)有限狀態(tài)機(jī)。該過程涉及創(chuàng)建一個定義狀態(tài)機(jī)的輸入和輸出的VHDL實體,然后在VHDL體系結(jié)構(gòu)塊中寫入狀態(tài)轉(zhuǎn)換的規(guī)則。使用此處提供的模板,您應(yīng)該擁有實現(xiàn)自己的FSM所需的所有信息。

總結(jié)

以上是生活随笔為你收集整理的用VHDL实现有限状态机的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一本一道精品欧美中文字幕 | 欧美亚洲国产一区二区三区 | 超碰夜夜 | 欧美www | 黄色成人在线网站 | 中文字幕亚洲无线码在线一区 | 在线观看福利视频 | 制服诱惑一区 | 天天干天天综合 | 日本十大三级艳星 | 久久精品性爱视频 | www.色网站| 免费午夜激情 | 波多野结衣一区二区三区中文字幕 | 人妻饥渴偷公乱中文字幕 | 久色视频 | 日韩精品无码一区二区 | 国产小毛片 | 欧美人与动牲交a欧美精品 欧美三级在线看 | 日本wwwxxx| 亚洲av无码国产精品久久久久 | 欧美国产综合视频 | 国产成人无码一二三区视频 | 亚洲a中文字幕 | 一区二区三区在线观看 | 欧美h在线观看 | 好看的中文字幕电影 | 日韩中文在线一区 | 国产成人精品一区二区三区四区 | 日韩精品电影在线 | 成年人视频在线播放 | 久久久精品人妻av一区二区三区 | 亚洲一区二区高清 | 蜜桃视频免费网站 | 欧美jizzhd欧美18 | 亚洲成人免费av | 日韩成人综合网 | 日韩在线你懂的 | 人人妻人人爽人人澡人人精品 | 日本三级吃奶头添泬无码苍井空 | a天堂中文 | 另类性姿势bbwbbw | 日韩福利网站 | 午夜福利视频合集1000 | 国产成人亚洲精品自产在线 | 日韩中文字幕2019 | 在线国产观看 | 在线激情网站 | 亚洲v在线 | 俄罗斯丰满熟妇hd | 快色视频在线观看 | 免费观看久久 | 欧美成人dvd在线视频 | 黄色三级网 | 韩国日本欧美一区 | 男女日批网站 | 日韩精品一区不卡 | 97精品一区二区视频在线观看 | 欧美天天干 | 中国av一区| 国产videos | 337p嫩模大胆色肉噜噜噜 | 伦理片波多野结衣 | 欧美丰满艳妇bbwbbw | 人妻视频一区二区三区 | 亚洲av无码国产在丝袜线观看 | 在线免费黄色网址 | 日本xxxxxⅹxxxx69 | 成人免费av片 | 97人人超| 国产欧美一区二区精品忘忧草 | 精品乱码一区二区三四区视频 | 在线一区 | 天天干天天插天天射 | 国产精品毛片久久 | 国产成人精品综合久久久久99 | 中文字幕+乱码+中文字幕一区 | 日韩av一级| 天天干夜夜操 | 黄色网址最新 | 欧美在线aa| 成人免费短视频 | 天天色图片 | 超碰资源在线 | 高h喷水荡肉少妇爽多p视频 | 男人天堂999| 成人av网站免费 | 波多野结衣小视频 | av电影在线观看不卡 | 亚洲精品久久久久久无码色欲四季 | 婷婷综合在线视频 | 亚洲视频国产视频 | 少妇一级淫免费播放 | 天堂av在线网 | 欧美成人片在线 | 亚洲欧美综合 | 香蕉福利 | 美女丝袜av | 日韩精品视频一区二区三区 |