1 HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG BÀI TẬP LỚN ĐỒ ÁN THIẾT KẾ HỆ THỐNG SỐ ĐỀ TÀI HỆ THỐNG KHÓA SỐ ĐIỆN TỬ Giảng viên hướng dẫn Nguyễn Văn Thành Sinh viên thực hiện Nhóm Nguyễ[.]
Trang 1Sinh viên thực hiện:
Trang 22
MỤC LỤC
CHƯƠNG 1 : GIỚI THIỆU CHUNG VỀ ĐỀ TÀI VÀ MỤC TIÊU 3
I Giới thiệu chung về đề tài 3
II Mục tiêu và phát triển 3
CHƯƠNG 2 : HỆ THỐNG PHẦN CỨNG 4
I Các linh kiện 4
1 Biến trở 4
2 LCD 16*2 6
3 Bàn phím 4*4 8
II FPGA .10
1 Giới thiệu 10
2 Cấu trúc FPGA 10
FPGA Logic Block: 11
FPGA Interconnect: 11
Module FPGA Spartan-6 XC6SLX9 13
CHƯƠNG 3: HỆ THỐNG PHẦN MỀM 14
I Hoạt động của mạch 14
Hoạt động của mạch khóa cửa điện tử bằng key phím 4×4 14
II Sơ đồ trạng thái 15
1 Trạng thái đóng –mở cửa 15
2 Trạng thái đổi mật khẩu 16
3.Trạng thái reset 17
4.Sản phẩm sau khi hoàn thiện 18
5.Lập trình cho hệ thống 18
CHƯƠNG 4: KẾT LUẬN 43
Trang 33
CHƯƠNG 1 : GIỚI THIỆU CHUNG VỀ ĐỀ TÀI VÀ MỤC TIÊU
I Giới thiệu chung về đề tài
Trong một xã hội hiện đại, sự phát triển của ngành điện tử viễn thông là một yêu cầu không thể thiếu để thúc đẩy nền kinh tế phát triển và góp phần nâng cao đời sống xã hội Ngày nay, trên thế giới, điện tử viễn thông vẫn không ngừng phát triển với tốc độ rất cao và thâm nhập ngày càng sâu vào tất cả các lĩnh vực của đời sống xã hội Cùng với sự phát triển như vũ bão đó, ngành điện tử viễn thông Việt Nam cũng đang nỗ lực hết sức trên con đường tìm chỗ đứng cho mình Trong đó, lĩnh vực bảo mật là một mảng lớn mà chúng ta cần quan tâm Chính vì thế, với mục đích làm quen bước đầu với việc thiết kế mạch điện tử nói chung và với hệ thống an toàn, bảo mật nói riêng, chúng em chọn đề tài “hệ thống khóa
mã điện tử ” để nghiên cứu và thực hiện Hệ thống này cho phép ta quản
lý và hạn chế được số người ra vào theo mã số trong khu vực cần bảo mật với độ an toàn cao
Trong quá trình thực hiện đề tài, tuy đã rất cố gắng tuy nhiên do những hạn chế về thời gian tìm hiểu, kiến thức cũng như kinh nghiệm thực tế nên chúng em không tránh khỏi nhiều thiếu sót Chúng em rất mong được nhận những đóng góp của thầy và các bạn để đè tài của chúng
em được hoàn thiện hơn và nhiều chức năng hơn
II Mục tiêu và phát triển
Mục tiêu là hoàn thành được hệ thống khóa cửa điện tử
Với chức năng :
Đóng mở cửa khi nhập đúng pass, điều khiển đóng mở bằng việc dùng động cơ
Trang 4CHƯƠNG 2 : HỆ THỐNG PHẦN CỨNG
I Các linh kiện
1 Biến trở
Hình 1 Biến trở
Biến trở volume được sử dụng rộng rãi trong các mạch công suất, âm li, độsáng Có tên tiếng Anh là potentionmeter Biến trở hoạt động như 1 điện trở có khả năng thay đổi điện trở khi vặn núm điều chỉnh
Thông số sản phẩm:
Độ dài núm chỉnh: 15mm
Trang 55
Đường kính núm chỉnh: 7mm
Loại biến trở: Volume đơn, có 3 chân
Thông số điện:
Tổng trở kháng: 1KΩ - 1MΩ (Tùy giá trị biến trở)
Tổng dung sai kháng chiến: ± 20%
Đặc tính trở kháng loại: A, B, C, D
Điện áp hoạt động tối đa: B Linear: DC 50V / AC 25V
Công suất định mức: B Linear: 0.5W
Tiếng ồn: Dưới 100mV
Chống cách điện: Hơn 100MΩ
Điện áp chịu được: 1 phút ở AC 250 V
Tính chất cơ lý:
Góc quay toàn bộ: 300 ± 10 (độ)
Khoảng cách quay: 10 ~ 200 gf.cm
Sức mạnh dừng quay: 3.0Kgf.cm
Độ bền kéo: đẩy: 7.0kgf phút
Độ bền:
Vòng quay: 10.000 chu kỳ
Trang 66
2 LCD 16*2
LCD (Liquid Crystal Display) được sử dụng trong rất nhiều các ứng dụng của Vi Điều Khiển LCD có rất nhiều ưu điểm so với các dạng hiển thị khác Nó có khả năng hiển thị kí tự đa dạng, trực quan (chữ, số và kí tự đồ họa), dễ dàng đưa vào mạch ứng dụng theo nhiều giao thức giao tiếp khác nhau, tốn rất ít tài nguyên hệ thống và giá thành rẻ…
Màn hình text LCD1602 xanh lá sử dụng driver HD44780, có khả năng hiển thị 2 dòng với mỗi dòng 16 ký tự, màn hình có độ bền cao, rất phổ biến, nhiều code mẫu và dễ sử dụng thích hợp cho những người mới học và làm dự án
Hình 2 LCD 16*2
Trang 77
THÔNG SỐ KỸ THUẬT:
Điện áp hoạt động là 5 V
Kích thước: 80 x 36 x 12.5 mm
Chữ đen, nền xanh lá
Khoảng cách giữa hai chân kết nối là 0.1 inch tiện dụng khi kết nối với Breadboard
Tên các chân được ghi ở mặt sau của màn hình LCD hổ trợ việc kết nối, đi dây điện
Có đèn led nền, có thể dùng biến trở hoặc PWM điều chình độ sáng để sử dụng ít điện năng hơn
Có thể được điều khiển với 6 dây tín hiệu
Có bộ ký tự được xây dựng hổ trợ tiếng Anh và tiếng Nhật, xem thêm HD44780 datasheet để biết thêm chi tiết
SƠ ĐỒ CHÂN LCD 16*2
Trang 88
Hình 3 Sơ đồ chân LCD 16*2
3 Bàn phím 4*4
Hình 4 Bàn phím 4*4
Ma trận phím 4×4 gồm có 16 nút bấm được sắp xếp theo ma trận 4
hàng, 4 cột Các nút bấm trong cùng một hàng và một cột được nối với nhau, vì vậy ma trận phím 4×4 sẽ có tổng cộng 8 ngõ ra Ma trận phím 4×4 cho phép các bạn nhập các chữ số, chữ cái, ký hiệu vào bộ điều khiển qua đó dùng để điều khiển một thiết bị ngoại vi nào đó Các bạn
có thể mắc thêm trở treo (thông thường là 10K) cho các nút bấm để nút
bấm hoạt động ổn định hơn
THÔNG SỐ KỸ THUẬT:
Loại phím mềm
Độ dài cáp: 8cm
Nhiệt độ hoạt động 0 ~ 70 độ C
Trang 99
Đầu nối ra 8 chân
Kích thước Dài x Rộng: 4x4cm
SƠ ĐỒ MẠCH BÀN PHÍM MATRIX 4X4
Hình 5 Sơ đồ mạch bàn phím
Trên đây là hình ảnh sơ đồ nguyên lý của module bàn phím 4x4 Tuy có đến 16 nút nhấn, nghĩa là nếu làm một cách thông thường (dùng chân digital) thì chúng ta phải cần đến 16 chân Arduino để đọc Nhưng với bàn phím này, chúng ta chỉ cần dùng 8 chân (4 chân hàng ngang (row), và 4 chân cột dọc (column))
Cách quét và xác định phím: Để phát hiện một phím nhấn, bộ điều khiển
sẽ nối đất tất cả các hàng bằng cách đặt giá trị 0 lên chốt ra, sau đó đọc các cột Nếu dữ liệu được đọc ở các cột có giá trị: colum3-colum0=1111 tức là k có phím nào được nhấn và quá trình này cứ tiếp tục cho đến khi phát hiện ra phím được nhấn Ví dụ như colum3-colum1=1101 có nghĩa là phím ở cột colum 1 được nhấn Sauk hi một phím nhấn đã được phát hiện, bộ điều khiển sẽ chuyển qua quá trình xác định phím nhấn đó Bắt đầu từ hàng trên cùng, bộ điều khiển sẽ nối đất hàng đó bằng cách đưa
Trang 1010
vào điện áp thấp cho hàng row0, sau đó tiến hành đọc các cột Nếu dữ liệu đọc được có giá trị hoàn toàn bằng 1 tức nào không có phím nào ở hàng này được kích hoạt thì uqa trình này sẽ chuyển sang hàng tiếp theo Bộ điều khiển lại nối đất hàng tiếp theo, đọc giá trị ở các cột và kiểm tra xem có giá trị nào bằng 0 không Quá trình này được xác định khi có hàng được xác định Sau khi xác đinh xong hàng có phím nhấn nhiệm vụ tiếp theo là tìm xem cột nào có phím nhấn Việc này khá đơn giản bởi vì vi điều khiển biết được bất cứ thời điểm nào hàng nào và cột nào được truy cập
II FPGA
1 Giới thiệu:
FPGA là viết tắt của thuật ngữ tiếng anh “Field programmable Gate Array”, nghĩa là Mảng cổng lập trình được dạng trường FPGA thuộc họ ASIC lập trình được.
2 Cấu trúc FPGA
Kiến trúc cơ bản của FPGA gồm 3 thành phần chính sau: Khối I/O (hay gọi là Pad hoặc các pin FPGA), Khối kết nối (Interconnection/Switch Matrix), các Khối logic cấu hình (CLB – Configurable Logic Blocks)
Chức năng của mỗi thành phần như sau:
Khối CLB: thực thi các chức năng logic, cung cấp các tính toán và phần tử nhớ cơ bản được sử dụng trong hệ thống số CLBs là phần
tử cơ bản cấu thành FPGA, là nguồn tài nguyên logic chính tạo nên các mạch logic đồng bộ lẫn không đồng bộ Một CLB cơ bản gồm một mạch tổ hợp có thể lập trình (còn gọi là LUT), một Flip-Flop hoặc một chốt (latch) LUT(Look up table) là khối logic có thể
Trang 1111
thực hiện bất kì hàm logic nào từ 4 đầu vào (số đầu vào này sẽ tùy thuộc vào từng dòng chip của mỗi hãng và sẽ được thảo luận chi tiết trong bài viết khác), kết quả của hàm này tùy vào mục đích mà gửi ra ngoài khối logic trực tiếp hay thông qua phần tử nhớ flip-flop Ngoài khối logic cơ bản đó, nhiều Chip FPGA hiện nay gồm một hỗn hợp các khối khác nhau, một số trong đó chỉ được dùng cho các chức năng cụ thể, chẳng hạn như các khối bộ nhớ chuyên dụng, các bộ nhân (multipliers) hoặc các bộ ghép kênh (multiplexers) Tất nhiên, cấu hình bộ nhớ được sử dụng trên tất cả các khối logic để điều khiển các chức năng cụ thể của mỗi phần tử bên trong khối đó
FPGA Logic Block:
Khối kết nối: dùng để liên kết các khối logic và I/O lại với nhau để tạo thành một thiết kế hoàn chỉnh Mạng liên kết trong FPGA được cấu thành từ các đường kết nối theo hai phương ngang và đứng, tùy theo từng loại FPGA mà các đường kết nối được chia thành các nhóm khác nhau Các đường kết nối được nối với nhau thông qua các khối chuyển mạch lập trình được (programmable switch), trong một khối chuyển mạch chứa một số lượng nút chuyển lập trình được đảm bảo cho các dạng liên kết phức tạp khác nhau
FPGA Interconnect:
Khối I/O: cung cấp giao tiếp giữa các khối logic và kiến trúc định tuyến đến các thành phần bên ngoài Một trong những vấn đề quan trọng nhất trong thiết kế kiến trúc I/O là việc lựa chọn các tiêu chuẩn điện áp cung cấp và điện áp tham chiếu sẽ được hỗ trợ Số lượng Pin (I/O) của FPGA tương đối lớn, thường được chia ra làm
Trang 12 Dedicated Pin: được mã hóa cứng với một chức năng cụ thể
Power Pin
Configuration Pin: các pin để cấu hình FPGA
Dedicated input, hay Clock Pin: điều khiển mạng lưới clock bên trong FPGA
Voltage IO: cấp nguồn cho các cổng logic và flip-flops bên trong FPGA
Theo thời gian, các kiến trúc FPGA cơ bản đã được phát triển hơn nữa thông qua việc bổ sung các khối chức năng đặc biệt có thể lập trình, như bộ nhớ trong (Block RAMs), logic số học (ALU), bộ nhân, DSP-48 và thậm chí là bộ vi xử lý nhúng được thêm vào do nhu cầu của các nguồn tài nguyên cho một ứng dụng Kết quả là nhiều FPGA ngày nay có nhiều nguồn tài nguyên hơn so với các FPGA trước đó
Trang 1313
Hình 6 Kit FPGA Spartan6
Module FPGA Spartan-6 XC6SLX9
Chip FPGA chính : Spartan6 XC6SLX9-TQG144
Chip FPGA cấu hình : M25P40
50MHz active crystal: cung cấp xung nhịp chính cho hệ thống
AS1117-3.3: cấp nguồn 3.3V cho ngõ ra
AS1117-1.2: cấp nguồn riêng cho FPGA
Giắc 5V DC : cấp nguồn cho toàn hệ thống
Led đỏ : chỉ thị nguồn
Led xanh lá : báo quá trình download configuration
1 Nút reset , 1 nút khóa nguồn
3 hàng GPIO port
Debug interface : JTAG Download Interface
Các ngoại vi trên kit thí nghiệm :
8 LED dán để thực hành điều khiển các GPIO
8 LED 7 đoạn để thực hành hiển thị thời gian, bộ đếm
Trang 14 1 buzzer ( còi ) nhỏ để phát âm thanh
1 đế ( 3 chân rào tròn ) cảm biến nhiệt độ DS18B20
Chip chuyển đổi ADC TLC549 1kênh giao tiếp nối tiếp
Chip chuyển đỗi DAC TLC5620 4 kênh giao tiếp nối tiếp
1 IC so áp TL431
1 EPPROM AT24C08
1 IC thời gian thực PCF8563T và thạch anh đồng hồ 32.768kHz
1 Cổng COM 9 chân và 1 cổng VGA
CHƯƠNG 3: HỆ THỐNG PHẦN MỀM
I Hoạt động của mạch
Hoạt động của mạch khóa cửa điện tử bằng key phím 4×4
Khi cấp điện hệ thống hoạt động, tín hiệu ban đầu cho lcd 16×2 hiển thị trạng thái của cửa hiện tại, lúc này chờ tín hiệu được gửi vào từ key phím 4×4 nhấn nút ok để nhập mật khẩu, nếu nhập mật khẩu đúng thì cửa mở đồng thời hiển thị trạng thái mở cửa trên lcd, ngược lại nếu sai thì lcd hiển thị lỗi và yêu cầu nhập lại mật khẩu Ngoài ra khi nhập đúng mật khẩu và cửa mở sẽ cho phép chuyển chế độ đổi mật khẩu mới
Trang 1515
II Sơ đồ trạng thái
1 Trạng thái đóng –mở cửa
Trang 1616
2 Trạng thái đổi mật khẩu
Trang 1717 3.Trạng thái reset
Trang 1818
4 Sản phẩm sau khi hoàn thiện
5.Lập trình cho hệ thống
Uncomment the following library declaration if instantiating
Trang 19I_Status: in STD_LOGIC_VECTOR(3 downto 0);
STD_LOGIC_VECTOR(1 downto 0);
I_DATA:IN STD_LOGIC_VECTOR(7 downto 0);
Q_RS : out STD_LOGIC;
Q_RW : out STD_LOGIC;
Q_En : out STD_LOGIC;
Q_DATA : out STD_LOGIC_VECTOR (7 downto 0)); end LCD;
Trang 20end if;
end if;
end process;
X1:process(L_CLK_1KHz) VARIABLE V_COUNT:integer:=0;
begin
if falling_edge(L_CLK_1KHz) then
if L_STATE=S1 then
Trang 21if falling_edge(I_CLK) then
Trang 2222
case I_STATUS is
when x"0"=>L_DATA_LOAD_1(40
to 55)<=(x"20",x"20",x"20",x"20",x"4F",x"50",x"45",x"4e",x"20
",x"44",x"4f",x"4f",x"52",x"20",x"20",x"20");
L_DATA_LOAD_1(0 to 39)<=(others=>x"20");
when x"1"=>L_DATA_LOAD_1(40
to 55)<=(x"20",x"20",x"20",x"43",x"4c",x"4f",x"53",x"45",x"20
",x"44",x"4f",x"4f",x"52",x"20",x"20",x"20");
L_DATA_LOAD_1(0 to 39)<=(others=>x"20");
Trang 23",x"50",x"41",x"53",x"53",x"20",x"20",x"20");
L_DATA_LOAD_1(0 to 39)<=(others=>x"20");
Trang 2424
when x"c"=>L_DATA_LOAD_1(40
to 55)<=(x"20",x"20",x"20",x"20",x"20",x"53",x"55",x"43",x"43
",x"45",x"53",x"53",x"20",x"20",x"20",x"20");
L_DATA_LOAD_1(0 to 39)<=(others=>x"20");
when x"d"=>L_DATA_LOAD_1(40
to 55)<=(x"20",x"43",x"48",x"41",x"4e",x"47",x"45",x"20",x"50
",x"41",x"53",x"53",x"20",x"20",x"20",x"20");
L_DATA_LOAD_1(0 to 39)<=(others=>x"20");
when x"e"=>L_DATA_LOAD_1(40
to 55)<=(x"20",x"43",x"48",x"41",x"4e",x"47",x"45",x"20",x"53
",x"55",x"43",x"43",x"45",x"53",x"53",x"20");
L_DATA_LOAD_1(0 to 39)<=(others=>x"20");
when x"f"=>L_DATA_LOAD_1(40
to 55)<=(x"43",x"48",x"45",x"43",x"4b",x"49",x"4e",x"47",x"20
",x"50",x"41",x"53",x"53",x"2e",x"2e",x"2e");
L_DATA_LOAD_1(0 to 39)<=(others=>x"20");
when others=> null;
end case;
end if;