1. Trang chủ
  2. » Luận Văn - Báo Cáo

Ứng dụng fpga trong thiết kế máy theo dõi bệnh nhân đa thông số

114 20 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 114
Dung lượng 2,46 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 2

GVHD: 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 3

GVHD: 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 4

GVHD: 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 5

GVHD: 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 6

GVHD: 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 7

GVHD: 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 8

GVHD: 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 9

GVHD: 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 10

GVHD: 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 11

GVHD: 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 12

GVHD: 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 13

GVHD: 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 14

GVHD: 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 15

GVHD: 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 16

GVHD: 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 17

GVHD: 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 18

GVHD: 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 19

GVHD: 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 20

GVHD: 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 21

GVHD: 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 22

GVHD: 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 23

GVHD: 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 24

GVHD: 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 25

GVHD: 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 26

GVHD: 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 27

GVHD: 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 28

GVHD: 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 29

GVHD: 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 30

GVHD: 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 31

GVHD: 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 32

GVHD: 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 33

GVHD: 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 34

GVHD: 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 35

GVHD: 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 36

GVHD: 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 37

GVHD: 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 38

GVHD: 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 39

GVHD: 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 40

GVHD: 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

Ngày đăng: 22/01/2021, 13:38

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w