1: Chọn bộ đếm tương ứng 0: Chốt số đếm của bộ đếm đã chọn 0: Chốt trạng thái của bộ đếm đã chọn
Hình 9.25. Dạng thức của thanh ghi điều khiển để đọc ngược
Có thể nhận thấy rằng nếu dùng chế độ đọc ngược ta có thể ra lệnh chốt các thông tin cần thiết cho mỗi bộ đếm hoặc cho tất cả các bộ đếm.
Hình 9.26. Mạch 8254 trong các máy IBM PC.
Qua các mô tả chế độ làm việc của mạch 8254 ở trên ta thấy ứng dụng của 8254 là rất đa dạng. Tùy theo trường hợp ứng dụng cụ thể ta có chọn được 1 chế độ thích hợp .
Một ví dụ việc ứng dụng mạch 8254 trong các máy IBM PC được thể hiện trên hình 9.26
Trong máy IBM PC bộ đếm số 0 được lập trình để làm việc ở chế độ 3 và được dùng vào việc tạo ra xung chuẩn cho đồng hồ thời gian thực. Xung 2.83MHZ của 8284 được chia 2 để tạo ra các xung đồng hồ cho 8254. Xung này được chia cho 65536 để thu được xung 18.2 Hz ở OUT0 xung OUT0 sẽ tạo ra yêu cầu IRQ0 để hệ thống cập nhật dữ lịêu cho bộ phận tính thời gian .
Bộ đếm số 1 được lập trình ở chế độ 2 để tạo ra xung yêu cầu treo CPU thông qua DMAC khi phải làm tươi DRAM. Như đã nói ở chương 5 việc làm tươi 1 phần tử nhớ của DRAM phải được thực hiện sau mỗi 15MS một lần hay vưói tầng số 66.278HZ. Có thể thu được tầng số này bằng cách lấy xung đồng hồ DK1 : 18
Bộ đếm số 3 được lập trình ở chế độ 3 để tạo ra xung âm tần 896Hz dùng cho loa. Có thể thu được tần số này bằng cách lấy xung đồng hồ DK2 : 1331 6. Phối ghép CPU với mạch thông tin nối tiếp 8250 và 8254
Truyền thông nối tiếp
Trước khi nói về việc phối ghép CPU với các mạch thông tin nối tiếp ta phải giới thiệu qua xem thông tin nối tiếp là gì các khái niệm cơ bản và cơ chế hoạt động của phương pháp thông tin này .
Như ta đã biết ở các chương trước . Việc truyền thông tin giữa các bộ phận nằm gần nhau trong hệ thống vi xử lý có thể thực hiện thông qua bus song song mở rộng hoặc qua các mạch phối ghép song song trong đó các byte hoặc được chuyển từ bộ phận này sang bộ phận khác trên một tập các đường dẫn bằng mạch in hoặc dây cáp trong trường hợp cần phải truyền thông tin giữa các thiết bị ở cách xa nhau, ta không thể dùng cả tập các đường dây như trên mà phải có cách truyền khác để làm sao tiết kiệm được số đường dây dẫn cần
ClK0 Out Gate0 Clk1 Out Gate1 Clk2 Out Gate2
18.,2 Hz đến IRQ0 của 8259A
66278 Hz đến DRQ0 của 8237A
896 Hz đến khuyêch đại cho loa Cho phép loa kêu
(từ 8255A)
thiết cho việc truyền . Từ yêu cầu trên ra đời phươnng pháp truyền thông tin nối tiếp, tín hiệu nối tiếp sau đó được truyền đi liên tiếp từng bit trên một đường dây (như đường điện thoại chẳng hạn) . Ở đầu thư tín hiệu nối tiếp sẽ đwocj biến đổi ngược lại để tái tạo hiệu dạng song song thích hợp cho việc xử lý tiếp theo .
Trong thực tế có 2 phương pháp truyền thông tin kiểu nối tiếp : đồng bộ và không đồng bộ .
Trong phương pháp truyền đồng bộ. Dữ liệu được truyền theo từng mảng (khối ) và một tốc độ xác định. Mảng dữ liệu trước khi được truyền đi sẽ được gắn thêm ở đẩu mảng và ở cuối mảng. Các Byte (hoặc một nhóm bit) đánh dấu đặc biệt. Hình 9.27 biểu diễn khuôn mặt một bản in để truyền đồng bộ theo giao thức BISINC (giao thức truyền thông tin đồng bộ, binary synchonous communication protocol). Đây thực chất là giao thức điều khiển theo Byte vì các Byte đặc biệt được dùng để đánh dấu các phần khác nhau trong bản tin.
Chiều của dòng dữ liệu
SYN: Ký tự đồng hồ TEXT:thân văn bản
SOH ký tư bắt đầu phầnmào đầu ETX: ký tự kết thúc văn bản HEADER: phần mào đầu ETB:ký tự kết thúc khối văn bản STX: Ký tự bắt đầu văn bản BCC: Ký tự kiểm tra khối. Hình 9.27. Khuôn dạng của bản tin truyền đồng bộ
Trong cách truyền thông đồng bộ, dữ liệu được truyền đi theo từng ký tự . Ký tự cần truyền đi được gắn thêm 1 bit đánh dấu ở đầu để báo bắt đầu kí tự là một hoặc 2 bit đánh dâu ở cuối để báo kết thúc kí tự . Vì mỗi kí tự được nhận dạng riêng biệt nên nó có thể được truyền đi vào bất kì lúc nào tức là giữa các kí tự truyền đi có thể có các khoảng cách về thời gian. Dạng thức của dữ liệu truyền đi theo phương pháp không đồng bô được thể ü hiện trên hình 9.28 .
Chiều của dòng dữ liệu
Luôn ở mức thấp Luôn ở mức cao
Tùy theo loại mà được chọn dùng trong khi truyền (baudot ASCII, EBĐCIC) đọ dài cho mã kí tự có thể là 5.6.7.8 bit. Tùy theo hệ thống truyền tin bên cạnh các bit mà dữ liệu có thể tùy chọn có hay không có 1 bit parity để kiểm tra lỗi khi truyền. Có thể tùy chọn 1 hoặc 2 bit STOP. Nhưng bắt buộc phải có 1 bit start. Như vậy để truền đi 1 kí tự theo phương pháp không đồng bộ, ngoài kí tự mang tin ta phải truyền thêm ít nhất là 2 và nhiều nhất là 4bit phụ để tạo ra khung cho kí tự đó .Vì thế phương pháp truyền này tuy đơn giản nhưng có hiệu suất không cao.
Tốc độ truyền dữ liệu theo phương pháp nối tiếp được đo bằng bit/CT. Ngoài ra người ta cũng hay dùng đơn vị bout. Đó là giá trị nghịch đạo của thời gian giữa các lần thay đổi mức tín hiệu, với dữ liệu chỉ co hai mức (0và1)và mỗi thay đổi mức tín hiệu chỉ mã hoá một bit thì có thể hiểu baut=bit/s.các giá trị tốc độ truyền thường gặp trong thực tế là 110.150.300.600.1.200.2.400.4.800.9.600 19.200 baut
Để tạo điều kiện dễ dàng cho việc phối ghép đường truyền nối tiếp với hệ vi xử lý và để giảm tối đa các mạch phụ thêm ở ngoài . người ta đã chế tạo
ra các vi mạch tổ hợp cỡ lớn lập trình có khả năng hoàn thành các công việc cần thiết trong khi phối ghép đó là các mạch thu phát dị bộ vạn năng (N8250/16450 của National Semiconductor universal asynchronous receiver - transmitter USART) và mạch thu phát đồng bộ - dị bỏ vạn năng 8251A của Intel (universal synchronous - asynchronous receiver - transmitter USART). Ngay như tên gọi đã cho thấy mạch 8251A về mặt chức năng đã bao gồm cả mạch 8250A bên trong nó .
Với các mạch phối ghép như trên, việc truyền tin dị bộ chẳng hạn sẽ được thực hiện nhờ 1URAT ở đầu phát và 1 URAT khác ở đầu thu. Khi có kí tự để phát 8251A tạo ra khung cho kí tự bằng cách gắn thêm vào mã kí tự các bit start , parity và stop và gưỉ liên tiếp từng bit ra đường truyền. Bên phía thu, 1 8521A khác sẽ nhận kí tự tháo bỏ khung, kiểm tra parity , rồi chuyển sang dạng song song để CPU đọc.
Các tín hiệu nối tiếp với dạng xung như như trên hình 9.27 hoặc 8.28 có phổ biến rất rộng nên để truyền được thông tin đi xa trên đường điện thoại với dãi tầng có hạn ở đầu phát các xung 0.1 phải được điều chế thành các xung âm tần để truyền đi. Còn đầu thu các xung âm tần phải được giải điều chế để được khôi phục lại tín hiệu số ban đầu. Thiết bị hoàn thành việc này có tên là modem (viết tắc từ chữ modulator : Bộ điều chế và demodulatdor : Bộ giải điều chế). Vì vậy để có thể truyền thông tin nối tiếp giữa các thiết bị ta cần nối chung với nhau theo cách thức trên hình 9.29.
Các tín hiệu trên hình 2.29 là một phần của các tín hiệu dùng trong chuẩn phối ghép quốc tế trong truyền dữ liệu RS 323C. Cách hoạt động của truyền dữ liệu theo sơ đồ như sau :
+ Lúc bắt đầu làm việc DTE1 đưa ra xung DTR=0 để báo cho CDEt biết là nó sẵng sàng làm việc. DCE1 cũng vậy, khi bắt đầu làm việc nó đưa ra xung DSR=0 để báo cho DTE1 biết là nó sẵn sàng thu phát thông tin. Sau đó DCE1 được điều khiển để phát xung gọi sang phía bên kia.
+ Nếu DTE2 sẵn sàng làm việc nó sẽ gởi trả lời sang phía DTE1 những xung âm tầng.
DTE : Data terminal equipment (thiết bị đầu cuối có dữ liệu cần thu/phát). DCE : Data Communication equipment (thiết bị thông tin để truyền dữ liệu đi xa)
RTS : Request to Send (0 : thiết bị đầu cuối có ký tự cần truyền) CTS : Clear to Send (0 : thiết bị thông tin sẵn sàng truyền)
DTR : Data terminal ready (0 : thiết bị đầu cuối sẵn sàng làm việc) DSR : Data Set Ready (0 : thiết bị thông tin sẵn sàng làm việc)
CD : Carrier Detect (0 : thiết bị thông tin tìm thấy sóng mạng đã liên lạc được với phía bên kia)
RxD : Dữ liệu thu TxD : Dữ liệu phát
Hình 9.29 Mạch truyền dữ liệu bằng modem trên đường dây điện thoại.
+ Khi DTE1 có ký tự cần gởi, nó đưa ra RTS=0, DCE1 sẽ đưa ra CD=0 để báo là đường truyền đã thông và khi nó ssãn sàng nhận dữ liệu để chuyển đi nó sẽ đưa ra CTS=0. Nhận được thông tin này DTE1 gởi các ký tự sang DCE1. Sau khi truyền xong DTE1 đưa ra RTS=1 để kết thúc. DCE1 cũng kết thúc công việc và đưa ra CTS=1.
Hình9.30 Phối ghép UART qua đầu cáp chuẩn RS 232C.
Trong thực tế giữa TDE và DCE thường có các dây cáp và đầu nối cáp theo tiêu chuẩn RS 232C. Trên hình 9.30 là ví dụ sơ đồ nối đơn giản CPU-
UART với MODEM qua các đầu cáp chuẩn RS 232C bằng các bộ khuyếch đại đường dây phát MC 1488 và khuyếch đại đường dây thu MC 1489.
• Mạch USART 8251A
Trong phần này ta sẽ giới thiệu mạch 8251A, đó là mạch USART có thể dùng cho hai kiểu truyền thông tin nối tiếp đồng bộ. Sơ đồ khối của mạch 8251A của Intel được biểu diễn trên hình 9.31.
Các tín hiệu của mạch 8251A hầu hết là giống tín hiệu của 8088 hoặc các tín hiệu tiêu chuẩn của RS 232C đã nêu trước đây. Chân chọn vỏ của 8251A phải được nối với đầu ra của một mạch giải mã địa chỉ để đặt mạch 8251A vào một địa chỉ cơ bản nào đó. Các tín hiệu cần được giải thích thêm gồm:
+ CLK [I] : Chân nối đến xung đồng hồ của hệ thống.
+ TxRDY [0] : Tín hiệu báo đệm giữ rỗng (sẵn sàng nhận ký tự mới từ CPU)
+ RxRDY [0] : Tín hiệu báo đệm thu đầy ( có ký hiệu nằm chờ CPU đọc vào)
+ TxEMPTY [0] : Tín hiệu báo cả đệm thu và đệm phát đều rỗng.
+ C/D [I] : CPU thao tác với thanh ghi lệnh / thanh ghi dữ liệu của 8251A , khi C/D=1 thì thanh ghi lệnh được chọn làm việc. Chân này thường được nối với A0 của bus địa chỉ để cùng với các tín hiệu WR và RD chọn ra 4 thanh ghi bên trong 8251A.
+ RxC [I] và TxC [I] : Xung đồng hồ cung cấp cho các thanh ghi dịch của phần thu và phần phát. Thường 2 thanh này nối chung để phần thu và phần phát làm việc với cùng tầng số nhịp. Tần số của các khung đồng hồ đưa đến chân RxC và TxC được chọn sao cho là bộ số ( cụ thể là gấp 1, 16 hoặc 64 ) của tốc độ thu hay tốc độ phát theo yêu cầu.
+ SYNDET/BRKDET [O]: khi 8251A làm việc ở chế độ không đồng bộ, nếu R x D = 0 kéo dài hơn thời gian của 2 ký tự thì chân này có mức cao để báo là việc truyền hoặc đường truyền bị gián đoạn. Khi 8251A làm việc ở chế độ đồng bộ, nếu phần thu tìm thấy ký tự đồng bộ rong bản tin thu được thì chân này có mức cao.
Đệm ở phần phát của mạch 8251A là loại đệm kép, bao gồm đệm giữ và đệm phát. Trong khi 1 ký tự đang được chuyển đi ở đệm phát thì một ký tự khác có thể đưa từ CPU sang đệm giữ. Các tín hiệu T x RDY và T x EMPTY sẽ cho biết trạng thái của các đệm này khi mạch 8251A hoạt động.
Khi đệm ở phần thu đầy thì sẽ có tin shiệu R x RDY = 1. Nếu cho đến khi phần thu nhận được ký tự mới mà CPU không kịp thời đọc được ký tự cũ sẽ bị mất do bị đè bởi ký tự mới nhận được. Hiện tượng này gọi là thu đè.
Các thanh ghi bên trong của 8251A
Như đã nói ở trên chân C/D (giải sử nó được nối vào A0 của bus địa chỉ) cùng các tín hiệu WR và RD sẽ chọn ra 4 thanh ghi bên trong của mạch USART, thanh ghi đệm dữ liệu thu, thanh ghi đệm dữ liệu phát, thanh ghi trạng thái và thanh ghi điều khiển (xem bánh 9.2)
Bánh 9.2 chọn các thanh ghi bên trong của 8251A
A0 RD WR Chọn ra
0 0 1 Thanh ghi đệm dữ liệu thu 0 1 0 Thanh ghi đệm dữ liệu phát 1 0 1 Thanh ghi trạng thái
1 1 0 Thanh ghi điều khiển
Với cùng một địa chỉ của thanh ghi điều khiển ta có thể thâm nhập được 2 thanh ghi khác nhau: thanh ghi chế độ và thanh ghi lệnh. Sau khi có xung reset thì ta phải ghi liên tiếp từ chế độ rồi theo sau là từ lệnh vào địa chỉ dành cho thanh ghi điều khiển để định nghĩa các chế độ và phương thức làm việc của mạch 8251A.
Thanh ghi từ chế độ :
Dạng thức của thanh ghi từ chế độ được biểu diễn trên hình 9.32
Trong từ chế độ, đối với ký tự cần truyền ta có thể chọn số bit (kiểu mã) của ký tự, số bit stop và tốc độ truyền. Nếu at có sẵn tầng số xung đồng hồ cho phần thu hoặc phần phát (giả sử là Fdk) và ta muốn truyền (thu/phát) dữ liệu vưói tốc độ X baud, ta phải chọn hệ số nhân tốc độ truyền k sao cho thỏa mãn biểu thức.
Fdk = X.K, trong đó X là các tốc độ truyền tiêu chuẩn.
Ví dụ : nếu ta có tần số xung đồng hồ phát là 19.200Hz và ta muốn truyền dữ liệu với tốc độ 1.200 baud thì ta phải ghi từ chế độ có 2 bit cuối là 10 để chọn được hệ số nhân tốc độ truyền là 16, vì 1200 x 16 = 19.200. Với việc dùng tần số đồng hồ cho phần thu/ phát cao hơn so với tốc độ truyền ta sẽ giảm được lỗi khi truyền thông tin. Tất nhiên khi làm việc ở chế độ đồng bộ thì ta phải có từ chế độ với 2 bit cuối là 00.
I: tạo/ kiểm tra parity chẵn Cho phép dùng parity
D7 D6 D5 D4 D3 D2 D1 D0 S2 S1 EP PEN L2 L1 B2 B1
Số bit stop Độ dài mã ký tự hệ số nhân tốc độ
Hình 9.32 Dạng thức thanh ghi chế độ của 8251A Thanh ghi từ lệnh :
Dạng thức của thanh ghi lệnh được biểu diễn trên hình 9.33
00Không hợp lệ0 11 bit101 bit112 bit