自動控制工程學系專題製作 專 題 -...

41
自動控制工程學系專題製作 數位電子密碼鎖 FPGA 之實現 Use VHDL to Design Digital Electric Lock 指導教授:黃建立 :呂侑儒 溫郭鴻 中華民國九十三年五月十四日

Upload: others

Post on 20-Jan-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

逢 甲 大 學 自動控制工程學系專題製作

專 題 論 文

數位電子密碼鎖 FPGA 之實現

Use VHDL to Design Digital Electric

Lock

指導教授:黃建立 學 生 :呂侑儒 溫郭鴻

中 華 民 國 九 十 三 年 五 月 十 四 日

Page 2: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。
Page 3: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

誌謝

畢業專題是所有逢甲自控人必經之路,在與黃建立老師懇談與討論,開始

了黃老師對於我們的專題指導,題目定 VHDL/FPGA 作為研究的方向,以開放的態

度讓我們自我學習,期許培養自我解決問題的能力。在這一年時間裡,我們遇到了

許多問題、挫折,但是在每次與老師的互動討論下,還有學長姐的幫忙下,許多問

題都迎刃而解,我們的專題研究也才有初步的成果。

在這一年多來的專題研究製作中,特別感謝黃建立老師給予的指導與諄諄教

誨,還要特別感謝其他幾位一起研究 VHDL 語言設計製作的同學魏宏斌、王詠傑、

黃泰元、程家榮,謝謝這幾位同學陪伴著我們一起奮鬥、一起成長,走過這一年來

充實又精采的時光,因為他們的協助與互相討論讓彼此在 VHDL 語言的設計與製作

上都有長足的進步,奠定了邏輯程式設計的基礎。

本論文,獻給我們最深愛的父母與家人,也獻給一起打拼的夥伴與同學,你們

給了我們最大的精神支持,讓我們可以全心全意的投入從事專題的研究,未來也將

帶著所有人的關心繼續挑戰每個人生的關卡。

-i-

Page 4: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

中文摘要

藉由可規劃邏輯陣列技術在電路設計自動化技術的盛行,其相關演算法的研究

和設計工具的發展已經成為在晶片設計技術上一個重要的課題。本論文旨在以

FPGA實現電子密碼鎖。

FPGA 的設計輸入採用 VHDL( Very High Speed Integrated Circuit Hardware

Description Language)硬體電路描述語言,原因在於它具有彈性、可攜性,可以配

合不同的環境做適當調整,以滿足實際的需求。

-ii-

Page 5: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

Abstract

The increasing popularity of the field programmable gate array (FPGA) technology

has generated a great deal of interest in the algorithmic study and tool development for

FPGA specific design automation problems. This project is focused on the understanding

of electric lock using FPGA.

The design entry of the FPGA uses VHDL (Very High Speed Integrated Circuit

Hardware Description Language) because of its flexibility and portability. As a result, we

could optimize our designs according to different environment variables and satisfy the

demands in reality.

-iii-

Page 6: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

目錄 誌謝.......................................................................................................................................i 中文摘要..............................................................................................................................ii Abstract .............................................................................................................................. iii 目錄.....................................................................................................................................iv 圖目錄..................................................................................................................................v 表目錄.................................................................................................................................vi 第一章 前言........................................................................................................................1

1.1 研究動機................................................................................................................1 1.2 研究主題設計構想................................................................................................1 1.3 研究重點與未來的發展........................................................................................1

第二章 VHDL 介紹 ...........................................................................................................3 2.1 VHDL 簡介及背景................................................................................................3 2.2 VHDL 的優點........................................................................................................3 2.3 VHDL 的基本架構................................................................................................4 2.4 VHDL 的指令敘述................................................................................................6

2.4.1 順序敘述.....................................................................................................7 2.4.2 並行同時敘述.............................................................................................9

第三章 Maxplus 介紹.......................................................................................................12 3.1 軟體操作環境......................................................................................................12 3.2 軟體燒錄說明......................................................................................................16

第四章 七節顯示器與矩陣鍵盤......................................................................................17 4-1 七節顯示器 .........................................................................................................17

4.1.1 動態掃描...................................................................................................17 4.1.2 七節顯示器的解碼與用法.......................................................................17

4-2 矩陣式鍵盤 .........................................................................................................18 第五章 密碼鎖與電鎖驅動電路......................................................................................20

5.1 密碼鎖..................................................................................................................20 5.1.1 密碼鎖功能...............................................................................................20 5.1.2 按鍵功能設定...........................................................................................20 5.1.3 程式密碼設定...........................................................................................21

5.2 電鎖驅動電路......................................................................................................21 第六章 程式碼與註解......................................................................................................23

6.1 流程圖..................................................................................................................23 6.2 程式碼..................................................................................................................23

第七章 結論與心得..........................................................................................................31 參考文獻............................................................................................................................33

-iv-

Page 7: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

圖目錄 圖 2-1 VHDL 基本架構圖………………………………………………..……………4 圖 3-1 開啟 MaxPlus 的 Text Editor………………………………………………12 圖 3-2 新增的 Text Editor 工作窗…………………………………………………12 圖 3-3 儲存檔案畫面…………………………………………………………………13 圖 3-4 設定工作目錄…………………………………………………………………13 圖 3-5 儲存並偵錯……………………………………………………………………14 圖 3-6 偵錯畫面………………………………………………………………………14 圖 3-7 編譯畫面………………………………………………………………………15 圖 3-8 接腳設定畫面…………………………………………………………………15 圖 3-9 燒錄畫面………………………………………………………………………16 圖 3-10 選擇燒錄檔案…………………………………………………………………16 圖 5-1 矩陣鍵盤示意圖………………………………………………………..……..21 圖 5-2 驅動電鎖電路……………………………………………………………..…..22 圖 6-1 程式流程圖………………………………………………………………...….23 圖 7-1 實體圖……………………………………………………………………...….32

-v-

Page 8: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

表目錄 表 2-1 VHDL 的簡單寫法……………………………………………………………..5 表 4-1 七節顯示器字型碼對照表……………………………….…………………...18

-vi-

Page 9: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

第一章 前言

1.1 研究動機

傳統上的矽晶片雖然實現了組合和順序電路,但這樣的高效能特殊功能積體電

路往往只能進行一種功能應用,不能同時使用於其他方面,如果需要新的功能,就

必須為單一功能進行開發,但如此一來便會使得開發成本高出許多。在過去十年中

已經發展出許多不同種類的可程式化硬體元件,而 FPGA 即為其中的一種,它可藉

由撰寫程式或其中的指令來控制硬體的執行,進而得以多方應用,以降低積體電路

的設計成本,實現了低價位控制器。學生在此專題之研究,就是學習撰寫 VHDL 硬

體描述語言以運用到 FPGA 發展系統上來,實現電子密碼鎖的功能。

1.2 研究主題設計構想

對於一個電子密碼鎖的設計,大致上可以將它分成三個部分來討論:

(1) 輸入-鍵盤介面電路設計:

內容包括:鍵盤矩陣的工作原理及運用、時序產生電路、鍵盤掃描電路、

彈跳消除電路、鍵盤解碼電路、按鍵儲存電路。

(2) 控制-密碼鎖控制電路設計:

內容包括:數字按鍵的數字輸入、儲存及清除、功能按鍵的功能設計、

移位暫存器的設計與控制、密碼清除、變更、儲存、啟動電鎖電路、密碼核

對解除電鎖電路。

(3) 顯示-輸出七節顯示電路設計:

內容包括:資料選擇電路、BCD 對七節顯示器解碼電路、七節顯示器掃

描電路。

1.3 研究重點與未來的發展

在這次的研究中我們使用僑高企業所生產的 CPLD/FPGA 發展系統以及模組

板,另外加上一些外接電路來達到門鎖控制的成果。

-1-

Page 10: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

我們把研究的重心放在VHDL程式的撰寫和外接電路的搭配使其達到我們的目

標-數位電子密碼鎖 FPGA 之實現。另外未來更可做其他程式的擴充,例如:多位

數密碼鎖、防破解程式、門鎖顯示部分 LCD 化…….等。

-2-

Page 11: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

第二章 VHDL 介紹

2.1 VHDL 簡介及背景

VHDL 是﹙Very High Speed Integrated Circuit Hardware Description Language﹚的

縮寫,意為極高速積體電路硬體描述語言;而 VHSIC 則為(Very High Speed Integrated

Circuits)之縮寫,意為非常高速積體電路的意思。

VHDL 語言是在 1970 年代末期及 1980 年代初期起開始發展,由美國國防部委

託 IBM、Texas Instrument 及 Intermetrics 等三家公司,推動極高速積體電路(VHSIC)

計畫時,在發展中所衍生出來的。在此時期積體電路的發展,主要都是針對邏輯閘

層次設計為基礎而開發的,隨著使用者對於其功能上需求快速增加,積體電路的設

計往往十分複雜,有鑑於此,為了降低電路設計的困難度,必須將複雜的電路設計

轉換為一種硬體的描述語言,才開始著手發展硬體描述語言,使得人們能夠更輕易

的了解與設計意義,VHDL 這種設計語言便是在此種情形下發展出來的,儘管如此,

不同公司的硬體描述語言並不一致,因此晶片設計的成果不能互通。

自 1987 年國際電機電子協會﹙IEEE﹚,將 VHDL 電路設計語言制定規範,並纳

入 IEEE 的標準,其目的即是要提供一個制式的高速且快速的設計工具,讓工程設

計師廣為所採用。由於 VHDL 電路設計語言鎖能涵蓋的範圍相當的廣,它涵蓋了電

路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作,

所以毫無疑問的成為硬體工程師的必備工具。

2.2 VHDL 的優點

使用 VHDL 語言來完成積體電路的設計主要有兩個優點:第一,與傳統的邏輯

閘層次設計工具比較,VHDL 語言可有效縮短電路設計時程。第二,與現有的硬體

語言比較,VHDL 已經成為工業標準的語言,因此具有比較高的流暢性及可攜性。

其次的優點如下:

(1)功能強大:整體而言,VHDL 從 ASIC 設計到電路板設計,甚至到大型

-3-

Page 12: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

系統的設計均可一手包辦。

(2)設計靈活:將電子電路的設計方式,改變成以行為的方式來設計,因此

具有設計快速、維護、更改容易、低犯錯率及除錯容易等優點。

(3)不同的描述風格:VHDL 提供多種不同的描述來適應大小、複雜性不同

的電路設計。

(4)電路性能佳:電路訊號延遲小,較容易得到可靠的電路設計。

(5)可程式邏輯能力:提供非常彈性的設計方式,並允許多次清除和重新燒

錄。

2.3 VHDL 的基本架構

2.

圖 2

C

Behavior Process 描述

5.CON

PACKAGE 宣告區

1. USE 宣告區

3. ENTITY宣告區

4.ARCHITECTU 宣告區 aaaAARCHITECTURE

-4-

-1 VHDL 基本架構圖

訊號宣告

omponent 宣告區

Data Flow 描述 Structure 描述

FIGURATION 宣告區

Page 13: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

VHDL 的程式架構可以區分成好幾個部分,但並不是每一個部分都為程式設計

中的必須架構,所以有些可以省略,而一個完整的 VHDL 程式結構如上圖所示。一

般而言程式設計者在使用上,大部分都只會使用類似下圖的基本架構,不需要如同

上圖的架構,非得將全部語法寫出來才可執行程式。

Use 宣告區

Entity 宣告區

Architecture 宣告區

(1) Use 宣告區的命令格式是:

(2) E

E E

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;

由於 VHDL 已

片公司,他們都

及參數,為了省

告都為一樣,所

格式,所以加上

ntity 宣告區的命

NTITY 晶片電

PORT﹙ 接

﹚; ND 晶片電路名

表 2-1 VHDL 的簡單寫法

是 IEEE 頒定的標準,所以只要是 CPLD、FPGA 等

會提供這些標準定義宣告庫,由於裡面包含許多的定

去麻煩,所以在程式中最好都將其加入,但大部分的

以此區宣告就成了固定標頭。VHDL 語言編寫屬於自

「;」分號,作為前後指令的區隔。

令格式是:

路名稱 IS

腳名稱 1:輸出入情況 資料型態; 腳名稱 2:輸出入情況 資料型態; 腳名稱 n:輸出入情況 資料型態;

稱;

-5-

Page 14: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

Entity 宣告區的主要功能,是宣告這顆晶片所使用的 I∕O 介面接

腳情形,輸出入情形寫成﹙IN、OUT、INOUT﹚。而資料型態是代表

該接腳上的訊號類型,例如:STD_LOGIC 共有八種訊號可能值,如

高準位﹙1﹚、低準位﹙0﹚、浮接﹙X﹚等。有一點需要注意,就是最

後一個接腳定義命令後面不可以加上「;」分號。

(3) Architecture 宣告區的命令格式是:

ARCHITECTURE 架構名稱 OF 晶片電路名稱 IS :(宣告區) BEGIN :﹙電路內部敘述﹚ END 架構名稱;

Architecture 宣告區主要的功能,是在於描述我們所要設計的電路

行為與特性,說清楚一些就是方塊圖內的硬體電路,它就像是電路圖

設計方式,我們改以 VHDL 語言來實現,而 architecture...of...

is...begin...end 這些為保留字,不可以更改,另外要注意的是

前後晶片電路名稱需相同。而中間的宣告區則為一些信號 Signal、元

件 Component、常數 Constant...等的宣告。

2.4 VHDL 的指令敘述

介紹完基本架構後,我們將繼續討論 VHDL 的指令敘述。在其指令敘述中大概

分成兩個部分:順序敘述、並行同時敘述。而順序敘述是將前一個敘述執行完後,

才繼續接著執行下一個敘述。而所謂並行同時敘述,是在執行敘述時,是同時並行

的在工作,與敘述的前後順序無關。

-6-

Page 15: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

2.4.1 順序敘述

(1) 基本順序敘述:

Process:

Process﹙感測訊號 1,感測訊號 2,、、、﹚

Begin : : End Process;

所謂的「感測訊號」是代表這個訊號有任何變動時,將立即促

使這個 Process 所包含的順序敘述立即執行一次。在一個架構

﹙Architecture﹚中,可以存放數個 Process,並允許它們同時工作,

以及交換資料。

IF-Else:

IF 條件式 1 Then 敘述命令 A 方塊

ElsIf 條件式 2 Then 敘述命令 B 方塊

ElsIf 條件式 3 Then : Else 敘述命令 N 方塊

End IF;

上述命令的動作方式為,先判斷條件式 1 結果是否為 True,若

為 True 則執行敘述命令方塊 A,執行完方塊 A 內的命令後,則跳

至 EndIF 之後的命令繼續執行,若條件 1 結果為 False,則往下判

斷條件 2 為 True or False,若為 True,則執行敘述方塊 B,若為

False,則往下尋找條件式,若沒有一個條件式成立時,則執行敘述

方塊 N。

-7-

Page 16: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

Wait:

Wait Until 條件式;

上述命令的意義是要求等待條件式成立,常和 Process 或 Loop

命令合用。

(2) 基本順序敘述(二):

Case-When:

Case 選擇訊號 Is When 訊號值 1=> 敘述命令方塊 A When 訊號值 2=> 敘述命令方塊 B : When Others=> 敘述命令方塊 N End Case;

上述程式是先判斷選擇訊號的內容值是否為訊號值 1,確定是

之後則執行敘述方塊 A,然後跳離 Case-When 的執行,若選擇訊

號不是訊號值 1,則判斷是否為訊號值 2,若是,則執行敘述方塊

B,然後跳離,若上述判斷都不成立時,將執行 Others 之後的命令,

再跳離 Case-When 的執行。

Null:

一般類似 Case-When 的敘述,通常是必須全部列出每個可能

會出現的選擇訊號,如此一來,後敘就必須再配合寫上處理的命

令。不過實際上,某些情況下是不做任何處理的,所以,可以將

NULL﹙空敘述﹚寫入。

-8-

Page 17: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

(3) 進階順序敘述(一)

For-Loop:

For I In 起始值 Downto 結束值 Loop 命令敘述 End Loop;

上述的迴圈控制變數 I,它不需要做宣告,只要在迴圈裡使用

過,就已經算定義了。由於使用 Downto 遞減方式,所以起始值必

須大於結束值,或是改為 To 變成遞增方式。

2.4.2 並行同時敘述

(1) 基本並行同時敘述(一):

When-Else:

訊號 A<= 訊號 B When﹙條件 1﹚Else 訊號 C When﹙條件 2﹚Else 訊號 D;

上述的條件式,是指一般常見的布林代數敘述式,意即其結果

必為﹙True﹚或﹙False﹚,當條件 1 為 True 時,將訊號 B 傳給訊號

A。

With-Select:

With 選擇訊號 X Select 訊號 Y<= 訊號值 A When 選擇訊號 X 值為 m, 訊號值 B When 選擇訊號 X 值為 n, : 訊號值 Z When Others;

-9-

Page 18: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

With-Select 的命令作用是,判斷選擇訊號 X 值,依序是 m 或

n 的判斷成立時,將它對應的訊號值 A 或 B 傳送給訊號 Y。

(2) 進階並行同時敘述(一)

Block:

方塊名稱:Block Begin 命令敘述 End Block 方塊名稱;

當一個電路系統較為複雜時,我們可以考慮將它劃分為幾個模

組,這時我們就可以利用 Block。

Component、Port Map:

Component 元件名稱 Port﹙ 訊號值 A:埠模式 資料型態 訊號值 B:埠模式 資料型態 ﹚; End Component;

元件標題:元件名稱 Port Map﹙ 元件訊號 A=>訊號 A1 元件訊號 B=>訊號 B1 ﹚;

上述的 Block 敘述確實讓 VHDL 的程式更模組化、功能化,

但若是考慮重複使用時,就必須重新再寫一次,有鑑於此 VHDL

-10-

Page 19: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

提供了元件宣告﹙Component﹚和元件映射﹙Port Map﹚來解決這

樣的問題。

(3) 進階並行同時敘述(三)

For-Generate

標記名:For I In 起始值 To 結束值 Generate 命令敘述 End Generate;

For-Generate 和 For-Loop 很像,但 For-Generate 須配合

Component 的命令達成,意即要由 For-Generate 命令所重複生成的

命令元件,必須先設計第一個元件,接著利用 Component 命令宣

告它,再由 Port Map 命令映射引用。

-11-

Page 20: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

第三章 Maxplus 介紹

3.1 軟體操作環境

我們所操作的軟體為 Altera 出版的 MAX+plusⅡ,它可以提供我們 VHDL 語言

寫作的設計環境,以及燒錄的平台。

(1) VHDL 程式的編寫:

開啟 Text Editor:

圖3-1 開啟MaxPlus 的Text Editor

參考上圖,依序開啟「MAX+PlusⅡ」、「Text Editor」功能表

圖3-1 開啟MaxPlus 的Text Editor

參考上圖,依序開啟「MAX+PlusⅡ」、「Text Editor」功能表

圖 3-2 新增的 Text Editor 工作窗

圖 3-2 新增的 Text Editor 工作窗

-12-

Page 21: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

儲存目前的檔案並設定工作檔

圖 3-3 儲存檔案畫面

依序點選功能表「File」、「Save As」選項,開啟儲存對話方塊,在

依圖 3-3 表示,儲存目前圖 3-2 的空白文件為 Keyboard.VHD,然

後按下「OK」鈕。再依下圖 3-4 所示,設定此為目前的工作目錄。

圖 3-4 設定工作目錄

圖 3-4 設定工作目錄

-13-

Page 22: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

(2) VHDL 程式的編譯:

依圖 3-5 表示,點選「File」、「Project」、「Save&Check」選項,先做文

法的確認,若文法沒有錯誤時,它將會產生圖 3-6

圖 3-5 儲存並偵錯

圖 3-5 儲存並偵錯

圖 3-6 偵錯畫面

圖 3-6 偵錯畫面

-14-

Page 23: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

直接點選「Start」按鈕,若無錯誤,它會展生圖 3-7 的顯示結果。

(3) VHDL 程式接腳的設定:

點選「Max+PlusⅡ」、「F

輸出的腳位拖曳到晶片上

圖 3-7 編譯畫面

loorplan Editor」選項,如圖 3-8,接著把需要

圖 3-8 接腳設定畫面

圖 3-7 編譯畫面

圖 3-8 接腳設定畫面

-15-

Page 24: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

3.2 軟體燒錄說明

下載到燒錄器是一件非常容易的事情,首先點選「Max+PlusⅡ」、「Programmer」

選項將會出現如圖 3-9 的圖示。

圖 3-9 燒錄畫面

然後,選擇「File」、「Select Programming File」,選擇程式的 POF 檔燒錄。

圖 3-10 選擇燒錄檔案

-16-

Page 25: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

第四章 七節顯示器與矩陣鍵盤

4-1 七節顯示器

所謂的七節顯示器是用 8 顆 LED 排列組成,藉由控制一部分 LED 亮,一部分

LED 滅,就能夠達到顯示數字的功能,若再採用一般市售的解碼 IC7447/7448 來驅

動七節顯示器,便能將程式化簡,不過英文字母將會無法顯示。一般我們往往侷限

在一個位元的七節顯示器上,或者是當使用多位元顯示時,必須使用到與七節顯示

器相當數量的解碼 IC,這樣會造成繞線煩雜以及比原有電路高出好幾倍的消耗功

率,但在這時候我們可利用動態掃瞄來解決這個問題。

4.1.1 動態掃描

何謂「動態掃描」﹖在談到動態掃描前我們必須先談到「視覺暫留」的現象。

因為人體眼睛反應速度最快只能到 1/16 秒,只要快過這個速度我們便無法立即反

應,於是當接收到速度快於 1/16 秒的畫面,這些畫面看在我們眼裡就成了連續的畫

面。

動態掃描也就是利用視覺暫留的現象把掃描的速度加快,便會覺得所有的顯示

器同時都在顯示,但實際上在同一時間裡只有一顆在工作而已,只不過我們無法看

的出來罷了,這種工作方式為我們節省了解碼 IC 的用量以及許多不必要的消耗功

率。

4.1.2 七節顯示器的解碼與用法

七節顯示器有共陽極及共陰極兩種,我們可依需要選用需要的型式。無論是有

共陽極及共陰極,每個 LED 只要加上 1.5V 左右的順向電壓及 10~20mA 的順向電

流,就可獲得充分的亮度。因此在電源電壓為 5V 時,每個 LED 都要串聯一個 150

Ω~390Ω之電阻器,以免 LED 燒毀。

本次專題所用的七段 LED 顯示器模擬板為共陰極的型式,所以只要某一段 LED

發亮,相對應的輸出就必須是”1”;而要某一段 LED 熄滅,相對應的輸出就必須是”0”。

-17-

Page 26: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

例如我們要輸出 9 時,輸出端就必須輸出 1100111﹔像 1100111 這種控制顯示器

的某些 LED 發亮和某些 LED 熄滅之資料,就稱為字型碼。使用適當的字型碼,不

但可以顯示阿拉伯數字,也可以顯示英文字母或特殊符號或小數點。

表 4-1 七節顯示器字型碼對照表

十六進制碼 共陰極七節顯示器字型碼

真 DATA 值 g f e d c b a

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

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

2 0 0 1 0 0 0 0 0 1 1 0

3 0 0 1 1 1 0 0 1 1 1 1

4 0 1 0 0 1 1 0 0 1 1 0

5 0 1 0 1 1 1 0 1 1 0 1

6 0 1 1 0 1 1 1 1 1 0 0

7 0 1 1 1 0 0 0 0 1 1 1

8 1 0 0 0 1 1 1 1 1 1 1

9 1 0 0 1 1 1 0 0 1 1 1

4-2 矩陣式鍵盤

在電腦系統中,鍵盤是最常見且實用的輸入裝置,常見的鍵盤按鍵種類可分

為三大類型,機械式按鍵、電容式按鍵和薄膜式按鍵。

一般 4*4 矩陣式鍵盤,4 列、4 行共 8 條矩陣線,可控制 16 個按鍵,列與行

的交叉點就是一個按鍵點。它的優點可用較少的 I/O 線來控制較多的按鍵,線路

也較為簡潔;缺點則是介面電路和偵測程式比獨立式鍵盤複雜許多,以下是我們

對矩陣式鍵盤的的介紹 :

-18-

Page 27: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

(1) 鍵盤偵測:按鍵位於列與行的交叉點上,因此要偵測一個按鍵必須能判

斷出列數與行數,以 4*4 的矩陣式鍵盤為例,先將電路設計為以列為輸

入端,行為輸出端,INT 用來判斷是否被按下。只要在列輸入 1110 的

訊號,並且將 0 值續循環向左移一個位元,當有按鍵按下時,例如列一

與行一交叉的按鍵被按下時,就會讓行原本的輸出 1111 即刻變成了

1110,而 INT 的輸出由 0 變成 1,在這同時就必需利用 INT 的變化來控

制程式,立即停止對列輸入掃描訊號。

(2) 鍵盤錯誤信號:常見的鍵盤錯誤信號情形只要有下列三種:

A. 機械彈跳

機械式的按鍵,在按下與放開都必定會造成短暫的彈跳現象。彈

跳就是按鍵處於 ON 與 OFF 位置之間來回的振動,持續時間大約

10ms。消除填跳能以硬體方法或軟體方法解決,前者可使用 RS 栓鎖

器,後者可利用時間延遲程式。

B. 同時按下兩鍵

在傳統的掃描方式下,同時按下兩鍵,有三種狀況 :

(a) 兩鍵同一列。由偵測程式得知,可用軟體程式處理。

(b) 兩鍵同一行。解決之道,在輸出埠與列的輸入端之間串接一個逆

向兩極體,作為保護。或是選擇開集極輸出的晶片,便無此問題

(c) 兩鍵不同列、不同行。兩次偵測機會,以先被偵測到的按鍵為準。

C. 按下一鍵不放

按下一鍵不放的情形有兩種:

(a) 視為按鍵一次。偵測程式只處理一次,直到按鍵放開為止,才作

下次的偵測處理,此種方式較為理想,但程式難度較高。

(b) 視為連續按鍵。偵測程式每隔一段時間,即偵測一次,若按鍵未放

開則續作按鍵處理,此種方式較為不便,容易形成連續輸入的情形。

-19-

Page 28: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

第五章 密碼鎖與電鎖驅動電路

5.1 密碼鎖

5.1.1 密碼鎖功能

數位電子密碼鎖的控制電路,它是整個電路的控制中心,我們所設計的數

位電子密碼鎖主要的工作可歸納如下:

數碼輸入:設定 0~9 十個數字鍵,當每按下一個就輸入一個數值,並在顯示器

上顯示出該數值。

數碼清除:設定按下按鍵可清除前面所有的輸入值成為”0000”或將前一輸入清

除。

啟動電鎖:按下此鍵可將輸入的數碼設定為密碼,並將鎖啟動為上鎖。

解除電鎖:按下此鍵會檢查輸入的密碼是否正確﹖密碼正確即開鎖。

密碼更改:按下此鍵時會將目前的數字設定成新的密碼。

5.1.2 按鍵功能設定

(1)數字按鍵輸入部分:

A. 如果輸入是數字鍵時,第一個數字會在顯示器上的最右端開始顯

示,此後每新按一個數字時,顯示器上的數字必須往左移動一格,

以便將新的數字顯示出來。

B. 若想要更改輸入的數字時,可按倒退鍵來清除前一個輸入的數字,

或按清除鍵清除所有輸入的數字,在重新輸入 4 位數。

C. 既然設計的是 4 位數的電子密碼鎖,當輸入的數字鍵超過 4 個時,

電路將不予理會,而且不會顯示第 4 個以後輸入的數字。

(2)功能按鍵輸入部分:

A. 倒退鍵:只清除前一個輸入的數字。

B. 清除鍵:清除所有輸入的數字,即作歸零的動作。

-20-

Page 29: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

C. 啟動電鎖鍵:按下此鍵可將密碼鎖設定為上鎖。上鎖之前必須先輸

入密碼,才能上鎖,此密碼必須是 4 個數字方屬有效。

D. 解除電鎖鍵:按下此鍵會檢查輸入的密碼是正確﹖密碼正確即開門。

E. 再度上鎖鍵:按下此鍵會直接將門上鎖而維持原密碼。

F. 萬用密碼鍵:假設的萬用密碼

1 2 3

4 5 6

7 8 9

* 0 #

彈跳消除電路

鍵盤解碼電路

按鍵

按鍵輸入

鍵盤資料

鍵盤掃描電路

工作時脈訊號

鍵盤掃描訊號

圖 4-1

圖 5-1 矩陣鍵盤示意圖

電子密碼鎖的輸入電路方塊圖,由鍵盤掃描電路、彈跳消除電路、鍵盤解

碼電路、按鍵資料暫存器,加上外接的矩陣式鍵盤所組成。

5.1.3 程式密碼設定

(1) 萬用密碼:為了怕使用者忘記密碼,系統會為使用者可考慮設計一個萬用

密碼,不論原先輸入的密碼為何﹖只要輸入萬用密碼即可開鎖。

(2) 密碼核對:在密碼變更、解除電鎖之前,必須先核對密碼是否正確。

(3) 密碼變更:要將舊密碼變更為目前的數字設定成新的密碼。必須先輸入舊

的密碼,核對開鎖後才能進一步變更成新的密碼。

5.2 電鎖驅動電路

由於我們所使用的 FPGA 發展系統裡面,除了七節顯示器、鍵盤模組外,並無

-21-

Page 30: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

其他的驅動電路,所以電鎖的驅動電路得由我們自己製作,我們使用繼電器作為電

鎖的開關,當程式設定為開鎖時 ,由 FPGA 發展系統自設的腳位輸出一個 high 的

電子訊號,經過電晶體把電子訊號的電流放大,作為繼電器的觸發訊號,控制其常

開與常閉的變化,在將其接上電鎖的驅動電源兩端,便能驅動電鎖使其受到程式控

制。下圖為電路配置圖:

繼電器

電晶體

AC 24V

門鎖

3.3V

FPGA發展系統

二極體

二極體

圖 5-2 驅動電鎖電路

-22-

Page 31: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

第六章 程式碼與註解

6.1 流程圖

振盪頻率輸入

除頻程式

動態掃描程式

輸出至7節顯示器

7節顯器對照表

解鎖程式

驅動電鎖外接電路

鍵盤按鍵程式

按鍵中斷判斷程式

鍵盤掃描程式

圖 5-1

圖 6-1 程式流程圖

6.2 程式碼 **************************************************

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);

-23-

Page 32: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

P:OUT STD_LOGIC_VECTOR(5 DOWNTO 0);

NUMB_CNT : OUT STD_LOGIC_VECTOR (2 DOWNTO 0) ;

W:OUT STD_LOGIC;

SP:OUT STD_LOGIC);

END KEYBOARD;

**************************************************

ARCHITECTURE KEY OF KEYBOARD IS

SIGNAL NC : STD_LOGIC_VECTOR (2 DOWNTO 0) ;

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(15 DOWNTO 0);

SIGNAL SUM:STD_LOGIC_VECTOR(4 DOWNTO 0);

SIGNAL D:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000";

SIGNAL SPO:STD_LOGIC;

SIGNAL ACD:STD_LOGIC_VECTOR(7 DOWNTO 0);

SIGNAL V:STD_LOGIC_VECTOR(15 DOWNTO 0);

BEGIN

NUMB_CNT(2 DOWNTO 0)<= NC(2 DOWNTO 0) ;

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;

-24-

Page 33: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

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 WW: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)="101"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";

-25-

Page 34: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

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(15 DOWNTO 0)<=("0000" & BCD(15 DOWNTO 4));

B:='0';

NC <= NC - 1 ;

--清除鍵--

ELSIF B='1' AND ( DATA(3 DOWNTO 0)="1111"OR SUM(4 DOWNTO 0)="11010" OR

SUM(4 DOWNTO 0)="10011" OR SUM(4 DOWNTO 0)="11011" ) THEN

BCD(15 DOWNTO 0)<="0000000000000000";

B:='0';

NC <= "000" ;

--正常鍵移位--

ELSIF B='1' THEN

IF NC<4 THEN

BCD(15 DOWNTO 0)<=BCD(11 DOWNTO 0) & DATA(3 DOWNTO 0);

B:='0';

NC <= NC + 1 ;

END IF;

--下一次按鍵處理--

ELSIF INT='0' THEN

BCD(15 DOWNTO 0)<=BCD(15 DOWNTO 0);

B:='1';

END IF;

END IF;

--行與列組合--

SUM(1 DOWNTO 0)<=SEQ;

SUM(4 DOWNTO 2)<=CODE;

--發聲--

IF(OSC'EVENT AND OSC='1') THEN

IF INT='1' THEN

-26-

Page 35: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

SOUND:=SOUND+1;

SPO<=SOUND(1);

ELSE SPO<='0';

END IF;

END IF;

--開鎖訊號--

IF(OSC'EVENT AND OSC='1') THEN

IF ACD(7 DOWNTO 4)<="0000" AND SUM(4 DOWNTO 0)="11011" THEN

WW:=WW+1;

W<=WW(1);

ELSE W<='0';

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)<=ACD(3 DOWNTO 0);

F(5 DOWNTO 0)<="101111";

WHEN"101"=>

D(3 DOWNTO 0)<=ACD(7 DOWNTO 4);

F(5 DOWNTO 0)<="011111";

WHEN OTHERS=>

D(3 DOWNTO 0)<="1100";

F(5 DOWNTO 0)<="111111";

-27-

Page 36: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

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

-28-

Page 37: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

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<="0111000";--A

WHEN"1011"=>S<="1111100";--B

WHEN"1100"=>S<="0111001";--C

WHEN"1101"=>S<="1000000";--D

WHEN"1110"=>S<="1110011";--E

WHEN"1111"=>S<="1110001";--F

WHEN OTHERS=>S<="ZZZZZZZ";

END CASE;

END PROCESS;

************************************************** --密碼控制--

PROCESS(F_HZ)

BEGIN

IF F_HZ='1' AND F_HZ'EVENT THEN

--密碼上鎖--

IF SUM(4 DOWNTO 0)="11010"THEN

IF NC=4 THEN

IF ACD(7 DOWNTO 4)<="0000"THEN

V(15 DOWNTO 0)<=BCD(15 DOWNTO 0);

END IF ;

ACD(3 DOWNTO 0)<="1010";

ACD(7 DOWNTO 4)<="1100";

END IF ;

END IF ;

--密碼解鎖--

IF SUM(4 DOWNTO 0)="11011"THEN

IF NC=4 THEN

IF BCD = V THEN

ACD(7 DOWNTO 4)<="0000";

ACD(3 DOWNTO 0)<="1110";

ELSIF BCD = "1101110111011101" THEN

ACD(7 DOWNTO 4)<="0000";

-29-

Page 38: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

ACD(3 DOWNTO 0)<="1110";

V(15 DOWNTO 0)<="0000000000000000";

END IF ;

END IF;

END IF;

--密碼再上鎖--

IF SUM(4 DOWNTO 0)="10011" THEN

ACD(7 DOWNTO 4)<="1100";

ACD(3 DOWNTO 0)<="1010";

END IF;

END IF;

END PROCESS ;

END KEY;

-30-

Page 39: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

第七章 結論與心得

「電子密碼鎖」,顧名思義,就是利用電子元件達成開鎖的工作,而非傳統的機

械式開鎖,所以我們利用鍵盤掃描,當使用者輸入密碼時,鍵盤掃描會將輸入值傳

送給 VHDL 的程式,程式再進行比對使用者所輸入的密碼是否與預設密碼一致,若

一致則利用外接電路輸出訊號,使門鎖打開。以電子密碼鎖為例,其理論來說看似

簡單,做起來其實都會發生一連串的問題,像鍵盤掃描程式部分,跟我們課堂學習

過 8051 的 4*4 矩陣鍵盤很類似,而 VHDL 的程式寫起來較為條理化,可讀性較高,

但較複雜。至於輸出的部分,本來想利用 LCD 當為介面,但實際上撰寫程式過程中

才發覺到其困難所在,有別於 8051 的 delay 程式,VHDL 必須寫一個副程式去執行

延時的動作,就撰寫程式實務說相當的麻煩,而 LCD 最常用的便是延時程式,所以

光是這點就令我們感到窒礙難行,所以我們就利用課堂上所學的七節顯示器來完成

輸出的部分,七節顯示器相較於 LCD 方便且便宜,而且操作起來相當容易,只需要

一個對照表,將所輸入的號碼及功能鍵對應到對照表中七節顯示器該亮的燈管即

可,而外接電路方面,因為我們使用 FPGA 發展系統做模擬及其模擬版做相對應的

控制,所以開鎖部分勢必要另外洗版外接,因此,我們第一個所想到的問題,如何

才能使驅動電源 AC24V 的門鎖打開呢?就我們的構想是利用電晶體將從 FPGA 輸

出的訊號電流放大,再利用繼電器,當訊號輸入時,繼電器會跳到另一個迴路,當

然這個迴路便是提供門鎖電源 AC24V 的迴路,如此一來便可以驅動門鎖。當我們嘗

試實現這個構想時,便發生無法驅動繼電器的窘境,我們以為是輸出的電流不足以

驅動繼電器,於是我們加了達靈頓放大電路來放大電流,然而,還是無法驅動,於

是我們便請教了許多碩士班的學長、學姊,也從中學到了許多相關於電路方面的知

識,但卻是無法解決我們的問題,最後,我們才發現原先的構想並沒有錯誤,而是

傳輸的排線故障導致訊號傳遞出錯。

經過了四個月的努力,我們的專題終於有了雛型,雖然現在的成品跟理想中的

還有一段不小的差距,還可繼續努力深入,雖然做出的成果不是多麼新奇的東西,

-31-

Page 40: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

但自己親身的體會,從資料的收集、系統的架構到最困難的 VHDL 的寫法,以及外

接電路等,都令我們學在學習面對問題,將其克服,把實際的電子密碼鎖展現出來。

圖 7-1 實體圖

-32-

Page 41: 自動控制工程學系專題製作 專 題 - fcu.edu.t路的描述(Descriptions)、合成(Synthesis)與模擬(Simulations)等三大電路設計工作, 所以毫無疑問的成為硬體工程師的必備工具。

參考文獻 [1] 林容益, CPLD 數位電路發展應用(基礎篇), 全華科技圖書股份有限公司,

2002。 [2] 盧毅, VHDL 與數位電路設計, 文魁資訊股份有限公司, 2000。 [3] 林國良, VHDL 硬體電路設計語言, 全華科技圖書股份有限公司, 1997。. [4] 唐佩忠, VHDL 與數位邏輯設計, 高立出版社, 2002。 [5] 蔡忠勇、薛文彬, CPLD 設計與應用, 僑高企業有限公司, 2000。 [6] 蕭如宣, VHDL 數位系統電路設計, 儒林圖書有限公司, 2000。

-33-