Bài tập lớn Thiết kế iC số đại học Bách Khoa Hà Nội........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Trang 1Mục Lục
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
KHOA ĐIỆN TỬ - VIỄN THÔNG
Đề tài: Thiết kế hệ thống điều khiển
thang máy và mô phỏng trên FPGA
Giảng viên hướng dẫn: PGS TS Nguyễn
Đức Minh
Nhóm sinh viên thực hiện: Nhóm 10
Trang 2
DANH MỤC HÌNH ẢNH 4
DANH MỤC BẢNG BIỂU 5
LỜI NÓI ĐẦU 6
CHƯƠNG 1 GIỚI THIỆU FPGA VÀ NGÔN NGỮ VERILOG 7
1.1 Giới thiệu về FPGA 7
1.1.1 Khối logic có thể tái cấu hình 8
1.1.2 Kết nối có thể lập trình 8
1.1.3 Khối I/O khả trình 8
1.2 Giới thiệu về ngôn ngữ Verilog 8
CHƯƠNG 2 MÔ PHỎNG HOẠT ĐỘNG CỦA THANG MÁY 5 TẦNG 10
2.1 Đặt vấn đề 10
2.2 Chỉ tiêu kỹ thuật của hệ thống thang máy 10
2.2.1 Yêu cầu đầu vào, đầu ra 10
2.2.2 Mô tả hoạt động của thang máy 10
2.3 Thiết kế kiến trúc 11
2.3.1 Lưu đồ thuật toán 11
2.3.2 Lưu đồ ASM 14
2.3.3 Lưu đồ ASMD của thang máy 17
2.4 Cấu trúc hệ thống 19
2.4.1 Khối control_unit 19
2.4.2 Khối data_unit 21
2.5 Kế hoạch kiểm tra hệ thống 23
2.5.1 Kịch bản hoạt động 23
2.5.2 Phương pháp kiểm tra 25
2.5.3 Phương pháp tạo đầu vào và đầu ra đúng 25
2.5.4 Giao tiếp mạch chuẩn (chương trình C) với mạch thiết kế 26
2.6 Triển khai 26
2.6.1 Module control_unit và Data_unit 26
2.6.2 Module timer_fl_control 26
2.6.3 Module door_control 27
2.7 Thực nghiệm 27
Trang 32.7.1 Mô tả cấu hình phần cứng, phần mềm sử dụng 27
2.7.2 Mô tả cấu hình phần thực nghiệm 27
2.7.3 Các bước tiến hành thực nghiệm 28
2.7.4 Kết quả thực nghiệm 28
2.7.5 Nhận xét kết quả thực nghiệm 31
2.8 Kết luận 31
TÀI LIỆU THAM KHẢO 31
DANH MỤC HÌNH ẢN
Trang 4Hình 1 1: Mô tả một Chip FPGA 7
Hình 2 1: Thuật toán dừng của thang máy 11
Hình 2 2: Thuật toán đi lên của thang máy 12
Hình 2 3: Thuật toán đi xuống của thang máy 13
Hình 2 4: Lưu đồ ASM trường hợp đứng yên 14
Hình 2 5: Lưu đồ ASM trường hợp đi lên 15
Hình 2 6: Lưu đồ ASM trường hợp đi xuống 16
Hình 2 7: Lưu đồ ASMD của thang máy 17
Hình 2 8: Sơ đồ mức RTL module top thiết kế thang máy 28
Hình 2 9: Sơ đồ mức RTL module control_unit 29
Hình 2 10: Sơ đồ RTL module data_unit 30
Hình 2 11: Kết quả mô phỏng kiểm tra trong modelsim 31
Trang 5DANH MỤC BẢNG BIỂU
Bảng 2 1: Các tín hiệu trong lưu đồ ASMD 17
Bảng 2 2: Các tín hiệu của khối control_unit 19
Bảng 2 3: Các tín hiệu vào ra của khối data_unit 21
Bảng 2 4: Một kịch bản kiểm tra hoạt động của thang máy 23
Bảng 2 5: Các tín hiệu vào ra của khối timer_fl_control 26
Bảng 2 6: Các tín hiệu vào ra của khối door_control 27
Trang 6LỜI NÓI ĐẦU
Trong những năm cuối thế kỷ 20 đầu thế kỷ 21, lĩnh vực điện tử, vi xử lý ngày càngphát triển mạnh mẽ và được ứng dụng sâu rộng vào trong các hệ thống tự động hóa Điềunày đã làm thay đổi toàn bộ bộ mặt của nền sản xuất công nghiệp truyền thống và tạo ra mộtthế hệ máy móc thông minh, linh hoạt Cùng với sự phát triển của khoa học, thang máyngày càng được hoàn thiện hơn, hiệu suất làm việc cao, tiêu thụ ít năng lượng, Một trongcác ứng dụng hiệu quả nhất đó chính là các hệ thống thang máy
Thang máy là một thiết bị chuyên dùng để vận chuyển người, hàng hóa, vật liệu….Theo phương thẳng đứng hoặc nghiêng một góc nhỏ hơn 150 độ so với phương thẳng đứngtheo một tuyến đường đã định sẵn Thang máy thường được dùng trong các khách sạn, công
sở, chung cư, bệnh viện, và các đài quan sát, tháp truyền hình, trong các nhà máy, côngxưởng… Thang máy có lợi thế so với các phương tiện vận chuyển khác là thời gian mộtchu kì vận chuyển bé, tần suất vận chuyển lớn, có thể hoạt động liên tục
Trong thời gian học môn học Thiết kế tổng hợp IC số và hệ thống số, chúng em đãđược giao nghiên cứu đề tài: Thiết kế hệ thống điều khiển thang máy và mô phỏng trênFPGA Với đề tài rất thiết thực trong cuộc sống như thế này, chúng em đã có cơ hội áp dụngnhững kiến thức đã học để thực hiện hệ thống thang máy Được sự hướng dẫn tận tình củathầy giáo PGS.TS Nguyễn Đức Minh, chúng em đã hoàn thành bài tập lớn này
Chúng em xin chân thành cảm ơn thầy!
Trang 7CHƯƠNG 1 GIỚI THIỆU FPGA VÀ NGÔN NGỮ VERILOG
1.1 Giới thiệu về FPGA
Field Programmable Gate Arrays là một chip logic số có thể lập trình được, tức là bạn
có thể sử dụng chúng để lập trình cho hầu hết các chức năng của bất kỳ một thiết kế số nào.FPGA được tạo thành từ một mảng các phần tử khả trình nên được gọi là ProgrammableGate Array
Bộ nhớ tĩnh đầu tiên dựa trên FPGA (thường được gọi là SRAM trên nền FPGA) được
đề xuất bởi Wahlstrom vào năm 1967 Sau đó bản thương mại của FPGA được Xilinx giớithiệu vào năm 1984 Lúc này nó gồm có một mảng của các khối logic có thể tái cấu hình –Configurable Logic Blocks (CLBs) và các đầu vào ra – I/O (input/output) Chip FPGA đầutiên chứa 64 CLBs và 58 I/Os Ngày nay, FPGA có thể chứa khoảng 330,000 CLBs vàkhoảng 1100 I/Os Phần lớn các sản phẩm FPGA trên thị trường hiện nay đều dựa trên côngnghệ SRAM với 2 hãng sản xuất lớn nhất là Xilinx và Altera Ngoài ra còn có các hãngkhác sản xuất FPGA nhưng với mục đích chuyên dụng (Atmel, Actel, Lattice,SiliconBlue, )
Kiến trúc cơ bản của FPGA bao gồm 3 thành phần chính: khối logic có thể tái cấuhình, Configurable Logic Blocks (CLBs) thực hiện các chức năng logic; các kết nối bêntrong, Porgrammable Interconnect có thể lập trình để kết nối các đầu vào và đầu ra của cácCLB và các khối I/O bên trong; các khối I/O cung cấp giao tiếp giữa các ngoại vi và cácđược tín hiêu bên trong
Dưới đây là một chip FPGA điển hình và từng khối của nó
Trang 8Cấu trúc cơ bản của FPGA gồm có 3 khối:
1.1.1 Khối logic có thể tái cấu hình
Mục đích của việc lập trình khối logic trong FPGA là để cung cấp các tính toán và cácphần tử nhớ cơ bản được sử dụng trong hệ thống số Một phần tử logic cơ bản gồm mộtmạch tổ hợp có thể lập trình, một Flip-Flop hoặc một chốt (latch) 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) Cấu hình bộ nhớ được sử dụngtrê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đó
1.1.2 Kết nối có thể lập trình
Các liên kết trong một FPGA dùng để liên kết các khối logic và I/O lại với nhau để tạothành một thiết kế Bao gồm các bộ ghép kênh, các transistor và cổng đệm ba trạng thái.Nhìn chung, các transistor và bộ ghép kênh được dùng trong một cụm logic để kết nối cácphần tử logic lại với nhau, trong khi đó cả ba đều được dùng cho các cấu trúc định tuyếnbên trong FPGA Một số FPGA cung cấp nhiều kết nối đơn giản giữa các khối logic, một sốkhác cung cấp ít kết nối hơn nên định tuyến phức tạp hơn
1.1.3 Khối I/O khả trình
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ầnbê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ựachọn các tiêu chuẩn điện áp cung cấp và điện áp tham chiếu sẽ được hỗ trợ
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ầucủ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ềunguồn tài nguyên hơn so với các FPGA trước đó
1.2 Giới thiệu về ngôn ngữ Verilog
Verilog là ngôn ngữ mô tả phần cứng (Hardware Description Language) được sử dụngtrong việc thiết kế các các hệ thống số, các mạch tích hợp Cùng với ngôn ngữ VHDL,Verilog là một trong hai ngôn ngữ mô tả phần cứng phổ biến nhất hiện nay
Verilog cũng có các đặc điểm như tính độc lập về công nghệ, dễ dàng trong thiết kế vàdebug, cũng như tính đơn giản so với các thiết kế bằng sơ đồ khối (schematics), đặc biệt làtrong việc thiết kế các hệ thống phức tạp Verilog lần đầu được giới thiệu vào năm 1984 bởicông ty Gateway Design Automatic Verilog không được chuẩn hóa và đều được chỉnh sửa
ở hầu hết các phiên bản sau từ năm 1984 đến năm 1990 Năm 1995 Verilog chính thức đượcchuẩn hóa bởi tổ chức IEEE Nhiều người cho rằng Verilog dễ học và sử dụng hơn VHDLnhờ cú pháp khá giống với ngôn ngữ C (ngôn ngữ được dạy trong hầu hết các trường đạihọc, cao đẳng) Tuy cả hai ngôn ngữ Verilog và VHDL đều được sinh ra tại Mỹ nhưngVerilog lại được dùng phổ biến hơn tại đây Verilog được dùng để xây dựng các ứng dụngtrên nền các công nghệ như FPGA, CPLDs…Code Verilog dùng để mô tả các hệ thống số
Trang 9được xây dựng trong các thiết bị lập trình được của các hãng như Xilinx, Altera, hayAmtel…
Verilog có một số ưu điểm như sau:
- Nền tảng mạnh : chuẩn hóa năm 1995 bởi IEEE, hỗ trợ công nghiệp,phổ biến cho các nhà ASIC vì dễ học, cho phép mô phỏng và tổnghợp hiệu quả
trong môi trường thiết kế cả phân tích và kiểm tra Tuy nhiênVerilog không thích hợp lắm cho các thiết kế mức hệ thống phứctạp, đây là trở ngại chính của Verilog
- Hỗ trợ công nghiệp: phổ biến cho các nhà thiết kế ASIC vì dễ học, cho phép mô phỏng nhanh và tổng hợp hiệu quả
Verilog (Programming Language Interface) cho phép mở rộngkhả năng của Verilog Nó là một tập hợp các bộ định tuyến chophép các chức năng bên ngoài truy nhập thông tin chức năngthiết kế Verilog
Trang 10CHƯƠNG 2 MÔ PHỎNG HOẠT ĐỘNG CỦA THANG MÁY
5 TẦNG
2.1 Đặt vấn đề
Hệ thống thang máy có ứng dụng trong các tòa nhà cao tầng, các trung tâm thươngmại, siêu thị, … giúp cho con người di chuyển và vận chuyển hàng hóa dễ dàng và nhanhchóng mà không phải mất nhiều sức lực
Hiện nay, trên thị trường có các loại thang máy của các hãng như Fujitec, Toshiba …với các chỉ tiêu kỹ thuật như sau : Dễ sử dụng, thời gian đáp ứng nhanh, di chuyển êm ái, cóthể chuyên trở được trọng lượng lớn, an toàn cho người sử dụng…
Từ các tiêu chí trên, nhóm chúng em đã tham khảo và thiết kế hệ thống thang máy vớicác chỉ tiêu kĩ thuật như sau
2.2 Chỉ tiêu kỹ thuật của hệ thống thang máy
2.2.1 Yêu cầu đầu vào, đầu ra
Input:
Nút tại các tầng:
Input [5:1] up, down
Nút trong buông thang máy:
Input keep_close, keep_open
Output [5:1] led_up, led_down; // đèn led nút bấm ngoài từng tầng
Output [2:0] ourrent_floor; // điểu khiển đèn led hiển thị số tầng
Output [5:1] led_floor; // đèn led nút bấm floor trong buồng thang
2.2.2 Mô tả hoạt động của thang máy
- Bắt đầu: Thang ở tầng 1, chưa có yêu cầu
- Thang máy đang ở tầng i, đang đi lên Nếu có yêu cầu ở tầng i (yêu cầubên trong hoặc yêu cầu lên) thì mở cửa (theo mục mô tả hoạt động đóng, mởcửa) Nếu tiếp tục có yêu cầu ở tầng j cao hơn i thì tiếp tục đi lên.Nếu không còn yêu cầu ở tầng j cao hơn i thì dừng
- Thang máy đang ở tầng i, đang đi xuống: Nếu có yêu cầu ở tầng i (yêucầu bên trong hoặc yêu cầu xuống) thì mở cửa (theo mục mô tả hoạt động đóng,
Trang 11mở cửa) Nếu tiếp tục có yêu cầu ở tầng j thấp hơn i thì tiếp tục đi xuống Nếukhông còn yêu cầu ở tầng j thấp hơn i thì dừng.
- Thang ở tầng i, đang dừng Nếu có yêu cầu ở tầng i (yêu cầu lên, hoặcxuống) thì mở cửa (theo mục mô tả hoạt động đóng, mở cửa) Nếu có yêu cầu ởtầng j cao hơn i, thì đi lên Nếu có yêu cầu ở tầng k thấp hơn i, thì đi xuống
- Hoạt động đóng mở cửa Khi có yêu cầu mở cửa: mở khi nút keep_openđược bấm Khi có keep_close thì đóng cửa Khi hết thời gian mở cửa thì đóngcửa
2.3 Thiết kế kiến trúc
2.3.1 Lưu đồ thuật toán
Đứng yên
Có yêu cầu của
tầng hiện tại? Mở cửa(khi dừng)
Có bấm nút đóng cửa? | hết giờ
Có bấm mở cửa
?
Không Không
Đi xuống Không
Reset
Có yêu cầu từ tầng trên?
Có yêu cầu từ tầng dưới?
Hình 2 1: Thuật toán dừng của thang máy
Trang 12Đi lên
Kiểm tra thời gian chuyển tầng?
Đóng (đi lên)
Yêu cầu tầng hiện tại? (xuống
| y/c đi lên)
Mở cửa (đi lên)
Bấm nút đóng cửa? | hết giờ
Bấm nút mở cửa?
Yêu cầu đi lên
?(từ tầng trên | tầng hiện tại)
Không
Hình 2 2: Thuật toán đi lên của thang máy
Trang 13Đi xuống Kiểm tra thời
gian qua tầng
Đóng (đi xuống)
Yêu cầu từ tầng hiện tại?(y/c đi xuống)
Mở cửa (đi lên)
Bấm nút đóng cửa? | Hết 5s
Bấm nút mở cửa?
Có yêu cầu đi xuống?(từ tầng hiện tại | tầng dưới)
Không
Không
Có
Không Có
Cập nhật tầng hiện tại
Hình 2 3: Thuật toán đi xuống của thang máy
Trang 142.3.2 Lưu đồ ASM
Stop
req_current (cur_fl, up, down, req_fl)
==1
Stop_open Keep_close |
timeout Keep_open
req_floor _higher (cur_fl, req_fl)
Up
req_floor _lower (cur_fl, req_fl) DownReset
req_updown _higher(cur_fl,
up, down)
req_updown _lower(cur_fl,
up, down)
Cur_floor = 1F
Up, down = 0, door
= 0 Reset
1
0 0
Trang 15Up Timer_fl
Up_close
req_current (cur_fl, up, req_fl) Up_open
Kepp_close | timeout Keep_open
req_higher (cur_fl, up, down, req_fl)
1
0 1
Hình 2 5: Lưu đồ ASM trường hợp đi lên
Trang 16Down Time_fl
Down_close
Req_current (cur_fl, down, req_fl)
Down_open Keep_close |
timeout Keep_open
Req_lower (cur_fl, up, down, req_fl)
Stop
Update_down (cur_fl)
Hình 2 6: Lưu đồ ASM trường hợp đi xuống
Trang 172.3.3 Lưu đồ ASMD của thang máy
Hình 2 7: Lưu đồ ASMD của thang máy
Các tín hiệu trong lưu đồ ASMD được thể hiện trong bảng:
Bảng 2 1: Các tín hiệu trong lưu đồ ASMD
3 btn_up 5 5 nút bấm up bên ngoài mỗi tầng thang
máy
4 btn_down 5 5 nút bấm down bên ngoài mỗi tầng thangmáy
5 req_fl 5 5 nút bấm gọi tầng bên trong thang máy
6 btn_keep_open 1 1 Nút bấm giữ mở cửa thang máy
7 btn_keep_close 1 1 Nút bấm giữ đóng cửa thang máy
Trang 188 door 1 1 Tín hiệu điều khiển đóng, mở cửa thang máy: 1 = mở cửa, 0 = đóng cửa
9 go_up 1 1 Tín hiệu báo thang máy đang đi lên
10 go_down 1 1 Tín hiệu báo thang máy đang đi xuống
11 led_up 5 5 đèn tại các nút up bên ngoài thang máy
12 led_down 5 5 đèn tại các nút down bên ngoài thang
máy
13 current_floor 3 Giá trị tầng hiện tại của thang máy
14 led_floor 5 5 đèn led tại các nút gọi tầng bên trong thang máy
15 Stop_open_control 1 1 Tín hiệu mở cửa thang máy khi đang ở trạng thái Stop
16 Stop_control 1 1 Tín hiệu dừng thang máy
17 Up_control 1 1 Tín hiệu điều khiển thang máy đi lên
18 Down_control 1 1 Tín hiệu điều khiển thang máy đi xuống
19 Up_close_control 1 1 Tín hiệu đóng cửa thang máy khi đang ở
trạng thái đi xuống
20 Update_up_control 1 1 Tín hiệu tăng số tầng khi thang máy đi lên
qua 1 tầng
21 Up_open_control 1 1 Tín hiệu mở cửa thang máy khi đang đilên và có yêu cầu ở tầng hiện tại.
22 Down_close_control 1 1 Tín hiệu đóng cửa thang máy sau khi đang
ở trạng thái Down
23 Update_down_control 1 1 Tín hiệu giảm số tầng hiện tại trong trang thái Down
24 Down_open_control 1 1 Tín hiệu mở cửa thang máy khi đang đi
xuống và có yêu cầu ở tầng hiện tại
25 req_current 1 1 Tín hiệu thông báo có yêu cầu ở tầng hiệntại
26 req_floor_higer 1 1 Tín hiệu thông báo có yêu cầu ở tầng cao hơn ở các nút bấm gọi tầng bên trong
thang máy
Tín hiệu thông báo có yêu cầu ở tầng thấp hơn ở các nút bấm gọi tầng bên trong thang máy
Trang 1928 req_updown_higer 1 1
Tín hiệu thông báo có yêu cầu ở tầng cao hơn ở các nút bấm up, down bên ngoài thang máy
Tín hiệu thông báo có yêu cầu ở tầng thấp hơn ở các nút bấm up, down bên ngoài thang máy
30 keep_close 1 1 Tín hiệu thông báo có bấm nút keep_close
31 keep_open 1 1 Tín hiệu thông báo có bấm nút keep_open
32 timeout 1 1 Tín hiệu thông báo hết thời gian mở cửa thang máy
Tín hiệu thông báo có yêu cầu ở tầng cao hơn tầng hiện tại khi thang máy đang trong trạng thái đi lên
Tín hiệu thông báo có yêu cầu ở tầng thấp hơn tầng hiện tại khi thang máy đang trong trạng thái đi xuống
35 next_fl 1 1 Tín hiệu thông báo thang máy đã đi qua 1 tầng khi đang đi lên hoặc đi xuống.
Bảng 2 2: Các tín hiệu của khối control_unit
STT Tín hiệu Số bit I/O Tích cực Hoạt động
Tín hiệu thông báo có yêu cầu ở tầng