Với những ưu điểm lớn của công nghệ FPGA là cơ chế tái cấu trúc và tốc độ làm việc cực cao, thì công nghệ FPGA trong thiết kế máy theo dõi bệnh nhân đa thông số sẽ là một hướng nghiên c
Trang 1Đào Minh Thành
ỨNG DỤNG FPGA TRONG THIẾT KẾ MÁY THEO DÕI
BỆNH NHÂN ĐA THÔNG SỐ
LUẬN VĂN THẠC SĨ KỸ THUẬT
KỸ THUẬT Y SINH
NGƯỜI HƯỚNG DẪN KHOA HỌC:
PGS.TS PHẠM NGỌC NAM
HàNội – Năm 2016
Trang 2GVHD: PGS.TS Phạm Ngọc Nam Page 1 HVTH: Đào Minh Thành
MỤC LỤC
Mở đầu:……….……… … 1
b Mục đích, đối tượng và phạm vi nghiên cứu 2
c Phương pháp nghiên cứu 2
d Đóng góp mới của luận văn 2
e Cấu trúc luận văn 2
Chương 1: Chương 1: GIỚI THIỆU VỀ FPGA VÀ NGÔN NGỮ LẬP TRÌNH VHDL 1.1 Giới thiệu về FPGA 4
1.1.1 Khái niệm 4
1.1.2 Ứng dụng 6
1.1.3 Hệ thống mạch liên kết 7
1.1.4 Các phần tử tích hợp sẵn 8
1.2 Ngôn ngữ lập trình cho FPGA 10
1.2.1 Giới thiệu 10
1.2.2 Ngôn ngữ VHDL 10
Chương 2: GIỚI THIỆU VỀ MÁY THEO DÕI BỆNH NHÂN ĐA THÔNG SỐ 2.1 Khảo Sát Hệ Thống Monitor đa thông số 26
2.2 Chức năng của monitor đa thông số 28
2.2.1 Hiển thị tín hiệu điện tim 28
2.2.2 Hiển thị tín hiệu SPO2 29
2.2.3 Hiển thị tín hiệu huyết áp 30
2.3 Cơ sở lý thuyết của hệ thống monitor đa thông số 31
2.3.1 Phép đo nhịp tim(HR) 31
2.3.2 Phép đo nhịp mạch 33
2.3.3 Phép đo huyết áp 33
2.3.4 Phép đo nhiệt độ 41
2.3.5 Phép đo nhịp thở 42
2.3.6 Ghi tín hiệu điện tim ECG 46
2.3.7 Độ bão hòa oxi trong máu SpO2 52
Chương 3: SỬ DỤNG KIT FPGA ĐỂ THIẾT KẾ MÁY THEO DÕI BỆNH NHÂN ĐA THÔNG SỐ 3.1 Sơ đồ khối các thông số trong máy theo dõi bệnh nhân 55
Trang 3GVHD: PGS.TS Phạm Ngọc Nam Page 2 HVTH: Đào Minh Thành
3.2 Sơ đồ khối bộ FPGA theo dõi tín hiệu điện tim ECG 60
3.2.1 Cảm biến tín hiệu ECG 61
3.2.2 Mạch số hóa tín hiệu điện tim ECG 62
3.2.3 Bộ xử lý và hiển thị 64
3.2.4 Code lập trình cho Kid FPGA 73
3.3 Kết luận chung và hướng phát triển đề tài 105
Trang 4GVHD: PGS.TS Phạm Ngọc Nam Page 3 HVTH: Đào Minh Thành
DANH MỤC CÁC HÌNH VẼ
Hình 1.1: trúc cơ bản của FPGA………4
Hình 1.2: Khối logic trong FPGA……….………7
Hình 1.3: Cấu trúc process……… …….14
Hình 1.4: Sơ đồ khối của Testbench……… … 15
Hình 1.5: Giao diện phần mềm ISE……….16
Hình 1.6: Các lựa chọn tạo project với Virtex 4……… 20
Hình 1.7: Khai báo các cổng cho một ví dụ tạo một counter 4 bit……… 21
Hình 1.8: Thiết lập các tham số mô phỏng……… 23
Hình 1.9: Thiết lập thời gian đếm tiến, lùi cho counter……… 24
Hình 1.10: Kết quả mô phỏng của counter……….24
Hình 2.1 Sơ đồ khối thiết bị theo dõi bệnh nhân……… 26
Hình 2.2: Sơ đồ khối máy theo dõi bệnh nhân đa thông số………27
Hình 2.3: Sơ đồ mạch khối EGG/RESP……… 28
Hình 2.5 Sơ đồ khối bộ xử lý tín hiệu cảm biến Spo2………29
Hình 2.6: Sơ đồ khối khối NIBP……….30
Hình 2.7: Nguyên lý chuyển đổi tần số sang điện áp để theo dõi nhịp tim tức thì………32
Hình 2.8: Sơ đồ khối một máy……… 33
Hình 2.9: Ảnh cấy cảm biến trực tiếp vào động mạch……… …35
Hình 2.10: Sơ đồ mạch điện đo huyết áp tâm thu và tâm trương……….36
Hình 2.11: Dạng sóng tín hiệu thu được đo theo phương pháp Korotkoff và dao động kế 37
Hình 2.12: Phương pháp đo huyết áp gián tiếp theo Rheographic………… 38
Hình 2.13: Các khối chính trong thiết bị đo huyết áp siêu âm………40
Hình 2.14: Sơ đồ khối chi tiết đo nhiệt độ hiển thị số trực tiếp……… 41
Hình 2.15: Nguyên lý phương pháp đo trở kháng phổi………43
Hình 2.16: Nồng độ CO2 khi hít vào và thở ra……….45
Trang 5GVHD: PGS.TS Phạm Ngọc Nam Page 4 HVTH: Đào Minh Thành
Hình 2.17: Sơ đồ khối của quá trình phân tích khí CO2 trong hơi thở……….46
Hình 2.18: Các đạo trình chuẩn……… ………47
Hình 2.19: Các đạo trình chi đơn cực……….47
Hình 2.20: Các đạo trình trước ngực……… …48
Hình 2.21: Điện tim 12 kênh ghi……… …… 48
Hình 2.22: Điện tim 6 kênh ghi……… 48
Hình 2.23: Điện tim 3 kênh ghi……… 49
Hình 2.24: Nhịp tim chuẩn……….49
Hình 2.25: Sơ đồ khối bộ thu nhận tín hiệu ECG……… 50
Hình 2.26: Sơ đồ khối xử lý tín hiệu……… 53
Hình 2.27: Sự hấp thụ ánh sang hồng ngoại của mô, máu tĩnh mạch, xương và da………54
Hình 3.1: Sơ đồ khối chung cho việc hiển thị các thông số trên monitor.……55
Hình 3.2: Sơ đồ mạch nguồn 5V………56
Hình 3.3: Cảm biến ECG………56
Hình 3.4: Cảm biến huyết áp không xâm lấn (NIBP)……….57
Hình 3.5: Cảm biến huyết áp xâm lấn (IBP)……… 58
Hình 3.6: Cảm biến theo dõi nhiệt độ bệnh nhân……….… 59
Hình 3.7: Cảm biến SPO2……… ………59
Hình 3.8: Sơ đồ khối bộ FPGA theo dõi tín hiệu điện tim ECG………60
Hình 3.9: Cảm biến nhịp tim ECG……….61
Hình 3.10: Sơ đồ nguyên lý mạch số hóa tín hiệu ECG……….62
3.11 Thông số IC ADC……… 64
Hình 3.12: Kit DE1……….66
Hình 3.13: Kit DE1 và phần mềm……… 67
Hình 3.14: Các thành phần trên Kit DE1………67
Hình 3.15: Trình soạn thảo Quatus……….69
Trang 6GVHD: PGS.TS Phạm Ngọc Nam Page 5 HVTH: Đào Minh Thành
Hình 3.16: Màn hình làm việc Quatus……….………69
Hình 3.17: Cửa sổ Assignment Editor dùng để gán chân………70
Hình 3.18: Giao diện nạp code……….71
Trang 7GVHD: PGS.TS Phạm Ngọc Nam Page 6 HVTH: Đào Minh Thành
DANH MỤC CÁC TỪ VIẾT TẮT
Trang 8GVHD: PGS.TS Phạm Ngọc Nam Page 1 HVTH: Đào Minh Thành
MỞ ĐẦU
a Lý do chọn đề tài
Cùng với sự phát triển ngày càng mạnh mẽ của khoa học kỹ thuật, các thiết
bị theo dõi bệnh nhân cũng phát triển không ngừng và đóng một vai trò quan trọng
trong việc trợ giúp các Bác sỹ và y tá theo dõi hoạt động sống của người bệnh Mục
đích của quá trình theo dõi bệnh nhân là để có được một sự đánh giá định lượng về
các tham số sinh học quan trọng của bệnh nhân trong các giai đoạn nguy kịch các
chức năng sinh học Những bệnh nhân ốm rất nặng, những bệnh nhân đang hồi phục
sau mổ hoặc bị các bệnh về tim mạch,… được các thiết bị theo dõi giám sát liên tục
các biểu hiện sống Là một thiết bị có chức năng theo dõi sức khoẻ bệnh nhân thông
qua việc thu nhận và xử lý liên tục các thông số sống quan trọng của bệnh nhân
như: Tín hiệu điện tim (ECG), nhịp tim (HR), nhịp thở (RESP), độ bão hòa oxy
(SpO2), huyết áp không can thiệp (NIBP), nhiệt độ cơ thể (TEMP) và phát ra các
báo động khi xảy các điều kiện không an toàn Thiết bị theo dõi bệnh nhân thường
được sử dụng để theo dõi sức khoẻ bệnh nhân trong phòng mổ, hồi sức cấp cứu,
điều trị, Thiết bị theo dõi bệnh nhân có thể được sử dụng cho từng giường bệnh
nhân riêng biệt hoặc có thể được kết nối với một trạm theo dõi ở trung tâm điều
khiển Các dữ liệu bệnh nhân được hiển thị liên tục trên màn hình đặt ở đầu giường
bệnh nhân hoặc màn hình ở trạm trung tâm Thiết bị theo dõi bệnh nhân được thiết
kế và chế tạo dựa trên những tiến bộ khoa học kỹ thuật và công nghệ cao của một số
nước trên thế giới Ở nước ta, lĩnh vực này vẫn còn khá mới mẻ Các bệnh viện và
cơ sở y tế trong nước phải nhập các thiết bị này từ nước ngoài với giá thành rất đắt
Với mục tiêu nghiên cứu và học hỏi những khoa học kỹ thuật và công nghệ
mới về lĩnh vực này, em đã lựa chọn đề tài “Ứng dụng FPGA trong thiết kế máy
theo dõi bệnh nhân đa thông số” Với những ưu điểm lớn của công nghệ FPGA là
cơ chế tái cấu trúc và tốc độ làm việc cực cao, thì công nghệ FPGA trong thiết kế
máy theo dõi bệnh nhân đa thông số sẽ là một hướng nghiên cứu hoàn toàn có khả
năng ứng dụng vào thực tế
Trang 9GVHD: PGS.TS Phạm Ngọc Nam Page 2 HVTH: Đào Minh Thành
b Mục đích, đối tượng và phạm vi nghiên cứu
Đề tài tập trung nghiên cứu một số nội dung chính sau:
- Chương 1: Giới thiệu về FPGA và ngôn ngữ lập trình VHDL
- Chương 2: Giới thiệu về máy theo dõi bệnh nhân đa thông số
- Chương 3: Sử dụng Kit FPGA để thiết kế máy theo dõi bệnh nhân đa thông
số
Trong khuôn khổ luận văn, Em chỉ nghiên cứu và trình bày một cách tổng
thể những hiểu biết của em về công nghệ FPGA, máy theo dõi bệnh nhân đa thông
số, đưa ra phương án thực hiện việc thiết kế máy theo dõi bệnh nhân đa thông số
bằng công nghệ FPGA, phần còn lại là thiết kế, chế tạo một phần trong máy theo
dõi bệnh nhân đa thông số Thông số em chọn để thực hiện là tín hiệu điện tim đồ
ECG
c Phương pháp nghiên cứu
Đọc các tài liệu về FPGA, ngôn ngữ lập trình, Kit De1 của Altera, máy theo
dõi bệnh nhân đa thông số, nguyên lý hoạt động của các cảm biến
Kết hợp giữa các kiến thức về FPGA áp dụng vào bài toán thiết kế máy theo
dõi bệnh nhân đa thông số theo sơ đồ khối đã lập ra
Thi công chế tạo phần theo dõi thông số điện tim ECG bằng công nghệ
FPGA
d Đóng góp mới của luận văn
Các loại cảm biến của mỗi nhà sản xuất máy theo dõi bệnh nhân đa thông số
khác nhau, và rất khó mua lẻ trên thị trường, nên việc chọn cảm biến sẽ khác với
các cảm biến thực tế đang được sử dụng
Đưa ra một cách tổng quan mới dưới con mắt của tác giả trong việc thiết kế
máy theo dõi bệnh nhân, mặc dù chưa được tối ưu như những thiết kế của các nhà
sản xuất đang cung cấp máy theo dõi bệnh nhân đa thông số
e Cấu trúc luận văn
Ngoài phần mở đầu, luận văn gồm 03 chương với nội dung chính như sau:
Trang 10GVHD: PGS.TS Phạm Ngọc Nam Page 3 HVTH: Đào Minh Thành
- Chương 1: Giới thiệu về FPGA và ngôn ngữ lập trình VHDL:
Trình bày tổng quan về công nghệ FPGA, các khái niệm, ứng dụng, hệ thống
mạch liên kết, các phần tử tích hợp sẵn và ngôn ngữ lập trình VHDL Đây
chính là các tiền đề cho việc thiết kế nên các hệ thống FPGA
- Chương 2: Giới thiệu về máy theo dõi bệnh nhân đa thông số:
Chương này trình bày về tổng quan của một chiếc máy theo dõi bệnh
nhân đa thông số Cơ sở khoa học của từng phép đo, như: Phép đo nhịp tim,
phép đo nhịp mạch, phép đo huyết áp, phép đo nhiệt độ, phép đo nhịp thở,
phép đo ECG, phép đo độ bão hòa Oxy trong máu Đây chính là các thông số
thể hiện sự sống của bệnh nhân
- Chương 3: Sử dụng Kit FPGA để thiết kế máy theo dõi bệnh nhân đa
thông số:
Chương này đề cập đến các vấn đề như: Sơ đồ khối tổng thể của máy theo
dõi bệnh nhân đa thông số, các loại cảm biến cho từng loại thông số, xử lý
tín hiệu cảm biến (chuyển sang tín hiệu số), Kit De1 của Altera được sử dụng
để thực hiện bài toán, lập trình và cuối cùng là kết luận chung và hướng phát
triển đề tài
Trang 11GVHD: PGS.TS Phạm Ngọc Nam Page 4 HVTH: Đào Minh Thành
Chương I: GIỚI THIỆU VỀ FPGA VÀ NGÔN NGỮ LẬP TRÌNH VHDL
1.1 Giới thiệu về FPGA
1.1.1 Khái niệm
Field-programmable gate array (FPGA) là vi mạch dùng cấu trúc mảng
phần tử logic mà người dùng có thể lập trình được (Chữ field ở đây muốn chỉ đến
khả năng tái lập trình “bên ngoài” của người sử dụng, không phụ thuộc vào dây
chuyền sản xuất phức tạp của nhà máy bán dẫn) Vi mạch FPGA được cấu thành từ
các bộ phận (hình 2):
• Các khối logic cơ bản lập trình được (logic block)
• Hệ thống mạch liên kết lập trình được
• Khối vào/ra (I/O Pads)
• Phần tử thiết kế sẵn khác như DSP slice, RAM, ROM, nhân vi xử lý
Hình 1.1: trúc cơ bản của FPGA
Trang 12GVHD: PGS.TS Phạm Ngọc Nam Page 5 HVTH: Đào Minh Thành
FPGA cũng được xem như một loại vi mạch bán dẫn chuyên dụng ASIC,
nhưng nếu so sánh FPGA với những ASIC đặc chế hoàn toàn hay ASIC thiết kế
trên thư viện logic thì FPGA không đạt đựợc mức độ tối ưu như những loại này, và
hạn chế trong khả năng thực hiện những tác vụ đặc biệt phức tạp, tuy vậy FPGA ưu
việt hơn ở chỗ có thể tái cấu trúc lại khi đang sử dụng, công đoạn thiết kế đơn giản
do vậy chi phí giảm, rút ngắn thời gian đưa sản phẩm vào sử dụng
Còn nếu so sánh với các dạng vi mạch bán dẫn lập trình được dùng cấu trúc
mảng phần tử logic như PLA, PAL, CPLD thì FPGA ưu việt hơn các điểm: tác vụ
tái lập trình của FPGA thực hiện đơn giản hơn; khả năng lập trình linh động hơn; và
khác biệt quan trọng nhất là kiến trúc của FPGA cho phép nó có khả năng chứa khối
lượng lớn cổng logic (logic gate), so với các vi mạch bán dẫn lập trình được có
trước nó
Thiết kế hay lập trình cho FPGA được thực hiện chủ yếu bằng các ngôn ngữ
mô tả phần cứng HDL như VHDL, Verilog, AHDL, các hãng sản xuất FPGA lớn
như Xilinx, Altera thường cung cấp các gói phần mềm và thiết bị phụ trợ cho quá
trình thiết kế, cũng có một số các hãng thứ ba cung cấp các gói phần mềm kiểu này
như Synopsys, Synplify Các gói phần mềm này có khả năng thực hiện tất cả các
bước của toàn bộ quy trình thiết kế IC chuẩn với đầu vào là mã thiết kế trên HDL
(còn gọi là mã RTL)
FPGA được thiết kế đầu tiên bởi Ross Freeman, người sáng lập công ty Xilinx
vào năm 1984, kiến trúc mới của FPGA cho phép tính hợp số lượng tương đối lớn
các phần tử bán dẫn vào một vi mạch so với kiến trúc trước đó là CPLD FPGA có
khả năng chứa tới từ 100.000 đến hàng vài tỷ cổng logic, trong khi CPLD chỉ chứa
từ 10.000 đến 100.000 cổng logic; con số này đối với PAL, PLA còn thấp hơn nữa
chỉ đạt vài nghìn đến 10.000
CPLD được cấu trúc từ số lượng nhất định các khối SPLD (Simple
programable devices, thuật ngữ chung chỉ chung chỉ PAL, PLA) SPLD thường là
một mảng logic AND/OR lập trình được có kích thước xác định và chứa một số
Trang 13GVHD: PGS.TS Phạm Ngọc Nam Page 6 HVTH: Đào Minh Thành
lượng hạn chế các phần tử nhớ đồng bộ (clocked register) Cấu trúc này hạn chế khả
năng thực hiện những hàm phức tạp và thông thường hiệu suất làm việc của vi mạch
phụ thuộc vào cấu trúc cụ thể của vi mạch hơn là vào yêu cầu bài toán
Kiến trúc của FPGA là kiến trúc mảng các khối logic, khối logic, nhỏ hơn
nhiều nếu đem so sánh với một khối SPLD, ưu điểm này giúp FPGA có thể chứa
nhiều hơn các phần tử logic và phát huy tối đa khả năng lập trình của các phần tử
logic và hệ thống mạch kết nối, để đạt được mục đích này thì kiến trúc của FPGA
phức tạp hơn nhiều so với CPLD
Một điểm khác biệt với CPLD là trong những FPGA hiện đại được tích hợp
nhiều những bộ logic số học đã sơ bộ tối ưu hóa, hỗ trợ RAM, ROM, tốc độ cao,
hay các bộ nhân cộng (multication and accumulation, MAC), thuật ngữ tiếng Anh là
DSP slice dùng cho những ứng dụng xử lý tín hiệu số DSP
Ngoài khả năng tái cấu trúc vi mạch toàn cục, một số FPGA hiện đại còn hộ
trợ tái cấu trúc cục bộ, tức là khả năng tái cấu trúc một bộ phận riêng lẻ trong khi
vẫn đảm bảo hoạt động bình thường cho các bộ phận khác
1.1.2 Ứng dụng
Ứng dụng của FPGA bao gồm: xử lý tín hiệu số DSP, các hệ thống hàng
không, vũ trụ, quốc phòng, tiền thiết kế mẫu ASIC (ASIC prototyping), các hệ
thống điều khiển trực quan, phân tích nhận dạng ảnh, nhận dạng tiếng nói, mật mã
học, mô hình phần cứng máy tính
Do tính linh động cao trong quá trình thiết kế cho phép FPGA giải quyết lớp
những bài toán phức tạp mà trước kia chỉ thực hiện nhờ phần mềm máy tính, ngoài
ra nhờ mật độ cổng logic lớn FPGA được ứng dụng cho những bài toán đòi hỏi khối
lượng tính toán lớn và dùng trong các hệ thống làm việc theo thời gian thực
Khối logic
Trang 14GVHD: PGS.TS Phạm Ngọc Nam Page 7 HVTH: Đào Minh Thành
Phần tử chính của FPGA là các khối logic (logic blocks) Khối logic được cấu
thành từ LUT và một phần tử nhớ đồng bộ flip-flop, LUT (Look up table) là khối
logic có thể thực hiện bất kì hàm logic nào từ 4 đầu vào, kết quả của hàm này tùy
vào mục đích mà gửi ra ngoài khối logic trực tiếp hay thông qua phần tử nhớ
flip-flop
Hình 1.2: Khối logic trong FPGA
Trong tài liệu hướng dẫn của các dòng FPGA của Xilinx còn sử dụng khái
niệm SLICE, một Slice tạo thành từ gồm 4 khối logic, số lượng các Slices thay đổi
từ vài nghìn đến vài chục nghìn tùy theo loại FPGA
Nếu nhìn cấu trúc tổng thể của mảng LUT thì ngoài 4 đầu vào kể trên còn hỗ
trợ thêm 2 đầu vào bổ xung từ các khối logic phân bố trước và sau nó nâng tổng số
đầu vào của LUT lên 6 chân Cấu trúc này là nhằm tăng tốc các bộ số học logic
1.1.3 Hệ thống mạch liên kết
Khối chuyển mạch của FPGA là mạng liên kết trong FPGA được cấu thành từ
các đường kết nối theo hai phương ngang và đứng, tùy theo từng loại FPGA mà các
đường kết nối được chia thành các nhóm khác nhau, ví dụ trong XC4000 của Xilinx
có 3 loại kết nối: ngắn, dài và rất dài Các đường kết nối được nối với nhau thông
qua các khối chuyển mạch lập trình được (programable switch), trong một khối
chuyển mạch chứa một số lượng nút chuyển lập trình được đảm bảo cho các dạng
liên kết phức tạp khác nhau
Look
Up Table
(LUT)
Flip
- Flop
Input
Trang 15GVHD: PGS.TS Phạm Ngọc Nam Page 8 HVTH: Đào Minh Thành
1.1.4 Các phần tử tích hợp sẵn
Ngoài các khối logic tùy theo các loại FPGA khác nhau mà có các phần tử tích
hợp thêm khác nhau, ví dụ để thiết kế những ứng dụng SoC, trong dòng Virtex 4,5
của Xilinx có chứa nhân sử lý PowerPC, hay trong Atmel FPSLIC tích hợp nhân
ARV…, hay cho những ứng dụng xử lý tín hiệu số DSP trong FPGA được tích hợp
các DSP Slice là bộ nhân cộng tốc độ cao, thực hiện hàm A*B+C, ví dụ dòng Virtex
của Xilinx chứa từ vài chục đến hàng trăm DSP slices với A, B, C 18-bit
Ngày nay ngành công nghệ chế tạo phần cứng luôn có những đột phá không
ngừng Từ các mạch điện đơn giản đến các mạch số, mạch tích hợp, kiến trúc mạch
trở nên ngày một phức tạp hơn Nhờ những ưu điểm hơn hẳn so với các phương
pháp phân tích, mô hình hoá, thiết kế mạch số kiểu truyền thống mà phương pháp
sử dụng các ngôn ngữ mô phỏng phần cứng (HDL - Hardware Description
Languages) đang trở thành một phương pháp thiết kế các hệ thống điện tử số phổ
biến trên toàn thế giới Trong khóa luận này em xin giới thiệu hai loại ngôn ngữ mô
phỏng phần cứng đó là VHDL (Very high speed intergrated circuit Hardware
Description Language) và Verilog là hai ngôn ngữ chủ yếu được sử dụng để mô
phỏng phần cứng trong công nghệ CPLD, FPGA, ASIC…
❖ Những ưu điểm của phương pháp thiết kế hệ thống số bằng ngôn
ngữ mô phỏng phần cứng (HDL)
Ngày nay, các mạch tích hợp ngày càng thực hiện được nhiều chức năng do
đó mà vấn đề thiết kế mạch càng trở nên phức tạp Những phương pháp truyền
thống như dùng phương pháp tối thiểu hoá hàm Boolean hay dùng sơ đồ các phần
tử không còn đáp ứng được các yêu cầu đặt ra khi thiết kế Nhược điểm lớn nhất
của các phương pháp này là chúng chỉ mô tả được hệ thống dưới dạng mạng nối
các phần tử với nhau Người thiết kế cần phải đi qua hai bước thực hiện hoàn toàn
thủ công: đó là chuyển từ các yêu cầu về chức năng của hệ thống sang biểu diễn
theo dạng hàm Boolean, sau các bước tối thiểu hoá hàm này ta lại phải chuyển từ
hàm Boolean sang sơ đồ mạch của hệ thống Cũng tương tự khi phân tích một hệ
Trang 16GVHD: PGS.TS Phạm Ngọc Nam Page 9 HVTH: Đào Minh Thành
thống người phân tích cần phải phân tích sơ đồ mạch của hệ thống, rồi chuyển nó
thành các hàm Boolean, sau đó mới lập lại các chức năng, hoạt động của hệ thống
Tất cả các bước nói trên hoàn toàn phải thực hiện thủ công không có bất kỳ sự trợ
giúp nào của máy tính Người thiết kế chỉ có thể sử dụng máy tính làm công cụ hỗ
trợ trong việc vẽ sơ đồ mạch của hệ thống và chuyển từ sơ đồ mạch sang công cụ
tổng hợp mạch vật lý dùng công cụ Synthesis Một nhược điểm khác nữa của
phương pháp thiết kế truyền thống là sự giới hạn về độ phức tạp của hệ thống
được thiết kế Phương pháp dùng hàm Boolean chỉ có thể dùng để thiết kế hệ thống
lớn nhất biểu diễn bởi vài trăm hàm Còn phương pháp dựa trên sơ đồ chỉ có thể
dùng để thiết kế hệ thống lớn nhất chứa khoảng vài nghìn phần tử
Phương pháp thiết kế, thử nghiệm, phân tích các hệ thống số sử dụng các
ngôn ngữ mô tả phần cứng nổi bật lên với các ưu điểm hơn hẳn và sẽ dần thay
thế các phương pháp truyền thống Sự ra đời của ngôn ngữ mô phỏng phần cứng đã
giải quyết được rất nhiều nhược điểm lớn của các phương pháp thiết kế trước đây:
Nếu các phương pháp cũ đòi hỏi phải chuyển đổi từ mô tả hệ thống (các chỉ tiêu về
chức năng) sang tập hợp các hàm logic bằng tay thì bước chuyển đó hoàn toàn
không cần thiết khi dùng HDL Hầu hết các công cụ thiết kế dùng ngôn ngữ mô
phỏng phần cứng đều cho phép sử dụng biểu đồ trạng thái (finite-state-machine)
cho các hệ thống tuần tự cũng như cho phép sử dụng bảng chân lý cho hệ thống
tổng hợp Việc chuyển đổi từ các biểu đồ trạng thái và bảng chân lý sang mã ngôn
ngữ mô phỏng phần cứng được thực hiện hoàn toàn tự động
Nhờ tính dễ kiểm tra thử nghiệm hệ thống trong suốt quá trình thiết kế mà
người thiết kế có thể dễ dàng phát hiện các lỗi thiết kế ngay từ những giai đoạn đầu,
giai đoạn chưa đưa vào sản xuất thử, do đó tiết kiệm được lượng chi phí đáng kể
bởi từ ý tưởng thiết kế đến tạo ra sản phẩm đúng như mong muốn là một việc rất
khó tránh khỏi những khó khăn, thất bại
Khi mọi lĩnh vực của khoa học đều phát triển không ngừng thì sự phức tạp
của hệ thống điện tử cũng ngày một tăng theo và gần như không thể tiến hành thiết
Trang 17GVHD: PGS.TS Phạm Ngọc Nam Page 10 HVTH: Đào Minh Thành
kế thủ công mà không có sự trợ giúp cuả các loại máy tính hiện đại Ngày nay,
ngôn ngữ mô tả phần cứng HDL được dùng nhiều để thiết kế cho các thiết bị
logic lập trình được PLD từ loại đơn giản đến các loại phức tạp như ma trận cổng
lập trình được FPGA
1.2 Ngôn ngữ lập trình cho FPGA
1.2.1 Giới thiệu
Có nhiều ngôn ngữ có thể lập trình cho FPGA như VHDL, Verilog, C… Mỗi
ngôn ngữ lại có ưu nhược điểm riêng Ví dụ như Verilog là ngôn ngữ được phát
triển và sử dụng chủ yếu ở Mỹ Đây là một ngôn ngữ rất gần với C, chính vì vậy sẽ
rất thuận tiện cho ai đó đã quen lập trình với ngôn ngữ C Tuy nhiên, ở châu Âu thì
người ta lại quen dùng VHDL hơn Ưu điểm của ngôn ngữ này là người làm việc
với nó sẽ có cái nhìn rất thấu đáo về phần cứng Trong chương này em xin được
giới thiệu chủ yếu về về ngôn ngữ VHDL – ngôn ngữ mà em đã tìm hiểu trong quá
trình học tập và làm thực nghiệm với FPGA trên phòng SIS (Smart Integrated
Systems) và đưa ra vài nét giới thiệu khái quát về Verilog cũng là một ngôn ngữ rất
thông dụng đối với lập trình FPGA hiện nay
1.2.2 Ngôn ngữ VHDL
1.2.2.1 Khái niệm
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 chươ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
Trang 18GVHD: PGS.TS Phạm Ngọc Nam Page 11 HVTH: Đào Minh Thành
đề 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ố Như ta đã biết, một hệ thống số có rất nhiều
tài liệu mô tả Để có thể vận hành bảo trì sửa chữa một hệ thống ta cần tìm hiểu kỹ
lưỡng tài liệu đó Với một ngôn ngữ mô phỏng phần cứng tốt việc xem xét các tài
liệu mô tả trở nên dễ dàng hơn vì bộ tài liệu đó có thể được thực thi để mô phỏng
hoạt động của hệ thống Như thế ta có thể xem xét toàn bộ các phần tử của hệ thống
hoạt động trong một mô hình thống nhất
VHDL được phát triển như 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 đã kể ra ở trên ta thấy VHDL có một số ưu điểm hơn hẳn các ngôn ngữ
khác:
- 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 hỗ trợ nhiều công nghệ và 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 kế từ
trên xuống, hay từ dưới lên dựa vào các thư viện sẵn có VHDL cũ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ụ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ế
Trang 19GVHD: PGS.TS Phạm Ngọc Nam Page 12 HVTH: Đào Minh Thành
- 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.2.2 Cấu trúc một mô hình hệ thống mô tả bằng VHDL
Mục đích của phần này là nhằm giới thiệu sơ qua về cấu trúc khung cơ bản
của VHDL khi mô tả cho một mô hình thiết kế thực Thông thường một mô hình
VHDL bao gồm ba phần: thực thể (entity), kiến trúc (architecture) và các cấu hình
Đôi khi ta sử dụng các gói (packages) và mô hình kiểm tra hoạt động của hệ thống
(testbench)
+ Thực thể (entity)
Đây là nơi chứa các khai báo thực thể (là các port giao tiếp giữa FPGA và các
tín hiệu bên ngoài các port này được sử dụng như là lớp vỏ của kiến trúc thiết kế) và
có thể bao gồm các tùy chọn “generic” là khai báo chung có thể dễ dàng sửa đổi khi
cần
Trang 20GVHD: PGS.TS Phạm Ngọc Nam Page 13 HVTH: Đào Minh Thành
+ Kiến trúc (architecture)
Phần thứ hai trong mô hình VHDL là khai báo kiến trúc của chương trình
Mỗi một khai báo thực thể đều phải đi kèm với ít nhất một kiến trúc tương ứng
VHDL cho phép tạo ra hơn một kiến trúc cho một thực thể Phần khai báo kiến
trúc có thể bao gồm các khai báo về các tín hiệu bên trong, các phần tử bên trong
hệ thống, hay các hàm và thủ tục mô tả hoạt động của hệ thống Tên của kiến trúc
là nhãn được đặt tuỳ theo người xử dụng Có hai cách mô tả kiến trúc của một phần
tử (hoặc hệ thống) đó là mô hình hoạt động (Behaviour) hay mô tả theo mô hình
cấu trúc (Structure) Tuy nhiên một hệ thống có thể bao gồm cả mô tả theo mô
hình hoạt động và mô tả theo mô hình cấu trúc
+ Mô tả kiến trúc theo mô hình hoạt động
Mô hình hoạt động mô tả các hoạt động của hệ thống (hệ thống đáp ứng với
các tín hiệu vào như thế nào và đưa ra kết quả gì ở đầu ra) dưới dạng các cấu trúc
ngôn ngữ lập trình bậc cao Cấu trúc đó có thể là PROCESS, WAIT, IF, CASE,
FOR-LOOP…
+ Mô tả kiến trúc theo mô hình cấu trúc
Mô hình cấu trúc của một phần tử (hoặc hệ thống) có thể bao gồm nhiều cấp
cấu trúc bắt đầu từ một cổng logic đơn giản đến xây dựng mô tả cho một hệ thống
hoàn thiện Thực chất của việc mô tả theo mô hình cấu trúc là mô tả các phần tử
con bên trong hệ thống và sự kết nối của các phần tử con đó Như với ví dụ mô tả
mô hình cấu trúc một flip-flop RS gồm hai cổng NAND có thể mô tả cổng NAND
được định nghĩa tương tự như ví dụ với cổng NOT, sau đó mô tả sơ đồ móc nối các
phần tử NAND tạo thành trigơ RS
+ Cấu trúc process
Process là khối cơ bản của việc mô tả theo hoạt động Process được
xét đến như là một chuỗi các hành động đơn trong suốt quá trình dịch
Trang 21GVHD: PGS.TS Phạm Ngọc Nam Page 14 HVTH: Đào Minh Thành
Trong đó các phần đặt trong dấu [ ] thì có thể có hoặc không
- process_label: (nhãn lệnh) là tuỳ thuộc người lập trình đặt tên
- sensitivity_list: Danh sách các yếu tố kích thích hoạt động
+ Môi trường kiểm tra (testbench)
Một trong các nhiệm vụ rất quan trọng là kiểm tra bản mô tả thiết kế Kiểm
tra một mô hình VHDL được thực hiện bằng cách quan sát hoạt động của nó trong
S
S S/B
S
Trang 22GVHD: PGS.TS Phạm Ngọc Nam Page 15 HVTH: Đào Minh Thành
khi mô phỏng và các giá trị thu được có thể đem so sánh với yêu cầu thiết kế
Môi trường kiểm tra có thể hiểu như một mạch kiểm tra ảo Môi trường kiểm
tra sinh ra các tác động lên bản thiết kế và cho phép quan sát hoặc so sánh kết quả
hoạt động của bản mô tả thiết kế Thông thường thì các bản mô tả đều cung cấp
chương trình thử Nhưng ta cũng có thể tự xây dựng chương trình thử (testbench)
Mạch thử thực chất là sự kết hợp của tổng hợp nhiều thành phần Nó gồm ba thành
phần Mô hình VHDL đã qua kiểm tra, nguồn dữ liệu và bộ quan sát Hoạt động
của mô hình VHDL được kích thích bởi các nguồn dữ liệu và kiểm tra tính đúng
đắn thông qua bộ quan sát
Hình 1.4: Sơ đồ khối của Testbench
Trong đó: DUT: (device under test) mô hình VHDL cần kiểm tra
Observer: khối quan sát kết quả
Data source: nguồn dữ liệu (khối tạo ra các tín hiệu kích thích)
1.2.2.3 Giới thiệu khái quát về ngôn ngữ Verilog
Verilog HDL là một trong hai ngôn ngữ mô phỏng phần cứng thông dụng
nhất cùng với VHDL được dùng trong thiết kế IC Verilog HDL cho phép mô
phỏng các thiết kế dễ dàng, sửa chữa lỗi, hoặc thực nghiệm bằng những cấu trúc
khác nhau Các thiết kế được mô tả trong Verilog HDL là những kỹ thuật độc lập,
dễ thiết kế, dễ tháo gỡ và thường dễ đọc hơn ở dạng biểu đồ, đặc biệt là ở các mạch
Trang 23GVHD: PGS.TS Phạm Ngọc Nam Page 16 HVTH: Đào Minh Thành
điện lớn
Verilog thường được dùng để mô tả thiết kế ở bốn dạng
• Thuật toán (một số lệnh giống ngôn ngữ C như: if, case, for,while…)
• Chuyển đổi thanh ghi (kết nối bằng các biểu thức Boolean)
• Các cổng kết nối (cổng: OR, AND, NOT…)
• Chuyển mạch (BJT, MOSFET)
Ngôn ngữ này cũng chỉ rõ cách thức kết nối, điều khiển vào/ra trong mô phỏng
Khai báo module
Một module là bản thiết kế chủ yếu tồn tại trong Verilog Dòng đầu tiên của
khai báo module chỉ rõ danh sách tên và port (các đối số) Những dòng kế tiếp chỉ
rõ dạng I/O (input, output, hoặc inout) và chiều rộng của mỗi port Mặc định chiều
rộng port là 1 bit
Sau đó, những biến port phải được khai báo wire, wand, …, reg Mặc định là
wire Những ngõ vào đặc trưng là wire khi dữ liệu được chốt bean ngoài module
Các ngõ ra là dạng reg nếu những tín hiệu của chúng được chứa trong khối always
hoặc initial
Chỉ thị liên tiếp
Các chỉ định liên tiếp được dùng để gán một giá trị lên trên một wire trong
một module Đó là các chỉ định thông thường bên ngoài khối always hoặc khối
initial Các chỉ định liên tiếp được thực hiện với một lệnh gán (assign) rõ ràng hoặc
bằng sự chỉ định một giá trị đến một wire trong lúc khai báo Chú ý rằng, các lệnh
chỉ định liên tiếp thì tồn tại và được chạy liên tục trong suốt quá trình mô phỏng
Thứ tự các lệnh gán không quan trọng Mọi thay đổi bên phải của bất cứ ngõ vào sẽ
lập tức thay đổi bên trái của các ngõ ra
Module instantiations
Những khai báo module là những khuôn mẫu mà nó được tạo nên từ các đối
Trang 24GVHD: PGS.TS Phạm Ngọc Nam Page 17 HVTH: Đào Minh Thành
tượng thực tế (instantiation) Các module đơn cử bên trong các module khác, và mỗi
dẫn chứng tạo một đối tượng độc nhất từ khuôn mẫu Ngoại trừ đó là module mức
trên là những dẫn chứng từ chính chúng Các port của module ví dụ phải thỏa những
định nghĩa trong khuôn mẫu Đây là mặt lý thuyết: bằng tên, sử dụng dấu chấm (.)
”.tên port khuôn mẫu (tên của wire kết nối đến port)” Bằng vị trí, đặt những port ở
những vị trí giống nhau trong danh sách port của cả khuôn mẫu lẫn instance
• Hành vi hoặc thủ tục được đề cập ở bên dưới
Các lệnh thủ tục Verilog được dùng tạo một mẫu thiết kế ở mức cao hơn Chúng chỉ
ra những cách thức mạnh của vệc làm ra những thiết kế phức tạp Tuy nhiên, những
thay đổi nhỏ n phương pháp mã hóa có thể gây ra biến đổi lớn trong phần cứng Các
lệnh thủ tục chỉ có thể được dùng trong những thủ tục
Những chỉ định theo thủ tục:
Là những chỉ định dùng trong phạm vi thủ tục Verilog (khối always và initial) Chỉ
biến reg và integers (hoặc chọn đơn bit/ nhóm bit của chúng hoặc kết nối thông tin)
có thể được đặt bên trái dấu ‘=’ trong thủ tục Bên phải của chỉ định là một biểu
thức mà có thể dùng bất cứ dạng toán tử nào
Delay trong chỉ định:
Trong chỉ định trễ ∆t là khoảng thời gian trải qua trước khi một lệnh được thực thi
và bên trái lệnh gán được tạo ra Với nhiều chỉ định trễ (intra-assignment delay),
bên phải được định giá trị trực tiếp nhưng có một delay của ∆t trước khi kết quả
được đặt bên trái lệnh gán Nếu thêm một quá trình thay đổi nữa cạnh bên phải tín
Trang 25GVHD: PGS.TS Phạm Ngọc Nam Page 18 HVTH: Đào Minh Thành
hiệu trong khoảng thơi gian ∆t, thì không cho kết quả ở ngõ ra Delay không được
hỗ trợ bởi các công cụ
Cấu trúc chương trình dùng ngôn ngữ Verilog
// Khai báo module
Module tên chương trình (tên biến I/O); // tên chương trình trùng tên file.v
Input [msb:lsb] biến;
Output [msb:lsb] biến;
Reg [msb:lsb] biến reg;
Wire [msb: lsb] biến wire;
// Khai báo khối always, hoặc khối initial
… các lệnh …
1.2.2.4 Môi trường lập trình cho FPGA
Hiện nay, có nhiều nhà cung cấp sản phẩm FPGA trên thị trường như Altera,
Xilinx, Actel… Sản phẩm của môi nhà cung cấp lại có những ưu, nhược điểm riêng
do các hãng đều sản xuất theo công nghệ riêng của mình Chính vì vậy mỗi hãng lại
đưa ra một sản phẩm phần mềm riêng đi kèm làm môi trường thiết kế và nạp cho
chip FPGA của hãng đó như của Altera là Quartus II, Actel có Actel Libero còn
Xilinx có ISE Trong khóa luận này em chỉ xin giới thiệu về ISE – phần mềm hỗ trợ
cho Kit Virtex 4 của Xilinx mà em đã sử dụng để thực hiện khóa luận này
1.2.2.5 ISE
Hệ thống phần mềm ISE của Xilinx là một môi trường thiết kế tích hợp bao
gồm thiết kế chương trình, mô phỏng và thực hiện các thiết kế trên các thiết bị
FPGA hay CPLD ISE có thể tham gia vào việc điều khiển mọi giai đoạn trong quy
trình thiết kế.Thông qua giao diện của ISE, người dùng có thể can thiệp vào các
Trang 26GVHD: PGS.TS Phạm Ngọc Nam Page 19 HVTH: Đào Minh Thành
thiết kế và sử dụng các công cụ thực hiện thiết kế Ngoài ra người dùng còn có thể
can thiệp vào các file hay tài liệu có liên quan đến project đang thiết kế
Giao diện phần mềm ISE
Hình 1.5: Giao diện phần mềm ISE
Cửa sổ nguồn
Cửa sổ này bao gồm các file nguồn của 1 project (gồm các file được viết
hoặc các file có sẵn được đưa vào project) Trong cửa sổ này có một danh sách mà
qua đó người dùng có thể chọn các file nguồn cho các mục đích thiết kế cụ thể như
tổng hợp, thực thi hay mô phỏng
Cửa sổ xử lí
Cửa sổ này cho ta biết các thiết kế đã sẵn sàng để chạy (bao gồm cả mô
phỏng và thực thi) hay chưa (ví dụ khi bạn muốn chạy một thiết kế trong file nguồn
đã chọn) Để chạy một thiết kế, ta click đúp vào thiết kế đó, khi thiết kế đã được
thực thi thành công, một dấu tích xanh sẽ xuất hiện bên cạnh thiết kế đó Khi chạy
một thiết kế, ISE sẽ tự động chạy các thiết kế nhỏ hỗ trợ cho thiết kế đó
Trang 27GVHD: PGS.TS Phạm Ngọc Nam Page 20 HVTH: Đào Minh Thành
1.2.2.6 Các bước để tạo ra một thiết kế với ISE
- Tạo một Project
Chọn File > New Project…xuất hiện thuật sĩ tạo Project mới
Gõ tên Project trong trường Project Name field
Chọn đến thư mục muốn chứa Project rồi chọn Next
Chú ý rằng HDL phải được lựa chọn từ danh sách Top-Level Source Type,
các thông số khác chọn như trong hình 7
Hình 1.6: Các lựa chọn tạo project với Virtex 4
- Tạo mã nguồn VHDL
Để tạo ra file mã nguồn VHDL cho Project ta làm như sau:
Chọn New Source trong New Project Wizard
Chọn kiểu mã nguồn VHDL Module
Gõ từ bàn phím tên của file mã nguồn là counter (ví dụ là tạo ra mã nguồn
cho counter)
Trang 28GVHD: PGS.TS Phạm Ngọc Nam Page 21 HVTH: Đào Minh Thành
Quan sát thấy rằng hô kiểm tra Add to project được lựa chọn
Kích Next
Khai báo các cổng cho bộ counter bằng cách điền các thông tin như hình
dưới đây:
Hình 1.7: Khai báo các cổng cho một ví dụ tạo một counter 4 bit
Kich Next cho tới khi kết thúc và một file VHDL được tạo ra với các khai
báo ban đầu là các cổng in, out…
Từ đây ta có thể viết mã nguồn VHDL cho bộ counter nhưng ta cũng có thể
lấy counter trong ví dụ có sẵn của ISE Để sử dụng ví dụ này ta làm như sau:
Mở ví dụ bằng cách: Edit > Language Template…
Dùng biểu tượng “+” duyệt đến mã nguồn của ví dụ như sau: VHDL >
Couter>Simple Counter
Để dùng lựa chọn Simple Counter ta chọn Edit > Use in File hoặc chọn nút
Use Template in File trên Toolbar
Đóng cửa sổ Language Template
Như vậy mã VHDL trong ví dụ đã được chèn vào file mã nguồn mà ta muốn tạo
Trang 29GVHD: PGS.TS Phạm Ngọc Nam Page 22 HVTH: Đào Minh Thành
Để chương trình này có thể chạy đúng được ta phải quan sát và sửa lại một
số chỗ cho phù hợp với khai báo ban đầu Đó là những vị trí mà chương trình đã
đánh dấu trong dấu “< >” để cuối cùng ta được file mã nguồn có nội dung như sau:
Ta có thể dùng chức năng mô phỏng của ISE để kiểm tra chức năng của thiết kế vừa
được tạo ra:
Trang 30GVHD: PGS.TS Phạm Ngọc Nam Page 23 HVTH: Đào Minh Thành
Tạo dạng sóng muốn kiểm tra ta làm như sau:
Chọn file Counter từ cửa sổ Source
Tạo một test bench từ Project > New Source
Trong cửa sổ New Source Wizard chọn Test Bench WaveForm và gõ từ bàn phím
counter_tbw trong trường tên file rồi kick Next cho đến khi xuất hiện cửa sổ:
Hình 1.8: Thiết lập các tham số mô phỏng
Đặt các thông số như hình 9 và kích Finish:
Để chạy mô phỏng ta thiết lập các thông số như khoảng thời gian đếm tiến, thời
gian đếm lùi bằng cách kích chuột vào vị trí mà ta muốn cho kết thúc đếm tiến khi
đó dạng xung bắt đầu từ đó sẽ ở vị trí logic 0 và bắt đầu đếm lùi Ta có thể tùy chọn
các khoảng đếm tiến hoặc lùi theo ý muốn
Trang 31GVHD: PGS.TS Phạm Ngọc Nam Page 24 HVTH: Đào Minh Thành
Hình 1.9: Thiết lập thời gian đếm tiến, lùi cho counter
Sau đó đóng cửa sổ này lại và chuyển sang bước mô phỏng
Mô phỏng
Tại cửa sổ Source ta chọn Behavioral Simulation và chọn counter_tbw
Tại cửa sổ Process ta kích chuột vào dấu “+” rồi kích đúp vào Generate Expected
Simulation Results để thực hiện mô phỏng Ta được kết quả như sau:
Hình 1.10: Kết quả mô phỏng của counter
1.2.2.10 Tạo ràng buộc thời gian
Bước này sẽ tạo ra ràng buộc về thời gian, là thời gian mà ta ràng buộc khi
chạy trong FPGA
Chọn Synthesis/Implementatorn
Chọn file nguồn counter HDL
Kích vào dấu “+” ở User Constraints và chọn Create Timing Constraints
Sau bước này sẽ tạo ra cho bạn file.UCF và ta có thể thiết lập các thông số
theo tính toán mà thiết kế sẽ phải đáp ứng
Trang 32GVHD: PGS.TS Phạm Ngọc Nam Page 25 HVTH: Đào Minh Thành
1.2.2.11 Gán chân
Chọn file nguồn là counter trên cửa sổ Source
Chọn Assign Package Pins trong cửa sổ Process
Từ đây ta có thể gắn chân để có thể đưa thiết kế vào phần cứng thật Tùy
từng dòng cụ thể mà ta đặt chân căn cứ vào bảng chân được cung cấp bởi nhà sản
xuất
Kết thúc bước này ta có thể đưa thiết kế vào phần cứng và quan sát trên các lối vào
ra của phần cứng bằng những thiết bị hỗ trợ quan sát như giao động ký hay đèn
LED
Trang 33GVHD: PGS.TS Phạm Ngọc Nam Page 26 HVTH: Đào Minh Thành
Chương 2: GIỚI THIỆU VỀ MÁY THEO DÕI BỆNH NHÂN ĐA THÔNG SỐ
2.1 Khảo Sát Hệ Thống Monitor đa thông số
Các thiết bị theo dõi tại giường có các cấu hình khác nhau phụ thuộc vào các
nhà sản xuất Chúng được thiết kế để theo dõi các thông số khác nhau nhưng đặc
tính chung giữa tất cả các máy đó là khả năng theo dõi liên tục và cung cáp sự hiển
thị rõ nét đường sóng ECG và nhịp tim Một số thiết bị còn bao gồm khả năng theo
dõi áp suất, nhiệt độ, nhịp thở, nồng độ oxi bão hòa SpO2, …
Hình 2.1 Sơ đồ khối thiết bị theo dõi bệnh nhân
Sự xuất hiện của các máy vi tính đã đánh dấu sự mở đầu của một hướng phát
triển cơ bản mới trong các hệ thống theo dõi bệnh nhân Những hệ thống như vậy
có một khối CPU chính có khả năng tổng hợp, ghi nhận bản chất của nguồn tín hiệu
và xử lý chúng một cách thích hợp Phần cứng chịu trách nhiệm cho việc phân tích
Trang 34GVHD: PGS.TS Phạm Ngọc Nam Page 27 HVTH: Đào Minh Thành
tín hiệu sinh lý, hiển thị thông tin và tương tác với người sử dụng trên thực tế là một
tập hợp các khối phần sụn được thực hiện dưới chương trình vi tính Phần sụn đem
lại cho hệ thống tính chất của nó các công tắc, nút, núm xoay,và đồng hồ đo được
thay thế bằng màn hình sờ ( cảm ứng) Trong đó:
ECG: Electrocardiogram – điện tâm đồ RESP:
Respiration – hô hấp
SpO2: Nồng độ Oxi trong máu
BP: Blood Pressure – huyết áp
TEMP: Temperature – nhiệt độ NIBP:
Non-Invasive Blood Pressure – huyết áp gián tiếp
Khối dầu vào gồm có ba khối chính là khối ECG/RESP, khối SpO2/BP/TEMP, khối
NIBP
Hình 2.2: Sơ đồ khối máy theo dõi bệnh nhân đa thông số
Trang 35GVHD: PGS.TS Phạm Ngọc Nam Page 28 HVTH: Đào Minh Thành
2.2 Chức năng của monitor đa thông số
2.2.1 Hiển thị tín hiệu điện tim
Thực hiện đo một kênh tín hiệu ECG và đường sóng hô hấp( RESP) hình(3.2)
Các mạch trở kháng cao và các bộ hãm khí bảo vệ các bộ khuếch đại đầu vào khỏi
sốc tim và các tín hiệu nhiễu tần sô cao từ các điện cực gắn trên người bệnh nhân
Các mạch đầu vào của khối này được cách ly với các mạch còn lại bằng các bộ nối
quang và máy biến thế Khối này nhận một kênh tín hiệu ECG từ các đạo trình 3
điện cực hoặc 5 điện cực Phụ thuộc vào cài đặt phần mềm mà bộ chọn đạo trình ở
khối này chọn đạo trình phù hợp từ 3 đến 5 điện cực đặt trên người bệnh nhân
Mạch xử lý đường sóng hô hấp có khả năng đo trở kháng của các tín hiệu đầu vào
Sự thay đổi trở kháng của các tín hiệu đầu vào gây ra sự thay đổi điện áp của tín
hiệu đầu ra và dựa vào sự thay đổi điện áp này máy tính ra số nhịp thở của bệnh
nhân
Hình 2.3: Sơ đồ mạch khối EGG/RESP
Trang 36GVHD: PGS.TS Phạm Ngọc Nam Page 29 HVTH: Đào Minh Thành
2.2.2 Hiển thị tín hiệu SPO2
Khối này được dùng để đo một kênh đường sóng huyết áp, một kênh đường
sóng nhiệt độ và giá trị của SpO2 Các mạch đầu vào trên bảng này được cách ly
khỏi các mạch còn lại bằng các bộ nối quang và máy biến thế Thường ở trên khối
này có một công tắc ngầm dùng để cài đặt các thông số cần đo trong khối Trong
mạch xử lý nhiệt độ, tín hiệu đầu vào từ các thermistor được lọc qua bộ lọc thông
thấp để loại bỏ nhiễu tần sô cao Bộ ghép kênh sau đó sử dụng đồng thời điện áp
tham chiếu 270C, điện áp định cỡ cho 370C và tín hiệu nhiệt độ cơ thể từ các
thermistor Trong mạch xử lý huyết áp(hình 3.4) bộ kích thích điều khiển hoạt động
của đầu đo huyết áp Những tín hiệu đầu vào từ transducer được khuếch đại và sau
đó được lọc qua bộ lọc thông thấp Mạch xử lý SpO2 (hình 3.3) bao gồm 3 mạch
nhỏ: mạch điều khiển LED, mạch phát điện ID đầu đo, và mạch xử lý tín hiệu đầu
vào Mạch điều khiển LED điều khiển hoạt động của LED ở trong đầu đo Mạch
phát hiện ID đầu đo tìm dạng và sự hiện diện của đầu đo Trong mạch xử lý tín hiệu
đầu vào, tín hiệu đầu vào từ photodiode được khuếch đại và được lọc qua bộ lọc
thông thấp Trong quá trình này, một phần tín hiệu khi không dò được ánh sáng
đượcgiữ lại như đường gốc của tín hiệu
Hình 2.4: Sơ đồ nguyên lý khối Spo2
Trang 37GVHD: PGS.TS Phạm Ngọc Nam Page 30 HVTH: Đào Minh Thành
Hình 2.5 Sơ đồ khối bộ xử lý tín hiệu cảm biến Spo2
2.2.3 Hiển thị tín hiệu huyết áp
Sau khi tín hiệu nhận từ đầu đo huyết áp, khối này khuếch đại các tín hiệu đầu
vào rồi sau đó cho qua các bộ lọc và đau vào bộ ghép kênh Các tín hiệu từ bộ ghép
kênh sau đó được đưa vào bảng mạch mẹ để xử lý tiếp Trong khối này có một bộ
điều khiển van an toàn để kiểm tra trạng thái của van an toàn Van an toàn được
thiết kế sao cho nó tự động làm giảm bớt áp suất của Cuff khi áp suất này vượt quá
300mmHg Van này giúp bảo vệ bệnh nhân trong trường hợp mạch an toàn không
dừng tăng áp suất của cuff khi áp suất đã đạt đến 300mmHg
Hình 2.6: Sơ đồ khối khối NIBP
Trang 38GVHD: PGS.TS Phạm Ngọc Nam Page 31 HVTH: Đào Minh Thành
2.3 Cơ sở lý thuyết của hệ thống monitor đa thông số
2.3.1 Phép đo nhịp tim(HR)
Nhịp tim được xác định là số lần tim đập trong một phút Việc theo dõi nhịp
tim là để xác định xem là tim đập nhanh hay chậm nhịp tim lấy được từ sự khuếch
đại xung ECG và đo bằng cách lấy trung bình hay khoảng thời gian tức thì giữa 2
đỉnh R liền nhau Dải đo từ 0-300 nhịp/phút Các điện cực ECG ngực hay chi được
sử dụng là các cảm biến Đo nhịp tim gồm có phép đo trung bình, phép đo tức thì
Phép đo trung bình:
Dựa trên cơ sở chuyển đổi mỗi đỉnh sóng R của ECG thành một xung có biên
độ và thời gian cố định và sau đó xác định dòng trung bình từ những xung đó
Chúng kết hợp mạch được thiết kế một cách đặc biệt để chuyển đổi tần số sang điện
áp để hiển thị nhịp tim trung bình theo đơn vị nhịp/ phút
Phép đo tức thì:
Nhịp tim tức thì giúp cho viếc phát hiện ra sự rối loạn nhịp và cho phép theo
dõi kịp thời các trường hợp tim mạch khẩn cấp khi chúng mới chớm xuất hiện Hình
3.9 cho thấy nguyên lý của một dạng dụng cụ đo nhịp tim tức thì Nó cung cấp đầu
ra ổn định giữa các xung, biểu diễn tần số tức thì giữa hai xung trước Điện áp đầu
ra giữa R2 và R3 tỉ lệ với tần số xung của R1 và R2 tức là tỉ lệ với 1/T1
Đầu ra giữa R3 và R4 tỉ lệ với 1/T2, nếu nhịp tim trở nên thấp hơn ( với
T4>T3) và xung không xuất hiện tại thời điểm thời gian bằng T3 sau R4, đầu ra bắt
đầu giảm và hiệu chỉnh thành giá trị mới Kỹ thuật này có ưu điểm là thiết kế đơn
giản nhưng nó không cho ra đầu ra tuyến tính cho một dải tần số rộng
Một kỹ thuật khác được dùng rộng rãi cho việc đo nhịp tim tức thì bao gồm 2
tụ, một được sử dụng như tụ đo thời gian và tụ kia được sử dụng như một tụ bộ nhớ
Hoạt động phụ thuộc vào việc nạp tụ đo theo chu kì thời gian giữa hai quãng thời
gian cuối, trong khi đó “tụ bộ nhớ” hiển thị giá trị được lưu trữ tương ứngvới quãng
thời gian giữa hai quãng thời gian cuối Ở đây đầu ra không tuyến tính Cisek
Trang 39GVHD: PGS.TS Phạm Ngọc Nam Page 32 HVTH: Đào Minh Thành
(1972) đưa ra một thiết kế cho một Cardiotachometer xung – xung tuyến tính sử
dụng kĩ thuật này Trong mạch của ông mạch đo thời gian được nạp theo hàm
hypecbol giã hai xung liên tục tạo ra giá trị điện áp cuối, có quan hệ tuyến tính với
tần số xung tức thời
Hình 2.7: Nguyên lý chuyển đổi tần số sang điện áp để theo dõi nhịp tim tức thì
Hình trên là sơ đồ khối của một Cardiotachometer ECG được lấy mẫu trong mỗi
bước 2ms Sự chuyển tiếp nhanh của các thành phần biên độ cao được làm suy yếu
đi băng một bộ hạn chế tỉ lệ xoay, bộ này làm giảm biên độ nhiễu do máy tạo nhịp
tim gây ra và làm giảm khả năng tính những nhiễu này thành các nhịp đập của tim
Hai mẫu 2ms gần nhau được lấy trung bình và kết quả là một chuỗi mẫu 4ms được
tạo ra Để loại bỏ những thành phần tần số cao không cần thiết của tín hiệu, người ta
dùng một bộ lọc Butterworth xung phản hồi không giới hạn tần số 30Hz Bộ lọc này
cho ra các mẫu 8ms trong quá trình hoạt động Bất kì một sóng DC nào cuối cùng
cũng phải qua một bộ lọc so sánh QRS, bộ dò nhịp đập nhận biết các tổ hợp QRS
trong các giá trị của đường điện tim đang được ghi Nếu giá trị này vượt quá giá trị
ngưỡng thì một nhịp tim được đếm Ngưỡng này được hiệu chỉnh tự động phụ thuộc
vào giá trị của biên độ sóng QRS và khoảng thời gian giữa các tổ hợp QRS Tiếp
theo mỗi nhịp đập là chu kì ức chế 200ms được đưa vào, trong qua trình dó không
có nhịp tim nào được nhận ra Điều này làm giảm khả năng sóng T được tính nhầm
Chu kì ức chế cũng được duy trì biến đổi như một phương trình nghích đảo giới hạn
nhịp tim trên với các giới hạn nhịp tim cao thấp hơn thi chu kì ức chế dài hơn
Trang 40GVHD: PGS.TS Phạm Ngọc Nam Page 33 HVTH: Đào Minh Thành
Hình 2.8: Sơ đồ khối một máy
2.3.2 Phép đo nhịp mạch
Nhịp mạch được xác định là số lần máu được đẩy vào trong động mạch
Theo dõi thông số nhịp mạch là để biết xem tim có đẩy được máu đi lên động mạch
hay không Để đo nhịp mạch người ta sử dụng một transducer điện quang thích hợp
để đặt lên ngón tay hay dái tai Tín hiệu từ tế bào quang học được khuếch đại và
được lọc và khoảng thời gian được đo giữa hai xung liên tục Dải đo từ 0-250bpm
Theo dõi xung ngoại vi có ích hơn và độc lập hơn so với việc tính nhịp tim từ
đường điện tim trong trường hợp tắc tim bởi vì nó có thể ngay lập tức chỉ ra sự
ngừng lưu thông máu trong các chi Thêm vào đó các Transducer điện quang rất dễ
dùng so với ba điện cực điện tim Biên độ của tín hiệu thu được bằng phương pháp
này cũng đủ lớn để so sánh với tín hiệu điện tim và do đó nó cho ra tỉ lệ tín hiệu –
nhiễu tốt hơn Tuy nhiên, kĩ thuật này chịu ảnh hưởng khá lớn của các tác nhân
nhiễu do chuyển động
2.3.3 Phép đo huyết áp
Huyết áp là một thông số phổ biến và hiệu quả nhất trong y tế để thực hành
sinh lý Thực hiện xác định giá trị lớn nhất và giá trị nhỏ nhất của áp suất máu trong
mỗi chu kì nhịp tim, bổ xung thêm thông tin về các thông số sinh lý, hỗ trợ cho việc
chẩn đoán để đánh giá điều kiện củ mạch máu và một vài khía cạnh về hoạt động
của tim Có nhiều phương phương pháp đo huyết áp khác nhau, nhưng phân ra làm