Tải bản đầy đủ (.docx) (30 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (308.9 KB, 30 trang )

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 để đ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


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

2

2


3

3


MỤC LỤC

4


4


CHƯƠ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ềm
phụ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 nhau
theo 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ản
vớ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ạng
lướ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ống
phứ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ần
mề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ần
mề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ặc
cá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ính
phứ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,…
5

5


Cá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 đổi
thê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ều
giao 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ạch
tích hợp cho ứng dụng cụ thể (ASIC) hoặc mạch logic khả trình (FPGA)
6

6



3.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.

7

7


CHƯƠNG 2: GIỚI THIỆU VỀ CHIP FPGA VÀ VI ĐIỀU KHIỂN
PICOBLAZE
2.1 KHÁI QUÁT VỀ CHIP FPGA
2.1.1 Khái niệm:

FPGA (Field Programmable Gate Arrays) là một thiết bị bán dẫn bao
gồm các khối logic lập trình được gọi là "Logic Block", và các kết nối khả
trình. Các khối logic có thể được lập trình để thực hiện các chức năng của các
khối logic cơ bản như AND, XOR, hoặc các chức năng kết hợp phức tạp hơn
như decoder hoặc các phép tính toán học. Trong hầu hết các kiến trúc FPGA,
các khối logic cũng bao gồm cả các phần tử nhớ. Đó có thể là các Flip-Flop
hoặc những bộ nhớ hoàn chỉnh hơ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ý.

8

8


Hiệ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.
9

9



2.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ể
10

10


đổ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.

11

11


64 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
12


12


Thứ 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.

13

13


CHƯƠ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ống
tí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áp
thiết kế và kiểm tra hình thức, tổng hợp cấp cao, và sự trưởng
thành của các công cụ trợ giúp thiết kế) đã mở ra một hướng phát
triể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
triển

cả

phần

cứng




phần

mềm.

Việc tối ưu chi phí và hiệu năng và việc giảm đáng kể thời
gian đư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ình
thiế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ét
giả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à
14

14


xâ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ỳ. Codesign
ngà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 định
nghĩa dựa trên các đặc tả của khách hàng và người dùng. Các mục
tiêu, yêu cầu và ràng buộc của dự án do khách hàng đặt ra thường
thiế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ững
thô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ích

thướ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ột
bản đặc tả hình thức, thích hợp cho người thiết kế dựa vào để phát
triể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ỏng
theo hiệu năng. Quá trình phát triển thông thường là sự kết hợp
15

15


của sự thử nghiệm, kinh nghiệm và phán đoán có căn cứ. Bước mô
phỏng thực tế là cơ hội đầu tiên của người thiết kế để minh họa ý
tưởng cho người quản lý và đội ngũ tiếp thị dự án.
*Phân hoạch HW/SW
Vấn đề cốt lõi của phương pháp luận codesign là quá trình
phân hoạch HW/SW, trong đó người thiết kế hoặc công cụ thiết kế
phải quyết định thành phần nào của hệ thống được hiện thực bằng
HW, phần nào sẽ được thực hiện bằng SW. Quá trình thiết kế hệ
thống bắt đầu bằng việc mô hình hóa, tức là người thiết kế mô tả
hành vi của hệ thống một cách hình thức. Có nhiều phương pháp
phân tích và đánh giá hệ thống, tùy thuộc vào mô hình lý thuyết,
mức độ trừu tượng và cách thức tích hợp. Thông thường, người ta
dùng các kỹ thuật xác định (hoặc thống kê) cũng như các phương
pháp nhật ký (profiling) để tìm ra một phân hoạch (HW/SW) tốt.
Trong số các cách thức phân hoạch, kỹ thuật phân hoạch xác định
(deterministic), thống kê (statistical), điểm chuẩn (benchmarking)

và nhật ký thường được dùng phổ biến nhất. Kỹ thuật phân hoạch
xác định được áp dụng cho mô hình đặc tả đầy đủ đã loại ra tất cả các phụ
thuộc dữ liệu và chi phí của các thành phần đều phải biết trước. Kỹ thuật này
thường đạt được một phân hoạch tốt, nhưng sẽ thất bại nếu có một phần tử dữ liệu
không biết trước. Trong trường hợp này, người ta phải dùng kỹ thuật phân hoạch
theo thống kê. Kỹ thuật này dựa vào việc phân tích các hệ thống và một số tham số
thiết kế. Phương pháp nhật ký thường dựa vào việc khảo sát dòng điều khiển và
dòng dữ liệu trong kiến trúc hệ thống để xác định phần nào bị quá tải về khối lượng
tính toán và hiện thực nó bằng phần cứng. Phương pháp này có thể cho kết quả tốt
ngay cả khi tồn tại những điều kiện thực thi phụ thuộc nhiều vào dữ liệu. Cơ chế
phân hoạch hoàn toàn tự động vẫn chưa có. Các công cụ phân tích và đánh giá cần
thiết cho việc phân hoạch hiện mới đang được phát triển. Người dùng có thể dựa
vào những kết quả đánh giá tự động để đưa ra các quyết định phân hoạch của mình.
Cách này chỉ đáp ứng cho tình hình hiện tại, nhưng lại chưa đủ cho các ứng dụng
công nghiệp. Do đó, theo chúng tôi, cần phải tập trung nhiều hơn vào việc phát
16

16


triển các phương pháp phân hoạch và các công cụ cho nhu cầu công nghiệp. Quá
trình phân hoạch hệ thống có thể được thực hiện ở các mức trừu trượng hoặc ở các
giai đoạn khác nhau trong qui trình thiết kế. Khi được thực hiện ở cấp cao, quá
trình phân hoạch giống như quá trình ánh xạ các mođun. Bước ánh xạ này có thể
được thực hiện sớm hoặc trễ trong qui trình thiết kế. Ánh xạ sớm thường được sử
dụng trong công nghiệp vì nó cho phép lập kế hoạch trước và chọn lựa quyết định
thiết kế dễ dàng hơn. Tuy nhiên cách này chỉ cho phép rất ít sự thay đổi từ phía
khách hàng. Ngược lại, ánh xạ trễ cho phép có những giải pháp tốt hơn về mặt hiệu
năng và vấn đề điều chỉnh mục tiêu theo yêu cầu của khách hàng.
* Tổng hợp và cấu hình phần cứng

Trong bước tổng hợp và cấu hình phần cứng, người ta thiết kế một mô hình
phần cứng để thực hiện các mã chương trình do quá trình tạo phần mềm sinh ra (ở
đây ta giả sử việc tạo ra phần mềm được thực hiện trước). Mô hình này được xây
dựng từ những mô tả phần cứng do quá trình phân hoạch tạo ra từ trước. Quá trình
tổng hợp bao gồm việc ánh xạ công nghệ, nghĩa là chuyển những mô tả phần cứng
(ví dụ như VHDL, Verilog, C, …) thành những khối vật lý được thực hiện bằng
phần cứng. Sự lựa chọn này quyết định bộ sinh mã chương trình trong quá trình tạo
ra phần mềm và ảnh hưởng đến tốc độ thực thi của mã chương trình. Nó cũng khiến
quá trình cấu hình động phần cứng và các thành phần của thư viện thiết kế được
thực hiện dễ dàng. Thông thường, hầu hết phần cứng được tạo ra với các công cụ
tổng hợp. Bên cạnh các thành phần phần cứng, các thiết bị khả lập trình như FPGA
và bộ đồng xử lý khả cấu hình còn yêu cầu thêm các mã chương trình. Các phần
mềm cấu hình cho các mođun phần cứng như FPGA, CLB động, tham số thiết lập
cho ASIC, đơn giản đều có được từ quá trình tổng hợp. Ngoài ra, các bộ đồng xử lý
cấu hình động cũng cần các mã chương trình sinh từ các quá trình tạo ra phần mềm.
Các thành phần phần mềm phụ thuộc vào các quyết định đưa ra sau bước phân
hoạch và do đó quá trình tạo ra phần mềm phụ thuộc vào các quyết định trong bước
tổng hợp phần cứng trước đó. Việc cấu hình phần cứng không chỉ hạn hẹp trong
việc sắp xếp các hàm logic ở mức cổng và mức logic. Người ta có thể ứng dụng các
kỹ thuật cấu hình dựa trên cơ sở tri thức để xây dựng các mô hình phần cứng. Theo
cách
17

này,

các

mođun

với

17

độ

phức

tạp

khác


nhau, từ các khối logic cơ bản đến dãy các bộ xử lý, và từ các lõi xử lý ở mức hành
vi đến dãy các bộ xử lý phức tạp, được lưu trữ trong cơ sở tri thức. Dựa vào đặc tả
của phần cứng, một chương trình chọn lựa các thành phần thích hợp từ cơ sở dữ
liệu này và từ đó xây dựng nên phần cứng.
* Tạo và tham số hóa phần mềm
Trong giai đoạn tạo và tham số hóa phần mềm, các mođun phần mềm sẽ được
tạo ra cho phần cứng đã được tổng hợp và cấu hình (ở đây ta giả thuyết ngược lại:
phần cứng được tạo ra trước phần mềm). Sự tương tác giữa các thành phần phần
cứng và phần mềm được đảm bảo bởi một bộ định thời trong phần cứng và phần
mềm đó. Do đó, tất cả mã chương trình phải được bổ sung thêm các chương trình
con định thời. Bởi vì việc tạo phần mềm phụ thuộc vào mô hình phần cứng và kiến
trúc của nó, người ta phải chọn kiến trúc mục tiêu. Việc chọn lựa này cho phép sử
dụng các mã chương phần cứng. Các thành phần từ các thư viện này chỉ cần tham
số hóa cho phù hợp với nhu cầucần thiết.
* Tổng hợp giao diện
Quá trình tổng hợp giao diện thiết lập sự đồng bộ hóa phần cứng và phần
mềm .Thông thường, các kỹ thuật được dùng trong quá trình này là sự trao đổi tín
hiệu (HW), semaphore (SW), hoặc cơ chế ngắt quãng. Việc hiện thực thay đổi từ
logic đặc thù cho tới các thiết bị logic có khả năng cấu hình. Có một số phương

pháp tiếp cận kết hợp với một bộ định thời trung tâm bằng phần mềm và bộ định
thời này sẽ gởi các tín hiệu để kích hoạt các quá trình phần cứng.
* Tích hợp và đồng mô phỏng
Quá trình tích hợp và đồng mô phỏng HW/SW đối ngẫu với quá trình phân
hoạch; và độ phức tạp của các quá trình này là như nhau. Quá trình này sẽ tạo ra
mẫu thử mà có thể xây dựng vật lý hoặc thực hiện trên chương trình mô phỏng hệ
thống lai. Chương trình đồng mô phỏng HW/SW phải thực thi các mođun được
sinh ra trong quá trình tạo phần mềm trên các kiến trúc phần cứng. Quá trình thực
hiện đồng mô phỏng chiếm rất nhiều thời gian. Do đó người ta phải dùng các kỹ
thuật khác nhau để tăng tốc độ mô phỏng. Bài báo đề nghị dùng các mô hình trừu
tượng (abstract model) của các bộ xử lý ở mức hành vi thay vì dùng mô hình ở lớp
cổng. Trong các phòng thí nghiệm công nghiệp, người ta dùng các máy mô phỏng
18

18


với tốc độ mô phỏng cao hơn. Cách tiếp cận tổng quát của họ là dùng một vài máy
mô phỏng tương tác với nhau để giải quyết vấn đề.
* Kiểm chứng thiết kế
Kiểm chứng thiết kế là quá trình để bảo đảm hệ thống tạo ra theo qui trình thiết
kế thỏa mãn các đặc tả ban đầu. Thông thường, người ta kiểm chứng các thiết kế
sau khi đã được mô phỏng, nhưng trước khi thực hiện mẫu thử vật lý.
3.2.2 Phương pháp tiếp cận dựa theo mô hình
Trong phần này chúng tôi trình bày sự khác biệt của phương pháp luận dựa theo
mô hình đối với phương pháp truyền thống. Phương pháp luận truyền thống cho
phép thực hiện việc phân hoạch trước, nên rất thích hợp trong công nghiệp. Như đã
trình

bày,


việc

phân hoạch HW/SW trước sẽ dễ dàng hơn cho việc hoạch định kế hoạch phát triển
sản phẩm từ đầu qui trình thiết kế. Tuy nhiên việc phân hoạch sau (ánh xạ binding) có thể đưa ra giải pháp tốt hơn về mặt điều chỉnh mục tiêu thiết kế, hiệu
năng và chi phí sản phẩm. Trong phương pháp luận này, người ta dùng một bước
tinh chỉnh (refinement) để đảm bảo cho việc chỉ định công nghệ sau này đối với mô
hình hệ thống hợp lệ. Cách tiếp cận này thúc đẩy việc tái sử dụng các khối thiết kế
có sẵn mà không cần quan tâm đến công nghệ hiện thực của nó. Điều này làm giảm
chi phí và thời gian thiết kế. Vòng lặp tinh chỉnh mô hình hệ thống độc lập với việc
chỉ định công nghệ. Đây là một ưu điểm quan trọng khi thiết kế các hệ thống lớn
bởi vì việc điều chỉnh công nghệ (hay dịch chuyển từ HW sang SW hoặc ngược lại)
thường đòi hỏi sự thay đổi nhiều phần giao tiếp. Sự thay đổi này ảnh hưởng không
chỉ đến hiệu năng mà còn đến hành vi của hệ thống.
3.3 CODESIGN VỚI SỰ TRỢ GIÚP CỦA MÁY TÍNH
Trong vài năm gần đây, chúng ta đã chứng kiến sự gia tăng nhanh chóng của
các phần mềm tự động hóa thiết kế (EDA tools) và các hệ thống tích hợp các phần
mềm này, thường được gọi là môi trường thiết kế với sự trợ giúp của máy tính
(CAD framework). CFI (CAD Framework Initiative) xem môi trường này như một
tập hợp các chương trình/mođun mở rộng dùng để phát triển một hệ thống CAD
đồng nhất định nghĩa như sau: “Môi trường thiết kế với sự trợ giúp của máy tính là
một cơ sở hạ tầng phần mềm, cung cấp một môi trường hoạt động chung cho các
19

19


công cụ CAD. Một môi trường phải cho phép người dùng chạy và quản lý các công
cụ; tạo, tổ chức và quản lý dữ liệu; quan sát dạng đồ họa toàn bộ quá trình thiết kế;
và thực hiện các nhiệm vụ quản lý thiết kế như quản lý cấu hình và phiên bản. Một

số thành phần cốt yếu của một môi trường CAD có thể được liệt kê như: giao diện
người dùng và đồ họa độc lập với hệ thống, trao đổi thông tin giữa các công cụ,
quản lý quá trình và dữ liệu thiết kế, và các dịch vụ CSDL”. Các hệ thống CAD
thiết kế vi mạch VLSI đang có và các hệ thống đang phát triển tích hợp nhiều thành
phần môi trường, ví dụ như, điều khiển công cụ, quản lý cấu hình và phiên bản, …
Tuy nhiên chúng chưa được thay đổi thích hợp để xử lý các đặc tính vốn có của
codesign. Các hệ thống thiết kế hiện tại giải quyết vấn đề chỉ trong một lĩnh vực
đơn lẻ mà chưa có cái tầm nhìn toàn cục. Có rất ít công cụ được thiết kế cho việc
tương tác với môi trường hoặc các công cụ khác để đặc tả chéo HW/SW, phát triển,
mô phỏng, tích hợp và kiểm tra. Chúng tôi cho rằng các công cụ tính toán cao cấp
có mức độ hiệu quả giới hạn, không có những quyết định thiết kế tin cậy để hỗ trợ
cho phương pháp luận trong việc tạo nên những xử lý có hệ thống nhiều mục tiêu
và ràng buộc tác động đến quá trình codesign. Do đó người ta yêu cầu các công cụ
và kỹ thuật codesign phải được gộp lại theo một cách tiếp cận gọi là CASHE
(Computer-Aided Software/Hardware Engineering). Môi trường CASHE phải tích
hợp các khái niệm cao cấp như quản lý công việc và qui trình thiết kế, các kỹ thuật
đồng thời cho việc thiết kế kết hợp, hệ thống hỗ trợ quyết định (DSS) và các kỹ
thuật hệ chuyên gia. Trong, người ta đã đưa ra khái niệm cho việc thiết kế mẫu
thông qua các kỹ thuật mô phỏng dựa trên cơ sở tri thức. Cách tiếp cận này tập
trung vào việc phát triển các mô hình mô phỏng với các đặc điểm của hệ thống cần
thiết kế. Các mô hình được phát triển ở các mức trừu tượng và granularity khác
nhau. Mô hình bao gồm các môđun tái sử dụng trong CSDL các mođun. Việc kiểm
tra bổ sung CSDL mô phỏng, dùng để kiểm tra chéo việc tương thích mô hình với
đặc tả, ràng buộc và yêu cầu của các kỹ thuật dựa trên hệ chuyên gia để tạo và đánh
giá các giải pháp và chiến thuật thiết kế khác nhau.

20

20



CHƯƠNG 4: TRIỂN KHAI XÂY DỰNG HỆ THỐNG NHÚNG
TRÊN KIT
4.1 SƠ ĐỒ TỔNG QUÁT VỀ ỨNG DỤNG NHÚNG

Kit Spartan

ổng

IC
cảm biến

IP cảm biến
nhiệt
Thiết

nố

Giao
encode

tiế

IP encoder
Moto
camera

LCD

Hình 4.1: Sơ đồ tổng quát về ứng dụng nhúng

4.2 CODE CHO CHƯƠNG TRÌNH ĐIỀU KHIỂN

TYPESTATE_TYPE

is

(RESET,CMD_CC,WRITE_BYTE,WRITE_LOW,
21

21


WRITE_HIGH,READ_BIT,CMD_44,WAIT800MS,CMD_BEGE
T_TMP,WAIT4 MS);
signal STATE: STATE_TYPE:=RESET;
signal temp_h: std_logic_vector(7 downto 0);signaltemp_l:
std_logic_vector(7 downto 0);
signal clk_temp:
std_logic:='0';
signal clk1m:
std_logic;
signal write_temp : std_logic_vector(7 downto 0):="00000000";
signal TMP: std_logic_vector(11 downto 0);
signal tmp_bit : std_logic;
signal WRITE_BYTE_CNT:integer range 0 to 8:=0;
signal WRITE_LOW_CNT:integer range
0 to 2:=0; signal WRITE_HIGH_CNT :
integer range 0 to 2:=0; signal
READ_BIT_CNT : integer range 0 to
3:=0;

signal GET_TMP_CNT : integer range 0
to 12:=0; signal cnt : integer range 0 to
100001:=0;
signal count : integer range 0 to 25:=0;
signal WRITE_BYTE_FLAG : integer range 0 to 4:=0;
------------------------------------------- Signals for user logic slave model s/w accessible register example
-----------------------------------------signal slv_reg0

:

std_logic_vector(0 to
C_SLV_DWIDTH-1); signal
22

22


slv_reg_write_sel: std_logic vector(0
to 0); signal slv_reg_read_sel:
std_logic_vector(0 to 0);
signal slv_ip2bus_data: std_logic_vector(0 to
C_SLV_DWIDTH-1); signal slv_read_ack: std_logic;
signal slv_write_ack:std_logic; begin
--USER logic implementation
added here
ClkDivider:process (clk)
begin
if
rising_edge(
clk) then if

(count = 24)
then

count

<= 0;
clk_temp<= not
clk_temp; else count
<=count+1; end if;
end
if;
clk1m<=c
lk_temp;
end
Process;
STATE_TRANSITION:process(ST
ATE,clk1m) begin
when
CMD_CC=>
23

23


write_temp<="11001100";
STATE<=WRITE_BYTE;
when WRITE_BYTE=> case
WRITE_BYTE_CNT is when 0 to 7=>
if
(write_temp(WRITE_BYTE_CNT

)='0') then
STATE<=WRITE_LOW;
else STATE<=WRITE_HIGH;
end
if; WRITE_BYTE_CNT<=WRITE_BYTE_CNT+1;
when 8=>
if (WRITE_BYTE_FLAG=0) then -- ????0XCC??
STATE<=CM
D_44;
WRITE_BYTE_F
LAG<=1;
elsif (WRITE_BYTE_FLAG=1) then --?0X44??
STATE<=RE
SET;
WRITE_BYTE_F
LAG<=2;
elsif (WRITE_BYTE_FLAG=2) then --????0XCC??
STATE<=CM
D_BE;
WRITE_BYTE_F
LAG<=3;
elsif (WRITE_BYTE_FLAG=3) then
--?0XBE??
24

24


STATE<=GET_TMP;
WRITE_BYTE_FLAG

<=0;
end if;
WRITE_BYTE
_CNT<=0;
end case;
when
WRITE_LOW=>
case
WRITE_LOW_C
NT is when 0=>
dq_O<='0';
if (cnt=78) then
cnt<=0;
WRITE_LOW_
CNT<=1;
else
cnt<=cnt+
1; end if;
when 1=> dq_O<='Z';
if
(cnt
=2)
then
cnt<
=0;
WRITE_LOW_CNT<=2;
25

25



×