Tự học vi xử lý trong đo lường điều khiển

Việc ứng dụng máy tính vào kỹ thuật đo lường và điều khiển đã đem lại các kết quả đầy ưu việt. Các thiết bị hệ thống đo lường và điều khiển ghép nối với máy tính có độ chính xác cao, thời gian thu thập số liệu ngắn, nhưng còn đáng quan tâm hơn là mức độ tự động hóa trong việc thu thập và xử lý các kết quả cả việc lập bảng thống kê và việc in ra giấy.

Chữ "vi " trong khái niệm trên có nguồn gốc từ chữ "micro" ký hiệu là "μ", có ý nghĩa là "một phần triệu" hoặc "rất nhỏ". Vi xử lý (Microprocessor) có nghĩa là "bộ xử lý rất nhỏ", được ký hiệu là "μP".

Về cơ bản, μP thường có cấu trúc được thể hiện trong hình trên. Tùy từng loại μP, chúng có thể có thêm một vài đơn vị chức năng khác nữa, nhưng cấu trúc tối thiểu của chúng bao giờ cũng có ba khâu:

Khâu tính toán: gồm có đơn vị số học và lôgic (Arithmetic Logic Unit: ALU), các thanh ghi số liệu và địa chỉ.

Khâu điều khiển: gồm có bộ giải mã lệnh và bộ đếm chương trình.

Khâu đệm: với các bộ đệm (thường là ba trạng thái: Tri-State), ghép nối Bus trên phiến của μP với các Bus điều khiển, số liệu và địa chỉ nằm bên ngoài.

Hai khâu tính toán và điều khiển thường được gọi ghép chung là đơn vị xử lý trung tâm (Central Processing Unit: CPU). Khi nảy sinh nhu cầu sử dụng μP trong các hệ thống điều khiển tự động (ĐKTĐ), ta sẽ phải sử dụng thêm các phần tử ngoại vi, tạo thành giao diện thích hợp giữa μP với môi trường công nghệ bên ngoài phiến (Chip).

Để phân biệt được sự khác nhau cơ bản giữa μP và vi xử lý tín hiệu (Digital Signalprocessor, viết tắt: DSP) ta phải xem xét kỹ hơn khâu tính toán thuộc CPU của μP.

Đối với μP thông thường, các phép tính số học thường được thực hiện giữa các thanh ghi số liệu có bề rộng chính bằng bề rộng của số liệu. Ví dụ: nếu μP 16-Bit thì các thanh ghi số liệu cũng là 16-Bit. Điều này dẫn đến nhược điểm sau đây: Bất kỳ thanh ghi nào cũng có thể nhận kết quả của phép tính số học như cộng trừ. Điều này gây khó khăn khi thực hiện các phép cộng trừ có tích lũy, nhất là khi kết quả của các phép tính đó vượt quá kích cỡ số liệu cho phép (ở ví dụ trên: 16-Bit)

Khi thực hiện phép nhân, kết quả bao giờ cũng có bề rộng gấp đôi của số liệu chuẩn. Ví dụ: phép nhân 16-Bit x 16-Bit cho kết quả 32 Bit. Các μP có hỗ trợ phép nhân thường cất kết quả ở 2 thanh ghi số liệu riêng biệt. Điều này làm cho người lập trình sẽ phải tốn kém thêm vài thao tác lệnh nữa để làm tròn số mới đi đến kết quả 16-Bit cuối cùng mà ít gây sai số.

Bí quyết thành công của DSP có thể được diễn giải một cách đơn giản công thức:

Σaix1 (1)

Đó là công thức nổi tiếng tính "tổng tích lũy" được sử dụng trong hầu hết các thuật toán xử lý tín hiệu số (digital) như các khâu lọc tín hiệu, biến đổi Fourier ... Phần lớn các thuật toán điều khiển/ điều chỉnh (ĐK/ĐC) cũng có thể quy về công thức đó. Nếu μP thông thường muốn thực hiện thuật toán (1) với tốc độ cao, μP đó phải có khả năng thực hiện đồng thời một phép nhân và một phép cộng chỉ trong một nhịp lệnh duy nhất. Vì giá trị của tổng (1) liên tục được tăng thêm lượng bằng kết quả của phép nhân. μP sẽ phải có bộ phận cứng và một thanh ghi tích lũy. Trong các μP thông thường không có thanh ghi này, chí ít cũng thiếu bộ nhân. Khâu tính toán của DSP vì vậy được bổ sung thêm một thanh ghi tích lũy (Accumlator, viết tắt: ACC) có bề rộng gấp đôi bề rộng số liệu chuẩn. Ví dụ: nếu bề rộng số liệu là 16-Bit, ACC sẽ là 32-Bit. Duy nhất thanh ghi ACC là nơi thực hiện và chứa kết quả của mọi phép cộng/trừ, vì vậy rất thuận tiện cho các phép tính tích lũy sau khi nhân, cho phép giảm một cách đáng kể (so sánh với μP thông thường) thời gian thực hiện các phép tính xử lý tín hiệu.

Như vậy, về bản chất DSP là μP có thêm thanh ghi ACC và bộ nhân cứng. Nhiều DSP kết hợp cả hai khâu đó trong một đơn vị gọi là MACC, ở trên ta đã nhắc đến nhược điểm cố hữu của μP khi thực hiện phép nhân: đó là việc bề rộng của kết quả nhân tăng gấp đôi và được cất ở 2 thanh ghi khác nhau khiến cho thao tác làm tròn hoặc xử lý kết quả rất tổn thất thời gian. Cũng tại đây, nổi bật lợi thế của DSP: nhiều DSP cho phép thực hiện các thao tác đó đồng thời với nhân và tích lũy chỉ trong một nhịp lệnh duy nhất. Tuy nhiên, có được thế mạnh đó còn là nhờ thay đổi cấu trúc Bus trên chip.

Ta hãy xét cách thực hiện một lệnh nhân của μP thông thường khi tính công thức (1). Công thức đó có chứa các hệ số ai cố định, vì vậy chúng sẽ được cất ở bộ nhớ chương trình. Các dữ liệu xi được cất ở bộ nhớ số liệu. Chương trình và số liệu của các μP thông thường đều sử dụng chung 1 Bus địa chỉ là 1 Bus số liệu. Vì vậy trình tự tính thường là như sau:

1. Xâm nhập vào bộ nhớ lần thứ 1 để đọc mã lệnh, mã lệnh được đưa từ bộ nhớ tới μP.

2. μP giải mã lệnh và biết là phải thực hiện phép nhân.

3. Xâm nhập lần thứ 2 vào bộ nhớ chương trình để đọc giá trị của ai

4. Xâm nhập lần thứ 3 vào bộ nhớ số liệu để đọc giá trị của xi

5. Thực hiện phép nhân.

Ta đã biết, cách tổ chức Bus như trên được gọi là cấu trúc Vonneumann (hình a).

Ngược với μP thông thường, DSP có nhiệm vụ chuyển số liệu tính tới khâu tính càng nhanh càng tốt. Để làm được điều này, buộc phải tốn kém hơn: phải chia không gian nhớ trên chip ra làm 2 và vì thế phải có 2 Bus địa chỉ và 2 Bus số liệu (hình b) độc lập cho 2 vùng nhớ. Nhờ cách tổ chức này, DSP có khả năng thâm nhập vào 2 vùng nhớ để đọc 2 toán hạng chỉ trong 1 nhịp duy nhất vì vậy tiết kiệm được nhiều thời gian. Cấu trúc Bus này có tên là cấu trúc Harward.

Trên thực tế, vì lý do giá thành chỉ có thể thực hiện cấu trúc Bus Harward cho các bộ nhớ trên phiến (on-chip). Do đó, khi tra cứu về cấu trúc bên trong của DSP, bạn đọc sẽ thường gặp khái niệm Promgram Bus (hình b): (Bus số liệu 2, Bus địa chỉ 2) và Data bus (Bus số liệu 1, Bus địa chỉ 1). Đối với bên ngoài phiến, DSP vẫn sử dụng Bus địa chỉ, Bus số liệu chung cho cả hai vùng nhớ. Điều này giải thích cho ta thấy: Tại sao DSP chỉ có khả năng thực hiện phép nhân trong một nhịp duy nhất, nếu các toán hạng đều nằm ở vùng nhớ on-chip.

Ngoài ra, khi thực hiện phép cộng tích lũy (1),đồng thời DSP có thể phải thực hiện thêm các thao tác dịch trái, dịch phải (vị trí dấu phẩy) hay làm tròn tổng cuối cùng. Nhiều DSP có khả năng kết hợp thao tác đó trong một lệnh duy nhất.

Tóm lại DSP được phân biệt với μP thông thường là nhờ ở:

có thêm thanh ghi tích lũy ACC và bộ nhân cứng

có cấu trúc Bus trên phiến theo kiểu cấu trúc Harward

có khả năng tích hợp nhiều thao tác lệnh trong cùng một lệnh duy nhất. Tất cả các điểm khác nhau đó chỉ nhằm tạo cho DSP khả năng thực hiện với tốc độ có phép tính tổng tích lũy (1)

Dễ dàng thấy rằng, ứng dụng của DSP không chỉ giới hạn trong việc thực hiện các thuật toán xử lý số liệu (xử lý tín hiệu) tốc độ cao. DSP có thể phát huy được ưu thế của nó trong tất cả các ứng dụng ĐK/ĐC thời gian thực, nơi mà:

a) thời gian tính toán (thời gian trích mẫu) chỉ nằm trong khoảng vài trăm ms và b) phép cộng tích lũy (thuật toán điều chỉnh digital) thường xuyên được cần đến.

Trong quá trình đi lên của công nghệ tự động, μP được sử dụng ngày càng nhiều trong các thiết bị ĐK/ĐC. Nhằm tăng độ tin cậy, đồng thời giảm giá thành của hệ thống, người ta đã tìm cách tích hợp các phần tử ngoại vi cơ bản trên phiến. Đó là những phần tử ngoại vi thường gặp nhất trong kỹ thuật:

1. Khâu biến đổi tượng tự số (Analog to Digital Con-verter, viết tắt: ACD): Khâu này có thể gồm 1-2 bộ ADC với khả năng xen nhiều kênh. Độ phân giải thường là 8-10 Bit.

2. Khâu điều chế điện áp hình sin (Puls Width Modulation, viết tắt: PWM):

khâu PWM có thể có nhiều kênh, đặc biệt là khả năng tạo điện áp xoay chiều 3 pha với cơ chế bù thời gian an toàn bảo vệ van bán dẫn công suất lớn. Độ phân giải từ 50nsec - vài msec.

3. Hệ thống thanh ghi CAPCOM(Capture/compara Register)

phục vụ việc ghi nhận tín hiệu từ bên ngoài đến (rất quan trọng trong đo lường) hoặc tạo tín hiệu phát ra ngoài (rất quan trọng trong điều khiển).

4. Hệ thống các thanh ghi và cổng đặc biệt:

Khi các phần tử ngoại vi được tích hợp chung với μP trên cùng một phiến, linh kiện mới này được gọi là "Vi điều khiển" (Microcontroller. Viết tắt: μC).

Tóm lại: μC được phân biệt với μP là do các đặc điểm:

có thêm các phần tử ngoại vi cơ bản trên phiến

có cơ chế ngắt không cần thủ tục ngắt. Điều này cho phép nâng cao tốc độ tính toán, tăng độ tin cậy, đồng thời giảm giá thành của hệ thống.

Cách định nghĩa μC như ta đã nêu ở trên cũng có thể được áp dụng đối với DSP. Thay vì viết công thức:

μC = μP + ngoại vi + ngắt không cần thủ tục ta cũng có thể viết: μC = DSP + ngoại vi + ngắt không cần thủ tục

Công thức mới làm tăng tối đa thể mạnh vốn có của DSP. Đôi khi, các μC loại này còn được gọi là DSP controller, tuy nhiên cách gọi này ít phổ dụng.

Còn những khái niệm nào ngoài mP, mC và DSP.

Bản thân chữ Embedded Controller có ý nghĩa là "cấy vào, nhúng vào" và nhằm chỉ nhứng ứng dụng mà μP, μC hoặc DSP khi được "nhúng vào" hệ thống, hệ thống đõ sẽ phải thỏa mãn hai đòi hỏi:

Đòi hỏi về tính chuyên dụng (application specfic)

Đòi hỏi về tốc độ đáp ứng thời gian thực (real time)

Nếu chỉ xét về hai phương diện trên, ta có thể kết luận: Hầu hết các ứng dụng có "Embedded Controller", bất luận chip được nhúng vào hệ là μP, μC hay DSP.

Đến nay ta mới chỉ xét các hệ sử dụng 1 chip và chưa xét đến nhiệm vụ tính toán mà chip đó phải thực hiện. Trong thực tế, có những nhiệm vụ đòi hỏi công suất tính toán rất lớn và bài toán có thể trở nên phức hợp đến mức: không thể thực hiện phương thức tính toán theo kiểu thứ tự trước sau (ta gọi tắt là tuần tự) cho các bài toán con. Khi đó buộc nhà thiết kế hệ thống phải tính đến khả năng thực hiện đồng thời (ta gọi là song song) các bài toán con đó.

Transputer chính là một loại vi xử lý có cấu trúc thích hợp để xây dựng các hệ thống tính toán song song:

Trên đây là sơ đồ giới thiệu sơ đồ khối thông thường của Transputer, trong đó tùy theo loại mà có thể có khối xử lý dấu phẩy cộng (FPU: Floating Point Unit) hoặc không.

Vậy các khái niệm: vi xử lý (Micro Processor: μP), vi điều khiển (Microcontroller: μC), vi xử lý tín hiệu (Digital Signalprocessor: DSP), Embedded Controller và Transputer, phải phân biệt rõ ràng sự khác nhau giữa chúng để ta có quyết định đúng khi phải lựa chọn chip để giải quyết nhiệm vụ thiết kế đặt ra.