Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 16

ĐẠI HỌC ĐÀ NẴNG

TRƯỜNG ĐẠI HỌC BÁCH KHOA


KHOA ĐIỆN

BÁO CÁO CUỐI KÌ


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

Người hướng dẫn : TS. Nguyễn Khánh Quang


Sinh viên thực hiện : Phạm Dương Thạch
: Đỗ Hữu Thi
: Bùi Văn Bình
: Nguyễn Đắc Quang
: Đặng Minh Hưng
Nhóm học phần : 20.32

Đà Nẵng, 2024
Báo cáo cuối kì

MỤC LỤC

CHƯƠNG I: TỔNG QUAN ĐỀ TÀI.....................................................................4


1.1 Mô ta hệ thống.............................................................................................4
1.2 Yêu cầu bài toán..........................................................................................4
CHƯƠNG 2: THIẾT KẾ HỆ THỐNG.................................................................5
2 Thiết kế hệ thống...............................................................................................5
2.1 Data subsystem............................................................................................7
2.2 Control subsystem.....................................................................................10
CHƯƠNG 3: MÔ PHỎNG KIỂM NGHIỆM VÀ NHẬN XÉT........................13
3.1.Thực hiện mô phỏng trên Matlab Simulink kết hợp Modelsim..............13

2
Báo cáo cuối kì

MỤC LỤC HÌNH ẢNH


Hình 1. Mô tả hệ thống.............................................................................................4
Hình 2. Cấu trúc CPU...............................................................................................5
Hình 3. Hệ thống dữ liệu..........................................................................................7
Hình 4. Sơ đồ mô phỏng hệ thống trên Simulink...................................................13
Hình 5. Tín hiệu Start.............................................................................................13
Hình 6. Kết quả mô phỏng đáp ứng đầu ra của đối tượng so với Set Point...........14
Hình 7. Kết quả mô phỏng các thông số trên ModeSim........................................15

3
Báo cáo cuối kì

CHƯƠNG I: TỔNG QUAN ĐỀ TÀI


1.1 Mô ta hệ thống

Hình 1. Mô tả hệ thống

1.2 Yêu cầu bài toán


Thiết kế một bộ xử lý đơn giản (CPU). Sau đó sử dụng CPU này để thiết kế bộ
điều khiển PID bằng phần mềm. Tiến hành mô phỏng hệ thống điều khiển trên trong
phần mềm modelsim. Sau đó liên kết Matlab Simulink để mô phỏng kiếm chứng.

u ( n ) =ui ( n−1 ) + K p e ( n )+ K i e ( n−1 ) + K d (e ( n )−e ( n−1 ))

4
Báo cáo cuối kì

CHƯƠNG 2: THIẾT KẾ HỆ THỐNG

2 Thiết kế hệ thống
Tổng quan về CPU:
CPU có 2 phần chính: hệ thống dữ liệu và hệ thống điều khiển.
• Hệ thống dữ liệu gồm:
 Thanh ghi chứa dữ liệu
 ALU (module tính toán)
 Đường kết nối
 Tín hiệu điều khiển
 Tín hiệu điều kiện (đầu ra)
• Hệ thống điều khiển:
 Các lệnh
 Chương trình
Mô tả cấu trúc CPU:

Hình 2. Cấu trúc CPU

Đây là CPU với 2 khối chính là Control Subsystem và Data Subsystem. Đầu tiên,
khối control system sẽ nhận tín hiệu điều kiện (zero,neg,cy) từ data subsystem, sau đó sẽ
tạo ra các tín hiệu để điều khiển cho nó. Các tín hiệu dữ liệu này sẽ được biểu diễn trên
16 bit và địa chỉ thì 4 bit. Mỗi lệnh sẽ được thực hiện trong 1 chu kì xung nhịp.

5
Báo cáo cuối kì

Start (tín hiệu vào) và Done (tín hiệu ra) cùng chung nhịp clock để ra lệnh đồng
thời. Đầu vào khối dữ liệu là các tín hiệu đặt.
Code CPU :

6
Báo cáo cuối kì

2.1 Data subsystem

Hình 3. Hệ thống dữ liệu

7
Báo cáo cuối kì

 Data subsystem có tổng cộng 9 thanh ghi, mỗi thanh ghi 16 bit. Có thể thực hiện
đồng thời cả 2 chức năng là đọc và ghi. Có 4 thanh ghi vào (r_in, k_d, k_i, k_p).
 Khối ALU có khả năng thực hiện tính toán như các phép cộng, trừ, nhân, +1.
 MUX là bộ dồn kênh, tùy thuộc trên tín hiệu điều khiển, nó chọn dữ liệu được ghi
vào tệp thanh ghi.

- Nguyên lý hoạt động của hệ thống dữ liệu như sau:


 Đầu tiên các tín hiệu vào idR_in, ldkd, ldki, ldkp muốn đẩy lên các khối r_in, k_d,
k_i, k_p cần phải có các lệnh x_in, kd, ki, kp kích lên thì mới đẩy dữ liệu lên
được. Sau đó bộ dồn kênh MUX sẽ chọn loại dữ liệu đưa lên thanh ghi. Để chọn
được loại dữ liệu, cần có lệnh selR_in kích lên.

CODE DATA SUBSYSTEM :

Trong mã code trên :


8
Báo cáo cuối kì

 Lệnh selR_in gồm 3 bit, khi mã lệnh là 000 thì sẽ chọn dữ liệu alu_out, khi mã
lệnh là 001 thì sẽ chọn dữ liệu r_in, 010 là k_d, 011 là k_i và 111 là k_p.
 Sau đó muốn đẩy dữ liệu lên thì cần lệnh fld_A, fld_B, fld_C để lưu vào thanh
ghi và lệnh ldRF đưa 2 dữ liệu đã được lưu ra port A, B để đưa vào ALU để tính
toán.
 Khối ALU cần lệnh alu_op gồm 2 bit để lựa chọn các phép tính, 00 là phép cộng,
01 là phép trừ, 10 là phép nhân và 11 là +1.
Đầu ra: Đầu vào:

fld_A address for read port A

fld_B address for read port B

fld_C address for write port C

ldRF load register file (write)

alu_op operation done in ALU

ldR_in load R_in

ldkd load k_d

ldki load k_i

ldkp load k_p

ldR_out load R_out

selR_in select data to write

zero alu_out=0 result is zero

neg alu_out<0 result is negative

cy carry result generated carry

9
Báo cáo cuối kì

2.2 Control subsystem


 Đầu vào: start, zero, neg, cy
 Đầu ra: fld_A, fld_B, fld_C, alu_op, ldr_in, ldkd, ldki, ldkp,
ldr_out, selr_in, ldrf, done
 Đầu ra done được set lên có lệnh s_d và được reset khi có lệnh r_d
 2 nhóm mã lệnh là operation và branch

Condition Code
Start 00
Zero 01
Neg 10
Cy 11

• Chương trình được lưu trữ trong control subsystem, là một mảng gồm 17 phần tử,
mỗi phần tử rộng 26 bit
• Tín hiệu bắt đầu được nhận từ đối tượng và CPU chỉ bắt đầu thực hiện các lệnh
khi tín hiệu này là “1”
• Lệnh thứ hai tạo ra một vòng lặp chờ cho đến khi nhận được tín hiệu bắt đầu
• Lệnh trước lệnh cuối cùng đặt tín hiệu xong, CPU thông báo cho đối tượng rằng
kết quả có thể được đưa ra
• Lệnh cuối cùng tạo bước nhảy sang lệnh thứ hai trong đó chương trình sẽ đợi một
khởi đầu mới từ đối tượng
CODE CONTROL SUBSYSTEM :

10
Báo cáo cuối kì

11
Báo cáo cuối kì

12
Báo cáo cuối kì

CHƯƠNG 3: MÔ PHỎNG KIỂM NGHIỆM VÀ NHẬN XÉT

3.1.Thực hiện mô phỏng trên Matlab Simulink kết hợp Modelsim


Sơ đồ mô phỏng trên Simulink

Hình 4. Sơ đồ mô phỏng hệ thống trên Simulink

- Giá trị start là biến khởi động hệ thống, khi start bằng 1 thì hệ thống bắt đầu hoạt động

Hình 5. Tín hiệu Start


13
Báo cáo cuối kì

 Sau đó, sai lệch được đưa vào bộ điều khiển tại đây các giá trị Ki, Kp, Kd
được gán cho các giá trị Kp=0.15, Ki=0.05 và Kd= 0.01.
 Kiểu dữ liệu của các đầu vào ra :
- mic_in, kp, ki, kd : 16 bit Q15
- start ,done : 1 bit (0 or 1)
- Z_out : 16 bit Q15

Tín hiệu đáp ứng đầu ra đưa vào hàm đối tượng, ở đây chúng ta sử dụng hàm bậc 2
để mô phỏng đối tượn

 Kết quả mô phỏng trên Matlab Simulink

Hình 6. Kết quả mô phỏng đáp ứng đầu ra của đối tượng so với Set Point

14
Báo cáo cuối kì

 Kết quả mô phỏng trên Modelsim

Hình 7. Kết quả mô phỏng các thông số trên ModeSim

 Nhận xét:
- Trong quá trình thực hiện mô phỏng trên Matlab Simulink, kết quả thu được
không hoàn toàn như mong đợi. Cụ thể, các giá trị và hình dạng của đồ thị đầu ra
có giá trị bằng 0 không khớp với giá trị Set Point trước đó.
- Đối với mô phỏng trên Modelsim, tuy các tham số vào ra và các tín hiệu biến điều
khiển vẫn thay đổi trong quá trình tính toán mô phỏng tuy nhiên đầu ra zout lại
không xác định, cho thấy có sai sót trong quá trình lập trình hoặc mô phỏng.
 Cần thêm thời gian để tiến hành sửa lỗi và hoàn thiện dự án.

Dưới đây là một số nhận xét chi tiết về nguyên nhân có thể dẫn đến sai lệch này:
- Sai lầm trong việc thiết lập thông số đầu vào
- Sai sót trong cấu trúc mô hình
- Tham số của các khối mô phỏng chưa đúng
- Sai sót trong việc xây dựng các thuật toán chương trình

15
Báo cáo cuối kì

Mặc dù hiện tại kết quả mô phỏng chưa đạt yêu cầu, chúng em đã xác định rõ những
sai lầm và đã có một số biện pháp kiểm tra khắc phục cụ thể. Trong các lần mô phỏng
tiếp theo, sẽ áp dụng những biện pháp này để cải thiện độ chính xác của mô hình và đạt
được kết quả như mong đợi.

16

You might also like