Presentation is loading. Please wait.

Presentation is loading. Please wait.

使用VHDL設計--Moore Machine

Similar presentations


Presentation on theme: "使用VHDL設計--Moore Machine"— Presentation transcript:

1 使用VHDL設計--Moore Machine
通訊ㄧ甲 B 楊穎穆

2 目錄 目的 設計原理 程式 實驗結果 參考資料

3 目的 試用VHDL設計一Moore Machine 需求: 1. 有一輸入reset, x及同步脈波Clock,輸出為3位元的Y

4 設計原理 Moore Machine:輸出之狀態在狀態穩定時 當x輸入為‘1’時,y輸出值為上一狀態y值加‘1’
X clock cc FF cc y 正反器 新狀態組合電路 輸出組合電路 reset

5 設計原理 狀態變遷圖 S0 00 X=1 X=1 X=0 X=0 S1 01 S3 11 X=0 X=0 X=1 X=1 S2 10

6 程式 library ieee; use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity moore is ic內部要做的電路名稱 port( 接腳 clock,reset,x:in std_logic; 輸入腳位clock,reset,x y :out std_logic_vector(2 downto 0) --輸出腳位 y,且內部有三個位元數 ); end; architecture behav of moore is 電路內部結構 type state is(s0,s1,s2,s3,s4,s5,s6,s7); signal ps,ns: state;

7 begin sq:process(reset,ps) 處理內部要處理的輸入訊號 if(reset=‘0’)then 當reset=‘0’時,則進行狀態初始化 ns<=s0; 設定初始狀態 y<=“000”; 輸出設定為“000” else case ps is 利用case…is寫法來做狀態處理 when s0=>y<=“000”; 當目前狀態是s0時,輸出為“000” if x=‘1’ then ns<=s1; 如果x=‘1’,則下一狀態是s1 else ns<=s7; 否則下一狀態是s7 end if; when s1=>y<="001"; 當目前狀態是s1時,輸出為“001” if x='1' then ns<=s2; 如果x=‘1’,則下一狀態是s2 else ns<=s0; 否則下一狀態是s0 when s2=>y<="010"; 當目前狀態是s2時,輸出為“010” if x='1' then ns<=s3; 如果x=‘1’,則下一狀態是s3 else ns<=s1; 否則下一狀態是s1

8 when s3=>y<="011"; --當目前狀態是s3時,輸出為“011”
if x='1' then ns<=s4; 如果x=‘1’,則下一狀態是s4 else ns<=s2; 否則下一狀態是s2 end if; when s4=>y<="100"; 當目前狀態是s4時,輸出為“100” if x='1' then ns<=s5; 如果x=‘1’,則下一狀態是s5 else ns<=s3; 否則下一狀態是s3 when s5=>y<="101"; 當目前狀態是s5時,輸出為“101” if x='1' then ns<=s6; 如果x=‘1’,則下一狀態是s6 else ns<=s4; 否則下一狀態是s4 when s6=>y<="110"; 當目前狀態是s6時,輸出為“110” if x='1' then ns<=s7; 如果x=‘1’,則下一狀態是s7 else ns<=s5; 否則下一狀態是s5 when s7=>y<="111"; 當目前狀態是s7時,輸出為“111” if x='1' then ns<=s0; 如果x=‘1’,則下一狀態是s0 else ns<=s6; 否則下一狀態是s6 end case; end process sq;

9 clocking:process(clock,ns)
--同步脈波處理 begin if (clock'event and clock='1')then --正緣觸發訊號 ps<=ns; --由目前狀態改變到下一狀態 end if; end process clocking; end behav;

10 實驗結果(1) 如果x=‘0’,目前狀態是s7時,輸出為“111”,則下一狀態是s6。

11 實驗結果(2) 如果x=‘0’,目前狀態是s3時,輸出為“011”,則下一狀態是s2。

12 實驗結果(3) 如果x=‘1’,目前狀態是s1時,輸出為“001”,則下一狀態是s2。

13 實驗結果(4) 如果x=‘1’,目前狀態是s6時,輸出為“110”,則下一狀態是s7。

14 參考資料 主要的資料來源來至於王志湖老師上課所教授的內容及”數位邏輯”這本書。

15 END


Download ppt "使用VHDL設計--Moore Machine"

Similar presentations


Ads by Google