4. Ph−ơng pháp nghiên cứu
3.3 Tìm hiểu cấu trúc phần cứng chip PSoC
1.Bộ xử lý trung tâm - CPU
Trong chip PSoC bộ xử lý trung tâm CPU đ−ợc gọi với tên là M8C. Bộ xử lý này kiểm soát các thanh ghi nội tại, không gian địa chỉ tập lệnh cũng nh− các chế độ địa chỉ. Các họ chíp của PSoC dựa trên bộ vi xử lý mạnh mẽ 8 bit với cấu trúc Harvard (Cấu trúc Harvard là cấu trúc mà bus dữ liệu, bus địa chỉ và tín hiệu điều khiển của bộ nhớ chương trình và bộ nhớ dữ liệu độc lập
với nhau). Nó có 5 thanh ghi điều khiển hoạt động chính của CPU. Những thanh ghi này bị tác động bởi những lệnh khác nhau. Người sử dụng không thể truy cập trực tiếp vào các thanh ghi này thông qua không gian bộ nhớ các thanh ghi. Các thanh ghi của CPU đ−ợc cho trong bảng sau:
Bộ đếm chương trình là một thanh ghi16 bit (CPU_PC), nó cho phép ng−ời lập trình truy cập trực tiếp vào toàn bộ không gian bộ nhớ ch−ơng trình trên chíp (16 Kbytes đối với thành viên lớn nhất). Đây là một không gian nhớ liên tục và không cần phải tạo thành trang (no paging).
- Thanh ghi chứa (Accumulator) là một thanh ghi đa mục đích, nó thường
được sử dụng để lưu giữ kết quả của bất cứ một lệnh nào sử dụng chế độ địa chỉ nguồn.
- Thanh ghi chỉ số được dùng để lưu giữ giá trị Offset (độ lệch) trong chế
độ địa chỉ chỉ số. Tiêu biểu là nó đ−ợc dùng để địa chỉ một khối dữ liệu bên trong không gian nhớ dữ liệu.
- Thanh ghi Con trỏ Stack (Stack Pointer) lưu giữ địa chỉ của đỉnh Stack trong không gian nhớ dữ liệu. Nó bị tác động bởi những lệnh nh− PUSH, POP, LCALL, RETI và RET. Nói chung là tất cả những lệnh có liên quan đến stack của phần mềm. Nó cũng có thể bị ảnh h−ởng bởi lệnh SWAP và lệnh ADD.
- Thanh ghi cờ (Flags) có ba bit trạng thái, bit cờ không - Zero Flag bit[1]; bit cê nhí - Carry Flag bit[2]; bit Supervisory State[3]. Bit cho phÐp ngắt toàn cục- Global Interrupt enable bit[0] đ−ợc dùng để cho phép hoặc
cấm toàn bộ các ngắt. Các cờ trên bị ảnh h−ởng bởi những lệnh toán học, những lệnh logic.
2.Ngắt và bộ điều khiển ngắt
Bộ điều khiển ngắt cho phép một đoạn mã của ng−ời lập trình đ−ợc thực hiện mỗi khi có một ngắt sinh ra từ các khối chức năng trong chip PSoC. Mỗi một khối số có một ngắt riêng và mỗi một cột khối t−ơng tự cũng có một ngắt riêng. Mỗi một ngắt cho nguồn cấp, chế độ ngủ, xung nhịp thay đổi, và một ngắt toàn cục cho các chân vào ra đa chức năng.
Bảng 4-20: Các thanh ghi của bộ điều khiển ngắt
Bộ điều khiển ngắt cùng với những thanh ghi của nó cho phép các ngắt có thể bị vô hiệu hóa đồng thời hoặc độc lập với nhau. Các thanh ghi cung cấp một cách thức để người sử dụng có thể xóa tất cả những ngắt đang chờ và thông báo ngắt, hoặc có thể xóa một cách độc lập hay riêng biệt thông báo ngắt và ngắt chờ. Một kỹ thuật phần mềm được cung cấp để cho phép người lập trình thiết lập ngắt một cách riêng biệt. Thiết lập một ngắt bằng kỹ thuật này rất mạnh mẽ và hữu ích cho việc phát triển mã nguồn, khi mà nó không có
đủ hệ thống phần cứng hoàn chỉnh để sinh ra một ngắt thực.
Bảng 4-21 : Bảng vector ngắt của CY8C27xxx
3. Các cổng vào ra đa chức năng
Cổng vào ra đa chức năng cung cấp cho CPU một giao diện với bên ngoài.
Chúng đòi hỏi một số l−ợng lớn thanh ghi cấu hình để hỗ trợ cho nhiều chế
độ hoạt động vào / ra bao gồm cả số và tương tự.
Bảng 4-22: Các thanh ghi vào ra đa chức năng.
Chú ý: kí tự “x” sau dấu phẩy trong trường địa chỉ có nghĩa là các cổng vào ra đều có riêng biệt các thanh ghi trên. Mỗi một cổng thì các thanh ghi sẽ có một địa chỉ riêng. Nhưng để dễ hiểu thì ta chỉ xét chung cho trường hợp tổng quát. Các cổng vào ra đa chức năng đều có độ rộng là 8 bit/ 1 cổng. Mỗi một cổng vào/ra bao gồm 8 khối GPIO giống hệt nhau. Mỗi một khối GPIO
đều được kết nối với bit có số thứ tự tương ứng trong địa chỉ và thanh ghi. Bởi vậy, những thanh ghi trong bảng các thanh ghi trên thực sự chỉ dành cho một cổng (bao gồm 8 khối GPIO). Trong đú thỡ vị trớ của bit sẽ chỉ rừ là khối GPIO nào trong 8 khối đ−ợc điều khiển với cổng vào ra. Mỗi một khối GPIO có thể
đ−ợc sử dụng cho những kiểu vào ra sau:
- Vào ra số (Vào ra số điều khiển bởi phần mềm) - Vào ra toàn cục (Vào ra cho các khối PSoC số)
- Vào ra t−ơng tự (Vào ra cho các khối PSoC t−ơng tự) mỗi một chân vào ra đều có vài chế độ hoạt động cũng nh− là khả năng tạo ngắt. Trong khi tất cả
các chân đều được nối đường vào ra số thì một vài chân lại không được kết nối với chức năng vào ra của khối t−ơng tự hoặc bus toàn cục.
* Vào ra số:
Một trong những chức năng hoạt động cơ bản của cổng vào ra đa chức năng là cho phép CPU gửi thông tin ra ngoài chip và lấy thông tin từ bên ngoài vào. Điều này đ−ợc thực hiện nhờ thanh ghi dữ liệu cổng (Port Data Register PRTxDR). Việc viết dữ liệu vào thanh ghi PRTxDR sẽ lưu lại trạng thái dữ
liệu, mỗi bit cho một chân GPIO. Trong chế độ thường (standard non-bypass) thì mỗi chân GPIO sẽ lặp lại bit dữ liệu đó. Nghĩa là khi ta viết một giá trị vào trong thanh ghi dữ liệu PRTxDR thì ở đầu ra của cổng t−ơng ứng sẽ có giá trị giống nh− trong thanh ghi dữ liệu. Điện áp thực ở chân ra phụ thuộc vào chế
độ hoạt động của chân và tải bên ngoài đ−ợc nối vào chân đó. (Xem cấu trúc của 1 chõn vào ra để hiểu rừ thờm) CPU cú thể đọc giỏ trị của một cổng bằng cách đọc giá trị của thanh ghi PRTxDR. Khi CPU đọc giá trị của PRTxDR thì
giá trị điện áp hiện thời của chân vào ra sẽ đ−ợc chuyển đổi sang giá trị logic và đ−ợc trả về cho CPU. Hoạt động này sẽ đọc giá trị điện áp của chân vào ra chứ không phải là đọc về giá trị chốt của thanh ghi PRTxDR.
* Vào ra toàn cục (Global IO) Các cổng vào ra đa chức năng cũng đ−ợc nối liền với các khối số thông qua các vào ra toàn cục. Tính năng vào ra toàn
cục của mỗi cổng đ−ợc mặc định ở trạng thái tắt. Để sử dụng tính năng này thì
có 2 thông số cần phải đ−ợc thay đổi. Thứ nhất để cấu hình cho một chân GPIO hoạt động nh− là một đầu vào toàn cục thì bit lựa chọn cổng toàn cục cần phải đ−ợc set để yêu cầu GPIO sử dụng thanh ghi PRTxGS. Thứ hai là chế
độ hoạt động của GPIO cần phải đ−ợc đ−a về trạng thái cao trở. Để cấu hình cho một chân GPIO hoạt động nh− là một đầu ra toàn cục thì bit lựa chọn cổng toàn cục cần phải đ−ợc set lần nữa. Nh−ng trong tr−ờng hợp này thì chế
độ hoạt động của GPIO là bất kì trừ chế độ cao trở.
*Vào ra t−ơng tự: Tín hiệu t−ơng tự có thể đ−ợc truyền dẫn giữa CPU và chân của chíp thông qua chân AOUT của khối. Chân này đ−ợc nối với khối thông qua một điện trở (khoảng 300 ohms). Chân vào ra đa chức năng cần phải đưa về chế độ cao trở trong trường hợp này. Các ngắt của khối GPIO.
Mỗi một khối GPIO đều có thể đ−ợc cấu hình một cách độc lập cho khả năng ngắt. Các khối GPIO đ−ợc cấu hình cho phép lựa chọn ngắt cho từng chân và cũng có thể lựa chọn kiểu ngắt phù hợp. Nghĩa là các khối có thể sinh ra ngắt khi chân ở mức logic cao, thấp hoặc khi nó thay đổi so với lần đọc trước. Các khối đều có một đầu ra ngắt riêng (INTO), nó đ−ợc nối với các khối GPIO khác bằng một kiểu nối dây loại OR. Do tất cả các chân đều đ−ợc nối với nhau theo kiểu OR để sử dụng chung một hệ thống ngắt GPIO. Nên nếu một ngắt GPIO đ−ợc chia sẻ cho nhiều chân vào ra thì trình phục vụ ngắt của người sử dụng cần phải sử dụng vài kỹ thuật được thiết kế sẵn để quyết định xem là chân nào đ−ợc chọn là nguồn sinh ngắt. Sử dụng một ngắt GPIO yêu cÇu nh÷ng b−íc sau:
1. Đặt chế độ ngắt cho khối chân GPIO 2. Mở bit ngắt cho khối chân GPIO.
3. Mở bit mặt nạ ngắt cho ngắt GPIO.
4. Xác nhận bit ngắt toàn cục GIE.
Phạm vi khối GPIO, xác nhận đ−ờng ra ngắt phụ thuộc duy nhất vào bit
cho phép ngắt và trạng thái của chân quan hệ với sự lựa chọn chế độ ngắt. ở cấp độ chip, do trạng thái tự nhiên của cổng nối dây OR, ngắt GPIO không phải là ngắt nhạy theo s−ờn hay ngắt nhạy theo mức. Chúng có thể đ−ợc lựa chọn là nhạy theo s−ờn nh−ng nhạy theo mức phải đ−ợc tháo bỏ khỏi đ−ờng ra ngắt của cổng nối dây OR. Nếu không có ngắt GPIO nào đang xác nhận, thì
một ngắt GPIO sẽ đ−ợc sinh ra bất cứ khi nào bit cho phép ngắt của một chân GPIO đ−ợc set và chân GPIO chuyển sang cao hoặc thấp một cách thích hợp.
Một khi điều này xảy ra, đường ra của ngắt INTO sẽ được kéo xuống thấp để xác nhận ngắt GPIO (Giả định rằng các điều kiện sinh ngắt của hệ thống là cho phép, nh− là cho phép ngắt GPIO toàn cục và cho phép ngắt toàn cục).
Lưu ý rằng cho phép ngắt ở chân có thể xác nhận đầu ra ngắt INTO ngay lập tức, nếu nh− điều kiện chế độ ngắt đã sẵn sàng xuất hiện ở chân. Một khi INTO đ−ợc kéo xuống mức thấp, nó sẽ tiếp tục giữ INTO ở mức thấp cho đến khi một trong các điều kiện sau đây thay đổi:
- Bit cho phép ngắt ở chân đ−ợc xóa
- Điện áp ở chân chuyển đổi sang trạng thái đối lập .
- Trong chế độ thay đổi ngắt, thanh ghi dữ liệu đ−ợc đọc, do đó thiết lập mức độ ngắt nội tại sang trạng thái đối lập.
- Chế độ ngắt bị thay đổi do đó trạng thái hiện thời của chân không sinh ra ngắt. Khi một trong các điều kiện trên xảy ra thì đầu ra INTO đ−ợc giải phóng. Tại thời điểm này, các chân khác (hoặc chính chân này) có thể xác nhận đầu ra ngắt của nó, kéo đường chung xuống thấp để xác nhận một ngắt mới. Lưu ý rằng nếu một chân đang xác nhận đường ra ngắt INTO và khi đó một chân khác lại xác nhận đầu ra ngắt của nó thì khi chân tr−ớc giải phóng
đường ra ngắt của nó mà chân thứ hai đã điều khiển đầu ra ngắt INTO của nó thì sẽ không có sự thay đổi nào đ−ợc phát hiện ra ở đầu ra ngắt INTO. Tức là sẽ không có ngắt mới nào đ−ợc xác nhận trên ngắt GPIO. Chú ý, sử dụng AND/OR trạng thái của chân GPIO và của bit cho phép ngắt toàn cục để nắm bắt đ−ợc toàn bộ các ngắt của cổng nối dây OR trong khối GPIO.
4. Hệ thống khối PSoC số Cấu trúc của hệ thống số
Hình 3 - 1: Sơ đồ khối mô tả cấu trúc các khối số trong PSoC
• Những ngoại vi đ−ợc tạo bởi khối PSoC số
x Các bộ định thời 8,16,24,32-bit với các đặc điểm sau:
Hình 3 - 2: Sơ đồ nguyên lý của bộ định thời
- Độ rộng thanh ghi 8, 16, 24, 32 bit, sử dụng 1,2,3,4 khối PSoC theo thứ tự
- Xung nhịp nguồn lên tới 48 MHz.
- Tự động nạp lại chu kỳ khi đếm xong.
- Khả năng chụp (capture) tới 24 MHz.
- Đầu ra đếm kết thúc có thể đ−ợc sử dụng nh− là đầu vào xung nhịp cho các chức năng số và t−ơng tự khác.
- Lựa chọn chế độ ngắt khi đếm kết thúc hoặc là khi bộ đếm đạt một giá
trị đặt trước. Các Module bộ định thời là những bộ đếm lùi với chu kỳ có thể lập trình đ−ợc, có khả năng chụp giữ. Xung nhịp và các tín hiệu cho phép có thể đ−ợc lựa chọn từ nguồn ngoài hoặc từ xung nhịp hệ thống. Sau khi đã khởi
động, Bộ định thời hoạt động liên tục và tự động tải chu kỳ từ thanh ghi chu kỳ mỗi khi đếm kết thúc. Các sự kiện có thể chụp giữ giá trị đếm hiện thời của Timer bằng cách xác nhận s−ờn xung của tín hiệu chụp giữ ở đầu vào. Trong mỗi chu kỳ, bộ định thời sẽ so sánh giá trị đếm với giá trị so sánh đặt ở trong thanh ghi compare để kiểm tra điều kiện “Less than” hay “Less than or Equal To”. Các ngắt có thể đ−ợc sinh ra dựa trên tín hiệu đếm kết thúc hoặc điều kiện so sánh.
x Các bộ đếm 8, 16,24,32 bit với những đặc điểm sau:
- Độ rộng thanh ghi đếm 8,16,24,32 bit, tương ứng chiếm 1,2,3,4 khối PSoC.
- Xung nhịp có thể lên tới 48 MHz.
- Tự động tải lại chu kỳ khi đếm kết thúc.
- Độ rộng xung có thể lập trình đ−ợc.
- Có đầu vào cho phép/không cho phép hoạt động đếm liên tục.
Hình 3 - 3: Sơ đồ nguyên lý của bộ đếm.
x Bộ điều chế độ rộng xung 8,16 bit với những đặc điểm sau:
- Bộ điều chế độ rộng xung 8 bit hoặc 16 bit sử dụng 1 hoặc 2 khối số.
- Nguồn xung nhịp có thể lên tới 48MHz.
- Tự động nạp lại giá trị điều chế khi kết thúc một chu kỳ điều chế xung.
- Có thể lập trình độ rộng xung.
- Mở và khóa ngắt ngay cả khi bộ điều chế đang hoạt động.
- Ngắt có thể lựa chọn theo s−ờn d−ơng của đầu ra hoặc theo giá trị
đếm cuối.
- Đầu vào xung nhịp và đầu vào cho phép có thể đ−ợc lựa chọn từ nhiều nguồn khác nhau.
- Đầu ra có thể đ−ợc nối tới một chân vào ra hoặc đ−ợc sử dụng nội bộ bên trong chíp PSoC.
x Bộ điều chế độ rộng xung 8,16 bit kết hợp với dải an toàn:
Chức năng tạo dải an toàn sẽ phát ra tín hiệu trên cả hai đầu ra chính và
đầu ra phụ của khối. Chức năng này sinh ra xung nhịp không gối lên nhau.
Hai pha xung nhịp đó không bao giờ cùng ở mức cao trong cùng một thời
điểm và khoảng thời gian ở giữa hai pha đó đ−ợc gọi là dải an toàn. Độ rộng của dải an toàn được quyết định bởi giá trị đặt trước của thanh ghi. Nếu nguồn xung nhịp là một PWM, thì nó sẽ tạo ra hai đầu ra PWM với đầu ra đảm bảo không gối lên nhau. Một tín hiệu tích cực trên đầu vào “Kill” sẽ khóa cả hai
đầu ra ngay lập tức.
x Bộ tạo dãy CRC phục vụ việc kiểm tra lỗi.
- Khả năng tạo dãy từ 2 đến 16 bit.
- Đầu vào xung nhịp lên tới 48 MHz.
- Có thể lập trình đa thức mẫu.
- Đầu vào nối tiếp, đầu ra song song.
Hình 3 - 4: Sơ đồ nguyên lý của bộ tạo dãy CRC
x Bộ truyền thông không đồng bộ UART, TX, RX với những đặc điểm:
- Bộ nhận và truyền tín hiệu không đồng bộ.
- Định dạng dữ liệu tương thích với định dạng dữ liệu RS-232.
- Tỷ số xung đồng bộ lên tới 6 Mbit/s.
- Khung dữ liệu bao gồm bit Start, bit chẵn lẻ (lựa chọn) và các bit Stop - Ngắt khi thanh ghi nhận đầy (lựa chọn) hoặc là khi bộ đệm truyền rỗng.
- Phát hiện chẵn lẻ, khung quá tải, khung báo lỗi.
- Các chức năng phát và thu ở mức cao.
Ngoài ra còn một số ngoại vi số khác của PSoC nh−: Bộ truyền thông SPI Master, SPI Slave…
5. Hệ thống khối PSoC t−ơng tự Cấu trúc của hệ thống t−ơng tự.
Hình 3 -5: Sơ đồ khối của hệ thống tương tự trong PSoC
• Những ngoại vi đ−ợc tạo bởi khối PSoC t−ơng tự.
x Các bộ khếch đại.
a. Bộ khếch đại INSAMP - Instrumentation Amplifier
- Độ khuếch đại có thể lập trình từ 2 - 16 hoặc lên tới 93 đối với cấu trúc 3 bé K§TT.
- Trở kháng vi sai đầu vào cao.
- Mét ®Çu ra.
- Có thể lựa chọn cấu trúc hai hoặc ba bộ KĐTT.
Hình 3 - 6: Sơ đồ nguyên lý bộ khuếch đại INSAMP
b. Bộ khuếch đại đảo AMPINV - Inverting Amplifier
Hình 3 - 7:Sơ đồ nguyên lý bộ khuếch đại đảo
- Độ khuếch đại có thể lập trình từ với 18 cấp, độ khuếch đại tối đa là -47 - Một đầu ra đơn đ−ợc tham chiếu đối với đất của Analog.
c. Bộ khuếch đại không đảo PGA - Programmable Gain Amplifier
- Độ khuếch đại có thể lập trình từ với 33 cấp, độ khuếch đại tối đa là 48.
- Một đầu ra đơn với điện áp tham chiếu có thể lựa chọn.
- Trở kháng đầu vào cao Module PGA là một module KĐTT dựa trên bộ khuếch đại không đảo, độ khuếch đại với độ khuếch đại có thể lập trình đ−ợc.
Bộ khuếch đại này có trở kháng đầu vào cao, băng thông rộng và điện áp tham chiếu có thể lựa chọn đ−ợc.
Hình 3 - 8: Sơ đồ nguyên lý bộ khuếch đại không đảo PGA
x Các bộ chuyển đổi tương tự sang số - ADC.
a. ADCINC12 - 12 bit Incremental ADC - Độ phân giải 12 bit, bù 2.
- Tốc độ lấy mẫu: 7,8 - 480 mẫu/giây.
- Dải đầu vào: AGND V ref.