Tối Sáng
Hình 1. Tín hiệu Clock

Xung Clock: Nhịp tim của Hệ thống nhúng Để lại bình luận

Hình 1. Tín hiệu Clock
Hình 1. Tín hiệu Clock

Trong thế giới công nghệ hiện nay, clock được ví như là nhịp tim của một hệ thống, nó quyết định mọi hoạt động bên trong của vi điều khiển hay vi xử lý. Nhưng clock thực chất là gì? Tại sao nó lại quan trọng đến vậy? Hãy cùng chipstack.vn tìm hiểu trong bài viết dưới đây nhé.

Xung clock là gì?

Trong điện tử, đặc biệt là trong các mạch số đồng bộ (synchronous digital circuits), xung clock là một tín hiệu điện áp dao động tuần hoàn giữa mức cao và mức thấp ở một tần số nhất định, cụ thể:

  • Trạng thái cao (High): thường tương ứng với mức điện áp logic (3.3V hoặc 5V) tuỳ thuộc vào hệ thống hoặc vi điều khiển.
  • Trạng thái thấp (Low): thường là 0V hoặc gần 0V.

Vai trò của xung clock

Hãy tưởng tượng bạn đang ở trong một đội nhảy. Tất cả mọi người đều thực hiện động tác theo nhịp đếm của người dẫn nhịp. Mỗi khi người dẫn nhịp hô “bắt đầu” thì cả đội sẽ cùng nhau chuyển động, đảm bảo không ai nhảy trước hay chậm hơn người khác.

Tương tự, trong một mạch số, xung clock chính là người dẫn nhịp. Nó tạo ra tín hiệu thấp hoặc cao để các thành phần lưu trữ trong mạch sẽ thực hiện một hành động cụ thể có tuần tự.

Tại sao xung clock lại quan trọng trong các vi điều khiển?

Các dòng vi điều khiển sử dụng xung clock như là nhịp tim của hệ thống, nó ảnh hưởng lớn đến hiệu năng và cách mà vi điều khiển đồng bộ.

Để điều chỉnh tốc độ hoạt động của vi điều khiển phù hợp với từng ứng dụng, hệ thống có thể sử dụng nhiều nguồn xung clock khác nhau.

Xem thêm: Tổng quan về kiến trúc ARM Cortex-M3

Các nguồn xung clock

Các dòng vi điều khiển thường sử dụng nhiều nguồn clock khác nhau, cho phép tối ưu hoá hiệu năng và tiết kiệm năng lượng.

1. Các nguồn xung clock chính (Primary Clock Sources)

Có ba nguồn clock khác nhau để có thể chọn làm clock của toàn hệ thống (SYSCLK):

  • PLL (Phase-Locked Loop): Một mạch điều chỉnh tần số (điều chỉnh tốc độ của xung clock) sử dụng HSI hoặc HSE là nguồn đầu vào. PLL cho phép tăng hoặc giảm tần số để đáp ứng hiệu năng khác nhau.
  • HSI (High-Speed Internal):
    • Một bộ dao động nội có sẵn bên trong với tần số cố định (thường là 16Mhz). Nguồn này nhỏ gọn, tiêu thụ ít năng lượng và không cần linh kiện bên ngoài.
    • Có thể sử dụng như là một nguồn clock chính của hệ thống.
    • Cũng có thể làm nguồn đầu vào cho PLL để điều chỉnh tăng hoặc giảm tần số của toàn hệ thống.
  • HSE (High-Speed Enternal):
    • Một bộ dao động ngoài, thường sử dụng thạch anh với tần số cao. HSE ổn định hơn HSI, phù hợp cho các ứng dụng đòi hỏi độ chính xác cao.
    • Sử dụng làm nguồn clock chính hoặc làm nguồn đầu vào cho PLL.

2. Các nguồn xung clock phụ (Secondary Clock Sources)

  • LSI (Low-Speed Internal):
    • Một bộ dao động RC với tần số thấp (Khoảng 32kHz).
    • Nguồn này thường dùng để điều khiển Independent Watchdog (IWDG)RTC (Real-Time Clock) khi cần đánh thức hệ thống từ chế độ tiết kiệm năng lượng như Stop hoặc Standby.
  • LSE (Low-Speed External):
    • LSE là một nguồn xung chậm, được tạo ra từ một thạch anh hoặc bộ cộng hưởng gốm có tần số 32.768 kHz.
    • Là nguồn xung tiết kiệm năng lượng, nhưng có độ chính xác cao, lý tưởng cho việc điều khiển RTC (Real-time Clock), giúp theo dõi thời gian và lịch, hoặc các chức năng thời gian khác trong vi điều khiển.

Clock domain là gì?

Hình 2. Clock domain
Hình 2. Clock domain

Một clock domain là một khu vực trong hệ thống sử dụng một nguồn xung clock với tần số nhất định.

Trong các hệ thống vi điều khiển phức tạp, từ nguồn xung clock của hệ thống có thể được chia thành nhiều clock domain khác nhau, mỗi domain sử dụng một tần số xung clock riêng biệt.

Ví dụ trong kiến trúc ARM Cortex-M3, được chia thành high speed APB (APB2), high speed AHB, và low speed APB (APB1) domains:

  • Tần số tối đa của AHB và APB2 domains là 72Mhz.
  • Tần số tối đa của APB1 domain là 36Mhz.

Trong kiến trúc ARM Cortex-M3, một số ngoại vi sử dụng:

  • AHB domain: CRC, DMA2, DMA1, SDIO, Reset and clock control RCC, Flash memory interface…
  • APB (APB1) domain: DAC, PWR, bxCAN1, bxCAN2, I2C1, I2C2, UART4, UART5, SPI2, SPI3…
  • APB (APB1) domain: GPIO, EXTI, AFIO, ADC, USART, SPI1, TIM…

Vậy tại sao từ một xung clock ban đầu với tần số 16 MHz, hệ thống lại có thể khuếch đại lên các tần số cao như 72 MHz hay 36 MHz? Phần tiếp theo sau đây sẽ giải thích điều đó.

PLL và Prescaler

Hình 3. PLL và Prescaler
Hình 3. PLL và Prescaler

Để điều chỉnh tần số xung clock của toàn hệ thống, từ xung clock ban đầu được tạo ra bởi HSI hoặc HSE, ta sử dụng bộ PLL để khuếch đại lên một tần số nhất định.

PLL sẽ điều chỉnh tần số của SYSCLK, từ đó ảnh hưởng đến tần số của các domain khác như AHB, APB2, APB1. Ví dụ, bạn có thể sử dụng PLL để tăng tần số của SYSCLK lên mức cao, và từ đó tạo ra tín hiệu xung clock nhanh hơn cho AHBAPB2.

Prescaler sẽ được sử dụng để giảm xuống một tần số không vượt quá quy định của các domain như APB1. Ví dụ, nếu SYSCLK là 72 MHz và tần số hoạt động cao nhất của APB1 là 36Mhz bạn, bạn có thể sử dụng prescaler để chia tần số này xuống 36 MHz.

Clock distribution

Hình 4. Clock Tree
Hình 4. Clock Tree

Ban đầu, ta chọn 1 trong các nguồn chính như HSI, HSE… từ bộ Mux làm nguồn cho xung nhịp hệ thống (SYSCLK).

Tiếp theo sử dụng bộ PLL để khuếch đại lên tần số mong muốn. Trong hình, PLL được chọn với tần số SYSCLK là 100 MHz.

Từ xung nhịp hệ thống, ta sử dụng bộ Prescaler:

  • AHB Prescaler: Điều chỉnh tần số cho bus AHB, bộ nhớ và DMA. Ở đây, không có chia nhỏ, nên tần số HCLK là 100 MHz.
  • APB1 Prescaler: Chia tần số cho bus APB1. Tần số PCLK1 là 50 MHz (SYSCLK/2).
  • APB2 Prescaler: Chia tần số cho bus APB2. Tần số PCLK2 là 100 MHz (không chia nhỏ).

Hệ thống này cho phép vi điều khiển phân phối và quản lý xung nhịp linh hoạt, giúp tối ưu hóa hiệu năng và tiêu thụ năng lượng cho các ứng dụng khác nhau.

Real-time clock (RTC)

Hình 5. RTC block diagram
Hình 5. RTC block diagram

Một đồng hồ thời gian thực (RTC) là một linh kiện số giúp theo dõi thời gian và ngày tháng chính xác. Lấy nguồn xung nhịp từ một trong các nguồn bên ngoài hoặc bên trong và giảm tần số này xuống còn 1 Hz, tức là 1 lần xung nhịp mỗi giây. RTC có trong nhiều thiết bị và đồ dùng điện tử như máy giặt, máy ảnh, điện thoại và các thiết bị y tế.

RTC có thể thực hiện các chức năng như:

  • Giữ thời gian và ngày tháng chính xác.
  • Kích hoạt một nhiệm vụ cụ thể theo định kỳ.
  • Đánh thức bộ vi xử lý từ chế độ ngủ hoặc tiết kiệm năng lượng.

Nói đơn giản, RTC giúp các thiết bị luôn biết thời gian chính xác và có thể sử dụng thông tin này để thực hiện các tác vụ quan trọng đúng lúc.

Nguyên lý hoạt động

  • Các nguồn xung clock chính thường được chọn cho RTC: LSI, LSE, HSE_RTC vì các nguồn xung này có độ chính xác cao.
  • Hầu hết các RTC dùng một tinh thể thạch anh dao động ở tần số 32.768 kHz (giống như trong đồng hồ điện tử). Tần số này là bội số của 2, giúp dễ dàng sử dụng với các mạch đếm nhị phân đơn giản. Ở mức tần số này, còn người cũng không thể nghe thấy được.
  • Bộ chia tần số (Prescaler): Tần số cao từ nguồn xung nhịp sẽ được giảm xuống 1 Hz thông qua các bộ chia tần số. Điều này giúp cập nhật thời gian một cách chính xác mỗi 1 giây.
  • RTC được thiết kế để tiêu thụ ít năng lượng, nên thường được cấp nguồn riêng từ pin để tiếp tục giữ thời gian ngay cả khi hệ thống chính bị tắt.

Một số module của MCU sử dụng RTC

  • Timer/Counter Module: Sử dụng RTC để đo thời gian chính xác hoặc tạo ra các khoảng thời gian định kỳ.
  • Power Management Module: RTC giúp quản lý năng lượng, cho phép MCU vào chế độ ngủ sâu và đánh thức vào thời gian xác định.
  • Alarm/Calendar Module: RTC cung cấp chức năng báo thức và lịch, cho phép hệ thống thực hiện các tác vụ vào thời điểm cụ thể.

Ứng dụng của RTC

  • Đồng hồ và lịch: RTC cập nhật thời gian và ngày tháng chính xác, giúp thiết bị biết thời gian hiện tại ngay cả khi bị tắt nguồn hoặc khởi động lại.
  • Hẹn giờ: Dùng để đặt báo thức, nhắc nhở hoặc thực hiện các hành động một cách tự động tại thời điểm xác định, chẳng hạn như bật tắt thiết bị theo lịch trình.
  • Ghi dữ liệu theo thời gian: Trong các thiết bị như máy ghi dữ liệu hoặc camera an ninh, RTC giúp ghi lại chính xác thời gian xảy ra sự kiện hoặc dữ liệu được ghi nhận.
  • Đồng bộ hóa hệ thống: Giúp đồng bộ thời gian giữa các phần khác nhau của hệ thống, đặc biệt trong mạng hoặc các thiết bị liên lạc.
  • Quản lý năng lượng: RTC có thể đánh thức hệ thống từ chế độ tiết kiệm năng lượng vào thời điểm nhất định, giúp tối ưu hóa việc tiêu thụ năng lượng.

Xem thêm: Hệ thống nhúng là gì?

Có thể nói rằng xung clock là một thành phần vô cùng quan trọng, đóng vai trò nền tảng trong việc điều khiển và đồng bộ hóa các tác vụ trong hệ thống. Việc hiểu và lựa chọn xung clock phù hợp giúp tối ưu hóa hiệu suất và tiết kiệm năng lượng cho các ứng dụng mà bạn đang xây dựng. Dù là xung clock bên ngoài hay xung clock nội bộ, mỗi loại đều có những ưu và nhược điểm riêng, phụ thuộc vào yêu cầu về độ chính xác, tốc độ và tiêu thụ năng lượng.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *