TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI TRUNG TÂM ĐÀO TẠO SAU ĐẠI HỌC--- O0O ---TIỂU LUẬN MÔN HỌC THIẾT KẾ HỆ THỐNG NHÚNG Đề Tài Thiết kế một hệ thống nhúng sử dụng vi xử lý FPGA Picoblaze đ
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI TRUNG TÂM ĐÀO TẠO SAU ĐẠI HỌC
- O0O
-TIỂU LUẬN MÔN HỌC THIẾT KẾ HỆ THỐNG NHÚNG
Đề Tài
Thiết kế một hệ thống nhúng sử dụng vi xử lý FPGA Picoblaze để đo nhiệt độ
và đưa ra tín hiệu điều khiển môtơ PWM
Giáo viên hướng dẫn: TS Hà Mạnh Đào
Họ và tên học viên : Tạ Ngọc Thắng
Lê Quang Nghĩa Lớp : CH Điện Tử K5
Trang 2
Hà Nội, Tháng 01/2017
LỜI MỞ ĐẦU
Với xu hướng phát triển rất nhanh của các bộ vi xử lý cũng như yêu cầu ngày càng cao của người dùng, việc phát triển một bộ vi xử lý với tốc độ tính toán thật mạnh mẽ và nhanh là yêu cầu khẩn thiết đối với những nhà phát triển công nghệ Vì vậy sự ra đời của FPGA như một giải pháp tối ưu hóa cung cấp môi trường làm việc hiệu quả cho các ứng dụng thực
tế Tính linh động của FPGA cho phép giải quyết những bài toán phức tạp mà trước kia chỉ thực hiện được nhờ phần mềm máy tính Nhờ mật độ cổng logic cơ bản cao cho phép FPGA có thể giải quyết các bài toán cồng kềnh và các hệ thống thời gian thực Ngày nay FPGA đã được ứng dụng rộng rãi trong rất nhiều lĩnh vực: dân dụng, hàng không, quốc phòng… Với bộ nhớ EPROM cho phép tái lập trình giúp người sử dụng có thể thay đổi lại thiết kế trong thời gian ngắn.
Nhờ sự giúp đỡ tận tình của thầy TS Hà Mạnh Đào, chúng em đã tiến hành nghiên cứu đề tài “Thiết kế một hệ thống nhúng sử dụng vi xử lý FPGA Picoblaze để đo nhiệt độ và đưa ra tín hiệu điều khiển môtơ PWM”.
Nội dung đề tài bao gồm những phần sau:
Tổng quan về hệ thống nhúng
Giới thiệu về chip FPGA và vi điều khiển Picoblaze
Tổng quan về đồng thiết kế codesign
Thiết kế ứng dụng nhúng trên kit
Trang 4MỤC LỤC
Trang 5CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG NHÚNG
1 Khái niệm về hệ thống nhúng
Hệ thống nhúng là một hệ thống được tích hợp cả phần cứng và phần mềmphục vụ cho các bài toán chuyên dụng trong nhiều lĩnh vực công nghiệp, tự động hóađiều khiển, quan trắc và truyền thông
Hệ thống này đòi hỏi độ ổn định và tự động hóa cao Do sử dụng cho các nhiệm
vụ chuyên biệt và được sản xuất với số lượng lớn nên chúng được thiết kế một cách tối
ưu nhằm giảm thiểu kích thước cũng như giá thành sản xuất Độ phức tạp là khác nhautheo yêu cầu của công việc mà chúng đảm nhận, hệ thống nhúng có thể rất đơn giảnvới một vi điều khiển hoặc rất phức tạp với nhiều đơn vị, các thiết bị ngoại vi và mạnglưới được nằm gọn trong một lớp vỏ máy lớn
2 Các đặc điểm của hệ thống nhúng
Hệ thống nhúng thường không phải là một khối riêng biệt mà là một hệ thốngphức tạp nằm trong thiết bị mà nó điều khiển
Các hệ thống nhúng bị giới hạn nhiều hơn về phần cứng và chức năng phầnmềm so với máy tính cá nhân Giới hạn phần cứng có thể bao gồm giới hạn về khảnăng xử lý, tiêu thụ điện năng, bộ nhớ, chức năng phần cứng,… Còn giới hạn phầnmềm thường liên quan đến việc hỗ trợ ít ứng dụng, ứng dụng bị thu gọn tính năng,không có hệ điều hành hoặc hệ điều hành có nhiều hạn chế Tuy nhiên, ngày nay,những giới hạn này đã được khắc phục đáng kể bằng các hệ thống nhúng được thiết kếphức tạp và đầy đủ tính năng hơn Phần mềm của hệ thống nhúng được lưu trữ trên các
bộ nhớ ROM, Flash và được gọi là Firmware
Hệ thống nhúng được thiết kế để thực hiện một chức năng chuyên biệt nào đó.Đây là điểm khác biệt so với các hệ thống máy tính khác như máy tính cá nhân hoặccác siêu máy tính có thể thực hiện nhiều chức năng khác nhau với những phép tínhphức tạp Chuyên dụng giúp nâng cao tính dễ sử dụng và tiết kiệm tài nguyên
Một số ví dụ điển hình về hệ thống nhúng:
Các hệ thống dẫn đường trong không lưu, hệ thống định vị toàn cầu, vệ tinh
Các thiết bị gia dụng: tủ lạnh, lò vi sóng, lò nướng,…
Các thiết bị kết nối mạng: router, hub, gateway,…
Các thiết bị văn phòng: máy photocopy, máy fax, máy in, máy scan,…
Trang 6Các thiết bị y tế: máy thẩm thấu, máy điều hòa nhịp tim,…
Các máy trả lời tự động
Dây chuyền sản xuất tự động trong công nghiệp, robots
3 Kiến trúc hệ thống nhúng
Mỗi hệ thống nhúng đều có một kiến trúc thổng thể như sau:
Hình 1.1: Kiến trúc tổng thể của hệ thống nhúng 3.1 Hardware
Vi xử lý, bộ nhớ, tụ điện, điện trở, mạch tích hợp, bảng mạch in, connector, ….Tất nhiên, đây là thành phần bắt buột phải có cho tất cả các hệ thống nhúng
Vi xử lý: Bộ xử lý được thiết kế riêng, chỉ bao gồm phần xử lý Có thể thay đổithêm bớt các thành phần ngoại vi một cách linh hoạt
Vi điều khiển: Được tích hợp các thành phần ngoại vi trên chip để giảm kích thước
hệ thống
SoC (System on Chip): Một vi mạch tích hợp cao, hỗ trợ đa nhân xử lý và nhiềugiao tiếp trên 1 chip Giúp tăng tốc thời gian thiết kế hệ thống Sử dụng như một mạchtích hợp cho ứng dụng cụ thể (ASIC) hoặc mạch logic khả trình (FPGA)
Trang 73.2 Phần mềm hệ thống
Không bắt buộc phải có
Device driver: UART, Ethernet, ADC…
Hệ điều hành nhúng: eCos, ucLinux, VxWorks, Monta Vista Linux, BIOS, QNX…Quản lý bộ nhớ, quản lý tiến trình, quản lý chia sẽ tài nguyên
Có thể tái sử dụng trên một hệ thống nhúng khác
3.3 Phần mềm ứng dụng
Không bắt buộc phải có
Quyết định hành vi (chức năng) của một hệ thống nhúng
Khó tái sử dụng trên một hệ thống nhúng khác
Trang 8CHƯƠNG 2: GIỚI THIỆU VỀ CHIP FPGA VÀ VI ĐIỀU KHIỂN
Các kết nối khả trình cho phép các khối logic có thể nối với nhau theo thiết kế của người xây dựng hệ thống, giống như một bảng mạch khả trình Mật độ cổng logic (Logic Gate) của FPGA thông thường chứa từ 10 nghìn cho đến vài triệu cổng
Ưu điểm của FPGA, là người thiết kế có thể tích hợp vào đó các bộ xử lý mềm (soft processor) hay vi xử lý nhúng (embedded processor) Các vi xử lý này có thể được thiết kế như các khối logic thông thường, mà mã nguồn do các hãng cung cấp, thực thi các lệnh theo chương trình được nạp riêng biệt, và
có các ngoại vi được thiết kế linh động (khối giao tiếp UART, vào/ra đa chức năng GPIO, ethernet ) Các vi xử lý này cũng có thể được lập trình lại (re-configurable computing) ngay trong khi đang chạy.
2.1.2 Ứng dụng của FPGA
FPGA được ứng dụng điển hình trong các lĩnh vực như: xử lý tín hiệu
số, xử lý ảnh, thị giác máy, nhận dạng giọng nói, mã hóa, mô phỏng (emulation) FPGA đặc biệt mạnh trong các lĩnh vực hoặc ứng dụng mà kiến trúc của nó yê u cầu một lượng rất lớn xử lý song song, đặc biệt là mã hóa và giải mã FPGA cũng được sử dụng trong những ứng dụng cần thực thi các thuật toán như FFT, nhân chập (convolution), thay thế cho vi xử lý.
Trang 9Hiện nay công nghệ FPGA đang được sản xuất và hỗ trợ phần mềm bởi các hãng như: Xilinx, Altera, Actel, Atmel Trong đó Xilinx và Altera là 2 hãng hàng đầu Xilinx cung cấp phần mềm miễn phí trên nền Windows, Linux, trong khi Altera cung cấp những công cụ miễn phí trên nền Windows, Linux, Solaris.
2.2 VI ĐIỀU KHIỂN NHÚNG PICOBLAZE
2.2.1 Giới thiệu chung về vi điều khiển Picoblaze
Vi điều khiển PicoBlaze là vi điều khiển nhúng 8 bit có cấu trúc RISC được tối ưu phát triển cho các họ FPGA như Spartan 3, Virtex II và Virtex II Pro của Xilinx Với vi điều khiển này chúng ta có thể làm một bộ điều khiển dựa trên nền vi điều khiển rất hiệu quả, hay xử lý dữ liệu đơn giản.
Vi điều khiển PicoBlaze được tối ưu về mặt hiệu suất và chi phí phát triển thấp Nó chiểm khoảng 96 FPGA slices, hay chỉ 12.5% của XC3S50 FPGA và chiếm một phần rất nhỏ ở mức 0.3% của XC3S5000 FPGA Bình thường mỗi block RAM của FPGA có thể lưu trữ tới 1024 câu lệnh chương trình (program instructions) và các lệnh này được tự động load trong khi cấu hình FPGA, khi đó
vi điều khiển PicoBlaze có thể hoạt động từ 44000 tới 100000 câu lệnh trên giây (MIPS – million instructions per second) tùy thuộc vào họ FPGA được dùng là loại gì và tốc độ của họ đó.
Nhân của vi điều khiển PicoBlaze được nhúng hoàn toàn trong FPGA và không cần một nguồn thêm nào Đơn giản là các ngoại vi của PicoBlaze có thể tự do lựa chọn cho phù hợp với các mục đích đặc biệt, chức năng và yêu cầu về giá cả của sản phẩm cuối cùng PicoBlaze được nhúng vào dưới dạng một mã nguồn VHDL vì thế nó có thể nhúng vào các đời FPGA sau này và do đó project của chúng ta sẽ có tính kế thừa cao Được nhúng trong FPGA, vi điều khiển PicoBlaze sẽ giảm kích thước mạch, giá thiết kế và thực hiện.
PicoBlaze FPC được hỗ trợ bởi một số các công cụ phát triển phù hợp bao gồm assembler và môi trường phát triển đồ họa tích hợp (IDE – integrated development environment), graphical instruction set simulator và mã nguồn VHDL và khối mô phỏng Và rất đơn giản là vi điều khiển PicoBlaze được hỗ trợ trong môi trường phát triển Xilinx System Generator hay ISE.
Trang 102.2.2 Các đặc điểm của vi điều khiển PicoBlaze
Hình 2.1: Sơ đồ khối cấu trúc của vi điều khiển PicoBlaze
Vi điều khiển PicoBlaze có các đặc điểm sau:
- 16 thanh ghi dữ liệu chức năng chung có độ rộng 8 bit.
- Lưu trữ được 1K lệnh trong chương trình có thê lâp trình được trong chip và tự động nạp khi cấu hình FPGA hay khi khởi động FPGA
- Khối tính toán logic (Arithmetic Logic Unit – ALU) với các cờ CARRY và ZERO.
- Một bảng RAM 64 byte.
- 256 đầu vào và 256 đầu ra dễ dàng có thể mở rộng thêm.
- Automatic 31 location CALL/RETURN stack.
- Predictable performance, luôn luôn dùng 2 xung nhịp hệ thống cho một câu lệnh, có thể đạt tới 200 MHz hoặc 100 MIPS trong Virtex – II Pro FPGA.
- Đáp ứng ngắt nhanh; worst-case 5 clock cycles.
- Được tối ưu cho cấu truc Spartan – 3, Virtex II, và Virtex II Pro FPGA của Xilinx chỉ chiếm 96 slices và 0.5 tới 1 block RAM.
· Hỗ trợ mô phỏng tệp lệnh assembler.
2.2.3 Các khối chức năng của vi điều khiển PicoBlaze
Vi điều khiển PicoBlaze bao gồm 16 thanh ghi chức năng chung có độ rộng
1 byte từ s0 tới sF Để cho dễ dàng trong khi lập trình các thanh ghi này có thể
Trang 11đổi tên bằng các assembler directive Không có thanh ghi nào có mức ưu tiên cao hơn hoặc dành riêng cho một tác vụ đặc biệt nào và cũng chẳng có thanh ghi accumulator vì thế mỗi kết quả được tính toán trong một thanh ghi định trước.
Vi điều khiển PicoBlaze thực hiện tới 1024 câu lênh trong bộ nhớ trong FPGA, chính là một single block RAM Mỗi lệnh của PicoBlaze rộng 18 bit Các lệnh này được biên dịch trong khi thiết kế FPGA và tự động được nạp trong quá trình cấu hình FPGA.
Các cách tổ chứ bộ nhớ khác có thể kết hợp nhiều vi điều khiển PicoBlaze trong một FPGA hoặc cho phép mã nguồn được cập nhật mà không phải biên dịch lại thiết kế FPGA.
Arthmetic Logic Unit (ALU)
Khối ALU thực hiện mọi tính toán của vi điều khiển bao gồm:
- Các phép tính số học cơ bản như cộng và trừ.
- Các phép tính logic bit như AND, OR và XOR.
- Các phép toán test bit và so sánh số học.
- Các phép toán dịch bit và xoay bit.
Tất cả các phép toán được thực hiện dùng các toán hạng là một trong các thanh ghi đặc biệt (sX) Kết quả được trả lại chính thanh ghi sX đó Nếu cấu lệnh có toán hạng thứ 2 thì toán hạng này sẽ là thanh ghi thứ 2 (sY) hay là hằng số trực tiếp 8 bit (kk).
Flags – các cờ chỉ thị
Các phép tính thực hiện trên ALU ảnh hưởng tới trạng thái của các cờ ZERO và cờ CARY Cờ ZERO set khi kết quả của phép toán trước = 0 Cờ CARRY set phụ thuộc vào nhiều điều kiện khác nhau phụ thuộc vào quá trình thực hiện của phép tính trước.
Cờ INTERRUPT_ENABLE cho phép đầu vào INTERRUPT.
Trang 1264 byte RAM
Vi điều khiển PicoBlaze cung cấp một bảng RAM chức năng chung 64byte,
có thể truy nhập trực tiếp hoặc gián tiếp từ các thanh thanh ghi bằng cách dùng lệnh FETCH và STORE.
Lệnh STORE ghi nội dung của một trong số 16 thanh ghi vào bất cứ chỗ nào trong bảng RAM này Trong khi đó lệnh FETCH đọc nội dung của một ô nhớ trong bảng RAM vào 1 trong 16 thanh ghi Điều đó cho phép một số lượng lớn bi ến được khai báo và thưc hiện trong quá trình xử lý và dành không gian vào ra cho các tín hiệu vào ra.
Địa chỉ truy nhập RAM này trong khoảng 00 – 3F, có thể truy nhập trực tiếp bằng các hằng số kk hoặc gián tiếp qua nội dung của 1 trong số 16 thanh ghi Input/Output
Các cổng vào ra làm tăng khả năng của vi điều khiển PicoBlaze và cho phép
vi điều khiển này có thẻ kết nối với bất kì ngoại vi nào hay là các logic
FPGA.PicoBlaze có 256 cổng vào, 256 cổng ra hoặc là kết hợp cổng vào ra Cổng ra PORT_ID là địa chỉ của cổng Trong quá trình đọc dữ liệu thì
PicoBlaze đọc dữ liệu từ cổng IN_PORT và lưu vào thanh ghi đặc biệt, sX Trong quá trình xuất dữ liệu, PicoBlaze ghi nội dung của thanh ghi sX ra cổng OUTPUT.
Program Counter (PC)
Program Counter chỉ tới câu lệnh tiếp theo được thực hiện Theo mặc định,
PC tự động tăng lên tới địa chỉ của câu lệnh tiếp theo khi thực hiện một câu lệnh Chỉ có các lệnh JUMP, CALL, RETURN và RETURNI và sự kiện Interrupt và Reset thay đổi hành vi này Nội dung của PC không thể thay đổi được bằng mã chương trình.
PC có độ rộng 10 bit vì thế có thể trỏ tới bất kì đâu trong vùng không gian
1024 câu lệnh (từ 000 tới 3FF hex) Nếu PC trỏ tới đỉnh bộ nhớ 3FF thì nó sẽ quay trở lại vị trí ban đầu 000.
Program Flow Control
Trang 13Thứ tự thực hiện mặc định của chương trình có thể thay đổi nhờ các câu lệnh điều khiển dòng chương trình có điều kiện hoặc không có điều kiện.
Lệnh JUMP chỉ rằng có thể nhảy đến một địa chỉ tuyệt đối trong 1024 không gian bộ nhớ chương trình.
Các câu lệnh CALL và RETURN cung cấp các thủ tục con tiện lợi cho việc dùng các khối chương trình
Nếu đầu vào ngắt được kích hoạt thì một sự kiện ngắt cũng giuwxlaij địa chỉ của câu lệnh đang được thực hiện vào bộ nhớ stack trong khi đó thì con trỏ
PC được trỏ tới địa chỉ ngắt, 3FF hex Dùng lệnh RETURNI chứ không phải RETURN để trở về chương trình chính từ chương trình phục vụ ngắt.
Trang 14CHƯƠNG 3: TỔNG QUAN VỀ ĐỒNG THIẾT KẾ CODESIGN
3.1 Giới thiệu
Codesign thường được dùng để nói đến việc thiết kế hệ thốngtích hợp dùng cả hai thành phần: phần mềm (SW) và phần cứng(HW) Hệ thống kết hợp chặt chẽ giữa các mođun phần cứng vàphần mềm được ứng dụng để giải quyết một số vấn đề Những hệthống này không có gì mới Tuy nhiên các phương pháp luận hiệnđang được ứng dụng và các kỹ thuật thiết kế dung hòa giữa HW và
SW gần đây mới trở nên nổi bật ([10][19]) Có nhiều nguyên nhânđưa đến sự quan tâm đối với codesign:
Sự tiến bộ của công nghệ (môi trường cho phép đặc tả và môphỏng ở mức hệ thống, kỹ thuật làm mẫu mềm, phương phápthiết kế và kiểm tra hình thức, tổng hợp cấp cao, và sự trưởngthành của các công cụ trợ giúp thiết kế) đã mở ra một hướng pháttriển mới cho codesign
Sự gia tăng về sự đa dạng và độ phức tạp của các ứng dụng
hệ thống nhúng đòi hỏi những phương pháp tiên tiến cho việc phát
Việc tối ưu chi phí và hiệu năng và việc giảm đáng kể thờigian đưa sản phẩm ra thị trường (time-to-market) là những vấn đềquan trọng đối với các công nghệ cao Codesign khác với các phương pháp tiếp cận truyền thống ởchỗ qui trình thiết kế phần cứng quan hệ chặt chẽ với qui trìnhthiết kế phần mềm của nó Quyết định trong qui trình thiết kếphần cứng cũng sẽ ảnh hưởng quan trọng đến qui trình thiết kếphần mềm Do đó đối với codesign, các vấn đề cần được xem xétgiải quyết một cách toàn diện
3.2 Các phương pháp luận đồng thiết kế
Theo truyền thống, việc thiết kế các hệ thống lai
(heterogeneous system) dựa trên nhiều bước thiết kế HW/SW liên tục nhau Trong các bước này, người thiết kế điều chỉnh đặc tả và
Trang 15xây dựng mẫu thử Dựa vào kinh nghiệm của người thiết kế và nhật ký thiết kế (profile) của hệ thống, các chức năng được
chuyển từ SW sang HW hoặc ngược lại trong mỗi chu kỳ Codesignngày nay chủ yếu dựa vào những kỹ thuật và phương pháp đã được ứng dụng thành công trước đây Các đóng góp mới chủ yếu trong lĩnh vực trao đổi thông tin giữa các công cụ, giao tiếp giữa các công cụ, cơ chế phân hoạch HW/SW và các môi trường thiết kếcao cấp
3.2.1 Phương pháp tiếp cận truyền thống
Các môi trường thiết kế tổng quát cho phép bao đóng
(encapsulate) và tích hợp các công cụ cũng như hỗ trợ quản lý đối với các thiết kế mang tính cộng tác
* Phân tích ràng buộc và yêu cầu
Trong bước này, các đặc tính của hệ thống cơ bản được địnhnghĩa dựa trên các đặc tả của khách hàng và người dùng Các mụctiêu, yêu cầu và ràng buộc của dự án do khách hàng đặt ra thườngthiếu tính đầy đủ và chặt chẽ Do đó quá trình phân tích ràng buộc
và yêu cầu này giúp bổ khuyết tính chặt chẽ và xác định nhữngthông tin còn thiếu Những vấn đề thiết kế được thực hiện ở quátrình phân tích bao gồm tính thị trường dựa trên những nghiên cứu
về các yêu cầu của người dùng, yêu cầu hiệu năng thời gian thực,công nghệ hiện thực, khả năng lập trình, công suất tiêu thụ, kíchthước sản phẩm, chi phí thiết kế và sản xuất, môi trường sử dụng,
độ tin cậy, bảo trì, phát triển của thiết kế và chi phí tái sinh
*Đặc tả hệ thống
Đặc tả hệ thống là kết quả của quá trình phân tích Đó là mộtbản đặc tả hình thức, thích hợp cho người thiết kế dựa vào để pháttriển các giải thuật mô hình hóa Các giải thuật này có thể được
mô phỏng bằng cách dùng các công cụ làm mẫu nhanh dựa trên
sơ đồ trạng thái hoặc các mô hình hàng đợi đối với việc mô phỏngtheo hiệu năng Quá trình phát triển thông thường là sự kết hợp