Vấn đề:
Bản đồ án này đã trình bày đầy đủ 
về cơ sở lý thuyết cũng như thiết kế 
dụng cụ tựđộng phân tích tín hiệu điện tim trên cơ sở DSP56002. Trong thời 
gian làm đồ án tôi đã hoàn thành được những công việc sau: 
 ã Tìm hiểu về tín hiệu điện tim, các chuyển đạo và các tín hiệu bệnh 
phục vụ cho mục đích thiết kế dụng cụ tựđộng phân tích tín hiệu điện tim. 
 ã Tìm hiểu về phương pháp nhận dạng tín hiệu điện tim và các thiết bị 
ghi điện tim đã được sử dụng trên thị trường 
 ã Thiết kế và chế tạo dụng cụ tựđộng phân tích tín hiệu điện tim trên 
cơ sở sử dụng bộ vi xử lý tín hiệu số DSP56002 do hãng Motorola sản xuất 
có sẵn trong bộ môn, thực hiện thu thập tín hiệu bất bình thường khác. 
 ã Thiết kế chế tạo được máy phát mô phỏng tín hiệu điện tim bình 
thường và một số loại bệnh. Các phần việc cần làm tiếp 
 theo để hoàn thiện thiết bị như: nhận 
dạng,lập thư viện chuẩn và thử nghiệm trên người bệnh cần một thời gian 
nghiên cứu và thực nghiệm nhiều hơn. 
 Trong thời gian tới, nếu có điều kiện tôi sẽ nghiên cứu để hoàn thiện và 
mở rộng một số tính năng của thiết bị. 
 Với các ứng dụng của thiết bị này sẽ là tiền đề cho việc hướng tới chế 
tạo dụng cụ thực hiện hoàn toàn tựđộng quá trình phân tích và nhận dạng tín 
hiệu có thể làm việc với các tín hiệu ECG thực thu thập trên cơ sở người 
bệnh thay thế cho phương pháp Holter đang được sử dụng hiện nay. 
 Các dụng cụ tựđộng này không chỉđược dùng trong lĩnh vực y tế, mà 
còn có thể mở rộng ứng dụng trong các lĩnh vực đo lường khác.
Đồ án dài 81 trang ,chia làm 3 chương
                
              
                                            
                                
            
 
            
                 82 trang
82 trang | 
Chia sẻ: banmai | Lượt xem: 2257 | Lượt tải: 1 
              
            Bạn đang xem trước 20 trang tài liệu Tín hiệu điện tim và hệ thống các chuyển đạo, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
truyền số liệu nối tiếp. Số liệu các bit được dịch ra 
ngoài có thể là 8, 12, 16, 24 bit. Số liệu được dịch ra theo hướng các bit có 
trọng số lớn trước nếu như SHFD bằng 0 haycác bit có trọng số nhỏ trước nếu 
SHFD bằng 1. 
+) Thanh ghi số liệu truyền của SSI (TX) 
Tx là một thanh ghi 24 bit chỉ viết. Khi cần truyền số liệu thì người lập 
trình viết số liệu vào trong thanh ghi này sau đó số liệu tự động truyền tới 
thanh ghi dịch truyền. DSP bị ngắt bất cứ khi nào thanh ghi TX trống rỗng 
nếu như ngắt tương ứng được cho phép. 
2. Bộ timer và đếm sự kiện của DSP56002 
Kể từ Version thứ hai các bộ phận DSP56002 có thêm bộ timer và bộ đếm 
sự kiện. Bộ timer có thể sử dụng xung nhịp bên trong hay bên ngoài và có thể 
làm ngắt bộ xử lý sau khi có một số lượng nhất định các sự kiện bên ngoài 
hay có thể gửi tín hiệu tới một thiết bị bên ngoài sau khi đếm các sự kiện bên 
trong. 
Bộ timer nối tới các thiết bị bên ngoài qua hai chân hai chiều do TIO. Khi 
TIO là một đầu vào thì chức năng đếm các sự kiện bên ngoài được sử dụng. 
Khi TIO là một đầu ra thì nó có tác dụng đưa tín hiệu ra bên ngoài sau những 
 35
khoảng thời gian nhất định. Khi không được sử dụng cho bộ timer thì TIO có 
thể được sử dụng như một chân vào/ra mục đích chung. 
+) Cấu trúc bộ timer và đếm sự kiện 
Hình (2-3) là sơ đồ khối của timer và đếm sự kiện. Nó bao gồm một thanh 
ghi điều khiển/ trạng thái 24 bit có thể đọc/viết (TDSR), một thanh ghi đếm 
(TCR) 24 bit đọc/viết, một bộ đếm 24 bit và một mạch lôgic cho việc phát 
sinh ngắt và lựa chọn xung nhịp. 
+) Thanh ghi đếm (TCR) của timer 
Thanh ghi TSR chứa giá trị (được xác định bởi chương trình của người sử 
dụng) được nạp vào bộ đếm khi bộ timer được phép hoạt động (TE=1) hoặc 
khi bộ đếm vừa giảm đến 0 và một sự kiện mới xuất hiện. Nếu TCR được nạp 
với giá trị n bộ đếm sẽ được nạp lại sau (n+1) sự kiện. Nếu bộ timer bị cấm 
hoạt động (TE=0) và chương trình viết lên TCR thì giá trị viết lên TCR vẫn 
được giữ ở đó nhưng không xuất hiện được nạp vào bộ đệm cho đến khi bộ 
timer được phép hoạt động. 
+) Thanh thái (TCSR) của timer. 
Thanh ghi TCSR dùng để điều khiển bộ timer đồng thời ghi lại trạng thái 
của nó. Sau đây mô tả từng bit cụ thể của thanh ghi này. 
24
Thanh ghi điều 
khiển/ trạng thái 
24 bit (TCSR) 
Thanh ghi đếm 
24 bit (TCSR) 
Bộ đếm 24 bit 
Lựa chọn xung nhịp 
Bộ ngắt thời gian 
CLK/2 
TIO 
Hình 2-3. Sơ đồ khối bộ Timer và đếm sự kiện 
24 24 
24 
3 
 36
Bit 0 (TE) của TCSR gọi là bit cho phép timer hoạt động. Khi ta đặt TE=1 
thì bộ timer được phép hoạt động và được nạp với giá trị chứa trong thanh 
ghi. Khi xoá bit TE thì bộ timer không hoạt động. Việc reset phần cứng hay 
phần mềm sẽ xoá bit TE. 
Bit 1 (TIE) của TCSR gọi là cho phép ngắt timer. Khi TIE=1 thì các ngắt 
timer sẽ xuất hiện sau khi bộ đếm giảm xuống tới 0 và một sự kiện mới xuất 
hiện. Khi TIE =0 thì ngắt timer bị cấm. Việc reset phần cứng hay phần mềm 
sẽ xoá TIE. 
3. Giới thiệu về tập lệnh và các trạng thái của bộ vi xử lý DSP 56002 
3.1 Quá trình thực hiện: 
 Quá trình thực hiện thông tin của DSP 56002qua 3 giai đoạn pipeline 
cho phép thực hiện trong một chu kỳ lệnh. Được thực hiện bằng ngôn ngữ 
assembler hoặc các ngôn ngữ bậc cao khác nhưng yêu cầu phải có chương 
trình dịch. 
 Chu kỳ lệnh 
Hoạt động 1 2 3 4 5 6 7 
Tìm lệnh F1 F2 F3 F3e F4 F5 F6 
Giải mã D1 D2 D3 D3e D4 D5 
Thực hiện E1 E2 E3 E3e E4 
Bảng 2 – 4. 
Quá trình thực hiện của cấu trúc pipeline như bảng trên. Đầu tiên là tìm 
lệnh sau đó là giải mã lệnh và cuối cùng là thực hiện lệnh. Quá trình thực hiện 
lần lượt gối đầu lên nhau. 
 Chế độ chương trình chỉ ra ở hình 2 - 4 của bộ VXL DSP 56002 bao gồm 
3 khối chức năng hoạt động song song đó là khối số học và logic (ALU), khối 
phát địa chỉ chương trình (AGU) và khối điều khiển chương trình (CPU). 
 37
3.2 Cấu trúc hệ lệnh của DSP 560002. 
Đặc tính của hệ lệnh theo kiểu Mnemonic (Gợi nhớ) như Wait ,Stop vv.. 
Đơn vị logic và số học (Data ALU) 
các thanh ghi dữ liệu vào 
 47 X 0 47 Y 0 
X1 X0 Y1 Y0 
 23 0 23 0 23 0 23 0 
 các thanh chứa accummulator 
 A B 
 55 0 55 
0 
* A2 A1 A0 * B2 B1 B0 
 23 8 7 0 23 0 23 0 23 8 7 0 23 0 23 
 Khối phát địa chỉ chương trình (AGU) 
 23 16 15 0 23 16 15 0 23 16 15 0 
 * R7 * N7 * M7 
 * R6 * N6 * M6 
 * R5 * N5 * M5 
 * R4 * N4 * M4 
 * R3 * N3 * M3 
 * R2 * N2 * M2 
 * R1 * N1 * M1 
 Các thanh ghi Các thanh ghi Các thanh ghi 
 địa chỉ con chỏ địa chỉ offset modifer 
 Khối điều khiển chương trình(PCU) 
 Thanh ghi lặp địa chỉ(LA) Thanh ghi đếm lặp(LC) 
 23 16 15 0 23 16 15 0 
* * 
Đếm ch/trình(PC) T/ghi trạng thái(SR) T/ghi chế độ hoạt động(OMR) 
23 16 15 0 23 6 15 8 7 0 23 8 7 6 5 4 3 2 1 0 
* * * * * MB MA 
32 SSH 16 15 SSL 0 23 16 15 0 
0
15
*
Stack pointer(SP) 
Hệ thống stack
Hình 2-4. Cấu trúc của chế độ chương trình của DSP 56002 
 38
- Cú pháp lệnh của DSP được chia thành 4 phần 
Lệnh phải được thực hiện từ trái sang phải trong cùng một chu kỳ lệnh. 
Một số đặc điểm của DSP là cho phép thực hiện các dịch chuyển song song 
nhưng phải theo nguyên tắc dịch chuyển song song là có thể chung nguồn 
nhưng không chung điểm tới. 
- Tập lệnh của DSP gồm 62 lệnh chia thành 6 nhóm : 
+ Nhóm lệnh số học: ADD,ABS,ADC.. 
+ Nhóm lệnh dịch chuyển: MOVE,MOVEP,LUA.. 
+ Nhóm lệnh logic :ANDI,EOR,NOT.. 
+ Nhóm lệnh vòng lặp: DO,REPEAT.. 
+ Nhóm tác động đến từng bit :BSET,BCLEAR.. 
+ Nhóm lệnh điều khiển chương trình: DEBUG,JMP.. 
II. Giới thiệu cấu trúc phần cứng của Card DSP 56002EVM : 
Cấu trúc phần cứng bao gồm: Card DSP 56002EVM được ghép nối với 
máy tính thông qua cổng RS232. 
Tín hiệu tương tự được đưa vào qua hai bộ biến đổi A/D để biến tín hiệu ở 
dạng số, sau đó đưa vào DSP nhờ cổng truyền tin nối tiếp SSI để xử lý. Sau 
khi xử lý tín hiệu, bộ vi xử lý DSP56002 sẽ đưa tín hiệu ra cổng SSI đến bộ 
biến đổi D/A để biến thành tín hiệu tương tự ở đầu ra hệ thống. 
2.1. Card DSP 56002EVM 
 Card DSP56002EVM là một hệ thống xử lý tín hiệu hoàn chỉnh.(Hình 2-5) 
2.2.1. Cấu tạo gồm: 
- Một bộ vi xử lý DSP56002. 
- Một bộ nhớ Ram mở rộng. 
- Một bộ mã hoá và giải tín hiệu CS4215 (codec) có chứa hai bộ biến đổi 
tương tự số (D/A) và hai bộ biến đổi tuơng tự (D/A). 
- Trên card có một vị trí dành cho bộ nhớ EFPROM của người sử dụng. 
- Việc ghép nối giữa máy tính và card DSP56002EVM được thực hiện thông 
qua cổng RS232. 
 39
- Trong đó ta thấy các bus địa chỉ và dữ liệu cổng A của DSP56002 được nối 
thông qua J2 và J4 để mở rộng bộ nhớ với bộ nhớ RAM bên ngoài 
(FSRAM 32*8). 
Tín hiệu để chọn một bộ nhớ hay cả ba là được quyết định bởi tổ hợp tín hiệu 
WR, RD và DAB15. Ngoài ra trên card cũng có vị trí cho EFPROM của 
người sử dụng để nạp chương trình từ bộ nhớ EFPROM nếu muốn. 
- Các chân NMI, IRQA, IRQB của DSP được nối thông qua bộ chuyển mạch 
74HC157AD để điều khiển các ngắt từ bên ngoài tác động vào hay thiết lập 
các quá trình đợi của DSP. 
- Các bus điều khiển của cổng A được nối thông qua J11 (Bus-control) để đối 
thoại với các thiết bị bên ngoài. 
- 15 chân của cổng B được nối thông qua J7 để cho phép thiết bị ngoại vi đối 
thoại với DSP. 
- 9 chân của cổng C được nối thông qua J10 (Port C) cho phép sử dụng cho 
vào ra mục đích chung hoặc giao dịch nối tiếp đồng bộ hay không đồng bộ. 
Các chân này được sử dụng để đIều khiển thiết bị bên ngoài như 
Codec, các bộ biến đổi ADC và DAC. Các chân TX, RX của SCI được nối 
với bộ biến đổi đIện áp MAX232CSE để biến đổi tín hiệu tương tự từ 5V đến 
12V cung cấp cho RS232 thông qua J8 (DCE/DTE) tới OnCE và Terminal. 
- Nguồn cung cấp cho card EVM56002 được lấy từ nguồn điện 220V AC qua 
J1 (Power connector) tới cuộn biến áp thành 7-9V AC hoặc DC và được đưa 
qua bộ chỉnh lưu cầu đưa tới bộ biến đổi điện áp MC7805 để biến đổi thành 
điện áp 5V cung cấp cho DSP56002 và CS4215. 
2.2.2. Vi mạch mã hoá và giải mã 4215 
CS4215 là một chíp đơn, CMOS có hai kênh biến đổi A/D 16 bit và hai 
kênh biến đổi D/A 16 bit. CS4215 có các đặc tính sau đây: 
 40
J2
 DÀNH CHO EFPROM 
J4
32K*8 
FSRAM 
32K*8 
FSRAM 
32K*8 
FSRAM
IN 
HDPHNE 
OUT 
CS4215
J17
DSP 
56002 
J7 
J12
J13 
J11
J10
* Reset
HOST OnCE 
MUSIC 
source 
HEADPHONES 
LINE 
LEVEl 
Hình 2-5. Sơ đồ cấu trúc card DSP 
Được nối với cổng 
nối tiếp của PC 
 41
- Tần số lấy mẫu từ 4khz đến 50khz –Mã hoá tín hiệu 16 bit hay 8 bit. 
- Có hệ số khuếch đại cho tín hiệu vào tương tự có thể lập trình được. 
- Có các bộ tạo xung nhịp ở trên chíp. 
- Nguồn cung cấp 5V. 
- Có các bộ lọc trên chíp 
- Giao diện số nối tiếp. 
Cổng SSI của DSP 56002 được sử dụng để truyền số liệu từ hai bộ biến 
đổi A/D tới DSP 56002 và từ DSP 56002 tới hai bộ biến đổi D/A. Hình 1 
dưới đây mô tả cách nối CS4215 với cổng C của DSP 56002. 
2.2.3. Chế độ điều khiển của CS4215 
1. Chế độ điều khiển: 
Được sử dụng để chọn các chức năng của CS4215 bằng cách nạp vào 
các thanh ghi điều khiển của CS4215 c ác giá trị thích hợp. Để cho 
CS4215 làm việc ở chế độ điều khiển ta cần đặt chân D/C ở mức thấp, 
khi đó thông tin trên các chân SDIN và SDOUT của CS4215 là thông tin 
dùng để điều khiển CS4215. Có 8 thanh ghi điều khiển trong đó có hai 
thanh ghi chưa dùng đến ,còn lại 6 thanh ghi là: Thanh ghi trạng thái 
,thanh ghi định dạng số liệu ,thanh ghi điều khiển cổng nối tiếp ,thanh 
ghi kiểm tra ,thanh ghi điều khiển cổng song song và thanh ghi version 
của CS4215. 
SRD/PC7 
 SCI/PC4 
 STD/PC8 
 SC2/PC5 
SCK/PC6 
SCLK/PC2 
SDOUT 
RESET 
SDIN 
FSYNC 
TSIN 
SCLK 
D/C 
Hình 2 - 6. Nối giữa cổng C của DSP 56002 với CS4215 
 42
Trong phần này em không đi sâu giới thiệu từng bit của từng thanh ghi 
của CS4215 mà em chỉ muốn giới thiệu về từng thanh ghi và chức năng 
của chúng. 
- Thanh ghi trạng thái : 
Đây là thanh ghi 8 bit có chức năng nắm giữ quyền điều khiển chuyển 
đổi giữa chế độ điều khiển và chế độ truyền số liệu. Cho phép hoặc 
không cho phép khuyếch đại và qui định mức tín hiệu đầu ra headphone 
và speaker. 
- Thanh ghi định dạng số liệu : 
Là thanh ghi 8 bit có chức năng lựa chọn dạng số liệu ,tần số lấy mẫu tín 
hiệu ,cho phép hoặc không cho phép sử dụng bộ lọc thông cao để giảm 
nhiễu và lựa chọn chế độ mono,stereo. 
- Thanh ghi điều khiển cổng nối tiếp : 
Có chức năng cho phép hoặc không đưa ra số liệu nối tiếp ,lựa chọn số 
bit tương ứng trong một khung số liệu và lựa chọn nguồn xung nhịp ,chế 
độ master hoặc slave ,cho ta biết trạng thái của SCLK và FSYNC. 
- Thanh ghi kiểm tra: 
Quy định chức năng thực hiện quay vòng số – số hoặc quay vòng số – 
tương tự – số. Cho phép hoặc không kiểm tra vòng quay. Các bít kiểm 
tra phải được viết bằng 0. 
- Thanh ghi điều khiển cổng song song: 
Có chức năng thực hiện điều khiển vào/ra song song. Các bit dự trữ còn 
lại phải được viết bằng 0. 
- Thanh ghi version: 
Quy định chức năng lựa chọn số version của CS4215 là “C”,”D”, hoặc 
“E”. 
Ngoài ra còn 2 thanh ghi dự trữ 1 và 2 ; Khi chưa sử dụng thì các bit của 
các thanh ghi này phải được viết bằng 0. 
2. Chế độ truyền số liệu : 
Chế độ truyền số liệu được sử dụng trong suốt quá trình truyền số liệu 
giữa CS4215 và DSP56002. Việc điều khiển hệ số khuyếch đại, hệ số 
suy giảm, việc lựa chọn đầu vào cũng được chứa trong các dòng số liệu. 
Các bit có trọng số lớn nhất (MSB) được truyền hay nhận trước tiên. 
Tám thanh ghi số liệu là: 8 bit trọng số lớn nhất của kênh trái, 8 bit trọng 
số nhỏ nhất của kênh trái, 8 bit có trọng số lớn nhất của kênh phải, 8 bit 
có trọng số nhỏ nhất của kênh phải, 2 thanh ghi để đặt chế độ cho đầu ra, 
2 thanh ghi để đặt chế độ cho đầu vào. 
- Thanh ghi đặt chế độ cho đầu ra 1: 
Có chức năng đặt độ suy giảm ở đầu ra kênh trái, cho phép hoặc không 
cho phép đưa ra tín hiệu tương tự, và đầu ra headphone. 
 43
- Thanh ghi đặt chế độ đầu ra 2 : 
Có chức năng đặt độ suy giảm đầu ra kênh phải, cho phép hoặc không 
cho phép speaker và dữ liệu A/D. 
- Thanh ghi đặt chế độ đầu vào 1: 
 Có chức năng đặt hệ số khuyếch đại ở đầu ra kênh trái ,lựa chọn đầu 
vào, thông báo tín hiệu quá mức và lứa chọn vào ra song song. 
- Thanh ghi đặt chế độ đầu vào 2: 
Có chức năng đặt hệ số khuyếch đại đầu ra kênh phải, đặt hế số suy giảm 
tín hiệu đưa ra quan sát. 
 44
Chương II: THIẾT KẾ TÍNH TOÁN THIẾT BỊ 
I) Yêu cầu kĩ thuật : 
- Vì tín hiệu vào nhỏ nên máy phải có hệ số khuếch đại lớn. 
- Trở kháng vào lớn để phối hợp trở kháng giữa đầu vào mạch khuếch đại 
với nguồn tín hiệu đảm bảo lấy ra được điện áp đủ lớn mà không bị ảnh 
hưởng của sự thay đổi bên ngoài như do các bệnh nhân khác nhau, do 
tiếp xúc của các điện cực... 
- Độ méo của thiết bị nhỏ, để tín hiệu thu được chính xác phục vụ tốt cho 
việc chuẩn đoán bệnh 
- Khả năng chống nhiễu tốt: âm tần của nguồn điện lưới công nghiệp, 
nhiễu đồng pha. 
- Có độ ổn định cao và lọc nhiễu tốt để phản ánh được trung thực tín hiệu 
điện tim 
- Có độ cách điện tốt để đảm bảo an toàn cho người và máy. 
II) Sơ đồ khối của thiết bị: 
Dựa trên chức năng của hệ thống, ứng dụng PC và DSP vào quá trình 
xử lý tín hiệu, tôi đã đưa ra được mô hình của hệ thống có sơ đồ khối được 
mô tả trên hình 1 
Hình 1: Mô hình cấu trúc thiết bị phát và xử lí tín hiệu điện tim. 
Tín hiệu điện tim được phát ra từ máy phát tín hiệu dưới dạng tín hiệu 
tương tự (giá trị điện áp). Giá trị điện áp này được đưa qua CS4215 chuyển 
thành tín hiệu số và được đưa vào DSP. DSP làm nhiệm vụ thu thập tín hiệu, 
tính toán giá trị tần số của tín hiệu và truyền số liệu lên PC. 
Máy phát mô 
phỏng tín hiệu 
điện tim
 Card EVM 56002 
CODER 
 A/D
DSP PC 
 45
DSP được quản lý bằng phần mềm EVM thông qua Card EVM56002. PC 
thu tín hiệu và hiển thị kết quả cuối cùng. 
 2.1 Trình bày về chức năng của các phần tử trong hệ thống : 
 2.1.1. Máy phát mô phỏng điện tim và các tín hiệu bệnh. 
 Trong thời gian làm đồ án tôi có tiến hành lắp máy phát mô phỏng tín hiệu 
điện tim (đồ mạch nguyên lí hình2). Việc phát ra các tín hiệu được làm trên 
các mạch tích phân logic kinh điển. Mạch gồm 2 vi mạch chính là hai bộ 
đếm IC4520 và IC4017. 
 IC4520 là một bộ đếm nhị phân đồng bộ, trong có chứa hai bộ đếm chia 
16 và có mã đầu ra là BCD 8421 độc lập với nhau. Chỉ đếm lên, không đặt 
trước (preset) được. Tần số xung nhịp cực đại là 6 MHz khi nguồn cung cấp 
là 10V và là 2.5 MHz khi nguồn cung cấp 5V. Thời gian sườn xung lên và 
xuống của các xung CL và EN không được lớn hơn 10μs. IC4017 là một bộ 
đếm thập phân có 10 đầu ra. 
Mạch sử dụng IC4520 và vi mạch 4081 để tạo ra một bộ chia 256 cho 
ra tín hiệu xung vuông ở tần số 16 Hz tại đầu ra chân 14.Tín hiệu này 
được đưa qua một bộ đếm 4520 nữa để chia ra thành tín hiệu 2Hz 
hoặc 1Hz lấy ở hai chân đầu ra là chân 5 hoặc 6 của vi mạch 4520 thứ 
hai. Tín hiệu 16 Hz được đưa vào làm đồng hồ cho IC3, nó là một bộ 
đếm thập phân có 10 đầu ra. Tín hiệu thứ hai sinh ra từ mạch tích 
phân C3/R3 được đưa vào từ chân 15 của bộ đếm IC3, xung này được 
hiểu như là tín hiệu reset cho IC3 Diot D2 có nhiệm vụ chỉ cho phép 
chiều dương của tín hiệu đi qua. Bộ đếm thập phân dừng lại ở giá trị 
9, giá trị nó chuyển qua (có thể thấy ở chân 11 được nối với đầu vào 
của chân Enable(13)) cho đến khi xung là 0. Vị trí của ngắt không cho 
qua trong thời gian nghỉ U, nó khoảng 60- 120 xung một phút, mạch 
tích phân R6/C4 chuyển xung đầu tiên (chân 2) thành phần P. Giá trị 
của số liệu ở điện trở R6 được tích vào tụ C4 để phóng ra mức điện áp 
khoảng 1V. Phần sóng T được sinh ra nhờ mạch tích phân thứ hai 
R7/C4, điện trở R7 có giá trị bằng một nửa điện trở R6 do đó xung ra 
trên Q6 vào tụ C4 có giá trị lớn gấp 2 lần (2.2 V) giá trị xung ra trên 
 mạch
 H
2.1.2
1. C
Q1 vào
nhiệm v
phép xu
chỉ cho 
do đó t
khi có
phân n
cộng tấ
để nối v
phát đư
Nguồn c
 là 6 mA.
ình 2: Sơ đ
. Card EV
S4215: 
 tụ C4. Sa
ụ giới hạn 
ng dương 
xung dươn
a có được
 đoạn R. C
hánh theo
t cả các ph
ới một EC
ợc tín hiệu
dạn
ung cấp 
ồ mạch m
M56002 
i lệch C5/R
dòng lớn v
đi qua do 
g đi qua, 
 thành phầ
ác tín hiệu
 các điện t
ần của xun
G và một 
 có dạng đ
g bệnh run
cho mạch 
áy phát tín
46
10 tạo ra 
à mạch th
đó có giá t
Sử dụng p
n S. Đèn L
 lấp đầy th
rở R11,R1
g và được
tín hiệu 1V
iện tim đồ
g thất, dạn
là nguồn 
 hiệu điện
thành phầ
ẳng cho tụ
rị định là 3
hần ngược
ED 3 qua
eo hai mạ
2 được cộ
 phân chia
 đưa ra k
 bình thư
g bệnh th
9V và gi
 tim 
n R.Điện t
 C5, Diot 
.8 V. Còn
 không lớn
 diode D3 
ch tích ph
ng thêm v
 thành tín
huyếch đạ
ờng và ha
ấp tim. 
á trị của 
rở R8 làm
D5 chỉ ch
 Diode D4
 hơn 0.7V
phát sáng 
ân và các 
ào tụ C7, 
 hiệu 1mV
i. Mạch đã
i tín bệnh:
dòng tron
o 
g 
 47
 CS4215 là một chip đơn, CMOS, có hai kênh biến đổi A/D 16 bit và hai 
kênh biến đổi D/A 16 bit. CS4215 có đặc tính sau đây: 
- Tần số lấy mẫu từ 4khz đến 50khz –Mã hoá tín hiệu 16 bit hay 8 bit. 
- Có hệ số khuếch đại cho tín hiệu vào tương tự có thể lập trình được. 
- Có các bộ tạo xung nhịp ở trên chíp. 
- Nguồn cung cấp 5V. 
- Có các bộ lọc trên chíp 
- Giao diện số nối tiếp. 
Cổng SSI của DSP 56002 được sử dụng để truyền số liệu từ hai bộ biến 
đổi A/D tới DSP 56002 và từ DSP 56002 tới hai bộ biến đổi D/A. Hình3 
dưới đây mô tả cách nối CS4215 với cổng C của DSP 56002. 
Trong sơ đồ trên CS4215 được sử dụng để chuyển tín hiệu từ tương tự sang 
số, quy định tần số lấy mẫu của tín hiệu và quyết định khung truyền số liệu. 
 Để thực hiện được các công việc trên CS4215 sử dụng các thanh ghi và 
các bit đã được mô tả ở chương 2. 
2. DSP 56002------------------------------------------------------------------------------- 
Với các bộ nhớ số liệu 24 bit X1, Y1 và X0, Y0, DSP thực hiện các công 
việc sau : 
 • Thu thập tín hiệu được phát ra từ máy phát tín hiệu. 
SRD/PC7 
 SCI/PC4 
 STD/PC8 
 SC2/PC5 
SCK/PC6 
SCLK/PC2 
SDOUT 
RESET 
SDIN 
FSYNC 
TSIN 
SCLK 
D/C 
Hình 3: Nối giữa cổng C của DSP 56002 với CS4215 
 48
 • Tính toán tần số lớn nhất của tín hiệu. 
 • Nhận dạng tín hiệu thu thập và lưu giữ các số liệu tại các vùng nhớ. 
 • So sánh tín hiệu nhận được với thư viện tín hiệu điện tim chuẩn 
 • Lưu giữ các tín hiệu bất bình thường và hiển thị kết quả trên máy tính. 
 Để đảm bảo cho DSP làm việc chính xác cần quan tâm tới các vùng nhớ 
của DSP được sử dụng, tránh trường hợp bị lẫn số liệu do đặt trùng vùng 
nhớ. Dưới đây sẽ mô tả cách lưu giữ số liệu và sự phân vùng bộ nhớ của 
DSP. 
 • Số liệu được lưu giữ trên DSP bao gồm hai vùng nhớ X và Y được phân 
chia như sau: 
- Vùng nhớ X được sử dụng để lưu giứ các giá trị biên độ của tín hiệu thu 
thập được và được sử dụng để phục vụ cho việc hiển thị. 
 Vùng nhớ X được phân chia thành 3 vùng nhớ như sau: 
 + Vùng nhớ bắt đầu từ X: $4000 là vùng nhớ chứa các số liệu thu thập 
được, với mỗi lần ghi được 1024 điểm. 
 + Vùng nhớ bắt đầu từ X:$2000 là vùng nhớ chứa các số liệu của thư viện 
tín hiệu chuẩn. 
 + Vùng nhớ bắt đầu từ X:$3000 là vùng nhớ chứa các số liệu của tín hiệu 
bất bình thường sau khi được so sánh với thư viện tín hiệu chuẩn. 
- Vùng nhớ Y được sử dụng để lưu giữ các dạng ngôn ngữ hình thức của tín 
hiệu sau khi đã được nhận dạng với phương pháp lưu giữ như sau: 
Cửa sổ quan sát được chia thành 40 đoạn. Quá trình nhận dạng tín hiệu 
điện tim sẽ được thực hiện trên các từ chia thành 40 ký tự bao trùm tất cả 
chu kỳ nhịp của tín hiệu ECG từ hai đỉnh R – R. 
Mỗi chu kỳ bao gồm 40 ký tự chiếm 7 ô nhớ trong vùng nhớ dưới dạng 
như sau : 
VD: Y: $2000 CCBAAA AABBBB CCCCCC AAAAAA.. 
 Y: $2006 AABB00 ........... 
Vùng nhớ Y được phân chia thành 3 vùng nhớ như sau : 
 + Vùng nhớ bắt đầu từ Y: $4000 là vùng nhớ chứa dạng ngôn ngữ hình 
thức của tín hiệu thu thập được. 
 49
 + Vùng nhớ bắt đầu từ Y: $2000 là vùng nhớ chứa dạng ngôn ngữ hình 
thức của thư viện tín hiệu điện tim chuẩn. 
 + Vùng nhớ bắt đầu từ Y: $3000 là vùng nhớ chứa dạng ngôn ngữ hình 
thức của tín hiệu bất bình thường sau khi đã được so sánh với thư viện tín 
hiệu điện tim chuẩn. 
 Số liệu được lưu giữ liên tiếp trên các vùng nhớ của hai vùng nhớ X và Y. 
Các vùng nhớ X và Y đều có mối liên hệ với nhau để thuận tiện cho việc lưu 
giữ và hiển thị số liệu. 
2.2. Chương trình phần mềm. 
2.2.1. Các lưu đồ thuật toán thực hiện chương trình. 
 • Để thực hiện được các nhiệm vụ: Truyền và thu thập số liệu, xác định 
chu kì (R-R), nhận dạng, so sánh, lưu giữ tín hiệu và hiển thị kết quả trên 
máy tính. Chương trình phần mềm viết cho DSP có algorithm cho dưới đây: ---- 
Giải thích lưu đồ: 
+ Bước đầu tiên phải khởi tạo CS4215, chọn chế độ điều khiển để 
khởi tạo cho CS4215 cụ thể là ta qui định các thông số cho CS4215 như tần 
số lấy mẫu ( tần số lấy mẫu của CS4215 ở trong khoảng từ 4 KHz- 50KHz 
), số bit trong một frame, tốc độ truyền... 
+ Khi ở chế độ truyền số liệu thì CS4215 thực hiện việc thu tín hiệu tương tự 
chuyển dạng số và gửi đến DSP để xử lí. Nó hoạt động theo chế độ mà ta 
đặt trước ở chế độ điều khiển còn trong trường hợp CS4215 ở chế độ truyền 
số liệu, nó sẽ quy định khung truyền số liệu. 
 Như ta đã biết tín hiệu điện tim chuẩn có tần số biến đổi từ (0.5-
100)Hz. Mà theo định lí lấy mẫu thì tần số lấy mẫu phải lớn hoặc bằng 2 lần 
tần số cắt của tín hiệu điện tim. Về lí thuyết tần số tín hiệu điện tim có thể 
tính toán theo công thức : 
max
.2
G
XT nm
γ= 
Trong đó : :mT tần số lấy mẫu. 
 50
 :γ sai số yêu cầu. 
 :nX giá trị định mức của đại lượng đo. 
 :maxG gia tốc biến thiên cực đại của tín hiệu đo (đạo hàm bậc 
hai của quá trình biến thiên). 
 Tính toán tần số lấy mẫu: 
 Thực tế việc tính số điểm lấy mẫu trong một chu kì tín hiệu điện tim được 
tính toán như sau: 
 Như ta đã trình bày ở chương 1 ÷phần 1, thời gian tồn tại của sóng P là 
0,05s ÷ 0,11s; chu kỳ tín hiệu điện tim là 0,9s . 
 Vậy với P = 0,05 ta tính: 
 fmax = Hz2005,0
1 = 
Theo định lý lấy mẫu và kết hợp với thực tế ta chọn tần số lấy mẫu 
của tín hiệu điên tim được tăng lên 50 lần: 20 Hz x 50 lần = 1000 Hz. 
 Tần số lấy mẫu thực tế của mạch mã hoá giải mã(đầu vào của tín hiệu điện 
tim). 
 CS4215 là 8 KHz; 9,6 KHz; 16 KHz; 32 KHz; 48 KHz do đó ta chọn 
nhỏ nhất là 8 KHz . Chu kỳ lấy mẫu Te = KHz8
1 . Vậy số điểm lấy mẫu trong 
1 chu kỳ tín hiệu là : 310.8.9,0
8
1
9,0 =
KHz
s = 7200 điểm . 
 Cửa sổ ta chọn là 40 đoạn cho 1 chu kỳ lấy mẫu. Vậy ứng với mỗi đoạn lấy 
mẫu có : 
 180
40
7200 = (Điểm). 
+ Quá trình thu thập số liệu, xác định chu kì (R-R), nhận dạng và so sánh tín 
hiệu diễn ra khi CS4215 ở chế độ điều khiển. ở đây, số điểm lấy mẫu được 
chọn là 7200 điểm ( về nguyên tắc số điểm lấy mẫu có thể tăng lên bao 
 51
nhiêu tuỳ ý). Khi thu thập đủ 7200 điểm thì bắt đầu tính toán tần số tại điểm 
tín hiệu có biên độ cực đại. Khi số liệu truyền hết CS4215 quay trở về chế 
độ điều khiển và quá trình thu thập lại được bắt đầu, quá trình tiếp diễn liên 
tục. 
 Khi muốn dừng chương trình, sử dụng một tác động từ bên ngoài thông 
qua phần mềm EVM điều khiển dừng DSP. ------------------------------------------ 
 Chương trình thu thập, xử lý và nhận dạng tín hiệu điện tim được viết 
bằng ngôn ngữ Assembler 56002. 
Các chương trình viết cho DSP gồm có : 
 + Macro truyền số liệu 
 + Macro thu thập số liệu 
 + Macro tính tần số max 
 + Macro nhận dạng tín hiệu 
 + Macro so sánh tín hiệu thu được 
với thư viện tín hiểu chuẩn và lưu giữ số liệu 
Thành lập thư viện chuẩn : 
- Phát một chu kỳ tín hiệu điện tim chuẩn n lần theo lý thuyết có thể là 
20 lần, ở đây để tăng độ tin cậy ta có thể chọn n = 100 
Bước 1: Tìm xác xuất xuất hiện của các dẫy chữ trong n lần phát đầu 
tiên. 
Ví dụ : aa bb cccaa lần 1 
 aa bb cccac lần 2 
 aa bb cccba lần 3 
 aa bb cccac lần 4 
 aa bb cccab lần 5 
 .. .. 
 .. .. 
 aa bb cccba lần n 
 52
Bắt đầu 
Khởi tạo CS4215 
Thu thập
Đủ số liệu
Xác định chu kỳ(R-R)
Nhận dạng 
So sánh với thư
viện chuẩn 
Lưu giữ 
Hiển thị 
Chạy tiếp ?
Kết thúc 
Sai 
Đúng
Sai 
Đúng
Đúng
Lưu đồ của thiết bị tự động phân tích tín hiệu điện tim 
 53
Bước 2 : Tìm xác xuất xuất hiện của các dẫy chữ trong n lần phát thứ 
2( có thể nhiều hơn càng tốt). Cứ tiếp tục như vậy đến bước thứ 5 sau đó ta 
chọn ra các dẫy chữ giống nhau nhất có xác xuất xuất hiện lớn nhất ta hợp 
lại thành một thư viện khoảng 7 đến 8 dẫy chữ( đó là 1 tập hợp có xác xuất 
xuất hiện nhiều nhất) chuẩn có 8 dạng. 
 Bằng phương pháp trên ta có đã có 1 thư viện , thư viện này sẽ được 
cất trong bộ nhớ khi ta thực hiện việc phát ra các tín hiệu bất kỳ( tín hiệu 
chuẩn hoặc tín hiệu lệch ) từ máy phát mô Rông tím hoặc điện tím đưa vào 
thiết bị tự động phân tích tim hoặc điện tim, sau khi thực hiện việc thu thập, 
xử lý, nhận dạng, tín hiệu sẽ so sánh lần lượt với từng dạng. Trong 8 dạng đó 
ở thư viện chuẩn. Nếu tín hiệu trùng với 1 trong 8 dạng đó thì bỏ qua, còn 
nếu khác thì ghi lại vào bộ nhớ . 
 Để người bác sĩ có thể sử dụng nguồn thông tin về tín hiệu đã thu thập 
được thì phải cần nối ghép thiết bị tự động phân tích tín hiệu điện tim với 
máy tính thông qua card truyền thông + phần mềm truyền thông, hiển thị 
phần này sẽ được cung cấp bởi nhà chế tạo thiết bị. 
Sau khi phân tích đường cong điện tim đồ, tim ra các dấu hiệu bệnh lý, các 
bác sĩ chuyên khoa về tim mạch đã tập hợp chúng lại thành những hội chứng 
điện tim đồ, rồi dựa vào đó mà chuẩn đoán bệnh. 
 Có hai loại hội chứng được xét đến là: 
 - Các hội chứng về hình dạng sóng: Cá bệnh lý làm thay đổi hình 
dạng điện tim đồ chuẩn. 
 - Các hội chứng về rối loạn nhịp: Các bệnh lý làm thay đổi tần số điện 
tim đồ chuẩn . 
 Đề tài của luận văn mới chỉ xét tới các bệnh lý làm thay đổi hình dáng 
của điện tim đồ chuẩn và để giải quyết vấn đề này là bài toán về nhận dạng. 
 54
Tuyến tính hoá bằng phương pháp bình phương 
tối thiểu 
Sai 
Khởi tạo CS 4215 
Thu thập 
Đủ số liệu
Nhận dạng 
Lưu giữ 
Kết thúc 
Đúng
LƯU ĐỒ 2: THÀNH LẬP THƯ VIỆN 
CHUẨN
Bắt đầu 
 55
2.3. Thử nghiệm thiết bị 
 - Máy phát mô phỏng tín hiệu điện tim : 
 Cho máy chạy với nguồn một chiều là pin 9V đã cho được các dạng tín 
hiệu mô phỏng cho tín hiệu điện tim được kết quả như ở hình 4,5 và 6 (dạng 
ở hình 6 là để tham khảo). Máy chạy ổn định, tín hiệu ra ít bị ảnh hưởng của 
các loại nhiễu. Đã ghép nối với Card DSP và chạy chương trình thu thập số 
liệu. 
Chương trình thu thập số liệu được viết bằng ngôn ngữ assembler 56002 
ở phần phụ lục. 
 Hình 4: Dạng tín hiệu điện tim bình thường do máy phát 
 mô phỏng tạo ra 
 56
Hình 5: Dạng tín hiệu bệnh thấp tim (PQ dài ra) do máy phát mô phỏng 
tạo ra . 
Hình 6: Dạng tín hiệu bệnh tim rung thất do máy phát mô phỏng tạo ra 
(Dạng tín hiệu này để tham khảo) 
 57
 2.4. Đánh giá chung toàn bộ hệ thống. 
 Dụng cụ tự động phân tích tín hiệu điện tim sử dụng phương pháp 
nhận dạng tín hiệu là một phương pháp vô cùng quan trọng trong việc xử lý 
các thông tin đa chiều khi các thông tin này không thể biểu diễn được dưới 
dạng biểu thức đơn giản hoặc không thể được định nghĩa trước. 
 Ngoài ra mô hình thiết bị còn sử dụng Card DSP 56002EVM là một 
hệ thống xử lý tín hiệu hoàn chỉnh, với bộ vi xử lý tín hiệu số DSP 56002 
của hãng Motorola chế tạo theo công nghệ HCMOS, công suất thấp, 24 bit. 
Cấu trúc chung của DSP 56002 được xây dựng trên một modul xử lý trung 
tâm chuẩn và các ngoại vi trên chip. Trong vùng mở rộng xung quanh modul 
xử lý trung tâm, chip có thể cung cấp nhiều cấu hình bộ nhớ và các modul 
ngoại vi khác nhau tuỳ thuộc vào từng bộ xử lý. Do đó cấu trúc này có thể 
làm giảm đến mức tối đa sự phức tạp, giá thành và thời gian trong xử lý tín 
hiệu số. 
 Dụng cụ tự động phân tích và xử lý tín hiệu điện tim được xây dựng 
trên cơ sở vi xử lý tín hiệu số có khả năng xử lý tín hiệu trong thời gian thực 
cho phép chúng ta tiết kiệm đáng kể bộ nhớ của thiết bị. Đây chính là tiền đề 
cho việc hướng tới chế tạo dụng cụ thực hiện hoàn toàn tự động quá trình 
phân tích và nhận dạng tín hiệu có thể làm việc với các tín hiệu ECG thực 
thu thập trên cơ thể người bệnh. Các dụng cụ tự động này không chỉ được 
dùng trong lĩnh vực y tế, mà còn có thể mở rộng ứng dụng trong các lĩnh 
vực đo lường khác. 
 58
 PHỤ LỤC 
 Ph? ph??c 
Ch¬ng tr?h ph? m? vi? cho DSP 
;=================================================================== 
;SUBPROGRAM hangnvi.asm 
;file nµy ®?h ngh? ®? ch?thanh ghi 
;=================================================================== 
IPR equ $FFFF ;Interrupt priority register 
BCR equ $FFFE ;Bus control register 
PLL equ $FFFD ;PLL control register 
SSIDR equ $FFEF ;SSI receive\transmit data register 
SSISR equ $FFEE ;SSI status register 
CRB equ $FFED ;SSI control register B 
CRA equ $FFEC ;-------------------- A 
PCD equ $FFE5 ;Port C - Data register 
PBD equ $FFE4 ;Port B - Data register (PBD) 
PCDDR equ $FFE3 ;Port C - Data direction register 
PBDDR equ $FFE2 ;Port B - Data direction register 
PCC equ $FFE1 ;Port C - Control register 
PBC equ $FFE0 ;Port B - Control register 
SCCR equ $FFF2 ;SCI clock control register 
STX1 equ $FFF6 ;SCI transmit register 
STX2 equ $FFF5 ;-------------------- 
STX3 equ $FFF4 ;------------------- 
STX equ $FFF4 ;-------------------- 
SRX1 equ $FFF6 ;SCI receive register 
SRX2 equ $FFF5 ;------------------ 
SRX3 equ $FFF4 ;------------------ 
SRX equ $FFF4 ;----------------- 
 59
SCR equ $FFF0 ;SCI interface control register 
SSR equ $FFF1 ;SCI interface status register 
TCSR equ $FFDE ;Timer control/status register 
TCR equ $FFDF ;Timer count register 
;=============================================================== 
;hangsci.asm 
;file ®?h ngh? h»ng s?ho c? SCI 
;==================================================================== 
SCI_IPR_0 EQU $0000 
SCI_IPR_1 EQU $4000 ;IPR of SCI , level 0 
SCI_IPR_2 EQU $8000 ;IPR of SCI , level 1 
SCI_IPR_3 EQU $C000 ;IPR of SCI , level 2 
FORMAT_WORD_10 EQU $000002 ;10 bits asynchronous 
SHIFT_DIR_MSB EQU $000008 ;1 =shift MSB fist 
;0 =shift LSB fist 
SEND_BREAK EQU $000100 ;1 =send zero word 
WAKEUP_MODE EQU $000200 ;1 =select adress bit wakeup mode 
;0 =select idle line wakeup mode 
RX_WAKEUP_EN EQU $000400 ;1 =receiver wakeup enable 
WIRE_OR_MODE EQU $000800 ;1 =SCI TXS driver is an open output, 
;external pull up register is required 
RX_ENABLE EQU $000100 ;1 =receiver is enabled 
TX_ENABLE EQU $000200 ;1 =transmitter is enabled 
IDLE_INT_EN EQU $000400 ;1 =idle interrupt is enabled 
RX_INT_EN EQU $000800 ;1 =receive interrupt is enabled 
TX_INT_EN EQU $001000 ;1 =transmit interrupt is enabled 
SCI_TIMER_INT_EN EQU $002000 ;1 =timer interrupt is enabled 
 60
SCI_TIMER_INT_RATE EQU $004000 
SCI_CLK_POLARITY EQU $008000 
SCLK_OUT_16 EQU $001000 ;1 = SCLK output is a 16 x baud clock 
;0 = SCLK output is a 1 x baud clock 
SCI_CLK_PRE EQU $002000 ;1 = SCI clock divided by 8 
;0 = SCI clock divided by 1 
RX_EX_CLK EQU $004000 ;0 = select internal clock for the receiver 
;1 = select external clock for the receiver 
TX_EX_CLK EQU $008000 ;0 =select internal clock for the ransmitter ;1= elect external clock for the 
transmitter 
SCI_RATE_625 EQU $000000 ;625.0 KB with Bit rate error percent =0 
; if SCI_CLK_PRE =0 
SCI_RATE_56 EQU $00000A ;56.0 KB with Bit rate error percent =+1.46 
; if SCI_CLK_PRE =0 
SCI_RATE_38 EQU $00000F ;38.4 KB with Bit rate error percent =+1.72 
; if SCI_CLK_PRE =0 
SCI_RATE_19 EQU $000020 ;19.2 KB with Bit rate error percent =-1.36 
; if SCI_CLK_PRE =1 
SCI_RATE_9 EQU $000040 ;38.4 KB with Bit rate error percent =+0.16 
; if SCI_CLK_PRE =0 
SCI_RATE_4 EQU $000081 ;4.8 KB with Bit rate error percent =+0.15 
; if SCI_CLK_PRE =0 
SCI_RATE_2 EQU $000020 ;2.4 KB with Bit rate error percent =-1.38 
; if SCI_CLK_PRE =1 
SCI_RATE_1 EQU $000040 ;38.4 KB with Bit rate error percent =+0.08 
; if SCI_CLK_PRE =1 
SCI_RATE_0_6 EQU $000081 ;0.6 KB with Bit rate error percent =0 
; if SCI_CLK_PRE =1 
 61
SCI_RATE_0_3 EQU $000103 ;0.3 KB with Bit rate error percent =0 
; if SCI_CLK_PRE =1 
RX_SCI_BUFF EQU $10 
TX_SCI_BUFF EQU $11 
;=============================================================== 
;hangssi.asm 
;file ®?h ngh? h»ng s?ho c? SSI 
;================================================================= 
SSI_IPR_0 equ $0000 
SSI_IPR_1 equ $1000 ;IPR of SSI , level 0 
SSI_IPR_2 equ $2000 ;IPR of SSI , level 1 
SSI_IPR_3 equ $3000 ;IPR of SSI , level 2 
NO_PREAMP equ $100000 ;0 == enable 20 dB pre-amp 
LO_OUT_DRV equ $080000 ;0 == 2.8 Vp-p line (1V rms) 
;0 == 4.0 Vp-p headphones 
;1 == Line and Headphone 2.0Vp-p 
HI_PASS_FILT equ $008000 ;0 == HPF disabled 
SAMP_RATE_9 equ $003800 ; 9.6 kHz sample rate 
SAMP_RATE_48 equ $003000 ;48 kHz sample rate 
SAMP_RATE_32 equ $001800 ;32 kHz sample rate 
SAMP_RATE_27 equ $001000 ;27.4 kHz sample rate 
SAMP_RATE_16 equ $000800 ;16 ??¿??¨???????????¨???????????¨???????????¨???????????¨?? 
BITS_128 equ $040000 ;128 bits per frame 
BITS_256 equ $080000 ;256 bits per frame 
CODEC_MASTER equ $020000 ;1 == codec generates SCLK & FS 
;0 == codec receives SCLK & FS 
CODEC_TX_OFF equ $010000 ;0 == enable codec TX to DSP 
;1 == disable (Hi-Z) codec output 
 62
HEADPHONE_EN equ $800000 ;1 == headphone output enabled, 0 == muted 
LINEOUT_EN equ $400000 ;1 == line output enabled, 0 == muted 
LEFT_ATTN equ $010000 ;63 steps * 1.5 dB = -94.5 dB 
SPEAKER_EN equ $004000 ;1 == speaker output enabled, 0 == muted 
RIGHT_ATTN equ $000100 ;63 steps * 1.5 dB = -94.5 dB 
MIC_IN_SELECT equ $100000 ;1 == A/D inputs from MIC pins NOTE: the 
; DSP56002EVM uses these pins. The line 
; input pins are not used. 
LEFT_GAIN equ $010000 ;15 steps * 1.5 dB = 22.5 dB 
MONITOR_ATTN equ $001000 ;15 steps * 6.0 dB = 90.0 dB (mute) 
RIGHT_GAIN equ $000100 ;15 steps * 1.5 dB = 22.5 dB 
CTRL_WD_12 equ NO_PREAMP+HI_PASS_FILT+SAMP_RATE_8+STEREO+DATA_16 ;CLB=0 
CTRL_WD_34 equ IMMED_3STATE+XTAL2_SELECT+BITS_64+CODEC_MASTER 
CTRL_WD_56 equ $000000 
CTRL_WD_78 equ $000000 
OUTPUT_SET equ HEADPHONE_EN+LINEOUT_EN+(LEFT_ATTN*4) 
INPUT_SET equ MIC_IN_SELECT+(15*MONITOR_ATTN)+(RIGHT_ATTN*4) 
STACK_CRA equ $7f0 
STACK_CRB equ $7f1 
STACK_PCC equ $7f2 
STACK_SSISR equ $7f3 
;====================================================================== 
;hangctr.asm 
;file ®?h ngh? h»ng s?ho ch¬ng tr?h 
;====================================================================== 
START equ $40 
stack equ $40 
sodiem equ 4096 
 63
thvao equ $2000 
novathvao equ $3000 ;dia chi truyen dang song 
novakqua equ $3000 ;dia chi truyen dang phoor 
bang equ $800 
kqua equ $1000 
dungthu equ 12 
dungdao equ 13 
ccx equ 100 
lae equ $10 
heso equ 1 
hskp equ 1 
bodem equ $80 
tamthoi equ $e1 
txbuff equ $e0 
luong equ 8 
hex equ $50 
tam1a equ $80 
tam2b equ $81 
tam3c equ $82 
tam4d equ $83 
tam5e equ $84 
tam6f equ $85 
llae equ $a0 
ratio equ $a2 
ratiotam equ $a3 
divaddr equ $a4 ;+2 
bangabc equ $b0 
only4u equ $c0 
 64
asciibuff equ $c2 
truyenbff equ $c4 
novalae equ $f0 
novallae equ $f4 
relled equ 10000 
gioihan equ $f00000 
suygiamlae equ 16 ;32 
kytwktra equ $5A0000 ;"Z":yeu cau truyen ket qua tinh toan 
ktwdsong equ $590000 ;"Y":yeu cau truyen dang song vao 
ktwdphor equ $580000 ;"X":yeu cau truyen dang phoor 
wavlen equ 1024 ;ddooj daif cuar dang song truyen di 
speclen equ 1024 ;ddooj daif cuar dang phoor truyen di 
trengoai equ 99 ;cacs hawngf soos taoj treex 
tretrong equ 31 ;ddeer truyeenf data chinhs xacs 
;======================================================================= 
;ktaoctr.asm 
;file b¾t ®? ch¬ng tr?h ch?h 
;====================================================================== 
movep #$261009,x:PLL 
movep #$0000,x:BCR ;mowr bus 
movep #0,x:PBC ;khowir taoj coongr B I/O song song 
movep #>$ffff,x:PBDDR ;khowir taoj coongr B: output 
movep #SCI_IPR_2+SSI_IPR_1,x:IPR ;ddawtj mwcs wu tieen 
movec #0,sp 
move #0,omr 
move #stack,r7 
move #-1,m7 
;======================================================================= 
 65
;com.asm 
;subrutine truy? s?i? ra c? COM khi c?ªu c? 
;Ch¬ng tr?h ch?h lu«n g?/FONT>subrutine 
;=========================================================== 
com1 nop 
move #kytwktra,b 
move x:RX_SCI_BUFF,a 
move #txbuff,r5 
move #-1,m5 
cmp a,b ;kiem tra ky tw yeu cau 
jne sosanhtiep ;truyen ket qua tinh toan 
clr a 
bset #12,x:SCR 
move a,x:RX_SCI_BUFF 
do #8,laiii 
move x:(r5)+,x0 
move x0,x:TX_SCI_BUFF 
do #100,otempt ;taoj treex ddeer truyeenf 
do #30,tempt ;chinhs xacs 
jclr #7,x:TCSR,vansan 
movep x:(r3)+,x:PBD 
bclr #7,x:TCSR 
vansan nop 
tempt nop 
otempt nop 
laiii 
jmp bca 
;-------truyen dangj songs--------------------------------------------- 
 66
sosanhtiep 
move #ktwdsong,b 
move #novathvao,r4 
cmp a,b ;kiem tra ky tw yeu cau 
jne bca ;continuez ;truyen dang song 
move #$542053,x0 ;"T S" 
move x0,x:truyenbff ;kys twj nhan dang song 
;-------------------------------------------- 
bset #12,x:SCR 
clr a 
move a,x:RX_SCI_BUFF 
do #wavlen,khongtruyennua 
move x:truyenbff,x0 
move x0,x:TX_SCI_BUFF 
do #trengoai,otempt0 ;taoj treex ddeer 
do #tretrong,tempt0 ;truyeenf chinhs xacs 
jclr #7,x:TCSR,vansan0 
movep x:(r3)+,x:PBD 
bclr #7,x:TCSR 
vansan0 nop 
tempt0 nop 
otempt0 nop 
move x:(r4)+,x0 
move x0,x:asciibuff 
asc asciibuff,truyenbff+1 
move x:truyenbff+1,x0 ;truyen 3 byte cao 
move x0,x:TX_SCI_BUFF 
do #trengoai,otempt1 ;taoj treex ddeer 
 67
do #tretrong,tempt1 ;truyeenf chinhs xacs 
jclr #7,x:TCSR,vansan1 
movep x:(r3)+,x:PBD 
bclr #7,x:TCSR 
vansan1 nop 
tempt1 nop 
otempt1 nop 
move x:truyenbff+2,x0 ;truyen 3 byte thap 
move x0,x:TX_SCI_BUFF 
do #trengoai,otempt2 ;taoj treex ddeer 
do #tretrong,tempt2 ;truyeenf chinhs xacs 
jclr #7,x:TCSR,vansan2 
movep x:(r3)+,x:PBD 
bclr #7,x:TCSR 
vansan2 nop 
tempt2 nop 
otempt2 nop 
khongtruyennua 
bca nop 
bclr #12,x:SCR 
rts 
;======================================================================== 
;ktao4216.asm 
;file kh?t¹o ADC codec4215 
;====================================================================== 
org x:0 
RX_BUFF_BASE equ * 
RX_data_1_2 ds 1 ;data time slot 1/2 for RX ISR 
 68
RX_data_3_4 ds 1 ;data time slot 3/4 for RX ISR 
RX_data_5_6 ds 1 ;data time slot 5/6 for RX ISR 
RX_data_7_8 ds 1 ;data time slot 7/8 for RX ISR 
TX_BUFF_BASE equ * 
TX_data_1_2 ds 1 ;data time slot 1/2 for TX ISR 
TX_data_3_4 ds 1 ;data time slot 3/4 for TX ISR 
TX_data_5_6 ds 1 ;data time slot 5/6 for TX ISR 
TX_data_7_8 ds 1 ;data time slot 7/8 for TX ISR 
RX_PTR ds 1 ; Pointer for rx buffer 
TX_PTR ds 1 ; Pointer for tx buffer 
;******************************************************* *********** 
org p: 
codec_init 
move #RX_BUFF_BASE,x0 
move x0,x:RX_PTR ; Initialize the rx pointer 
move #TX_BUFF_BASE,x0 
move x0,x:TX_PTR ; Initialize the tx pointer 
;---------------------------------------------------------------------------- 
movep #$0000,x:PCC ; turn off ssi port 
movep #$4303,x:CRA ; 40MHz/16 = 2.5MHz SCLK, WL=16 bits, 4W/F 
movep #$FB30,x:CRB ; RIE,TIE,RE,TE, NTWK, SYN, FSR/RSR->bit 
movep #$14,x:PCDDR ; setup pc2 and pc4 as outputs 
movep #$0,x:PCD ; D/C~ and RESET~ = 0 ==> control mode 
;----reset delay for codec ---- 
do #500,_delay_loop 
rep #2000 ; 100 us delay 
nop 
_delay_loop 
 69
bset #4,x:PCD ; RESET~ = 1 
movep #$01E8,x:PCC ; Turn on ssi port 
;--- set up the TX buffer with control mode data 
move #CTRL_WD_12,x0 
move x0,x:TX_BUFF_BASE 
move #CTRL_WD_34,x0 
move x0,x:TX_BUFF_BASE+1 
move #CTRL_WD_56,x0 
move x0,x:TX_BUFF_BASE+2 
move #CTRL_WD_78,x0 
move x0,x:TX_BUFF_BASE+3 
andi #$FC,mr ; enable interrupts 
; CLB == 0 in TX Buffer, wait for CLB == 1 in RX Buffer 
jclr #3,x:SSISR,* ; wait until rx frame bit==1 
jset #3,x:SSISR,* ; wait until rx frame bit==0 
jclr #3,x:SSISR,* ; wait until rx frame bit==1 
jset #18,x:RX_BUFF_BASE,* ; loop until CLB set 
; CLB == 1 in RX Buffer, send 4 frames and then disable SSI 
bset #18,x:TX_BUFF_BASE ;set CLB 
do #4,_init_loopB ; Delay as 4 full frames to pass 
jclr #2,x:SSISR,* ; wait until tx frame bit==1 
jset #2,x:SSISR,* ; wait until tx frame bit==0 
_init_loopB 
movep #0,x:PCC ;reset SSI port (disable SSI...) 
; now CLB should be 1 -- re-program fsync and sclk direction to input 
movep #$FB00,x:CRB ; rcv,xmt&int ena,netwk,syn,sclk==inp,msb 1st 
movep #$14,x:PCD ; D/C~ pin = 1 ==> data mode 
 70
movep #$01EB,x:PCC ; turn on ssi port (enable SSI now...) 
;================================================================= 
;txrx.asm 
;subrutine thu th? s?i? qua c? SSI t??dec 4215 
;====================================================================== 
ssi_rx_isr 
move r0,y:(r7)+ 
move m0,y:(r7)+ 
move #3,m0 
move x:RX_PTR,r0 
jclr #3,x:SSISR,next_rx 
move #RX_BUFF_BASE,r0 
nop 
next_rx 
movep x:SSIDR,x:(r0)+ 
move r0,x:RX_PTR 
move y:-(r7),m0 
move y:-(r7),r0 
rti 
;-------------------------------------------------------------------- 
ssi_tx_isr 
move r0,y:(r7)+ 
move m0,y:(r7)+ 
move #3,m0 
move x:TX_PTR,r0 
jclr #2,x:SSISR,next_tx 
move #TX_BUFF_BASE+1,r0 
nop 
 71
next_tx 
movep x:(r0)+,x:SSIDR 
move r0,x:TX_PTR 
move y:-(r7),m0 
move y:-(r7),r0 
rti 
;====================================================================== 
;subrutine nh? vµ ph¸t s?i? b»ng RS232 qua c? SCI 
;====================================================================== 
sci_rx_isr 
jclr #2,x:SSR,* ;if receive data register full ->wait 
movep x:SRX1,x:RX_SCI_BUFF ;if- - empty, chuyen data toi dem nhan 
nop 
rti 
;-------------------------------------------------------------------- 
sci_tx_isr 
jclr #1,x:SSR,* ;if transmit data register full ->wait 
movep x:TX_SCI_BUFF,X:STX1 ;if ------------------- empty chuyen 
;data toi thanh ghi truyen 
jclr #1,x:SSR,* 
movep x:TX_SCI_BUFF,X:STX2 
jclr #1,x:SSR,* 
movep x:TX_SCI_BUFF,X:STX3 
nop 
rti 
;====================================================================== 
;thuthap.asm 
;macro thu th? s?i? th??P> 
 72
;====================================================================== 
thuthap macro dungthu 
jset #2,x:SSISR,* 
jclr #2,x:SSISR,* 
clr a ;sua 
move x:RX_BUFF_BASE,a 
nop 
asr a 
asr a 
clr b 
move a,x:(r2) 
move b,y:(r2)+ 
jsr com1 ;kieemr tra yeeu caauf gwir data qua RS232 
move #TONE_OUTPUT,y0 
move y0,x:TX_BUFF_BASE+2 
move #TONE_INPUT,y0 
move y0,x:TX_BUFF_BASE+3 
nop 
jsr com1 
jclr #dungthu,r2,tieo ;12 
endm 
;=============================================================== 
;cong3037.asm 
;subrutine chuyen doi hex sang ascii 
;e.g: A ->$41, 5 ->$35 
;================================================================ 
cong3037 
move n3,y:(r7)+ 
 73
move a1,n3 
jclr #3,n3,cong30 
jset #2,n3,cong37 
jclr #1,n3,cong30 
nop 
cong37 move #>$37,x0 
nop 
add x0,a 
jmp hetcong 
cong30 move #>$30,x0 
nop 
add x0,a 
hetcong nop 
move y:-(r7),n3 
rts 
;====================================================================== 
;macro sao cheps tins hieeuj vaof sang mootj vungf 
;ddeemj ddeer truyeenf leen RS232 khi cos yeeu caauf 
;====================================================================== 
dgsong macro thvao,novathvao,wavlen 
;thvao :ddiaj chir ddaauf cuar tins hieeuj vaof 
;novathvao :ddiaj chir ddaauf cuar tins hieeuj copy 
;wavlen :ddooj daif mangr tins hieeuj 
move #thvao,r4 
move #-1,m4 
move #novathvao,r5 
move #-1,m5 
do #wavlen,ketthuc 
 74
move x:(r4)+,x0 
move x0,x:(r5)+ 
nop 
ketthuc 
nop 
endm 
;====================================================================== 
;MACRO asc.asm 
;MACRO chuy? s?i? sang d¹ng ASCII 
;bodem soos lieeuj caanf chuyeenr ddooir 
;tamthoi k? qu¶ , 3 byte cao = $e1 
;tamthoi+1 k? qu¶ 3 byte th? 
;====================================================================== 
asc macro bodem,tamthoi 
move sr,n6 
move r1,y:(r7)+ ;cat r1 va m1 
move m1,y:(r7)+ 
ori #3,mr 
;**a****************************************************************** 
clr a 
move #$f00000,x0 
move x:bodem,a 
nop 
and x0,a 
rep #20 
lsr a 
nop 
jsr cong3037 ;subrutine chuyen doi hex ->ascii 
 75
nop 
rep #16 
lsl a 
nop 
move a1,x:tam1a ;tam1a = $80 
;**b******************************************************************* 
clr a 
move #>$f0000,x0 
move x:bodem,a 
nop 
and x0,a 
rep #16 
lsr a 
nop 
jsr cong3037 
nop 
rep #8 
lsl a 
nop 
move a1,x:tam2b ;tam2b = $81 
;**c******************************************************************** 
clr a 
move #>$f000,x0 
move x:bodem,a 
nop 
and x0,a 
rep #12 
lsr a 
 76
nop 
jsr cong3037 
nop 
move a1,x:tam3c ;tam3c =$82 
;**d******************************************************************** 
clr a 
move #>$f00,x0 
move x:bodem,a 
nop 
and x0,a 
rep #8 
lsr a 
nop 
jsr cong3037 
nop 
rep #16 
lsl a 
nop 
move a1,x:tam4d ;tam4d = $83 
;**e******************************************************************* 
clr a 
move #>$f0,x0 
move x:bodem,a 
nop 
and x0,a 
rep #4 
lsr a 
nop 
 77
jsr cong3037 
nop 
rep #8 
lsl a 
nop 
move a1,x:tam5e ;tam5e = $84 
;**f******************************************************************** 
clr a 
move #>$f,x0 
move x:bodem,a 
nop 
and x0,a 
nop 
jsr cong3037 
nop 
move a1,x:tam6f ;tam6f = $85 
;******************************************************************** 
clr a 
move x:tam1a,a 
move x:tam2b,x0 
nop 
add x0,a 
move x:tam3c,x0 
nop 
add x0,a 
nop 
move a,x:tamthoi 
clr a 
 78
move x:tam4d,a 
move x:tam5e,x0 
nop 
add x0,a 
move x:tam6f,x0 
nop 
add x0,a 
nop 
move a,x:tamthoi+1 
move y:-(r7),m1 ;tra lai m1 va r1 
move y:-(r7),r1 
move n6,sr 
endm 
;====================================================================== 
;Ch¬ng tr?h ch?h 
;====================================================================== 
include 'hangnvi.asm' 
include 'hangssi.asm' 
include 'hangsci.asm' 
include 'hangctr.asm' 
include 'hangtime.asm' ;hang timer 
include 'thuthap.asm' 
include 'dgsong.asm' 
include 'maxm.asm' 
include 'asc.asm' 
;****************************************************************************** 
org p:0 
jmp START 
 79
org p:$000C 
jsr ssi_rx_isr 
jsr ssi_rx_isr 
jsr ssi_tx_isr 
jsr ssi_tx_isr 
jsr sci_rx_isr 
jsr sci_rx_isr 
jsr sci_tx_isr 
nop 
org p:$003C 
jsr timer_isr ;ngat timer 
nop 
;****************************************************************************** 
org p:START 
movep #0,x:IPR 
include 'ktaoctr.asm' 
include 'daucuoi2.asm' 
include 'ktao4215.asm' 
movep #relled,x:TCR ;nap gia tri counter 
bclr #3,x:TCSR ;chuc nang GPIO 
bclr #4,x:TCSR ;cac bit dieu khien timer 
bclr #5,x:TCSR ; 
bset #0,x:TCSR ;timer enable 
bset #6,x:TCSR ;bit GPIO 
bset #17,x:IPR 
bset #16,x:IPR 
andi #$fc,mr 
 80
bset #1,x:TCSR ;Interrupts enabled 
;****************************************************************** 
TONE_OUTPUT EQU HEADPHONE_EN+LINEOUT_EN+(4*LEFT_ATTN)+(4*RIGHT_ATTN) 
;TONE_INPUT EQU MIC_IN_SELECT+(15*RIGHT_GAIN)+(15*LEFT_GAIN) 
TONE_INPUT EQU MIC_IN_SELECT+(15*MONITOR_ATTN) 
SCI_CTRL_WR EQU FORMAT_WORD_10+TX_ENABLE+RX_ENABLE+RX_INT_EN 
SCI_CLK_WR EQU SCI_RATE_9 
movep #>SCI_CTRL_WR,x:SCR 
movep #SCI_CLK_WR,x:SCCR 
move #thvao,r2 
move #-1,m2 
move #8,m3 
move #$200,r4 
move #$1ff,m4 
tiept nop 
thuthap dungthu ;,thvao 
dgsong thvao,novathvao,wavlen 
asc llae,tamthoi 
asc llae+1,tamthoi+2 
move #thvao,r2 
move #-1,m2 
move #8,m3 
tieo nop 
jmp tiept 
;-------------------------------------------------------------------------- 
include 'cong3037.asm' 
include 'com.asm' 
include 'txrx.asm' 
 81
end 
KẾT LUẬN 
Bản đồ án này đã trình bày đầy đủ về cơ sở lý thuyết cũng như thiết kế 
dụng cụ tự động phân tích tín hiệu điện tim trên cơ sở DSP56002. Trong thời 
gian làm đồ án tôi đã hoàn thành được những công việc sau: 
 • Tìm hiểu về tín hiệu điện tim, các chuyển đạo và các tín hiệu bệnh 
phục vụ cho mục đích thiết kế dụng cụ tự động phân tích tín hiệu điện tim. 
 • Tìm hiểu về phương pháp nhận dạng tín hiệu điện tim và các thiết bị 
ghi điện tim đã được sử dụng trên thị trường 
 • Thiết kế và chế tạo dụng cụ tự động phân tích tín hiệu điện tim trên 
cơ sở sử dụng bộ vi xử lý tín hiệu số DSP56002 do hãng Motorola sản xuất 
có sẵn trong bộ môn, thực hiện thu thập tín hiệu bất bình thường khác. 
 • Thiết kế chế tạo được máy phát mô phỏng tín hiệu điện tim bình 
thường và một số loại bệnh. 
 Các phần việc cần làm tiếp theo để hoàn thiện thiết bị như: nhận 
dạng,lập thư viện chuẩn và thử nghiệm trên người bệnh cần một thời gian 
nghiên cứu và thực nghiệm nhiều hơn. 
Trong thời gian tới, nếu có điều kiện tôi sẽ nghiên cứu để hoàn thiện và 
mở rộng một số tính năng của thiết bị. 
Với các ứng dụng của thiết bị này sẽ là tiền đề cho việc hướng tới chế 
tạo dụng cụ thực hiện hoàn toàn tự động quá trình phân tích và nhận dạng tín 
hiệu có thể làm việc với các tín hiệu ECG thực thu thập trên cơ sở người 
bệnh thay thế cho phương pháp Holter đang được sử dụng hiện nay. 
Các dụng cụ tự động này không chỉ được dùng trong lĩnh vực y tế, mà 
còn có thể mở rộng ứng dụng trong các lĩnh vực đo lường khác. 
 82
TÀI LIỆU THAM KHẢO 
 1, DSP56002 Digital Signal Processor Family Manual , 1993. 
 2, Mohamed EI-Shakawy : Digital Signal Processor Applications with 
 Motorola’s DSP 56002 Processor. 
 3, GS. TS.Trần Đỗ Trinh; ThS. Trần Văn Đồng : Hướng dẫn đọc điện 
 tim , 2002. 
 4, GS. TS.Trần Đỗ Trinh; ThS. Trần Văn Đồng : Điện tâm đồ trong 
 lâm sàng , 1972. 
5, TS Phạm Ngọc Yến : Dụng cụ tự động phân tích tín hiệu điện tim . 
6, PGS TS Phạm Thượng Hàn : Xử lí tín hiệu số . 
7, Berrtil Jacobson , John G.Webster : Medicine and Clinical 
 Engineering , 1979 
 8, Hoàng Kiếm : Tìm hiểu về nhận dạng , 1977. 
            Các file đính kèm theo tài liệu này:
 may_dien_tim_83_0745.pdf may_dien_tim_83_0745.pdf