Thiết kế hệ thống tự động dựa trên bộ vi xử lý. Phát triển hệ thống vi xử lý Các giai đoạn thiết kế hệ thống vi xử lý

  • 06.11.2021

Thiết kế hệ thống vi xử lý

Giới thiệu

Nhiệm vụ phát triển hệ thống máy tính sử dụng vi điều khiển đòi hỏi kiến ​​thức và hiểu biết về nguyên lý hoạt động của chúng, nhưng việc chính là soạn các chương trình điều khiển. Mục đích của cuốn sách này là tìm hiểu cách thiết kế các thiết bị vi điều khiển.

Là vi mạch cơ bản cho tất cả các ví dụ được đưa ra trong cuốn sách, vi mạch Atmega 128 thuộc dòng vi xử lý Atmel AVR phổ biến được sử dụng. Giả định rằng người đọc đã có hiểu biết cơ bản về cả nguyên lý của công nghệ vi xử lý và các đặc điểm kiến ​​trúc của vi điều khiển này.

Chương trình cho vi điều khiển là một bộ mã được ghi vào bộ nhớ chương trình đặc biệt của nó. Chương trình phải được viết bởi một lập trình viên, người phát triển một hệ thống vi xử lý cụ thể, nhưng không bao giờ xử lý mã. Sẽ thuận tiện hơn cho một người thao tác với các lệnh, mỗi lệnh đều có tên có ý nghĩa riêng. Do đó, một ngôn ngữ lập trình được sử dụng để viết một chương trình.

Nhiệm vụ chính của ngôn ngữ là mô tả rõ ràng chuỗi các hành động mà vi điều khiển phải thực hiện. Đồng thời, ngôn ngữ phải dễ hiểu đối với một người.

Trong quá trình tạo một chương trình, người lập trình chỉ cần viết văn bản của nó trên máy tính theo cách giống như bất kỳ văn bản nào. Sau đó, lập trình viên khởi chạy một chương trình đặc biệt - một trình dịch, dịch văn bản do lập trình viên viết thành các mã máy mà bộ vi xử lý có thể hiểu được.

Văn bản của chương trình do người lập trình viết được gọi là nguyên bản hoặc mã đối tượng... Mã thu được từ kết quả của quá trình phát sóng được gọi là kết quả hoặc mã máy... Đó là mã này được ghi vào bộ nhớ chương trình của vi điều khiển. Để viết mã kết quả, các thiết bị đặc biệt được sử dụng: lập trình viên.

Tất cả các ngôn ngữ lập trình được chia thành hai nhóm:

· Ngôn ngữ cấp thấp (hướng máy);

· Ngôn ngữ cấp cao.

Assembler là một ví dụ điển hình của ngôn ngữ hướng máy. Trong quá khứ gần đây, Assembly là ngôn ngữ duy nhất để lập trình vi điều khiển. Hiện tại, các ngôn ngữ cấp cao được sử dụng để soạn chương trình, chẳng hạn như CĂN BẢN, Si Vân vân. Những ngôn ngữ này đã từng được phát triển cho các máy tính lớn. Nhưng bây giờ chúng được sử dụng rộng rãi cho vi điều khiển.

Ưu điểm của ngôn ngữ bậc cao là một sự tăng tốc đáng kể của quá trình phát triển chương trình. Trong tất cả các ngôn ngữ cấp cao, C được cho là hiệu quả nhất. Vì vậy, trong những gì sau đây, chúng tôi sẽ chọn ngôn ngữ này để minh họa. Các phiên bản ngôn ngữ khác nhau đã được phát triển cho các họ vi xử lý khác nhau. Ví dụ, đối với vi xử lý thuộc họ AVR - C AVR.

Chương 1. Viết chương trình cho vi điều khiển

Các yếu tố ngôn ngữ C

Thanh ghi MK (thanh ghi là các ô byte trong bộ nhớ AVR MK) trong chương trình C có tên và vì các số trong hầu hết chúng có thể được thay đổi - đối với chương trình, các thanh ghi về cơ bản là các biến.
Biến đổi là một tập hợp các ô trong bộ nhớ trong đó bạn có thể lưu trữ một số hoặc các số và thay đổi chúng. Biến có địa chỉ và tên.

Hằng số- nó giống như một biến, nhưng bạn không thể thay đổi nội dung.

Hằng số

Các giá trị được liệt kê trong chương trình được gọi là hằng số. Ngôn ngữ C phân biệt bốn loại hằng số: hằng số nguyên, hằng số dấu phẩy động, hằng số ký tự và hằng số chuỗi.

Hằng số nguyên: Đây là một số thập phân, bát phân, thập lục phân hoặc nhị phân đại diện cho một giá trị nguyên ở một trong các dạng sau: thập phân, bát phân, thập lục phân hoặc nhị phân.

Một hằng số thập phân bao gồm một hoặc nhiều chữ số thập phân và chữ số đầu tiên không được bằng 0 (nếu không số đó sẽ được hiểu là số bát phân).

Một hằng số bát phân bao gồm số 0 bắt buộc và một hoặc nhiều chữ số bát phân (không nên bao gồm tám và chín trong số các chữ số, vì những chữ số này không được bao gồm trong hệ thống số bát phân).

Hằng số thập lục phân bắt đầu bằng chuỗi bắt buộc 0x hoặc 0X và chứa một hoặc nhiều chữ số thập lục phân (các chữ số là tập hợp các chữ số thập lục phân: 0,1,2,3,4,5,6,7,8,9, A, B (C, D, E, F).

Một hằng số nhị phân được viết bằng cách sử dụng các ký tự nhị phân, phải đứng trước dãy 0b.

ví dụ - Số nguyên có thể được viết:

Số thập phân: 12 234 -5493

Ở dạng nhị phân có tiền tố là 0b như thế này: 0b101001

Ở dạng thập lục phân với tiền tố 0x như sau: 0x5A

Ở dạng bát phân có tiền tố là 0 như thế này: 0775

Nếu bạn cần tạo một hằng số nguyên âm, thì hãy sử dụng dấu "-" trước khi viết hằng số (được gọi là hằng số nguyên âm). Ví dụ: -0x2A, -088, -16.

Mỗi hằng số nguyên được gán một kiểu xác định các chuyển đổi phải được thực hiện nếu hằng số được sử dụng trong các biểu thức. Kiểu của hằng số được định nghĩa như sau:

Hằng số thập phân được coi là giá trị có dấu và được gán kiểu int (số nguyên) hoặc long (số nguyên dài) theo giá trị của hằng số. Nếu hằng số nhỏ hơn 32768, thì nó được gán kiểu int, ngược lại là long.

Hằng số bát phân và thập lục phân được chỉ định kiểu NS, int không dấu(số nguyên không dấu), Dài hoặc không ký lâu tùy thuộc vào giá trị của hằng số theo Bảng 1.1.

Bảng 1.1

Phạm vi của hằng số thập lục phân Phạm vi của hằng số bát phân Loại
0x0 - 0x7FFF 0 - 077777 NS
0X8000 - 0XFFFF 0100000 - 0177777 int không dấu
0X10000 - 0X7FFFFFFF 0200000 - 017777777777 Dài
0X80000000 - 0XFFFFFFFF 020000000000 - 037777777777 không ký lâu

Số dấu phẩy động bao gồm một số nguyên và một phần phân số và / hoặc một số mũ. Hằng số dấu phẩy động đại diện cho các giá trị dương có độ chính xác kép (thuộc loại kép). Để xác định một giá trị âm, cần thiết lập một biểu thức hằng bao gồm một dấu trừ và một hằng số dương.

Ví dụ: 115,75, 1.5E-2, -0.025, .075, -0.85E2

Hằng ký tự - được biểu thị bằng một ký tự được đặt trong dấu nháy đơn. Giá trị của một hằng ký tự là mã ký tự số.

Ví dụ, "Q" là chữ Q.

Hằng số tượng trưng có kiểu int và được bổ sung dấu trong quá trình chuyển đổi kiểu.

Hằng số chuỗi (theo nghĩa đen) - một chuỗi các ký tự (bao gồm chuỗi ký tự và chữ hoa của tiếng Nga và tiếng Latinh, cũng như các số) được đặt trong dấu ngoặc kép (").

Ví dụ: "Heloo"

Các ký tự chữ của chuỗi được lưu trữ trong một vùng bộ nhớ. Trình biên dịch thêm một ký tự null vào cuối mỗi chuỗi ký tự, được biểu thị bằng chuỗi thoát \ 0. Chuỗi ký tự có kiểu char.

1.1.2. Định danh

Mã định danh là một chuỗi các số và chữ cái, cũng như các ký tự đặc biệt, với điều kiện đầu tiên là một chữ cái hoặc ký tự đặc biệt. Để hình thành số nhận dạng, có thể sử dụng các chữ cái viết thường hoặc viết hoa của bảng chữ cái Latinh. Ký tự gạch dưới (_) có thể được sử dụng như một ký tự đặc biệt. Hai số nhận dạng mà chữ hoa và chữ thường phù hợp được sử dụng được coi là khác nhau. Ví dụ: abc, ABC, A128B, a128b.

Định danh được tạo ở giai đoạn khai báo một biến, hàm, cấu trúc, v.v. sau đó nó có thể được sử dụng trong các câu lệnh tiếp theo của chương trình đã phát triển. Định danh không được trùng với các từ khóa, với các từ dành riêng và tên các chức năng của thư viện trình biên dịch C.

Từ khóa

Các kiểu dữ liệu và khai báo của chúng

Một điểm khác biệt quan trọng giữa ngôn ngữ C và các ngôn ngữ khác là không có nguyên tắc mặc định, dẫn đến việc phải khai báo tất cả các biến được sử dụng trong chương trình một cách rõ ràng cùng với chỉ báo về kiểu tương ứng của chúng.

Định dạng khai báo biến như sau:

[]

- Bộ chỉ định lớp bộ nhớ - được định nghĩa bởi một trong bốn từ khóa của ngôn ngữ C: auto, extern, register, static và cho biết bộ nhớ sẽ được cấp phát như thế nào cho biến đã khai báo, mặt khác, phạm vi của biến này, tức là., từ phần nào của chương trình mà bạn có thể tham chiếu đến nó. Đây không phải là yếu tố bắt buộc và chỉ cần thiết trong một số trường hợp.

- nếu biến có thể được sử dụng trong các tệp khác của mã nguồn chương trình;

- nếu biến là cục bộ, thì nó được khai báo trong một số hàm sau dấu ngoặc và phải giữ nguyên các giá trị của nó cho đến lần gọi tiếp theo của hàm này;

- đặt biến trong thanh ghi MK.

Biến toàn cụcđược khai báo trước khi chúng xuất hiện trong văn bản của bất kỳ hàm nào. Sau khi được khai báo, các biến toàn cục có sẵn trong bất kỳ hàm chương trình nào.

Biến cục bộđược khai báo ở phần đầu của các hàm - tức là sau dấu ngoặc nhọn.

- đặc tả của kiểu dữ liệu mà biến có thể lưu trữ.

Để xác định dữ liệu kiểu số nguyên, các từ khóa khác nhau được sử dụng để xác định phạm vi giá trị và kích thước của vùng bộ nhớ được cấp phát cho các biến.

Ví dụ,

Ký tự không dấu - lưu trữ một số từ 0 đến 255 (byte);

Unsigned Int - lưu trữ một số từ 0 đến 65535 (hai byte);

Int dài không dấu - lưu trữ một số từ 0 đến 4294967295 (bốn byte).

Thay vì ký tự không dấu, bạn có thể viết chỉ ký tự, vì trình biên dịch coi char là không dấu theo mặc định.

Ký hiệu char - có nghĩa là một biến có dấu và lưu trữ một số từ -128 đến 127.

Các từ khóa có dấu và không dấu cho biết cách bit 0 của biến đã khai báo được diễn giải, nghĩa là, nếu từ khóa không dấu được chỉ định, thì bit 0 được hiểu là một phần của số, ngược lại bit 0 được hiểu là có dấu. Nếu không có từ khóa unsigned, biến số nguyên được coi là có dấu. Trong trường hợp định nghĩa kiểu bao gồm kiểu khóa có dấu hoặc không dấu và được theo sau bởi một định danh biến, thì nó sẽ được coi là một biến kiểu int. Ví dụ:

unsigned int n; unsigned int b; int c; (ngụ ý có dấu int c); không dấu d; (ngụ ý không dấu int d); đã ký f; (ngụ ý đã ký int f).

Một biến thuộc bất kỳ kiểu nào cũng có thể được khai báo là không thể thay đổi. Điều này được thực hiện bằng cách thêm từ khóa const vào kiểu định nghĩa. Các đối tượng Const đại diện cho dữ liệu chỉ đọc, tức là biến này không thể được gán một giá trị mới. Lưu ý rằng nếu không có type-specifier sau từ const, thì kiểu-specifier int được giả định. Nếu từ khóa const đứng trước khai báo các kiểu kết hợp (mảng, cấu trúc, hỗn hợp, kiểu liệt kê), thì điều này dẫn đến thực tế là mỗi phần tử cũng phải là không thể thay đổi, tức là nó chỉ có thể được gán giá trị một lần.

const đôi A = 2,128E-2; const B = 286; (ngụ ý const int B = 286) consnant char_ string Constant = "đây là một hằng chuỗi"

Dữ liệu nổi

Đối với các biến đại diện cho một số dấu phẩy động, các công cụ sửa đổi kiểu sau được sử dụng: float, double, long double (trong một số triển khai của ngôn ngữ C dài đôi vắng mặt).

Giá trị float chiếm 4 byte. Trong số này, 1 bit được dành cho dấu hiệu, 8 bit cho số mũ dư thừa và 23 bit cho phần định trị. Lưu ý rằng bit quan trọng nhất của phần định trị luôn là 1, vì vậy nó không được lấp đầy, do đó phạm vi giá trị của biến dấu phẩy động là khoảng 3,14E-38 đến 3,14E + 38. Một nhân đôi chiếm 8 byte trong bộ nhớ. Định dạng của nó tương tự như định dạng của float. Các bit bộ nhớ được cấp phát như sau: 1 bit cho dấu hiệu, 11 bit cho số mũ và 52 bit cho phần định trị. Có tính đến bit bậc cao bị bỏ qua của phần định trị, phạm vi giá trị là từ 1,7E-308 đến 1,7E + 308.

float f, a, b; kép x, y;

là tên của biến. Ví dụ imy peremennoi.

Thông thường sử dụng các chữ cái nhỏ cho các biến và để phân biệt tên biến với tên của hàm, tên biến có thể bắt đầu bằng một chữ cái và tên của các hàm (ngoại trừ hàm chính) có dấu gạch dưới.

Ví dụ, moya peremennaya , _vasha funkzia.

Các biến toàn cục, cũng như các biến cục bộ với công cụ sửa đổi tĩnh, khi bắt đầu và khởi động lại chương trình đều bằng 0, trừ khi chúng được gán các giá trị khác nhau.

Một số ví dụ về khai báo biến:

Không dấu Char my_peremen = 34; / * my_peremen được định nghĩa là Char không dấu, với giá trị được gán là 34 (có thể thực hiện mà không cần gán) * /

Không dấu Int big_ peremen = 34634; / * big_ peremen được khai báo là Int không dấu * /.

Khai báo mảng

Mảng là một nhóm các phần tử cùng kiểu (double, float, int, v.v.). Từ việc khai báo một mảng, trình biên dịch phải thu được thông tin về kiểu của các phần tử mảng và số lượng của chúng. Khai báo mảng có hai định dạng:

type-specifier specifier [hằng số - biểu thức];

xử lý kiểu-đặc tả;

Bộ mô tả là một định danh mảng.

Type-specifier chỉ định kiểu của các phần tử của mảng đã khai báo. Phần tử mảng không được là hàm và phần tử void.

Một biểu thức hằng trong dấu ngoặc vuông chỉ định số phần tử trong mảng. Có thể bỏ qua biểu thức Const khi khai báo mảng trong các trường hợp sau:

Khi khai báo, mảng được khởi tạo;

Mảng được khai báo như một tham số chính thức cho hàm.

Trong ngôn ngữ C, chỉ có mảng một chiều được định nghĩa, nhưng vì một phần tử mảng có thể là một mảng, nên mảng nhiều chiều cũng có thể được định nghĩa. Chúng được chính thức hóa dưới dạng danh sách các biểu thức hằng theo sau mã định danh mảng, với mỗi biểu thức hằng được đặt trong dấu ngoặc vuông riêng của nó.

Mỗi biểu thức hằng trong dấu ngoặc vuông xác định số phần tử dọc theo một chiều nhất định của mảng, do đó khai báo mảng hai chiều chứa hai biểu thức hằng, một ba chiều một - ba, v.v. Lưu ý rằng trong C, phần tử đầu tiên của mảng có chỉ số là 0.

Khối lượng biểu đồ - đánh số phần tử bắt đầu từ 0, tức là các phần tử của mảng này được gọi là khối lượng, khối lượng và chúng lưu trữ các số 11, 22, 33. Ở đâu đó trong chương trình, một phần tử có thể được gán giá trị, ví dụ khối lượng = 210. Có thể không gán giá trị cho các phần tử.

Ví dụ: một biến chuỗi hoặc một mảng chứa một chuỗi ký tự

Char stroke = ”Hello” xác định 6 phần tử, mặc dù nó chỉ chứa năm ký tự. Phần tử thứ sáu là ký tự điều khiển, được nối vào cuối dòng \ 0.

Một mảng ký tự cũng có thể được khai báo mà không cần chỉ định số phần tử.

Ví dụ,

Char str = "khai báo mảng ký tự"

Biểu thức và bài tập

Toán hạng và phép toán

Sự kết hợp của các dấu hiệu hoạt động và các toán hạng dẫn đến một giá trị cụ thể được gọi là một biểu thức. Các dấu hiệu hoạt động xác định các hành động được thực hiện trên các toán hạng. Mỗi toán hạng trong một biểu thức có thể là một biểu thức. Ý nghĩa của biểu thức phụ thuộc vào vị trí của các dấu phép toán và dấu ngoặc trong biểu thức, cũng như mức độ ưu tiên của các phép toán.

Trong ngôn ngữ SI, một phép gán cũng là một biểu thức và giá trị của một biểu thức như vậy là giá trị được gán.

Toán hạng là một hằng số, chữ, mã định danh, lệnh gọi hàm, biểu thức chỉ số con, biểu thức lựa chọn mục hoặc biểu thức phức tạp hơn được hình thành bởi sự kết hợp của các toán hạng, dấu phép toán và dấu ngoặc đơn. Bất kỳ toán hạng nào có giá trị không đổi được gọi là một biểu thức hằng. Mỗi toán hạng có một kiểu.

Để đặt một số vào một biến (đăng ký) trong ngôn ngữ C, có một toán tử gán “ = ”. Biểu tượng này trong C có nghĩa là để tính toán kết quả của những gì ở bên phải của toán tử gán và đặt kết quả này vào biến nằm Qua bên trái toán tử gán.

1.PORTB=PINB+34; / * Dòng này trong C có nghĩa là Lấy (đọc) giá trị của biến (đăng ký) PINB, sau đó thêm số 34 vào đó và đưa kết quả vào biến PORTB * /

2. VARIABLE = PINC; / * Dòng này trong C có nghĩa là lấy (đọc) giá trị của biến (đăng ký) PINC và đặt kết quả vào một biến có tên VARIABLE * /
3. Dòng nơi biến ở bên trái của “=“ nhưng qua dấu & PORTB & = 0x23; trong C có nghĩa là - để đọc nội dung của biến PORTB, sau đó thực hiện phép logic "theo chiều dọc (bitwise) AND" giữa giá trị đọc và số 0x23 và đặt (ghi, gán) kết quả vào biến PORTB 4. Dòng trong đó biến nằm ngay bên trái của “=” PORTB = 0x23; trong C có nghĩa là - mà không cần đọc nội dung của biến PORTB, hãy gán cho nó giá trị 0x23, phá hủy những gì đã có trước đó.
Thay vì & "AND" (AND - chỉ 1 và 1 cho 1), có thể có các phép toán logic bit khác: | "OR" (OR chỉ 0 và 0 cho 0) ^ "Exclusive OR" (XOR thay đổi bit đối lập với "1") ~ "bit invert" (INV thay đổi bit đăng ký thành các ký tự đối diện) và các phép toán số học: + - * /%
Các chữ viết tắt được sử dụng với toán tử gán:
GHI DÀI Ý NGHĨA GIẢM XUỐNG
x = x + 1; thêm 1 x ++; hoặc ++ x;
x = x - 1; trừ đi 1 NS--; hoặc -x;
x = x + y; thêm y x + = y;
x = x - y; trừ y x - = y;
x = x * y; nhân với y x * = y;
x = x / y; chia cho y x / = y;
x = x% y; phần còn lại của bộ phận x% = y;
NS--; trừ đi 1 x - = 1;
x ++; thêm 1 x + = 1;

Có các phép toán trong C thay đổi giá trị của một biến mà không cần toán tử gán:

PORTA ++;/ * Dòng C này có nghĩa là Lấy giá trị của biến PORTA, thêm 1 vào nó và ghi kết quả trở lại PORTA. Tăngđăng ký PORTA * /

PORTC--;/ * Dòng này trong C có nghĩa ngược lại! Giảm dần- trừ 1 từ giá trị của thanh ghi PORTC * /

Khi một số tăng hoặc giảm được sử dụng trong một biểu thức, điều quan trọng là hai dấu + hoặc - xuất hiện trước biến hoặc sau biến:

a = 4; b = 7; a = b ++; / * Dòng này trong C có nghĩa là: lấy giá trị của b, gán cho a, sau đó thêm 1 vào b và lưu kết quả vào b. Bây giờ a sẽ chứa số 7, b sẽ chứa số 8 * / a = 4; b = 7; a = ++ b; / * Dòng này trong C có nghĩa là: lấy giá trị của biến b, sau đó thêm 1 vào nó và lưu kết quả vào b và gán kết quả tương tự cho biến a. Bây giờ a sẽ chứa số 8 và b sẽ chứa số 8 * / 1.2 .2 Các phép toán số học trong C x + y // phép cộng x - y // phép trừ x * y // phép nhân x / y / * phép chia. Nếu các số là số nguyên, kết quả là số nguyên với phần phân số bị loại bỏ - không được làm tròn. Những thứ kia. nếu phép chia cho kết quả là 6.23411 hoặc 6.94, thì kết quả sẽ chỉ là số nguyên 6. Nếu các số dấu phẩy động, tức là float hoặc double, được viết với một điểm và một số sau dấu chấm, thì kết quả sẽ là a số dấu phẩy động mà không loại bỏ phần phân số 131,9739 / 6,18 sẽ cho 21,355 * / x% y // tính phần còn lại của phép chia số nguyên Ví dụ:

NS< y // X меньше Y
x> y // khác
NS<= y // меньше или равно
x> = y // lớn hơn hoặc bằng
x == y // bằng
x! = y / * không bằng Kết quả của việc thực thi các toán tử này: "true" là "1" (chính xác hơn là "không phải là không"), "false" là "0". Giá trị được lưu trữ trong các biến (trong thanh ghi)
NS
tạiĐừng thay đổi. Các giá trị được lưu trữ (hoặc chứa) trong các biến được lấy (đọc) và so sánh * /

1.2.5 Các phép toán logic:

|| // "HOẶC" - chỉ "sai" và "sai"

// cho sai

&& // "VÀ" - chỉ "đúng" và "đúng"
// cho "true"

! // "KHÔNG" - phủ định logic

Kết quả của một phép toán logic KHÔNG phải là một SỐ, mà là một giá trị logic "true" hoặc "false".

Đối với các phép toán logic && và || kết quả của các biểu thức ở bên trái và bên phải của dấu hiệu hoạt động được lấy được chuyển đổi thành true hoặc false và kết quả logic của hoạt động được xác định.

Trình biên dịch chuyển đổi kết quả "true" thành 1 và không thành bất kỳ số nào khác 0.

Các phép toán logic có thể kết hợp một số điều kiện được kiểm tra.

Ví dụ:

nếu như((biểu thức1) && ((biểu thức2) || (biểu thức 3)))
{ / * Mã chương trình sẽ được thực thi tại đây nếu:

Biểu thức1 "Truth" (có nghĩa là không phải bằng không) và ít nhất một trong các biểu thức 2 và 3 cũng là "True" (có nghĩa là không phải bằng không).
} ;

1.3. Các cấu trúc được sử dụng trong C

1.nếu như(){} khác(); thiết kế lý tưởng nếu bạn cần thực hiện một số phần của chương trình có hoặc không có bất kỳ điều kiện nào:

} khác(một phần tử xây dựng tùy chọn, nếu không có nó, cấu trúc sẽ trông như thế này:

nếu như (biểu hiện) (Mã C / * thực hiện mã này nếu biểu hiện"true" - tức là kết quả của phép tính của nó không phải là 0 * /
};

nếu như(PINB.5) (Thực thi mã C);
/* nếu như trên chân PB5 có "1" (không phải "0" nghĩa là "đúng") thì chương trình sẽ thực thi mã và nếu nó có "0" (nghĩa là "false"), thì nó sẽ không làm điều đó, mà chỉ cần chuyển sang dòng tiếp theo * /

2. trong khi() (); vòng lặp có điều kiện (vòng lặp có điều kiện) - được sử dụng nếu bạn cần thực thi một số mã chương trình trong khi thực thi (tồn tại,
"true" có nghĩa là "không phải bằng không") một số điều kiện, kết quả của việc đánh giá một biểu thức:

trong khi ( biểu hiện ) (Mã C / * thực thi mã này nếu biểu thức là "true" - nghĩa là, kết quả đánh giá của nó không phải là 0. Trong khi mã này đang được thực thi, biểu thức không được kiểm tra tính trung thực. Sau khi mã được thực thi, a chuyển tiếp sang dòng xảy ra trong khi kiểm tra lại xem biểu thức có đúng không * /
};

Ví dụ:

trong khi(PINA.6) (Thực thi mã C);
/* trong khi có "1" trên chân PA6 (không phải "0" nghĩa là "đúng"), thì chương trình sẽ thực thi mã, và kiểm tra lại xem trên PA6 * / Nếu bit_6 đã trở thành "0", thì chương trình sẽ vào mà không làm những gì trong ()

Xe đạp trong khi có một lựa chọn

Làm trong khi

tại đó mã trong () được thực thi ít nhất một lần bất kể điều kiện có đúng hay không trong ngoặc:

do (Mã C / * thực thi mã này một lần sau đó, nếu biểu thức là "true" - nghĩa là, kết quả đánh giá của nó không phải là 0 - một lần nữa thực thi mã từ đầu, và cứ tiếp tục như vậy cho đến khi biểu thức là true * / ) while (biểu thức); Vòng lặp for (;;) và while () thường được sử dụng như sau: while (1); vì (;;); / * Vì vậy, viết các chu kỳ này có nghĩa là: MK thực hiện dòng này trong khi có nguồn điện, không có thiết lập lại và không có gián đoạn. Khi một ngắt xảy ra, chương trình sẽ chuyển đến trình xử lý ngắt và (nếu không có chuyển tiếp sang vị trí khác trong chương trình trong trình xử lý) sau khi hoàn thành mã trình xử lý, nó sẽ quay lại chu trình này một lần nữa. * / while (1) (mã chương trình); for (;;) (mã chương trình); 4.cho (;;) (); - chu kỳ này cho phép bạn thực thi một phần của chương trình với số lần cần thiết:

char tôi; / * khai báo biến cho đây là một biến C thông thường và do đó có thể có bất kỳ tên hợp lệ nào bạn muốn và nhập * /

(i = 5; i<20; i+=4) {
Mã C / * Đầu tiên, biểu thức kiểm tra tôi sẽ được xác định là "true" hoặc "false"<20. Так как переменной i присвоено значение 5 то контрольное выражение "истинно" и код цикла sẽ được thực hiện lần đầu tiên cho i = 5, sau đó bằng biểu thức i + = 4, tôi sẽ trở thành 9, bây giờ sự thật (tính công bằng, sự thực thi) của biểu thức điều khiển tôi sẽ được kiểm tra lại<20 и так как 9<20 код цикла sẽ được thực thi lại nhưng với i = 9. Điều này sẽ tiếp tục cho đến khi kết quả đánh giá biểu thức điều khiển là "true". Khi kết quả trở thành "false" - chương trình sẽ thoát khỏi vòng lặp mà không cần thực thi mã. * /
};

i = 5 là biểu thức ban đầu, sau đó sẽ là gì ở phần đầu của biến tôi. Số 5 chỉ là ví dụ, nó có thể giống như khai báo kiểu biến cho phép tôi, trong trường hợp của chúng tôi, nó là char trong hầu hết các trình biên dịch, theo mặc định, đây là kiểu ký tự không dấu - nó có thể lưu trữ các số từ 0 đến 255

tôi< 20 - контрольное выражение. Может быть с разными операторами отношения, quan trọng duy nhấtđể trong quá trình của chu kỳ, nó một lần trở thành "nói dối" - nếu không thì chu kỳ sẽ "lặp" tức là Sẻ không bao giơ kêt thuc.

i + = 4 là bộ đếm hoặc sự thay đổi của biến vòng lặp. Thường cái này i ++ những thứ kia. 1 được thêm vào biến mỗi lần "chạy" của vòng lặp. Nhưng một lần nữa, nó có thể là thứ bạn cần.

Điều kiện ban đầu- có thể là bất kỳ biểu thức nào hợp lệ trong C, kết quả của nó là một số nguyên.

Biểu thức kiểm soát- xác định chu kỳ sẽ được thực hiện trong bao lâu.

Quầy tính tiền- cho biết biểu thức ban đầu thay đổi như thế nào trước mỗi lần thực hiện một vòng lặp mới.

Biểu hiện- có thể không chỉ là một biến mà còn là một hàm của các biến khác, ví dụ:

i = (7 + i * 4) hoặc i = (hàm của các biến khác).

5. chuyển() (); - toán tử nhiều lựa chọn, cho phép bạn chọn từ một số tùy chọn.

Biểu thức theo sau từ khóa switch trong dấu ngoặc đơn có thể là bất kỳ biểu thức C nào phải là một giá trị nguyên. Ý nghĩa của biểu thức này là chìa khóa để chọn từ một số tùy chọn. Phần nội dung của câu lệnh switch bao gồm một số câu lệnh được đánh dấu bằng từ khóa trường hợp, theo sau là một biểu thức hằng. Tất cả các biểu thức hằng trong câu lệnh switch phải là duy nhất. Ngoài các câu lệnh được đánh dấu bằng từ khóa trường hợp, có thể có, nhưng chắc chắn là một đoạn, được đánh dấu bằng từ khóa mặc định. Danh sách toán tử có thể để trống hoặc chứa một hoặc nhiều toán tử. Hơn nữa, câu lệnh switch không cần đặt chuỗi câu lệnh trong dấu ngoặc nhọn.

Câu lệnh switch được thực hiện như sau:

Biểu thức trong ngoặc đơn được đánh giá;

Các giá trị được tính toán tuần tự được so sánh với các biểu thức hằng theo các từ khóa trường hợp;

Nếu một trong các biểu thức hằng khớp với giá trị của biểu thức, thì điều khiển được chuyển đến câu lệnh được đánh dấu bằng từ khóa trường hợp tương ứng;

Nếu không có biểu thức hằng nào bằng biểu thức, thì điều khiển được chuyển cho toán tử được đánh dấu bằng từ khóa mặc định và nếu nó không có, điều khiển được chuyển cho toán tử tiếp theo sau khi chuyển đổi.

Tất cả các câu lệnh giữa câu lệnh bắt đầu và phần cuối của phần nội dung đều được thực thi bất kể từ khóa nào, trừ khi một trong các câu lệnh chuyển quyền điều khiển từ phần nội dung của câu lệnh switch. Do đó, lập trình viên phải tự mình thoát khỏi trường hợp, nếu cần thiết. Việc sử dụng phổ biến nhất cho điều này là câu lệnh break.

chuyển(biểu hiện) (

trường hợp 5: C mã
/ * mã này sẽ được thực thi nếu kết quả đánh giá biểu thức là 5, đây là công việc của nhà điều hành chuyển sẽ kết thúc * /
nghỉ;

trường hợp -32: C mã
/ * mã này sẽ được thực thi nếu biểu thức đánh giá là một số âm -32. Đây là công việc của nhà điều hành. chuyển sẽ kết thúc * /
nghỉ;

trường hợp "G": C mã
/ * mã này sẽ được thực thi nếu kết quả đánh giá biểu thức bằng số tương ứng với ký tự G trong bảng ASCII. chuyển sẽ kết thúc * /
nghỉ;

vỡ nợ: Mã C
/ * mã này sẽ được thực thi nếu kết quả đánh giá biểu thức không phải là 5 hoặc -32 hoặc "G", cũng như sau khi thực thi mã không
có một khoảng thời gian nghỉ giải lao khi kết thúc;

Đây là công việc của nhà điều hành chuyển sẽ kết thúc * /
};

/* chuyển kết thúc - mã chương trình tiếp theo được thực thi * /

trường hợp- có thể có nhiều tùy theo yêu cầu để chương trình hoạt động nhanh hơn, các tùy chọn có thể xảy ra nhất nên được đặt cao hơn.

vỡ nợ- không yêu cầu. Nó có thể được đặt không ở cuối.

nghỉ;- Nếu bạn không sử dụng nó, sau đó tìm thấy tùy chọn mong muốn, chương trình sẽ đáp ứng các điều kiện sau trường hợp.

6.đi đến- người điều hành nhánh không điều kiện (tức thời).

Câu lệnh goto chuyển quyền điều khiển đến câu lệnh được gắn nhãn-name. Câu lệnh được gắn thẻ phải có cùng chức năng với câu lệnh goto và thẻ được sử dụng phải là duy nhất, tức là một tên-nhãn không thể được sử dụng cho các câu lệnh chương trình khác nhau. LabelName là một định danh. một số mã của chương trình của chúng tôi trong C ... mesto_5: / * chúng tôi sẽ nhận được ở đây sau khi thực thi dòng chương trình goto mesto_5 * / mã sẽ được thực thi sau goto mesto_5; ... một số mã của chương trình của chúng tôi trong C ... mesto_1: / * chúng tôi sẽ nhận được ở đây sau khi thực thi dòng chương trình goto mesto_1 * / mã sẽ được thực thi sau goto mesto_1; ... một số mã của chương trình của chúng tôi trong C ... goto mesto_1; / * chuyển đến vị trí của chương trình nơi mesto_1 được viết ở đầu dòng: * / ... một số mã của chương trình của chúng tôi bằng C.. . goto mesto_5; / * chuyển đến vị trí của chương trình nơi mesto_5 được viết ở đầu dòng: * / ... một số mã của chương trình của chúng ta trong C.

Chương trình mẫu C

/*Đoạn 1 tiêu đề chương trình

Nó được định dạng như một bình luận và thường chứa thông tin

Về tên, mục đích, phiên bản và tác giả của chương trình
- mô tả ngắn gọn về thuật toán chương trình
- giải thích về mục đích của các kết luận MK và phương thức hoạt động của nó, cầu chì
- trình biên dịch, các công cụ và các phiên bản của chúng
- thông tin khác mà bạn cho là hữu ích để chỉ ra

// điểm 2 bao gồm các tệp bên ngoài

#bao gồm

/ * trước khi biên dịch, trình biên dịch tiền xử lý sẽ chèn nội dung (văn bản) thay vì dòng này tập tin tiêu đề"header" mega16.h - tệp này chứa danh sách các thanh ghi có sẵn trong ATmega16 MK và sự tương ứng giữa tên của chúng với địa chỉ thực của chúng trong MK. Bạn nên chỉ định MK bạn đang sử dụng trong các thuộc tính dự án trong trình biên dịch * /

#bao gồm
/ * trước khi biên dịch, bộ tiền xử lý trình biên dịch sẽ chèn văn bản "tiêu đề" delay.h thay vì dòng này - tệp này chứa các hàm để tạo tạm dừng trong chương trình. Bây giờ, để tạm dừng, bạn chỉ cần viết: * /

/ * tạm dừng N (số) micro giây. Nó phải là một hằng số - KHÔNG PHẢI là một biến số !!!
Ví dụ:

delay_us (12 + 7 * 3);
sự chậm trễ (117);

delay_ms (x); / * tạm dừng x milSec
x - có thể là một biến, biểu thức hoặc số
0 đến 65535 (loại int không dấu)
Ví dụ:

delay_ms (3280);
delay_ms (biến);
delay_ms (biến * 4 + 760); * /

//điểm 3định nghĩa người dùng

#định nghĩa ADC_BUSY PINB.0
#định nghĩa NCONVST PORTB.1
/ * sau hai dòng này, trước khi biên dịch, trình biên dịch tiền xử lý sẽ thay thế ADC_BUSY bằng PINB.0 và NCONVST bằng PORTB.1 trong văn bản chương trình
Do đó, thay vì nhớ rằng đầu ra bận của AD7896 được kết nối với chân PB0 của bạn, bạn có thể kiểm tra ý nghĩa của khái niệm có ý nghĩa ADC_BUSY - "ADC đang bận". Và thay vì điều khiển chân trừu tượng PB1 (thông qua PORTB.1), bạn có thể điều khiển - NCONVST - "bắt đầu chuyển đổi AD mới".

#define - Thật tiện lợi! Nhưng không hoàn toàn.
*/

Ví dụ:

#định nghĩa invbit (p, n) (p = p ^ bit (n))

Các biến ở đây là "p" và "n". Bây giờ đảo ngược bit 5 trong thanh ghi PORTB bạn chỉ cần viết vào chương trình:

invbit ( PORTB,5);

Ngoài ra, ở phần ngoài cùng bên phải, các biến này có thể được liên kết với nhau bằng các phép toán số học và có thể có nhiều biến như vậy.

Thuật toán

Sự phát triển của bất kỳ chương trình nào cũng bắt đầu bằng sự phát triển của một thuật toán. Trong trường hợp của chúng tôi, thuật toán như sau: sau các hoạt động cài đặt ban đầu, bộ vi điều khiển phải bước vào một chu kỳ liên tục, trong đó nó phải thăm dò đầu vào được kết nối với nút của chúng tôi và tùy thuộc vào trạng thái của nó, điều khiển các đèn LED. Hãy mô tả điều này chi tiết hơn.

Chương trình C

Khi tạo một chương trình C, chúng tôi sử dụng trình biên dịch C PRO cho AVR. Môi trường phần mềm này được thiết kế đặc biệt để phát triển các chương trình C cho vi điều khiển AVR.

Bất kỳ môi trường lập trình hiện đại nào không chỉ hoạt động với văn bản của chương trình mà còn với cái gọi là dự án.

Nhiệm vụ của lập trình viên chỉ là viết văn bản của chương trình, trong đó một tệp riêng biệt có phần mở rộng là "c" được cấp phát trong dự án. Trình biên dịch chuyển chương trình nguồn sang hệ thập lục phân (tạo tệp Hex) để nhập (phần sụn) vào bộ nhớ của vi điều khiển.

Trong thời gian tới, chúng tôi cũng sẽ xem xét chi tiết quá trình cài đặt và làm việc với môi trường phần mềm C PRO for AVR. Bây giờ chúng tôi tin rằng nó đã được cài đặt và khởi chạy.

Ngay sau khi khởi động trình biên dịch, tất cả các tham số trở về giá trị mặc định của chúng (tất cả các thiết bị bên trong bị tắt, các cổng I / O bên trong được đặt thành đầu vào, bộ dao động bên trong có tốc độ xung nhịp 4 MHz được sử dụng). Điều này tương ứng với trạng thái ban đầu của bộ vi xử lý sau khi thiết lập lại hệ thống. Chúng tôi sẽ không chạm vào những thông số mà chúng tôi không cần phải chạm vào (chúng tôi sẽ để mặc định).

Chương trình C trông như thế này:

1 #Include< Atmega 128.h >

2 Bit cũ; // cờ trạng thái cũ

3 Void main () (

4 DDB0 bit = 0; // đặt chân PB0 làm đầu vào

5 DDRC = 0xFF; // cấu hình PC làm đầu ra

6 PORTC = 0xAA; // mã nguồn được ghi vào cổng C

9 If (Nút (& PINB, 0,1,1)) (// phát hiện một đơn vị logic

10 Oldstate = 1; // cập nhật cờ

11 if (oldstate && Button (& PINB, 0,1,0)) (// phát hiện chuyển đổi từ 1 sang 0

12 PORTB = ~ PORTB; // đảo ngược PORTC

13 oldstate = 0; // cập nhật cờ

14) Trong khi (1); // chu kỳ vô tận

Sơ đồ khối của thiết bị được trình bày trong Phụ lục A.

Hệ thống vi xử lý này bao gồm các đơn vị sau: vi xử lý, RAM, ROM, giao diện lập trình song song, bộ chuyển đổi tương tự-số, bộ đếm thời gian, màn hình hiển thị.

Tín hiệu tương tự từ các cảm biến được đưa đến đầu vào của bộ ghép kênh tương tự được tích hợp trong ADC, bộ chuyển đổi này sẽ chuyển một trong các tín hiệu sang đầu vào của bộ chuyển đổi tương tự-kỹ thuật số tại mỗi khoảng thời gian.

Bộ chuyển đổi tín hiệu tương tự sang kỹ thuật số được sử dụng để chuyển đổi tín hiệu tương tự thành mã kỹ thuật số mà bộ vi xử lý hoạt động.

Bộ vi xử lý truy cập ADC thông qua giao diện song song có thể lập trình được. Đọc thông tin từ các đầu ra ADC, đưa vào ô nhớ RAM. Ngoài ra, MP, dựa trên thông tin nhận được từ cảm biến áp suất dầu tại cửa ra ga, tính toán hành động điều khiển. Giá trị này được truyền dưới dạng mã kỹ thuật số đến cơ cấu chấp hành.

RAM phục vụ cho việc lưu trữ tạm thời thông tin nhận được từ các cảm biến và kết quả trung gian của các phép tính của bộ vi xử lý.

Phần mềm hệ thống được lưu trữ trong ROM (Bộ nhớ chỉ đọc). Hoạt động đọc được điều khiển bởi một bộ vi xử lý.

Chương trình, được lưu trữ trong ROM, cung cấp các hoạt động hệ thống sau:

Bỏ phiếu tuần tự của các cảm biến;

Điều khiển chuyển đổi tín hiệu tương tự sang tín hiệu tương tự;

Điều chỉnh áp suất dầu;

Chỉ định và báo hiệu;

Phản ứng mất dinh dưỡng.

Phát triển thuật toán hệ thống

Sơ đồ khối của thuật toán được trình bày trong Phụ lục B.

Khởi tạo

Ở giai đoạn này, các từ điều khiển được ghi vào RSS của giao diện song song có thể lập trình được. PPI DD10 hoạt động ở chế độ không. Các cổng hoạt động như sau: cổng A - đầu vào, cổng B - đầu ra, cổng C - đầu ra. PPI DD1 hoạt động ở chế độ không. Các cổng hoạt động như sau: cổng A - ra, cổng B - ra, cổng C - ra.

Thăm dò cảm biến

Cảm biến tương tự được thăm dò ý kiến ​​bởi ADC. Các cảm biến rời rạc được bộ vi xử lý thẩm vấn thông qua cổng A của PPI 1.

Lưu vào RAM

Kết quả thu được sau khi thẩm vấn các cảm biến được đưa vào bộ nhớ truy cập ngẫu nhiên để lưu trữ tạm thời.

Kiểm soát ảnh hưởng

Hệ thống vi xử lý phân tích dữ liệu nhận được và tạo ra một hành động điều khiển kỹ thuật số.

Phát triển một giản đồ

Sơ đồ của thiết bị được trình bày trong Phụ lục D.

Bus địa chỉ được hình thành bằng cách sử dụng thanh ghi đệm và trình điều khiển bus. Việc lựa chọn thanh ghi được thực hiện bằng tín hiệu ALE của bộ vi xử lý. Trình điều khiển xe buýt là cần thiết để tăng khả năng tải của byte bậc cao của địa chỉ.

Xe buýt dữ liệu được hình thành bằng cách sử dụng trình điều khiển xe buýt, việc lựa chọn trình điều khiển này được thực hiện bằng cách áp dụng các tín hiệu DT / R và OE.

Bus hệ thống được hình thành thông qua bộ giải mã DD10 bằng cách cung cấp sự kết hợp của các tín hiệu M / IO, WR, RD.

Bảng 1 - Tín hiệu điều khiển

Việc lựa chọn ROM, RAM và các thiết bị khác được thực hiện bằng cách sử dụng các dòng A13-A15 của bus địa chỉ thông qua một bộ giải mã. Các ô ROM nằm ở địa chỉ 0000h.

Bảng 2 - Lựa chọn thiết bị

Thiết bị

Việc lựa chọn cổng hoặc thanh ghi của từ điều khiển PPI được thực hiện thông qua các dòng A0, A1 của bus địa chỉ. Các cảm biến rời rạc được đưa đến các đầu vào của cổng A PA0-PA7 PPI DD12; đến các đầu vào cổng B - từ ADC; Đèn LED được kết nối với các đầu vào của cổng C.

Bộ ghép kênh tương tự được sử dụng để chọn một thiết bị mà thông tin được đọc từ đó. Một bộ ghép kênh tương tự được tích hợp trong ADC. Độ rộng bit của ADC giống với độ rộng bit của bus dữ liệu và là 8 bit.

Điện trở R2-R4 được sử dụng để chuyển đổi tín hiệu dòng điện thống nhất 4 ... 20 mA thành điện áp 1 ... 5V.

Các giai đoạn thiết kế hệ thống vi xử lý

Các hệ thống vi xử lý về mức độ phức tạp, các yêu cầu và chức năng của chúng có thể khác nhau đáng kể về các thông số độ tin cậy, số lượng phần mềm, là bộ xử lý đơn và đa bộ xử lý, được xây dựng trên một loại hoặc một số bộ vi xử lý, v.v. Về vấn đề này, quy trình thiết kế có thể được sửa đổi tùy thuộc vào yêu cầu đối với hệ thống. Ví dụ, quá trình thiết kế MPS khác nhau bởi nội dung của ROM sẽ bao gồm việc phát triển các chương trình và sản xuất ROM.

Khi thiết kế hệ thống vi xử lý đa xử lý có chứa một số loại bộ vi xử lý, cần giải quyết các vấn đề về tổ chức bộ nhớ, tương tác với vi xử lý, tổ chức trao đổi giữa các thiết bị hệ thống với môi trường bên ngoài, phối hợp hoạt động của các thiết bị có tốc độ hoạt động khác nhau, v.v. . Dưới đây là trình tự gần đúng của các giai đoạn điển hình để tạo một hệ thống vi xử lý:
1. Chính thức hóa các yêu cầu hệ thống.
2. Sự phát triển của cấu trúc và kiến ​​trúc của hệ thống.
3. Phát triển và sản xuất phần cứng và phần mềm cho hệ thống.
4. Gỡ lỗi và kiểm tra chấp nhận phức tạp.

Giai đoạn 1. Ở giai đoạn này, các thông số kỹ thuật bên ngoài được phác thảo, các chức năng của hệ thống được liệt kê, các điều khoản tham chiếu (TOR) cho hệ thống được chính thức hóa, ý định của nhà phát triển được chính thức đưa ra trong tài liệu chính thức.

Giai đoạn 2. Ở giai đoạn này, chức năng của các thiết bị và phần mềm riêng lẻ được xác định, các bộ vi xử lý được lựa chọn trên cơ sở đó hệ thống sẽ được thực hiện, sự tương tác giữa phần cứng và phần mềm, đặc tính thời gian của các thiết bị và chương trình riêng lẻ được xác định.

Giai đoạn 3. Sau khi xác định các chức năng được thực hiện bởi phần cứng và các chức năng được thực hiện bởi các chương trình, các kỹ sư mạch và lập trình viên đồng thời bắt đầu phát triển và sản xuất một nguyên mẫu và phần mềm tương ứng. Việc phát triển và sản xuất thiết bị bao gồm phát triển các sơ đồ cấu trúc và giản đồ, chế tạo mẫu thử nghiệm và gỡ lỗi tự động.
Phát triển chương trình bao gồm phát triển các thuật toán; viết văn bản của chương trình nguồn; dịch chương trình nguồn thành chương trình đối tượng; gỡ lỗi ngoại tuyến.

Giai đoạn 4. Xem Gỡ lỗi phức tạp.

Ở mỗi giai đoạn của thiết kế MPS, mọi người có thể đưa ra các trục trặc và đưa ra các quyết định thiết kế không chính xác. Ngoài ra, các lỗi phần cứng có thể xảy ra.

Nguồn lỗi

Chúng ta hãy xem xét các nguồn lỗi trong ba giai đoạn đầu tiên của thiết kế.

Giai đoạn 1. Ở giai đoạn này, các nguồn sai sót có thể là: sự không nhất quán về mặt lôgic của các yêu cầu, sự thiếu sót, sự không chính xác của thuật toán.

Giai đoạn 2. Ở giai đoạn này, các nguồn gốc của lỗi có thể là: bỏ sót chức năng, thiếu nhất quán trong giao thức tương tác giữa phần cứng và chương trình, lựa chọn sai bộ vi xử lý, sai thuật toán, diễn giải sai yêu cầu kỹ thuật, bỏ sót một số luồng thông tin. .

Giai đoạn 3. Ở giai đoạn này, các nguồn lỗi có thể là: khi phát triển phần cứng - thiếu sót một số chức năng, hiểu sai các yêu cầu kỹ thuật, sai sót trong sơ đồ đồng bộ, vi phạm các quy tắc thiết kế; trong quá trình sản xuất nguyên mẫu - trục trặc của các bộ phận, trục trặc của việc lắp đặt và lắp ráp; khi phát triển phần mềm - bỏ sót một số chức năng của nhiệm vụ kỹ thuật, không chính xác trong thuật toán, không chính xác trong mã hóa.

Mỗi nguồn lỗi được liệt kê có thể dẫn đến một số lượng lớn các trục trặc chủ quan hoặc vật lý cần được khoanh vùng và loại bỏ. Việc phát hiện lỗi và bản địa hóa lỗi là một thách thức vì một số lý do: thứ nhất, do số lượng lớn các lỗi; thứ hai, do thực tế là các trục trặc khác nhau có thể tự biểu hiện theo cách giống nhau. Vì không có mô hình về lỗi chủ quan, nhiệm vụ này không được chính thức hóa. Có một số thành công trong việc phát triển các phương pháp và công cụ để phát hiện lỗi và xác định vị trí của các lỗi vật lý. Các phương pháp và công cụ này được sử dụng rộng rãi để kiểm tra trạng thái hoạt động và chẩn đoán sự cố của các hệ thống rời rạc trong quá trình thiết kế, sản xuất và vận hành hệ thống sau này.

Lỗi chủ quan khác với lỗi vật lý ở chỗ sau khi phát hiện, khoanh vùng và sửa chữa, chúng không còn phát sinh nữa. Tuy nhiên, như sau từ danh sách các nguồn lỗi, các lỗi chủ quan có thể được đưa ra ở giai đoạn phát triển đặc điểm kỹ thuật của hệ thống, có nghĩa là ngay cả sau khi kiểm tra kỹ lưỡng nhất hệ thống để tuân thủ các thông số kỹ thuật bên ngoài của nó, các lỗi chủ quan có thể được tìm thấy trong hệ thống.

Quá trình thiết kế là một quá trình lặp đi lặp lại. Các lỗi được phát hiện trong giai đoạn kiểm tra nghiệm thu có thể dẫn đến các điều chỉnh đặc điểm kỹ thuật và do đó, dẫn đến việc bắt đầu thiết kế toàn bộ hệ thống. Cần phát hiện ra các lỗi càng sớm càng tốt, vì điều này, cần phải kiểm soát tính đúng đắn của dự án ở mọi giai đoạn phát triển.

Kiểm tra tính đúng đắn của dự án

Các phương pháp chính để kiểm soát tính đúng đắn của thiết kế như sau: xác minh - các phương pháp chính thức để chứng minh tính đúng đắn của dự án; làm mẫu; thử nghiệm.

Có rất nhiều công việc về xác minh phần mềm, phần sụn, phần cứng. Tuy nhiên, những công trình này mang tính chất lý thuyết. Trong thực tế, họ vẫn sử dụng mô hình hóa và kiểm tra hành vi đối tượng.

Để kiểm soát tính đúng đắn của dự án ở mỗi giai đoạn thiết kế, cần phải thực hiện mô hình hóa ở các cấp độ khác nhau của biểu diễn trừu tượng của hệ thống và kiểm tra tính đúng đắn của việc thực hiện mô hình đã cho bằng thử nghiệm. Ở giai đoạn chính thức hóa các yêu cầu, kiểm soát tính đúng đắn là đặc biệt cần thiết, vì nhiều mục tiêu thiết kế không được chính thức hóa hoặc không thể được chính thức hóa về nguyên tắc. Đặc điểm kỹ thuật chức năng có thể được xem xét bởi một nhóm chuyên gia hoặc được mô phỏng và xác nhận thông qua quá trình chạy thử để xác định xem có đạt được các mục tiêu mong muốn hay không. Sau khi đặc điểm kỹ thuật chức năng đã được phê duyệt, việc phát triển các chương trình kiểm tra chức năng bắt đầu thiết lập hoạt động chính xác của hệ thống phù hợp với đặc điểm kỹ thuật chức năng của nó. Lý tưởng nhất là các bài kiểm tra được phát triển hoàn toàn dựa trên đặc điểm kỹ thuật này và cung cấp khả năng kiểm tra bất kỳ quá trình triển khai nào của hệ thống được tuyên bố là có khả năng thực hiện các chức năng được chỉ định trong thông số kỹ thuật. Phương pháp này hoàn toàn trái ngược với những phương pháp khác, trong đó các thử nghiệm được xây dựng liên quan đến các triển khai cụ thể. Việc xác nhận chức năng độc lập với việc triển khai thường chỉ hấp dẫn về mặt lý thuyết, nhưng không có giá trị thực tế do tính tổng quát cao của nó.

Tự động hóa công việc viết chương trình thử nghiệm tẻ nhạt không chỉ làm giảm thời lượng của giai đoạn thiết kế / gỡ lỗi bằng cách lấy các chương trình thử nghiệm ở giai đoạn thiết kế (vì chúng có thể được tạo ngay sau khi các yêu cầu hệ thống được hình thành) mà còn cho phép nhà thiết kế thay đổi các thông số kỹ thuật mà không phải lo lắng về việc viết lại tất cả các chương trình thử nghiệm một lần nữa. Tuy nhiên, trong thực tế, việc phát triển thử nghiệm thường được ưu tiên thấp hơn một dự án, vì vậy các chương trình thử nghiệm xuất hiện muộn hơn nhiều so với việc hoàn thành dự án. Nhưng ngay cả khi các bài kiểm tra chi tiết đã được chuẩn bị sẵn sàng, việc chạy chúng trên một trình mô phỏng thường không thực tế, vì việc lập mô hình chi tiết đòi hỏi rất nhiều tiền cho việc phát triển chương trình và thời gian tính toán, do đó, hầu hết công việc gỡ lỗi sẽ bị hoãn lại cho đến khi nguyên mẫu hệ thống được tạo.

Sau khi một lỗi được phát hiện, nguồn của nó phải được bản địa hóa để sửa nó ở mức độ thích hợp của biểu diễn trừu tượng của hệ thống và ở vị trí thích hợp. Việc xác định sai nguồn gốc của lỗi hoặc thực hiện các sửa chữa ở cấp độ khác của biểu diễn trừu tượng của hệ thống dẫn đến thực tế là thông tin về hệ thống ở các cấp cao hơn trở nên sai sót và không thể được sử dụng để gỡ lỗi thêm trong quá trình sản xuất và vận hành hệ thống. Ví dụ, nếu một sự cố được đưa vào mã nguồn của chương trình được viết bằng hợp ngữ và việc sửa được thực hiện trong mã đối tượng, thì việc gỡ lỗi thêm của chương trình sẽ được thực hiện trong mã đối tượng; trong trường hợp này, tất cả các ưu điểm của việc viết chương trình bằng hợp ngữ đều bị vô hiệu hóa.

Việc tự động hóa các thiết bị kỹ thuật đã chiếm một phần lớn trong toàn bộ tổ chức sản xuất. Chúng được sử dụng ở khắp mọi nơi trong máy công cụ, máy móc và cơ chế, hệ thống robot. Công nghệ mới làm tăng đáng kể năng suất lao động, giảm ảnh hưởng của yếu tố con người đến rủi ro trong sản xuất. Đồng thời, trình độ kỹ thuật và chất lượng của sản phẩm ngày càng cao. Hệ thống vi xử lý là một công nghệ tiên tiến tại một thời điểm. Nhưng bây giờ nó đã trở nên phổ biến, bởi vì các thiết bị được tạo ra bằng bộ vi xử lý có hiệu suất cao hơn so với các thiết bị được làm trên các mạch logic riêng biệt, với lợi ích kinh tế của trước đây.

Tiêu chuẩn hóa quy trình phát triển giúp đơn giản hóa việc phân tích và nghiên cứu trong lĩnh vực này. Nó cũng làm cho trạng thái hiện tại và kết quả có thể có thể nhìn thấy được. Các công ty sản xuất bộ vi xử lý nhúng hiện đại sử dụng các mạch tích hợp logic có thể lập trình (FPGA) và các hệ thống sản xuất có sự hỗ trợ của máy tính để thiết kế có tổ chức, nhanh chóng. Gỡ lỗi và kiểm tra trong thời gian thực cũng có thể thực hiện được với FPGA. Bản cập nhật CAD hàng năm cho phép bạn ngày càng dành ít thời gian hơn cho các công việc đơn điệu và đơn tiết, đồng thời tránh được những sai lầm rõ ràng. Điều này cho phép trừu tượng hóa lên các cấp cao hơn của hệ thống và giải quyết các vấn đề khó khăn.

Quá trình phát triển hệ thống vi xử lý nhúng có thể được biểu diễn dưới dạng hai lộ trình của các giai đoạn thiết kế kế tiếp nhau. Lộ trình đầu tiên là phát triển phần cứng của hệ thống vi xử lý nhúng. Lộ trình thứ hai là thiết kế phần mềm (Hình 1).

Hình 1. Các giai đoạn thiết kế

Nhưng không phải tất cả các bước của lộ trình đều được yêu cầu. Phần cứng hệ thống có thể không được mô phỏng trong quá trình phát triển. Do đó, một số bước có thể được loại trừ: chuẩn bị đặc điểm kỹ thuật mô phỏng, tạo mô hình, mô phỏng chức năng và thời gian. Cần lưu ý rằng mô hình hóa phần cứng của hệ thống làm tăng hiệu quả của toàn bộ quá trình thiết kế do phát hiện sớm hơn các lỗi có thể xảy ra và loại bỏ chúng.

Các bước thiết kế điển hình cho hệ thống vi xử lý bao gồm:

  1. Chính thức hóa các yêu cầu hệ thống khác nhau. Cần thiết lập các thông số kỹ thuật bên ngoài, điều khoản tham chiếu (TOR) cho hệ thống, ghi chú về hình ảnh hệ thống của nhà phát triển trong tài liệu, các chức năng của hệ thống được liệt kê.
  2. Phát triển cấu trúc và kiến ​​trúc của các phần tử hệ thống. Cần phải xác định sự tương tác giữa phần cứng và phần mềm, các chức năng của thiết bị ngoại vi và phần mềm, lựa chọn các giải pháp vi xử lý trên cơ sở đó hệ thống sẽ được thực hiện, và xác định các đặc tính thời gian.
  3. Phát triển và sản xuất phần cứng và phần mềm cho hệ thống. Nó là cần thiết để phát triển một cấu trúc và các sơ đồ giản đồ, tạo một nguyên mẫu và gỡ lỗi trong điều kiện của các chế độ hoạt động cơ bản. Phát triển phần mềm nên bao gồm các thuật toán, viết mã nguồn, dịch chương trình nguồn thành chương trình đối tượng, gỡ lỗi phần mềm và mô phỏng.
  4. Gỡ lỗi chung và kiểm tra nghiệm thu trong điều kiện làm việc.

Yếu tố con người cho phép xảy ra sự cố và các quyết định thiết kế không chính xác. Ngoài ra còn có các lỗi phần cứng trong các thiết bị. Ví dụ, các nguồn lỗi sau đây có thể xảy ra ở các giai đoạn:

Giai đoạn 1. Sự không nhất quán về mặt logic của các yêu cầu, thiếu sót, không chính xác của thuật toán.

Giai đoạn 2. Bỏ sót chức năng, bỏ sót một số luồng thông tin, thiếu nhất quán trong giao thức tương tác giữa phần cứng và chương trình, định nghĩa sai yêu cầu kỹ thuật, chọn sai giải pháp vi xử lý, sai thuật toán.

Giai đoạn 3. Khi phát triển phần cứng - bỏ sót một số chức năng, hiểu sai các thông số kỹ thuật, sai sót trong sơ đồ đồng bộ, vi phạm các quy tắc thiết kế; khi phát triển phần mềm - bỏ sót một số chức năng của đặc tả kỹ thuật, không chính xác trong thuật toán, không chính xác trong mã hóa; trong quá trình sản xuất nguyên mẫu - trục trặc của các thành phần và thiết bị ngoại vi, trục trặc trong quá trình lắp đặt và lắp ráp.

Mỗi nguồn lỗi được liệt kê có thể dẫn đến một số lượng lớn các trục trặc vật lý hoặc chủ quan cần phải được xác định và loại bỏ thêm. Việc phát hiện và xác định vị trí của một sự cố rất phức tạp vì một số lý do: thứ nhất, do sự cố, có thể có một số; thứ hai, tính đồng nhất của các triệu chứng của các vấn đề khác nhau. Vì không có mô hình về lỗi chủ quan, nhiệm vụ này không được chính thức hóa. Một giải pháp có thể thực hiện được với sự trợ giúp của các hệ thống chuyên gia - một cơ sở dữ liệu với các vấn đề hiện có và giải pháp của họ dựa trên kinh nghiệm thực tế.

Lỗi chủ quan khác với lỗi vật lý ở chỗ sau khi phát hiện, khoanh vùng và sửa chữa, chúng không còn phát sinh nữa. Nhưng các lỗi chủ quan có thể xuất hiện trong giai đoạn phát triển đặc điểm kỹ thuật của hệ thống, có nghĩa là ngay cả sau quá trình kiểm tra nghiêm ngặt nhất của hệ thống đối với các thông số kỹ thuật của nó, các lỗi chủ quan vẫn có thể được tìm thấy trong hệ thống.

Quá trình thiết kế là một quá trình lặp đi lặp lại, có nghĩa là nếu các lỗi không được loại bỏ hoàn toàn ở một giai đoạn, chúng có thể xuất hiện ở giai đoạn tiếp theo. Cần phát hiện ra các lỗi càng sớm càng tốt, vì điều này, cần phải kiểm soát tính đúng đắn của dự án ở mọi giai đoạn phát triển. Ví dụ, các lỗi được phát hiện ở giai đoạn cuối cùng của quá trình nghiệm thu và bàn giao dự án có thể dẫn đến việc hiệu chỉnh các thông số kỹ thuật, và do đó, dẫn đến việc bắt đầu thiết kế toàn bộ hệ thống. Những thay đổi trong các thông số kỹ thuật dẫn đến hậu quả tương tự (do hiểu sai và thiếu thông tin về hệ thống).

Các phương pháp chính để kiểm soát tính đúng đắn của thiết kế là: xác minh, mô hình hóa và thử nghiệm.

Việc xác minh cho phép bạn phát hiện không chỉ các lỗi hiện tại mà còn cả các lỗi tiềm ẩn có thể xuất hiện trong các dự án sử dụng khối trong tương lai. Nhưng nó đòi hỏi sự phân công kỹ thuật riêng biệt và các kỹ năng liên quan và phù hợp với các dự án lớn. Trong các dự án nhỏ, mô hình hóa và kiểm tra hành vi đối tượng thường được sử dụng hơn, bởi vì tùy chọn này có hiệu quả về chi phí và không yêu cầu nhiều tài nguyên.

Việc kiểm soát tính đúng đắn đạt được ở mỗi giai đoạn thiết kế do nhu cầu thực hiện mô hình hóa ở các mức độ trừu tượng khác nhau của hệ thống và kiểm tra tính đúng đắn của phần đã thực hiện của mô hình bằng cách thử nghiệm. Đặc điểm kỹ thuật chức năng có thể được mô phỏng và thử nghiệm theo kinh nghiệm để xác định kết quả mong đợi. Nó cũng có thể được phân tích bởi một nhóm chuyên gia. Khi đặc điểm kỹ thuật chức năng đã được phê duyệt, việc phát triển các thử nghiệm chức năng của hệ thống bắt đầu thiết lập hoạt động chính xác của hệ thống phù hợp với đặc điểm kỹ thuật chức năng của nó. Hiệu quả nhất là phát triển các bài kiểm tra hoàn toàn dựa trên đặc điểm kỹ thuật này, vì nó cho phép kiểm tra bất kỳ quá trình triển khai nào của hệ thống có khả năng thực hiện các chức năng được chỉ định trong thông số kỹ thuật. Phương pháp này tương tự như những phương pháp khác, trong đó các thử nghiệm được xây dựng liên quan đến các triển khai cụ thể, nhưng so sánh chính xác hơn giữa kỳ vọng và kết quả phát triển.

Sau khi một lỗi được phát hiện, nguồn của nó phải được bản địa hóa để sửa chữa ở mức độ thích hợp của biểu diễn trừu tượng của hệ thống và ở vị trí thích hợp. Việc xác định không chính xác nguồn gốc của lỗi hoặc thực hiện các điều chỉnh ở cấp độ khác của biểu diễn trừu tượng của hệ thống dẫn đến thực tế là thông tin về hệ thống ở cấp cao nhất trở nên sai sót và không thể được sử dụng để gỡ lỗi thêm trong quá trình sản xuất và vận hành hệ thống .

Tự động hóa công việc lặp đi lặp lại của việc phát triển các chương trình thử nghiệm giúp giảm thời gian xây dựng và gỡ lỗi bằng cách nhận các thử nghiệm sớm hơn (vì chúng có thể được tạo ngay sau khi các yêu cầu hệ thống được hình thành) và cho phép nhà thiết kế thay đổi thông số kỹ thuật mà không cần viết lại tất cả các chương trình thử nghiệm. Trong thực tế, phát triển thử nghiệm có mức độ ưu tiên thấp hơn so với một dự án, vì vậy các chương trình thử nghiệm xuất hiện muộn hơn nhiều so với việc hoàn thành dự án.

Do đó, có tính đến các sắc thái của thiết kế bộ vi xử lý, bạn có thể dễ dàng nhận được những "cạm bẫy" trong quá trình phát triển. Việc sử dụng các mạch tích hợp logic có thể lập trình (FPGA) giúp việc gỡ lỗi một lô chưa được phát hành trở nên dễ dàng hơn và cho phép bạn kiểm tra dự án và sửa lỗi. Và các hệ thống sản xuất có sự hỗ trợ của máy tính (CAD) đơn giản hóa việc phát triển bằng cách cho phép phân bổ lại các nguồn lực một cách hiệu quả hơn.

Thư mục:

  1. SibSUTI [Tài nguyên điện tử] / Thiết kế bộ vi xử lý trên FPGA - Chế độ truy cập: http://ict.sibsutis.ru/sites/csc.sibsutis.ru/files/courses/mps/mp.pdf– miễn phí. - lồng tiếng. từ màn hình. - lang. tiếng Nga (ngày điều trị 22/12/2017).
  2. Zotov V. Embedded Development Kit - một hệ thống thiết kế cho hệ thống vi xử lý nhúng dựa trên dòng FPGA FPGA của Xilinx. 2004. số 3.

1. Hoạt động,thiết kế và kiến ​​trúcthiết bị vi xử lývà hệ thống

1.1. Tổng quanthông tin về công nghệ vi xử lý

Các khái niệm cơ bản vàđịnh nghĩacông nghệ vi xử lý

Bộ vi xử lý và máy vi tính là những sản phẩm đại chúng của ngành công nghiệp điện tử. Kiến thức về các nguyên tắc cơ bản của công nghệ vi xử lý là cần thiết cho các kỹ sư của bất kỳ hồ sơ nào, đặc biệt là kỹ sư hệ thống, kỹ sư thiết kế và kỹ sư quy trình hệ thống máy tính (CS).

Bộ vi xử lý (MP) được sử dụng rộng rãi trong máy bay và thiết bị điện tử (REU) hiện đại, hệ thống điều khiển công nghệ, tự động hóa linh hoạt và các ngành công nghiệp khác. Việc sử dụng MP có tác dụng tích cực trong việc tăng năng suất lao động, nâng cao chất lượng thiết bị phục vụ các mục đích khác nhau. Nhờ việc sử dụng MP và máy vi tính trong các hệ thống kỹ thuật, chức năng của thiết bị đã được mở rộng, độ tin cậy và ổn định hoạt động của nó tăng lên, chất lượng xử lý thông tin được cải thiện.

Triển vọng và khả năng sử dụng MP và máy tính vi mô trong các hệ thống tính toán vẫn chưa được tiết lộ đầy đủ. Công nghệ chế tạo và kiến ​​trúc MP không ngừng được cải tiến. Vì vậy, dung lượng bit của MP đơn chip hiện đại đạt tới 64 bit. Khi sử dụng MP và máy tính vi mô, các nhà phát triển phải có khả năng đánh giá khả năng của kiến ​​trúc và đặc tính kỹ thuật của chúng, cũng như thành thạo các ngôn ngữ lập trình ở các cấp độ khác nhau. Hợp ngữ được sử dụng rộng rãi để tạo phần mềm hệ thống. Để đảm bảo năng suất cao của người lập trình, các tác vụ xử lý dữ liệu được giải quyết bằng cách sử dụng ngôn ngữ bậc cao (ví dụ - C). Các kỹ sư máy tính hiện đại cần có kiến ​​thức về cả kiến ​​trúc MT và lập trình các thiết bị điện tử bằng các ngôn ngữ ở các cấp độ khác nhau.


Cơ bản, trong công nghệ vi xử lý, là các khái niệm như: "bộ vi xử lý", "IS", "IC", "LSI", "VLSI", "bộ vi xử lý LSI", "thiết bị vi xử lý", "hệ thống vi xử lý", "bộ vi xử lý thiết bị gia dụng "," máy vi tính "(mục đích chung và chuyên dụng)," máy vi tính tích hợp sẵn "," máy tính cá nhân "," máy tính cá nhân gia đình "," máy tính cá nhân chuyên nghiệp "," bộ vi điều khiển ", v.v.

Ngoài ra, công nghệ vi xử lý sử dụng các khái niệm liên quan đến công nghệ máy tính, và cụ thể là "đường trục", "xe buýt", "giao diện", "giao diện hệ thống", "giao diện ngoại vi", "bộ điều hợp", "giao thức", "đường giao diện" và Vân vân.

Khi nghiên cứu phần mềm trong công nghệ vi xử lý, các khái niệm chung được sử dụng trùng tên với các khái niệm mô tả phần mềm trong công nghệ máy tính, cụ thể là "thuật toán", "chương trình", "phần mềm", v.v.

Một trong những khái niệm cơ bản, chính của công nghệ vi xử lý là "bộ vi xử lý".

Bộ vi xử lý- đây là phức tạpthiết bị điều khiển bằng phần mềm,được thiết kế để xử lý thông tin kỹ thuật số vàkiểm soát quá trình xử lý này, được thực hiện dưới dạng một hoặc nhiềumicrocircuits với mức độ tích hợp tăng lên (BIS hoặc SBIVỚI).

Vi mạch tích hợp (ANDCÔ) là một thiết bị vi điện tử thực hiện một chức năng nhất định là chuyển đổi, xử lý tín hiệu và (hoặc) tích lũy thông tin, có mật độ đóng gói bên trong lớn của các phần tử (hoặc phần tử và thành phần) và (hoặc) tinh thể được kết nối điện và được xem xét từ khía cạnh yêu cầu kiểm tra, giao hàng và vận hành các sản phẩm của điện tử vô tuyến nói chung.

IC bán dẫn- một vi mạch tích hợp, tất cả các phần tử và kết nối giữa các phần tử được thực hiện bên trong và trên bề mặt của chất bán dẫn.

IC kỹ thuật số- một vi mạch tích hợp được thiết kế để chuyển đổi và xử lý các tín hiệu thay đổi theo quy luật của một chức năng rời rạc.

Mức độ tích hợp- một chỉ số về mức độ phức tạp của vi mạch, được đặc trưng bởi số lượng các phần tử và thành phần có trong nó. Mức độ tích hợp được xác định bởi công thức k= lg n, ở đâu k- hệ số xác định mức độ tích phân, các giá trị được làm tròn đến số nguyên lớn nhất; n- số phần tử và thành phần của vi mạch.

Mạch tích hợp lớn (BIVỚI)- mạch tích hợp chứa 500 phần tử trở lên được làm bằng công nghệ lưỡng cực hoặc 1000 phần tử trở lên được làm bằng công nghệ MOS, cực lớn tích phânkế hoạch (SBIVỚI)chứa đựng qua các phần tử.

BộBIS- một tập hợp các loại LSI thực hiện các chức năng khác nhau tương thích về kiến ​​trúc, thiết kế, các thông số điện và cung cấp khả năng sử dụng chung chúng trong sản xuất công nghệ vi xử lý.

Bộ vi xử lý (IPC)- một bộ vi xử lý và các vi mạch khác, tương thích về kiến ​​trúc, thiết kế và các thông số điện và cung cấp khả năng sử dụng chung của chúng.

Bộ vi xử lý được mô tả bằng nhiều thông số vốn có trong cả thiết bị điện tử (tốc độ, mức tiêu thụ điện năng, kích thước, trọng lượng, số mức công suất, độ tin cậy, chi phí, loại vỏ, phạm vi nhiệt độ, v.v.) và các phương tiện tính toán (độ sâu bit, lệnh hoặc chu kỳ thực thi lệnh vi mô, số lượng thanh ghi bên trong, sự hiện diện của mức vi chương trình, loại bộ nhớ ngăn xếp, thành phần của phần mềm, v.v.).


Thiết bị vi xử lý ( MPU) - về mặt chức năng và xây dựngthành phẩm, là một sơ đồ và có tính xây dựngkết nối của một số vi mạch, bao gồm một hoặc nhiều bộ vi xử lýđược thiết kế để thực hiện một hoặcnhiều chức năng: nhận, sự đối xử,truyền tải, chuyển đổi thông tin và kiểm soát.

MPU có các đặc điểm kết nối thống nhất (giao diện, thiết kế, v.v.) và các chức năng như một phần của hệ thống kỹ thuật cụ thể.

Hệ thống vi xử lý ( MPS) - đây là một số lượng lớnthiết bị chức năng, một trong nhữngcó bộ vi xử lý.

Bộ vi xử lý là cốt lõi của hệ thống này và thực hiện các chức năng của một khối điều khiển trung tâm và một thiết bị để chuyển đổi dữ liệu logic số học. Tất cả các thiết bị MPS đều có giao diện tiêu chuẩn và được kết nối với một đường cao tốc thông tin duy nhất.

Công nghệ vi xử lý - đây là những bộ vi xử lý và thiết bị tính toánthiết bị (VT) và tự động hóa, được thực hiện trên cơ sở của chúng.

Đây là những khái niệm khái quát nhất về tin học. Ngày nay, hầu hết tất cả BT đều được xây dựng trên cơ sở các thiết bị vi xử lý.

Máy vi tính đa năng - đây là máy vi tính có kích thước lớncác nguồn lực hoạt động được điều chỉnh để xử lý nhiều loạidữ liệu dạng số và dạng văn bản và được thiết kế để sử dụng trong máy tínhcác trung tâm.

Đây là loại máy vi tính phổ biến nhất, là cơ sở cho máy tính cá nhân.

Máy tính chuyên dụng - đây là Máy tính được thiết kế để thực hiện một sốthuật toán cụ thể:Biến đổi Fourier, tính toán tương quanchức năng vàNS.

Chúng là những máy tính cấu hình hẹp với một số lượng lệnh hệ thống hạn chế.

Được xây dựng trong máy vi tính (thiết bị vi xử lý) - đơn vị xử lýdữ liệu vàkiểm soát được thiết kế để sử dụng trong gia đìnhthiết bị, hệ thống kiểm soát quá trình hoặcđiều khiển, thiết bị ngoại vi máy tính, thiết bị văn phòng, v.v.

Những máy tính này được sử dụng rộng rãi nhất trong các thiết bị gia dụng (ti vi, máy ghi âm vô tuyến, máy giặt, v.v.)

Máy tính cá nhân (máy tính cá nhân) - hệ thống đối thoạicho mục đích sử dụng cá nhân, được bán trêndựa trên bộ vi xử lýcó nghĩa là, bộ nhớ ngoài kích thước nhỏthiết bị và trình ghi dữ liệu,cung cấp quyền truy cập vào tất cả các tài nguyên máy tính bằng cách sử dụng hệ thống lập trình nâng cao bằng các ngôn ngữ cấp cao.

Đây là loại máy vi tính phổ thông có kích thước nhỏ và chi phí thấp được thiết kế cho mục đích sử dụng cá nhân. Máy tính cá nhân gia đình phục vụ như một trung tâm thông tin gia đình. Cá nhân chuyên nghiệpmáy vi tínhđược thiết kế để tự động hóa các hoạt động xử lý lượng lớn thông tin khác nhau tại nơi làm việc của một chuyên gia.

Vi điều khiển- một thiết bị được điều khiển được thực hiện trên một hoặc một số tinh thể, các chức năng của chúng là phân tích và điều khiển logic.

Phân loại bộ vi xử lý và các thông số chính của chúng

Theo số lượng LSI, MP phần đơn chip, đa chip và đa chip được phân biệt.

MP đơn chip triển khai tất cả phần cứng bộ xử lý dưới dạng một LSI hoặc VLSI duy nhất. MP đơn chip có độ rộng bit cố định, một tập hợp các lệnh và được cấu tạo dưới dạng một mạch tích hợp duy nhất (IC). Tất cả các hoạt động được thực hiện bởi anh ta được xác định bởi một tập hợp các lệnh MP. Một tính năng của MP một chip là sự hiện diện của một đường trục bên trong để truyền dữ liệu thông tin nội bộ và các tín hiệu điều khiển. Khả năng của các MP này bị giới hạn bởi tài nguyên phần cứng của tinh thể và gói, nhưng với sự gia tăng mức độ tích hợp của tinh thể và số lượng chân trong gói, các thông số của MP liên tục được cải thiện.

V nhiềuMP tinh thể cấu trúc logic được chia thành các phần hoàn chỉnh về mặt chức năng, được thực hiện dưới dạng LSI và VLSI riêng biệt hoặc các tinh thể riêng biệt trong một VLSI.

MP được phân vùng đa tuyến bao gồm một tập hợp các phần vi xử lý.

Phần vi xử lý- đây là bộ vi xử lý tích hợpmột mạch thực hiện một phần của MT và có phương tiện của một chức năng đơn giảnhỗn hợpcùng loại hoặc các phần vi xử lý khác để xây dựng MP, MPU hoặc máy vi tính hoàn chỉnh.

MP được phân vùng được điều khiển bởi phần sụn. Các LSI của loạt: K1800, KR1802, KM1804, v.v. thuộc MPC phân đoạn. Mục đích chính của chúng là tạo MP và MPC đa bit hiệu suất cao, trên cơ sở đó các hệ thống máy tính điều khiển khác nhau được triển khai.

Cơ sở của IPC BIS là một bộ IC cơ bản của một loạt. Nó có thể bao gồm một MP đơn chip với độ rộng bit cố định và một tập hợp các lệnh hoặc một tập hợp các LSI MP đơn chip. Để mở rộng chức năng của MP, MPK LSI cơ bản được bổ sung với các loại LSI khác: RAM, ROM, EPROM, mạch tích hợp giao diện, bộ điều khiển của thiết bị bên ngoài, v.v.

Theo loại tín hiệu được xử lý, chúng được phân biệt kỹ thuật sốMP tương tự. Trong cả hai loại MT, xử lý thông tin là kỹ thuật số. Trong các MP kỹ thuật số, các tín hiệu kỹ thuật số thuần túy được xử lý và trong các tín hiệu tương tự để xử lý tín hiệu tương tự, một thiết bị tương tự-kỹ thuật số (ADC) và một bộ chuyển đổi tín hiệu số sang tương tự (DAC) được tích hợp sẵn. Trong đó, các tín hiệu tương tự đầu vào được truyền tới MP thông qua bộ ADC, được xử lý ở dạng kỹ thuật số, chuyển thành dạng tương tự trong DAC và gửi đến đầu ra.

Lựa chọn bộ vi xử lý

để thiết kế các thiết bị máy tínhvà hệ thống

Việc lựa chọn IPC cho một thiết bị hoặc hệ thống máy tính cụ thể là nhiệm vụ khó khăn nhất. Điều này là do sự gia tăng không ngừng về số lượng IPC và LSI trong chúng.

Khi lựa chọn một IPC, thiết bị phải đáp ứng các yêu cầu nhất định: hoạt động trong thời gian thực; tăng độ tin cậy; khả năng chống ồn; dễ bảo trì; sự hiện diện của một nhóm nhiệm vụ cố định được giải quyết lặp đi lặp lại trong suốt vòng đời của thiết bị.

Việc lựa chọn IPC được thực hiện theo ba tiêu chí chính:

1) ở khía cạnh phát triển phần mềm, cần phải phân tích độ sâu bit, số lượng thanh ghi có mục đích chung có sẵn để sử dụng, tập hợp các hướng dẫn và phương pháp xử lý, sự hiện diện và tổ chức của ngăn xếp;

2) liên quan đến thiết kế hệ thống, cần phải xác định: loại kiến ​​trúc của MP (phân đoạn hoặc chip đơn), loại tổ chức điều khiển (vi chương trình hoặc với logic cứng), sự hiện diện của các LSI tương thích logic từ các bộ, tốc độ của MP, khả năng ngắt và truy cập trực tiếp vào bộ nhớ, sự hiện diện của một hệ thống tự động.

3) từ quan điểm phát triển phần cứng của MPS, cần phải tính đến: khả năng tương thích điện của LSI, số lượng nguồn cung cấp và công suất tiêu tán, kích thước và loại vỏ, số lượng của các thiết bị đầu cuối, phạm vi nhiệt độ hoạt động, v.v.

Việc lựa chọn IPC cho một ứng dụng cụ thể thường được thực hiện trên cơ sở dữ liệu về công nghệ mà nó được tạo ra.

Câu hỏi và nhiệm vụ

1. Yếu tố nào quyết định việc sử dụng MP và microcomputer trong hệ thống sản xuất?

2. Sự khác biệt giữa các MP đơn chip từ multihip (không phân vùng và có phân vùng)?

3. Các thông số chung nào đặc trưng cho MP, MPU và MPU?

4. Đặc điểm của MP là gì?

5. Các thông số chính của MP hiện đại là gì.

6. Tiêu chí lựa chọn bộ vi xử lý khi thiết kế các thiết bị và hệ thống tin học?

1.2. Các vấn đề chungtổ chức vàhoạt độngthiết bị vi xử lývà hệ thống

Cấu trúc của các thiết bị vi xử lývà hệ thống

Bất kỳ MPS nào cũng bao gồm một MP, một hệ thống bộ nhớ, một hệ thống nhập - xuất thông tin và một hệ thống để giao tiếp với một đối tượng điều khiển hoặc giám sát.

Bộ vi xử lý vàđóng vai trò của một đơn vị điều khiển trung tâm và một thiết bị để chuyển đổi dữ liệu số học và logic.

Kỉ niệmđược thực hiện về mặt vật lý như một hệ thống bao gồm nhiều cấp độ.

Thiết bị lưu trữ liên tục (ROM) nhằm mục đích lưu trữ lâu dài dữ liệu được ghi trước và chỉ được sử dụng ở chế độ đọc. Chúng không bay hơi.

Bộ nhớ truy cập tạm thời (OZP) hoạt động ở chế độ ghi và đọc trực tuyến với tốc độ gần bằng tốc độ của bộ xử lý. Chúng dễ bay hơi.

Thiết bị lưu trữ bên ngoài (VKỉ niệm) thực hiện các chức năng lưu trữ lượng lớn thông tin, chứa ổ đĩa trên đĩa mềm và đĩa từ cứng, đĩa CD (laze), v.v.

Thiết bịnhập dữ liệu (HC) nhằm chuyển dữ liệu từ bên ngoài vào thanh ghi MP hoặc vào bộ nhớ. Trong số đó có bàn phím, nhiều bảng điều khiển khác nhau, đĩa từ tính và laze, v.v.

Thiết bị xuất dữ liệu (UVv) nhằm mục đích nhận biết dữ liệu được truyền từ thanh ghi MP hoặc ô nhớ. Đó là màn hình, thiết bị in, VCU, bảng điều khiển, máy vẽ (máy vẽ), v.v.

Để giao diện một đối tượng được điều khiển hoặc giám sát với MPU hoặc MPS, thiết bị phải bao gồm các cảm biến và cơ cấu kích hoạt. Để kết nối chúng với MPU, Bộ Đường sắt có sử dụng khốighép nối, thực hiện các chức năng của thương lượng giao diện. Đôi khi những đơn vị này được gọi là thiết bị giao tiếp đối tượng (OCD).

Giao diện thiết bị vi xử lývà hệ thống

Khả năng kiến ​​trúc của IPM phần lớn phụ thuộc vào loại giao diện.

Giao diện hợp nhất là một tập hợp các quy tắc thiết lậpcác nguyên tắc thống nhất về tương tác của các thiết bị MPS.

Giao diện bao gồm phần cứng để kết nối các thiết bị (đầu nối, kết nối), đặc điểm kỹ thuật danh pháp và đặc điểm của kết nối, phần mềm, mô tả bản chất của tín hiệu giao diện và sơ đồ thời gian của chúng, cũng như mô tả các thông số điện vật lý của tín hiệu.

Nhiệm vụ chính của giao diện là, trên cơ sở thống nhất, đảm bảo tính tương thích của phần cứng, phần mềm và các công cụ thiết kế xác định trước chất lượng cụ thể của tương tác tự động giữa các phần tử chức năng khác nhau trong một quy trình xử lý thông tin duy nhất trong MPS ở các giai đoạn của thu thập, chuyển đổi, lưu trữ và đưa ra kết quả và các hành động kiểm soát.

Kiến trúc của MPS chủ yếu được xác định bởi ba mức giao diện: hệ thống, máy với máy và giao diện nhỏ (giao diện ngoại vi).

Giao diện hệ thốngđảm bảo tích hợp các mô-đun chính (khối) của MPS thành một hệ thống duy nhất để trao đổi thông tin bình đẳng với bộ xử lý và OZP.

Các giao diện hệ thống được chia thành gộp (giao diện PC), gộp cục bộ (Q-bus) và cục bộ (Unibus).

Giao diện máy với máy cung cấp việc xây dựng các hệ thống đa xử lý và các hệ thống và mạng cục bộ và phân tán.

Giao diện nhỏ tính đến sự khác biệt về nguyên lý hoạt động vật lý của các nhóm thiết bị ngoại vi và ROM. Bộ điều khiển giao diện nhỏ cung cấp quyền truy cập vào giao diện hệ thống. Trong trường hợp này, bộ điều khiển của các thiết bị ngoại vi và ROM đi đến giao diện nhỏ tương ứng.

Điều khiển vi xử lýthiết bị (hệ thống)

Điều phối thời gian của các tín hiệu thông tin trong MPU được thực hiện bằng cách sử dụng các tín hiệu đặc biệt đến từ thiết bị điều khiển MP. MPU hoặc MPS hoạt động đồng bộ với sự xuất hiện của tín hiệu đồng hồ. Hành động đơn giản nhất được thực hiện trong LCP (LPS) được gọi là tình trạng. Nó bao gồm một chu kỳ của tín hiệu đồng hồ - cái đồng hồkhoảng thời gian hoặc số đo.

Số khoảng thời gian đồng hồ được chỉ định là cỗ máyxe đạp. Cần một chu kỳ máy cho một bộ nhớ hoặc truy cập I / O. Trong một chu kỳ, lệnh hoặc dữ liệu được tìm nạp, cũng như mã địa chỉ (có thể là lệnh hoặc byte dữ liệu và byte mã địa chỉ).

Chu trình máy- một phần của nhóm (đôi khi là toàn bộ nhóm). Khi bắt đầu mỗi chu kỳ máy, tín hiệu đồng bộ hóa xuất hiện tại chân đồng bộ hóa của MP. Nó được chuyển đến thiết bị nhớ (memory) và (hoặc) tới thiết bị đầu vào / đầu ra (IO) và "thông báo" về sự bắt đầu của một chu kỳ máy mới, do đó sự phối hợp thời gian của các thiết bị này với hoạt động của MP đạt được.

Sơ đồ 1. Cấu trúc nhóm

Vòng lặp lệnh- khoảng thời gian cần thiết để tìm nạp một lệnh từ bộ nhớ và thực thi lệnh đó. Nó bao gồm một hoặc nhiều chu kỳ máy. số lượng của chúng, theo quy luật, bằng số lượng truy cập của MT vào bộ nhớ hoặc vào một trong các thiết bị I / O. Cấu trúc lệnh được thể hiện trong sơ đồ 1.

Thiết bị điều khiển thực hiện các chức năng điều khiển và đồng bộ, tức là nó điều khiển sự thay đổi các trạng thái của MP theo trình tự yêu cầu, phối hợp chúng với các tín hiệu của bộ tạo xung nhịp. Nó bao gồm một máy trạng thái điều khiển được thiết kế để điều khiển các quá trình bên trong MP và một mạch nhận tín hiệu từ bên ngoài, tạo ra các tín hiệu điều khiển hệ thống.

Mã lệnh được giải mã, chuyển thành tín hiệu nhị phân ảnh hưởng đến các mô-đun và khối MP tham gia thực hiện lệnh này.

Chu kỳ lệnh được chia thành hai giai đoạn: giai đoạn lấy mẫu và giai đoạn thực hiện.

Giai đoạn lấy mẫu- máy đặt thời điểm bắt đầu của chu kỳ tiếp theo, theo đó số trong bộ đếm lệnh được chuyển đến thanh ghi địa chỉ bộ đệm. Từ đó, thông qua bus địa chỉ, mã địa chỉ lệnh được gửi đến bộ nhớ, nơi nó được giải mã. Sau khi tín hiệu "đọc" từ ô nhớ, từ lệnh được đọc và chuyển qua bus dữ liệu đến thanh ghi dữ liệu đệm, từ đó nó được chuyển đến thanh ghi lệnh, và sau đó được giải mã.

Giai đoạn thực hiện- thiết bị điều khiển tạo ra chuỗi tín hiệu cần thiết để thực hiện lệnh. Trong thời gian này, dữ liệu bộ đếm được tăng lên một. Điều này tạo thành địa chỉ của lệnh tiếp theo sẽ được thực thi.

Việc đọc hoặc viết một từ xảy ra trong một khoảng thời gian nhất định, được gọi là thời gian truy cập. Khoảng thời gian cần thiết để truy cập và nhận tín hiệu sẵn sàng từ bộ nhớ được gọi là chu kỳ chờ sẵn sàng. Nó tạo thành một phần của chu trình máy.

Việc trao đổi thông tin giữa các thiết bị MP, bộ nhớ và thiết bị thổi khí được thực hiện chủ yếu ở 3 chế độ: trao đổi được điều khiển theo chương trình, trao đổi ở chế độ ngắt, trao đổi ở chế độ truy cập trực tiếp.

Trao đổi phần mềm kiểm soát. Trong chế độ này, MP xác định xem thiết bị nhớ hoặc thiết bị ngoại vi (CP) đã sẵn sàng để thực hiện thao tác I / O hay chưa khi bắt đầu truyền dữ liệu phần mềm. Các thiết bị thổi khí phải có phần cứng để phát tín hiệu về trạng thái bên trong. MP đọc thông tin này và dựa trên phân tích kết quả, kết luận rằng thiết bị đã sẵn sàng để trao đổi thông tin. Sau đó, việc trao đổi dữ liệu diễn ra phù hợp với giao thức giao diện.

Chế độ ngắt. Nó được sử dụng khi cần truyền dữ liệu ngay lập tức giữa máy thổi khí và MP (phản ứng với sự cố bất ngờ của điều kiện bên ngoài). Trong trường hợp này, MP phải làm gián đoạn công việc của chương trình chính và bắt đầu thực hiện chương trình để bảo dưỡng thiết bị bên ngoài. Chế độ này được gọi là ngắt. Việc ngắt MP chỉ có thể thực hiện được khi MP được phép đáp ứng các yêu cầu ngắt.

Sau khi nhận được tín hiệu ngắt, MP hoàn thành hoạt động hiện tại, chuyển tất cả thông tin của dữ liệu bên trong và các thanh ghi điều khiển để lưu trữ vào bộ nhớ và chuyển đến chương trình con phục vụ ngắt. Sau khi kết thúc quá trình trao đổi thông tin ngắt, trạng thái MP được khôi phục, tồn tại ở thời điểm bắt đầu ngắt.

Có ba loại ngắt: đơn giản, vector và ưu tiên.

Ngắt đơn giản thông báo rằng một số thiết bị I / O yêu cầu bảo trì MP.

Véc tơ gián đoạn làm cho nó có thể nhận ra loại (mức độ) ngắt do thiết bị ngoại vi yêu cầu. Vectơ chỉ định một địa chỉ thiết bị cụ thể.

Ưu tiên ngắt bao gồm thực tế là, ngoài việc nhận ra một ngắt, mức độ ưu tiên trong việc bảo dưỡng các thiết bị ngắt được xác định.

Chế độ trực tiếptruy cập bộ nhớ.Đôi khi, việc trao đổi thông tin trong MP trở nên cần thiết. Điều này có liên quan đến việc giảm thời gian cần thiết để trao đổi các mảng dữ liệu. Trong trường hợp này, phần cứng của MPP cho dù MPU có bao gồm bộ điều khiển truy cập trực tiếp vào bộ nhớ, quản lý việc truyền dữ liệu, giải phóng MP khỏi các chức năng này hay không.

Các thiết bị truy cập bộ nhớ trực tiếp được kết nối song song với bộ xử lý. Việc tách các kênh này được thực hiện bằng cách sử dụng logic tristable để điều khiển trạng thái của các bus MPS. Trong quá trình truy cập bộ nhớ trực tiếp, MP chuyển các mạch gốc của nó sang trạng thái trở kháng cao và bị cô lập khỏi hệ thống, điều này tương tự như việc ngắt kênh thông tin. Trạng thái của các thanh ghi bên trong vẫn giống như tại thời điểm yêu cầu kênh truy cập trực tiếp.

Có một số cách để thực hiện truy cập bộ nhớ trực tiếp. Tất cả chúng đều cung cấp tỷ lệ trao đổi dữ liệu cao nhất so với chế độ trao đổi được kiểm soát bằng phần mềm. Thông thường, chế độ truy cập bộ nhớ trực tiếp được thực hiện với việc dừng MP và tăng (kéo dài thời gian) chu kỳ MP.

Phương pháp dừng dựa trên thực tế là ở trạng thái này, MP bị ngắt kết nối khỏi các bus hệ thống trong suốt thời gian truyền dữ liệu. Trước khi bước vào trạng thái dừng, MP hoàn thành việc thực hiện lệnh hiện tại và bị trì hoãn ở trạng thái này trong vài chu kỳ đồng hồ, cho đến khi lốp xe tự do. Theo sơ đồ truy cập bộ nhớ trực tiếp này, MP, bị ngắt kết nối khỏi các bus, không phản ứng với các ngắt, điều này trong một số trường hợp có thể không được chấp nhận đối với MPS.

Phương pháp chụp bao gồm trao đổi dữ liệu tuần tự. Các thiết bị thổi khí nhanh chỉ trao đổi một từ; yêu cầu dịch vụ của họ được thỏa mãn bằng cách trì hoãn việc thực hiện lệnh hiện tại theo một chu kỳ máy khi MT ở trạng thái chuyển từ chu kỳ máy này sang chu kỳ máy khác. Trong chế độ DMA này, MP chỉ bị treo trong một chu kỳ máy để truyền từng từ dữ liệu, sau đó quyền điều khiển được trả lại cho MP.

Không gian địa chỉ. Cơ chế và phương pháp giải quyết

Không gian địa chỉ MPU (MPS) - nhiều địa chỉ hoạt độngtrí nhớ vàROM có sẵn cho các chương trình do MP thực thi.

Kích thước của không gian địa chỉ của RAM MP là một trong những đại lượng ảnh hưởng đáng kể đến hiệu suất của MS nói chung.

Kích thước vùng địa chỉ - giá trị,được xác định bởi mức tối đakích thước của địa chỉ và được biểu thị bằng đơn vị tối thiểusố lượng phần tử bộ nhớ được đánh địa chỉ - tính bằng byte hoặc số lượng lớncác đơn vị (KB, MB, GB).

Nếu địa chỉ trong MPU được hình thành dưới dạng một từ 16 bit, thì không gian địa chỉ là 64 KB, 20 bit - 1 MB, v.v. MP và air-blast. Tuy nhiên, không có lệnh I / O nào như vậy. Địa chỉ tới các thanh ghi MP và UVV được thực hiện giống hệt nhau đối với các ô nhớ.

Khi hình thành một từ, địa chỉ 2 byte, byte có địa chỉ chẵn (thấp hơn) được gọi là từ thấp hơn và byte có địa chỉ lẻ được gọi là byte cao hơn.

Thường thì không gian địa chỉ của MPU được biểu diễn dưới dạng một biểu đồ, trên đó chỉ ra tổng dải địa chỉ. Phạm vi này có thể được chia thành các tiểu khu tương ứng với kích thước tiêu chuẩn của mô-đun cấu trúc, chip, các loại bộ nhớ khác nhau (RAM, ROM, v.v.) hoặc mục đích cụ thể của chúng.

Các lệnh địa chỉ chiếm một vị trí quan trọng trong hệ thống lệnh MP.

Lệnh địa chỉ - đội trong đómột hoặc cả hai toán hạng của nó làtrong RAM.

Một trong những lý do giải thích cho việc tổ chức lệnh như vậy là không thể viết trực tiếp địa chỉ vật lý đầy đủ trong một toán hạng của lệnh do giới hạn về độ dài của lệnh. Do đó, chỉ một giá trị nhất định được đặt trong toán hạng, với sự trợ giúp của địa chỉ thực của lệnh được tính toán.

Nói chung, cơ chế định địa chỉ phần lớn được xác định bởi khả năng của LCP (MPS) để xử lý thông tin một cách hiệu quả với số lượng lệnh gọi tối thiểu tới RAM. Trong LCP (MPS), các lệnh gồm hai từ trở lên thường được sử dụng.

Để giới hạn độ dài của từ địa chỉ, các phương pháp định địa chỉ khác nhau được sử dụng, giúp bạn có thể:

1) xác định địa chỉ đầy đủ của ô nhớ có ít bit hơn độ dài lệnh được rút ngắn;

2) tham chiếu đến các ô nhớ, địa chỉ của chúng được tính toán trong quá trình xử lý, cung cấp quyền truy cập vào các thiết bị mở rộng bộ nhớ;

3) tính toán các địa chỉ dữ liệu liên quan đến vị trí (địa chỉ hiện tại) của lệnh để chương trình có thể được tải vào bất kỳ vị trí bộ nhớ nào mà không làm thay đổi địa chỉ trong chương trình.

Tất cả các chế độ địa chỉ có thể được chia thành hai nhóm:

1) các chế độ trong đó địa chỉ chấp hành được xác định bởi một giá trị mã trong lệnh;

2) các lệnh sử dụng nội dung của phần địa chỉ của lệnh và một hoặc nhiều thanh ghi để tạo thành địa chỉ chấp hành.

Nhóm đầu tiên bao gồm thanh ghi trực tiếp, thanh ghi trực tiếp, thanh ghi gián tiếp, gián tiếp, địa chỉ trực tiếp, tự động tăng dần và tự động giảm dần và nhóm thứ hai - cơ sở, tương đối, ngăn xếp, địa chỉ ảo.

Địa chỉ trực tiếp. Toán hạng được tìm nạp từ bộ nhớ (thanh ghi) tại địa chỉ được ghi trong lệnh. Tuy nhiên, việc xác định một địa chỉ trực tiếp yêu cầu nhiều bit để mô tả một địa chỉ lớn trong lệnh. Để giảm bớt nó, một số máy tính vi mô sử dụng địa chỉ trực tiếp ngắn, cung cấp quyền truy cập vào một phần giới hạn của không gian địa chỉ. Nếu các địa chỉ trong lệnh không phải là tượng trưng (được chỉ định bởi các liên kết) mà là tuyệt đối, thì địa chỉ trực tiếp như vậy được gọi là tuyệt đối.

Đăng ký trực tiếp địa chỉ. V mã lệnh lưu trữ tên của thanh ghi chứa toán hạng. Việc định địa chỉ trực tiếp không đủ linh hoạt, vì nó không thể thực hiện thủ tục sửa đổi địa chỉ cần thiết để đảm bảo sự di chuyển của các chương trình trong bộ nhớ và sự thuận tiện khi làm việc với các mảng.

Định địa chỉ gián tiếp. Toán hạng từ bộ nhớ được chọn gián tiếp - thông qua một vị trí bộ nhớ. Mã lệnh chứa một con trỏ đến một địa chỉ nằm trong bộ nhớ. Khi thực hiện các lệnh với địa chỉ như vậy, việc truy cập bộ nhớ được thực hiện hai lần: đầu tiên, địa chỉ được chọn, sau đó là toán hạng. Vì vậy, mà không cần thay đổi mã lệnh, bạn có thể thay đổi địa chỉ được lưu trữ trong vùng bộ nhớ được trỏ đến bởi trường mã lệnh.

Định địa chỉ thanh ghi gián tiếp. Về tốc độ, nó tiếp cận địa chỉ trực tiếp, vì địa chỉ gián tiếp được chọn từ thanh ghi bên trong của bộ xử lý và không yêu cầu chu kỳ bộ nhớ bổ sung. Theo sơ đồ địa chỉ này, một thanh ghi hoặc cặp thanh ghi chứa địa chỉ thực thi của toán hạng. Việc tải thanh ghi được thực hiện bằng cách sử dụng các lệnh với địa chỉ trực tiếp. Việc sử dụng chế độ định địa chỉ thanh ghi gián tiếp cho phép tính toán địa chỉ bộ nhớ trong khi thực hiện chương trình, điều này đôi khi cần thiết trong các thủ tục truyền dữ liệu, khi xem các phần tử mảng, v.v.

Địa chỉ trực tiếp. Toán hạng nằm trong mã lệnh. Các lệnh trong trường hợp này có thể bao gồm hai hoặc ba từ.

Định địa chỉ tự động tăng và giảm tự động.Địa chỉ điều hành được tính theo cách tương tự như đối với địa chỉ thanh ghi gián tiếp, và sau đó nội dung của thanh ghi được tăng lên. Trong một máy tính vi mô có định địa chỉ byte, nội dung của thanh ghi phải được tăng lên 1 để chỉ ra byte tiếp theo và thêm 2 để chỉ ra địa chỉ của từ tiếp theo, trong khi kích thước của toán hạng được xác định bởi mã hoạt động. Trong chế độ tự giải mã, địa chỉ toán hạng được hình thành bằng cách lấy thanh ghi địa chỉ trừ đi 1 hoặc 2. Sự khác biệt so với địa chỉ tự động tăng dần là phép trừ được thực hiện trước khi sử dụng nội dung của thanh ghi làm địa chỉ thực thi. Sự kết hợp của các chế độ tự động tăng và tự động giảm đảm bảo sử dụng hiệu quả bất kỳ thanh ghi nào làm con trỏ ngăn xếp. Việc định địa chỉ như vậy cũng được sử dụng khi tổ chức các vòng lặp và trong các hoạt động với các biến chuỗi.

Định địa chỉ cơ bản. Không thể di chuyển các chương trình chứa các lệnh với địa chỉ tuyệt đối trong bộ nhớ mà không sửa đổi địa chỉ. Có thể đảm bảo chuyển động của các chương trình trong bộ nhớ bằng cách sử dụng địa chỉ cơ sở, với sự trợ giúp của địa chỉ của toán hạng được tính toán bằng cách thêm nội dung của thanh ghi cơ sở - phần bù dương hoặc âm và địa chỉ nằm trong mã lệnh.

Cách xưng hô tương đối.Địa chỉ điều hành được hình thành bằng cách thêm địa chỉ cơ sở vào trường địa chỉ lệnh. Nội dung của bộ đếm chương trình được sử dụng làm địa chỉ cơ sở. Việc sử dụng địa chỉ tương đối làm cho nó có thể xây dựng các chương trình di chuyển độc lập trong bộ nhớ do thực tế là chúng luôn chứa một phần bù so với nội dung của bộ đếm chương trình. Offsets được hiểu là một số nguyên có dấu, được biểu diễn trong phần bù của hai phần, chuyển đổi theo bất kỳ hướng nào.

Định địa chỉ ngăn xếp.Định địa chỉ thanh ghi gián tiếp với autoincrement hoặc autodecrement (autoincremental hoặc autodecremental), trong đó thanh ghi với con trỏ địa chỉ toán hạng được chỉ định ngầm (có những hướng dẫn trong đó vị trí của toán hạng và kết quả là cố định - định địa chỉ ngầm định). Vị trí bộ nhớ được trỏ đến bởi nội dung của thanh ghi được chỉ định ngầm (con trỏ ngăn xếp) được gọi là đỉnh cao cây rơm. Với sự trợ giúp của địa chỉ ngăn xếp, một quyền truy cập đặc biệt vào một phần bộ nhớ được gọi là cây rơm, dựa trên nguyên tắc "đến trước - xuất trước". Để truy cập ngăn xếp, các lệnh được sử dụng để ghi thông tin vào ngăn xếp và bật nó ra khỏi ngăn xếp. Nếu các lệnh ghi thông tin vào ngăn xếp làm giảm nội dung của con trỏ ngăn xếp và các lệnh bật ra từ khoảng tăng ngăn xếp, thì chúng nói rằng ngăn xếp hoạt động để giảm, ngược lại - để tăng.

Địa chỉ ảo. Mỗi người sử dụng bộ nhớ (hệ điều hành hoặc người), giải quyết một vấn đề được áp dụng, thao tác với các địa chỉ ảo, điều này tạo ra ảo giác bộ nhớ có dung lượng không giới hạn, mặc dù RAM thực của hệ thống có dung lượng hạn chế. Ảo giác được tạo ra do cơ chế định địa chỉ ảo, cơ sở của nó là sự phân phối lại động của các trang bộ nhớ giữa bộ nhớ chính của hệ thống (OZP) và bộ nhớ ngoài.

Hệ điều hành tạo ra một bảng tương ứng giữa các trang ảo và vật lý cho mỗi người dùng. Nếu một trang vật lý được truy cập, trang này không nằm trong bộ nhớ chính, thì trang đó sẽ được xóa khỏi bộ nhớ ngoài và được tải vào trang chính, còn trang không cần thiết sẽ được "ẩn" trong bộ nhớ ngoài. Bộ nhớ ảo, hay đơn giản là bộ nhớ hệ thống, có thể được chia thành các phân đoạn trong đó thông tin được lưu trữ theo các đặc tính chức năng. Ví dụ, trong một phân đoạn - các lệnh, trong phần thứ hai - dữ liệu, trong phần thứ ba - một phần của ngăn xếp. Hoặc, trong một phân đoạn, trong đó việc viết bị cấm là nhân hệ điều hành, và trong phân đoạn thứ hai, trong đó cho phép ghi và đọc, là các chương trình người dùng. Do đó, bằng cách sử dụng cơ chế phân đoạn, các vấn đề về bảo vệ bộ nhớ được giải quyết.

Phân đoạn được thực hiện trong MP K1810VM86 và địa chỉ ảo - trong MP ІАРХ286 (Intel) và 68010 (Motorola).

Hệ thống chỉ huy. Trong trường hợp chung, một lệnh được hiểu là một bước duy nhất trong hoạt động của một thiết bị điều hành dưới dạng một lệnh bằng ngôn ngữ máy. Lệnh xác định thao tác sẽ được thực hiện và các thuộc tính của nó: loại thao tác được thực hiện trong chu trình làm việc này; địa chỉ của một hoặc hai toán hạng liên quan đến hoạt động; vị trí của kết quả của hoạt động; địa chỉ của vị trí của lệnh tiếp theo. Do độ sâu bit nhỏ của MP, rất khó và đôi khi không thể chỉ ra thông tin như vậy trong một từ máy. Do đó, một lệnh có thể bao gồm một số từ máy.

Nói chung, các loại lệnh sau được phân biệt:

1) chuyển giao - một chiều (thanh ghi-thanh ghi, thanh ghi bộ nhớ, thanh ghi-bộ nhớ, bộ nhớ-bộ nhớ), trao đổi (thanh ghi-thanh ghi, thanh ghi bộ nhớ, bộ nhớ-bộ nhớ), các lệnh đầu vào / đầu ra;

2) số học;

3) lôgic;

4) xử lý bit;

5) những thay đổi trình tự tính toán - chuyển đổi (không điều kiện, có điều kiện), lệnh gọi chương trình con, trả về từ chương trình con, ngắt phần mềm.

Câu hỏi tự kiểm tra

1. Mô tả cấu trúc tổng quát của MP và MPS.

2. Các giao diện của MPU và MPU được phân loại dựa trên cơ sở nào?

3. MT thực hiện những chức năng nào khi xử lý một lệnh (lệnh) trong giai đoạn lấy mẫu, giai đoạn thực hiện?

4. Việc trao đổi thông tin giữa MP và thiết bị lưu trữ được thực hiện ở chế độ ngắt hoặc truy cập bộ nhớ trực tiếp trong những trường hợp nào?

5. Kích thước của vùng địa chỉ phụ thuộc vào những tham số nào của MP?

6. Sử dụng Phụ lục 1, đưa ra ví dụ về các lệnh địa chỉ với địa chỉ trực tiếp, gián tiếp, trực tiếp, cơ sở, tương đối, tự động tăng, ngăn xếp và địa chỉ ảo.

7. Mã lệnh mang thông tin gì trong hệ thống lệnh MP?

1.3. Quy trình chính thức hóathiết kếthiết bị vi xử lývà hệ thống

Các khía cạnh và cấp độ của thiết kế

Trong thiết kế của MPU và MPS, trong nhiều trường hợp, chúng sử dụng phương pháp tiếp cận phân cấp khối, trong đó hệ thống đang được thiết kế được chia thành các cấp phân cấp. Ở cấp độ cao nhất, bản trình bày không chi tiết nhất được sử dụng, nơi chỉ hiển thị các tính năng và đặc điểm chung của hệ thống đã thiết kế. Ở các cấp độ tiếp theo, độ chi tiết tăng lên. Trong trường hợp này, MPS được coi là một tập hợp các khối riêng biệt. Ở mỗi cấp độ, các vấn đề có độ phức tạp nhất định được xây dựng và giải quyết, được thực hiện bằng cách sử dụng các công cụ thiết kế có sẵn ở cấp độ này. Việc phân chia thành các khối phải sao cho tài liệu cho từng khối riêng lẻ có thể hiểu được đối với một nhà thiết kế.

Vì vậy, cách tiếp cận phân cấp khối giúp có thể phân phối các nhiệm vụ phức tạp của việc thiết kế MPS quy mô lớn thành các nhóm nhiệm vụ quy mô nhỏ và trong nhóm, các nhiệm vụ khác nhau có thể được giải quyết song song.

Theo ESKD, khi thiết kế các thiết bị và hệ thống, các sơ đồ cấu trúc, chức năng và sơ đồ được sử dụng.

Có thể có điều kiện phân biệt các mức ngang và dọc trong sơ đồ thiết kế mô phỏng (Bảng 1). Các cấp độ dọc được gọi là các khía cạnh. Có những khía cạnh như vậy trong thiết kế của MPU và MPS: chức năng, thuật toán, thiết kế và công nghệ.

Khía cạnh chức năng bao gồm ba cấp độ ngang (thứ 2, 3 và 4): hệ thống (cấu trúc), chức năng-logic và mạch-thành phần. Ở cấp độ hệ thống, họ thiết kế một sơ đồ cấu trúc của MPU hoặc MPS, ở mức chức năng-logic, các sơ đồ chức năng và sơ đồ của MPU hoặc tất cả các thiết bị là một phần của MPS.

Trên cấp độ bán lại mạch của cấp độ mạch-thành phần, các mạch điện sơ đồ của mạch tích hợp hoặc các đoạn LSI (VLSI) được thiết kế. Các phần tử trong trường hợp này là các thành phần của mạch điện tử: điện trở, tụ điện, điốt, bóng bán dẫn, v.v. Tại cấp độ bán lại linh kiện, các thành phần vi mạch riêng lẻ được phát triển, bao gồm các phần tử-phần của tinh thể bán dẫn.

Khía cạnh thuật toán Nó cũng chứa ba cấp độ ngang (1, 2 và 3): cấp độ phát triển của sơ đồ hoạt động của MPU hoặc MPS, cấp độ kiến ​​trúc và cấp độ vi chương trình. Ở cấp độ 1, họ phát triển các sơ đồ cho hoạt động của MPU hoặc MPS, xác định các nhiệm vụ sẽ được giải quyết bởi phần vi xử lý của MPS, lập kế hoạch hệ thống phần mềm và phát triển sơ đồ khối của các thuật toán. Trong tương lai, các mô-đun phần mềm được phát triển.

Nhiệm vụ chính của cấp độ thứ 2 (kiến trúc) là lựa chọn kiến ​​trúc của phần vi xử lý của MPS. Đôi khi nó được coi là một trong những nhiệm vụ của cấp độ hệ thống, tức là chúng kết hợp các cấp độ kiến ​​trúc và hệ thống thành một khía cạnh của thiết kế chức năng.

Bảng 1.Ngang và dọc ythiết kế bình đẳng

Mức ngang

Các khía cạnh (mức độ dọc)

Chức năng

Thuật toán

Thiết kế

Công nghệ

Xây dựng luật cho hoạt động của LPA (MPS); thiết kế các thuật toán; lập trình mô-đun

Hệ thống (cấu trúc)

Kiến trúc (máy)

Riser, pa-nel

Xây dựng sơ đồ quy trình công nghệ

Chức năng-lôgic

Phần mềm vi mô

TEZ, mô-đun

Xây dựng các tuyến quy trình công nghệ

Schematic-component-ny

Tinh thể vi mạch

Thiết kế các hoạt động công nghệ

Mức thứ 3 (vi chương trình) dành cho việc thiết kế các vi chương trình của các hoạt động và thủ tục được thực hiện trong bộ vi xử lý của MPU hoặc MPS bằng phần cứng.

Khía cạnh thiết kế chứa các mức thiết kế phân cấp theo chiều ngang của cửa sổ, bảng, TEZ_v, mô-đun và tinh thể (ch_p_v) IC (thứ 2, 3, 4 bằng nhau).

Khía cạnh công nghệ bao gồm ba cấp độ ngang - thứ 2, thứ 3 và thứ 4. Ở cấp độ thứ 2, người ta xây dựng sơ đồ quy trình công nghệ sản xuất MPU hoặc MPS, tức là xác định thành phần và trình tự các công đoạn chế tạo MPU (MPS). Ở cấp độ thứ 3, các lộ trình của quy trình công nghệ sản xuất MPU (MPS) được xây dựng, nghĩa là xác định thành phần và trình tự các thao tác để sản xuất sản phẩm, lựa chọn loại và nhóm thiết bị công nghệ. Ở cấp độ thứ 4, các hoạt động công nghệ để sản xuất các thành phần của MPU (MPU) được thiết kế.

Nhiệm vụ chính của các cấp thiết kế

Hệ thống và kiến ​​trúcthiết kế bình đẳng:

1) xác định các nguyên tắc tổ chức của LPA (IPU);

2) phát triển sơ đồ cấu trúc, nghĩa là xác định thành phần của thiết bị hoặc hệ thống và phương pháp tương tác của các thành phần trong quá trình vận hành thiết bị;

3) lựa chọn bộ vi xử lý (microprocessor) LSI (VLSI);

4) xác định các yêu cầu đối với các thông số của một thiết bị hoặc hệ thống và hình thành nhiệm vụ kỹ thuật (TOR) để phát triển các thiết bị MPS riêng lẻ.

Các điều khoản tham chiếu cho sự phát triển của các thiết bị riêng lẻ MPS bao gồm: liệt kê tất cả các chức năng được thực hiện bởi mỗi thiết bị; điều kiện hoạt động của thiết bị; yêu cầu đối với các thông số đầu vào và đầu ra của nó; dữ liệu về nội dung và hình thức thông tin trao đổi với các thiết bị thiết bị khác; cơ sở phần tử để tạo một thiết bị.

Logic chức năng và phần sụnthiết kế bình đẳng:

1) nêu chi tiết các chức năng của từng thiết bị;

2) triển khai theo thuật toán của các chức năng được thực hiện theo chương trình và trình bày các thuật toán bằng một trong các ngôn ngữ thuật toán được chấp nhận;

3) sự lựa chọn các nguyên tắc tổ chức LPA (MPS) và việc phát triển sơ đồ khái niệm của nó;

4) phát triển các vi chương trình, làm cơ sở cho mỗi lệnh hoặc tập hợp các vi lệnh và trình tự thực hiện chúng;

5) tổng hợp các sơ đồ chức năng và sơ đồ của các thiết bị kỹ thuật số là một phần của MPS;

6) tổng hợp các thử nghiệm kiểm soát và chẩn đoán đối với MPP hoặc MPE;

7) việc xây dựng các thông số kỹ thuật cho cấp độ thiết kế mạch.

Các tiêu chí thiết kế chính cho các MPP phức tạp vàMPS:

1) chất lượng thiết kế;

2) chi phí thiết kế;

3) điều khoản phát triển;

4) số lượng các chuyên gia phát triển được tuyển dụng.

Tùy theo khả năng chính thức hóa quá trình thiết kế và tính chất lặp đi lặp lại của nó, người ta ưu tiên lựa chọn thiết kế có sự hỗ trợ của máy tính của MPP hoặc MPS. Ngày nay, do sự phức tạp lớn của MPP và MPS, việc phát triển hoàn chỉnh phần vi xử lý nói chung là không thể nếu không sử dụng các phương pháp thiết kế có sự hỗ trợ của máy tính.

Câu hỏi. Nhiệm vụ

1. Giải thích bản chất của cách tiếp cận phân cấp khối đối với thiết kế của WFP và MPS.

2. Các khía cạnh thể hiện điều gì trong sơ đồ thiết kế MPP mô phỏng?

3. MPP được thiết kế dưới dạng TEZ ở cấp độ ngang nào và khía cạnh nào tương ứng với cấp độ này?

4. Các nhiệm vụ chính của thiết kế cấp hệ thống của MPP là gì.

5. Các đặc điểm của cấp độ kiến ​​trúc của thiết kế WFP là gì?

6. Bản chất của cấp độ chức năng và logic của thiết kế MPP và MPS là gì?

7. Các tác vụ chính được giải quyết ở cấp vi chương trình của MPP là gì?

1.4. Ngành kiến ​​trúcbộ vi xử lýthiết bị và hệ thống

Bản chất của kiến ​​trúc và nguyên tắc

phát triển các thiết bị và hệ thống vi xử lý

Bản chất của kiến ​​trúcLPA và Bộ Đường sắt.

Kiến trúc vi xử lý được phản ánh trong chức năng của các thành phần điện tử cấu thành của nó được sử dụng để đại diện chodữ liệu, hoạt động máy móc,mô tả các thuật toán và quy trình tính toán.

Kiến trúc hợp nhất phần cứng, phần sụn và phần mềm của công nghệ máy tính và làm cho nó có thể làm nổi bật rõ ràng những gì, khi tạo một MPS cụ thể, người dùng phải thực hiện trong phần mềm và phần cứng bổ sung.

Mặt khác, kiến ​​trúc của MP là tổ chức hợp lý của nó, do khả năng của MP đối với việc triển khai phần cứng hoặc phần mềm của các chức năng được gán cho MPU hoặc MPU được thiết kế. Nó hiển thị cấu trúc của MT, cách trình bày và định dạng dữ liệu, tập hợp các lệnh, định dạng của các từ điều khiển, phương pháp truy cập tất cả các phần tử của cấu trúc có sẵn cho người dùng, phản ứng của MT đối với các tín hiệu bên ngoài.

Kiến trúc MT có thể được xem như một tập hợp các thuộc tính và đặc điểm của nó theo quan điểm của người dùng. Nó mô tả một phương pháp cho sự kết hợp tối ưu của một tập hợp phần cứng, phần mềm và phần sụn của một MPU hoặc MPU đối với các thuộc tính được sử dụng bởi các nhà phát triển và lập trình viên người dùng.

Khi phát triển ngành kiến ​​trúcLPU, cũng như đối với MT, dữ liệu và định dạng lệnh, hệ thống lệnh và phương pháp định địa chỉ được xác định, các kiểu địa chỉ, các yêu cầu đối với giao diện được chứng minh. Việc lựa chọn kiến ​​trúc chính xác giúp bạn có thể tối ưu hóa quy trình tính toán thực hiện các thuật toán cho hoạt động của LCP.

Ngành kiến ​​trúc máy vi tính - khái niệm trừu tượng về máy vi tính về đơn vị chức năng, mô-đun máy tính cơ bản, cấu trúc dữ liệu. Kiến trúc không xác định cụ thể các tính năng của phần cứng, thời gian thực hiện các lệnh, mức độ song song trong việc thực hiện chương trình và các đặc điểm tương tự khác. Nó hiển thị các khía cạnh của cấu trúc của một máy tính vi mô, cụ thể là: hệ thống lệnh, các chế độ đánh địa chỉ, các định dạng dữ liệu, một tập hợp các thanh ghi có sẵn cho người dùng. Thuật ngữ "kiến trúc" được sử dụng để mô tả các khả năng mà máy vi tính cung cấp và thuật ngữ "tổ chức" xác định cách thức thực hiện các khả năng này.

Mô tả kiến ​​trúc là một mô hình máy tính siêu nhỏ, sự hiểu biết về mô hình này rất quan trọng không chỉ đối với lập trình viên. Nó có thể được sử dụng như một điểm khởi đầu cho một nhà phát triển tiềm năng của một máy tính vi mô mới: trong trường hợp này, nhà phát triển biến đổi các phần tử kiến ​​trúc đại diện cho một lược đồ logic nhất định, một tập hợp các thành phần được kết nối với nhau cần thiết.

Tất cả các máy vi tính đều chứa các khối chức năng với kiến ​​trúc vi mô bên trong riêng của chúng: 1) bộ xử lý, bao gồm một đơn vị logic số học và một đơn vị điều khiển; 2) bộ nhớ là một tập hợp các phần tử lưu trữ (ô) và một đơn vị điều khiển; 3) các thiết bị nhập và xuất thông tin cũng là các thiết bị phức tạp bao gồm các môđun cơ và điện tử. Các khối chức năng này được kết hợp bằng cách sử dụng hệ thống bus: bus dữ liệu qua đó thông tin được trao đổi giữa các khối máy tính vi mô; một bus địa chỉ, được sử dụng để chuyển địa chỉ đến các thiết bị điều khiển bằng phần mềm và một bus điều khiển, để chuyển các từ điều khiển.

Sự định nghĩa kiến trúc máy tính, như một máy vi tính phổ thông, ý nghĩa không khác với định nghĩa về kiến ​​trúc máy tính vi mô nói chung.

Kiến trúc máy tính , từ quan điểm của một lập trình viên, một đại diện (hoặc định nghĩa) trừu tượng của một hệ thống máy tính như một tập hợp phần cứng và phần mềm. Về bản chất, kiến ​​trúc là thông tin về tổ chức chức năng (logic) của máy tính.

Ngành kiến ​​trúc I PU - định nghĩa của các chức năng được thực hiện bởi hệ thống ở các cấp độ riêng lẻ của nó, và định nghĩa chính xác về ranh giới giữa các cấp độ này. Nó xác định các nguyên tắc của tổ chức MPS và chức năng của các bộ phận cấu thành của nó, đặc biệt là bộ xử lý, bộ nhớ, v.v. Kiến trúc MPS không phản ánh các đặc điểm thiết kế của cấu trúc logic và mô-đun và công nghệ sản xuất chúng.

Nguyên tắc thiết kếLPA và Bộ Đường sắt

Ngay từ đầu, trong quá trình thiết kế và phát triển máy vi tính, các nguyên tắc cơ bản sau đây chủ yếu được sử dụng: tính mô-đun, đường trục, khả năng lập trình vi mô và tính đều đặn của cấu trúc.

Nguyên tắc tổ chức mô-đun cung cấp cho việc xây dựng một máy vi tính và MPS dựa trên một tập hợp các mô-đun.

Mô-đun - mang tính xây dựng, chức năng và eđiện hoàn chỉnhthiết bị,điều này làm cho nó có thể một mình hoặc kết hợp với những người khácmô-đungiải quyết các vấn đề về tính toán hoặc điều khiểncủa lớp đã cho.

Phân biệt chức năngmang tính xây dựng các mô-đun. Cách tiếp cận mô-đun giúp cho việc tiêu chuẩn hóa các phần tử ở mức cao hơn và giảm chi phí thiết kế LPA và MPS, đơn giản hóa việc tăng dung lượng và cấu hình lại hệ thống.

Sự kết nối của các mô-đun và các phần tử của chúng với nhau được thực hiện chủ yếu theo hai nguyên tắc: a) nguyên tắc độc đoánkết nối, thực hiện quy tắc "mỗi thứ một", và b) nguyên tắcliên kết có thứ tự- Thân cây, làm cho nó có thể giảm thiểu số lượng liên kết. Chúng cung cấp trao đổi thông tin giữa các mô-đun chức năng và cấu trúc ở các cấp độ khác nhau bằng các đường cao tốc kết nối các xe buýt đầu vào và đầu ra.

Hầu hết các máy vi tính và MPS đều có một tổ chức điều khiển chương trình đa cấp.

Nguyên tắc điều khiển vi chương trình cung cấp tính linh hoạt cao nhất trong việc tổ chức các mô-đun bộ vi xử lý đa chức năng và thông qua sự kết hợp nhất định của các vi lệnh, giúp nó có thể thực hiện định hướng có vấn đề của máy tính. Nhờ nguyên tắc này, có thể sử dụng các hoạt động macro trong MPS và thực hiện các lệnh và chương trình hiệu quả hơn so với khi sử dụng các chương trình con.

Kiểm soát chương trình cơ sở cung cấp:

Tính linh hoạt hơn của các thiết bị do khả năng thay đổi chương trình cơ sở,

Tăng tính ổn định của cấu trúc thiết bị thông qua việc sử dụng rộng rãi cấu trúc ma trận như bộ nhớ,

Cung cấp giải pháp song song của các tác vụ điều khiển phân tán và bộ nhớ phân tán,

Tăng độ tin cậy của thiết bị thông qua việc sử dụng chip nhớ,

Đơn giản hóa việc kiểm soát hoạt động của các thiết bị, vì quyền kiểm soát của thiết bị điều khiển vi chương trình được giảm xuống mức kiểm soát nội dung của thiết bị lưu trữ.

Nguyên tắc đều đặn xác định trước khả năng lặp lại của các phần tử cấu trúc và kết nối giữa chúng.

Tính thường xuyên của một hệ thống thường được xem xét ở các cấp độ khác nhau của tổ chức. Các cách chính để tăng tính đều đặn của cấu trúc của LBP và LPS là:

1) sử dụng rộng rãi các thiết bị như bộ nhớ;

2) từ chối chỉ định một số hoạt động vi mô nhất định cho các thanh ghi;

3) sử dụng cấu trúc thanh ghi;

4) sản xuất các thanh ghi có mục đích chung và các thanh ghi khác ở dạng ô nhớ;

5) việc sử dụng các phương pháp trao đổi thông tin chính;

7) sử dụng nguyên tắc điều khiển vi chương trình;

8) phát triển MPS song song.

Phân loại kiến ​​trúc của các thiết bị và hệ thống vi xử lý

Có một số phân loại của kiến ​​trúc MPU và MPS, hầu hết đều trùng khớp với các mô tả của kiến ​​trúc máy tính tổng quát.

Phân loạiM. Flin.Đây là một trong những cách phân loại tốt nhất cho thấy sự khác biệt về kiến ​​trúc giữa các máy tính. Các tính năng kiến ​​trúc của máy tính được mô tả dưới dạng luồng lệnh (hướng dẫn) và luồng dữ liệu. Cách tiếp cận này cho phép phân loại kiến ​​trúc máy tính thành một trong các lớp nhất định (Bảng 2, Sơ đồ 2).

ban 2 Phân loại kiến ​​trúc máy tính của Flynn

Luồng lệnh

Một luồng dữ liệu

Nhiều luồng dữ liệu (MD)

Đơn (OK)

SISD (máy tính xử lý đơn)

SMD (SIMD) (máy tính có bộ xử lý song song hoặc kết hợp)

Nhiều (MK)

MISD (máy tính đường trục băng tải)

MIMD (MIMD) (phức hợp đa xử lý hoặc đa máy)

Việc phân loại được thực hiện theo khía cạnh không phải là cấu trúc của máy móc mà ở khía cạnh cách thức các lệnh máy của nó tương tác với dữ liệu trong máy tính. Tuy nhiên, cách phân loại của Flynn rất chung chung, tức là nó phân loại tất cả các máy tính song song, trừ máy tính đa xử lý, vào cùng một lớp và không chỉ ra bất kỳ sự khác biệt nào giữa máy tính băng tải và ma trận MP.

Các phân loại kiến ​​trúc khác cũng được sử dụng, đặc biệt là hệ thống học của F. Shara, hệ thống học cấu trúc của R. Hockney và K. Jesshope, sử dụng các ký hiệu cấu trúc đặc biệt.

Phân loại cấu trúc của R.Hockney và K. Jesshope. Ở cấp độ đầu tiên, tất cả các hệ thống tính toán được phân chia theo nguyên tắc đa lượng (số lượng) thành các hệ thống một máy tính và nhiều máy tính. Hệ thống máy tính với một máy tính lần lượt được chia thành máy tính có một MP băng tải và nhiều MP.

Loại đầu tiên trong số chúng là các máy tính tuần tự truyền thống, và loại thứ hai tạo thành một lớp máy tính song song, được chia thành các ma trận vi xử lý, không pipelined và vi xử lý.

Sơ đồ 2. Minh họa phân loại Flynn của kiến ​​trúc máy tính

Một ví dụ về một trong những máy tính toán song song không pipelined đầu tiên là máy tính CDC-6600, được xây dựng trên cơ sở một số bộ xử lý vô hướng.

Máy tính băng tải được chia thành những máy tính chỉ thực thi lệnh vô hướng, ví dụ: máy tính CDC-7800, FPC AP-120B và những máy tính thực thi lệnh vectơ. Các máy tính sử dụng lệnh vectơ lần lượt được chia thành các máy tính có đường dẫn chuyên biệt, ví dụ CRAY-1, và với đường dẫn chung là máy tính CYBER 205.

Máy tính hạng máy với một ma trận các bộ xử lý Chúng được phân loại theo khả năng kết nối của các bộ xử lý trong ma trận, theo độ rộng bit, v.v. Các máy đầu tiên thuộc loại này là ExplIAC-IV, BSP, STA-RAN, ICL DAP, OMEN, v.v.

Máy tính được chia thành hai nhóm chính theo mục đích của chúng: phổ quát chuyên nghành .

Ngành kiến ​​trúcvon Neumann

phổ quát máy tính có kiến ​​trúc "von Neumann" truyền thống (hay kiến ​​trúc vô hướng).

Các nguyên tắc cơ bản của việc xây dựng máy tính điều khiển bằng phần mềm.

Năm 1946, nhà toán học nổi tiếng người Mỹ J. von Neumann là người đầu tiên đưa ra các nguyên tắc cơ bản để xây dựng máy tính điều khiển bằng chương trình, được bổ sung và hoàn thiện theo thời gian:

1) nguyên tắc của điều khiển được lập trình là máy tính có thể tự động biến đổi dữ liệu ban đầu phù hợp với một chương trình nhất định;

2) nguyên tắc bước nhảy có điều kiện cung cấp tính linh hoạt và tính linh hoạt cho các chương trình, tạo cơ hội trong quá trình giải quyết một vấn đề để chuyển đến một phần nhất định của chương trình, tùy thuộc vào kết quả của các phép tính trung gian hoặc dữ liệu ban đầu;

3) nguyên tắc bảo toàn (bảo mật) của chương trình là chương trình được đặt trong bộ nhớ máy tính;

4) nguyên tắc truy cập ngẫu nhiên vào các phần tử bộ nhớ;

5) nguyên tắc sử dụng hệ thống số nhị phân;

6) nguyên tắc của bộ nhớ đa cấp (phân cấp).

Những nguyên tắc này cũng phù hợp với máy tính hiện đại, nhưng với sự ra đời của các thế hệ và dòng máy mới, chúng đã được bổ sung và hoàn thiện.

Trong máy tính, bắt đầu từ thế hệ thứ ba, ngoài ra, các nguyên tắc sau được áp dụng:

- đa chương trình- cùng thực hiện các lệnh khác nhau giống hoặc khác nhau, không phụ thuộc vào lệnh nào, các chương trình được lưu trong RAM;

- thông tin và khả năng tương thích phần mềm- làm cho nó có thể chạy các chương trình hiện có trên các mô hình khác nhau của gia đình;

Cao mức độ tiêu chuẩn hóa kỹ thuật- danh pháp của tất cả các máy của thiết bị bên ngoài và các thiết bị khác giống nhau;

Khả năng tổ chức công việc nhiều giai đoạn về việc tạo ra và cải tiến máy tính.

Máy thế hệ thứ tưđược xây dựng theo các nguyên tắc:

- đa chế biến- hoán vị của một số bộ xử lý khi làm việc với bộ nhớ dùng chung;

Tổ chức bộ nhớ ảo- cung cấp dung lượng địa chỉ RAM gần như không giới hạn;

Rộng sử dụng BIC và VLSI và cấu trúc macromodular, dựa trên ý tưởng xây dựng các hệ thống tính toán linh hoạt về chức năng từ các khối lớn được tiêu chuẩn hóa (macromodules);

Lưu hành nội bộ ngôn ngữ cấp cao.

Máy thế hệ thứ năm khác nhau:

Sự gia tăng đáng kể trình độ dân trí của các nhà chế biến;

Phát triển thêm chức năng I / O cho đồ họa, hình ảnh, tài liệu, ngôn ngữ lập trình;

Khả năng xử lý thông tin tương tác bằng ngôn ngữ tự nhiên;

Khả năng tự học hỏi, xây dựng liên kết và rút ra kết luận.

Ngôn ngữ lập trình trong quá trình hình thành chương trình có thể thực hiện một giao diện tự nhiên giữa con người và máy móc. Ngôn ngữ Cấp độ Cực cao Cung cấp:

Mức độ thông minh cao trong sự tương tác của người dùng với hệ thống máy tính ở các cấp độ khác nhau khi truy cập vào cơ sở dữ liệu để lựa chọn thông tin cần thiết và cơ sở tri thức để có được những ý tưởng mới cần thiết để giải quyết các vấn đề không quen thuộc;

Sử dụng quỹ phần mềm hiện có tập trung vào kiến ​​trúc máy tính truyền thống.

Chuyên nghành máy tính được thiết kế để cải thiện đáng kể hiệu suất khi giải quyết một số loạinhiệm vụ... Điều này đạt được lúc đầu thông qua việc sử dụng tính toán song song. Theo thời gian, máy móc xuất hiện dựa trên việc thực hiện song song các chức năng khác nhau hoặc dựa trên sự sao chép của các thiết bị số học, đặc biệt là ma trận bộ xử lý.

Kiến trúc song song

Song song phát triển theo hai hướng:

1) cải thiện cấu trúc của máy tính bằng cách giảm sự khác biệt giữa tốc độ của bộ xử lý và tốc độ truy cập vào RAM;

2) sự lặp lại của cùng một loại thiết bị máy tính, được kết hợp theo một cấu trúc liên kết nhất định.

Song song đã được áp dụng ở một số cấp độ phân cấp, cụ thể là:

1) mức độ của nhiệm vụ - giữa các nhiệm vụ được thực hiện trên máy tính, hoặc giữa các giai đoạn của một nhiệm vụ;

2) cấp độ chương trình - giữa các phần của chương trình (ví dụ, trong ranh giới của các chu kỳ);

3) mức lệnh - giữa các giai đoạn thực hiện lệnh (lệnh của bộ xử lý);

4) cấp số học và bit - giữa các phần tử của hoạt động vectơ trong các mạch logic của thiết bị số học.

Hiệu trưởng cáchgiới thiệu song song trong kiến ​​trúc máy tính có thể được chia thành các nhóm sau:

- xử lý chức năng- cung cấp một số thiết bị có khả năng thực hiện các chức năng khác nhau, đặc biệt là các phép toán logic, cộng, nhân, v.v.

- chế biến băng tải- việc sử dụng nguyên tắc đường ống để tăng hiệu quả của thiết bị xử lý;

- xử lý ma trận- việc sử dụng ma trận các phần tử xử lý giống hệt nhau với một hệ thống điều khiển chung, trong đó tất cả các phần tử thực hiện cùng một hoạt động, nhưng với dữ liệu khác nhau;

- đa chế biến- được thực hiện bởi một số bộ vi xử lý, mỗi bộ xử lý thực hiện các lệnh riêng và tất cả chúng đều tương tác thông qua một RAM chung.

Tín hiệu và mbộ vi xử lý đơn

Bộ xử lý ma trận tín hiệu - bộ xử lý,dựa trênnguyên tắc quản lýbên dòng suốidữ liệu.

Các lệnh bắt đầu thực thi ngay khi các toán hạng của chúng có sẵn. Trong trường hợp này, dữ liệu đến từ các bộ xử lý lân cận được hiểu là sự thay đổi trạng thái và bắt đầu một hành động nhất định.

Bộ xử lý tín hiệu hoạt động tương tự như truyền tín hiệu. Chúng là một hệ thống tính toán ma trận không đồng bộ toàn cầu phân tán.

Hệ thống phương tiện - mạng lưới bộ xử lý,người biểu diễn nhịp nhàngtính toán và truyền dữ liệu của hệ thống.

Mỗi bộ xử lý thường xuyên bơm dữ liệu tại mỗi thời điểm, thực hiện các phép tính ngắn nhất định để luồng dữ liệu được lưu trữ thường xuyên trên mạng. Mỗi bộ vi xử lý này chỉ tập trung vào một lớp nhiệm vụ và do đó thuộc về lớp máy tính chuyên dụng.

Ở cấp độ phần cứng, các máy tính này được đặc trưng bởi đồng bộ hóa toàn cầu, xác định trước sự xuất hiện của các vấn đề như đồng bộ hóa xung nhịp, tăng tiêu thụ điện năng, giảm độ tin cậy, v.v.

Đối với các hệ thống đa xử lý phát trực tuyến phổ quát, các vấn đề xung đột là rất quan trọng, liên quan đến việc sử dụng bộ nhớ dùng chung và sự tương tác của các bộ xử lý. Những vấn đề này đã được giải quyết bằng cách thay thế các hệ thống dòng chảy bằng các hệ thống mô-đun và cục bộ (được thực hiện trong các bộ xử lý ma trận tín hiệu).

Nhiều máy tính chuyên dụng sử dụng "Kiến trúc Harvard" , bản chất của nó là không gian bộ nhớ hướng dẫntách khỏi không gian bộ nhớdữ liệuđể tìm nạp đồng thời các lệnh và dữ liệu.

Kiến trúc RISC của máy tính

Máy tính có ít tập lệnh / lệnh ( RISC - giảm tập lệnh máy tính).

Các thuộc tính cơ bản của máy tínhvới RISC-ngành kiến ​​trúc:

1) việc sử dụng các lệnh có độ dài cố định với một số ít kiểu định dạng;

2) tính đều đặn, khiến nó có thể, do tính đơn giản của các lệnh, sử dụng các thiết bị phần cứng giống nhau để thực hiện hầu hết các lệnh;

3) thực hiện hầu hết các lệnh trong một chu kỳ máy (chu kỳ đồng hồ);

4) tập trung vào các thanh ghi - tất cả các hoạt động dữ liệu được thực hiện trong các thanh ghi, ngoại trừ các lệnh tải và ghi, việc thực hiện liên quan đến truy cập bộ nhớ.

Thuận lợi RISC-ngành kiến ​​trúc:

1) sự đơn giản có thể so sánh được của việc triển khai phần cứng;

2) giải mã nhanh các lệnh;

3) thời gian chu kỳ ngắn và do đó, thực hiện lệnh nhanh chóng;

4) khả năng tạo ra một hệ thống lệnh hiệu quả.

nhược điểm RISC-ngành kiến ​​trúc:

1) tỷ lệ trao đổi các toán hạng và ô của bộ nhớ truy cập ngẫu nhiên tương đối thấp;

2) yêu cầu phần mềm bổ sung.

Hiệu suất của máy tính ma trận và máy tính song song hiện đại khá cao và đạt hàng tỷ phép toán mỗi giây trên các toán hạng 64-bit khi thực hiện các phép toán dấu phẩy động. Khi giải quyết các vấn đề ứng dụng, hiệu suất của chúng giảm đáng kể và tiệm cận với hiệu suất của các máy tính đa năng hiện đại.

Trong số các MPS đường ống và ma trận hiện đại, các siêu máy tính như Cray MP, v.v. nên được đặt tên.

Câu hỏi. Nhiệm vụ

1. Kiến trúc của MPU (máy tính vi mô) hiển thị gì và điểm khác biệt của nó so với kiến ​​trúc của MP?

2. Giải thích bản chất của các nguyên tắc mô đun, xương sống, khả năng lập trình vi mô và tính đều đặn của cấu trúc, được sử dụng trong sự phát triển của MPA, vi máy tính và MPS.

3. Các kiến ​​trúc máy tính được phân loại dựa trên những cơ sở nào?

4. Bản chất của kiến ​​trúc máy tính von Neumann là gì?

5. Bản chất của kiến ​​trúc Harvard máy tính là gì?

6. Liệt kê các cách đưa song song vào kiến ​​trúc máy tính.

7. Giải thích bản chất đa chương trình máy vi tính.

8. Nguyên lý hoạt động của mạng truyền thông MP và mạng ma trận tín hiệu MP, chúng khác nhau ở điểm nào?

9. Bản chất của kiến ​​trúc RISC của máy tính là gì, nó có những ưu nhược điểm gì so với các kiến ​​trúc đã được xem xét trước đây?

Văn học.

1. Vi xử lý và microEOM trong hệ thống virobnic: Posibnik. - K .: Trung tâm Vidavnichy "Học viện", 2002. - 368 tr. (Alma Mater).

2. Hệ thống máy tính Korneev. - M .: "Kiến thức", năm 199.

3., Bộ vi xử lý Kiselev. - M .: "Kiến thức", năm 199.