Đồng hồ thời gian thực

Đồng hồ thời gian thực (tiếng Anh: "real-time clock," viết tắt: RTC) là một thiết bị điện tử (thường ở dạng mạch tích hợp) theo dõi thời gian đã trôi qua trên thực tế.

Mặc dù thuật ngữ này thường đề cập đến các thiết bị trong máy tính cá nhân, máy chủ và hệ thống nhúng, RTC có mặt trong hầu hết mọi thiết bị điện tử cần giữ thời gian chính xác, khi cả khi các thiết bị điện tử đó không được cấp nguồn.

== Thuật ngữ ==
Thuật ngữ "đồng hồ thời gian thực" được sử dụng để tránh nhầm lẫn với đồng hồ điện tử khác sử dụng xung nhịp đồng hồ (clock signal) là tín hiệu cho các thiết bị điện tử kỹ thuật số, và không tự tính được thời gian bằng các đơn vị con người sử dụng. Đừng nhầm lẫn RTC với điện toán thời gian thực, dù cùng được viết tắt bằng ba chữ cái giống nhau nhưng nó không liên quan trực tiếp đến theo dõi mốc thời gian.

== Mục đích ==
Mặc dù không nhất định cần RTC để giữ thời gian hệ thống được chính xác, sử dụng nó có lợi ích:

- Ít tiêu thụ điện năng (rất quan trọng khi dùng nguồn điện ngoài như pin).
- Dành tài nguyên hệ thống cho các tác vụ quan trọng.
- Đôi khi chính xác hơn các phương pháp khác.

Máy thu GPS có thể rút ngắn thời gian khởi động bằng cách so sánh thời gian hiện tại theo RTC của nó với mốc thời gian có tín hiệu hợp lệ gần nhất. Nếu ít hơn một vài giờ, thì thông tin từ vệ tinh trước đó vẫn có thể sử dụng được.

== Nguồn điện ==
RTC thường có một nguồn năng lượng thay thế nên nó có thể tiếp tục giữ thời gian trong khi nguồn năng lượng chính bị ngắt hoặc không có. Trong các hệ thống cũ, nguồn năng lượng này thường là pin lithium. Một số hệ thống mới hơn sử dụng siêu tụ điện vì chúng có thể sạc lại và có thể hàn. Nguồn năng lượng thay thế cũng có thể cung cấp năng lượng cho RAM được hỗ trợ bằng pin.

== Thời gian ==
Hầu hết RTC sử dụng bộ tạo dao động tinh thể, ngoài ra còn có tùy chọn sử dụng tần số dòng điện. Tần số tinh thể thường là 32,768 kHz, cùng tần số được sử dụng trong đồng hồ đeo tay và đồng hồ thạch anh. Chính xác 2 chu kỳ mỗi giây, đây là một tốc độ thuận tiện để sử dụng cho các mạch đếm nhị phân đơn giản. Tần số thấp giúp tiết kiệm điện, trong khi vẫn nằm trên phạm vi nghe của con người. Nĩa điều chỉnh thạch anh của các tinh thể này không thay đổi kích thước nhiều từ nhiệt độ, do đó nhiệt độ không thay đổi tần số nhiều.

Một số RTC sử dụng bộ cộng hưởng vi cơ trên chip silicon của RTC. Điều này làm giảm kích thước và chi phí của một RTC bằng cách giảm số lượng bộ phận của nó. Bộ cộng hưởng vi cơ nhạy cảm với nhiệt độ hơn nhiều so với bộ cộng hưởng thạch anh. Vì vậy, chúng có thể bù cho sự thay đổi nhiệt độ bằng nhiệt kế điện tử và logic điện tử.

Thông số kỹ thuật chính xác của một tinh thể RTC điển hình là từ ±100 đến ±20 phần triệu (8,6 đến 1,7 giây mỗi ngày), nhưng những IC RTC bù nhiệt độ lại chính xác đến dưới 5 phần triệu. Trong điều kiện thực tế, như vậy là đủ để thực hiện điều hướng thiên thể, nhiệm vụ cổ điển của đồng hồ bấm giờ. Năm 2011, đồng hồ nguyên tử quy mô chip đã khả dụng. Mặc dù đắt hơn rất nhiều và ngốn điện (120 mW so với <1 μW), nó vẫn giữ thời gian trong phạm vi 50 phần nghìn tỷ ().

== Ví dụ ==
Nhiều nhà sản xuất mạch tích hợp sản xuất RTC, gồm Epson, Intersil, IDT, Maxim, NXP Bán dẫn, Texas Instruments, STMicroelectronics và Ricoh. Một chip RTC phổ biến được sử dụng trong các máy tính bảng đơn là Maxim tích hợp DS1307.

RTC tương thích với máy tính đã được IBM PC/AT giới thiệu vào năm 1984, sử dụng Motorola MC146818 RTC. Sau đó, Dallas Semiconductor đã tạo ra RTC tương thích, thường được sử dụng trong các máy tính cá nhân cũ và hay gặp trên bo mạch chủ với nắp pin màu đen đặc trưng và logo được in lên.

Trong các hệ thống mới hơn, RTC được tích hợp vào chip Southbridge.

Một số bộ vi điều khiển có đồng hồ thời gian thực được tích hợp, thường chỉ là những bộ có nhiều tính năng và thiết bị ngoại vi khác.

=== RTC dựa trên radio ===
Một số máy tính hiện đại nhận thông tin đồng hồ bằng radio kỹ thuật số và sử dụng nó để phát triển các tiêu chuẩn thời gian. Có hai phương pháp phổ biến: Hầu hết các giao thức điện thoại di động (ví dụ: LTE) trực tiếp cung cấp giờ địa phương hiện tại. Nếu có radio internet, máy tính có thể sử dụng giao thức thời gian mạng. Các máy tính được sử dụng làm máy chủ thời gian cục bộ đôi khi dùng GPS hoặc truyền vô tuyến tần số cực thấp được của một tổ chức tiêu chuẩn quốc gia (ví dụ như đồng hồ vô tuyến).

=== RTC dựa trên phần mềm ===
Hệ thống này nổi tiếng với các lập trình viên hệ thống nhúng, những người phải tạo dựng RTC trong các hệ thống bị thiếu. Hầu hết phần cứng của các máy tính có một hoặc nhiều bộ đếm thời gian chứa tinh thể thạch anh hoặc bộ cộng hưởng gốm với thời gian tuyệt đối không chính xác (hơn 100 phần triệu) rất dễ lặp lại (thường nhỏ hơn 1   ppm). Phần mềm có thể tính toán để biến chúng thành RTC. Bộ hẹn giờ phần cứng có thể tạo ra sự ngắt quãng định kỳ, ví dụ 50 Hz để làm giống một RTC cũ (xem bên dưới). Tuy nhiên, nó sử dụng toán học để điều chỉnh cho chính xác:

thời gian = thời gian + tỷ lệ.

Khi biến "thời gian" vượt quá hằng số, thường là lũy thừa của hai, thời gian tính toán định danh (ví dụ: 1/50 giây) bị trừ khỏi "thời gian" và phần mềm chuỗi thời gian của đồng hồ được gọi vào đếm phân số của giây, giây, v.v. Với các biến 32 bit cho thời gian và tốc độ, độ phân giải toán học của "tỷ lệ" có thể vượt quá một phần tỷ. Đồng hồ vẫn chính xác vì đôi khi nó sẽ bỏ qua một phần của giây hoặc tăng thêm hai phân số. Bỏ qua nhỏ là không thể chấp nhận được trong hầu hết ứng dụng thực tế của RTC.

Sự phức tạp của hệ thống này là xác định giá trị hiệu chỉnh tức thời cho biến "tỷ lệ". Hệ thống đơn giản nhất theo dõi giây RTC và giây tham chiếu giữa hai cài đặt của đồng hồ và chia giây tham chiếu cho giây RTC để tìm "tốc độ". Thời gian Internet thường chính xác đến dưới 20 mili giây, do đó, cách 8000 giây trở lên (2,2 giờ trở lên) giữa các cài đặt thường có thể chia bốn mươi mili giây lỗi (hoặc ít hơn) cho gần 5 phần triệu để được chính xác như đồng hồ bấm giờ. Sự phức tạp cơ bản với hệ thống này là chuyển đổi ngày và giờ thành số giây, nhưng các phương thức đã được nắm rõ.

Nếu RTC chạy khi một đơn vị tắt, thường nó sẽ chạy ở hai tốc độ, một khi thiết bị bật và một khi tắt. Điều này là để phù hợp với nhiệt độ và điện áp ở mỗi trạng thái. Để điều chỉnh các trạng thái này, phần mềm tính toán hai tỷ lệ. Đầu tiên, phần mềm ghi lại thời gian RTC, thời gian tham chiếu, giây bật và giây tắt trong hai khoảng thời gian giữa ba lần gần nhất mà đồng hồ được đặt. Dựa vào đó, nó có thể đo độ chính xác của hai khoảng thời gian, với mỗi khoảng có phân phối giây bật và giây tắt khác nhau. Phép toán tỷ lệ giải hai phương trình tuyến tính để tính hai tỷ lệ, một cho bật và một cho tắt.

Một cách khác là đo nhiệt độ của tinh thể bằng nhiệt kế điện tử, (ví dụ nhiệt điện trở và ADC) và sử dụng đa thức để tính "tốc độ" khoảng một lần mỗi phút. Các tinh thể thạch anh phổ biến nhất trong một hệ thống là các tinh thể SC-cut và tốc độ của chúng theo nhiệt độ có thể được biểu thị bằng đa thức bậc 3. Vì vậy, tỷ lệ được đo ở bốn nhiệt độ. Các tinh thể mang hình dạng âm thoa phổ biến được sử dụng trong đồng hồ và nhiều thành phần RTC có phương trình nhiệt độ parabol (độ 2) và có thể được mô tả đặc tính chỉ bằng ba phép đo. Sau đó, một hồi quy tuyến tính có thể tìm ra phương trình của nhiệt độ. Những thứ tương tự phương pháp này có thể được sử dụng trong các IC RTC thương mại, nhưng các phương pháp sản xuất tốc độ cao và hiệu quả đều là độc quyền.

=== RTC cũ ===
Một số thiết kế máy tính cũ hơn như Novas và PDP-8 sử dụng thứ đồng hồ thời gian thực gây chú ý bởi độ chính xác cao, đơn giản, linh hoạt và chi phí thấp. Nguồn năng lượng của máy tính tạo ra một xung ở điện áp logic cho mỗi nửa sóng hoặc mỗi điểm về không của nguồn điện xoay chiều. Dây mang xung tạo ra ngắt quãng. Phần mềm xử lý ngắt đếm chu kỳ, giây, v.v. Bằng cách này, nó có thể cung cấp toàn bộ đồng hồ và lịch.

Đồng hồ cũng thường hình thành cơ sở của chuỗi thời gian phần mềm của máy tính; ví dụ: bộ đếm thời gian thường được sử dụng để chuyển đổi các tác vụ trong một hệ điều hành. Bộ đếm thời gian được sử dụng trong các máy tính hiện đại mang lại các tính năng tương tự với độ chính xác thấp hơn và có thể theo dõi các yêu cầu đối với loại đồng hồ này. (Ví dụ: trong PDP-8, đồng hồ dựa trên nguồn chính, mô-đen DK8EA xuất hiện đầu tiên và sau đó là đồng hồ dựa trên tinh thể DK8EC).

Đồng hồ dựa trên phần mềm phải được đặt mỗi lần bật máy tính. Ban đầu điều này được thực hiện bởi những người quản lỹ máy tính. Khi Internet trở nên phổ biến, các giao thức thời gian mạng được sử dụng để tự động đặt đồng hồ loại này.

Ở châu Âu, Bắc Mỹ và một số mạng lưới khác, RTC này hoạt động vì tần số của nguồn điện xoay chiều được điều chỉnh để có độ chính xác tần số dài hạn như đồng hồ tiêu chuẩn quốc gia. Bởi lẽ, RTC vượt trội đồng hồ thạch anh và tiết kiệm hơn.

Thiết kế này của RTC không thiết thực với các máy tính xách tay hoặc lưới điện (ví dụ ở Nam Á) do không điều chỉnh tần số của nguồn điện xoay chiều. Ngoài ra, khá bất tiện nếu không thể truy cập Internet để đặt đồng hồ.

== CPU không đồng hồ ==
Một số bo mạch chủ được làm mà không có đồng hồ thời gian thực. Đồng hồ thời gian thực có thể bị loại bỏ nhằm tiết kiệm cho phí (như trong hệ thống Raspberry Pi) hoặc vì không cần thiết (như trong kiến trúc hệ thống Arduino).

== Xem thêm ==
- Hẹn giờ sự kiện chính xác cao
- IRQ 8
- Đồng hồ báo thức thời gian thực
- Thời gian hệ thống
- Hẹn giờ
- Đồng hồ treo tường
- Định dạng thời gian và lỗi lưu trữ