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:
Nguyễn Văn Hiếu– B16DCDT075
Vương Quốc Huy– B16DCDT114
Đỗ Anh Tuấn – B17DCDT201
Nhóm:
8
Hà Nội, 2021
1
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
2
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 tồ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ơ.
3
1 - Nhập pass 8 ký tự
2 - Đổi pass
Đề tài tuy khơng lớn song về mặt ngun lý thì có thể phát triển
thành các ứng dụng quản lý theo thẻ từ, mã vạch,mã hoá trong các khu
vực đặc biệt cần phải có may tính hiện đại với CSDL,ngồi mật mã ra cịn
kiểm tra tần sớ giọng nói và camera kiểm tra hình ảnh mà hiện nay đang
rất cần thiết. Vì thế, đới với chúng em đây là bước cơ sở để nghiên cứu
những ứng dụng lớn hơn sau này.
CHƯƠ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.
4
Đườ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ỳ
5
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 ngun 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
6
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
7
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
8
Đầ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
9
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.
FPGA.
II.
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 tố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à ng̀n tài ngun 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ể
10
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
tḥ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 ngồi khới logic trực tiếp hay thơng qua phần tử nhớ flip-flop.
Ngồ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ế hồ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 chủn mạch lập trình được (programmable switch), trong
mợt khới chủn mạch chứa mợt sớ lượng nút chủ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 ngồ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
11
2 loại: User Pin(chân người dùng), Dedicated Pin (chân chuyên
dụng).
User Pin: người dùng có thể lập trình như đầu vào, đầu ra hoặc cả
đầu vào – ra. Mỗi pin được kết nối với một “IO Cell” bên trong
FPGA, được cấp bởi các chân VCCIO (IO power pin).
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
ng̀n tài ngun hơn so với các FPGA trước đó.
12
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 tồn hệ thớng.
Led đỏ : chỉ thị ng̀n
Led xanh lá : báo quá trình download configuration.
1 Nút reset , 1 nút khóa ng̀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
13
4 DIP switch
Có sẵn đế ( hàng rào 16 chân ) đế kết nối với LCD1602 để thực
hành hiển thị các kí tự
Có sẵn đế ( hàng rào 20 chân ) đế kết nối với LCD12864 để thực
hành hiển thị hình ảnh
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 chủ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.
14
II.
Sơ đồ trạng thái
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
5.Lập trình cho hệ thống
Code LCD
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following library declaration if instantiating
18
-- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity LCD is
Port ( I_CLK : in STD_LOGIC;
I_Status:
in
STD_LOGIC_VECTOR(3
downto 0);
I_Status_Change_Pass:
In
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;
architecture Behavioral of LCD is
SIGNAL L_CLK_1KHz:STD_LOGIC:='0';
SIGNAL L_RS:STD_LOGIC:='0';
SIGNAL L_RW:STD_LOGIC:='0';
SIGNAL L_EN:STD_LOGIC:='0';
SIGNAL L_DATA:STD_LOGIC_VECTOR(7 downto 0);
TYPE STATE_TYPE is(S1,S2,S3,S4);
TYPE
COMMAND
is
ARRAY
STD_LOGIC_VECTOR(7 downto 0);
19
(0
to
4)
of
TYPE
DATA_LOAD
is
ARRAY
(0
to
79)
of
STD_LOGIC_VECTOR(7 DOWNTO 0);
TYPE
DATA
is
ARRAY
(0
to
15)
of
STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL
L_DATA_LOAD_1
:DATA_LOAD:=(others=>x"20");
SIGNAL L_STATE:STATE_TYPE:=S1;
CONSTANT
L_CMT_1:COMMAND:=(x"01",x"02",x"0C",x"80",x"38");
begin
X0:process(I_CLK)
variable
V_COUNT:STD_LOGIC_VECTOR(15
downto 0):=(others=>'0');
begin
if falling_edge(I_CLK) then
V_Count:= V_COUNT+'1';
if V_COUNT=X"C350"then
V_COUNT:=(others=>'0');
L_CLK_1KHz<=NOT
L_CLK_1KHz;
end 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
20
Q_RW<='0';
Q_RS<='0';
--load data theo so do trang thai hien thi
tren LCD
Q_DATA<=L_CMT_1(V_COUNT);
V_COUNT:=V_COUNT+1;
if V_COUNT=5 then
V_COUNT:=0;
L_STATE<=S2;
end if;
elsif L_STATE=S2 then
Q_RW<='0';
Q_RS<='1';
Q_DATA<=L_DATA_LOAD_1(V_COUNT);
V_COUNT:=V_COUNT+1;
if V_COUNT=80 then
V_COUNT:=0;
L_STATE<=S2;
end if;
end if;
end if;
end process;
Q_EN<=L_CLK_1KHz;
process(I_CLK,I_STATUS)
begin
if falling_edge(I_CLK) then
21
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");
when x"2"=>
case I_Status_Change_Pass is
when
"00"=>L_DATA_LOAD_1(40
to
55)<=(x"20",x"20",x"49",x"4d",x"50",x"4f",x"52",x"54",x"20
",x"50",x"41",x"53",x"53",x"20",x"20",x"20");
when
"01"=>L_DATA_LOAD_1(40
to
55)<=(x"49",x"4d",x"50",x"4f",x"52",x"54",x"20",x"4f",x"4c"
,x"44",x"20",x"50",x"41",x"53",x"53",x"20");
when
"10"=>L_DATA_LOAD_1(40
to
55)<=(x"52",x"45",x"20",x"49",x"4d",x"50",x"4f",x"52",x"54
",x"20",x"50",x"41",x"53",x"53",x"20",x"20");
when
22
"11"=>L_DATA_LOAD_1(40
to
55)<=(x"49",x"4d",x"50",x"4f",x"52",x"54",x"20",x"4e",x"45
",x"57",x"20",x"50",x"41",x"53",x"53",x"20");
when others=>null;
end case;
when x"3"=>
L_DATA_LOAD_1(6)<=I_DATA;
when x"4"=>
when x"5"=>
L_DATA_LOAD_1(8)<=I_DATA;
when x"6"=>
when x"7"=>
L_DATA_LOAD_1(10)<=I_DATA;
when x"8"=>
when x"9"=>
L_DATA_LOAD_1(12)<=I_DATA;
when x"a"=>
when x"b"=>L_DATA_LOAD_1(40
to
55)<=(x"20",x"20",x"20",x"45",x"52",x"4f",x"52",x"52",x"20
",x"50",x"41",x"53",x"53",x"20",x"20",x"20");
L_DATA_LOAD_1(0 to 39)<=(others=>x"20");
23
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;
24
end process;
end Behavioral;
Code keypad
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following library declaration if instantiating
-- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity KeyPad is
Port ( I_COL: IN STD_LOGIC_VECTOR(3 downto 0);
I_CLK_100:in STD_LOGIC;
I_CLK_10k:in STD_LOGIC;
Q_ROW: out STD_LOGIC_VECTOR(3
downto 0);
Q_KEY_R1:
25
out