1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thiết kế khối số học số thực dấu phẩy động

41 1,7K 18

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 41
Dung lượng 569,69 KB

Nội dung

Nó là một phần của một hệ thống máy tính được thiết kế đặc biệt để thực hiện các hoạt động tính toán trên các số thực dấu chấm động.. Các số thực dấu phẩy động được chuẩn hóa theo chuẩn

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THÔNG

BÀI TẬP LỚN MÔN THIẾT KẾ TỔNG HỢP HỆ THÔNG SỐ

ĐỀ TÀI: Thiết kế khối số học số thực dấu phẩy động

Giáo viên hướng dẫn : TS Võ Lê Cường.

Nhóm 20:

Sinh viên Đinh Văn Nam 20091814 ĐTVT 01 K54

Nguyễn Mạnh Trung 20115803 CNĐT-TT 1-k56

Hà Nội, 12/2014

Trang 2

Mục Lục.

Mục Lục ………1

Danh mục hình ảnh ……… 2

Lời cảm ơn……… 3

Tóm tắt ………4

Chương 1 Giới thiệu……… 5

1.1 Giới thiệu………5

1.2 FPU là gì? ……… 5

1.3 Tiêu chuẩn IEEE754……… 7

1.4 Giới thiệu đề tài……… 8

1.5 Kết luận chương ………9

Chương 2 Lý Thuyết……… 10

2.1 Giới thiệu ……… 10

2.2 Số thực dấu phẩy động……… 10

2.3 Biểu diễn số thực dấu chấm động thực hiện trong dự án……….11

2.3.1 Biểu diễn số bù 2 của số nhi phân 4 bít ………11

a. Phần phân số F(fraction) ……… 12

b. Phần số mũ E(exponent)……….13

2.4 Nhân hai số thực dấu phẩy động ………13

2.5 Cộng số thực dấu phẩy động……….18

2.6 Trừ hai số thực dấu phẩy động ………19

2.7Kết luận chương………21

Chương 3 Mô phỏng và kết quả……… 22

Trang 3

3.1 Giới thiệu chương………22

3.2 Sơ đồ khối………23

3.3 Kết quả mô phỏng………24

3.3.1 Kết quả mô phỏng trên quartus………24

3.3.2 Kết quả mô phỏng trên Modulesim……… 25

3.4 Kết luận chương……… 29

Chương 4 Kết Luận………30

Tài liệu tham khảo………32

Phụ Lục ………33

Danh mục hình ảnh, bảng biểu.

Hình 2.1 Thuật toán nhân số thực dấu phẩy động

Trang 4

Hình 2.2 Thuật toán nhân hai số nguyên không dấu

Hình 2.3 Thuật toán cộng số thực dấu phẩy động

Hình 2.4 Thuật toán trừ số thực dấu phẩy động

Hình 3.1 Sơ đồ khối của chương trình

Bảng 3.1 Mô tả chân dữ liệu trong sơ đồ khối

Bảng 3.2 Bảng mô tả giá trị của mã phép toán

Bảng 3.3 Bảng chuyển đổi số nhị phân 4 bít hiển thị trên led 7 thanh.Hình 3.1 Kết quả mô phỏng thành công trên quartus

Hình 3.4 Sơ đồ luồng dữ liệu dataflow

Trang 5

Chúng tôi thực sự biết ơn đến tất cả bạn bè của chúng tôi, những người đã có những góp ý quý báu trong thời gian chúng tôi làm dự án Chúng tôi cũng phải thừa nhậncác nguồn tài nguyên học tập mà chúng tôi đã nhận được từ nhiều nguồn khác nhau.

Chúng tôi xin gửi lời cảm ơn tới gia đình, chính là nguồn lực động viên chúng tôi phấn đấu trong học tập và cuộc sống

Tuy có nhiều cố gắng trong quá trình học tập cũng như thời gian làm dự án nhưng không thể tránh khỏi những thiếu sót, tôi rất mong được sự góp ý quý báu của tất cả các thầy cô giáo và các bạn để dự án của chúng tôi được hoàn thiện

Chúng tôi xin chân thành cảm ơn!!

Hà Nội, ngày 4 tháng 5 năm 2015.

Sinh Viên

Đinh Văn Nam

Nguyễn Mạnh Trung

Tóm tắt.

Trang 6

Khối số thực dấu phẩy động rất thông dụng trong bộ đồng xử lý toán học Nó là một phần của một hệ thống máy tính được thiết kế đặc biệt để thực hiện các hoạt động tính toán trên các số thực dấu chấm động Một số hoạt động tính toán trên khối FPU như: cộng, trừ, nhân, chia Mục đích là để xây dựng một CPU hiệu quả để thực hiện các chức năng cơ bản cũng như chức năng siêu việt với việc làm giảm độ phức tạp của logic được

sử dụng làm giảm hoặc ít nhất giới hạn thời gian tương đương như dòng x87 và làm giảm

bộ nhớ càng nhiều càng tốt Để thực hiện các chức năng như: cộng, trừ, nhân , chia… các số thực dấu phẩy động phải chuyển đổi dữ liệu sang định dạng chuẩn IEEE 754 Tất

cả thuật toán trên đã được đồng bộ hóa và đánh giá theo môi trường Spartan 3E

Synthesis Tất cả các chức năng được xây dựng bởi các thuật toán có hiệu quả với một số thay đổi kết hợp ở cuối trong phạm vi cho phép

Chương 1 Giới thiệu.

1.1 Giới thiệu chương.

Trang 7

Khối số thực dấu phẩy động rất thông dụng trong bộ đồng xử lý toán học Nó đượcthiết kế để thực hiện các hoạt động tính toán trên số thực dấu phẩy động Một số hoạt động tính toán trên khối FPU như: cộng, trừ, nhân, chia FPU cũng có thực hiện một số hoạt động tính toán khác như: hàm mũ, lượng giác Các số thực dấu phẩy động được chuẩn hóa theo chuẩn IEE754.

Ở chương này chúng tôi giới thiệu những nội dung sau:

có thể lưu trên các phần cứng bổ sung của một FPU nhưng chậm đáng kể Thứ hai, nó có thể sử dụng một thêm một FPU được hoàn toàn tách biệt với CPU, nó chỉ cần thiết để tăng tốc độ tính toán Còn lại là sử dụng tích hợp FPU có trong hệ thống

FPU được thiết kế bởi với độ chính xác theo tiêu chuẩn IEEE754 Nó không chỉ giải quyết các phép tính cơ bản với số thực dấu phẩy động như: cộng, trừ, nhân, chia mà còn có thể xử lý các hoạt động như dịch, xác định căn bậc và các chức năng siêu việt nhưsin, cos

1.3 Tiêu chuẩn IEEE754.

IEEE754 là tiêu chuẩn công nghệ được thành lập bởi tổ chức IEEE754 và nó được

sử dụng rộng rãi trong việc tính toán số thực dấu phẩy động, theo sau bởi nhiều phần

Trang 8

cứng( CPU và FPU) và thực hiện trên phần mềm Định dạng một số thực dấu phẩy động

chiếm 32 bit trong bộ nhớ của máy tính Phiên bản hiện tại, IEEE 754-2008 ra mắt vào

tháng Tám năm 2008 Trong phiên bản IEEE754-2008 Trong IEEE 754-2008, 32-bit với

2 định dạng chính thức là: single precision hoặc binary32 Các tiêu chuẩn IEEE754 quy định một số tực dấu phẩy động là có bít dấu hiệu đó có chiều dài 1 bít,một số mũ có chiềudài 8 bit và phần định trị có chiều dài 24 bit trong đó 23 bit là được lưu trữ một cách rõ ràng và 1bít là tiềm ẩn

Bít dấu xác định dấu của số thực dấu chấm động Bằng 0 thì số mang dấu dương, bằng 1 số mang dấu âm Phần mũ sử dụng số nguyên 8 bít có giá trị từ -128 đến 127 hoặcdùng số nguyên không âm có giá trị từ 0 đến 255 Phần định trị chứa 23 bít phần bên phảicủa điểm nhị phân và bít tiềm ẩn(nằm ở bên trái điểm nhị phân) Với số có giá trị bằng 1 thì tất cả các bít phần mũ đều bằng 0 Như vậy chỉ có 23 bit xuất hiện ở phần định trị trong các định dạng bộ nhớ nhưng tổng cộng độ chính xác là 24 bit

Trang 9

 Định dạng trao đổi là một chuỗi bít (mã hóa) được sử dụng để trao đổi một

dữ liệu số thực dấu phẩy động trong một hình thức thu gọn và hiệu quả

 Quy tắc làm tròn là giá trị của số thực đấu phẩy động phải được đưa về giá trị phù hợp khi làm phép tính số học

Trường hợp ngoại lệ là chỉ ra các trường hợp đặc biệt (như chia cho số không, tràn bít trên, tràn bít dưới, vv) xảy ra trong quá trình thực hiện phép tính

Trong năm trường hợp ngoại lệ Tất các giá trị đều được đưa về giá trị mặc định Năm trường hợp ngoại lệ có là:

 Phép tính không chính xác là căn bậc hai với số âm, đầu ra trong không tồn tại

 Chia cho không là một phép tính trên một toán hạng hữu hạn trong đó kết quả là vô hạn ví dụ, 1/0 hoặc log (0) mặc định trả về vô cùng âm hoặc vô cùng dương

 Tràn bít xảy ra khi một phép tính có kết quả quá lớn nằm ngoái dải gí trị cho phép Kết quả trả về giá trị mặc định( làm tròn đền giá trị gần nhất)

 Underflow xảy ra khi một phép tính có kết quả quá nhỏ nằm ngoài khoảng giá trị thông thường và không chính xác theo măc định

1.4 Giới thiệu đề tài.

Thiết kế khối số học số thực dấu phẩy động(Floating Point Arithmetic unit) Mỗi một

số thực dấu phẩy động gồm có 4 bít biểu diễn phần giá trị số thực và 4 bít biểu diễn phần

số mũ, với số âm biểu diển ở dạng bù 2 Khối số học số thực dấu phẩy động có các khối lệnh sau:

 010 FPA Cộng các toán hạng số thực dấu phẩy động

 011 FBS Trừ các toán hạng số thực dấu phẩy động

 100 FBM Nhân các toán hạng số thực dấu phẩy động

 101 FPD Chia các toán hạng số thực dấu phẩy động

Trang 10

Kết quả sẽ được thể hiện ở dạng số thực dấu phẩy động ở dạng đã được chuẩn hóa và được hiển thị trên LED 7 thanh Sử dụng LED 7 thanh để chỉ ra phần tràn bộ nhớ.

Dữ liệu đầu vào của khối số thực dấu phẩy động sẽ được lấy tử bàn phím điện thoại kích thước 4x4 Giả sử các đầu vào đều ở dạng chuẩn hoặc bằng 0 Hệ thống phải gồm

có khối phần số thực, khối phần số mũ, khối điều khiển, và khối hiển thị chuyển số nhị phân 4 bít hiển thị trên led 7 thanh

1.5 Kết luận chương.

Chương này mô tả ngắn gọn ý nghĩa của khối FPU và tiêu chuẩn IEEE 754, chế

độ làm tròn số, định dạng số học, trường hợp ngoại lệ và hoán đổi định dạng Chương này cũng đưa ra một cái nhìn tổng quan của dự án

Chương 2 Lý thuyết.

Trang 11

2.1 Giới thiệu chương.

Trong chương này, phần 2.2 giới thiệu tổng quát về số thực dấu châm động, phần 2.3 giới thiệu về số thực dấu châm động thực hiện trong đề tài, phần 2.4 giới thiệu về thuật toán nhân số thực dấu phẩy động, phần 2.5 giới thiệu về thuật toán cộng hai số thực dấu châm động, phần 2.6 giới thiệu về thuật toán trừ hai sô thực dấu phẩy động Và cuối cùng, phần 2.7 đưa ra một bản tóm tắt của chương

2.2 Số thực dấu phẩy động.

Số thực dấu phẩy động(Floating Point Number) biểu diễn cho số thực

Tổng quát: một số thực X được biểu diễn theo kiểu số dấu phẩy động như sau:

Trang 12

2.3 Biểu diễn số thực dấu chấm động thực hiện trong dự án.

2.3.1Biểu diễn số bù 2 của số nhi phân 4 bít.

a.Phần phân số F(fraction).

Chúng ta sẽ biểu diễn phần phân số bằng số bù hai như sau:

=

=

Bít ngoài cùng bên tay trái là bít dấu Nếu bít dấu bằng 0 thì số đó mang dấu dương con bằng 1 thì số đó mang dấu âm Nhìn chung số F(fraction) mang giá trị âm được biểu diễn ở dạng bù 2 sẽ được tính như sau:

Ví dụ -5/8 được hiểu là: 10.000-0.101=1.011 Khi dịch chuyển n-1 bít sang bên trái thì giá trị của số đó phải chia cho Ở phần phân số thì số 1.000 là một trường hợp đặc biệt là 2-1=1 do 10.000-1.000=1.000 nhưng chúng ta không thể biểu diễn số +1 ở dạng

bù hai vì số dương lớn nhất trong hệ thống số phân số là 0.111(7/8)

b. Phần số mũ E(exponent).

Chúng ta biểu diễn phần số mũ bằng số bù hai như sau:

=

Trang 13

=

Bít bên ngoài cùng bên trái là bít dấu nếu bít dấu bằng 0 thì số đó mang dấu dươngcòn nếu bít dấu bằng 1 thì số đó mang dấu âm Dài giá trì của phần số mũ nằm trong khoảng từ đến tương đương tư đến

2.3.2 Biểu diễn số thực dấu phẩy động trong dự án.

Số thực dấu phẩy động N được xây dựng từ phần phân số F(fraction) và số mũ E(exponent) Khi đó N= F* Phần phân số và số mũ được trình bày ở dạng nhị phân bù 2.Đặc trưng số thực dấu phẩy động trong hệ thống thì chiều dài của F là từ 16 đến 64 bít, chiều dài của E là 8 đến 15 bít Nhưng trong dự án này, để dễ dàng thực hiện chúng tôi chỉ sử dụng 4 bít cho phần thập phân và 4 bít cho phần số mũ Ví dụ như sau:

Nếu F không ở dạng chuẩn chúng ta có thể chuyển về dạng chuẩn bằng cách dịch

về bên phải cho đến khi bít dấu và bít kế tiếp của nó khác nhau Việc dịch bít về bên tay phải đồng nghĩa với việc giá trị của F được nhân thêm với 2 vì vậy chúng ta phải giảm giá trị của E xuống 1 để giá trị của N không thay đổi Sau khi chuẩn hóa xong Sau đây

là một số ví dụ về việc chuẩn hóa F:

Trang 14

Số 0 không thể chuẩn hóa được, Vì vậy khi F=0 khi N=0 Do đó sẽ có rất nhiều giá trị số mũ E có thể được dung để biểu diễn số N, cho nên để thống nhất một cách biểu diễn người ta lấy số mũ có giá trị âm nhỏ nhất trong dải giá trị của E( 1000 đên 0111) là

1000 Vì vậy khi F và E biểu diễn bằng số nhị phân 4 bít thì số không được biểu diễn nhưsau:

F=0.000 E=1000 N=0

Số thực dấu phẩy động dương nhỏ nhất biểu diễn trong dự án này có giá trị là 0.001x Mốt số hệ thống số thực dấu phẩy động sử dụng hệ số mũ biased như là E=0 đi kèm với F=0 khi biểu diễn sô 0

2.4 Nhân hai số thực dấu phẩy động.

Trong phần này chúng ta sẽ thiết kế bộ nhân cho số thực dấu phẩy động Chúng ta sử dụng số nhị 4 bít cho phần F(fraction) và 4 bít cho phân E( exponent) , với số âm thì được biểu diễn ở dạng số bù 2 Công thức tổng quát khi thực hiện nhân 2 số thực dấu phẩy động như sau:

**=) x=F*

Giả sử đầu vào chúng ta có và đã được chuẩn hóa và chúng ta muốn kết quả đầu

ra cũng được chuẩn hóa Khi thực hiện nhân phần phân số( fraction) và cộng phần số mũ

sẽ xảy ra một số trường hợp đặc biệt cần phải chú ý

Đầu tiên nếu F=0 thì mặc định giá trị E=1000(-8)

Thứ hai khi nhân -1 với -1 (1.000 x 1.000) khi đó kết quả sẽ là +1 nhưng chúng takhông thể biểu diễn số 1 ở dạng bù 2 phần phân số Chúng ta gọi đó là trường hợp

fraction overflow Để giải quyết vấn đề này chúng ta gán F=1/2(0.100) và cộng 1 vào

E( E=E+1)

Khi nhân phần phân số(fraction) thì kết quả sẽ chưa chuẩn hóa Ví dụ:

Trang 15

Y Y

Y N

N

N

Y Bắt đầu

Kết thúc

**=) x=0.100*.

Trong ví dụ trên chúng ta chuẩn hóa kết quả bằng việc dịch trái phần phần số một vị trí và trừ đi một ở phần số mũ Kết thúc nếu phần số mũ không nằm trong dải cho phép của phần số mũ trong hệ thống thì sẽ xảy ra trường hợp tràn bít phần số mũ Chúng ta sử dụng 4 bít cho phần số mũ thì dải giá trị cho phép là: 1000 đến 0111(-8 đến 7) Khi xảy ratràn bít thì sẽ có tín hiệu báo tràn Sau đây là sơ đồ thuật toán cho việc nhân số thực dấu phẩy động

Với đầu vào là 2 số thực dấu phẩy động và kết quả là N.

Trang 16

C,A A+M

C0, A0 MSố bị nhân QSố nhân

Sau đây là thuật toán khi nhân hai số không âm :Với C bít nhớ, A là tổng

Hình 2.2 Thuật toán nhân hai số nguyên không dấu

Ví dụ về nhân hai số nguyên không dấu:

Trang 17

Khi nhân hai số nguyên có dấu thì ta sẽ làm các bước như sau:

Bước 1 Chuyển đổi số bị nhân và số nhân thành số dương tương ứng

Bước 2 Nhân hai số dương bằng thuật giải nhân số nguyên không dấu, được tích của hai số dương

Bước 3 Hiệu chỉnh dấu của tích:

 Nếu hai thừa số ban đầu cùng dấu thì giữ nguyên kết quả ở bước 2

 Nếu hai thừa số ban đầu là khác dấu thì đảodấu kết quả của bước 2

Khi cộng phần số mũ thì sẽ có một số trường hợp có thể xảy ra tràn bít như sau:

 Nếu và là số dương mà tổng E là số âm

 Nếu và là số âm mà tổng E là số dương

Kết quả biểu diễn ở dạng số bù 2 sẽ thì xảy ra tràn bít

Tuy nhiên một số trường hợp có thể chỉnh sửa tràn bít số mũ bằng cách cộng hoặc trừ 1 đơn vị trong khi chuẩn hóa kết quả phần phân số(fraction) Trong trường hợp cho phép Chúng ta sẽ tạo thanh ghi X có chiều dài 5 bít Khi tải số mũ từ thành ghi X thì chúng ta sẽ mở rộng bít dấu Vì vậy chúng ta có thể biểu diễn số ở dạng bù 2 Nếu có 2 bít dấu thì khi công và trong trường hợp xảy ra tràn bít thì bít dấu thấp nhất sẽ bị thay đổi còn bít dấu cao nhất không thay đổi Sau đây là một số ví dụ:

Trang 18

7+6= 00111 +00110=01101=13 (giá trị lớn nhất là 7).

(-7)+(-6)=11001+11010=-13(giá trị nhỏ nhất là -8)

Tuy nhiên sau đây là một trường hợp đặc biệt trong trường hợp chỉ ra tràn bít phần

số mũ và tràn bít phần phân số nhưng việc tràn bí phần số mũ có thể sửa lại sau khi chỉnhsửa tràn bí phần phân số

*= 0.111x *=0.101x

Do # nên dịch chuyển sang phải 2 đơn vị và cộng 2 vào

0.101x=0.0101x.= 0.00101x

Sau khi dịch phải một đơn vị thì giá trị của số đó sẽ chia cho 2 nên cần phải cộng vào số

mũ 1 để giá trị của số không thay đổi Sau khi dịch chuyển để cho 2 số mũ bằng nhau chúng ta tiến hành cộng phần phân số(fraction)

0.111x + 0.00101x= 01.00001x

Lúc này chúng ta thấy phần phân số (fraction) xảy ra hiện tượng fraction overflow.

Nên để chuẩn hóa chúng ta dịch phải 1 phần phân số và cộng them 1 phần số mũ

Trang 19

Khi một trong hai số và là số âm thì khi cộng phần phân số sẽ xảy ra hiện tượng kết quả cộng phần phần số chưa được chuẩn hóa Ví dụ:

1.100x+0.100x

= 1.110x+0.100x(sau khi dịch phải 1 của )

= 0.010x (kết quả chưa chuẩn hóa)

= 0.100x (sau khi dịch trái phần phân số 1 và trừ 1 phần số mũ)

Tóm lại thì việc cộng hai số thực dấu phẩy động sẽ thực hiện theo các bước sau:

Bước 1: Nếu hai phần mũ không bằng nhau thì dịch chuyển sang bên phải phần phân số,

số có số mũ nhỏ hơn 1 đơn vị và cộng vào số mũ nhỏ hơn 1 đơn vị Lặp lại các bước trên cho đến khi hai số mũ bằng nhau

Bước 2: Cộng phần phân số

Bước 3: Xảy ra 3 trường hợp

a. Khi số F bị tràn thì dịch phải F 1 đơn vị và cộng thêm 1 vào phần số mũ để sử lỗi tràn bít

b. Khi F chưa chuẩn hó thì dịch trái F 1 đoen vị và trừ phần số mũ E đi 1

c. Nếu F bằng 0 thì gán E=-1

Bước 4: Kiểm tra tràn số mũ

Nếu >> và là số dương thì tất cả các bít của sẽ trở thành 0 ngay sau khi chúng ta dịch chuyển về bên phải để hai số mũ bằng nhau và kết quả là F= và E= Nếu >> và là

số âm thì tất cả các bít của sẽ trở thành 1 khi chúng ta dịch chuyển về bên phải để hai số

mũ bằng nhau Vì thể khi cộng hai phần fraction sẽ cho kết quả sai Vì vậy để tránh vấn

đề này xảy ra thì khi >> ta có: F= và E= Nếu thì F= và E= Trong dự án này chúng ta sử

Trang 20

E1=E2 F=F1+F2

Báo tràn E

F bị tràn

F<<1, E=E-1

F=0

Tăng phần số mũ nhỏ hơn giá trị Shift_F=|E1-E2|

F Chuẩ

n hoa

E bị tràn

F=0, E=-8

F>>1, E=E+1

Shift_F=|E1-E2|

Dich sang phải phần định trị số nhỏ hơn Shift_F

Kết thúc Bắt đầu

dụng 4 bít cho cả phần fraction và exponent nên khi |- bỏ qua phần dịch chuyển sang bênphải

Sau đây là thuật toán cho việc cộng hai số thực dấu phẩy động

Hình 2.3 Sơ đồ thuật toán cộng hai số thực dấu phẩy động

2.6 Trừ hai số thực dấu phẩy động.

Khi trừ hai số thực dấu chấm động thì sẽ được cộng theo công thức sau:

**=Fx

Các bước trừ hai số thực dấu chấm động cũng giống như trong công hai số thực

dấu phẩy động chỉ khác ở bước 2 ta chuyển việc cộng phần fraction thành trừ

Sau đây là thuật toán trừ hai số thực dấu chấm động với các thông số sau:

N= F*

Ngày đăng: 11/06/2015, 15:16

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w