Tải bản đầy đủ (.pdf) (9 trang)

CLOCK - TIMER - SOUND

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (84.45 KB, 9 trang )

57
CHƯƠNG 9 : CLOCK - TIMER - SOUND
9.1CLOCK
Để thực hiện một lệnh, CPU phải trải qua nhiều giai đoạn, mỗi giai đoạn được một nhóm các mạch
điện thực hiện, kết quả của giai đoạn trước được chuyển cho giai đoạn sau thực hiện tiếp cho đến khi lệnh
được hoàn tất.
Trong quá trình thục hiện, để các mạch điện hoạt động nhòp nhàng đồng bộ với nhau, người ta đã
dùng các xung điện với tần số xác đònh để đều khiển các mạch điện ấy.Các mạch điện sẽ chỉ hoạt động
khi xuất hiện xung,và sẽ thực hiện một tác vụ nào đó (tương ứng với một giai đoạn) trong quá trình xuất
hiện xung.Các xung đóng vai trò của người cầm cờ hiệu ra lệnh cho các mạch điện làm việc một cách
nhòp nhàng,đúng lúc.Các xung điện này được gọi là nhòp đồng hồ của máy điện toán (CLOCKS) .
Đối với máy IBM PC/XT chuẩn nhòp đồng hồ là 4772727 Hz (4.77 MHz) . Nhòp đồng hồ này được
tạo ra từ nguồn dao động gốc ( có tần số 14.31818 MHz ) bằng cách chia tần số gốc cho 3.
Các máy IBM AT sử dụng các bộ vi xử lý 80286 và 80386 đã dùng nhòp đồng hồ với tần số cao hơn
: 6,8,12,16,25,33 ... MHz nên đã có tốc độ lớn hơn. Mặt khác số chu kỳ để thực hiện một lệnh của các bộ
vi xử lý 80286,80386 thường ít hơn 8088/8086, đây cũng là lý do làm tốc độ của chúng cao hơn.
9.2TIMER
Một số tác vụ trong máy tính cần được thực hiện theo một chu kỳ xác đònh hoặc trong những thời
gian xác đònh .
Thí dụ :
Đếm giờ
Chờ motor của ổ đóa đạt đến tốc độ xác đònh .
........
Các yêu cầu này đòi hỏi phải có một hệ thống “đồng hồ báo thức” được gọi là TIMER .
Đối với các máy vi tính thuộc họ nhà IBM PC/XT/AT chip 8253-5 hoặc các chip tương đương đảm
nhận nhiệm vụ trên . TIMER chip cung cấp nhiều kênh (CHANNEL) tín hiệu đồng hồ, mỗi kênh cho một
mục đích riêng . Tần số làm việc của mỗi kênh đều có thể xác đònh bằng cách cung cấp các tham số thích
hợp cho TIMER chip .
Những chip có khả năng thay đổi tình trạng làm việc thông qua các mệnh lệnh và các tham số được
gọi là các chip có thể thảo chương dược (programmable chips).
8253-5 cung cấp 3 kênh :


- Kênh 0 cung cấp tín hiệu đồng hồ hệ thống được xác đònh tần số chuẩn khoảng 18.206 Hz sau
khi bật máy .
- Kênh 1 dùng để điều khiển quá trình làm tươi bộ nhớ (RAM refresh)
- Kênh 2 dùng để điều khiển loa.
9.3THẢO CHƯƠNG CHO 8253-5
Trên IBM PC/XT/AT 8253-5 được điều khiển thông qua các port :
- Port 040h : data port of channel 0
- Port 041h : data port of channel 1
- Port 042h : data port of channel 2
- Port 043h : control port of 8253-5
9.3.1Nguyên lý hoạt động của 8253-5
58
Chip 8253-5 được cung cấp một dao động tại ngõ vào có tần số 1.19318 MHz. Dao động này được
tạo ra bằng cách chia dao động gốc cho một giá trò thích hợp ( 12 trên PC/XT ) .
Mỗi kênh của 8253-5 là một bộ đếm (Counter) và một thanh ghi 16 bit lưu giữ số đếm (selected
count register) gọi tắt là SCR.
Để thiết lập trạng thái làm việc cho mỗi kênh ta cần phải gán giá trò cho SCR của mỗi bộ đếm cùng
các tham số bằng cách gởi một byte điều khiển ra control port của 8253-5 để chỉ đònh kênh và mode làm
việc,kế tiếp là các tham số ra data port tương ứng . Byte điều khiển có dạng thức :
SC1 SC0 RL1 RL0 M2 M1 M0 BCD
Với chi tiết về các thành phần như sau :
SC1 SC0 RL1 RL0
0 0 Select Counter 0 0 0 Counter Latching operator
0 1 Select Counter 1 0 1 Read/Load high byte only
1 0 Select Counter 2 1 0 Read/Load low byte only
1 1 Illegal 1 1 Read/Load low byte first and then high byte

M2 M1 M0
0 0 0 Mode 0
0 0 1 Mode 1 0 Binary Counter 16-bits

X 1 0 Mode 2
X 1 1 Mode 3
1 Binary Code Decimal (BCD) Counter
(4 decades)
1 0 0 Mode 4
1 0 1 Mode 5
9.3.2Các mode của 8253-5
Mode 0 : Interrupt on terminal Count
Tín hiệu ra ở mức thấp sau khi mode được chỉ đònh . Sau khi SCR được nạp giá trò, tín hiệu ra tiếp
tục ở mức thấp và bộ đếm bắt đầu làm việc . Khởi đầu bộ đếm được nạp giá trò của SCR, sau đó giảm 1
khi có tín hiệu xuất hiện ở ngõ vào . Khi bộ đếm giảm đến 0 (terminal count),tín hiệu ra sẽ chuyển lên
mức cao và giữ luôn trạng thái này cho đến khi mode được đònh lại hoặc SCR được nạp lại .
Nạp lại SCR trong khi bộ đếm đang làm việc, sẽ tạo ra kết quả :
- Nạp byte thứ nhất : bộ đếm ngừng hoạt động
- Nạp byte thứ hai : bộ đếm làm việc trở lại với số đếm mới
Mode 1 : Programmable One-Shot
Giống mode 0,nhưng việc nạp lại SCR trong khi tín hiệu ngõ ra ở mức thấp sẽ không có tác dụng .
Mode 2 : Rate generator
Tín hiệu ra sẽ ở mức thấp trong một thời hằng và sẽ ở mức cao trong thời hằng kế tiếp,quá trình này
được lặp đi lặp lại cho đến khi đònh lại mode. Thời hằng có giá trò bằng khoảng thời gian thực hiện N ( N
là giá trò trong SCR ) chu kỳ của tín hiệu vào.Như vậy tín hiệu ra sẽ là dạng xung vuông với tần số bằng
tần số ngõ vào chia cho 2*N .

Mode 3 : Square Wave Rate generator
Giống như mode 2, nhưng tín hiệu sẽ ở mức thấp trong ½ thời hằng và ở mức cao trong ½ thời hằng
kế tiếp.Do đó tín hiệu ra sẽ là xung vuông với tần số bằng tần số ngõ vào chia cho N .
Như vậy tần số của tín hiệu của ngõ ra trong mode 3 sẽ bằng 1.19318 MHz chia cho giá trò của SCR.
Để tạo ra một dao động có tần số f ta cần cho số đếm của kênh tương ứng một giá trò xác đònh bởi :
1193180
59

n = ------------
f
Mode 4 : Software Triggered Strobe
Sau khi mode 4 được thiết lập, tín hiệu ngõ ra sẽ ở mức cao . Khi SCR được nạp, bộ đếm bắt đầu
làm việc . Khi bộ đếm giảm đến 0, tín hiệu ngõ ra sẽ chuyển sang mức thấp trong khoảng thời gian bằng 1
chu kỳ của tín hiệu xung vào,sau đó trở lại mức cao .
Nếu SCR được nạp lại trong lúc bộ đếm đang hoạt động, giá trò này sẽ được nạp vào bộ đếm cho
chu kỳ kế tiếp.
Mode 5 : Hardware Triggered Strobe
Sau khi mode 5 được thiết lập, tín hiệu ngõ ra sẽ ở mức cao . Khi SCR được nạp, bộ đếm bắt đầu
làm việc . Khi bộ đếm giảm đến 0, tín hiệu ngõ ra sẽ chuyển sang mức thấp trong khoảng thời gian bằng 1
chu kỳ của tín hiệu xung vào,sau đó trở lại mức cao .
9.3.3Thảo chương cho Chanel-2
Đọc SCR của Channel-2 vào CX
mov al,10110110b ; Yêu cầu đọc 2 byte của SCR từ Channel-2
out 043h,al ; Đưa ra control port
in al,042h ; Lấy byte thứ nhất (Low byte)
mov cl,al ; Cất vào CL
in al,042h ; Lấy byte thứ hai (High byte)
mov ch,al ; Cất vào CH ---> CX = SCR value
Chỉ đònh tần số của Channel-2 là 512 Hz dạng xung vuông mode 3
mov dx,012h ; Double word trong DX,AX có giá trò 1193180
mov ax,034DCh
mov cx,512
div cx ;
mov bx,ax ; BX = 1193180/512
mov al,10110110b ; Yêu cầu đònh mode 3 cho channel-2
out 043h,al ; đồng thời nạp giá trò mới cho SCR
mov al,bl
out 042h,al ; Load low byte

mov al,bh
out 042h,al ; Load high byte
9.4NGUYÊN LÝ HOẠT ĐỘNG CỦA ĐỒNG HỒ HỆ THỐNG (SYSTEM CLOCK)
Ngõ ra của channel-0 của 8253-5 được nối liền với chip điều khiển interrupt 8259 . Mỗi xung nhòp
của channel-0 sẽ làm phát động interrupt cứng 08h .
Mỗi lần được gọi đến, interrupt 08h sẽ thực hiện các công việc chính sau :
- Tăng giá trò tại double word 0000:046C (Count tick) lên 1 ( giá trò này được cho bằng 0 lúc 0 giờ
)
- Gọi interrupt 01Ch
- Cho phép phát động interrupt cứng (Enable hard interrupt) bằng cách gởi ra cổng 020h giá trò
020h .
SCR của channel-0 được nạp giá trò 0FFFFh (65535) trong quá trình khởi động máy, do đó tần số
của ngõ ra sẽ là 1193180/65536 = 18.206 Hz .
Hệ điều hành sẽ căn cứ theo giá trò của Count tick để tính ra thời gian cho hệ thống .
Make-time proc near ; Make-time sẽ lấy giá trò
60
; hiện thời của Count tick
xor ax,ax ; nhân với 65535 rồi chia
mov es,ax ; cho 1193180 . Giá trò
mov ax,word ptr es:[046Ch] ; thu được chính là tổng
mov dx,word ptr es:[046Ch+2] ; số giây tính từ 0 giờ
; DX:AX = Time-count ; Từ đó tính ra giờ,phút
mov bx,ax ; giây và phần trăm giây .
mov cx,dx
; Time-count = tổng số giây tính từ 0 giờ *(1193180/65535)
; Nhân Time-count với 5 rồi đặt kết quả vào DX:AX
shl ax,1
rcl dx,1 ; Nhân 2
shl ax,1
rcl dx,1 ; Nhân 2

add ax,bx
adc dx,cx ; Cộng dồn 1+2*2=5
; Gọi giá trò thu được tại đây là (1)
; Chia kết quả cho 59659
;. Chú ý : 59659=1193180/20
mov cx,59659
div cx
mov bx,ax ; Cất kết quả vào BX
xor ax,ax ; DX:AX = số dư * 65535
div cx ;
mov dx,bx ;
; DX:AX = (1)*65535/59659
mov cx,200
div cx
; AX = (Time-count*65535/1193180)/2 = (số giây từ 0 giờ)/2
mov bl,100
sub bl,dl ; Kiểm tra số dư
; Nếu DL > 100 --> BL < 0 --> CF=1
; Nhân kết quả với 2 --> số giây tính từ 0 giờ
rcl ax,1 ; Nếu số dư của phép chia cho 200
mov dx,0 ; lớn hơn 100 thì cộng thêm 1 vào
rcl dx,1 ; kết quả

mov cx,60

; giây = (tổng số giây) mod 60
div cx ; Kết quả là tổng số phút
mov s-var,dl ; Số dư là giây
; phút = (tổng số phút) mod 60
div cl

mov m-var,ah ; Số dư là phút
mov h-var,al ; Kết quả là giờ
ret
61
Make-time endp
s-var db 0
m-var db 0
h-var db 0
9.5NGUYÊN LÝ ĐIỀU KHIỂN LOA TRONG IBM PC/XT/AT
Mỗi máy IBM PC/XT/AT được trang bò một cái loa nhỏ công suất khoảng 0,2W .
Loa được gắn vào ngõ ra của một mạch khuếch đại có đầu vào là ngõ ra của Channel-2 của 8253-5
. Mạch khuếch đại của loa được điều khiển bởi hai bit thấp của port 061h :
Nếu cả hai bit thấp của port 061h đều bò xóa thành 0 thì mạch khuếch đại không làm việc : loa sẽ
im . Nếu cả hai bit thấp của port 061h đều được dựng lên thì mạch khuếch đại sẽ làm việc : loa sẽ dao
động với tín hiệu của ngõ ra Channel-2.
Thí dụ :
Bật loa:
in al,061h
or al,00000011b
out 061h,al

Tắt loa:
in al,061h
and al,11111100b
out 061h,al
9.6NGUYÊN LÝ TẠO ÂM NHẠC TRÊN IBM PC/XT/AT
Để máy tính chơi được một đoạn nhạc, chúng ta cần phải tạo ra các note nhạc và duy trì chúng theo
từng trường độ riêng . Để tạo ra một note nhạc chúng ta chỉ cần đưa tần số tương ứng của note ấy ra loa .
Như vậy, điều cần thiết là chúng ta xác đònh được tần số của từng note nhạc trong các cung bậc (octave)
quen thuộc.

Tần số của các note thuộc octave 1 và octave 7
Octave 1 Octave 7
C = 32.70 C = 2093.00
C# = 34.65 C# = 2217.46
D = 36.71 D = 2349.32
D# = 38.89 D# = 2489.02
E = 41.20 E = 2637.02
F = 43.65 F = 2793.83
F# = 46.25 F# = 2959.96
G = 49 . G = 3135.96
G# = 51.91 G# = 3322.44
A = 55.00 A = 3520.00
A# = 58.27 A# = 3729.31
B = 61.74 B = 3951.07
Tần số của một note thuộc một octave gấp đôi tần số của note tương ứng thuộc octave ngay trước
nó.
Thí dụ :
Tần số của note DO ở octave 5 sẽ bằng tần số của note DO ở octave 6 chia 2 và bằng tần số của
note DO ở octave 4 nhân 2 .

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×