Đăng ký Đăng nhập
Trang chủ Công nghệ thông tin Thiết kế - Đồ họa Bài tập lớn môn học kiến trúc máy tính...

Tài liệu Bài tập lớn môn học kiến trúc máy tính

.DOC
30
1668
54

Mô tả:

Bài tập lớn môn học kiến trúc máy tính
Bài tập lớn môn học Kiến trúc máy tính LỜI MỞ ĐẦU Ngày nay với tốc độ phát triển mạnh mẽ của điện tử và công nghệ thông tin, hàng loạt các sản phẩm công nghệ cao đã ra đời. Những sản phẩm này đã góp phần nâng cao đời sống con người và đẩy mạnh cuộc cách mạng công nghệ thông tin.Máy tính điện tử ra đời vào đầu thập kỷ thứ tư của thế kỷ 20 và phát triển nhanh chóng, làm nên một cuộc cách mạng trong lĩnh vực tính toán và xử lý thông tin, mở ra một kỷ nguyên mới trong lịch sử nhân loại - Kỷ nguyên máy tính điện tử.Với những công việc mà con người không thể làm được nhưng chiếc máy tính lại xử lí một cách rất đơn giản và nhanh chóng.Có thể nói máy tính là những siêu công cụ,do con người chế tạo ra và để phục vụ cho chính cuộc sống của con người. Công nghệ tính toán cũng đã phát triển mạnh mẽ lên một tầm cao mới.Nó được sử dụng trong mọi ngành nghề mọi lĩnh vực và trở thành một phần không thể thiếu trong đời sống con người.Nhưng dù phát triển mạnh mẽ tới mức nào đi nữa thì nó vẫn dựa trên những phép toán cơ bản trong quá trình xử lý,thực thi các công việc…Vì vậy nghiên cứu tính toán thì phải nghiên cứu từ những phép xử lý cơ bản này. Ở bài tập lớn này nhóm 05 sẽ trình bày về phương pháp thiết kế một bộ nhân và bộ chia hai số 8bit được xây dựng bằng các cổng logic cơ bản như:AND,OR,XOR… Nội dung bài thảo luận bao gồm 03 phần chính: PHẦN 1: GIỚI THIỆU CHUNG VỀ KIẾN TRÚC MÁY TÍNH PHẦN 2:CƠ BẢN VỀ LÝ THUYẾT TÍNH TOÁN PHẦN 3: THIẾT KẾ BỘ NHÂN CHIA 8 BIT PHẦN 4:CHƯƠNG TRÌNH VÀ THỬ NGHIỆM PHẦN 1: GIỚI THIỆU CHUNG VỀ KIẾN TRÚC MÁY TÍNH Nhóm 05 1 Lớp K44KMT Bài tập lớn môn học Kiến trúc máy tính 1.1 Khái niệm kiến trúc máy tính Kiến trúc máy tính là thiết kế khái niệm và cấu trúc hoạt động căn bản của một hệ thống máy tính.Nó là một bản thiết kế (blueprint) mô tả có tính chất chức năng về các yêu cầu (đặc biệt là tốc độ và các kết nối tương hỗ) và những sự thi hành thiết kế cho những bộ phận khác nhau của một máy tính - tập trung chủ yếu vào việc CPU hoạt động nội tại như thế nào và truy cập các địa chỉ trong bộ nhớ bằng cách nào. Nó cũng có thể được định nghĩa như là khoa học và nghệ thuật lựa chọn và kết nối các thành phần phần cứng để tạo thành các máy tính đáp ứng được các mục đích về tính năng, hiệu suất và giá cả. 1.2 Phạm trù trong kiến trúc máy tính Kiến trúc máy tính bao gồm ít nhất ba phạm trù con chính: +) Kiến trúc tập lệnh (Instruction set architecture, ISA), là hình ảnh trừu tượng của một hệ thống tính toán được nhìn từ góc độ của một lập trình viên sử dụng ngôn ngữ máy (hay hợp ngữ), bao gồm tập lệnh, cách đánh địa chỉ bộ nhớ (memory address modes), các thanh ghi, và các định dạng địa chỉ và dữ liệu. +) Vi kiến trúc (Microarchitecture), còn gọi là Tổ chức máy tính (Computer organization) là một mô tả bậc thấp, cụ thể hơn về hệ thống. Mô tả này nói về các bộ phận cấu thành của hệ thống được kết nối với nhau như thế nào và chúng hoạt động tương hỗ như thể nào để thực hiện kiến trúc tập lệnh. Ví dụ, kích thước bộ đệm cache của một máy tính là một đặc điểm về tổ chức máy tính mà thường không liên quan đến kiến trúc tập lệnh. +)Thiết kế hệ thống (System Design) bao gồm tất cả các thành phần phần cứng khác bên trong một hệ thống tính toán chẳng hạn như các đường kết nối hệ thống bus (máy tính) và witch,các bộ điều khiển bộ nhớ (memory controller), các cây phả hệ bộ nhớ, các cơ chế CPU off-load như Direct memory access (truy nhập bộ nhớ trực tiếp),các vấn đề như đa xử lý (multi-processing)… PHẦN 2:CƠ BẢN VỀ LÝ THUYẾT TÍNH TOÁN Nhóm 05 2 Lớp K44KMT Bài tập lớn môn học Kiến trúc máy tính 2.1: Cơ bản về lý thuyết tính toán 2.1.1 Các đối tượng trong xử lý tin học Là những phần tử thuộc vào những tập hợp vô hạn đếm được và luôn được biểu diễn dưới một dạng nào đó.VD:số nguyên,số thập phân… 2.1.2 Chức năng của tính toán Một tính toán được biểu diễn một cách hệ thông như sau: Dữ liệu vào Dữ liệu ra Tính toán Cung cấp một hoặc nhiều dữ liệu ở đầu vào bộ tính toán thì ở đầu ra ta nhận được một hoặc nhiều dữ liệu tương ứng. 2.1.3 Cấu trúc phép toán Thực hiện các phép toán sơ cấp (elementary operation) trong một khoảng thời gian hữu hạn.Mỗi phép toán,giả thiết không chia cắt nhỏ hơn được,được chọn trong một tập hợp hữu hạn các phép toán là một phần mô tả cấu trúc máy. Lần lượt thực hiện phép toán sơ cấp theo một thứ tự xác định trước,tạo thành một chương trình(program) là một phần mô tả cấu trúc này. Một dãy các phép toán sơ cấp được máy thực hiện liên tiếp được gọi là tính toán(computation) 2.1.4 Mô hình tính toán (T) Là sự mô tả tất cả các phép toán sơ cấp có thể được thực hiện trên những đối tựng nào đó,cách tác động lên mỗi một trong chúng như thế nào,và mô tả cách thức chương trình được thực hiện(execution) trên máy. 2.2: Các phép toán thao tác 2.2.1: Các toán tử thao tác a, Phép AND Là một toán tử hai ngôi,có nhiệm vụ tính toán trên từng bit với hai chuỗi có cùng độ dài để tạo ra một chuỗi bit mới có cùng độ dài với hai chuỗi ban đầu.Trên mỗi cặp bit tương ứng nhau của hai toán hạng,phép toán AND sẽ trả về 1 nếu hai toán hạng là 1,còn tất cả các trường hợp khác AND sẽ tạo ra bit 0 VD :Thực hiện phép toán AND với hai số nhị phân 1001 và 1100 1001 AND 1100 = 1000 b, Phép OR Nhóm 05 3 Lớp K44KMT Bài tập lớn môn học Kiến trúc máy tính Là một toán tử hai ngôi,có nhiệm vụ tính toán trên từng bit với hai chuỗi có cùng độ dài để tạo ra một chuỗi bit mới có cùng độ dài với hai chuỗi ban đầu.Trên mỗi cặp bit tương ứng nhau của hai toán hạng,phép toán OR sẽ trả về 1 nếu một trong hai toán hạng là 1,còn tất cả các trường hợp khác OR sẽ tạo ra bit 0 VD :Thực hiện phép toán OR với hai số nhị phân 1001 và 1100 1001 OR 1100 = 1101 c, Phép XOR Là một toán tử hai ngôi,có nhiệm vụ tính toán trên từng bit với hai chuỗi có cùng độ dài để tạo ra một chuỗi bit mới có cùng độ dài với hai chuỗi ban đầu.Tuy nhiên trên mỗi cặp bit tương ứng nhau của hai toán hạng,phép toán XOR sẽ trả về 1 nếu chỉ một trong hai toán hạng là 1,còn tất cả các trường hợp khác XOR sẽ tạo ra bit 0 VD :Thực hiện phép toán XOR với hai số nhị phân 1001 và 1100 1001 XOR 1100 = 0101 d, Phép NOT Phép toán NOT còn được gọi là toán tử lấy phần bù(complement) là một toán tử một ngôi có nhiệm vụ phủ định luận lí từng bit của toán hạng nó.Tức là đảo 1 thành 0 và 0 thành 1 VD :Thực hiện phép toán XOR với hai số nhị phân 1001 NOT 1001 = 0110 2.2.2 Dịch chuyển và quay bit a, Dịch chuyển không nhớ Gồm có dịch trái và dịch phải,khi dịch chuyển các bit vượt qua phạm vi lưu trữ sẽ mất và tự động thêm bit 0 vào cuối dãy bit Dịch các bit sang trái n vị trí Các bit vượt quá phạm vi lưu trữ sẽ mất Tự động thêm bit 0 vào cuối dãy bit X=3,n=2 00001100 Với dịch phải tương tự Chú ý:ta giữ lại bit đầu tiên làm bit dấu của số b,Dịch chuyển có nhớ Nhóm 05 4 Lớp K44KMT Bài tập lớn môn học Kiến trúc máy tính Gồm dịch chuyển trái và dịch chuyển phải,khi dịch chuyển sẽ có một bit gọi là bit nhớ,bit nhớ sẽ tự động thêm vào cuối dãy bit ,các bit vượt qua phạm vi lưu trữ sẽ biến mất. Dịch các bit sang trái n vị trí Các bit vượt quá phạm vi lưu trữ sẽ mất Tự động thêm bit nhớ vào cuối dãy bit X=3,n=2 00001111 Dịch phải tương tự trên Chú ý:ta giữ bit đầu tiên làm bit dấu 2.3 Các phép tính trên hệ nhị phân 2.3.1 Phép cộng Để cộng hai số nhị phân,chúng ta cần phải nhớ các nguyên tắc sau: 0+0=0 0+1=1 1+0=1 1+1=10 (Nhớ 1 để cộng vào hàng trước đó,tương tự như phép cộng số thập phân) Bây giờ ta tiến hành cộng hai số nhị phân 1000111(số 71 trong hệ thập phân)và số 11110(số 30 trong hệ thập phân) Cột 71= 30= + 101= 1 1 2 0 3 0 1 4 0 1 5 1 1 6 1 1 7 1 0 1 1 0 0 1 0 1 Ta tiến hành cộng từ phải qua trái như sau: Bước 1 2 3 4 5 6 7 Nhóm 05 Tại cột 7 6 5 4 3 2 1 Thực hiện phép tính 1+0=1 1+1=10(viết 0,nhớ 1) 1+1=10,cộng thêm 1(nhớ ở bước 2)là 11, viết 1 nhớ 1 0+1=1,cộng thêm 1(nhớ ở bước 3)là 10,viết 0 nhớ 1 0+1=1,cộng thêm 1 (nhớ ở bước 4)là 10 viết 0 nhớ 1 0+1(nhớ ở bước 5)=1 Lấy 1 ở trên xuống 5 Lớp K44KMT Bài tập lớn môn học Kiến trúc máy tính Và kết quả chúng ta được là:1000111+11110=1100101(71+30=101) 2.3.2 Phép trừ Để trừ hai số nhị phân,ta cần nhớ các nguyên tắc sau: 0-0=0 0-1=-1(mượn) 1-0=1 1-1=0 -1-1=-10 Thực hiên phép trừ 51-28=23 Cột 51= 28= 23= 6 1 0 5 1 1 4 0 1 3 0 1 2 1 0 1 1 0 0 1 0 1 1 1 Ta tiến hành trừ từ phải sang trái như sau Bước 1 2 3 4 5 6 Tại cột 1 2 3 4 5 6 Thực hiện phép tính 1-0=1 1-0=1 0-1=-1(Viết 1 và nhớ -1) 0-1=-1,cộng thêm -1 nhớ ở bước 3 là -10 viết 0 nhớ -1 1-1=0,cộng với -1 nhớ ở bước 4 là -1,viết 1 nhớ -1 1+-1(nhớ ở bước 5)=0 Vậy 110011-11100=010111(tương ứng với 51-28=23) Số bù 1 :Khi ta đảo tất cả các bit có trong số nhị phân(đổi 1 thành 0 và ngược lại),ta có số bù 1 của số nhị phân đó.Số bù 1 thương được dùng để biểu diễn số âm trong máy tính.Khi đó,bit cực trái(bit đầu tiên ở bên trái)là bit đánh dấu với quy ước:Nếu bit dấu là 0 thì số là số dương,nếu bit dấu là số 1 thì số là số âm. Ví dụ:Số 28 trong hệ nhị phân(với mẫu 8bit)là:00011100.Vậy số bù 1 sẽ là 11100011. Để thực hiện phép trừ với số nhị phân,ta có thể thực hiện phép cộng với số bù 1 của số nhị phân đó. Ví dụ:Thực hiên phép trừ 2-5=-3 Ta có 210=0000 00102,510=0000 01012,số bù 1 của 5 là 1111 1010 Vậy 2-5=0000 0010+1111 1010=1111 1100 Số bù 2 :Số bù 2 có được là do đảo tất cả các bit có trong số nhị phân(đổi 1 thành 0 và 0 thành 1)rồi cộng thêm 1 vào kết quả.Hay nói cách khác số bù 2 là số bù 1 công thêm 1.số bù 2 cũng được dùng để biểu diễn số âm.Khi đó bit cực trái(bit đầu tiên ở Nhóm 05 6 Lớp K44KMT Bài tập lớn môn học Kiến trúc máy tính bên trái) là bit đánh dấu với quy ước:Nếu bit dấu là 0 thì số là số dương,nếu bit dấu là 1 thì là số âm. Ví dụ thực hiên phép trừ 2-5=-3 Ta có 210=0000 00102 510=0000 01012.Số bù 1 của 5 là 1111 1010,số bù 2 của 5 là:1111 1011 Vậy 2-5=0000 0010 + 1111 1011 Cột 8 7 6 5 4 3 2 1 2= 0 0 0 0 0 0 1 0 -5= 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 + -3= Ta thực hiện phếp trừ theo các bước sau: Bước Tại cột Thực hiện phép tính 1 1 0+1=1 2 2 1+1=10,viết 0 nhớ 1 3 3 0+0=0,cộng thêm 1 nhớ ở bước 2 vào là 1 4 4 0+1=1 5 5 0+1=1 6 6 0+1=1 7 7 0+1=1 8 8 0+1=1 Ta được kết quả 1111 1101,là số bù 2 của -3 2.3.3 Phép nhân Phép tính nhân trong hệ nhị phân cũng tương tự như phương pháp làm trong hệ thập phân.Hai số A và B được nhân với nhau bởi tích số các kí số 0 và 1 của A và B.Với mỗi con số ở B,tích của nó với 1 số trong A được tính và viết xuống một hàng mới,mỗi hàng mới phải dịch chuyển vị trí sang bên trái 1 bit.Tổng của các tích cục bộ này cho ta kết quả tích số cuối cùng. Ví dụ:9x6=54 (1001x110=110110) Ta thực hiện phép nhân như sau: 1 0 1 0 (số nhân) X 1 1 0 (số bị nhân) +0 0 0 0 + 1010 + 1010 Nhóm 05 7 Lớp K44KMT Bài tập lớn môn học Kiến trúc máy tính =1 1 1 1 0 0 Xét bit dầu tiên của số bị nhân.Nếu bằng 0 thì ta được kết quả là 0 để thực hiện phép cộng.nếu băng 1 thì ta được kết quả là số nhân để thực hiện phép cộng. Ở phép tính trên.bit đầu tiên của số bị nhân bằng 0.ta được kết quả đầu tiên 0000,xét tiếp bit thứ 2.bằng 1 nên kết quả là số nhân 1010.Dịch trái bit thứ 2 sang 1 bit.tiếp bit thứ 3 của số bị nhân bằng 1 nên kết quả nhận được là 1010 dịch trái tiếp kết quả sang 1 bit so với kết quả thứ 2.Cộng 3 kết quả vừa nhận được lại ta sẽ thu được kết quả của phép nhân 2.3.4 Phép chia Phép chia nhị phân được thực hiện như chia thập phân. PHẦN 3 : THIẾT KẾ BỘ NHÂN CHIA 8 BIT 3.1 Thiết kế bộ cộng 3.1.1 Mạch cộng nửa Gọi A là số được cộng B là số cộng S là tổng của A và B C là số nhớ ra từ phép cộng Trước hết để đơn giản, xét mạch cộng nhị phân 1 bit Nhóm 05 8 Lớp K44KMT Bài tập lớn môn học Kiến trúc máy tính Với tổ hợp 4 trạng thái logic của A và B thì trạng thái logic ngõ ra S và C như sau Hình .3.1 Cộng nửa Rút gọn biểu thức logic ta có: S=AB+AB C=AB Nhận thấy S là ngõ ra của cổng EXOR 2 ngõ vào A và B; còn C là ngõ ra của cổng AND Từ đây vẽ được cấu trúc logic của mạch Hình 3.2 Mạch cộng nửa Đây là mạch cộng nửa hay cộng chưa đủ (haft adder : HA) vì chưa có số nhớ ban đầu của phép cộng trước đó. 3.1.2 Mạch cộng đủ Bây giờ giả sử mạch đã thực hiện phép cộng lần đầu rồi nên được tổng là S0 và số nhớ C0, nếu tiếp tục cộng lần 2 khi trạng thái logic của A và B thay đổi thì S không chỉ là tổng của A và B mà gồm cả C0 trước đó. Khi này ta có mạch cộng đủ: full adder (FA) Nhóm 05 9 Lớp K44KMT Bài tập lớn môn học Kiến trúc máy tính Hình 3.3 Cộng đủ Rút gọn biểu thức ta được S=(AB+AB)Ci+(AB+AB)Ci C=AB+(AB+AB)Ci Cấu trúc của mạch logic sẽ là : Hình 3.4 Mạch cộng đủ Nhận thấy rằng : FA thực ra bao gồm trong nó 2 HA và cổng OR ở ngõ ra cho số nhớ C. Cả 2 mạch HA và FA ở trên mới chỉ làm phép cộng 1 bit 3.1.3 cộng nhiều bit a Cộng song song Bây giờ nếu 2 số cộng có nhiều bit hơn thì cách cộng cũng sẽ tương tự : trước hết cộng 2 bit LSB để cho bit tổng (LSB). Số nhớ được đưa tới để cộng chung với 2 bit kế tiếp bit LSB để cho bit tổng ở hàng kế tiếp cho đến phép cộng cuối cùng giữa 2 bit MSB để được bit tổng ở hàng đó, số nhớ khi này trở thành bit LSB của tổng Hình sau sẽ minh hoạ rõ ràng hơn mạch cộng nhiều bit (4 bit) Nhóm 05 10 Lớp K44KMT Bài tập lớn môn học Kiến trúc máy tính Hình .3.5 Cộng 4 bit Đây là một mạch cộng song song vì các hàng được cộng cùng một lúc tuy nhiên như cấu trúc mạch ở trên thì các bit ra của tổng không phải là đồng thời bởi vì các phép cộng ở các bit cao thì chậm hơn do phải chờ bit nhớ ở phép cộng trước đưa tới. Tức là đã có trì hoãn làm giảm tính đồng bộ của mạch. Nếu thêm vào mạch cho phép cung cấp sẵn các bit nhớ để phục vụ cho các phép cộng ở các hàng được cùng lúc thì sẽ khắc phục được điểm này. Với công nghệ tích hợp cao, việc thêm mạch cung cấp sẵn các bit nhớ trở nên dễ dàng hơn khi đó mạch trở thành mạch cộng có số nhớ nhìn trước. b Cộng nối tiếp Ngoài cách cộng song song như đã thấy ở trên, còn một dạng mạch cộng số nhiều bit nữa gọi là mạch cộng nối tiếp. Khi này 2 bit LSB của các số được cộng trước, bit LSB của tầng được đưa ra 1 ghi dịch còn số nhớ sẽ quay trở về cộng chung với 2 bit kế tiếp bit LSB và cứ vậy cho đến 2 bit cuối cùng được cộng. Mạch ghi dịch ngõ ra dịch chuyển sang phải qua mỗi lần cộng sẽ cho ra kết quả cộng số nhớ cuối cùng trở thành bit MSB của tổng ra. Rõ ràng mạch thực hiện phép tính chậm hơn so với cộng song song, nó cũng cần 1 xung nhịp để giữ cho các mạch làm việc động bộ Hình.3.6 Mạch cộng 4 bit nối tiếp 3.2 Thiết kế bộ trừ nửa và trừ đủ Nhóm 05 11 Lớp K44KMT Bài tập lớn môn học Kiến trúc máy tính 3.2.1 Trừ nửa và trừ đủ Cũng gồm 2 loại mạch trừ nửa hay chưa đủ : haft subtractor (HS) và trừ đủ hay còn gọi là trừ bán phần : full subtractor (FS) (khi này cần bit mượn Bi trước tham gia vào phép tính).Phép trừ thực ra là phép cộng với số âm. Để có số âm của 1 số ta lấy bù 1 của số đó, còn khi thực hiện mạch thì đó là cổng đảo Hình .3.7 là mạch trừ HS và bên cạnh là bảng trạng thái Hình .3.7 Mạch trừ nửa, bảng trạng thái và mạch logic Còn hình .3.8 là mạch trừ FS cùng bảng trạng thái hoạt động ở bên cạnh hình .3.8 Mạch trừ đủ Về cấu trúc mạch trừ cũng tương tự mạch cộng chỉ khác là số bị trừ B cần phải qua cổng đảo khi thực hiện AND với số trừ A để cho số mượn R. Mạch trừ FS cũng gồm 2 mạch trừ HS và cổng OR ở ngõ ra cho số mượn B0 Hình .3.9 Mạch trừ hết 3.2.2 Mạch trừ nhiều bit Nhóm 05 12 Lớp K44KMT Bài tập lớn môn học Kiến trúc máy tính Với mạch trừ nhị phân nhiều bit, cũng có thể thực hiện song song các mạch cộng FS từng bit nhưng các bit của số bị trừ cần được đảo, số nhớ của tầng cuối cần đem về bit nhớ ban đầu của tầng đầu. Hình minh hoạ cho mạch trừ nhị phân 4 bit Hình .3.10a Mạch trừ 4 bit song song Hình .3.10b Trừ 4 bit nối tiếp 3.3 Mạch cộng trừ kết hợp Bây giờ nếu thêm vào một số cổng logic cần thiết ta đã có 1 mạch có thể cộng hay trừ tuỳ theo ngõ vào điều khiển CT Khi CT = 0, các cổng EXOR có 1 ngõ ở thấp nên cho số B qua không bị đảo, tức là mạch thực hiện phép cộng Khi CT = 1, các cổng EXOR có 1 ngõ ở cao nên hoạt động như 1 cổng NOT, số B bị đảo, khi này mạch thực hiện phép cộng A + (-B) tức là phép trừ. Co3 là bit LSB của tổng được vòng trở lại (qua cổng AND) về Ci0; sẽ cho phép cộng nhiều bit. Hình .3.11 Mạch cộng trừ dùng bù 1 Nhóm 05 13 Lớp K44KMT Bài tập lớn môn học Kiến trúc máy tính Ngoài cách dùng bù 1, ta cũng có thể dùng bù 2 (lấy bù 1 rồi cộng thêm 1) để thực hiện phép toán trừ nhị phân kể cả số có dấu. Cách này được sử dụng phổ biến ở VXL và máy tính. Hình 2.3.22 là mạch cộng trừ 2 số 4 bit dùng bù 2. Để ý là mạch khá giống như nó ở cách dùng bù 1 nhưng bit nhớ ra cuối cùng không cần đem về tầng đầu. Tổng hay hiệu ra ở dạng bù 2, muốn lấy đúng kết quả thì phải chuyển trở lại. Khi đó mạch cộng trừ nhị phân 4 bit dùng bù 2 sẽ như sau : Hình .3.12 Mạch cộng trừ dùng bù 2 3.4 Cộng trừ hai số BCD 3.4.1 Cộng 2 số BCD Số BCD thực ra cũng là số nhị phân n bit nhưng chỉ có 10 tổ hợp trạng thái từ 0000 đến 1001 (biểu thị số thập phân tương ứng là từ 0 đến 9) nên cách cộng cũng tương tự như cổng số nhị phân nhiều bit. Tuy nhiên khi tổng vượt quá 1001 thì tức là tổng đó không còn là số BCD nữa, do đó ta phải cộng tổng với 0110 (số 610) để cho tổng mới là số BCD đồng thời số nhớ chính là hàng cao hơn của tổng. Ví dụ như cộng 2 số BCD sau: Hình .3.13 Mạch cộng 2 số BCD 1 bit Nhóm 05 14 Lớp K44KMT Bài tập lớn môn học Kiến trúc máy tính 2 số cần cộng là A3A2A1A0 và B3B2B1B0 cho tổng là C3S4S3S2S1 (C3 là hàng chục nếu có). Nếu tổng đầu vượt quá 9 ( từ 10 đến 18) thì các cổng logic sẽ cho phép xác định hàng chục đồng thời tổng này phải được cộng thêm 6 ở tầng 74LS83 thứ 2 để cho tổng cuối cùng ở dạng BCD. Nếu tổng không vượt quá 9 (vẫn là số BCD) thì tổng hàng chục không có nên 74LS83 thứ 2 sẽ cộng tổng này với 0, tổng ra không có gì thay đổi. Ta có thể ghép nhiều mạch cộng ở trên để có mạch cộng 2 số BCD nhiều bit, khi đó chỉ việc nối ngõ ra hàng chục của tầng đầu tới ngõ vào số nhớ Ci của tầng sau là được. 3.4.2 Trừ 2 số BCD Với phép trừ BCD, ta phải lấy bù 9 của số trừ rồi mới làm phép cộng lại với số bị trừ. Lấy bù 9 của 1 số tức là lấy 9 trừ đi số đó. Ở chương 1 có nói rõ hơn về phép trừ BCD Ví dụ về phép trừ BCD : 9 – 5 và 2 – 6 Hình.3.14 Mạch trừ 2 số BCD 1 bit 3.5 Mạch nhân 3.5.1 Nguyên tắc thiết kế Nguyên tắc của phép nhân số nhị phân là thức hiện phép so sánh một phần của số bị nhân (bit đầu tiên của số bị nhân với số nhân)với số nhân,nếu số bị nhân bằng 1 thì ta thực hiện phép cộng với số nhân,nếu số bị nhân bằng 0 thì thực hiện phép cộng đối Nhóm 05 15 Lớp K44KMT Bài tập lớn môn học Kiến trúc máy tính với số 0.Với kết quả của phép so sánh thứ 2 sẽ dịch trái một bit so với kết quả của phép so sánh đầu tiên.Sau đó tiếp tục dịch trái phần còn lại của số bị nhân một bit(hoặc dịch phải số nhân một bit)rồi tiếp tục thực hiện phép so sánh như trên.Công việc được lặp lại cho đến khi chấm dứt. Phép nhân có 2 thừa số được lưu trong 8 bít và kết quả được lưu trong 16 bit nên không bao giờ bị tràn bộ nhớ . Với phép nhân có dấu ta có thể sử dụng giải thuật Booth hoặc là sử dụng thuật toán nhân không dấu và sử dụng bộ hiệu chỉnh dấu để hiệu chỉnh. H3.15: Sơ đồ huật toán nhân H3.16: Sơ đồ phép nhân Nhóm 05 16 Lớp K44KMT Bài tập lớn môn học Kiến trúc máy tính H3.17: Giải thuật Booth 3.5.2 Mạch nhân cơ bản Việc thực hiện bài toán nhân có thể xem như gồm hai bước: -Tính các tích từng phần: thực hiện bởi các cổng AND - Tính tổng của các tích từng phần: Áp dụng bài toán tổng chuỗi số(Hình ) Nhóm 05 17 Lớp K44KMT Bài tập lớn môn học Kiến trúc máy tính Y8 Y7 Y6 Y5 Y4 Y3 Y2 Y1 . . . . X8 X7 X6 X5 X4 X3 X2 X1 . . . P27 P18 FA . FA FA . FA FA FA . FA FA . . FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA P77 FA FA FA S1 S1 FA FA FA FA S12 FA FA S11 FA S10 FA FA S9 FA S8 FA FA S7 S6 S5 ... S4 S3 S2 S1 Hình 3.18 Sơ đồ mạch nhân 3.5.3 Mạch nhân nối tiếp-song song đơn giản Hình 3.19Mạch nhân nối tiếp-song song đơn giản Trong mạch này, một trong hai số được đưa nối tiếp vào mạch (trong trường hợp này là số bị nhân) và số còn lại đưa song song vào mạch. - Số nhân (b4b3b2b1) đưa song song vào mạch qua các cổng AND đồng thời kiểm soát các cổng này: ứng với bit 1 số bị nhân qua mạch để tới mạch cộng (cổng 2 và 4); ứng với bit 0 ngã ra cổng AND bằng không (cổng 1 và 3) Nhóm 05 18 Lớp K44KMT Bài tập lớn môn học Kiến trúc máy tính Số bị nhân đưa nối tiếp vào mạch theo thứ tự từ bit LSB. Các FF D có tác dụng dịch kết quả của phép nhân (là các tích từng phần) trước khi đưa vào mạch cộng để cộng các tích từng phần này. Thí dụ 15 : Xem bài toán nhân 10x14. Số nhân là 1010 (1010) và số bị nhân là 1110 (1410). Quá trình nhân giải thích như sau: - A B C D Output P8 0 0 0 0 1 P7 0 0 0 1 0 P6 0 0 0 1 0 P5 0 1 0 1 0 P4 0 1 0 0 1 P3 0 1 0 0 1 P2 0 0 0 0 0 P1 0 0 0 0 0 100011002=14010 Có thể thấy rằng ngã ra A luôn luôn bằng 0 vì bit LSB của số nhân = 0. Ngã ra B có giá trị của số bị nhân được làm trễ 1 bit (1 xung đồng hồ). Ngã ra C được làm trễ 2 bit và luôn bằng 0 (Giống như A). Ngã ra D giống như B nhưng trễ 3 bit. Điều này có thể so sánh với bài toán trên giấy Số bị nhân 1110 Số nhân 1010 A 0000 B + 11100 C + 000000 D + 1110000 Tích 10001100 Muốn không sử dụng mạch cộng số nhiều bit, người ta dùng mạch (H 3.20) H 3.20 cộng số ngã ra 3 và ngã ra 4 bị trễ 1 bit Mạch (H 3.20) cần (n-1) mạch cộng và mạch trễ (FF D) cho số nhân n bit. Các cổng AND cho phép các bit của số bị nhân đi qua khi số nhân là 1, số bị nhân (với số Nhóm 05 19 Lớp K44KMT Bài tập lớn môn học Kiến trúc máy tính bit bất kỳ) được cho vào mạch nối tiếp với bit LSB vào đầu tiên. Ngã ra cổng 4 sau 4 xung Clock là 1110. Ngã ra cổng 3 luôn luôn bằng 0. Mạch cộng A cộng số ngã ra 3 và ngã ra 4 bị trễ 1 bit: 0000 + 11100 11100 Tương tự mạch cộng B cộng số bị nhân với kết quả ở A được làm trễ 1 bit: 1110 +111000 1000110 Và mạch cộng C 0000 + 10001100 10001100 Lưu ý là ở mạch (H 3.20) kết quả cho ở ngã ra mạch cộng C với bit LSB ra đầu tiên, tuy nhiên mạch này chưa quan tâm tới số nhớ. Mạch (H 3.21) cho kết quả với số nhớ . H3.21) cho kết quả với số nhớ Và (H 3.22) là một mạch thực tế dùng ghi dịch 4 bit có ngã vào/ra song song, một mạch cộng 4 bit và một chip 4 cổng AND 2 ngã vào để thực hiện bài toán nhân. Nhóm 05 20 Lớp K44KMT
- Xem thêm -

Tài liệu liên quan