untitled



Similar documents
untitled

了 立 連 立 量 領 來 例 蘭 便 不 數 不 論 更 更 更 力 更 參 例 來 例 見 量 度 量 量 參 論 量 行 量 量 瑩 理 來 錄 量 量 不 力 省 力 立 力 量 量 量 了 量 便 錄 錄 錄 料 說 省 6

untitled

地方公共服務績效比較評量之探討—標竿學習策略的觀點

1

untitled

第五章 鄉鎮圖書館閱讀推廣活動之分析

國立故宮博物院九十三年提升服務品質績效報告

untitled

untitled

臺灣地區的警察教育現況與展望

untitled

untitled

untitled

個人教室 / 網路硬碟

untitled

國家圖書館典藏電子全文

untitled

第一場

大陸黨報集團化發展之研究

國家圖書館典藏電子全文

untitled

untitled


龍華科技大學

untitled

untitled

untitled

untitled

untitled

台灣紡織產業發展史物件徵集計畫研究報告

隱形眼鏡的世界

九十四年度提升服務品質績效報告

untitled

untitled

untitled

untitled

untitled

untitled

untitled

第四章、個案研究

untitled

untitled

理 羅 樓 理 樓 例 老 年 I

國立中山大學學位論文典藏.PDF

untitled

untitled

廉 樂 不 廉 倫 理 廉 倫 理 領 不 參 領 不 若 不 不 不 不 利 聯 行 李 聯 例 律

untitled

untitled

untitled

untitled

第一章 緒論

untitled

untitled

untitled

untitled

untitled

untitled

untitled

untitled

專 題 論 述

一考察行程

「UPENN牙醫學院見習及費城文藝之旅」成果報告書

untitled

untitled

untitled

untitled

�������������������������

國立政治大學新研所碩士在職專班

學風水的第一本書

untitled

untitled

untitled

untitled

龍 華 科 技 大 學

40億校產捐給政府

untitled

untitled

untitled

立 論 (93 年 5 ) 論 立 論 立 年 年 不 立 讀 理 念 不 數 列 論 錄 列 行 利 數 列 論 論 路 讀 利 索 列 論 陸 年 數 數 年 六 論 理 離 讀 利 索 列 列 論 理

untitled

untitled

漫談養生之道

教學組報告

untitled

untitled

untitled

untitled

第三章 我國非營業特種基金制度及運作現況

南華大學數位論文

個人提供土地與建設公司合建分屋並出售合建分得之房屋,核屬營業稅法規定應課徵營業稅之範圍,自本函發布日起,經建築主管機關核發建造執照之合建分屋案件,附符合說明二之規定者外,均應辦理營業登記,課徵營業稅及營利事業所得稅

施政計畫管理資訊系統

untitled

untitled

untitled

untitled

STANDARD

「我國憲政史」的多元詮釋

untitled

Transcription:

論 FPGA FPGA External Step Motor Control Module 立 老 林 年

立 老 論 VHDL VHDL 了 論 老 了 度 老 立 老 不 老 都 度 行 流 VHDL 年 來 論 了 不 識 念

VHDL IEEE IEEE 1076 1993 年 度 VHDL 不 FPGACPLD 了 路 利 廉 FPGA 立 利 VHDL ( MAXPLUS) 路 ( 利 PROTEL99SE ) 利 歩

Abstract After IEEE enact IEEE 1076VHDL redact again at 1993The program language of VHDL can use at FPGA and CPLD chips which are different company produced this is his advantagein order to design a function formidable control circuit in a short period of timewe develop a tiny independent system with the application of low cost filed programmable gate arrays (FPGA) It is suitable for mass production, owning to the saving of software and applying of low cost FPGA This monograph is based on VHDL editing by MAXPLUSand the FPGA External Step Motor Control Module is boarding by PROTEL99SE To achieve the human-computer interface module of keyboardseven segment and step motor are interconnected

錄...i......ii.. iii 錄.. iv 錄......vi 錄.....vii..1 1.1...1 1.2 FPGA 論...1 1.3 VHDL 路..2 VHDL 料 4 2.1 VHDL...4 2.1.1 VHDL...4 2.1.2 VHDL 路...4 2.2 ENTITYARCHITECTURE.5 2.3 VHDL 料 OBJECT.10 2.4 17 2.4.1.17 2.4.2 連.18 2.4.3.19 2.5 VHDL MAX+PLUS..20..28 3.1 28 3.1.1.28 3.2... 31

3.2.1.31 3.2.2 流.32 3.2.3.33 3.3 歩 39 3.3.1. 39 3.3.2...39 3.3.3...40 3.3.4 40 3.4 PCB 路 Protel 99 SE 42 FPGA...46 4.1 FPGA. 46 4.1.1 FPGA..46 4.1.2.46 4.2 FPGA.47 4.2.1 Scan generator...47 4.2.2 路.48 4.2.3 路.52 4.3 FPGA.54 4.3.1.54 4.3.2 57 論..67 5.1 67 5.2 來 68 參..69 錄..70

錄 3.1-1 LED 路..29 3.2-1... 31 3.2-2 流...32 3.3(a) 歩.. 41 3.3(b) 歩.. 41 3.3(c) 歩.......42 4.2-1... 47 4.2-2 PORT 34 4 邏.. 49 4.2-3 路.... 50 4.2-4 PORT 2 路 邏.....51 4.2-5 FPGA. 52 4.2-6 FPGA 路.53 4.3-1 FPGA 流...56

錄 3.1-1 六....29 4.2-1....48 4.3-1...54

1.1 省 略 數 IC FPGA 數 邏 列 了 路 路 不 行 路 更 便 來 了 FPGA 1.2 FPGA 論 力 來 路 (EDA)(CAD) 數 路 路 了 類 更 數 歷 切 來 數 路 離 度 邏 (Gate-Level) 流 行 (HDL) 流 路 零 來 來 力 來 數 路 理 路 列 來 FPGA CPLD 量

都 行 不 IC 路 CPLD FPGA 都 行 路 载 說 都 行 理 年 來 IC CPLD/FPGA 量 數 邏 量 CPLD/FPGA 流 量 力 ASIC 來 CP 利 來 更 CPLD/FPGA 降 CPLD/FPGA ASIC 流 都 STANDARD CELL FULLY CUSTOM ASIC 不 數 都 FPGA ActelAltera Xilinx Altera 1.3 VHDL 路 VHDL VERY HIGH SPEED INTEGRATED CIRCUIT HARDWARE DESCRIPTION LANGUAGE 便 數 路 TTL CMOS 數 路 不 VHDL 路 不 邏 不 路 零 數 路 VHDL 數 路 VHDL 路 念 數 IBM PC

VHDL 路 省 浪 路 更 不 TTL CMOS 數 路 路 例 理 不 路 理 VHDL VHDL 路 理 便 了 路 理 VHDL 路 路 ASIC FPGA VHDL IBM PC IEEE STD1076 IEEE STD1176 VHDL 路 類 TTL 路 路 料 路 ASIC 零 FPGA VHDL VHDL VHDL 數 TTL CMOS 來 不 更 RTLREGISTER TRANSFERLEVEL 數 REGISTER TRANSFERLEVEL 路 年 來 路 路 更 率 更 路

VHDL 料 2.1 VHDL 2.1.1VHDL : 來 行 來 理 益 路 類 VHDL TOP-DOWN 數 路 數 數 數 立 立 行 VHDL 路 列. ASIC 路 路 VHDL. 靈 VHDL 路 行 來 更 易 率 降 便 利 VHDL 更 流 3. 不 VHDL 不 來 不 路 4. 不 來 行 不 路 更 類 邏 2.1.2 VHDL 路 VHDL 路 了 來 路 行 VHDL 路 路 路 路

更 (Entity) 路 Entity VHDL 留 (Architecture) 路 路 論 路 來 連 VHDL 路 Symbols (Package) 料 了 落 裡 VHDL PACKAGE C (Attribute) 來 料 2.2 ENTITYARCHITECTURE 1.VHDL STRUCTURE ARCHITECTURE VHDL 利 料 路 不 VHDL 路 路 WIRE

ENTITY IS PORT(A,B:IN STD_LOGIC; C:OUT STD_LOGIC); END ; ARCHITECTURE STRUCT OF IS SIGNAL : STD_LOGIC; COMPONENT 1 PORT(X,Y:IN STD_LOGIC; END COMPONENT; Z:OUT STD_LOGIC) COMPONENT 2 PORT(J,K:IN STD_LOGIC; END COMPONENT; W:OUT STD_LOGIC)

路 BEGIN U0: 0 PORT MAP( ); U1: 1 PORT MAP( ); END STRUCT; COMPONENT 列 COMPONENT 連 U0U1INSTANTIATION 2. 行 BEHAVIOR ARCHITECTURE 類 行 利 流 PROCESS 行 行 CONCURRENT 行 流 PROCESS 行 流 PROCESSSEQUENTIAL 行 流 PROCESSSIGNAL 來 連 流 PROCESS SEQUENTIAL 流 COMBINATION 流 流 流 勵 流 ENTITY IS PORT(A,B:IN STD_LOGIC; C:OUT STD_LOGIC); END ;

; ARCHITECTURE BEHAVIOR OF IS SIGNAL :STD_LOGIC; 行 路 BEGIN PROCESS_1:PROCESS; BEGIN END PROCESS_1; PROCESS_2:PROCESS; BEGIN END PROCESS_2; END BEHAVIOR;

3. 料 流 DATAFLOW ARCHITECTURE 料 流 邏 邏 利 邏 ENTITY IS GENERIC(M:TIME:=3.ONS);---- SIGNAL :STD_LOGIC; 料 流 路 BEGIN C<=(A OR B) AFTER M; END DATAFLOW;

2.3 VHDL 料 OBJECT VHDL 料 類 烈 路 例 數 VARIABL 路 路 NET 路 路 類 路 路 料 理 VHDL 數 variablesignal 數 constant port 參 數 loop varisblegenerics 都 type 1. 數 variablesingal 數 流 流 立 更 流 路 理 來 路 不 來 路 列 兩 例 料 數 異 數 數 數 不 數 數 數 料 例 singal outputabstd_logic process(input,clk) begin if(clk event and clk= 1 ) then output <= b; b<=a a<=input;

end if; end process; 例 a b input a a b b output 流 process 了 兩 clk 例 a b 數 路 不 clk 例 signal output processs(input,clk) variable a,b:std_logic; begin if(clk event and clk= 1 )then a:=input; b:=a; output<=b; end if; end processs; 數 process process 立 更 若 數 來 更 列 例 signal output process(input,clk) variable a,b:std_logic; begin if(clk event and clk= 1 )then output <= b;

b:=a; a:=input; end if; end process; 2. 數 constant 數 不 constant A:std_logic_vector(0 to 7):="ZZZZZZZZ"; 3.PORT PORT PORT ENTITY port 類 1. IN 說 路 來 2. OUT 說 路 3. INOUT 說 路 INOUT INOUT Buffer 不 4. Buffer 不 INOUT ENTITY ADDER IS

PORT(INPUT: IN STD_LOGIC_VECTOR (0 TO 7); OUTPUT:OUT STD_LOGIC_VECTOR(0 TO 7); END ADDER; 4.GENERIC GENERIC 例 Generic( 參 數 string 參 數 integer) Generic Map( 參 數 參 數, 參 數 參 數 ) 說 兩 不 ENTITY ADDER IS GENERIC(SIZE:INTEGER:=8); PORT(INPUT:IN STD_LOGIC_VECTOR(0 TO 7); OUTPUT:OUT STD_LOGIC_VECTOR(0 TO 7); END ADDER; 5. 參 數 loop variable 參 數 loop variable 不 LOOP 1 FOR 數 in 數 to 數 LOOP END LOOP 例 FOR I in 0 to 3 LOOP

END LOOP 說 I 0 行 I 行 I 3 2 FOR 數 in 數 downto 數 LOOP END LOOP 例 FOR K in 10 downto 0 LOOP END LOOP 說 K 10 行 K 1 行 K 0 WHILE LOOP END LOOP 說 While Loop 行 FOR I IN 0 TO 5 LOOP A(I)<=B(I);

END LOOP LOOP 參 數 I 012 5 行 6 六 路 6.IF IF IF 1 IF THEN END IF 說 立 行 2 IF THEN A ELSE B END IF 說 立 A 行 行 B 3 IF 1 THEN A ELSEIF 2 B ELSEIF 3 C

ELSE D END IF 說 1 立 行 A 2 立 行 B 類 7.WAIT WAIT 1 WAIT FOR 度 說 來 度 行 不 MAX+PLUS10.1 不 2 WAIT ON 列 說 PROCESS 來 列 便 行 PROCESS 3 WAIT UNTIL 說 立 行 PROCESS 4 WAIT 說

PROCESS 來 PROCESS 行 3 8. 零 (Package) 零 數 料 零 路 不 裡 不 了 2.4 路 連 若 數 路 說 連 來 路 流 路 若 路 路 路 不 易 2.4.1 行 component port( 1 1 料 1 2 2 料 2 料 )

end component; architecture of is begin end ; VHDL 來 行 行 了 數 料 不 便 讀 2.4.2 連 行 路 連 狀 行 句 兩 port map( 1 1, 2 2,

) 說 不 狀 port map( 1, 2,) 說 1 連 2 連 類 2.4.3 來 路 流 路 來 例 路 A BCF G 路 B D E 路 C E H A B C F G D E E H

2.5 VHDL MAX+PLUS :Altera MAX+PLUS Max+Plus II 10.0 BASELINE ; 連 錄 錄 句 說 都 (third party) Max+Plus II 邏 路 不 :File -> Project -> Name

VHDL :File -> New -> Text Editor

-> ->

-> 路 :MAX+plusII -> Floorplan Editor

: FPGA : <>

programmer

POF

Program --->

3-1 3.1.1 來 說 利 LED 列 IC 7447/7448 便 數 不 都 若 更 數 IC 更 路 路 率 利 理 來 念 度 1/16 留 度 便 立 了 了 利 了 理 利 留 理 度 度 了 不 省 了 IC 量 更 省 不 率 更 率 兩 3.1-1 LED 路

3.1-1 LED 路 1~9 數 abcdefgp 不 1 LED 3.1-2 六 3.1-1 六 六 NUM a b c d e f g 0 0 0 0 1 1 1 1 1 1 0

0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 1 0 1 1 0 1 0 0 1 1 1 1 1 1 0 0 1 0 1 0 0 0 1 1 0 0 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1

FPGA 六 sel0 sel1 sel2 sel3 sel4 sel5 FPGA IC 122 125 126 127 128 131 3.2 3.2.1 說 見 數 見 類 類 ()()() 論 類 不 立 兩 論 列 1 3.2-1 3.2-1 4 4 4 列 4 行 16 I/O 路 省 量 立 來 路 列 行 INT

來 列 1110 01101101101111110 例 行 1 列 1 行 1111 了 1110 INT 0 了 1 利 INT 來 立 列 利 理 來 3-2.2 流 了 3-1 3-2 念 利 VHDL 來 4 4 數 數 數 數 0 理 不 理 3.2-2 流 率 數 數 3.2-2 流

3-2.3 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY KEYBOARD IS PORT( CLK:IN STD_LOGIC; AI:IN STD_LOGIC_VECTOR(3 DOWNTO 0); CO:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); P:OUT STD_LOGIC_VECTOR(5 DOWNTO 0); SP:OUT STD_LOGIC); END KEYBOARD; ARCHITECTURE KEY OF KEYBOARD IS SIGNAL F:STD_LOGIC_VECTOR(5 DOWNTO 0); SIGNAL F_HZ:STD_LOGIC; SIGNAL OSC:STD_LOGIC; SIGNAL OSC1:STD_LOGIC; SIGNAL C:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL A:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL CODE:STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL BCD:STD_LOGIC_VECTOR(23 DOWNTO 0); SIGNAL SUM:STD_LOGIC_VECTOR(4 DOWNTO 0); SIGNAL D:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"; SIGNAL SPO:STD_LOGIC;

BEGIN P(5 DOWNTO 0)<=F(5 DOWNTO 0); CO(3 DOWNTO 0)<=C(3 DOWNTO 0); A(3 DOWNTO 0)<=AI(3 DOWNTO 0); SP<=SPO; ---- PROCESS(OSC) VARIABLE D_FF:STD_LOGIC_VECTOR(20 DOWNTO 0); BEGIN WAIT UNTIL CLK='1'; IF(D_FF(20 DOWNTO 0)>=2E6) THEN D_FF(20 DOWNTO 0):="000000000000000000000"; ELSE D_FF(20 DOWNTO 0):=D_FF+1; END IF; F_HZ<=NOT D_FF(6); OSC<=NOT D_FF(10); OSC1<=NOT D_FF(18); END PROCESS; ---- PROCESS(F_HZ,OSC,OSC1) VARIABLE B:STD_LOGIC; VARIABLE INT:STD_LOGIC; VARIABLE DATA:STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE ST:STD_LOGIC_VECTOR(2 DOWNTO 0); VARIABLE SEQ:STD_LOGIC_VECTOR(1 DOWNTO 0); VARIABLE SOUND:STD_LOGIC_VECTOR(1 DOWNTO 0);

BEGIN ---- IF(F_HZ='1' AND F_HZ'EVENT) THEN IF ST(2 DOWNTO 0)="110"THEN ST(2 DOWNTO 0):="000"; ELSE ST(2 DOWNTO 0):=ST(2 DOWNTO 0)+1; END IF; END IF; -- 列 -- IF(OSC='1' AND OSC'EVENT) THEN IF A="1111"THEN IF SEQ="11"THEN SEQ:="00"; ELSE SEQ:=SEQ+1; END IF; ELSE SEQ:=SEQ; END IF; IF(SEQ="00") THEN C(3 DOWNTO 0)<="1110"; ELSIF SEQ="01"THEN C(3 DOWNTO 0)<="1101"; ELSIF SEQ="10"THEN C(3 DOWNTO 0)<="1011"; ELSIF SEQ="11"THEN C(3 DOWNTO 0)<="0111"; END IF; END IF; IF A="1111"THEN INT:='0'; ELSE INT:='1'; END IF; -- 數 -- IF(OSC1'EVENT AND OSC1='1') THEN

B:=(INT AND (B AND INT)); ---- IF(B='1' AND DATA(3 DOWNTO 0)="1011") THEN BCD(23 DOWNTO 0)<=("0000" & BCD(23 DOWNTO 4));B:='0'; ---- ELSIF B='1' AND DATA(3 DOWNTO 0)="1111" THEN BCD(23 DOWNTO 0)<="000000000000000000000000";B:='0'; ---- ELSIF B='1' THEN BCD(23 DOWNTO 0)<=BCD(19 DOWNTO 0) & DATA(3 DOWNTO 0);B:='0'; -- 理 -- ELSIF INT='0' THEN BCD(23 DOWNTO 0)<=BCD(23 DOWNTO 0);B:='1'; END IF; END IF; -- 行 列 -- SUM(1 DOWNTO 0)<=SEQ; SUM(4 DOWNTO 2)<=CODE; -- 料 -- CASE ST IS WHEN"000"=> D(3 DOWNTO 0)<=BCD(3 DOWNTO 0);F(5 DOWNTO 0)<="111110"; WHEN"001"=> D(3 DOWNTO 0)<=BCD(7 DOWNTO 4);F(5 DOWNTO 0)<="111101"; WHEN"010"=> D(3 DOWNTO 0)<=BCD(11 DOWNTO 8);F(5 DOWNTO 0)<="111011";

WHEN"011"=> D(3 DOWNTO 0)<=BCD(15 DOWNTO 12);F(5 DOWNTO 0)<="110111"; WHEN"100"=> D(3 DOWNTO 0)<=BCD(19 DOWNTO 16);F(5 DOWNTO 0)<="101111"; WHEN"101"=> D(3 DOWNTO 0)<=BCD(23 DOWNTO 20);F(5 DOWNTO 0)<="011111"; WHEN OTHERS=> D(3 DOWNTO 0)<="1100";F(5 DOWNTO 0)<="111111"; END CASE; -- 行 -- CASE A(3 DOWNTO 0) IS WHEN"1110"=>CODE<="100"; WHEN"1101"=>CODE<="101"; WHEN"1011"=>CODE<="110"; WHEN"0111"=>CODE<="111"; WHEN OTHERS=>CODE<="000"; END CASE; -- 行 列 -- CASE SUM(4 DOWNTO 0) IS WHEN"10000"=>DATA:="0001";--0 WHEN"10001"=>DATA:="0101";--1 WHEN"10010"=>DATA:="1001";--2 WHEN"10011"=>DATA:="1100";--3 WHEN"10100"=>DATA:="0010";--4 WHEN"10101"=>DATA:="0110";--5 WHEN"10110"=>DATA:="0000";--6

WHEN"10111"=>DATA:="1101";--7 WHEN"11000"=>DATA:="0011";--8 WHEN"11001"=>DATA:="0111";--9 WHEN"11010"=>DATA:="1010";--A WHEN"11011"=>DATA:="1110";--B WHEN"11100"=>DATA:="0100";--C WHEN"11101"=>DATA:="1000";--D WHEN"11110"=>DATA:="1011";--E--- WHEN"11111"=>DATA:="1111";--F--- WHEN OTHERS=>DATA:=DATA; END CASE; ---- CASE D IS WHEN"0000"=>S<="0111111";--0 WHEN"0001"=>S<="0000110";--1 WHEN"0010"=>S<="1011011";--2 WHEN"0011"=>S<="1001111";--3 WHEN"0100"=>S<="1100110";--4 WHEN"0101"=>S<="1101101";--5 WHEN"0110"=>S<="1111100";--6 WHEN"0111"=>S<="0000111";--7 WHEN"1000"=>S<="1111111";--8 WHEN"1001"=>S<="1100111";--9 WHEN"1010"=>S<="1110111";--a WHEN"1011"=>S<="1111100";--b WHEN"1100"=>S<="0111001";--c

WHEN"1101"=>S<="1011110";--D WHEN"1110"=>S<="1111001";--E WHEN"1111"=>S<="1110001";--F WHEN OTHERS=>S<="ZZZZZZZ"; END CASE; END PROCESS; END KEY; 3-3 歩 3.3.1 歩 (Step Motor) 利 數 數 度 數 度 精 精 來 3.3.2 1 路 易 2 數 易 精 3 度 數 4 率 5 度 量 不 累 6 易 連 PCPLCFPGA 7 力 8 領 力

3.3.3 度 度 = 360 / 數 數 3.3.4 歩 列 (1) 1 度 0 度 90 度 180 度 270 度 流 3.3 (a) 若 歩 A B A B (2) 2 度 45 度 135 度 225 度 270 度 2 流 切 不 A A B B 3.3 (b) 2 若 B B 2 不 易 歩 量 2 (3) 1-2 度 04590135180225270315 度 說 1 2 行 度 1 2 說 精 度

A B A B 3.3(a) A B A B 3.3(b)

A B A B 3.3(c) 3.3 歩 3.4 PCB 路 Protel 99 SE Protel PCB 99 Advanced PCB 99 32 料 100X100 路 度 0.001mil 35 六 37 PCB 零 料 料 1 PCB 零 PCB 零 數 零 切 切 不 累 AUTO PLACE( 零 ) 零 零 零 滑

列 零 零 立 零 數 UNDO REDO 路 精 靈 零 精 靈 零 淚 更 更 路 路 行 Windows MDI 行 路 - 路 路 - 路 狀 列 列 HPGL DMPL Windows

Protel 98 SE 流 邏 路 4X4 邏 路 路

( 洞 ) Protel 精 PCB 路 度 拉 都 PCB

FPGA 4.1 FPGA 4.1.1 FPGA FPGA 歩 來 0 9 數 串 數 例 1000 來 來 便 數 0 4.1.2 FPGA 1K IDE MAX+PLUS 10.0 Protel 99 SE

4.2 FPGA 4.2.1 Scan generator FPGA CLK 利 路 10MHz 數 9999 1KHz 10MHz Delay 利 10MHz 1KHz 1KHz 數 999 1Hz 10MHz 1KHz 1Hz 4.2-1 4.2-1 率 利 來 例 率 500Hz 率 10MHz 率 500Hz 利 率 來 數 2000020K 率 500Hz

FPGA 參 FPGA - 參 數 742(2e6) 率 13.4KHz 4.2.2 路 FPGA 數 狀 FPGA 4 4 0 9 數 FPGA 4.2-1 4.2-1 1 2 3 4 5 6 7 8 9 0 了 六 六 數 000000~999999 了 念 省 不 率 更 率 4 4 FPGA 1K PORT 34 4 邏 4.2-3

了 路 路 流 FPGA FPGA VHDL 路 立 來 度 離 說 了 路 路 FPGA 來 了 離 路 路 路 理 流 FPGA +5V 流 路 +5V 流 兩 流 連 亮 度 不 流 流 流 立 率 來 4.XXX 零 路 ICFT 5754SLA 4061 2N3055 率 1N4002 來 5V 流 0.2A 精 度 1.8 Deg/Step 2 路 FPGA 1K PORT 2 路 邏 4.2-4 路

路 邏

4.2.3 路 FPGA 路 Protel 99 SE 來 FPGA 路 路 了 路 參 4.2-3 路 4 4 路 FPGA 連 路 精 度 力 路 FPGA 4.2-5 兩 路 1 2 FPGA

FPGA 路

4.3 FPGA 4.3.1 FPGA 1K ALTERA Corporation ALTERA FLEX 1K FPGA EP1K100QC208-1 利 FPGA 4.3-1 4.3-1 FPGA 1K I/O CLK 1 160 S1 112 S2 113 S3 114 S4 115 S5 116 S6 119 S7 120 S8 121 P0 122

P1 125 P2 126 P3 127 P4 128 P5 131 AI0 136 AI1 139 AI2 140 AI3 141 CO0 142 CO1 143 CO2 144 CO3 147 CLK 2 103 COIL 0 58 COIL 1 60 COIL 2 61 COIL 3 62 4.3-2 FPGA 流

率 數 數 數 數 4.3-1 FPGA 流

4.3.2 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY MUSIC_BOX IS PORT( CLK,DIRECTION,PHASE:IN STD_LOGIC:='0'; AI:IN STD_LOGIC_VECTOR(3 DOWNTO 0); CO:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); P:OUT STD_LOGIC_VECTOR(5 DOWNTO 0); SP:OUT STD_LOGIC; COIL: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END MUSIC_BOX; ARCHITECTURE ACTION OF MUSIC_BOX IS SIGNAL F:STD_LOGIC_VECTOR(5 DOWNTO 0); SIGNAL F_HZ:STD_LOGIC; SIGNAL OSC:STD_LOGIC; SIGNAL OSC1:STD_LOGIC; SIGNAL CLK_SCAN: STD_LOGIC; SIGNAL CLK2: STD_LOGIC; SIGNAL C:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL A:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL CODE:STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL BCD:STD_LOGIC_VECTOR(23 DOWNTO 0);

SIGNAL SUM:STD_LOGIC_VECTOR(4 DOWNTO 0); SIGNAL D:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"; SIGNAL SPO:STD_LOGIC; SIGNAL IND_COIL: STD_LOGIC_VECTOR(3 DOWNTO 0):="0001"; SIGNAL SW:STD_LOGIC; SIGNAL KEY:STD_LOGIC; SIGNAL HZ:STD_LOGIC; SIGNAL COUNT:STD_LOGIC_VECTOR(23 DOWNTO 0); SIGNAL AC:STD_LOGIC; BEGIN COIL<= NOT IND_COIL; P(5 DOWNTO 0)<=F(5 DOWNTO 0); CO(3 DOWNTO 0)<=C(3 DOWNTO 0); A(3 DOWNTO 0)<=AI(3 DOWNTO 0); SP<=SPO; ---- PROCESS(OSC) VARIABLE D_FF:STD_LOGIC_VECTOR(20 DOWNTO 0); VARIABLE DELAY:STD_LOGIC_VECTOR(23 DOWNTO 0); BEGIN WAIT UNTIL CLK='1'; IF(D_FF(20 DOWNTO 0)>=2E6) THEN D_FF(20 DOWNTO 0):="000000000000000000000"; ELSE D_FF(20 DOWNTO 0):=D_FF+1; END IF; F_HZ<=NOT D_FF(6);

OSC<=NOT D_FF(10); OSC1<=NOT D_FF(18); CLK2<= NOT D_FF(20); IF DELAY>=5000000 THEN DELAY:="000000000000000000000000";HZ<=NOT HZ; ELSE DELAY:=DELAY+1; END IF; END PROCESS; ---- PROCESS(F_HZ,OSC,OSC1,HZ) VARIABLE B:STD_LOGIC; VARIABLE INT:STD_LOGIC; VARIABLE DATA:STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE ST:STD_LOGIC_VECTOR(2 DOWNTO 0); VARIABLE SEQ:STD_LOGIC_VECTOR(1 DOWNTO 0); VARIABLE SOUND:STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN ---- IF(F_HZ='1' AND F_HZ'EVENT) THEN IF ST(2 DOWNTO 0)="110"THEN ST(2 DOWNTO 0):="000"; ELSE ST(2 DOWNTO 0):=ST(2 DOWNTO 0)+1; END IF; END IF; -- 列 -- IF(OSC='1' AND OSC'EVENT) THEN

IF A="1111"THEN IF SEQ="11"THEN SEQ:="00"; ELSE SEQ:=SEQ+1; END IF; ELSE SEQ:=SEQ; END IF; IF(SEQ="00") THEN C(3 DOWNTO 0)<="1110"; ELSIF SEQ="01"THEN C(3 DOWNTO 0)<="1101"; ELSIF SEQ="10"THEN C(3 DOWNTO 0)<="1011"; ELSIF SEQ="11"THEN C(3 DOWNTO 0)<="0111"; END IF; END IF; IF A="1111"THEN INT:='0'; ELSE INT:='1'; END IF; -- 數 -- IF(OSC1'EVENT AND OSC1='1') THEN B:=(INT AND (B AND INT)); --KEY LOCK-- IF B='1' AND DATA(3 DOWNTO 0)="1010" THEN BCD<=BCD;B:='0';SW<=NOT SW; ---- ELSIF(SW='0' AND B='1' AND DATA(3 DOWNTO 0)="1110") THEN ---- BCD(23 DOWNTO 0)<=("0000" & BCD(23 DOWNTO 4));B:='0'; ELSIF B='1' AND DATA(3 DOWNTO 0)="1111" THEN

BCD(23 DOWNTO 0)<="000000000000000000000000";B:='0';SW<='0'; ELSIF BCD=0 AND KEY='1' THEN SW<='0';BCD<=BCD;KEY<='0';IND_COIL<="1111";AC<='0'; ELSIF SW='1' AND KEY='1' AND DATA(3 DOWNTO 0)/="1111" THEN BCD<=COUNT; ELSIF SW='1' AND DATA(3 DOWNTO 0)="1111" THEN SW<='0';BCD(23 DOWNTO 0)<="000000000000000000000000";KEY<='0'; ---- ELSIF SW='0' AND B='1' AND DATA(3 DOWNTO 0)="1011" AND BCD/=0 THEN B:='0';SW<='1';KEY<='1'; ELSIF SW='0' AND B='1' AND DATA(3 DOWNTO 0)="1011" AND BCD=0 THEN SW<='0';BCD<=BCD;KEY<='0';B:='0'; ---- ELSIF SW='0' AND B='1' THEN BCD(23 DOWNTO 0)<=BCD(19 DOWNTO 0) & DATA(3 DOWNTO 0);B:='0'; ELSIF INT='0' THEN BCD(23 DOWNTO 0)<=BCD(23 DOWNTO 0);B:='1'; END IF; ---- IF SW='1' AND DATA(3 DOWNTO 0)="1100" THEN AC<='1'; IF((IND_COIL="0001")OR(IND_COIL="0000")) THEN IND_COIL<="1100"; ELSE IND_COIL<=(IND_COIL(0)& IND_COIL(3 DOWNTO 1)); END IF; ELSIF SW='1' AND DATA(3 DOWNTO 0)="1101" THEN

AC<='1'; IF((IND_COIL="0001")OR(IND_COIL="0000")) THEN IND_COIL<="0011"; ELSE IND_COIL<=(IND_COIL(2 DOWNTO 0)& IND_COIL(3)); END IF; END IF; END IF; -- 行 列 -- SUM(1 DOWNTO 0)<=SEQ; SUM(4 DOWNTO 2)<=CODE; -- 數 -- IF SW='0' THEN COUNT<=BCD; ELSE IF(HZ='1' AND HZ'EVENT)THEN IF AC='1' AND KEY='1' AND COUNT/=0 THEN ---- IF COUNT(3 DOWNTO 0)=0 AND COUNT(23 DOWNTO 4)>=1 THEN COUNT(3 DOWNTO 0)<="1001"; ELSE COUNT(3 DOWNTO 0)<=COUNT(3 DOWNTO 0)-1; END IF; ---- IF COUNT(7 DOWNTO 4)=0 AND COUNT(23 DOWNTO 8)>=1 AND COUNT(3 DOWNTO 0)=0 THEN COUNT(7 DOWNTO 4)<="1001"; ELSIF COUNT(3 DOWNTO 0)=0 AND COUNT(23 DOWNTO 4)>=1 THEN COUNT(7 DOWNTO 4)<=COUNT(7 DOWNTO 4)-1;

END IF; ---- IF COUNT(11 DOWNTO 8)=0 AND COUNT(23 DOWNTO 12)>=1 AND COUNT(7 DOWNTO 0)=0 THEN COUNT(11 DOWNTO 8)<="1001"; ELSIF COUNT(7 DOWNTO 0)=0 AND COUNT(23 DOWNTO 8)>=1 THEN COUNT(11 DOWNTO 8)<=COUNT(11 DOWNTO 8)-1; END IF; ---- IF COUNT(15 DOWNTO 12)=0 AND COUNT(23 DOWNTO 16)>=1 AND COUNT(11 DOWNTO 0)=0 THEN COUNT(15 DOWNTO 12)<="1001"; ELSIF COUNT(11 DOWNTO 8)=0 AND COUNT(23 DOWNTO 12)>=1 AND COUNT(7 DOWNTO 0)=0 THEN COUNT(15 DOWNTO 12)<=COUNT(15 DOWNTO 12)-1; END IF; ---- IF COUNT(19 DOWNTO 16)=0 AND COUNT(23 DOWNTO 20)>=1 AND COUNT(15 DOWNTO 0)=0 THEN COUNT(19 DOWNTO 16)<="1001"; ELSIF COUNT(15 DOWNTO 12)=0 AND COUNT(23 DOWNTO 16)>=1 ANDCOUNT(11 DOWNTO 0)=0 THEN COUNT(19 DOWNTO 16)<=COUNT(19 DOWNTO 16)-1; END IF; ---- IF COUNT(23 DOWNTO 20)=0 THEN

COUNT(23 DOWNTO 20)<="0000"; ELSIF COUNT(19 DOWNTO 16)=0 AND COUNT(23 DOWNTO 20)>=1 AND COUNT(15 DOWNTO 0)=0 THEN COUNT(23 DOWNTO 20)<=COUNT(23 DOWNTO 20)-1; END IF; END IF; END IF; END IF; -- 料 -- CASE ST IS WHEN"000"=> D(3 DOWNTO 0)<=BCD(3 DOWNTO 0);F(5 DOWNTO 0)<="111110"; WHEN"001"=> D(3 DOWNTO 0)<=BCD(7 DOWNTO 4);F(5 DOWNTO 0)<="111101"; WHEN"010"=> D(3 DOWNTO 0)<=BCD(11 DOWNTO 8);F(5 DOWNTO 0)<="111011"; WHEN"011"=> D(3 DOWNTO 0)<=BCD(15 DOWNTO 12);F(5 DOWNTO 0)<="110111"; WHEN"100"=> D(3 DOWNTO 0)<=BCD(19 DOWNTO 16);F(5 DOWNTO 0)<="101111"; WHEN"101"=> D(3 DOWNTO 0)<=BCD(23 DOWNTO 20);F(5 DOWNTO 0)<="011111"; WHEN OTHERS=> D(3 DOWNTO 0)<="1100";F(5 DOWNTO 0)<="111111"; END CASE; -- 行 --

CASE A(3 DOWNTO 0) IS WHEN"1110"=>CODE<="100"; WHEN"1101"=>CODE<="101"; WHEN"1011"=>CODE<="110"; WHEN"0111"=>CODE<="111"; WHEN OTHERS=>CODE<="000"; END CASE; -- 行 列 -- CASE SUM(4 DOWNTO 0) IS WHEN"10000"=>DATA:="0001";--0 WHEN"10001"=>DATA:="0101";--1 WHEN"10010"=>DATA:="1001";--2 WHEN"10011"=>DATA:="1100";--3 WHEN"10100"=>DATA:="0010";--4 WHEN"10101"=>DATA:="0110";--5 WHEN"10110"=>DATA:="0000";--6 WHEN"10111"=>DATA:="1101";--7 WHEN"11000"=>DATA:="0011";--8 WHEN"11001"=>DATA:="0111";--9 WHEN"11010"=>DATA:="1010";--A WHEN"11011"=>DATA:="1110";--B WHEN"11100"=>DATA:="0100";--C WHEN"11101"=>DATA:="1000";--D WHEN"11110"=>DATA:="1011";--E--- WHEN"11111"=>DATA:="1111";--F--- WHEN OTHERS=>DATA:=DATA;

END CASE; ---- CASE D IS WHEN"0000"=>S<="0111111";--0 WHEN"0001"=>S<="0000110";--1 WHEN"0010"=>S<="1011011";--2 WHEN"0011"=>S<="1001111";--3 WHEN"0100"=>S<="1100110";--4 WHEN"0101"=>S<="1101101";--5 WHEN"0110"=>S<="1111100";--6 WHEN"0111"=>S<="0000111";--7 WHEN"1000"=>S<="1111111";--8 WHEN"1001"=>S<="1100111";--9 WHEN"1010"=>S<="1110111";--a WHEN"1011"=>S<="1111100";--b WHEN"1100"=>S<="0111001";--c WHEN"1101"=>S<="1011110";--D WHEN"1110"=>S<="1111001";--E WHEN"1111"=>S<="1110001";--F WHEN OTHERS=>S<="ZZZZZZZ"; END CASE; END PROCESS; END ACTION;

論 5.1 年 來 識 都 來 年 裡 料 論 都 VHDL 說 理 都 不 VHDL 都 了 VHDL 率 路 來 都 不 念 來 便 了 8051 理 來 4 4 來 不 不 六 來 立 數 來 六 了 讀 理 論 不 VHDL MAXPLUS FPGA

行 路 PROTEL 路 路 PCB 來 路 PCB 了 例 度 洞 都 論 路 來 5.2 來 來 例 FPGA FPGA 省 省 更 LCD 狀 六 數 數 LCD 利

參 逸 數 路 林 林 良 路 林 益 麟 論 論 李 林 論 論 復 沈 數 邏 祿

錄 錄 FPGA 路

錄 FPGA 路

錄 FPGA PCB 數 量 24 2 connector 2 6 1 connector 1 seven segment 6 PC817 4 1N4002 4 2N3055 4 OSC 10MHZ 2 330Ω 8 100Ω 8 10KΩ 4 4PIN 16 5V 1 JUMPER 1