Để 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 chipbằng một số ngôn ngữ máy tính cấp cao như VHDL, v
Trang 1MỤC LỤC
MỤC LỤC 1
LỜI GIỚI THIỆU 2
PHẦN 1 GIỚI THIỆU 3
1.1 Giới thiệu về VHDL 3
1.2 Giới thiệu công nghệ (và ứng dụng) thiết kế mạch bằng VHDL 5
1.2.1 Ứng dụng của công nghệ thiết kế mạch bằng VHDL 5
1.2.2 Quy trinh thiết kế mạch bằng VHDL 5
1.2.3 Công cụ EDA 6
1.2.4 Chuyển mã VHDL vào mạch 7
PHẦN 2 BÀI TOÁN ĐIỀU KHIỂN MÁY BÁN HÀNG TỰ ĐỘNG 10
2.1 Mô tả chung 10
2.2 Các phương pháp thiết kế 12
The Design Approach 12
The Design Flow 19
2.3 Mô tả thiết kế 20
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 36
LỜI GIỚI THIỆ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
Trang 2đá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ênthế giới đã góp phần tạo nên những con chip đa chức năng có thể giải quyếttấ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 chipbằ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
PHẦN 1 GIỚI THIỆU1.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ấtcao, là một loại ngôn ngữ mô tả phần cứng được phát triển dùng cho trươngtrì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ỏngphầ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ụngtrong thực tế Ngôn ngữ VHDL được ba công ty Intermetics, IBM và TexasInstruments 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êuchuẩn về VHDL( tiêu chuẩn IEEE-1076-1987)
Trang 3VHDL được phát triển để giải quyết các khó khăn trong việc pháttriể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ả haycô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ấtthiế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ápthiết kế từ trên xuống, hay từ dưới lên dựa vào các thư viện sẵn có VHDLcũng hỗ trợ cho 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ụngmả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ảntổ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ênnhiều mức nhưng chỉ sử dụng một cú pháp chặt chẽ thống nhất cho mọi
Trang 4mứ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ộtnhó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ộtnhó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ạicá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
Hiện nay 2 ứng dụng chính và trực tiếp của VHDL là các ứng dụngtrong 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ácFPGA - Field Programmable Gate Arrays) và ứng dụng trongASICs(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
Trang 5nay, 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ặcFPGA) hoặc trong ASIC Việc chế tao ra vi mạch sẽ được chia thành 3 giaiđoạn như sau:
- Giai đoạn 1:
Chúng ta bắt đầu thiết kế bằng viết mã VHDL Mã VHDL này sẽ đượclưu vào file có đuôi là vhd và có tên cùng với tên thực thể Mã VHDL sẽđược mô tả ở tầng chuyển đổi thanh ghi
Hình 1.1 Tóm tắt quy trình thiết kế VHDL
- Giai đoạn 2: Giai đoạn chế tạo:
Trang 6Bướ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ựchiệ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áthiệ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
- Công cụ EDA (Electronic Design Automation): là công cụ tự độngthiế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, forXilinx’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 đủ
Trang 7Trong đó, 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ảngchâ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:
và
Từ công thức tính s và cout ta viết đoạn mã VHDL như dưới đây:
Hì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ậymạ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à
Trang 8đặ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:
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ấtnhiên, chúng ta cũng có thể kiểm tra nó ở tầng vật lý, nhưng sau đó nhữngthay đổ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
Trang 9Hình 1.4.b: Kết quả mô phỏng bộ cộng được thiết kế theo hình 1.3
PHẦN 2 BÀI TOÁN ĐIỀU KHIỂN MÁY BÁN HÀNG
TỰ ĐỘNG2.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ềmXilinx ISE 9.1.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 10Hì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
3 Switch
Drink
In_release
Out_Drink Refund_Coin
In_Coin
Trang 11ngoài sau khi kiểm tra người mua đã nạp đủ tiền đồng thời kiểm tra nếu vượtquá giá định sẵn sẽ hoàn trả tiền dư Quá trình được thực hiện với điều kiệnngườ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.
Hì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àitoá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
Trang 124 To perform a state assignment
5 Lựa chọn loại flip-flop cho các thanh ghi trạng thái củaFSM
6 Triển khai FSM
Bước 1: Tìm hiều bài toán
Hì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 trongkhoảng RM 0.30 và RM 0.50
Ví dụ:
i Đồ uống A có giá là RM 0.30
ii Đồ uống B có giá là RM 0.40iii Đồ uống C có giá là RM 0.50Máy bán hàng này có thể chấp nhận tiền xu có mệnh giá 0.10, 0.20,0
50 Nếu 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
Trang 13‘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 ’
5 đồ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 14Hình2.4: Biều đồ trạng thái của máy bán hàng
Trạng thái RM 10 Trạng thái RM 20 Trạ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
Trang 15Hình2.5: Biểu đồ trạng thái Moore
Trang 16Hì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ănhơn Thay vì sử dụng 3 đầu vào, ta dùng 2 đầu vào để biểu diễn bảng stateencoding Dưới đây là ví dụ 2 đầu vào cho đồ uống A có giá RM 30 2 đầuvào là đồng tiền giá RM 10 và RM 20
Trang 17Bảng trạng thái cho đồ uống A
Hì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 18Từ bảng mã hóa state ta có thể tạo ra K-map để tạo ra các phương trinhBoolean đơn giản hơn Hình dưới đây biều hiễn phương trình Boolean vớicác đầu vào là D1, D0 và ‘Open’
0 1
1 1
0 0 0
0 1
1
Q Q OPEN
D Q N Q N Q Q N
D
N Q D Q
Trang 19Đầu ra của ‘Open’ là Q1Q0 Từ hình trên ta thấy mạch logic dùng 8cổ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ểurequirement 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 (VeryHigh Speed Integrated Circuit Description Level) để mô tả chức năng củamáy bán hàng Sau quá trình biên dịch, chúng ta sẽ thấy biểu đồ chươngtrì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
Trang 20Bước cuối cùng khi chương trình được coi như là chạy tốt và khôngphát hiện ra lỗi, chúng ta sẽ download chương trình máy bán hàng vàoFPGA board
2.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ácthô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ềnthừ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áybá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 21Đầ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áyrefund : Đư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 Lonnướ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áyMoore, gồm tập các trạng thái cơ bản S0, S10, S20, S50 Kí hiệu được sử
vending machine
CLK RESET Q D N select 1 select 2 select 3
out_drink
out_led
open refund