freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于vhdlmealy狀態(tài)機(jī)設(shè)計(jì)說明書-文庫吧

2025-04-17 19:02 本頁面


【正文】 。等公司提供的其它多種 EDA 工具接口。 MAX+PLUSⅡ編譯器可以在PC 機(jī)及 各種工作站平臺(tái)上運(yùn)行,這使 MAX+PLUSⅡ 成為工業(yè)界中唯一與平境。 4. 2 MAX+PLUSⅡ 的特點(diǎn) MAX+PLUSⅡ的特點(diǎn): ( 1) MAX+PLUSⅡ的編譯核心支持 Altera公司的 FLEX 10K、 FLE 8K、 MAX9000、MAX7000、 FLASHHlogic、 MAX5000、 Classic系列可編程邏輯器件。 ( 2) MAX+PLUSⅡ的設(shè)計(jì)輸入、處理與校驗(yàn)功能一起提供了全集成化的一套可編程邏輯開發(fā)工具,可加快動(dòng)態(tài)調(diào)試,縮短開發(fā)周期。 ( 3) MAX+PLUSⅡ支持各種 HDL設(shè)計(jì)輸入,包括 VHDL、 Verilog和 Altera AHDL。 ( 4) MAX+PLUSⅡ與其他工業(yè)標(biāo)準(zhǔn)設(shè)計(jì)輸入、綜合與校驗(yàn)工具鏈接。與 CAE工具的接口符合 EDIF200和 20參數(shù)化模塊庫( LPM)、 Verilog、 VHDL及其他標(biāo)準(zhǔn)。設(shè)計(jì)者可使用 Altera或標(biāo)準(zhǔn) CAE 設(shè)計(jì)工具去建立邏輯設(shè)計(jì),使用 MAX+PLUS Ⅱ編譯器對(duì) Altera器件設(shè)計(jì)進(jìn)行編譯,并使用 Altera或其他 CAE校驗(yàn)工具進(jìn)行器件或板級(jí)仿真。 MAX+PLUSⅡ支持與 Synopsys、 Viewlogic、 Mentor Graphics、Cadence、 Exemplar、 Data I/O、 Intergraph、 Minc、 OrCAD等公司提供的工具接口。 VHDL設(shè)計(jì) 狀態(tài)機(jī)是由狀態(tài)寄存器和組合邏輯電路構(gòu)成的,能夠根據(jù)控制信號(hào)按照預(yù)先設(shè)定的狀態(tài)進(jìn)行狀態(tài)轉(zhuǎn)移,是協(xié)調(diào)相關(guān)信號(hào)動(dòng)作,完成特定操作的控制中心,屬于種時(shí)序邏輯電路。常用的狀態(tài)機(jī)有三個(gè)部分組成,即當(dāng)前狀態(tài)寄存器 (Current State,CS)、下一狀態(tài)組合邏輯 (Next State,NS)和輸出組合邏輯 (Output Logic, OL)。 類 從信號(hào)輸出方式上 ,有限狀態(tài)機(jī)分為 :Moore型和 Mealy型兩類 ,從輸出時(shí)序上看前者屬于異步輸出狀態(tài)機(jī) ,后者屬于同步輸出狀態(tài)機(jī) (所謂同步或異步都是相對(duì)于時(shí)鐘信號(hào)而言的。不依賴于時(shí)鐘而有效的信號(hào)稱為異步信號(hào) ,而依賴于時(shí)鐘才有效的信號(hào)稱為同步信號(hào) )。 Moore型有限狀態(tài)機(jī)的輸出僅為當(dāng)前狀態(tài)的函數(shù) , 這類狀態(tài)機(jī)在輸入發(fā)生變化后再等待時(shí)鐘的到來 ,時(shí)鐘使?fàn)顟B(tài)發(fā)生變化時(shí)才 7 導(dǎo)致輸出的變化; Mealy型有限狀態(tài)機(jī)的輸出是當(dāng)前狀態(tài)和所有輸入信號(hào)的函數(shù) ,它的輸出在輸入變化后立即發(fā)生。從結(jié)構(gòu)圖上看它們的區(qū)別如圖 3和圖 4所示。 圖 3 Moore 型狀態(tài)機(jī) 圖 4 Mealy 型狀態(tài)機(jī) 與 Moore型狀態(tài)機(jī)相比較 ,Mealy狀態(tài)機(jī)的輸出變化要領(lǐng)先一個(gè)時(shí)鐘周期。通過狀態(tài)機(jī)的工作時(shí)序圖比較容易區(qū)分這兩種類型的狀態(tài)機(jī) ,如果單純從 VHDL代碼來區(qū)分 ,就主要看他的輸出與輸入是否有關(guān)系 ,有關(guān)系的就是 Moore型狀態(tài)機(jī) ,無關(guān)的就是 Mealy型狀態(tài)機(jī) .正確的區(qū)別兩類狀態(tài)機(jī)是正確設(shè)計(jì)的前提 ,只有才能按照自己的意愿或者要求去設(shè)計(jì)不同類型的狀態(tài)機(jī)。 狀態(tài)機(jī)的設(shè)計(jì)步驟 利用 VHDL語言設(shè)計(jì)狀態(tài)機(jī),所有的狀態(tài)可表示為 casewhen結(jié)構(gòu)中的一個(gè)when子句,而狀態(tài)的轉(zhuǎn)換則通過 ifthenelse語句實(shí)現(xiàn)。 利用枚舉型定義狀態(tài)信號(hào) type StateType is(s0,s1,s2…)。 枚舉類型 signal present_state,next_state:StateType。 現(xiàn)態(tài)和次態(tài)信號(hào) 建立狀態(tài)機(jī)進(jìn)程 state_b:process(present_state,din) – 狀態(tài)轉(zhuǎn)換進(jìn)程 begin …… end process state_b。[7] 在進(jìn)程中定義狀態(tài)的轉(zhuǎn)換 在進(jìn)程中使用 casewhen 語句,因狀態(tài) s0 是狀態(tài)轉(zhuǎn)換的起點(diǎn),因此,把 s0作為 case 語句中第一個(gè) when 子句項(xiàng),然后利用 ifthenelse 語句列出轉(zhuǎn)移到次態(tài)的條件,即可寫出狀態(tài)轉(zhuǎn)換流程: PROCESS COM b_outputs current_state PROCESS COM input b_outputs current_state 8 case present_state is when s0=z=’0’。if din=’1’then next_state=s1。 else next_state=s0。end if。 …… Mealy型狀態(tài)機(jī)的設(shè)計(jì) 與 Moore型狀態(tài)機(jī)相比較 ,Mealy機(jī)的輸出變化要領(lǐng)先一個(gè)周期 ,即一旦輸 入信號(hào)或狀態(tài)發(fā)生變化 ,輸出信號(hào)即刻發(fā)生變化。 Mealy狀態(tài)機(jī)的結(jié)構(gòu)框圖如圖 5所示: 圖 5 Mealy狀態(tài)機(jī)結(jié)構(gòu)框圖 對(duì) Mealy狀態(tài)機(jī)設(shè)計(jì)首先要把整個(gè)流程圖畫出來 ,根據(jù)流程圖設(shè)計(jì)各個(gè)部分。下圖是流程圖 : 圖 6 狀態(tài)機(jī)的 VHDL設(shè)計(jì)流程圖 根據(jù)系統(tǒng)要求 建立狀態(tài)轉(zhuǎn)換圖 根據(jù)狀態(tài)轉(zhuǎn)移圖編 寫 VHDL 設(shè)計(jì)程 序 利用 EDA 工具 進(jìn)行仿真、驗(yàn)證 input 組合邏輯 寄存器 reset 當(dāng)前狀態(tài) output clk 9 根據(jù)流程圖的設(shè)計(jì)步驟畫出狀態(tài)轉(zhuǎn)換圖 ,如下圖所示 : 圖 7 狀態(tài)轉(zhuǎn)換圖 然后根據(jù)狀態(tài)轉(zhuǎn)換圖寫出程序代碼 ,程序如下面所示 : library ieee。 use 。 entity mealy2 is port ( clk,datain,reset:in std_logic。 q:out std_logic_vector(4 downto 0))。 end mealy2。 architecture behav of mealy2 is type states is (st0,st1,st2,st3,st4)。 signal stx : states。 signal q1 : std_logic_vector(4 downto 0)。 begin reg : process(clk,reset) begin ST1 ST2 ST3 ST4 ST0 1/10000 0/10111 1/10101 0/11011 0/01010 1/10100 0/10011 1/01001 10 if reset=39。139。 then stx=st0。 elsif clk39。event and clk = 39。139。 then case stx is when st0 = if datain =39。139。 then stx= st1。else stx=st0。end if。 when st1 = if datain =39。039。 then stx= st2。else stx=st0。end if。 when st2 = if datain =39。139。 then stx= st3。else stx=st0。end if。 when st3 = if datain =39。039。 then stx= st4。else stx=st0。end if。 when st4 = if datain =39。139。 then stx= st0。else stx=st0。end if。 when others = stx=st0。 end case。 end if。 end process reg。 1: process (stx,datain,clk) variable q2 : std_logic_vector( 4 downto 0)。 begin case stx is when st0=if datain=39。139。 then q2 :=10000。else q2:=01010。end if。 when st1=if datain=39。039。 then q2 :=10111。else q2:=10100。end if。 when st2=if datain=39。139。 then q2 :=10101。else q2:=10011。end if。 when st3=if datain=39。039。 then q2 :=11011。else q2:=01001。end if。 when st4=if datain=39。139。 then q2 :=11101。else q2:=01101。end if。 when others = q2:=00000。 end case。 if clk39。event and clk =39。139。 then q1=q2。end if。 end process 1。 q=q1。 end behav。 程序分析: 這段程序是 2進(jìn)程 Mealy型狀態(tài)機(jī)。由 entity語句引導(dǎo)的是主體,由 architecture語句引導(dǎo)的是結(jié)構(gòu)體。 在結(jié)構(gòu)體中, 進(jìn)程 reg是時(shí)序與組合混合型進(jìn)程,它將狀態(tài)機(jī)的主控時(shí)序電路和主控狀態(tài)譯碼電路同時(shí)用一個(gè)進(jìn)程來表達(dá) 。 這個(gè)進(jìn)程也是狀態(tài)轉(zhuǎn)換過程。 11 reset復(fù)位后初始狀態(tài)設(shè)置為 st0,當(dāng) datain為高電平且 clk信號(hào)處于上升延時(shí),將 st1賦值給 stx, 即狀態(tài)由 st0轉(zhuǎn)換為 st1;當(dāng) datain為底電平且 clk信號(hào)處于上升延時(shí),將 st2賦值給 stx,即狀態(tài)由 st1轉(zhuǎn)換為 st2;當(dāng) datain為高電平且 clk信號(hào)處于上升延時(shí),將 st3賦值給 stx, 即狀態(tài)由 st2轉(zhuǎn)換為 st3;當(dāng) datain為底電平且 clk信號(hào)處于上升延時(shí),將 st4賦值給 stx, 即狀態(tài)由 st3轉(zhuǎn)換為 st4;當(dāng) datain為高電平且 clk信號(hào)處于上升延時(shí),將 st4賦值給 stx, 即狀態(tài)由 st4轉(zhuǎn)換為 st0。其他情況狀態(tài)均轉(zhuǎn)換為 st0。 進(jìn)程 1負(fù)責(zé)根據(jù)狀態(tài)和輸入信號(hào)給出不同的輸出信號(hào)。 這個(gè)進(jìn)程是輸出過程。當(dāng)為狀態(tài) st0時(shí), datain為高電平,則輸出為“ 10000”, datain為低電平,則輸出為“ 01010”;當(dāng)為狀 態(tài) st1時(shí), datain為高電平,則輸出為“ 10100”, datain為低電平,則輸出為“ 10111”;當(dāng)為狀態(tài) st2時(shí), datain為高電平,則輸出為“ 10101”,datain為低電平,則輸出為“ 10011”;當(dāng)為狀態(tài) st3時(shí), datain為高電平,則輸出為“ 01001”, datain為低電平,則輸出為“ 11011”;當(dāng)為狀態(tài) st4時(shí), datain為高電平,則輸出為“ 11101”, datain為低電平,則輸出為“ 01101”。 此進(jìn)程最后用一個(gè) IF語句產(chǎn)生一個(gè)鎖存器,將 q2鎖存后再輸出。由于是同步鎖存的緣 故,沒有發(fā)生鎖存后延時(shí)一個(gè)時(shí)鐘周期的現(xiàn)象。 對(duì)程序進(jìn)行編譯仿真后得出 幾幅 仿真圖 , 如下 所示 : 其中 reset為復(fù)位信號(hào) ,高電平有效, datain為輸入信號(hào), clk是時(shí)鐘信號(hào),上升延有效 ,q為輸出信號(hào), q1~ 65為輸出 q的 16進(jìn)值, stx為狀態(tài)。 此 圖的狀態(tài)由 st0、 st st st3和 st4依次循環(huán)轉(zhuǎn)換下去。 reset信號(hào)復(fù)位以后,狀態(tài)無條件轉(zhuǎn)換為狀態(tài) st0。此后每一個(gè) clk上升延依照 datain輸入信號(hào)的高低進(jìn)行狀態(tài)轉(zhuǎn)換。 12 此圖 標(biāo)尺 處 體現(xiàn)了狀態(tài)由 st1轉(zhuǎn)換到 st0。當(dāng)狀態(tài)為 st1,輸入 datain為 高電平時(shí),狀態(tài)由 st1到 st0,而不是 st1到 st2。 此圖標(biāo)尺處體現(xiàn)了狀態(tài)由 st2轉(zhuǎn)換到 st0。當(dāng)狀態(tài)為 st2,輸入 datain為低電平時(shí),狀態(tài)由 st2到 st0,而不是 st2到 st3。 此圖標(biāo)尺處體現(xiàn)了狀態(tài)由 st3轉(zhuǎn)換到 st0。當(dāng)狀態(tài)為 st3,輸入 datain為高電平時(shí),狀態(tài)由 st3到 st0,而不是 st3到 st4。 13 毛刺的產(chǎn)生,一方面由于通常的狀態(tài)機(jī)中都包 含有組合邏輯進(jìn)程,使得輸出信號(hào)在時(shí)鐘的有效邊沿產(chǎn)生毛刺;另一方面當(dāng)狀態(tài)信號(hào)是多位值的時(shí)候,在電路中就對(duì)應(yīng)了多條信號(hào)線,如果同時(shí)有幾條信號(hào)線跳變,由于存在傳輸延遲,各信號(hào)線上的值發(fā)生改變的時(shí)間會(huì)有先后 ,使得狀態(tài)遷移的時(shí)候在初始狀態(tài)和目的狀態(tài)間出現(xiàn)臨時(shí)狀態(tài),雖然它只存在了很短的時(shí)間,但仍然會(huì)影響電路的穩(wěn)定。 對(duì)于第一種情況,在大多數(shù)條件下,毛刺對(duì)電路的影響可忽略不計(jì),但是當(dāng)狀態(tài)機(jī)的輸出信號(hào)作為三態(tài)使能控制或者時(shí)鐘信號(hào)使用的時(shí)候,就必須要消除毛刺。消除的方法可以用改進(jìn)有限狀態(tài)機(jī)的描述方法來解決這個(gè)問題:把時(shí)鐘信號(hào)引入組合進(jìn)程
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1