You are on page 1of 15

ĐẠI HỌC BÁCH KHOA

KHOA ĐIỆN

CÔNG NGHỆ FPGA VÀ NGÔN NGỮ VHDL

GV hướng dẫn: Nguyễn Khánh Quang

Sinh viên thực hiện: Phan Ngọc Nam - 20 TDHclc2


Nguyễn Hưng - 20 TDHclc2
Nguyễn Hữu Quốc thái - 20 TDHclc2

Nhóm HP: 20Nh34

Bài 1:
1. Yêu cầu
Viết VHDL code để tính giá trị của đa thức dưới đây:

Với a 5=2, a 4=3, a 3=-5, a 2=-1, a 1=12, a 0=-3


Và x= 1,2,3,4,5,6,7,8,9,10.

2. Mô tả thuật toán
Để tiết kiệm dung lượng của bộ điều khiển thì mỗi xung clock chỉ thực hiện 1 bộ
nhân và một bộ cộng. Ta biến đổi đa thức đã cho như sau:

Bước 1: mulla=a 5, mullb=x.

Bước 2: adda=mullr=a 5 x , addb=a 4.

Bước 3: mulla=addr=a 5 x +a 4, mullb= x.

Bước 4: adda= mullr=¿ ¿+a 4)x, addb=a 3.

Bước 5: mulla=addr=¿ ¿+a 4)x+a 3, mullb=x.

Bước 6: adda= mullr=¿ ¿+a 4)x+a 3 ¿ x , addb=a 2.

Bước 7: mulla=addr=¿ ¿+a 4)x+a 3 ¿ x +a 2, mullb=x.


Bước 8: adda= mullr=¿ ¿+a 4)x+a 3 ¿ x +a 2)x, addb=a 1.

Bước 9: mulla=addr=¿ ¿+a 4)x+a 3 ¿ x +a 2)x+a 1, mullb=x.

Bước 10: adda= mullr=¿ ¿+a 4)x+a 3 ¿ x +a 2)x+a 1 ¿x, addb=a 0.

Bước 11: y=addr=¿ ¿+a 4)x+a 3 ¿ x +a 2)x+a 1 ¿x+a 0.

3. VHDL CODE
4. Kết quả mô phỏng
Với x=1

Với x=5

Nhận xét:
Ta thấy kết quả mô phỏng đúng với giá trị của đa thức.
Bằng cách thực hiện tối đa một 1 nhân và 1 bộ cộng mỗi xung clk ta đã tiết kiệm
được rất nhiều dung lượng bộ nhớ trong khi thời gian thực hiện chương trình
vẫn rất nhanh.

Bài 2:
1. Yêu cầu
Viết VHDL code để tính ma trận mũ n dưới đây

Với n=5 và
2. Mô tả thuật toán

Đầu tiên ta lưu các giá trị của ma trận A vào ma trận trung gian T

2
A =T∗A

Sau đó tính giá trị của ta sẽ được ma trận mới


Các giá trị của ma trận này sẽ được lưu lại vào ma trận trung gian T và thực hiện
lại các bước ban đầu
Giá trị của An sẽ là kết quả của việc thực hiện n-1 lần vòng lặp này
3. VHDL CODE
4. Kết quả mô phỏng
Kết quả đúng tính được từ matlab

Ta thấy kết quả mô phỏng được đúng như kết quả của phép tính

You might also like