使用VHDL設計--Moore Machine 通訊ㄧ甲 B09622048 楊穎穆
目錄 目的 設計原理 程式 實驗結果 參考資料
目的 試用VHDL設計一Moore Machine 需求: 1. 有一輸入reset, x及同步脈波Clock,輸出為3位元的Y
設計原理 Moore Machine:輸出之狀態在狀態穩定時 當x輸入為‘1’時,y輸出值為上一狀態y值加‘1’ X clock cc FF cc y 正反器 新狀態組合電路 輸出組合電路 reset
設計原理 狀態變遷圖 S0 00 X=1 X=1 X=0 X=0 S1 01 S3 11 X=0 X=0 X=1 X=1 S2 10
程式 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;
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
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;
clocking:process(clock,ns) --同步脈波處理 begin if (clock'event and clock='1')then --正緣觸發訊號 ps<=ns; --由目前狀態改變到下一狀態 end if; end process clocking; end behav;
實驗結果(1) 如果x=‘0’,目前狀態是s7時,輸出為“111”,則下一狀態是s6。
實驗結果(2) 如果x=‘0’,目前狀態是s3時,輸出為“011”,則下一狀態是s2。
實驗結果(3) 如果x=‘1’,目前狀態是s1時,輸出為“001”,則下一狀態是s2。
實驗結果(4) 如果x=‘1’,目前狀態是s6時,輸出為“110”,則下一狀態是s7。
參考資料 主要的資料來源來至於王志湖老師上課所教授的內容及”數位邏輯”這本書。
END