Tổng quan về PSOC Mcu



























PSoC (Programmable System on Chip) giới thiệu một khái niệm hoàn toàn mới cho các ứng dụng vi điều khiển. So với các vi điều khiển 8-bít tiêu chuẩn, các chip PsoC có thêm các khối tương tự và số lập trình có khả năng lập trình được, chúng cho phép việc thiết lập một số lượng lớn các ngoại vi.
Các khối số chứa một số các khối số nhỏ hơn có khả năng lập trình được có thể được cấu hình cho các ứng dụng khác nhau. Các khối analog được sử dụng cho việc phát triển các thành phần analog như các bộ lọc tương tự, các bộ so sánh. Các bộ chuyển đổi AD-DA.

Có một số các họ PsoC khác nhau cho phép bạn lựa chọn phụ thuộc vào yêu cầu của dự án. Sự khác nhau giữa các họ PsoC là số lượng các khối A/D có thể lập trình được và số lượng các chân vào ra. Phụ thuộc vào các họ vi điều khiển, PsoC có thể có từ 4 đến 16 khối số và từ 3 đến 12 khối tương tự có khả năng lập trình được.





Các đặc điểm của PSoC microcontrollers

Một số đặc tính nổi bật của vi điều khiển - PsoC

- Khối nhân công, bộ nhân cứng 8x8 cho kết quả lưu trong thanh ghi cộng 32 bít
- Có khả năng thay đổi điện áp hoạt động 3.3V đến 5V
- Khả năng cung cấp điện áp thấp 1V
- Khả năng lựa chọn tần số nhờ lập trình.

Các khối lập trình cho phép bạn thiết lập :

- Bộ nhớ 16K bytes lập trình được
- 256 bytes RAM
- Chuyển đổi ADC độ phân giả tối đa 14 bít
- Chuyển đổi DAC độ phân giải tối đa 9 bít
- Khuếch đại điện áp lập trình được
- Các bộ lọc và so sánh lập trình được
- Các bộ đình thời và bộ đếm 8-16-32 bít
- Khối tạo mã CRC và mã giả ngẫu nhiên
- Hai khối UART song công
- Các thiết bị SPI
- Lựa chọn các kết nối cho tất cả các chân đầu ra
- Lựa chọn việc kết hợp các khối chức năng
- Lựa chọn cho việc lập trình trên vùng bộ nhớ xác định và ghi có bảo vệ
- Các chân I/O đều có các chế độ Pull up, Pull down, High Z, Strong, hoặc Open pin state
- I2C Slaver hoặc Master và Multi-Master có tốc độ lên tới 400KHz
- Mạch giám sát tích hợp
- Khối tạo điện áp tham chiếu chính xác
1. Tổng quan hệ thống :

Các vi điều khiển PsoC dựa trên kiến trúc CISC 8-bit. Cấu trúc chung của chúng bao gồm các khối sau đây :
Khối CPU : là trung tâm của vi điều khiển có chức năng thực hiện lệnh và điều khiển chu trình hoạt động (workflow) của các khối chức năng khác

Khối tạo tần số dao động :
 tạo ra các tần số thích hợp cung cấp cho CPU hoạt động cũng như cung cấp một tập hợp các tần số khác nhau cho các khối có chức năng lập trình được. Các tần số được tạo ra dựa trên tần số tham chiếu bên trong PsoC hoặc được cung cấp từ bên ngoài PsoC.

Khối điều khiển Reset :
 kích hoạt cho vi điều khiển hoạt động cũng như giúp hồi phục trạng thái hoạt động bình thường của VDK khi xảy ra lỗi.

Bộ định thời Watch-Dog :
 được sử dụng để phát hiện ra các vòng lặp vô hạn trong chương trình.

Bộ định thời Sleep :
 có thể kích hoạt vi điều khiển theo chu kì để thoát ra khỏi chế độ tiết kiệm công suất. Nó cũng có thể được sử dụng như một bộ định thời thông thường.

Các chân vào/ra : giúp cho việc giao tiếp giữa CPU và các khối chức năng số/tương tự lập trình được cũng như giao tiếp với ngoại vi.

Khối chức năng số : có khả năng lập trình được cho phép người sử dụng tự cấu hình nên các thành phần số tùy biến.

Khối chức năng tương tự : có khả năng lập trình được cho phép người sử dụng tự cấu hình nên các thành phần tương tự như các bộ chuyển đổi dữ liệu AD/DA, các bộ lọc, bộ thu nhận mã đa tần rời rạc DTMF, bộ đảo, các bộ khuếch đại thuật toán OA.

Khối điều khiển ngắt : có chức năng xử lý các yêu cầu ngắt trong trường hợp cần thiết.

Khối điều khiển I2C : giúp cho PsoC giao tiếp với các phần cứng khác theo chuyẩn I2C

Khối tạo điện áp tham chiếu : cần thiết cho các thành phần analog và nằm bên trong các khối tương tự có khả năng lập trình được.

Bộ nhân tổng MAC : thực hiện các phép nhân có dấu 8 bít

Hệ thống SMP : có thể được sử dụng như 1 phần của bộ chuyển dổi điện áp. Ví dụ, nó có thể cung cấp công suất cho 1 VDK hoạt động chỉ bằng 1 pin 1.5V duy nhất.

2. CPU

Trong suốt quá trình thực hiện CT, các lệnh được nap trong bộ nhớ chương trình (bộ nhớ nhanh dạng flash) giống như các VDK thông thường. CPU tìm nạp 1 lệnh tại 1 thời điểm từ bộ nhớ CT, giải mã lệnh và thực hiện các chức năng tương ứng. CPU có 5 thanh ghi trong là PC (Program Counter- Thanh ghi đếm CT) , SP(Stack Pointer- Thanh ghi con trỏ stack), A(Accumulator-Thanh ghi tích lũy), X(Index-Thanh ghi chỉ số), và F(Flag-Thanh ghi cờ trạng thái) được sử dụng bởi ALU và khối giải mã lệnh, chúng cũng được sử dụng kết hợp trong quá trình thực hiện lệnh.

Các thanh ghi trong của CPU

Thanh ghi đếm CT - Program counter (PC) : đuợc dùng như 1 con trỏ lưu trữ địa chỉ của lệnh sẽ được thực hiên tiếp theo. Với mỗi một câu lệnh mới, giá trị của PC sẽ trỏ vào địa chỉ của lệnh tiếp theo trong bộ nhớ CT, lệnh này sẽ được giải mã và thực thi.

Thanh ghi con trỏ stack - Stack pointer (SP) : lưu trữ địa chỉ của bộ nhớ RAM, là nơi mà dữ liệu được ghi vào hoặc đọc ra nhờ các lệnh PUSH và POP tương ứng. Khi những lệnh này được thực hiện, giá trị của SP sẽ tự động tăng hoặc giảm tương ứng.

Thanh ghi tích lũy - Accumulator register (A) : là thanh ghi chính được dùng trong các thuật toán, các phép toán logic hoặc trao đổi dữ liệu.

Thanh ghi chỉ số - Index register (X) : có thể được sử dụng như thanh ghi tích lũy trong một số lớn các lệnh. Thanh ghi chỉ số X cũng được sử dụng để lưu trữ chỉ số địa chỉ (chỉ số trong các vòng lặp)

Thanh ghi cờ trạng thái - Flag register (F) : Các bít của thanh ghi này mô tả các kết quả sau khi một lệnh được thực hiện. Nó có 1 vai trò trong việc lựa chọn 1 trang(page) bộ nhớ RAM khi vi điều khiển PsoC có nhiều hơn 256 byte RAM. Bít trạng thái Zero(Z) chỉ ra thanh ghi tích lũy lưu giữ giá trị 0, trong khi bít nhớ Carry(C) chỉ ra rằng các phép toán logic hoặc các thuật toán được thực hiện có nhớ dữ liệu.

Đơn vị toán học và logic - Arithmetic logic unit (ALU) : Là thành phần chuẩn hóa của CPU, được sử dụng để thực hiện các phép toán +, -, dịch trái/phải cũng như các phép toán logic. Dữ liệu xử lý bởi các lệnh này có thể được lưu trong các thanh ghi trong A , X hoăck bộ nhớ RAM trong.

Lưu ý : PSoC chỉ có 5 thanh ghi nhưng rất linh hoạt khi lập trình do PSoC có RAM nội thời gian truy xuất nhanh cho nên khi thực hiện trao đổi dữ liệu có thể thực hiện lưu trữ/hoặc truy xuất trực tiếp vào RAM nội theo các mode truy xuất địa chỉ mà vẫn đạt được hiệu suất mong muốn.

3. Khối tạo tần số dao động

Khối tạo tần số dao động là cần thiết cho sự haọt động cỷa CPU cũng như các khối có chức năng lập trình được. Mỗi một thành phần lập trình được yêu cầu một tần số hoạt động riêng biệt . Vi điều khiển PSoC có một hệ thống dùng để tạo ra các tần số dao động khác nhau, bằng cách lựa chọn các tham số tương ứng. Sơ đồ dưới đây thể hiện hai hệ thống độc lập dùng để tạo ra hai tín hiệu SYSCLK và CLK32 (32Khz)

SYSCLK là dao động nội chủ chốt với tốc độ 24MHz, được sử dụng làm tần số tham chiếu cho phần lớn các tín hiệu khác.

SYSCLKx2 = 2x SYSCLK = 48Mhz

24V1 = SYSCLK/N1 với N1 là tham số lựa chọn trong khoảng từ 1 đến 16.
Do vậy 24V1 nằm trong khoảng từ 1.5MHz (N1=16) tới 24MHz (N1=1).

24V2 = SYSCLK/(N1xN2) với (N1xN2) là tham số lựa chọn trong khoảng từ 1 Do vậy 24V1 nằm trong khoảng từ 93.75kHz (N1xN2=16) tới 24MHz (N1xN2=1).
24V3 = (24V2, 24V1, SYSCLK hoặc SYSCLKx2)/N với N từ 1 đến 256.

CPU_CLK cung cấp tần số dao động cho CPU ảnh hưởng trực tiếp đến tốc độ thực hiện lệnh. CPU_CLK được lựa chọn là một trong 8 tần số trong khoảng từ 93.75MHz cho tới 24MHz.

Các tần số 24V1, 24V2, 24V3 và CPUCLK có thể được thiết lập một cách dễ dàng thông qua việc thiết lập các tham số tương ứng trong Device Editor hoặc trong suốt quá trình thực hiện chương trình bằng cách thay đổi 3 bí thấp nhất trong thanh ghi OSCCR0.

CLK32 là tín hiệu tần số thấp được sử dụng cho các khối có chức năng lập trình được sử dụng cho hoạt động "wake-up" của bộ định thời Sleep trong trường hợp các tín hiệu SYSCLK khác là không tích cực

Tín hiệu SYSCLK có thể được tạo ra nhờ một bộ dao động chủ bên trong IMO-internal main oscillator trong khi CLK32 có thể được tạo ra nhờ dao động cục bộ bên trong ILO- internal local

Sai số giới hạn đối với bộ tạo dao động trong là 2.5%. Do vậy đối với các ứng dụng yêu cầu chính xác về thời gian ,tín hiệu SYSCLK nên được cung cấp từ một dao động tham chiếu bên ngoài, doa động ngoài này nằm trong khoảng từ 1 tới 24 Mhz và được cung cấp qua chân P1[4] của PSoC. Tương tự đối với tín hiệu CLK32 cũng có thể được tọa ra bằng 1 dao động tham chiếu ngoài có độ chính xác phù hợp với yêu cầu thiết kế.




4. Microcontroller power consumption
PSoC thực hiện lệnh với tốc độ xấp xỉ gấp hai lần tần số được cung cấp trực tiếp bởi CPUCLK.Mặc dù vậy việc cung cấp tần số hoạt động cao hơn không phải là luôn luôn cần thiết và có ý nghĩa sẽ đạt hiệu suất tổng thể tốt hơn.

Nhược điểm chính của việc tăng tần số hoạt động chính là hiện tượng tăng công suất tiêu thụ, đây là vấn đề chính ảnh hưởng tới việc cung cấp nguồn hoạt động.

Một nhược điểm khác của việc tăng tần số hoạt động chính là sự gia tăng của nhiễu điện từ, gây ảnh hưởng tới các thiết bị xung quanh. Do vậy chúng ta cần sử dụng 1 tần số thấp nhất nhưng vẫn đáp ứng đủ yêu cầu về tốc độ cho ứng dụng của chúng ta.

Tần số mặc định cho VDK của PSoC là 3MHz đây là một giá trị thích hợp đối với yêu cầu tốc độ cũng như công suất tiêu thụ. Để duy trị lâu nhất thời gian hoạt động nhằm tiết kiệm công suất tiêu thụ do phần lớn các VDK chỉ hoạt động theo chu kì, việc tiết kiệm công suất tiêu thụ là cần thiết và có thể đạt được nhờ việc bắt "VDK" rơi vào chế độ "ngủ đông" (Sleep mode) mỗi khi VDK không giữ vai trò quan trọng (ví dụ : khi VDK không xử lý dữ liệu, trao đổi với bộ nhớ dùng DMA ...)

Việc tiết kiệm công suất tiêu thụ có thể được áp dụng cho mọi tần số khi CPU ngừng thực hiện lệnh, đồng thời CPU32 và SLEEP là không tích cực. Vi điều khiển được "đánh thức" (wake-up) khỏi chế Sleep bằng cách Resset hoặc bằng 1 ngắt được tạo ra bởi bộ định thời Sleep hoặc 1 khối số có sử dụng tần số CPU32K

Các chân GPIO (General Purpose In/Out) cũng có thể được sử dụng để đánh thức CPU. Bộ định thời Sleep hiểu hiện 1 bộ nhớ đặc biệt có vai trò chủ đạo trong việc tạo ra một ngắt có chu kì có khả năng "đánh thức" CPu ra khỏi chế độ tiết kiêmk công suất. Tần số của ngắt tạo bởi bộ định thời Sleep nằm trong khoảng từ 1 tới 512 KHz

Sau khi "đánh thức" VDK có thể thực hiện các lệnh bình thường cho tới khi chu kì "ngủ đông" tiếp theo và chờ một ngắt "đánh thức" khác. Chỉ có 1 kiểu ngắt phù hợp cho việc đánh thức VDK khỏi chế độ "ngủ đông" Sleep
5. Reset
POR
Trong quá trình VDK hoạt động, sự thay đổi điện áp cung cấp luôn diễn ra Điều này rất nguy hiểm nếu như điện áp cung cấp thấp hơn 1 giới hạn xác định, lúc này VDK có những hoạt động không thể dự đoán được. Trong những trường hợp phát hiện điến áp cung cấp nhỏ hơn giới hạn cho phép, VDK được
chuyển tới Power trong chế độ Reset và giữ nguyên ở chế độ này cho tới khi điển áp ổn định nằm trên mức giới hạn, mức giới hạn này có thể được định nghĩa nhờ tham số Trip Voltage
XRES
Tín hiệu reset ngoài cho phép người sử dụng thiết lập cho VDK vào trạng thái khởi động thông qua một phím nhấn. Hoạt động Reset đạt được khi tín hiệu XRES mang giá trị "1". Mạch reset đơn giản có thể được thiết kế bằng các điện trở pull-down và 1 chuyển mạc.
WDR
Tín hiệu khởi tạo lại Watch dog reset (WDR) được dùng để tránh các vòng lặp vô hạn trong phần mềm hoặc các chương trình sai sót nghiêm trọng, giúp cho hệ thống quay trở lại từ chế độ bắt đầu (start state).

Tín hiệu WDR được tạo ra từ bộ định thời Watch dog timer (WDT) được khởi động lại theo chu kì bên trong một chương trình chính, sau đó các chương trình con tương ứng được thực hiện

Trong chế độ bình thường (normal mode) sau một thời gian nhất định, WDT được khởi động lại một lần và chương trình con vẫn tiếp tục thực hiện, nhưng nếu một khối lệnh trong 1 chương trình con có sai sót WDT không thể reset, và WDR xảy ra.
6. Vào/ra số
PsoC giao tiếp với các ngoại vi thông qua các chân vào ra In/Out. Cứ 8 chân hợp thành 1 group có thê được truy nhập tức thời như các thành phần của 1 cổng. Mặc dù vậy, các cổng có số hiệu khác nhau tùy thuộc vào loại PsoC mà chúng ta sử dụng.

Thao tác đọc và ghi dữ liệu được thực hiện giống nhau trong mọi trường hợp. Các thanh ghi truy nhập của các cổng được lưu trữ bên trong không gian địa chỉ thanh ghi với định danh là PRT0DR, PRT1DR, PRT2DR, PRT3DR, PRT4DR or PRT5DR.

* Ghi dữ liệu qua cổng
- Giá trị cần ghi được ghi vào thanh ghi PRTxDR thông qua việc thiết lập giá trị tương ứng cho thanh ghi nhờ sử dụng một mạch khởi tạo điều khiển các trang thái cho các chân của cổng. Mạch khởi tạo này có thể gửi dữ liệu trực tiếp (strong), thông qua các điện trở pull-up hoặc pull-down hoăc kênh máng hở ở đầu ra
- Bên cạnh đó, có khả năng cách ly giá trị thanh ghi khỏi trạng thái của các chân (Hi-Z)

* Đọc dữ liệu từ cổng
- Giá trị đọc được từ địa chỉ thanh ghi PRTxDR được lưu trữ vào thanh ghi A.
* Drive Mode
Có 8 mode cùng để kết nôi các thanh ghi với các chân thuộc cổng được lựa chon thông qua 3 bít PRTxDM2, PRTxDM1 and PRTxDM0 ứng với các thanh ghi PRTxDR tương ứng

+ Strong mode : được dùng khi cần kết nối trạng thái trong các thanh ghi PRTxDR trực tiếp tới các chân của cổng. Cách này được sử dụng khi chân của cổng là đầu vào.

+ Analog Hi-Z mode :được sử dụng khi kết nối với các tín hiệu analog như các đầu vào của ADC. Trong trường hợp này, tất cả các liên kết trong giữa các thanh ghi PRTxDR và chân bị tách rời do vậy tránh được nhiễu

+ Điện trở Pull-up hoặc pull-down : được sử dụng khi kết nối với phím bấm hoặc các thiết bị khác. Những điện trở này xác định giá trị trên các đầu vào khi phím bấm chưa được nhấn.
7. Vào/ra tương tự
Một số chân vào/ra bên cạnh các chức năng tiêu chuẩn còn có các chức năng trao đổi dữ liệu vào ra dạng analog. Các chân của cổng P0 và 4 chân nhỏ nhất của công P2 co thể được sử dụng để nhận tín hiệu analog. Các đầu vào của cổng P0 được kết nối tới các khối analog thông qua các bộ ghép kênh analog trong khi 4 chân nhỏ nhất của P2 được kết nối trực tiếp tới các khối chuyển mạch tụ điện(SC-Switched Capacitor) lập trình được.

Các chân P2[4] và P2[6] có thể nhận giá trị điện áp tham chiếu từ bên ngoài. Các chân đầu ra từ các khối analog có thể được kết nối tới 4 bộ đệm đầu ra, chúng được kết nối tới các chân to P0[2],P0[3],P0[4], và P0[5] ( 4 chân này có chức năng In/Out trong khi P0[0],P0[1],P0[6], và P0[7] chỉ có thể là input)

8. Truy nhập các khối số lập trình được
Các thành phần tín hiệu số được lưu trưc bên trong các khối lập trình được, chúng không được kết nối trực tiếp tới các chân vào ra. Hoạt động của các khối số có khả năng lập trình được thể hiện trong hình dưới đây, mô tả 1 nhóm 4 khối số lập trình được.

Chúng ta có thể thấy rằng các chân được liên kêt thông qua các đường dẫn (line) chung, các đường dẫn bên trong các khối số, và các bộ ghép kênh. PsoC có thể có 1,2, hoặc 4 nhóm các khối số lập trình được phụ thuộc vào tưng họ PsoC cụ thể
1.9 Các đường tín hiệu vào dùng chung (GIL)
Global input lines (GIL) : Có chức năng kết nối các chân input với đầu vào của các Mux. GIL được chia thành hai nhóm chẵn (Global input odd – GIO) và (Global input even – GIE) phụ thuộc vào chỉ số của cổng kết nối với Mux, theo nguyên tắc cùng chỉ số chân. Nghĩa là đường dẫn GIO_0 có thể kết nối với chân số 0 của tất cả các cổng có chỉ số cổng là lẻ như : P1[0], P3[0], P5[0]..
Ghép nối với Mux
Các bộ Mux được ghép nối với GIO và GIE theo hình vẽ dưới đây

1.10 Các khối số lập trình được

Các khối số lập trình được có thể được cấu hình thành các bộ định thời-Timer, bộ đếm-counter, điều chế độ rộng xung – PWM, bộ tọa mã PRS (Pseudo Reed-Solomon)-CRC và các giao tiếp ngoại vi như SPI, IrDA, UART tùy theo yêu cầu và mục đích của người thiết kế.
Chức năng của từng khối số lập trình được liệt kê theo bảng sau :
Tần số giữ nhịp (CLK) : 
Tần số giữ nhịp là cần thiết cho mọi thành phần tín hiệu số, phụ thuộc vào tốc độ yêu cầu, chúng ta có một tập hợp các tần số để lựa chọn

- Các tần số dao động nội : VC1, VC2, VC3, SYSCLKx2, CPU_32
- Các dao động từ các khối liên quan : như Timer, Counter, PWM …
- Tín hiệu Broadcast (BC)
- Các chân tín hiệu vào RI và ra RO
Đầu vào của các thành phần : 

Phần lớn các thành phần tín hiệu số bên cạnh tần số giữ nhịp còn có 1 hoặc hai đầu vào số. Ví dụ trong trường hợp của countẻ và PWM, tín hiệu đầu vào được sử dụng để khởi tạo bộ đếm. Có một vài khả năng khác nhau cho việc lựa chọn đầu vào cho các thành phần
- Các chân RI (tín hiệu ngoài)
- Các chân RO (khi các khối được kết nối liên tiếp)
- Đầu ra từ các bộ so sánh analog.
- Các tín hiệu logic 0 (GND),1(VDD)

Đầu ra của các thành phần : 
Các đầu ra số của các thành phần tín hiệu số được sử dụng để kết nối các khối lập trình được với các chân tín hiệu ra RO.

Bộ ghép kênh - Multiplexer
Phụ thuộc vào trạng thái của Mux (địa chỉ) các chân tín hiệu ra RO hoặc các chân tín hiệu vào RI của các khối lập trình được có thể được kết nối với nhau.
Mạch Logic 
Các mạch logic có thể là :
- Lựa chọn 1 trong hai tín hiệu làm đầu ra
- Cổng NOT
- Thực hiện các phép toán logic AND, OR, XOR
Mạch điều khiển tín hiệu ra
Đầu ra của các mạch logic có thể được kết với 4 mạch điều khiển đầu ra, chúng được kết nối tới 1 hoặc nhiều các đường tín hiệu GOL(global output lines )
Đầu ra của các khối lập trình được cũng được đánh chỉ số, do đó nó chỉ kết nối với các chân GOO hoặc GOI cùng chỉ số hoặc có chỉ số lớn hơn 4 đơn vị so với chúng.








Attachments (7)







Post a Comment

Mới hơn Cũ hơn