Các tín hiệu của khối ALU

Một phần của tài liệu Thiết kế vi xử lý 16 bit trên nền tảng công nghệ fpga (Trang 55)

CHƯƠNG 3 : THIẾT KẾ VI XỬ LÝ 16 BIT TRÊN FPGA

3.1. Thiết kế vi xử lý 16 bit trên FPGA

3.1.3.2. Các tín hiệu của khối ALU

Hai tín hiệu a và b là hai tín đầu vào của ALU, sel là tín hiệu lựa chọn chức năng của ALU tương ứng với lệnh cần thực hiện. Kết quả sau khi thực hiện tính tốn bởi ALU sẽ được trả ra tại c. Chi tiết về các hoạt động của ALU được thể hiện trong Bảng 3.3.

Bảng 3.2 Các tín hiệu vào và ra của khối ALU

Tín hiệu Kích thước Hướng Miêu tả

A 16 bit In Dữ liệu vào ALU

B 16 bit In Dữ liệu vào ALU

SEL 5 bit In Tín hiệu Opecode

C 16 bit Out Kết quả của ALU

Bảng 3.3 Hoạt động của bộ ALU

Tín hiệu lựa chọn Hoạt động

0000 C = A 0001 C = A AND B 0010 C = A OR B 0011 C = NOT A 0100 C = A XOR B 0101 C = A + B 0110 C = A –B 0111 C = A + 1 1000 C = A –1 1001 C = 0 3.1.4. Thiết kế Comp

3.1.4.1. Sơ đồ khối của bộ so sánh

Khối chức năng tiếp theo được xây dựng đó là bộ so sánh, thực thể này thực hiện so sánh hai giá trị và trả về một '1' hoặc '0' tùy thuộc vào loại so sánh yêu cầu và các giá trị được so sánh. Kiểu so sánh được xác định bởi tín hiệu lựa chọn trên đầu vào của cổng sel. Ví dụ nếu áp dụng tín hiệu sel là eq thì khi giá trị đầu vào a

Thiết kế vi xử lý 16 bit trên nền tảng cơng nghệ FPGA

bằng đầu giá trị b thì đầu ra c của bộ so sánh sẽ là ‘1’, cịn ngược lại khơng bằng sẽ là ‘0’.

Hình 3.4 Sơ đồ khối bộ so sánh

3.1.4.2. Các tín hiệu của bộ so sánh

Bảng 3.4 Tín hiệu vào ra của bộ so sánh

Tín hiệu Kích thước Hướng Miêu tả

A 16 bit In Dữ liệu vào bộ so sánh

B 16 bit In Dữ liệu vào bộ so sánh

SEL eq,neq,gt,gte,lt,lte In Tín hiệu lựa chọn

C 1bit Out Kết quả của bộ so sánh

Bảng 3.5 Hoạt động của bộ so sánh

Tín hiệu lựa chọn Hoạt động

EQ Compout = 1 khi a bằng b

NEQ Compout = 1 khi a không bằng b GT Compout = 1 khi a lớn hơn b

GTE Compout = 1 khi a lớn hơn hoặc bằng b LT Compout = 1 khi a nhỏ hơn b

LTE Compout = 1 khi a nhỏ hơn hoặc bằng b

3.1.5. Thiết kế Control 3.1.5.1. Sơ đồ khối control 3.1.5.1. Sơ đồ khối control

Khối control cung cấp sự tương tác tín hiệu cần thiết để làm cho dịng dữ liệu chạy chính xác trong CPU và thực hiện được chính xác các chức năng mong đợi. Control tạo ra tất cả các giá trị tín hiệu thích hợp để cập nhật hoạt động dựa trên các

Thiết kế vi xử lý 16 bit trên nền tảng cơng nghệ FPGA

tín hiệu trạng thái hiện tại và các tín hiệu đầu vào để tạo ra một trạng thái tiếp theo. Sơ đồ khối của thực thể control được mơ tả tại Hình 3.5.

Hình 3.5 Sơ đồ khối của bộ điều khiển

3.1.5.2. Các tín hiệu của khối control

Bảng 3.6 Tín hiệu vào ra của khối điều khiển

Tín hiệu Kích thước Hướng Miêu tả

CLOCK 1 Bit In Xung colock

RESET 1 Bit In Tín hiệu reset

INSTRREG 16 Bit In Thanh ghi lệnh

COMPOUT 1 Bit In Tín hiệu đầu ra của bộ so sánh

READY 1 Bit In Tín hiệu báo sự sẵn sàng

PROGCNTRLWR 1 Bit Out Tín hiệu điều khiển ghi PROGCNTRLRD 1 Bit Out Tín hiệu điều khiển đọc

ADDREGWR 1 Bit Out Tín hiệu địa chỉ ghi

ADDREGRD 1 Bit Out Tín hiệu địa chỉ đọc

OUTREGWR 1 Bit Out Tín hiệu ra của thanh ghi ghi OUTREGRD 1 Bit Out Tín hiệu ra của thanh ghi đọc

Thiết kế vi xử lý 16 bit trên nền tảng cơng nghệ FPGA

SHIFTSEL shftpass,shl Shr,rotl,rotr

Out Tín hiệu đầu vào bộ dịch ALUSEL 4 Bit Out Tín hiệu khối điều khiển ALU COMPSEL eq,neq,gt,

gte,lt,lte

Out Tín hiệu điều khiển bộ so sánh OPREGWR 1 Bit Out Tín hiệu điều khiển ghi bộ đệm

OPREGRD 1 Bit Out Tín hiệu điều khiển đọc bộ đệm INSTRWR 1 Bit Out Tín hiệu điều khiển ghi lệnh

REGSEL 3 Bit Out Tín hiệu điều khiển thanh ghi REGRD 1 Bit Out Tín hiệu điều khiển ghi thanh ghi REGWR 1 Bit Out Tín hiệu điều khiển đọc thanh ghi RW 1 Bit Out Tín hiệu điều khiển đọc/ghi bộ nhớ

WMA 1 Bit Out Bộ nhớ hợp lệ địa chỉ

3.1.6. Thiết kế Reg và Regarray 3.1.6.1. Sơ đồ khối Reg và Regarray 3.1.6.1. Sơ đồ khối Reg và Regarray

Thực thể reg được sử dụng để thiết kế cho thanh ghi địa chỉ và thanh ghi lệnh. Các thanh ghi này phải bắt được dữ liệu đầu vào trên cạnh lên của xung clk và chuyển qua đầu ra q các dữ liệu thu được. Giá trị đầu vào a được gán cho đầu ra q khi một cạnh lên xảy ra trên đầu vào clk. Việc chuyển dữ liệu được làm trễ 1 ns để loại bỏ các vấn đề trễ delta trong q trình mơ phỏng. Sơ đồ khối cho thực thể reg được thể hiện trong Hình 3.6.

Hình 3.6 Sơ đồ khối Reg

Thực thể regarray được sử dụng để thiết kế tập các thanh ghi trong CPU, regarray được sử dụng để lưu trữ các giá trị trung gian trong quá trình xử lý lệnh. Tập hợp các thanh ghi này gồm 8 thanh ghi và mỗi thanh ghi là 16 bit, và được mô tả như là một bộ nhớ RAM. Sơ đồ khối regarray với các tín hiệu vào ra của regarray

Thiết kế vi xử lý 16 bit trên nền tảng công nghệ FPGA

được mơ tả ở Hình 3.7. Để ghi một dữ liệu vào một thành ghi bất kỳ trong 8 thanh ghi ta sẽ thiết lập tín hiệu lựa chọn thanh ghi sel cần ghi, dữ liệu cần ghi sẽ được đưa vào cổng data và cuối cùng là đặt một cạnh lên tại đầu vào xung clk. Khi muốn đọc dữ liệu từ một vị trí thanh ghi trong mảng ta sẽ thiết lập tín hiệu lựa chọn thanh ghi sel và đặt tín hiệu en là ‘1’ thì dữ liệu cần đọc sẽ được đưa ra tại cổng data.

Hình 3.7 Sơ đồ khối Regarry

3.1.6.2. Các tín hiệu khối Reg và Regarray

Bảng 3.7 Bảng các tín hiệu vào ra của Array

Tín hiệu Kích thước Hướng Miêu tả

A 16 Bit In Dữ liệu vào thanh ghi

Q 16 Bit Out Dữ liệu đầu ra thanh ghi

CLK 1 Bit In Xung nhịp điều khiển thanh ghi

Bảng 3.8 Bảng các tín hiệu vào ra của Regarray

Tín hiệu Kích thước Hướng Miêu tả

DATA 16 Bit In Dữ liệu vào Regarray

Q 16 Bit Out Dữ liệu đầu ra Regarray

CLK 1 Bit In Xung nhịp điều khiển Regarray

EN 1 Bit In Tín hiệu cho phép tác động

Regarray

Thiết kế vi xử lý 16 bit trên nền tảng công nghệ FPGA

3.1.7. Thiết kế Shift 3.1.7.1. Sơ đồ khối Shift 3.1.7.1. Sơ đồ khối Shift

Khối tiếp theo mà ta thiết kế là shift, thực thể shift làm nhiệm vụ thao tác dịch và quay dữ liệu. Sơ đồ mơ tả khối dịch được thể hiện ở Hình 3.8, bao gồm a là bus là đầu vào, y là bus đầu ra cả hai đều có độ rộng 16 bits và một tín hiệu sel dùng lựa chọn hoạt động cho bộ shift.

Những hoạt động được thực hiện bởi shift như mơ tả tại Hình 3.10 và Hình 3.11. Khối shift có thể thực hiện được các hoạt động như dịch trái, dịch phải, quay trái, quay phải. Ngồi ra bộ shift cịn có một hoạt động khác là pass through, trong hoạt động này tất cả các bit đầu vào được chuyển qua đầu ra mà khơng bị thay đổi.

Hình 3.9 Sơ đồ khối bộ Shift

3.1.7.2. Các tín hiệu vào ra của bộ Shift

Các tín hiệu vào ra của Shift được thể hiện ở bảng phía dưới:

Bảng 3.9 Bảng các tín hiệu vào ra bộ Shift

Tín hiệu Kích thước Hướng Miêu tả

A 16 Bit In Dữ liệu vào bộ Shift

Y 16 Bit Out Dữ liệu ra bộ Shift

SEL Shftpass, shl, Shr, rotl, rotr

In Tín hiệu lựa chọn chức năng shift

Thiết kế vi xử lý 16 bit trên nền tảng cơng nghệ FPGA

Hình 3.10 Hoạt động dịch trái và dịch phải của bộ Shift

Thiết kế vi xử lý 16 bit trên nền tảng công nghệ FPGA

3.1.8. Thiết kế Trireg

3.1.8.1. Sơ đồ khối bộ Trireg

Thành phần cuối cùng trong CPU được thiết kế là trireg. Thanh ghi ba trạng thái được kết nối với bus dữ liệu chính và có thể thể lưu trữ thông tin từ bus dữ liệu cũng như thông tin điều khiển tới bus dữ liệu. Thành phần Trireg có bốn cổng vào ra được thể hiện trong Hình 3.12.

Hình 3.12 Sơ đồ bộ Trireg

a là dữ liệu đầu vào, q là dữ liệu đầu ra của Trireg. Tín hiệu clk dùng được sử dụng khi điều khiển lưu một giá trị mới vào thanh ghi. Khi cấp một cạnh lên tại đầu vào clk, dữ liệu tại đầu vào a sẽ được lưu vào Trireg. Tín hiệu en được sử dụng để điều khiển đầu ra q. Khi en có giá trị là ‘1’ dữ liệu trong Trireg sẽ được đưa ra đầu ra q, cịn khi en có giá trị là ‘0’ thì đầu ra q sẽ có trở kháng cao.

3.1.8.2. Các tín hiệu vào ra bộ Trireg

Bảng 3.10 Các tín hiệu vào ra bộ Trireg

Tín hiệu Kích thước Hướng Miêu tả

A 16 Bit In Dữ liệu vào bộ Trireg

Q 16 Bit Out Dữ liệu ra bộ Trireg

CLK 1 Bit In Tín hiệu xung clock

EN 1 Bit In Tín hiệu cho phép Trireg hoạt động

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

Chương này đã trình bày chi tiết thiết kế từng thành phần trong mơ hình vi xử lý 16 bit đã chọn để triển khai trên FPGA. Với mơ hình vi xử lý này, việc triển khai thực tế trên FPGA đã được thực hiện và kiểm nghiệm được tính khả thi.

Thiết kế vi xử lý 16 bit trên nền tảng công nghệ FPGA

CHƯƠNG 4: KẾT QUẢ MÔ PHỎNG THIẾT KẾ VI XỬ LÝ 16 BIT TRÊN FPGA

Chương trước đã trình bày các bước thiết kế vi xử lý 16 bit trên FPGA với những mô tả thiết kế số và giải thuật triển khai các khối logic. Trong chương này, phần kết quả triển khai vi xử lý 16 bit trên FPGA bao gồm lựa chọn cấu hình, các thông tin về tài nguyên sử dụng trên FPGA. Phần rất quan trọng trong chương này sẽ đề cập đến là phần thực hiện các mô phỏng để kiểm chứng chức năng của vi xử lý 16 bit cũng như đo đạc các thông số hoạt động của xử lý với thiết kế đã chọn.

4.1. Lựa chọn phần cứng

 Device Family: Virtex7

 Device: XC7VX485T

 Top-Level Source Type: HDL

 Synthesis Tool: XST (VHDL)

 Simulator: ISim (VHDL)

 Preferred Language: VHDL

4.2. Các thông số phần cứng sau khi thiết kế

Triển khai thiết kế vi xử lý 16 bit với FPGA XC7VX485T của Xilinx dùng công cụ ISE cho kết quả sử dụng tài nguyên trên FPGA như bảng dưới đây. Qua kết quả sử dụng tài nguyên này có thể thấy việc lựa chọn loại chip này của Xilinx là hoàn toàn phù hợp với thiết kế vi xử lý 16 bit đã đề ra.

Bảng 4.1 Tài nguyên đã sử dụng

Slice Logic Utilization Used Available Utilization

Number of Slice Registers 101 607,200 1%

Number of Slice LUTs 91 303,600 1%

Number of occupied Slices 60 75,900 1%

Thiết kế vi xử lý 16 bit trên nền tảng công nghệ FPGA

Các thông số về thời gian:

 Minimum period: 2.182ns (Maximum Frequency: 458.232MHz)

 Minimum input arrival time before clock: 1.385ns

 Maximum output required time after clock: 2.779ns

 Maximum combinational path delay: 0.848ns

4.3. Mô phỏng các thành phần của vi xử lý 16 bit 4.3.1. Mô phỏng khối ALU 4.3.1. Mô phỏng khối ALU

Để mô phỏng khối ALU tác giả đưa vào đưa hai thông giá trị đầu vào của ALU là A = 3 và B =7 và thực hiện các phép toán kết quả được thể hiện như bảng và testbench đã thể hiện.

Bảng 4.2 Kết quả mô phỏng của ALU

Phép toán Alu select a b Kết quả (c) Load 0000 0000000000000011 0000000000000111 0000000000000011 and 0001 0000000000000011 0000000000000111 0000000000000011 or 0010 0000000000000011 0000000000000111 0000000000000111 not 0011 0000000000000011 0000000000000111 1111111111111100 Xor 0100 0000000000000011 0000000000000111 0000000000000100 add 0101 0000000000000011 0000000000000111 0000000000001010 sub 0110 0000000000000011 0000000000000111 1111111111111100 inc 0111 0000000000000011 0000000000000111 0000000000000100 dec 1000 0000000000000011 0000000000000111 0000000000000010 Zero 1001 0000000000000011 0000000000000111 0000000000000000

Thiết kế vi xử lý 16 bit trên nền tảng cơng nghệ FPGA

Trên Hình 3.13 là kết quả khi ALU thực hiện phép toán Add với đầu vào dữ liệu a = 3, b = 7 kết quả sau khi thực hiện là c = 10.

4.3.2. Mô phỏng khối dịch

Kết quả mô phỏng của khối dịch được thể hiện trong Bảng 4.3 và testbench trong Hình 4.2 và Hình 4.3.

Bảng 4.3 Kết quả của các phép toán dịch

Phép toán a Kết quả shftpass 0000000000000101 0000000000000101 shl 0000000000000101 0000000000001010 shr 0000000000000101 0000000000000010 rotl 0000000000000101 0000000000001010 rotr 0000000000000101 1000000000000010

Hình 4.2 Mơ phỏng hoạt động lệnh dịch trái của khối dịch

Hình 4.2 mơ tả hoạt động của lệnh dịch trái (shl). Với dữ liệu đưa vào là a = 0000000000000101 sau khi thực hiện dịch trái dữ liệu thu được tại đầu ra c = 0000000000001010.

Hình 4.3 Mơ phỏng hoạt động lệnh quay phải của khối dịch

Thiết kế vi xử lý 16 bit trên nền tảng công nghệ FPGA

4.3.3. Mô phỏng khối so sánh

Bảng 4.4 Bảng kết quả mơ phỏng khối so sánh

Phép tốn a b Kết quả

Bằng nhau (eq) 0000000000000101 0000000000001001 0 Không bằng nhau (neq) 0000000000000101 0000000000001001 1 Lớn hơn (gt) 0000000000000101 0000000000001001 0 Lớn hơn hoặc bằng (gte) 0000000000000101 0000000000001001 0 Nhỏ hơn (lt) 0000000000000101 0000000000001001 1 Nhỏ hơn hoặc bằng (lte) 0000000000000101 0000000000001001 1

Hình 4.4 Mơ phỏng testbench của khối so sánh

Khi thực hiện mô phỏng bộ so sánh như trên Hình 4.4. Dữ liệu đưa vào đầu vào a = 3 và b = 7, sau khi thực hiện lệnh không bằng (neq) thì kết quả đầu ra compout = 1.

4.3.4. Mơ phỏng khối CPU

Để có cái nhìn tổng thể về nguyên tắc hoạt động của vi xử lý vừa thiết kế. Bây giờ tác giả sẽ thực hiện mơ phỏng tồn bộ hoạt động CPU thông qua thực hiện một lệnh đơn giản là lệnh loadI 1,10.

Ví dụ: Lệnh loadI 1,10 // Load giá trị hex 10 vào thanh ghi số 3.

Giá trị trong bộ nhớ:

“0010000000000001”, --- 0 loadI 1, # -- load source address “0000000000010000”, --- 1 10 – hex

Thiết kế vi xử lý 16 bit trên nền tảng công nghệ FPGA

Tại lần ready = 1 thứ nhất: Khối CPU đọc giá trị data = 0010000000000001 trong bộ nhớ và lựa chọn thanh ghi số 1 (001).

Hình 4.5 Mô phỏng testbench của CPU đọc data

Lần ready tiếp theo, khối CPU đọc giá trị data = 0000000000010000 trong bộ nhớ và thực hiện lệnh load giá trị đó vào thanh ghi số 1.

Hình 4.6 Mơ phỏng testbench của CPU đọc data

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

Như vậy đến hết chương này chúng ta đã hoàn thành việc thiết kế bộ vi xử lý 16 bit và thực hiện mô phỏng từng thành phần bên trong như khối ALU, khối dịch, khối so sánh và tổng thể khối CPU. Qua đó chúng ta đã kiểm tra được hoạt động của các thành phần được thiết kế và tổng thể thiết kế CPU. Từ đó giúp tác giả có thể hiểu được tồn bộ quy trình thiết kế một vi xử lý từ những bước đơn giản

Thiết kế vi xử lý 16 bit trên nền tảng công nghệ FPGA

CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Sau thời gian thực hiện đề tài, học viên đã tìm hiểu được những kiến thức tổng quát về FPGA và các phương pháp thiết kế vi xử lý đồng thời đã có những triển khai thiết kế vi xử lý trên FPGA của một số hãng nghiên cứu. Từ đó học viên đã có những đánh giá và lựa chọn một mơ hình CPU phù hợp để triển khai trên FPGA của hãng Xilinx, thực hiện triển khai thiết kế và mô phỏng trên phần mềm ISE và cuối cùng là đánh giá kết quả thiết kế đã thực hiện. Như vậy, mục đích đề ra khi lựa chọn đề tài luận văn đã được học viên thực hiện đầy đủ. Tuy nhiên, những nghiên cứu về thiết kế vi xử lý và việc triển khai vi xử lý vào phần cứng thực tế còn nhiều điểm

Một phần của tài liệu Thiết kế vi xử lý 16 bit trên nền tảng công nghệ fpga (Trang 55)

Tải bản đầy đủ (PDF)

(82 trang)