Để hỗ trợ cho việc kết nối giao diện giữa chip mạch vi ñiều khiển, chẳng hạn dòng EZ-USB với PC ñược dễ dàng và thuận tiện, nhà sản xuất ñã thiết kế sẵn bộ chương trình ñiều khiển giao diện USB tương thích ñi kèm với loại vi mạch EZ- USB. Hình 2.25 biểu diễn hàm kết nối thiết bị với máy tính. Bộ giao diện này hỗ trợ ñầy ñủ các hàm cho việc kết nối giao diện, ñiều khiển luồng dữ liệu chứa trong tập tin hrezusb52.dll. Lần ñầu tiên khi thiết
bị kết nối với máy tính, bộ giao diện này yêu cầu phải ñăng ký giống như thủ tục kết nối các thiết bị ngoại vi khác.
Hình 2.25: Hàm kết nối thiết bị với máy tính. Để kết nối thiết bị với PC thông qua trình ứng dụng, chương trình sử dụng hàm ezUsb52_Open.vi, hàm này có các tính năng sau: thông số vào gồm VendorID, ProductID, DeviceNr nguyên 32bit (I32) ñược dùng như chỉ số của thiết bị, mặc ñịnh là chỉ số ñược gán tự ñộng sau khi kết nối thành công. Khi hàm này thực hiện thành công trong quá trình kết nối, ngõ ra ezUSB52 Handle thông báo tình trạng ghép nối thành công (OK) hoặc lỗi kết nối (Error), cung cấp một mã số gọi là thẻ File và ñược sử dụng ñể quản lý thiết bị trong
suốt quá trình giao tiếp thông qua cổng USB cho tới khi hàm ezUsb52_closẹvi ñược thực thị Nếu hàm ezUsb52_closẹvi thực hiện thành công, thẻ file ñã cấp trước ñó ñược giải phóng, và mối liên kết giữa thiết bị với PC ñược tách.
Hình 2.26: Biểu diễn hàm cho phép tải vi chương trình vào EZ.
ezUsb52_Open.vi ezUSB OPEN ezUSB52 Handle found Vendor ID (0x0547)
Stop if not found (TRUE) Product ID (0x2131) DeviceNr ezUsb52_DownloadIntelHex.vi ezUSB DIHex hUSB out status hUSB Filename Start CPU (TRUE)
69
Hình 2.26 biểu diễn hàm cho phép tải vi chương trình vào EZ, cụ thể hàm ezUsb52_DownLoadIntelHex.vi cho phép LabView tải vi chương trình vào vi mạch Ez. Lối vào là thẻ tập tin (số nguyên không dấu 4 bit), tên tập tin ñóng gói dạng chuỗi (hex file) và bắt ñầu thi hành lúc tác vụ khởi phát CPU có hiệu lực.
2.4.2.2. Các hàm ñiều khiển luồng dữ liệu
Điều khiển luồng dữ liệu truyền-nhận hai chiều giữa thiết bị và máy tính thông qua cổng USB ñược thực hiện nhờ các hàm ñọc và viết dữ liệụ Các hàm ñọc/viết này ñược chia làm hai thành phần và tùy từng tác vụ cụ thể ñể sử dụng.
• Viết, ñọc 1 byte: hình 2.27biểu diễn hàm dùng ñể viết/ñọc 1 byte, chia làm 2 trường hợp là viết và ñọc. Hàm ezUSB52_WrRamBytẹvi ñể viết 1 byte, truyền
Hình 2.27: Hàm cho phép viết/ñọc một byte dữ liệụ tất cả giá trị qua cổng USB ñến chip mạch, ngõ vào là tập tin có giá trị nạp là số nguyên không dấu dài 18 bit, ñịa chỉ vùng nhớ là số nguyên không dấu dài 16 bit; ngõ ra là dữ liệu viết có dạng nguyên không dấu dài 8 bit. Hàm ezUsb52_RdRamBytẹvi dùng ñể ñọc 1 byte từ ñịa chỉ vùng nhớ xác ñịnh trong vi mạch ñến LabView. Ngõ vào là thẻ tập tin và ñịa chỉ vùng nhớ cần ñọc, ngõ ra là giá trị ñọc ñược có dạng nguyên không dấu, 8bit.
• Đọc nhiều byte:
Hàm ezUsb52_RdRamBytes.vi trong hình 2.28 dùng ñể ñọc nhiều byte dữ liệu cùng một lúc tại một ñịa chỉ xác ñịnh. Ngõ vào là thẻ tập tin, ñịa chỉ vùng nhớ cần ñọc là số nguyên không dấu dài 16bit và số byte cần ñọc cũng là số nguyên không dấu dài 16bit. Ngõ ra là mảng dữ liệu một chiều,
nguyên không dấu 8 bit. Tương tự như vậy, hàm ezUsb52_RdRamDWord.vi dùng ñể ñọc 4 byte dữ liệu một lúc tại một ñịa chỉ xác ñịnh. Ngõ vào là thẻ tập tin, ñịa chỉ vùng nhớ cần ñọc (nguyên không dấu 16bit) và ngõ ra là dữ liệu nguyên 4 bytẹ
Hình 2.28: Hàm cho phép ñọc/viết nhiều byte dữ liệu cùng lúc.
ezUsb52_WrRamBytẹvi ezUSB Wr_B hUSB out Output hUSB Adresse Value ezUsb52_RdRamBytẹvi ezUSB Rd_B hUSB out Output hUSB Adresse ezUsb52_RdRamBytes.vi ezUSB Rd Bytes hUSB out Data hUSB Adresse # of Bytes ezUsb52_RdRamDWord.vi ezUSB RdDW hUSB out Data U32 hUSB Adresse
70
2.4.2.3. Phần mềm ứng dụng ñiều khiển thiết bị
2.4.2.3ạ Màn hình giao diện
Giao diện ñiều khiển thiết bị ñược thực hiện qua nhiều tùy chọn gồm trình ñơn và cửa sổ con, và dữ liệu ñược nhập qua các trình ñơn hoặc cửa sổ ñể tiến hành ño ñạc. Hình 2.29 là giao diện của chương trình phát triển bằng LabView ño với hệ ñếm nơtron trên kênh thực nghiệm nằm ngang số 4. Các giá trị ñịnh lượng trong phổ ñược trình bày trong chương 3, ở ñây chỉ nêu sơ bộ như sau:
Hình 2.29: Trang giao diện của chương trình DSPMCẠ
• Thông tin thời gian: ngày ño 11/15/2010, thời gian ñặt trước: 1000 giây, thời gian chết xấp xỉ 7%, thời gian thực của hệ: 1069 giâỵ
• Thông tin ñỉnh phổ và giá trị ngưỡng: ngưỡng dưới ở kênh 38, ngưỡng trên tối ña (8191), tâm ñỉnh nằm tại kênh 1983 có số ñếm tương ứng 641, năng lượng hấp thụ 764.25 keV. Các giá trị trong vùng quan tâm (ROI): diện tích ñỉnh bằng 12259, phông xấp xỉ 90935, tổng số ñếm toàn ñỉnh bằng 103195. Tổng số ñếm toàn phổ là 863490. Các vị trí con trỏ nằm trong cửa sổ tính diện tích ñỉnh hấp thụ: trỏ trái C1 ở
71
kênh 1800, có số ñếm tương ứng là 322; và trỏ phải C2 ở kênh 2101, có số ñếm 81. Trạng thái hoạt ñộng: dừng.
2.4.2.3b.Chức năng phần MENU
Các trình ñơn, cửa sổ của chương trình ñược trình bày lần lượt như sau:
• File: (Tập tin)
Hình 2.30: Trình ñơn mở tập tin.
• Setting: (Xác lập)
Hình 2.31: Trình ñơn xác lập các tham số thời gian.
• Set preset time: (Đặt trước thời gian ño)
Thời gian ño mặc ñịnh là 1000 ms. Nếu ñồng ý, nhấn OK ñể cập nhật.
Hình 2.32: Trình ñơn ñặt thời gian ñọ
• Enter parameters: (Nhập tham số). Trình ñơn này dùng ñể truyền các tham số người dùng cho thiết bị.
Hình 2.33: Trình ñơn ñặt ngưỡng.
Mở tập tin ñã ño hiển thị lên màn hình;
Lưu dữ liệu ño với tên tập tin người dùng tự ñặt; Thoát khỏi chương trình.
Hiển thị cửa sổ ñặt thời gian ño; Hiển thị cửa sổ ñặt tham số ño; Hiển thị cửa sổ chuẩn năng lượng.
72
• Trình ñơn chuẩn năng lượng: Chuẩn tuyến tính y = a0 + a1x.
Để chuẩn năng lượng bậc nhất chọn
Setting>Calib. Giao diện xuất hiện trong
hình có chế ñộ chuẩn tuyến tính LINEAR MODẸ Nhập các giá trị kênh/số ñếm tương ứng, kích hoạt nút Định chuẩn (Calibration). Thoát khỏi cửa sổ chuẩn năng lượng, trở về giao diện chính dùng nút Exit.
Hình 2.34: Trình ñơn chuẩn năng lượng.
• Đánh dấu vùng quan tâm (ROI).
Hình 2.35: Trình ñơn xử lý vùng quan tâm.
2.4.2.3c.Phần hiển thị các tham số
Tiến hành tính toán các số liệu Net, Background, Gross, Total của ñỉnh kẹp giữa 2 con trỏ;
Xóa tính toán.
- Time and Information: gồm ngày tháng ño, thời gian ño, thời gian trôi, thời gian chết, thời gian bắt ñầu ño, thời gian ño hiện tại và thời gian dừng (chính xác ñến ms).
- Disc.: Hiển thị ngưỡng thấp và ngưỡng caọ - Peak: Hiển thị tham số ñỉnh tại vị trí con trỏ.
- ROI: Các tham số sau khi xử lý ñỉnh (peak process):
Net Area: Diện tích ñỉnh; Background: Số ñếm phông;
Gross Area: Tổng số ñếm giữa hai trỏ ñỉnh; keV: Độ phân giải nửa chiều cao ñỉnh.
- Cursor: Thông số 2 con trỏ xác ñịnh ñỉnh.
73
2.4.2.3d. Phần ñiều khiển ño
Hình 2.37: Phím khởi phát/dừng chương trình.
Để khởi ñộng ño, trình ứng dụng phát các lệnh ñiều khiển thiết bị ñược ñịnh nghĩa như sau:
+ Khởi ñộng ño: viết 1 byte vào ñịa chỉ 0x1620 (1: khởi ñộng ño, 0: dừng ño). + Dừng ño bằng tay hoặc tự ñộng: trong chế ñộ dừng ño tự ñộng, vi ñiều khiển kiểm tra giá trị thời gian ño và so sánh với thời gian ñặt trước, khi thời gian ño bằng với thời gian ñặt trước quá trình ño tự ñộng dừng. Trong chế ñộ dừng ño bằng tay, chương trình ñiều hành trên PC ñặt ñịa chỉ 0x1620 = 0.
+ Đọc dữ liệu phổ: do vùng nhớ trong chip mạch nhỏ nên ñể nhận 8192 x 4 byte, chương trình trong vi ñiều khiển chia nhỏ dữ liệu tùng gói 4096 byte cho một lần gửị Để ñồng bộ chu trình ñọc khối dữ liệu của phổ trong quá trình phân tích, sau khi gửi một khối dữ liệu, trình trong chip mạch ñặt ñịa chỉ 0x1660 lên 1, ñợi cho ñến khi trình LabView nhận toàn bộ một gói 4096 byte và ñặt lại ñịa chỉ 0x1660 xuống 0.
+ Đọc các thông số thời gian ño: Sau khi chip mạch gửi ñủ ñủ 8192 x 4 byte số liệu, chương trình gửi tiếp 4 byte thời gian trôi vào ñịa chỉ 0x1650. Trình labview dùng hàm exUsb52_RdRamDWord ñể ñọc một lần 4 byte thời gian trôi từ ñịa chỉ 0x1650 hiển thị lên màn hình.
2.4.2.3ẹPhần ñiều khiển con trỏ và co giãn màn hình
Phần này bao gồm việc ñiều khiển con trỏ, co-giãn và di chuyển màn hình (bằng tay, dịch chuyển vị trí). Co-giãn toàn màn hình, ngang, dọc, lên xuống, và di chuyển con trỏ theo từng bước.
74
2.4.2.3f. Giao diện ñồ họa hiển thị và xử lý phổ
Giao diện ñồ họa dùng hàm Waveform Graph.vi là hàm công cụ hiển thị ñồ thị dạng tọa ñộ phẳng XY ña năng ñược hỗ trợ bởi LabView. Hàm này có ñầy ñủ các tính năng thông dụng phục vụ biểu diễn phổ, xử lý con trỏ, các tính năng co giãn và dịch phổ, hiện phổ theo thang tuyến tính hoặc logarit.
2.4.3. Phát triển chương trình vi ñiều khiển bằng C Keil51
2.4.3.1. Nhiệm vụ của chương trình vi ñiều khiển bằng C Keil51
Dòng vi ñiều khiển ñược sử dụng trong thiết kế này là EZ-USB (vi mạch ñặc thù là AN2131Q). Tình năng ưu việt của µC này là truyền nhận dữ liệu từ ngoại vi với PC ở tốc ñộ toàn phần, chế ñộ truyền khối qua cổng USB tương thích 2.0. Bên trong vi mạch này có 3 bộ ñếm thời gian: timer0 (16bit), timer1 (8bit), timer 2 (16bit). Ở ñây chương trình sử dụng timer0 ñể ñịnh trình thời gian thực, cho phép người sử dụng nhập giá trị thời gian tùy ý từ 1 ñến 65535s. Vi chương trình ñược phát triển theo trình biên dịch Ckeil 51 sẽ ñiều khiển timer0 dừng ñúng với thời gian ñịnh trước theo chế ñộ tự ñộng; chẳng hạn khi ñặt trước 5000s, sau khi chương trình thu nhận và xử lý dữ liệu (ñược phát triển bằng LABVIEW) ñã vận hành ñược 5000s thì chương trình này sẽ phát cờ dừng, vào thời ñiểm ñó AN2131Q sẽ so sánh cờ trạng thái theo mức 1 ñược quy ñịnh trước là dừng và timer0 sẽ ngừng hoạt ñộng.
Phần ñiều khiển biến ñổi tương tự-số tức là biến ñổi tín hiệu tương tự ngõ vào thành mã số nhị phân thông qua vi mạch AD7899 dưới sự ñiều khiển áp ñịa chỉ và thâm nhập ô nhớ của RAM bằng trình vi ñiều khiển ñã phát triển cho AN2131Q. Quá trình biến ñổi này thực chất là hình thành 13 bit ñịa chỉ ngõ ra của ADC với nội dung tương ứng ñược chứa trong tín hiệu tên là DATA READỴ Nội dung này sẽ ñược AN2131Q truyền tới PC qua cổng USB theo chế ñộ truyền khối khi 13 bit ñịa chỉ ngõ ra ADC ñược áp tới 2 byte ñệm ngõ vào của phần giao diện. Trên cơ sở ñó, trình ứng dụng LABVIEW sẽ vẽ phổ lên màn hình. Các tính toán: thời gian, ngày tháng, thời ñiểm khởi phát, số ñếm tương ứng kênh ño, các chế ñộ ñặt ngưỡng, tính diện tích ñỉnh phổ, tính phông dưới ñỉnh, chuẩn năng lượng, tính diện tích toàn phổ ñều ñược thực hiện bằng trình thu nhận và xử lý dữ liệu LabView với sự liên kết
75
ñiều khiển của vi chương trình ñã phát triển cho µC. Vi chương trình này cho phép liên kết với chương trình ứng dụng thu phổ phát triển bằng LabView vừa trình bày trong mục 2.4.2 ñể ñiều khiển thiết bị MCẠ Mã nguồn của vi chương trình ñược viết bằng CKeil.
2.4.3.2. Lưu ñồ thuật toán và giải thích lưu ñồ
Lưu ñồ thuật toán của trình vi ñiều khiển ñược mô tả trong hình 2.39. Khi bắt ñầu chương trình MCA, vi ñiều khiển
AN2131Q khởi ñộng phép ño phổ ña kênh. Lúc ñó, bộ timer0 của AN2131Q ñược xác lập ở chế ñộ thời gian, các biến và cổng USB cũng ñược xác lập, thời gian ñặt trước mặc ñịnh cho phép ñược ñịnh sẵn (thông thường bằng 1000 s). Trình ñiều khiển chờ trình LabView gửi ký tự cho phép thu nhận. Nếu nhận ñược ký tự cho phép thu, bộ nhớ phổ và bộ thời gian cùng ñược xóa về zéro, và phần mạch ñiện tử MCA ñược µC ñể ñọc thời gian thực (gồm thời gian chết và thời gian trôi qua) và phổ. Sau khi ñọc, gói dữ liệu ñược gửi tới máy tính qua cổng USB. Thủ tục này diễn tiến liên tục cho ñến khi phép so thời gian trôi qua và thời gian ñặt trước thỏa mãn ñiều kiện dừng hoặc tự ñộng hoặc bằng tay thì phép ño chấm dứt; trái lại trình vẫn tiếp tục tác vụ gửi dữ liệu tớị
Hình 2.39: Lưu ñồ thuật toán trình vi ñiều khiển.
Tóm tắt chương 2
Tóm lại, trong chương hai việc thiết kế-chế tạo các khối ñiện tử cho hệ ghi-ño bức xạ gamma và nơtron ñã ñược trình bàỵ Khi chế tạo các khối ñó, các phương
Bắt ñầu Trình MCA
Khởi phát phép ño phổña kênh:
-Xác lập chếñộ thời gian ño cho bộ TIMER 0, -Đặt các biến và cổng ñiều khiển,
-Đặt trước thời gian cho phép ño, -Kích hoạt cổng USB. Thu nhận -Xóa thời gian và bộ nhớ, -Cho phép phần cứng MCA hoạt ñộng. Đọc dữ liệu phổ từ bộ nhớ và thời gian thực
Thời gian trôi qua = Thời gian ñặt trước? Cấm bộ thời gian và ñiều khiển dừng ño Kết thúc Bằng taỷ N Y N Gửi khối dữ liệu tới máy tính qua cổng USB N Y Y
76
pháp ñiện tử mới bằng kỹ thuật DSP qua FPGA dùng ngôn ngữ VHDL ñược áp dụng. Khối FPGA-MCA8K ñược thiết kế-chế tạo qua ứng dụng FPGA dùng phương pháp liên kết cổng logic trong môi trường Max+plusII-Altera; các khối DSP-MCA1K, DSP-MCA8K ñược thiết kế-chế tạo dựa trên DSP qua FPGA dùng ngôn ngữ VHDL ñể chương trình hóa các thuật toán DSP nhờ môi trường phát triển tích hợp ISE phiên bản 9.2i và phiên bản 10.1i của Xilinx. Ngoài ra, hệ ñếm nơtron dùng ống ñếm 3He ñược xây dựng dựa trên các µC dòng PIC hoặc EZ-USB. Phần giao diện máy tính của các thiết bị ñược chế tạo có sử dụng nguyên tắc phân nhịp, phương pháp bắt tay ghép qua các cổng song song, phương pháp truyền khối ghép qua cổng USB.
Một số chương trình phát triển ứng dụng ñược viết bằng ngôn ngữ hướng ñối tượng VC++, LabView; vi chương trình ñiều khiển µC ñược viết bằng trình Ckeil51, CCS Compiler và lập trình VHDL ñể logic hóa thuật toán DSP qua các dòng FPGA ñiển hình ñã ñược trình bàỵ Tầng tiền lọc tương tự ngõ vào (APP) cho phép hình thành xung phân rã hàm mũ có thời hằng xấp xỉ 3.2 µs, tầng biến ñổi A/D dùng ADC nhanh ñể số hóa tín hiệu phân rã hàm mũ ngõ vào cho phép lấy mẫu nhanh và tạo bản sao dạng số. Các thuật toán khử tích chập trong cửa sổ ñộng (MWD), thuật toán trừ-làm chậm, thuật toán hình thành các bộ lọc ñiển hình gồm bộ khử tích chập bằng mạch lọc cao qua (HPD), các bộ lọc thấp qua (LPF) và cao qua (HPF) có ñáp ứng xung hữu hạn (FIR) ñã ñược áp dụng ñể biến ñổi tín hiệu ra từ tiền khuếch ñại thành xung tam giác hoặc hình thang dùng trong cả hai kênh chậm và nhanh của khối xử lý xung số (DPP). Các khối nhớ FIFO theo cơ chế truyền làm chậm ñược khai thác, việc ứng dụng ngôn ngữ VHDL ñể hình thành bộ nhớ hai cổng (DPRAM) trong FPGA nhằm lưu phổ và logic ñiều khiển phát hiện ñỉnh theo cơ chế trạng thái hữu hạn (FSM) cũng ñược trình bày trong thiết kế các khối DSP-MCẠ Cuối cùng là các hệ ñếm nơtron dùng trong thí nghiệm trên kênh thực nghiệm nằm ngang Lò phản ứng ñược ñề cập. Các thiết kế, chế tạo này ñã ñược áp dụng trong thí nghiệm, ño ñạc phục vụ nghiên cứu vật lý hạt nhân thực nghiệm. Kết quả kiểm tra và áp