Để thiết kế các con chip này hoạt động theo đúng yêu cầu sử dụng, người lập trình chip phải viết một chương trình phần mềm điều khiển chip bằng một số ngôn ngữ máy tính cấp cao như VHDL,
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN
KỸ THUẬT ĐO & TIN HỌC CÔNG NGHIỆP
**********************************************
BÀI TẬP LỚN
Môn học: MÔ HÌNH HÓA CÁC HỆ
THỐNG RỜI RẠC MÁY BÁN HÀNG TỰ ĐỘNG
Giáo viên hướng dẫn : TS : Lê Hải Sâm
Sinh viên thực hiện : Nguyễn Duy Bình
Nguyễn Hữu Hiển
Trang 2MỤC LỤC
LỜI MỞ ĐẦU 3
PHẦN 1 GIỚI THIỆU 4
1.1 Giới thiệu về VHDL 4
1.2 Giới thiệu công nghệ (và ứng dụng) thiết kế mạch bằng VHDL 5 PHẦN 2 BÀI TOÁN ĐIỀU KHIỂN MÁY BÁN HÀNG TỰ ĐỘNG 11 2.1 Mô tả chung 11
2.2 Các phương pháp thiết kế 13
2.3 Mô tả thiết kế 21
2.4 Mô phỏng 25
2.4.1 Code 25
2.4.2 Kết quả mô phỏng 33
PHẦN 3 KẾT LUẬN 37
Trang 3LỜI MỞ ĐẦU
Ngày nay, với những ứng dụng của khoa học kỹ thuật tiên tiến, thế giới của chúng ta đã và đang ngày một thay đổi văn minh và hiện đại Sự phát triển của kỹ thuật vi điện tử và vi xử lý xâm nhập mạnh mẽ vào tất cả các ngành nghề, đặc biệt là vào trong lĩnh vực thông tin, ngành bưu chính viển thông Các bộ xử lý đã trở thành các phần tử không thể thiếu để điều khiển những thiết bị với các đặc điểm nổi bật như sự chính xác cao, tốc độ nhanh, gọn nhẹ là những yếu tố rất cần thiết cho một hệ thống số cấp cao Đặc biệt sau mỗi năm các bộ xử lý này ngày càng được thu nhỏ về kích thước, đồng thời tăng khả năng tích hợp một số lượng transistor lớn hơn trong nó nhờ công nghệ nano Trong tương lai khả năng tích hợp này sẽ còn được gia tăng đáng kể, do các nhà khoa học phân tử trên thế giới bước đầu đã nghiên cứu và đưa vào thử nghiệm thành công một công nghệ tích hợp tiên tiến hơn – công nghệ pico Sự phát triển như vũ bão của nền khoa học công nghệ trên thế giới đã góp phần tạo nên những con chip đa chức năng có thể giải quyết tất cả các hoạt động phức tạp liên quan đến công nghệ số
Để thiết kế các con chip này hoạt động theo đúng yêu cầu sử dụng, người lập trình chip phải viết một chương trình phần mềm điều khiển chip bằng một số ngôn ngữ máy tính cấp cao như VHDL, verilog HDL, v.v…
Với tầm quan trọng của vấn đề, nhóm thực hiện đồ án "Máy bán hàng tự động " muốn hướng tới những hiểu biết bước đầu trong lĩnh vực này qua đó, tạo tiền đề để thực hiện những nghiên cứu thực tế hơn trong tương lai
Trang 4PHẦN 1 GIỚI THIỆU 1.1 Giới thiệu về VHDL
VHDL là ngôn ngữ mô tả phần cứng cho các mạch tích hợp tốc độ rất cao,
là một loại ngôn ngữ mô tả phần cứng được phát triển dùng cho trương trình VHSIC( Very High Speed Itergrated Circuit) của bộ quốc phòng Mỹ Mục tiêu của việc phát triển VHDL là có được một ngôn ngữ mô phỏng phần cứng tiêu chuẩn và thống nhất cho phép thử nghiệm các hệ thống số nhanh hơn cũng như cho phép dễ dàng đưa các hệ thống đó vào ứng dụng trong thực tế Ngôn ngữ VHDL được ba công ty Intermetics, IBM và Texas Instruments bắt đầu nghiên cứu phát triển vào tháng 7 năm 1983 Phiên bản đầu tiên được công bố vào tháng 8-1985 Sau đó VHDL được đề xuất để tổ chức IEEE xem xét thành một tiêu chuẩn chung Năm 1987 đã đưa ra tiêu chuẩn về VHDL( tiêu chuẩn IEEE-1076-1987)
VHDL được phát triển để giải quyết các khó khăn trong việc phát triển, thay đổi và lập tài liệu cho các hệ thống số VHDL là một ngôn ngữ độc lập không gắn với bất kỳ một phương pháp thiết kế, một bộ mô tả hay công nghệ phần cứng nào Người thiết kế có thể tự do lựa chọn công nghệ, phương pháp thiết kế trong khi chỉ sử dụng một ngôn ngữ duy nhất Và khi đem so sánh với các ngôn ngữ mô phỏng phần cứng khác ta thấy VHDL có một số ưu điểm hơn hẳn là:
- Thứ nhất là tính công cộng:
VHDL được phát triển dưới sự bảo trợ của chính phủ Mỹ và hiện nay là một tiêu chuẩn của IEEE VHDL được sự hỗ trợ của nhiều nhà sản xuất thiết bị cũng như nhiều nhà cung cấp công cụ thiết kế mô phỏng hệ thống
- Thứ hai là khả năng được hỗ trợ bởi nhiều công nghệ và nhiều
phương pháp thiết kế:
VHDL cho phép thiết kế bằng nhiều phương pháp ví dụ phương pháp thiết
Trang 5cho nhiều loại công cụ xây dựng mạch như sử dụng công nghệ đồng bộ hay không đồng bộ, sử dụng ma trận lập trình được hay sử dụng mảng ngẫu nhiên
- Thứ ba là tính độc lập với công nghệ:
VHDL hoàn toàn độc lập với công nghệ chế tạo phần cứng Một mô tả hệ thống dùng VHDL thiết kế ở mức cổng có thể được chuyển thành các bản tổng hợp mạch khác nhau tuỳ thuộc công nghệ chế tạo phần cứng mới ra đời nó có thể được áp dụng ngay cho các hệ thống đã thiết kế
- Thứ tư là khả năng mô tả mở rộng:
VHDL cho phép mô tả hoạt động của phần cứng từ mức hệ thống số cho đến mức cổng VHDL có khả năng mô tả hoạt động của hệ thống trên nhiều mức nhưng chỉ sử dụng một cú pháp chặt chẽ thống nhất cho mọi mức Như thế ta có thể mô phỏng một bản thiết kế bao gồm cả các hệ con được mô tả chi tiết
- Thứ năm là khả năng trao đổi kết quả:
Vì VHDL là một tiêu chuẩn được chấp nhận, nên một mô hình VHDL có thể chạy trên mọi bộ mô tả đáp ứng được tiêu chuẩn VHDL Các kết quả mô tả
hệ thống có thể được trao đổi giữa các nhà thiết kế sử dụng công cụ thiết kế khác nhau nhưng cùng tuân theo tiêu chuẩn VHDL Cũng như một nhóm thiết kế có thể trao đổi mô tả mức cao của các hệ thống con trong một hệ thống lớn (trong đó các hệ con đó được thiết kế độc lập)
- Thứ sáu là khả năng hỗ trợ thiết kế mức lớn và khả năng sử dụng lại các thiết kế:
VHDL được phát triển như một ngôn ngữ lập trình bậc cao, vì vậy nó có thể được sử dụng để thiết kế một hệ thống lớn với sự tham gia của một nhóm nhiều người Bên trong ngôn ngữ VHDL có nhiều tính năng hỗ trợ việc quản lý, thử nghiệm và chia sẻ thiết kế Và nó cũng cho phép dùng lại các phần đã có sẵn
1.2 Giới thiệu công nghệ (và ứng dụng) thiết kế mạch bằng VHDL
1.2.1 Ứng dụng của công nghệ thiết kế mạch bằng VHDL
Trang 6Hiện nay 2 ứng dụng chính và trực tiếp của VHDL là các ứng dụng trong các thiết bị logic có thể lập trình được (Programmable Logic Devices – PLD) (bao gồm các thiết bị logic phức tạp có thể lập trình được và các FPGA - Field Programmable Gate Arrays) và ứng dụng trong ASICs(Application Specific Integrated Circuits)
Khi chúng ta lập trình cho các thiết bị thì chúng ta chỉ cần viết mã VHDL một lần, sau đó ta có thể áp dụng cho các thiết bị khác nhau (như Altera, Xilinx, Atmel,…) hoặc có thể để chế tạo một con chip ASIC Hiện nay, có nhiều thương mại phức tạp (như các vi điều khiển) được thiết kế theo dựa trên ngôn ngữ VHDL
1.2.2 Quy trinh thiết kế mạch bằng VHDL
Như đề cập ở trên, một trong số lớn các ứng dụng của VHDL là chế tạo các mạch hoặc hệ thống trong thiết bị có thể lập trình được (PLD hoặc FPGA) hoặc trong ASIC Việc chế tao ra vi mạch sẽ được chia thành 3 giai đoạn như sau:
Trang 7Hình 1.1 Tóm tắt quy trình thiết kế VHDL
- Giai đoạn 2: Giai đoạn chế tạo:
Bước đầu tiên trong quá trình chế tạo là biên dich Quá trình biên dịch sẽ chuyển mã VHDL vào một netlist ở tầng cổng
Bước thứ 2 của quá trình chế tạo là tối ưu Quá trình tối ưu được thực hiện trên netlist ở tầng cổng về tốc độ và phạm vi
Trong giai đoạn này, thiết kế có thể được mô phỏng để kiểm tra phát hiện những lỗi xảy ra trong quá trình chế tạo
- Giai đoạn 3:
Là giai đoạn ghép nối đóng gói phần mềm Ở giai đoạn này sẽ tạo ra sự sắp xếp vật lý cho chip PLD/FPGA hoặc tạo ra mặt nạ cho ASIC
1.2.3 Công cụ EDA
Các công cụ phục vụ cho quá trình thiết kế vi mạch sẽ là:
- Công cụ Active – HDL: Tạo mã VHDL và mô phỏng
Trang 8- Công cụ EDA (Electronic Design Automation): là công cụ tự động thiết
kế mạch điện tử Công cụ này được dùng để phục vụ cho việc chế tạo, thực thi và
mô phỏng mạch sử dụng VHDL
- Công cụ cho đóng gói: Các công cụ này sẽ cho phép tổng hợp mã VHDL vào các chip CPLD/FPGA của Altera hoặc hệ ISE của Xilinx, for Xilinx’s CPLD/FPGA chips)
1.2.4 Chuyển mã VHDL vào mạch
Một bộ cộng đầy đủ được mô tả trong hình dưới đây:
Hinh 1.2.a Sơ đồ tổng quát về bộ cộng đầy đủ
Trong đó, a , b là các bit vào cho bộ cộng, cin là bit nhớ Đầu ra s là bit tổng, cout là bit nhớ ra Hoạt động của mạch được chỉ ra dưới dạng bảng chân lý:
Hình 1.2.b Bảng chân lý của bộ cộng đầy đủ
Bit s và cout được tính như sau:
Từ công thức tính s và cout ta viết đoạn mã VHDL như dưới đây:
Trang 9Hình 1.3 Mã thiết kế bộ cộng
Từ mã VHDL này, mạch vật lý được tạo ra Tuy nhiên có nhiều cách để thực hiện phương trình được miêu tả trong ARCHITECTURE OF, vì vậy mạch thực tế sẽ phụ thuộc vào bộ biên dịch/bộ tối ưu đang được sử dụng và đặc biệt phụ thuộc mục đích công nghệ Hình vẽ sau đây thể hiện một số dạng kiến trúc của mạch cộng:
Trang 10
Hình 1.4.a Các ví dụ về sơ đồ mạch có thể có ứng với mã như hình 1
Trong trường hợp này, nếu mục đích công nghệ của chúng ta là thiết bị lgic
có thê lập trình được (PLD, FPGA), thì 2 kết quả cho cout thoả mãn là ở hình (b)
và hình (c) ( ) Còn nếu mục đích công nghệ là ASIC, thì chúng ta có thể sử dụng hình (d) Hình D sử dụng công nghệ CMOS với các tầng transistor và các mặt nạ phủ
Bất cứ một cái mạch nào được tao ra từ mã, thì những thao tác của nó sẽ luôn luôn được kiểm tra ở mức thiết kế, như ta đã chỉ ra ở hình 1 Tất nhiên, chúng ta cũng có thể kiểm tra nó ở tầng vật lý, nhưng sau đó những thay đổi là rất tai hại
Hình dưới đây là mô phỏng kết quả của đoạn chương trình đã viết ở trên cho mạch bộ cộng đầy đủ ở hình 1.3
Hình 1.4.b: Kết quả mô phỏng bộ cộng được thiết kế theo hình 1.3
Trang 11PHẦN 2 BÀI TOÁN ĐIỀU KHIỂN MÁY BÁN HÀNG
TỰ ĐỘNG 2.1 Mô tả chung
Đồ án thực hiện nghiên cứu và lập trình hoạt động của một máy bán đồ uống tự động dựa trên ngôn ngữ VHDL và được mô phỏng với phần mềm Xilinx ISE 14.2.Quá trình xây dựng đồ án bao gồm:
Thiết kế theo kiến trúc Top Level
Thiết kế sơ đồ khối cơ bản
Thực hiện code và biên dịch
RTL Viewer
Mô phỏng quá trình
Chức năng máy bán hàng tự động :
Tính năng bán tự động 3 loại đồ uống (ví dụ Coca Cola, 7Up…)
Người mua đưa tiền vào máy và lựa chọn đồ uống ưa thích
Kiểm tra lượng tiền đưa vào và chọn loại đồ uống thích hợp
Hoàn trả tiền dư (nếu có)
Mô tả giao diện hoạt động
Giao diện người sử dụng
o 3 phím bấm: lựa chọn loại đồ uống
Trang 12Hình 2.1: Minh họa máy bán hàng
Để lựa chọn đồ uống, người mua ấn vào 3 phím bấm, đèn LED sẽ báo sáng cho biết còn hàng để bán không Nếu còn hàng, máy sẽ xuất đồ uống ra ngoài sau khi kiểm tra người mua đã nạp đủ tiền đồng thời kiểm tra nếu vượt quá giá định sẵn sẽ hoàn trả tiền dư Quá trình được thực hiện với điều kiện người mua biết giá của các loại đồ uống và trong một lần giao dịch, chỉ có thể mua được một loại đồ uống
3 Switch
Drink
In_release
Out_Drink Refund_Coin
In_Coin
Trang 13Hình 2.2: minh họa hoạt động máy bán đồ uống
2.2 Các phương pháp thiết kế
Để thiết kể và triển khai ứng dụng máy bàn hàng, chúng em chia bài toán thiết kế ra làm 2 phần
a) The Design Approach
b) The Design Flow
The Design Approach
Có 6 bước trong giai đoạn thiết kế được sử dung để thiết kế ứng dụng máy
bàn hàng
1 Hiểu đặc tả của bài toán
2 Mô tả finite state diagram (FSM)
3 To perform a state minimization
4 To perform a state assignment
5 Lựa chọn loại flip-flop cho các thanh ghi trạng thái của FSM
6 Triển khai FSM
7 Bước 1: Tìm hiều bài toán
Trang 14Hình 2.3:Sơ đồ khối đơn giản của máy bán hàng
Sơ đồ trên mô tả các khối cơ bản của máy bán hàng Máy bán hàng có khả
năng bán 3 loại đồ uống Giá cả của của 3 loại đồ uống này nằm trong khoảng
lượng tiền đưa vào nhiều hơn giá tiền của đồ uống thì máy sẽ tự động trả lại tiền
thừa cho người mua
Bước 2:
Ta quy ước như sau:
a Bảng quy ước đầu vào của máy bán hàng
‘O’ biều diễn đồng tiền có mệnh giá RM 0.10
‘T’ biều diễn đồng tiền có mệnh giá RM 0.20
‘F’ biều diễn đồng tiền có mệnh giá RM 0.50
b Đồ uống A –RM 0.30
3 đồng tiền giá RM 0.10 = ‘O’, ‘O’, ‘O’
1 đồng tiền giá RM 0.20 và 1 đồng tiền giá RM 0.10 = ‘ T ’ , ‘ O ’
Trang 155 đồng tiền giá RM 0.10 = ‘O‘,‘O’,‘O‘,’O’,‘O‘
3 đồng tiền giá RM 0.30 và 1 đồng tiền giá RM 0.20 =
Trang 16Trạng thái RM 30 Trạng thái RM 40 Trạng thái RM 50
Bước 3: (State minimization)
Nhờ sử dụng Moore state machine ta thấy số trạng thái giảm đi, chỉ còn 6 trạng thái RM 00, RM 10, RM 20, RM 30, RM 40, RM 50
Hình2.5: Biểu đồ trạng thái Moore
Trang 17Hình 2.6: Bảng trạng thái của máy bán hàng
Bước 4, 5, và 6
Sử dụng 3 đầu vào O, T , F làm cho việc mã hóa trạng thái khó khăn hơn Thay
vì sử dụng 3 đầu vào, ta dùng 2 đầu vào để biểu diễn bảng state encoding Dưới đây là ví dụ 2 đầu vào cho đồ uống A có giá RM 30 2 đầu vào là đồng tiền giá RM
10 và RM 20
Bảng trạng thái cho đồ uống A
Trang 18Hình 2.7: Bảng trạng thái cho đồ uống loại A
Hình 2.8 : Mã hóa trạng thái
Trang 19Từ bảng mã hóa state ta có thể tạo ra K-map để tạo ra các phương trinh Boolean đơn giản hơn Hình dưới đây biều hiễn phương trình Boolean với các đầu vào là D1, D0 và ‘Open’
01
11
000
01
1
Q Q OPEN
D Q N Q N Q Q N
D
N Q D Q
Trang 20Đầu ra của ‘Open’ là Q1Q0 Từ hình trên ta thấy mạch logic dùng 8 cổng vào và 2 flip-flops
The Design Flow
Hình 2.10 : Design flow
Bước đầu tiên của quá trình thiết kế máy bán hàng là tìm hiểu requirement của máy Ví dụ, trong bước thứ nhất, yêu cầu của máy bán hàng là nó có khả năng bán các loại đồ uống có giá thành khác nhau
Trong bước thứ 2 của quy trình thiết kế, chúng ta sử dụng VHDL (Very High Speed Integrated Circuit Description Level) để mô tả chức năng của máy bán hàng Sau quá trình biên dịch, chúng ta sẽ thấy biểu đồ chương trình dưới góc nhìn chức năng RTL (Register Transfer Logic) Đây là biều đồ mô tả sự kết hợp của các cổng logic, flip-flop và multiplexer
Bước cuối cùng khi chương trình được coi như là chạy tốt và không phát hiện ra lỗi, chúng ta sẽ download chương trình máy bán hàng vào FPGA board
Trang 212.3 Mô tả thiết kế
Kiến trúc TOP LEVEL
Theo kiến trúc này, máy bán hàng có khả năng tiếp nhận và xử lý các thông tin : lựa chọn các loại đồ uống, các loại tiền xu khác nhau, trả lại tiền thừa nếu số tiền đưa vào lớn hơn giá của loại đồ uống đã chọn
Khối "Máy bán hàng " đóng vai trò chính để phát tín hiệu điều khiển
Khối "Giao tiếp bàn phím" giúp quá trình tương tác giữa người và máy bán hàng thuận tiện hơn
Khối " Hiển thị LED " đưa ra thông tin về loại đồ uống còn trong máy và loại đồ uống đã chọn mua
Máy bán hàng Hiển thị LED
Giao tiếp bàn phím
Xuất đồ uống
Trang 22Đầu vào:
N : tích cực cao khi người mua đưa xu RM10 (nickel)
D : tích cực cao khi người mua đưa xu RM20 (dime)
Q : tích cực cao khi người mua đưa xu RM50 (quarter)
SELECT : tín hiệu chọn loại đồ uống
CLK : xung đồng hồ đồng bộ hoạt động của máy
RESET : Tín hiệu reset đưa máy trở về trạng thái ban đầu
Đầu ra :
out_drink : Đưa tín hiệu điều khiển loại đồ uống ra cửa máy
out_led : Hiển thị loại đồ uống đưa ra và loại đồ uống còn trong máy
refund : Đưa ra tín hiệu trả lại tiền khi khách đưa vào thừa tiền
Open : Tích cực thấp khi hoàn thành quá trình mua đồ uống Lon nước sẽ đẩy ra ngoài
Các module nhỏ khác :
Mạch tuần tự đồng bộ tín hiệu xung đồng hồ
Máy bán hàng được thiết kế dựa trên nguyên lý hoạt động của máy Moore, gồm tập các trạng thái cơ bản S0, S10, S20, S50 Kí hiệu được sử dụng là
"SXX" với " S " được gán thay cho biến trạng thái và "XX " biểu diễn các mức