Luận văn tốt nghiệp Thiết Kế CPU 8 Bit dùng VHDL
LỜI NÓI ĐẦU
Một thành phần quan trọng của máy tính là bộ xử lý trung tâm (CPU).
Có rất nhiều công sức được đầu tư vào việc chế tạo các CPU nhằm tạo ra
các máy tính đáp ứng yêu cầu ngày càng cao của xã hội. Đó cũng chính là
nhiệm vụ mà đề tài này cần thực hiện. Để thiết kế một CPU với đầy đủ
chức năng cần một công cụ đủ mạnh. Trong số những công cụ đó, ngôn ngữ
mô tả phần cứng (VHDL) sẽ được sử dụng trong đề tài này
Từ ngôn ngữ VHDL các nhà thiết kế phần cứng có thể thiết kế ra
những thiết bò phần cứng như CPU, bộ vi điều khiển… một cách nhanh chóng
và cũng có thể thực hiện mô phỏng và kiểm tra khả năng hoạt động của
thiết bò trước khi đưa vào sản xuất, nhờ vậy có thể giảm bớt thời gian, chi
phí sản xuất... Do khả năng và tính hiệu quả của ngôn ngữ VHDL là động
cơ chính để chúng em chọn đề tài “Thiết kế CPU dùng ngôn ngữ VHDL”
làm đề tài cho luận văn tốt nghiệp của mình.
Chúng em chân thành biết ơn toàn thể quý thầy cô trong Khoa Công
Nghệ Thông Tin Trường Đại Học Kỹ Thuật Công Nghệ TPHCM, xin chân
thành cảm ơn thầy Lê Mạnh Hải đã tận tình hướng dẫn chúng em thực hiện
luận văn này.
Trong thời gian ngắn, có lẽ chưa đủ để nghiên cứu sâu một đề tài
tương đối lớn, nên chắc chắn không thể tránh khỏi thiếu sót. Kính mong quý
thầy cô góp ý để chúng em tiến bộ thêm.
Tp.HCM, ngày 03 tháng 05 năm 2003
Huỳnh Thò Mộng Tuyền
Dương Huỳnh Thanh Tùng
GVHD: Lê Mạnh Hải Trang 1
Luận văn tốt nghiệp Thiết Kế CPU 8 Bit dùng VHDL
GIỚI THIỆU
I. MỤC ĐÍCH
Luận văn này thực hiện một số công việc như sau.
- Thiết kế CPU bằng ngôn ngữ VHDL.
- Thực hiện mô phỏng chương trình trên chíp FLEX10K của hãng
Altera.
II. BỐ CỤC
- Tìm hiểu một số khái niệm của của ngôn ngữ VHDL và mối quan hệ
giữa VHDL với phần cứng.
- Công nghệ FPGA: tìm hiểu một số thiết bò FPGAs.
- Thiết kế CPU: thực hiện mô tả nhiệm vụ của CPU, tập lệnh của
CPU, chế độ đòa chỉ lệnh của CPU, hành vi của CPU, các thành phần của
CPU và viết chương trình để thực hiện một số lệnh của CPU.
- Thực hiện mô phỏng chương trình dùng phần mềm MAX+Plus II.
GVHD: Lê Mạnh Hải Trang 2
Luận văn tốt nghiệp Thiết Kế CPU 8 Bit dùng VHDL
MỤC LỤC
Trang
LỜI NÓI ĐẦU................................................................................................1
GIỚI THIỆU..................................................................................................2
I. MỤC ĐÍCH...............................................................................................2
II. BỐ CỤC..................................................................................................2
MỤC LỤC......................................................................................................3
Phần 1 VHDL VÀ FPGA..........................................................................6
I. GIỚI THIỆU............................................................................................6
1. Giới thiệu về VHDL................................................................................6
2. Các đặc điểm của VHDL ........................................................................6
II. CÁC KHÁI NIỆM CƠ BẢN .................................................................6
1. Các khối...................................................................................................6
2. Giới thiệu hai đơn vò thiết kế cơ bản của VHDL.....................................7
2.1. Khai báo thực thể ...................................................................8
2.2. Thực thể kiến trúc.................................................................................8
3. Gói............................................................................................................9
III. MỐI QUAN HỆ GIỮA NGÔN NGỮ VHDL VÀ PHẦN CỨNG.........9
1. Các thành phần của VHDL để mô tả phần cứng.....................................9
1.1. Các kiểu của VHDL .............................................................................9
1.2. Các đối tượng của ngôn ngữ VHDL....................................................10
1.3. Các toán tử số học ..............................................................................11
1.3.1. Các toán tử luận lý...........................................................................11
1.3.2. Các toán tử quan hệ.........................................................................11
1.3.3. Các toán tử cộng..............................................................................11
1.3.4. Các toán tử dòch...............................................................................11
1.3.5. Các toán tử một ngôi........................................................................12
1.3.6. Các toán tử nhân..............................................................................12
1.4. Các lệnh tuần tự .................................................................................12
1.4.1. Phép gán biến số..............................................................................12
1.4.2. Phép gán tín hiệu.............................................................................12
1.4.3. Lệnh điều kiện.................................................................................12
1.4.4. Lệnh lặp...........................................................................................13
2. Sự thể hiện phần cứng bằng VHDL ......................................................13
2.1. Các mạch tổ hợp.................................................................................13
GVHD: Lê Mạnh Hải Trang 3
Luận văn tốt nghiệp Thiết Kế CPU 8 Bit dùng VHDL
2.1.1. Các cổng luận lý..............................................................................13
2.1.2. Các toán tử số học............................................................................13
2.1.3. Các toán tử dòch và quay..................................................................14
2.1.4. Bộ dồn kênh.....................................................................................14
2.2. Các mạch đồng bộ .............................................................................15
2.2.1. Mạch cài..........................................................................................15
2.2.2. Thanh ghi.........................................................................................16
IV. CÔNG NGHỆ FPGA..........................................................................16
1. Các loại FPGA.......................................................................................17
1.1. Các công nghệ lập trình chíp..............................................................18
1.1.1. Công nghệ lập trình dùng RAM tónh................................................18
1.1.2. Công nghệ lập trình dùng cầu chì nghòch.........................................19
1.1.3. Công nghệ lập trình EPROM và EEPROM......................................20
1.2. Các loại FPGA trên thò trường ...........................................................21
2. Một số ứng dụng của FPGA...................................................................22
3. Thiết bò Max, Flex ................................................................................23
3.1. MAX...................................................................................................24
3.2. FLEX...................................................................................................24
Phần 2 THIẾT KẾ CPU...................................................................25
I. NHIỆM VỤ............................................................................................25
II. TỔ CHỨC BỘ NHỚ CỦA CPU...........................................................25
III. TẬP LỆNH CỦA CPU.......................................................................26
IV. CHẾ ĐỘ ĐỊA CHỈ CỦA LỆNH.........................................................27
V. HÀNH VI CPU.....................................................................................29
1. Đònh thời và đồng hồ.............................................................................29
1.1. Giản đồ đònh thời đáp ứng ngắt quãng................................................29
1.2. Giản đồ chu kỳ thực hiện lệnh 1 byte.................................................30
1.3. Giản đồ đònh thời chu kỳ thực hiện các lệnh rẽ nhánh và lệnh jmp ở chế
độ trực tiếp.................................................................................................30
1.4. Giản đồ đònh thời chu kỳ thực hiện lệnh lda, adc, sbc.........................31
1.5. Giản đồ đònh thời chu kỳ thực hiện lệnh jsr........................................31
1.6. Giản đồ đònh thời chu kỳ thực hiện lệnh sta........................................31
1.7. Giản đồ đònh thời chu kỳ thực hiện lệnh lda, and, adc, sbc.................32
1.8. Giản đồ đònh thời chu kỳ thực hiện lệnh sta........................................32
2. Khối phục vụ chương trình.....................................................................33
3. Mô tả hành vi cpu..................................................................................36
VI.CÁC THÀNH PHẦN CỦA CPU.........................................................38
1. Chức năng của các thành phần của CPU...............................................39
GVHD: Lê Mạnh Hải Trang 4
Luận văn tốt nghiệp Thiết Kế CPU 8 Bit dùng VHDL
2. Thực hiện lệnh ......................................................................................39
3. Mô tả các thành phần.............................................................................41
3.1. Đơn vò luận lý số học..........................................................................41
3.2. Đơn vò dòch chuyển.............................................................................44
3.3. Thanh ghi trạng thái............................................................................45
3.4. Thanh ghi tích luy................................................................................46
3.5. Thanh ghi lệnh....................................................................................47
3. Bộ điều khiển của CPU.........................................................................48
Phần 3 MÔ PHỎNG...............................................................................62
I. MAX+PLUSII........................................................................................62
1. Tổng Quát..............................................................................................62
2. Cách sử dụng Max+PlusII......................................................................62
2.1. Thực hiện soạn thảo và dòch một chương trình...................................63
2.2. Thực hiện kiểm tra kết quả sau khi đã tổng hợp mạch.......................64
2.3. Thoát khỏi Max+plusII.......................................................................65
II. MÀN HÌNH KHI MÔ PHỎNG............................................................65
1. Khối luận lý số học ALU.......................................................................65
2. Khối dòch chuyển SHU..........................................................................66
3. Khối điều khiển ....................................................................................67
4. Sơ đồ chân CPU.....................................................................................69
5. Màn hình mô phỏng lệnh.......................................................................70
Phần 4 KẾT LUẬN KIẾN NGHỊ.......................................................71
I. NHẬN XÉT CHUNG.............................................................................71
a. Những mặt đạt được...............................................................................71
b. Những vấn đề tồn tại.............................................................................71
II. HƯỚNG PHÁT TRIỂN.......................................................................71
III. ĐÁNH GIÁ.........................................................................................71
IV. KẾT LUẬN ........................................................................................71
Phần 5 TÀI LIỆU THAM KHẢO.....................................................73
GVHD: Lê Mạnh Hải Trang 5
Luận văn tốt nghiệp Thiết Kế CPU 8 Bit dùng VHDL
Phần 1 VHDL VÀ FPGA
Phần I giới thiệu ngôn ngữ VHDL và một số đặc điểm chính của nó.
Phần II trình bày các khái niệm cơ bản về khối, thực thể, kiến trúc và gói
của ngôn ngữ VHDL. Phần III trình bày mối quan hệ mật thiết giữa ngôn
ngữ VHDL và phần cứng. Phần IV giới thiệu về công nghệ FPGA để xây
dựng các mạch tích hợp.
I. GIỚI THIỆU
1. Giới thiệu về VHDL
VHDL (VHDL là từ viết tắt của Very Hight Speed Integrated Circuit
Hardware Description Language) là một ngôn ngữ lập trình đã được thiết kế
theo cách mô tả hành vi của hệ thống số.VHDL được phát triển vào những
1980.
VHDL có nhiều đặc điểm thích hợp mô tả hành vi của các thành phần
thiết bò điện tử từ những cổng luận lý đơn giản đến những bộ vi xử lý phức
tạp. Đặc điểm của VHDL là cho phép mô tả chính xác hành vi của những
mạch điện tử.
Cũng giống như ngôn ngữ Pascal, C và C++, VHDL bao gồm những
đặc điểm hữu ích cho kỹ thuật thiết kế những cấu trúc và trình bày những
đặc điểm dữ liệu. Không giống như những ngôn ngữ lập trình khác, VHDL
cung cấp những đặc điểm cho phép để mô tả những sự kiện xảy ra. (xem[1])
2. Các đặc điểm của VHDL
Một số đặc điểm chính của ngôn ngữ VHDL (xem[4])
* Đặc điểm tổng quát: VHDL có thể được sử dụng để lập tài liệu
thiết kế, thiết kế mức độ cao, mô phỏng tổng hợp và kiểm tra phần cứng.
VHDL cho phép mô tả phần cứng từ mức hệ thống đến mức cổng, hỗ trợ
tính đồng thời nghóa là từ các hợp phần nhỏ đến lớn hoạt động tại một thời
điểm.
* Hỗ trợ phân cấp thiết kế: Đây là đặc tính thiết yếu của ngôn ngữ
phần cứng đa cấp. Thiết kế chứa một mô tả giao diện và một số phần độc
lập để mô tả hoạt động. Hoạt động của hệ thống có thể được đặc tả dựa trên
chức năng hoặc dựa trên cấu trúc của những phần nhỏ hơn của chúng. Đặc
tả cấu trúc các hợp phần có thể được thực hiện ở tất cả các cấp thiết kế.
* Có thư viện hỗ trợ: Ngôn ngữ cung cấp cơ chế để truy cập đến
nhiều thư viện khác nhau. Thư viện không chỉ chứa đặc tả giao diện của
GVHD: Lê Mạnh Hải Trang 6
Luận văn tốt nghiệp Thiết Kế CPU 8 Bit dùng VHDL
thiết kế, mà còn chứa một số đặc tả của hệ thống. Các đặc tả và các mẫu có
thể dựa vào thư viện sau khi được dòch bởi chương trình dòch.
* Có lệnh tuần tự: Khi người thiết kế phân chia hệ thống thành
những hợp phần đồng thời hay phần con, tiếp đó người thiết kế có thể mô tả
chi tiết hoạt động bên trong bằng những cấu trúc ngôn ngữ lập trình tuần tự
như các lệnh case, if – then – else, loop,…Các lệnh tuần tự cung cấp phương
pháp đơn giản để tạo ra các hợp phần phần cứng dựa trên chức năng của
chúng.
* Thiết kế tương thích chung: Để thiết kế tổng quát ngôn ngữ cho
phép người thiết kế đặt cấu hình mô tả hợp phần có thông số chung trong
thiết kế. Mô tả tương thích chung có thể thay đổi kích thước đặc tính vật lý,
đònh thời đặc tính tải, và môi trường hoạt động của thiết kế.
* Khai báo kiểu và cách dùng: Ngôn ngữ VHDL cho phép mô tả các
kiểu bit, Boolean, integer, floating, kiểu liệt kê, kiểu dãy, bản ghi. Ngoài ra
còn hỗ trợ các kiểu do người sử dụng đònh nghóa. Ngôn ngữ VHDL cũng cho
phép đònh nghóa lại các toán tử của ngôn ngữ bởi người sử dụng.
* Sử dụng các chương trình con: Ngôn ngữ VHDL cho phép đònh
nghóa các hàm, thủ tục, các chng trình con có thể sử dụng để biến đổi các
kiểu, đònh nghóa đơn vò luận lý, đònh nghóa lại toán hạng, đònh nghóa toán tử
mới, và các ứng dụng khác trong ngôn ngữ lập trình.
* Điều khiển đònh thời: Ngôn ngữ VHDL là cho phép đặc tả đònh thời
ở tất cả các cấp như là: đặt giá trò của tín hiệu, thời gian trễ, đònh nghóa tín
hiệu đồng bộ, đặt độ rộng xung …
II. CÁC KHÁI NIỆM CƠ BẢN (xem[1])
1. Các khối
VHDL được mô tả thành những khối, khối đầu tiên là đơn vò thiết kế.
Có 5 loại đơn vò thiết kế được phân thành hai phần là phần mô tả kiến
trúc phần cứng và phần mềm.
+Phần cứng gồm có: Thực thể (entity), cấu hình (configuration), kiến
trúc (architecture)
+Phần mềm gồm có: gói (package) và thân gói (package body).
2. Giới thiệu hai đơn vò thiết kế cơ bản của VHDL
Hai đơn vò thiết kế cơ bản của VHDL là Entity declaration và
Architecture body.
GVHD: Lê Mạnh Hải Trang 7
Luận văn tốt nghiệp Thiết Kế CPU 8 Bit dùng VHDL
Một Entity là một mô hình sử dụng một khai báo thực thể và ít nhất có
một thực thể kiến trúc. Khai báo thực thể là mô tả tổng quát bên ngoài của
một thực thể, ví dụ như: tên các tín hiệu input, output. Thân của kiến trúc
(Architecture body) là đi vào đặc tả bên trong của một thực thể, ví dụ thiết
lập sự nối kết liên tục của các thành phần mà đại diện cho cấu trúc của một
thực thể, hoặc tập hợp tất cả các phát biểu đồng thời hay liên tục mà đại
diện cho sự xử lý của thực thể.
-Mô hình của thực thể
Hình 1.
2.1. Khai báo thực thể (Entity Delaration)
Khai báo thực thể là chỉ ra tên của mô hình cần thiết kế và danh sách
các cổng giao tiếp. Cổng là những tín hiệu mà thực thể dùng để giao tiếp
với những mô hình khác trong môi trường tổng quát của nó.
Ví dụ: Entity mach_cong is
Port(a,b : in bit; s1,c : out bit ) ;
End mach_cong ;
2.2. Thực thể kiến trúc (Architecture Body)
-Mô tả chi tiết một thực thể được chỉ ra bởi kiến trúc của thực thể như
sau
Ví dụ: mô hình cho thực thể mach_cong, ở dạng cấu trúc (structural):
Architecture arc_mach_cong of mach_cong is
Component Xor
Port (X, Y: in bit; Z, T: out bit);
End component;
Component And
Port (L, M: input; N, P: out bit);
End component;
Begin
G1: Xor port map (A, B, Sum);
G2: And port map (A, B, C);
GVHD: Lê Mạnh Hải Trang 8
Sự trừu tượng phần cứng
của một hệ thống số
Khai báo thực thể
Thân kiến trúc
Luận văn tốt nghiệp Thiết Kế CPU 8 Bit dùng VHDL
End arc_mach_cong;
Thực thể kiến trúc có tên là “arc_mach_cong”. Dùng những thành
phần có sẵn của ngôn ngữ VHDL như cổng And, Xor để nối kết chúng lại
với nhau tạo thành một cấu trúc cho thực thể.
3. Gói
Trong môi trường thiết kế phần cứng cần phải nhóm các hợp phần hay
các tiện ích dùng cho việc mô tả các hợp phần. Những cấu trúc VHDL để
mô tả các tiện ích và môi trường là các đònh nghóa kiểu và chương trình con.
Những hợp phần và tiện ích như vậy có thể được nhóm lại bằng cách sử
dụng khối. Như ví dụ sau, cách khai báo khối chứa các hợp phần và tiện ích
có thể tham khảo được từ các thực thể và các kiến trúc.
Cú pháp: Package tên của gói is
Khai báo các thành phần của gói
End tên của gói ;
Trong phần thân khối chứa những đònh nghóa chương trình con và các
tiện ích được dùng bởi chương trình con
Package body tên của gói is
Khai báo các thành phần trong thân của gói
End tên của gói ;
Ngôn ngữ VHDL cho phép sử dụng các thư viện và liên kết các hợp
phần phụ của thiết kế với các phần tử của thư viện khác
III. MỐI QUAN HỆ GIỮA NGÔN NGỮ VHDL VÀ PHẦN CỨNG
Trong phần này trình bày hai vấn đề là các thành phần của ngôn ngữ
VHDL để thực hiện việc mô tả phần cứng và sự thể hiện phần cứng bằng
ngôn ngữ VHDL.
Phần 1 trình bày các kiểu của VHDL, các đối tượng của VHDL, các
toán tử, các lệnh tuần tự.
Phần 2 các vấn đề về mạch tổ hợp và mạch đồng bộ được trình bày.
1. Các thành phần của VHDL để mô tả phần cứng
1.1. Các kiểu của VHDL (xem [2, 4])
Trong ngôn ngữ VHDL có các kiểu sau:
- Kiểu liệt kê được đònh nghóa bằng cách liệt kê danh sách các giá trò,
mỗi thành phần của danh sách là một tên dành riêng hoặc là một ký tự số.
GVHD: Lê Mạnh Hải Trang 9
Luận văn tốt nghiệp Thiết Kế CPU 8 Bit dùng VHDL
Ví dụ: Type STD_LOGIC is (‘U’,’X’,’0’,’1’,’H’,’-’);
Type STATE_TYPE is (HALT, READY, RUN, ERROR);
- Kiểu nguyên có hai loại:
+ Kiểu nguyên được đònh nghóa như vùng con của kiểu tổng quát
đã được cài sẵn và các giới hạn phải được khai báo.
Ví dụ: Type LENGTH is range 0 to 1000;
Type BYTE_INT is range -128 to 127;
+ Kiểu nguyên được đònh nghóa bởi người sử dụng.
Ví dụ: Type MY_INTEGET is INTEGER range 0 to 1000;
Signal MY_INT: MY_INTEGER;
- Kiểu mảng dùng để đònh nghóa một tập chỉ số.
Ví dụ: Type WORD is array (10 down to 0) of bit;
- Kiểu record dùng để đònh nghóa tập các kiểu khác nhau.
Ví dụ: Type CODE_TYPE is (NONE, DATA, STATMT);
Type ITEM_TYPE is record
CODE: CODE_TYPE;
INT: INTEGER;
End record;
1.2. Các đối tượng của ngôn ngữ VHDL (xem[1])
Trong ngôn ngữ VDHL có một số đối tượng như hằng, biến, tín hiệu.
- Hằng: là giá trò được xác đònh trong suốt thời gian khởi tạo, các giá trò
này không đổi trong suốt quá trình thực thi.
Ví dụ: type TAB is array (BIT, BIT) of BIT;
Constant AND_TAB: TAB := ((‘0’,’0’),(‘0’,’1’));
- Biến: Giá trò của biến được cập nhật tức thời khi được gán.
Có 2 loại biến, biến cục bộ và biến toàn cục.
+ Biến cục bộ có thể được khai báo trong các chương trình con
hoặc trong các quá trình và quan trọng là trong quá trình tổng hợp nơi
mà chúng có thể suy ra các phần tử nhớ.
+ VHDL đồng thời ràng buộc thu hẹp sự sử dụng các biến toàn
cục đối với sự miêu tả cấp hệ thống.
-Tín hiệu:
GVHD: Lê Mạnh Hải Trang 10
Luận văn tốt nghiệp Thiết Kế CPU 8 Bit dùng VHDL
Trên board mạch in hoặc các mạch tích hợp thông tin được lan truyền
xuyên qua các dây dẫn. Trong ngôn ngữ VHDL các dây dẫn này gọi là “tín
hiệu”.
Các tín hiệu hiện hữu từ khi bắt đầu đến khi kết thúc của quá trình tái
tạo. Không tạo ra tín hiệu mới hoặc không nối kết vật lý với các tín hiệu
được cho phép trong thời gian tái tạo.
Các tín hiệu không có chứa đựng như các biến. Các tín hiệu như là
những đối tượng và có các kết nối được cố đònh với các tín hiệu khác.
Ví dụ: Signal A1, A2: BIT_VECTOR(DATA’range) ;
Signal A3: BIT;
1.3. Các toán tử số học (xem [2])
1.3.1. Các toán tử luận lý: or, and, nor, nand, xor, nor nhận các toán hạng
kiểu: bit, boolean, vector.
Ví dụ : Signal s, x,y: bit_vector(1 downto 0);
Signal r, a, b: bit;
Signal t, d, e, f, g : boolean;
Begin
S <= x and y;
R <= (a and b) and c;
T <= d xor c xor f xor g;
End;
1.3.2. Các toán tử quan hệ: =, >, <, >=, < =
Toán tử quan hệ luôn luôn trả về giá trò boolean được mã hoá ‘0’ hoặc
‘1’. Kết quả là true nếu hai toán hạng có cùng giá trò.
Ví dụ: ‘0’< ‘1’ --.là true
‘A’ < ‘BC’ --. là true
‘10’ < ‘101’--. là also true
1.3.3. Các toán tử cộng: +, -, &
Các toán tử cộng và trừ được đònh nghóa cho các toán hạng số nguyên
Ví dụ: R < = a+b+c+1;
T<= [(a+b) +c) +1];
S< = (a+ b) + (c+2);
1.3.4. Các toán tử dòch: sll, srl, sla, sra, rol, ror
Ví dụ: Signal S, R1, R2, R3, R4, T1, T2, T3, T4: Bit_Vector (1 To 4);
BEGIN
R1 <= ’SLL’(S, 1);
GVHD: Lê Mạnh Hải Trang 11
Luận văn tốt nghiệp Thiết Kế CPU 8 Bit dùng VHDL
T2 <= S (2 TO 4) & ‘0’;
R2 <= ‘ROL’(S, 2);
...
1.3.5. Các toán tử một ngôi: “+”, “-” được dùng cho các kiểu số nguyên.
Ví dụ: SIGNAL R, A:INTEGER –4 TO 3;
BEGIN
R<=-A;
….
1.3.6. Các toán tử nhân: /, *, mod, rem
Phép chia “/”, phép nhân “*”, lấy phần nguyên “mod”, lấy số dư
“rem” được xem là trong nhóm toán tử nhân.
Ví dụ: Signal MEM: NATURAL range 0 to 3;
MEM <= (MEM + 1) mod 4;
1.4. Các lệnh tuần tự
1.4.1. Phép gán biến số
Phép gán biến được thực hiện bởi toán tử “:=” và thao tác này xảy ra
ngay lập tức khi tính toán. Do đó giá trò của biến chỉ thay đổi bởi lệnh gán
tiếp theo nếu giá trò mới khác với giá trò cũ.
Ví dụ: A:= 0;
WORD (3 to 4):= “10”;
1.4.2. Phép gán tín hiệu
Phép gán tín hiệu tương tự như phép gán biến nhưng hiệu quả của
lệnh chỉ xảy ra sau lệnh đồng bộ. Phép gán tín hiệu được thực hiện bởi toán
tử “<=”.
Ví dụ: signal <= A and B;
1.4.3. Lệnh điều kiện
* Phát biểu if: một phát biểu if bao gồm cả các nhánh elsif và else.
Cú pháp: IF biểu thức THEN câu lệnh;
ELSIF biểu thức THEN câu lệnh;
ELSE câu lệnh;
END IF;
* Phát biểu case: phát biểu case có thể dùng để thay thế cho phát biểu
if và nhiều phát biểu elsif.
Cú pháp: CASE Biểu thức IS
WHEN giá trò hằng=> câu lệnh;
GVHD: Lê Mạnh Hải Trang 12
Luận văn tốt nghiệp Thiết Kế CPU 8 Bit dùng VHDL
WHEN giá trò hằng => câu lệnh;
WHEN OTHERS => câu lệnh;
END CASE;
1.4.4. Lệnh lặp
• Phát biểu lặp: có 2 kiểu phát biểu lặp, đó là vòng lặp for và while.
* Vòng lặp For.
Cú pháp: For i in giá_trò to/downto giá_trò loop
End loop;
* Vòng lặp while.
Cú pháp: __loop_label:
WHILE __boolean_expression LOOP
Câu lệnh ;
END LOOP __loop_label;
2. Sự thể hiện phần cứng bằng VHDL (xem [4])
2.1. Các mạch tổ hợp
2.1.1. Các cổng luận ly ù : and, nand, or, xor, nor, not
Ví dụ mô tả cổng nor có 2 cổng vào như sau:
Entity nor2 is
Port (A, B: in bit; S: out bit);
End nor2;
Architecture comb of nor2 is
Begin
S<= A nor B;
End comb;
2.1.2. Các toán tử số học: Gồm 4 toán tử cơ bản cộng, trừ, nhân và chia.
Các toán tử này thường thực hiện trên kiểu dữ liệu số nguyên
(INTEGER). Trong ngôn ngữ VHDL các toán tử ‘+’, ‘-‘, ‘* ‘, ‘/’ đã được
đònh nghóa trước vì vậy có thể sử dụng mà không cần khai báo.
Ví dụ: Signal l1, l2 SUM_l: INTEGER range –16 to 15;
Signal N1, N2, SUM_N: INTEGER range 0 to 47;
SUM_l <= l1+l2;
SUM_N <= N1+N2;
GVHD: Lê Mạnh Hải Trang 13
Luận văn tốt nghiệp Thiết Kế CPU 8 Bit dùng VHDL
2.1.3. Các toán tử dòch và quay
Các toán tử dòch và quay được thực hiện trên các đối tượng được biểu
diễn theo kiểu bit_vector. Toán tử dòch và quay có thể phân biệt tính luận lý
và tính số học.
Tính luận lý
Phép dòch phải luận lý dòch một mảng sang phải kế tiếp xoá bit phải
nhất của mảng và thêm vào giá trò 0 ở bit trái nhất của mảng.
Phép dòch trái luận lý thực hiện dòch mảng sang trái xoá bit trái nhất
của mảng và thêm vào giá trò 0 ở bit phải nhất của mảng.
Ví dụ: Giá trò ban đầu 10100110
Dòch phải luận lý 01010011
Dòch trái luận lý 01001100
Tính số học
Phép dòch phải số học thực hiện dòch mảng sang phải và lấy bit trái
nhất của giá trò ban đầu làm bit trái nhất của giá trò sau khi dòch
Phép dòch trái số học thực hiện dòch mảng sang trái và lấy bit phải
nhất của giá trò ban đầu làm bit phải nhất của giá trò sau khi dòch.
Ví dụ: Giá trò ban đầu 10100101
Dòch phải số học 11010010
Dòch trái số học 01001011
2.1.4. Bộ dồn kênh
Chức năng cơ bản của bộ dồn kênh là để chọn lựa một đầu ra trong
nhiều đầu vào, trong khi đó mạch phân kênh thực hiện thao tác ngược lại,
một đầu vào được truyền đến một trong những đầu ra, các giá trò đầu ra
khác giữ giá trò trước của chúng.
Ví dụ: Entity MUX2 is
Port (A, B: in bit; Select_A: in bit; Z: out bit);
End MUX2;
Architecture FIRST of MUX2 is
Begin
Z <= (A and Select_A) or (B and not Select_A);
End FIRST;
GVHD: Lê Mạnh Hải Trang 14
Luận văn tốt nghiệp Thiết Kế CPU 8 Bit dùng VHDL
Sơ đồ phần cứng mô tả bộ dồn kênh.
Z
A
B
S E L E C T _ A
Hình 2.
2.2. Các mạch đồng bộ(xem[4])
Các phần tử đồng bộ tạo thành một họ rất lớn, nó chứa các mạch cài
và các thanh ghi là các phần tử nhớ.
Các cấu trúc tương đương của các mạch đồng bộ.
H a øm t o å h ơ ïp
H a øm t o å h ơ ïp
Đ o àn g h o à
Đ o àn g h o à
T a øi n g u y e ân
n h ơ ù
T a øi n g u y e ân
n h ơ ù
Hình 3.
2.2.1. Mạch cài
Mạch cài là tài nguyên bộ nhớ đơn giản nhất, đầu vào D được truyền
đến đầu ra Q khi tín hiệu điều khiển G tích cực nếu không thì giá trò trước
đó của D giữ nguyên trên Q.
Ví dụ: ENTITY LATCH IS
Port (G: in BIT; D: in BIT; Q: out BIT);
END LATCH;
Architecture A of LATCH IS
Begin
P: Process (G, D)
Begin
If G =’1’ Then Q<= D; End if;
End process P;
End A;
GVHD: Lê Mạnh Hải Trang 15
Luận văn tốt nghiệp Thiết Kế CPU 8 Bit dùng VHDL
2.2.2. Thanh ghi
Thanh ghi cũng tương tự như mạch cài nhưng dữ liệu được nhớ tại sườn
của lệnh thay vì mức của nó. Sự mô tả mạch cài và thanh ghi gần giống
nhau.
Ví dụ: Entity FF IS
Port (clk: in BIT; D: in BIT; Q: out BIT);
End FF;
Architecture A of FF IS
BEGIN
P_FF: process
Begin
If CLK =’1’ then Q <= D; End if;
End process P_FF;
End A;
IV. CÔNG NGHỆ FPGA (xem [4, 9])
Công nghệ FPGA (FPGA là từ viết tắt của Field Programmable Gate
Arrays) là công nghệ chế tạo mạch tích hợp mật độ cao. FPGA là một thiết
bò cấu trúc luận lý có thể lập trình được bởi người sử dụng mà không cần
đến một công cụ chế tạo mạch tích hợp.
Người thiết kế muốn tạo ra FPGAs tốt phải sử dụng công cụ thiết kế
được trợ giúp bởi máy tính gọi là CAD (computer -Aided - Design). Đầu
tiên thiết kế mạch luận lý ban đầu đòi hỏi một sơ đồ biểu diễn mạch hay
một mô tả VHDL hoặc đặc tả các biểu thức luận lý (Boolean). Từ các ngõ
vào ban đầu mô tả mạch được chuyển thành dạng chuẩn như các biểu thức
boolean sau đó được xử lý bằng công cụ tối ưu luận lý, chúng rút gọn các
biểu thức, sau đó các biểu thức Boolean đã tối ưu được truyền tới các khối
luận lý của FPGA thông qua chương trình ánh xạ công nghệ (technology
mapping). Bộ ánh xạ thực hiện tối thiểu số khối được dùng, tiếp theo
chương trình sắp xếp (Placement) thực hiện đặt mỗi khối vào trong dãy
FPGAs. Bước cuối cùng trong hệ thống CAD được thực hiện bằng phần
mềm điều khiển luồng (routing) chúng ấn đònh các đoạn dây FPGA và chọn
các chuyển mạch có thể lập trình phù hợp với các kết nối trong khối luận lý.
Sau khi thực hiện thành công các bước sắp xếp và tuyến ngõ ra của hệ
thống CAD được nạp vào đơn vò lập trình tạo ra chíp FPGA.
GVHD: Lê Mạnh Hải Trang 16
Luận văn tốt nghiệp Thiết Kế CPU 8 Bit dùng VHDL
Mô hình hệ hống CAD của FPGA
Đ ơ n v ò l a äp t r ì n h
R o u t i n g
P l a c e m e n t
A Ùn h x a ï c o ân g n g h e ä
T o ái ư u l o g i c
M a ïc h l o g i c b a n đ a àu
V
V
V
V
V
V
C o n f i g u r e d
F P G A
Hình 4.
1. Các loại FPGA
Các loại FPGA của nhiều công ty khác nhau có các đặc tính riêng
chúng có thể được chia làm 4 loại chính:
•Cấu trúc mảng đối xứng (symmetrical array)
•Cấu trúc hàng (row-based )
•Cấu trúc PLD phân cấp (PLD là viết tắt của Programmable Logic
Divice)
•Cấu trúc đa cổng (sea-of-gates)
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
M a ûn g đ o ái x ư ùn g
C a áu t r u ùc h a øn g
P L D p h a ân c a ápĐ a c o ån g
N o ái k e át
N o ái k e át
P L D
B l o c k
L o g i c
B l o c k
L o g i c B l o c k
L o g i c B l o c k
N o ái k e át
K e át n o ái
p h u û l e ân
L o g i c B l o c k
Hình 5.
GVHD: Lê Mạnh Hải Trang 17
Luận văn tốt nghiệp Thiết Kế CPU 8 Bit dùng VHDL
1.1. Các công nghệ lập trình chíp
Có nhiều cách hiện thực các phần tử lập trình, các công nghệ lập trình
đang sử dụng hiện nay là: RAM tónh, cầu chì nghòch (anti-fuse), EPROM
transistor và EEPROM transistor. Mặc dù các công nghệ lập trình khác
nhau nhưng chúng có chung tính chất là có thể cấu hình ở một trong hai
trạng thái làø: ON hoặc OFF. Các phần tử lập trình dùng để hiện thực các kết
nối lập trình giữa các khối luận lý của FPGA, một FPGA thông thường có
thể có hơn 100.000 phần tử lập trình. Do đó các phần tử lập trình phải có
các tính chất sau:
+ Chiếm càng ít diện tích của chíp càng tốt.
+ Có kháng trở thấp khi ở trạng thái ON và kháng trở cao khi ở trạng thái
OFF.
+ Có điện dung ký sinh thấp khi kết nối các đoạn dây.
+ Có thể chế tạo một cách tin cậy số lượng lớn phần tử lập trình trên một
chíp.
1.1.1. Công nghệ lập trình dùng RAM tónh
Công nghệ lập trình SRAM được sử dụng trong các FPGAs của nhiều
công ty như: Algotronix concurrent Logic, Plessey semiconductors, Xilinx.
Trong các FPGAs này, các kết nối lập trình được làm bằng transistor truyền
(pass-transistor) các cổng cho phép truyền (pass-gates) hay các bộ dồn kênh
(multiplexer), tất cả điều được điều khiển bằng ô nhớ (cell) SRAM.
r o u t i n g w i r e
r o u t i n g
w i r e
r o u t i n g
w i r e
p a s s - t r a s i t o r
R a m c e l l R a m c e l l
r o u t i n g
w i r e
r o u t i n g
w i r e
t r a n s m i s s i o n - g a t e
R a m c e l l
R a m c e l l t o l o g i c
c a l l i n p u t
M u l t i p l e x e r
Hình 6 Công nghệ lập trình ram tónh.
Trong trường hợp pass-transistor và pass-gates ở hình 6 SRAM cell điều
khiển cổng truyền ON hoặc OFF. Khi off giữa hai dây nối với pass-gates có
một trở kháng rất cao. Khi ON nó sẽ tạo ra một trở kháng thấp kết nối giữa
hai dây nối. Đối với bộ dồn kênh, SRAM cell điều khiển ngõ nhập nào của
các bộ dồn kênh sẽ được kết nối với ngõ ra của nó.
GVHD: Lê Mạnh Hải Trang 18
Luận văn tốt nghiệp Thiết Kế CPU 8 Bit dùng VHDL
1.1.2.Công nghệ lập trình dùng cầu chì nghòch (anti-fuse)
Công nghệ lập trình anti-fuse được sử dụng trong các FPGA của Actel
Corp, QuickLogic và CrossPoint Solution. Tuy anti-fuse được sử dụng trong
các loại FPGA có cấu tạo khác nhau, nhưng chức năng là như nhau. Một
anti-fuse bình thường sẽ ở trạng thái trở kháng cao, nhưng có thể bò nóng
chảy thành trạng thái trở kháng thấp khi được lập trình ở điện thế cao.
a. Cấu tạo anti-fuse của Actel
Anti-fuse của Actel được gọi là PLICE. Nó có cấu trúc hình chữ nhật
gồm 3 lớp: lớp dưới cùng chứa silic mang nhiều điện tích dương
(n+diffusion), lớp giữa là lớp điện môi (Oxy-Nitơ-Oxy cách điện) và lớp
trên cùng là Poly-Silic.
m e t a l 1 w i r e
P o l y - S i
m e t a l 2 w i r e
a n t i - f u s e
n + d i f f u s i o n
P o l y - S i
d i e l e c t r i c
o x i d e
s i l i c o n s u b s t r a t e
n + d i f f u s i o n
m a ët c a ét n g a n g
c a á u t r u ùc
Hình 7 công nghệ lập trình cầu chì nghòch PLICE.
Anti-fuse PLICE được lập trình bằng cách đặt một điện thế cao thích
hợp (18v) giữa hai đầu của anti-fuse và dòng điều khiển khoảng 5mA qua
thiết bò. Dòng và áp này tạo ra một nhiệt lượng đủ nóng bên trong lớp điện
môi làm nó nóng chảy và tạo ra một liên kết giữa poly-silic và n+diffusion.
Hai lớp dưới cùng và trên cùng của anti-fuse được nối với các dây kim loại
để khi lập trình anti-fuse sẽ tạo ra một kết nối có trở kháng thấp (300 đến
500 ohm) giữa hai dây kim loại.
b. Cấu tạo anti-fuse của QuickLogic
Anti-fuse của QuickLogic gọi là ViaLink. Nó tương tự như PLICE, cũng
có 3 lớp kim loại. Tuy nhiên Vialink sử dụng kim loại mức 1 cho lớp dưới
cùng, một hợp kim vô đònh hình cho lớp giữa và kim loại mức hai cho lớp
trên cùng. Vialink được lập trình bằng cách đặt điện thế 10v giữa các đầu
của nó. Khi dòng được cấp đủ trạng thái của silic vô đònh hình sẽ thay đổi
và tạo ra một liên kết dẫn điện giữa hai lớp kim loại.
GVHD: Lê Mạnh Hải Trang 19
Luận văn tốt nghiệp Thiết Kế CPU 8 Bit dùng VHDL
o x i d e
m e t a l 1
m e t a l 2
s i l i c v o â đ ò n h h ì n h
Hình 8 Công nghệ lập trình cầu chì nghòch ViaLink.
1.1.3. Công nghệ lập trình EPROM và EEPROM
Công nghệ lập trình EPROM được sử dụng trong các FPGA của Altera
Corp và Plus Logic. Công nghệ này giống như sử dụng trong bộ nhớ
EPROM. Không giống MOS Transistor, một EPROM Transistor gồm hai
cổng, một cổng treo (floating-gate) và một cổng chọn (select-gate). Cổng
treo được đặt giữa cổng chọn và kênh của transistor.
Đ i e ä n t r ơ û
l e ân n g u o àn
+ 5 V
G N Dw o r d l i n e
f l o a l i n g g a t e
s e l e c t g a t e
b i t l i n e
E P R O M t r a n s i s t o r
Hình 9 Công nghệ lập trình EPROM.
Ở trạng thái bình thường không có điện tích giữa cổng treo và transistor
có thể chuyển sang trạng thái ON một cách bình thường bằng cổng chọn.
Khi transistor được lập trình bằng một dòng điện lớn chạy giữa nguồn và
kênh thì một điện tích được giữ lại ở cổng treo. Điện tích này làm cho
transistor chuyển sang trạng thái OFF. Bằng cách này, EPROM transistor có
thể được tái lập trình bằng cách hủy bỏ lớp điện tích được giữ lại ở cổng
treo.
Trong hình 9 EPROM transistor được sử dụng trong FPGA theo cách
khác với SRAM và anti-fuse. Thay vì dùng cho lập trình kết nối hai dây
EPROM transistor được sử dụng để kéo xuống các ngõ nhập của logic
block. Như hình vẽ trên một đường dây gọi là word line được nối với cổng
chọn của EPROM transistor khi transistor chưa được lập trình ở trạng thái
ON, word line có thể làm cho bit line không nối với một ngõ nhập của logic
block và bò kéo về mức logic 0. Nhiều EPROM transistor ứng với nhiều
GVHD: Lê Mạnh Hải Trang 20
Luận văn tốt nghiệp Thiết Kế CPU 8 Bit dùng VHDL
word line khác nhau được nối với cùng một bit line , khi một điện trở kéo
lên nguồn nối với bit line mô hình này không những cho EPROM transistor
hiện thực các kết nối mà còn hiện thực các chức năng luận lý AND nối dây.
Nhược điểm của phương pháp này là các điện trở tiêu tốn năng lượng cố
đònh.
Một ưu điểm của EPROM transistor là chúng có thể tái lập trình mà
không cần bộ nhớ bên ngoài. Không giống như SRAM, EPROM transistor
không thể tái lập trình ngay trên bộ mạch
Phương pháp dùng EEPROM tương tự như EPROM nhược điểm của nó
là tốn gấp đôi diện tích chíp so với EPROM transistor và cần nhiều nguồn
điện thế mà các loại khác không cần
1.2. Các loại FPGA trên thò trường
Hiện nay trên thò trường có một số họ FPGA của các hãng như Xilinx,
Actel, Altera .v.v. . trong phần này trình kiến trúc của hãng Altera.
Kiến trúc cơ bản của Altera FPGA có cấu trúc nhóm phân cấp của các
PLD trong cấu trúc này sử dụng mảng hai chiều và một cấu trúc routing lập
trình được. Kiến trúc cơ bản của Altera FPGA dựa trên công nghệ lập trình
EPROM nó gồm một mảng lớn các khối lập trình được gọi là những khối
mảng luận lý (logic array Blocks) được kết nối với nhau bởi các nguồn tài
nguyên routing gọi là mảng lập trình nối liền nhau (Programmable
Interconnect Array). Có hai thế hệ Altera FPGA là FPM5000 và FPM7000.
Kiến trúc tổng quát của Altera
L A B L A B< - > < - > L A BL A B < - >< - >
L A B
< - >
I / O C o n t r o l B l o c k
L A B< - > < - >L A B
P I A
L A B< - > < - >L A B
< - >L A B< - > L A B
L A B L A B
L A B
L A BL A B
< - >
I / O C o n t r o l B l o c k
< - >
< - >
C
O
N
T
R
O
L
B
L
O
C
K
C
O
N
T
R
O
L
B
L
O
C
K
I / O
I / O
< - >
< - >
< - >
< - >
P I A = P r o g r a m m a b l e
I n t e r c o n n e c t
A r r a y
L A B = L o g i c A r r a y
B l o c k
Hình 10 Kiến trúc tổng quát của Altera FPGAs.
Altera FPGA có cấu trúc nhóm phân cấp gồm 2 mức một khối luận lý
là Macrocell mức này gọi là LAB và một block gọi là bộ mở rộng đường
GVHD: Lê Mạnh Hải Trang 21
Luận văn tốt nghiệp Thiết Kế CPU 8 Bit dùng VHDL
dây tích (expander product terms), số lượng macrocell trong mỗi LAB thay
đổi tuỳ theo loại Altera FPGA, mỗi macrocell gồm 3 cổng AND nối vào
cổng OR nối tiếp đến cổng XOR và một filp-flop, cổng XOR tạo ra output
của macrocell. Các ngõ nhập của macrocell xem như các cổng AND một
ngõ nhập vì chúng được tạo ra như các cổng AND nối dây của các tín hiệu.
Đường dây tích có thể là một tín hiệu trong PIA hay là từ bộ mở rộng đường
dây tích của LAB hoặc ngõ xuất của bất kỳ Macrocell nào, các tín hiệu ở
dạng thực hoặc bù nghóa là phép đảo có thể lập trình được (programmable
inversion) với mô hình này thì chức năng của LAB giống chức năng của
PLD nhưng đường dây tích ít hơn trên mỗi thanh ghi. Altera cho rằng điều
này sẽ làm cho LAB hiệu quả hơn bởi vì hầu hết các hàm logic không cần
có số đường dây tích lớn như trong PLD và LAB hỗ trợ mở rộng chức năng
bằng bộ mở rộng đường dây tích
Cấu trúc của Altera LAB
V
V
V
V
V
V
V
A r r a y o f
M a c r o c e l l
E x p a n d e r
P r o d u c t T e r n
A r r a y
P
I
A
Hình 11 Altera LAB.
2. Một số ứng dụng của FPGA
FPGA có thể được sử dụng trong hầu hết các ứng dụng mà hiện tại
đang dùng trong các chíp MPGA, PLD và SSI (Small Scale Integrated). Các
ứng dụng của FPGA có thể được liệt kê ra như sau:
Mạch tổ hợp là ứng dụng đặc biệt (Application-Specific Integrated
Circuit): FPGA là một công cụ có tính tổng quát, và hoàn toàn có thể hiện
thực được mạch logic số. Nó đặc biệt thích hợp cho việc hiện thực ASIC.
Một vài ứng dụng đã được ghi nhận như:1 megabit FIFO controller, kênh
giao tiếp IBM PS/2, DRAM controller, graphic engine, mạch nhận biết ký tự
qua hình ảnh, …
Ứng dụng trong các máy tính dựa trên nền các FPGA: một loại máy
tính mới hoàn toàn được ra đời nhờ vào các FPGA có thể tái lập trình được
ngay trên mạch của nó. Những máy tính này bao gồm các mạch được thiết
kế từ các FPGA. Ý tưởng này xuất phát từ việc dùng một chương trình phần
mềm để “dòch” vào phần cứng thay vì vào phần mềm theo cách thông
GVHD: Lê Mạnh Hải Trang 22
Luận văn tốt nghiệp Thiết Kế CPU 8 Bit dùng VHDL
thường. Phần cứng này sau đó được hiện thực bằng cách lập trình các board
mạch FPGA. Phương pháp mới này có 2 thuận lợi cơ bản là:
Không yêu cầu quá trình lấy lệnh như là các bộ vi xử lý truyền thống
bởi vì chính bản thân phần cứng là sự thể hiện của các lệnh đó. Ưu thế này
có thể giúp cho tốc độ của mạch tăng lên đến hàng trăm lần.
Loại thiết bò mới này còn có thể hỗ trợ các quá trình xử lý song song ở
mức độ rất cao, dẫn đến tốc độ xử lý tăng vọt.
ng dụng vào việc tái cấu hình phần cứng (On-Site Re- Configuration
of Hardware): Công nghệ FPGA còn được yêu thích ở chỗ nó cho phép thay
đổi được cấu trúc các máy đã sản xuất hoàn chỉnh hay đã được sử dụng.
Ngay cả đối với các máy ở xa cũng có thể được thay đổi, bổ sung cho thích
ứng hoặc ngay cả chỉnh sửa lại sự sai sót của công việc thiết kế mạch đó.
Loại FPGA thích hợp nhất cho việc tái cấu hình này là loại chứa những công
tắc có thể tái lập trình được.
3. Thiết bò Max, Flex
Công ty Altera là một nhà chế tạo hàng đầu về PLD, Altera tạo ra
PLD trong phạm vi từ các thiết bò có thể được dùng để thay thế tương đương
300 cổng TTL đến các thiết bò có thể thay thế 250000 cổng.
Một board mạch in lớn về các chíp có thể được thay thế bằng một PLD
đơn, điều này sẽ làm giảm được kích thước của hệ thống số và cũng làm
giảm được giá thành chế tạo và chạy thử. PLDs cũng phổ biến vì chúng có
thể xóa được. Các PLD có thể xóa được cho phép nhà thiết kế lập trình một
PLD, và chạy thử chúng trên một hệ thống thực, và làm thay đổi khi cần
thiết. Lập trình lại cho một con chíp thì nhanh hơn nhiều so với việc viết lại
một bread-board hoặc làm lại một board với nhiều dây dẫn chằn chòt. Cuối
cùng một thiết kế được thực thi trong một PLD có thể dễ dàng được vận
chuyển. Thiết kế này có thể được thực thi trong nhiều PLD khác nhau.
Một PLD tiêu biểu chứa một dãy các tài nguyên logic như là các cổng,
các flipflop, các thanh ghi and/or, với các kết nối bên trong giữa các tài
nguyên logic có thể lập trình được. Các kết nối bên trong này có thể được
bổ sung với các đường fusible (nấu chảy được), mà trong trường hợp này
thiết bò chỉ có thể được lập trình một lần. Chế độ kết nối này thì phổ biến
trong các PLD ban đầu như là 16L8 và 22L10 PAL's (chúng phổ biến trong
nhiều năm). Trong các PLD, gần đây các kết nối bên trong có thể được bổ
sung bằng các mạch chuyển đổi CMOS được điều khiển bằng RAM tónh,
trong trường hợp này thiết bò có thể được lập trình lại bằng điện, mà không
tách ra khỏi mạch, các PLD khác bao gồm các PLD mà bạn sẽ dùng trong
GVHD: Lê Mạnh Hải Trang 23
Luận văn tốt nghiệp Thiết Kế CPU 8 Bit dùng VHDL
lớp (class) này sẽ có các kết nối bên trong mà có thể được lập trình bằng
điện và xóa bằng đèn tử ngoại UV (UV là viết tắt của ultraviolet).
Có nhiều thiết bò lập trình được của các hãng khác nhau ở đây chỉ giới
thiệu một vài thiết bò lập trình thông dụng của hãng Altera
3.1. MAX
Altera MAX gồm có MAX9000, MAX7000, MAX5000
- Họ MAX9000 là thế hệ thứ 3 của kiến trúc nhiều ma trận mảng
(Multiple Array Matrix) bao gồm Max9000 và MAX9000A là những
EEPROM cơ bản gồm những thiết bò có khả năng lập trình logic và xoá
(EPLD) : EPM9320, EPM9320A, EPM9400, EPM9480, EPM9560A.
MAX9000 EPLDs phù hợp cho những kế hoạch đòi hỏi khả năng hiện thực
giá trò xuất nhập ở mức cao, có mật độ từ 320 đến 560 Macrocells khoảng
6000 đến 12000 cổng, họ MAX9000 có thời gian trễ từ 10ns đến 20ns và
hiệu xuất tiêu biểu là 145MHz, MAX9000 cho phép người thiết kế kết hợp
những thiết bò có dung lượng nhỏ vào trong một thiết bò MAX900, điều này
giúp tiết kiệm không gian q giá trên board mạch làm giảm giá thành sản
phẩm và giảm thời gian chậm trễ cho việc hoàn thành sản phẩm.
-Họ MAX7000 là thế hệ thứ 2 của kiến trúc ma trận mảng gồm có
MAX7000, MAX7000A, MAX7000B, MAX7000E, MAX7000S và
MAX7000AE là những EEPROM được chế tạo theo công nghệ CMOS,
MAX7000 có mật độ từ 32 đến 512 macrocells, có thời gian delay 3,5ns.
Thiết bò MAX7000 thường hoạt động với điện thế 5v, 3.3v, 2.5v
3.2. FLEX
Altera FLEX gồm có FLEX10K, FLEX8000 và FLEX6000
-FLEX10K có kiến trúc cơ bản Flexible Logic Element Matrix. Họ
FLEX10K gồm có FLEX10K, FLEX10KA, FLEX10KB, FLEX10KE là
những SRAM gồm có EPF10K10, EPF10K20, EPF10K30, EPF10K40,
EPF10K50, EPF10K70, EPF10K100. Altera FLEX10K được nhúng vào
trong họ lập trình logic nó mở ra tính linh động, tính mềm dẻo của lối lập
trình luận lý theo kiểu lập trình truyền thống. Nó là hai cấu trúc logic đầy
đủ duy nhất nhúng vào mảng và mảng logic. Nó có khoảng 10000 đến
250000 cổng tiêu biểu. FLEX10K mở ra 3 quá trình, mỗi một thế hệ tiếp
theo cung cấp sự thực thi cao hơn, hạ giá thành, làm giảm sự thiệt hại.
GVHD: Lê Mạnh Hải Trang 24
Luận văn tốt nghiệp Thiết Kế CPU 8 Bit dùng VHDL
Phần 2 THIẾT KẾ CPU
Các khái niệm về ngôn ngữ VHDL, cú pháp và ngữ nghóa của nó đã
được trình bày ở phần 1. Phần này sử dụng cấu trúc của phần 1 để mô tả
CPU 8 bit.
Phần I nêu nhiệm vụ của CPU, phần II mô tả tổ chức bộ nhớ của CPU,
phần III trình bày tập lệnh CPU, phần IV trình bày chế độ đòa chỉ của CPU,
phần V mô tả hành vi của CPU, phần VI trình bày các thành phần của CPU.
I. NHIỆM VỤ
Thiết kế một CPU 8 bit, CPU này có một thanh ghi tích luỹ, một bus
dữ liệu 8 bit và một bus đòa chỉ 12 bit. Nó thực hiện được một số phép tính
luận lý và số học cơ bản. CPU có một số lệnh nhảy và rẽ nhánh với các chế
độ đòa chỉ trực tiếp và gián tiếp. CPU cũng có một số lệnh gọi chương trình
con đơn giản, có một tín hiệu đồng hồ CLK, một tuyến ngõ ra 8 bit và hai
tuyến ngõ vào 8 bit có đòa chỉ là FFEh, FFFh.
II. TỔ CHỨC BỘ NHỚ CỦA CPU
CPU có khả năng đònh vò đòa chỉ 4096 byte nhớ thông qua bus đòa chỉ
12 bit. Bộ nhớ này phân chia thành 16 trang mỗi trang là 256 byte, trang đầu
tiên nằm trong CPU, 4 bit có trọng số cao nhất của tuyến đòa chỉ thiết lập
đòa chỉ trang (page), 8 bit có trọng số thấp nhất của nó chỉ độ dời (offset).
Bộ nhớ được phân thành 16 trang (page0 ->page15), nhưng bộ nhớ của CPU
vẫn được xử lý như bộ nhớ 4K liên tiếp nhau. Để đơn giản cho việc thiết kế
ta lấy đòa chỉ xuất nhập của CPU chính là đòa chỉ của ô nhớ FFEh và FFFh
là 2 cổng nhập và xuất của CPU.
Hình 12 mô tả trang và độ dời của CPU
1
0
O f f s e t
0
5
P a g e
0
6
0
4
0
1
0
0
0
3
1
1
0
2
0
7
0
8
0
9
06
.
P a g e 0 . .
.
4
F : 0 0 - F : F F
.
P a g e 2 . .
P a g e 1 4 . .
.
7
.
P a g e 1 5 . .
E : 0 0 - E : F F
5
M E M O R Y
2 : 0 0 - 2 : F F
3 1
0 : 0 0 - 0 : F F
.
1 : 0 0 - 1 : F F
P a g e 1 . .
2
Hình 12 Trang và độ dời của đòa chỉ CPU.
GVHD: Lê Mạnh Hải Trang 25