1. Trang chủ
  2. » Tất cả

Thiet ke mach dien bang may tinh

147 751 10
Tài liệu đã được kiểm tra trùng lặp

Đ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 147
Dung lượng 5,87 MB

Nội dung

Nhìn vào một hệ thống được mô tả bằng hai phương pháp trên dưới dạng hàm Boolean hay dạng sơ đồ ta không thể lập tức chỉ ra được các chỉ tiêu và chức năng chung nhất của hệ thống.. Với s

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

KHOA CÔNG NGHỆ ĐIỆN TỬ VÀ TRUYỀN THÔNG

Bài giảng:

THIẾT KẾ MẠCH ĐIỆN BẰNG MÁY TÍNH

(Tài liệu lưu hành nội bộ)

THÁI NGUYÊN - 2009

MỤC LỤC

Trang 2

Chương 1 8

GIỚI THIỆU VỀ PHƯƠNG PHÁP THIẾT KẾ SỐ 8

BẰNG NGÔN NGỮ MÔ TẢ PHẦN CỨNG 8

1.1 CÁC PHƯƠNG PHÁP THIẾT KẾ TRUYỀN THỐNG 9

1.1.1 Phương pháp thiết kế dùng hàm Boolean 9 1.1.2 Phương pháp thiết kế dựa trên sơ đồ 9 1.1.3 Nhược điểm của các phương pháp thiết kế truyền thống 10 1.2 PHƯƠNG PHÁP THIẾT KẾ SỐ BẰNG NGÔN NGỮ MÔ TẢ PHẦN CỨNG .10

1.3 CÁC QUÁ TRÌNH THỰC HIỆN THIẾT KẾ SỐ BẰNG NGÔN NGỮ MÔ TẢ PHẦN CỨNG TRÊN FPGA 12

Chương 2 17

GIỚI THIỆU VỀ VI MẠCH LOGIC KHẢ TRÌNH 17

VÀ GIẢI PHÁP CỦA XILINX 17

2.1 GIỚI THIỆU VỀ VI MẠCH LOGIC KHẢ TRÌNH 17

2.1.1 Mảng logic khả trình (PLA) 17 2.1.2 Logic mảng khả trình (PAL) 18 2.1.3 Vi mạch logic khả trình phức hợp (CPLD) 19 2.1.4 Mảng cổng cho phép lập trình được (FPGA) 20 2.2 GIỚI THIỆU VỀ GIẢI PHÁP CỦA XILINX 22

2.2.1 CPLD Xilinx

23 2.2.2 FPGA Xilinx

25

Trang 3

Chương 3 30

NGÔN NGỮ VHDL 30

GIỚI THIỆU VỀ VHDL 30

3.1 CÁC CẤU TRÚC CƠ BẢN CỦA NGÔN NGỮ VHDL 31

3.1.1 Khai báo Entity 32 3.1.2 Các kiểu kiến trúc (Achitecture) 35 3.1.2.1 Kiến trúc theo kiểu hành vi hoạt động (Behavioral) 35

3.1.2.2 Kiến trúc theo kiểu hoạt động của các luồng dữ liệu (Dataflow) 36

3.1.2.2 Kiến trúc theo kiểu cấu trúc (Structure) 37

3.1.3 Các đóng gói (Packages) 38 3.1.3.1 Phần khai báo Package 38

3.1.3.1 Phần khai báo thân Package 39

3.1.4 Định cấu hình (Configurations) 40 3.1.5 Các thư viện thiết kế 41 3.2 CÁC ĐỐI TƯỢNG DỮ LIỆU 41

3.2.1 Các hằng (Constants) 42 3.2.2 Các biến (Variables) 42 3.2.3 Các kiểu tín hiệu (Signals) 42 3.3 CÁC KIỂU DỮ LIỆU 43

3.3.1 Các kiểu liệt kê (ENUMERATION)

43 3.3.2 Kiểu nguyên

44 3.3.3 Các kiểu dữ liệu tiền định nghĩa trong VHDL

Trang 4

44 3.3.4 Kiểu mảng

45 3.3.5 Kiểu Record

46 3.3.6 Các kiểu STD_LOGIC

46 3.3.7 Các kiểu dữ liệu có dấu và không dấu

47 3.3.8 Các kiểu con

47

3.4 CÁC TOÁN TỬ 48

3.4.1 Các toán tử Logical 49 3.4.2 Các toán tử quan hệ 49 3.4.3 Các toán tử dịch bit 49 3.4.4 Các toán tử cộng 50 3.5 CÁC KIỂU TOÁN HẠNG 50

3.5.1 Kiểu chữ 51 3.5.1.1 Kiểu chữ ký tự 51

3.5.1.2 Kiểu chuỗi 51

3.5.1.3 Kiểu BIT 52

3.5.1.4 Kiểu BIT_VECTOR 52

3.5.1.5 Kiểu chữ trong đóng gói chuẩn STD_LOGIC 52

3.5.1.6 Kiểu chữ STD_LOGIC_VECTOR 52

3.5.1.7 Kiểu Boolean 52

3.5.1.8 Kiểu số thực 52

3.5.1.9 Kiểu nguyên 53

Trang 5

3.5.1.10 Kiểu TIME 53

3.5.2 Các kiểu định danh

53 3.5.3 Kiểu INDEX

53 3.5.4 Kiểu Slice và ALIAS

54 3.5.5 Kiểu thuộc tính ATTRIBUTE

54 3.5.6 Kiểu tập hợp

54 3.5.7 Biểu thức gán kiểu

55 3.5.8 Phép chuyển đổi kiểu tín hiệu

55

3.6 CÁC PHÁT BIỂU TUẦN TỰ (SEQUENTIAL STATEMENTS) 55

3.6.1 Phát biểu gán biến

56 3.6.2 Phát biểu gán tín hiệu

58 3.6.3 Phát biểu IF

62 3.6.4 Phát biểu CASE

64 3.6.5 Phát biểu NULL

65 3.6.6 Phát biểu xác nhận ASSERTION

65 3.6.7 Phát biểu Loop

66

Trang 6

3.6.8 Phát biểu NEXT

67 3.6.9 Phát biểu EXIT

68 3.6.10 Phát biểu WAIT

68 3.6.11 Các lời gọi chương trình con

70

3.7 CÁC PHÁT BIỂU ĐỒNG THỜI 70

3.7.1 Phát biểu Process

71 3.7.2 Các phép gán tín hiệu đồng thời

72 3.7.3 Các phép gán tín hiệu có điều kiện và các phép gán tín hiệu được chọn lựa

73 3.7.4 Các phát biểu Block

76 3.7.5 Các lời gọi thủ tục đồng thời

77 3.7.6 Các chương trình con

78

3.8 CÁC ĐÓNG GÓI 823.9 MÔ HÌNH CẤU TRÚC 84

3.9.1 Các khai báo thành phần

84 3.9.2 Các thể hiện của Component

85 3.9.3 Các phát biểu Generate

87 3.9.4 Các thông số của việc định cấu hình

Trang 7

Chương 4 91GIỚI THIỆU PHẦN MỀM ISE CỦA XILINX 914.1 Các công cỤ thiẾt kẾ 91

4.1.1 Nhập thiết kế

92 4.1.2 Tổng hợp thiết kế

92 4.1.3 Thực thi và nạp cấu hình

92 4.1.4 Tích hợp mức Board

92 4.1.5 Các kỹ thuật kiểm tra

93 4.1.6 Công cụ phần mềm nhúng

103 4.3.2 Thiết kế mức đỉnh bằng ngôn ngữ mô tả phần cứng

109 4.3.3 Thiết kế mức đỉnh bằng sơ đồ nguyên lý

Trang 8

4.4.1.2 Chỉnh sửa các ràng buộc 126

4.4.1.3 Thực thi với CPLD 131

4.4.1.4 CPLD Reports 132

4.4.1.5 Mô phỏng thời gian 134

4.4.1.6 Cấu hình 135

4.4.2 Thực thi thiết kế trên FPGA 136 4.4.2.1 Thay đổi dự án từ CoolRunner-II thành Spartan-3E 137

4.4.2.2 Tổng hợp 138

4.4.2.3 File ràng buộc thiết kế 140

4.4.2.4 FPGA Reports 144

4.4.2.5 Tải cấu hình vào FPGA 144

Chương 1 GIỚI THIỆU VỀ PHƯƠNG PHÁP THIẾT KẾ SỐ BẰNG NGÔN NGỮ MÔ TẢ PHẦN CỨNG

Hiện nay các mạch tích hợp ngày càng thực hiện được nhiều chức năng hơn, do

đó chúng ngày càng trở nên phức tạp hơn Các phương pháp thiết kế mạch truyền thống như dùng tối thiểu hóa hàm Boolean hay dùng sơ đồ các phần tử không còn

Trang 9

đáp ứng được các yêu cầu đặt ra khi thiết kế Hơn nữa các mạch thiết kế ra yêu cầu phải được thử nghiệm kỹ lưỡng trước khi đưa vào chế tạo hàng loạt và cần phải xây dựng một bộ tài liệu hướng dẫn vận hành hệ thống hoàn chỉnh dễ hiểu và thống nhất

Vì thế người ta thường sử dụng các ngôn ngữ mô tả phần cứng làm phương tiện thiết

kế, mô phỏng thử nghiệm các hệ thống số

1.1 CÁC PHƯƠNG PHÁP THIẾT KẾ TRUYỀN THỐNG

1.1.1 Phương pháp thiết kế dùng hàm Boolean

Tất cả các mạch dựa trên các phần tử logic cơ bản gồm cổng logic và các mạch flip-flop đều có thể thiết kế bằng các hàm Boolean Có nhiều phương pháp đã được

sử dụng để tối thiểu hóa hàm Boolean nhằm tăng tính hiệu quả sử dụng các phần tử logic, chẳng hạn như phương pháp dùng bìa cácnô Về mặt lý thuyết bất kỳ hệ thống

số nào cũng có thể biểu diễn dưới dạng các hàm Boolean Nhưng việc tối thiểu hóa cũng như xử lý hàng nghìn hàm logic rõ ràng là không thực tế Trong khi các yêu cầu thiết kế hệ thống hiện nay đòi hỏi tới hàng nghìn hàm Boolean Hình 1.1 minh họa cho phương pháp thiết kế dùng hàm Boolean

Hình 1.1: Minh họa cho phương pháp thiết kế dùng hàm Boolean.

1.1.2 Phương pháp thiết kế dựa trên sơ đồ

Phương pháp thiết kế dựa trên sơ đồ là sự mở rộng của phương pháp thiết kế dùng hàm Boolean Trong phương pháp này, người thiết kế có thể sử dụng thêm các mạch chức năng thông dụng khác ngoài các phần tử cơ bản là cổng và flip-flop Như vậy, phương pháp này cho phép thiết kế hệ thống một cách có cấu trúc Phương pháp thiết kế dựa trên sơ đồ được dùng phổ biến và có rất nhiều phần mềm cung cấp cho người thiết kế một giao diện đồ họa thuận tiện Trong nhiều năm, phương pháp này

Trang 10

là phương pháp được sử dụng chủ yếu trong ngành công nghiệp chế tạo phần cứng số.

1.1.3 Nhược điểm của các phương pháp thiết kế truyền thống

Mặc dù có ưu điểm là dễ hiểu và dễ sử dụng, phương pháp thiết kế dùng hàm Boolean và phương pháp thiết kế dựa trên sơ đồ có một số nhược điểm Nhược điểm lớn nhất của các phương pháp này là chúng chỉ mô tả hệ thống dưới dạng mạng các phần tử nối với nhau Nhìn vào một hệ thống được mô tả bằng hai phương pháp trên (dưới dạng hàm Boolean hay dạng sơ đồ) ta không thể lập tức chỉ ra được các chỉ tiêu và chức năng chung nhất của hệ thống Ðể thiết kế một hệ thống bằng phương pháp truyền thống, người thiết kế cần phải đi qua hai bước thực hiện hoàn toàn thủ công đó là: Chuyển từ các yêu cầu về chức năng của hệ thống sang biểu diễn hệ thống bằng hàm Boolean, sau đó chuyển từ hàm Boolean sang sơ đồ mạch của hệ thống Cũng tương tự khi cần hiểu được một hệ thống, người ta cần phân tích sơ đồ mạch của hệ thống chuyển nó thành các hàm Boolean sau đó mới lập lại được các chức năng, hoạt động của hệ thống Các bước nói trên hoàn toàn phải thực hiện thủ công không có bất kỳ sự trợ giúp nào của máy tính Ở đây người thiết kế chỉ có thể

sử dụng máy tính làm công cụ hỗ trợ trong việc vẽ sơ đồ mạch của hệ thống (dùng công cụ CAE – Computer Aided Tool) và chuyển từ sơ đồ mạch sang công cụ tổng hợp mạch vật lý

Một nhược điểm khác của phương pháp thiết kế truyền thống là sự giới hạn trong

độ phức tạp của hệ thống Phương pháp dùng hàm Boolean chỉ có thể dùng để thiết

kế các hệ thống lớn nhất biểu diễn bởi vài trăm hàm Phương pháp dựa trên sơ đồ chỉ

có thể dùng để thiết kế lớn nhất chứa tới 6000 phần tử

1.2 PHƯƠNG PHÁP THIẾT KẾ SỐ BẰNG NGÔN NGỮ MÔ TẢ PHẦN CỨNG

Ngôn ngữ mô tả phần cứng giải quyết được nhược điểm lớn nhất của các phương pháp thiết kế trước đây Nếu các phương pháp cũ đòi hỏi phải chuyển đổi từ mô tả

hệ thống (các chỉ tiêu về chức năng của hệ thống) sang tập hợp các hàm logic bằng tay thì bước chuyển đổi đó hoàn toàn không cần thiết khi dùng ngôn ngữ mô tả phần cứng Hầu hết các công cụ thiết kế dùng ngôn ngữ mô tả phần cứng đều cho phép sử dụng biểu đồ trạng thái (finite-state-machine) cho các hệ thống tuần tự cũng như cho phép sử dụng bảng chân lý cho hệ thống tổng hợp Việc chuyển đổi từ các biểu đồ trạng thái và bảng chân lý sang mã ngôn ngữ mô tả phần cứng được thực hiện tự động Ngôn ngữ mô tả phần cứng được dùng nhiều để thiết kế cho các linh kiện

Trang 11

logic khả trình (PLD-Programmable Logic Device) từ loại đơn giản đến các loại phức tạp như ma trận cổng lập trình được (Field Programmable Gate Array).

Phương pháp thiết kế số bằng ngôn ngữ mô tả phần cứng có nhiều ưu điểm hơn

so với phương pháp thiết kế truyền thống Hãy lấy bộ nhân 16×16 làm ví dụ để so sánh Một bộ nhân thường phức tạp về mặt sắp xếp các bộ cộng và thanh ghi, công việc này yêu cầu khá nhiều cổng Ví dụ của chúng ta có hai đầu vào 16 bit (A và B)

và đầu ra 32 bit tổng cộng có 64 cổng vào/ra Mạch này yêu cầu cỡ 6000 cổng Thực hiện theo sơ đồ mạch các cổng sẽ phải được lấy ra, đặt vào bản vẽ và nối với nhau sau đó nối với các cổng vào ra Như vậy sẽ phải mất khoảng 3 ngày làm việc

Việc thực hiện bằng ngôn ngữ mô tả phần cứng, cũng với khoảng 6000 cổng, cần

8 dòng lệnh và có thể thực hiện trong 3 phút Tệp này chứa tất cả những thông tin cần thiết để định nghĩa một bộ nhân 16×16 Ngoài việc tiết kiệm thời gian ra, phương pháp thiết kế bằng ngôn ngữ mô tả phần cứng còn độc lập hoàn toàn với nhà cung cấp, đây cũng là một lợi thế của phương pháp này

Hình 1.2: Bộ nhân (16×16) được thiết kế bằng HDL.

Để tạo ra bộ nhân 32×32, ta chỉ cần thay đổi một chút xíu Đối với phương pháp

vẽ mạch, cần phải có 3 bản sao của thiết kế 30 trang trước đó, tức là 90 trang cần phải vẽ lại, sau đó định địa chỉ lại cho bề rộng đường bus lớn hơn Điều này có lẽ phải cần đến 4 giờ chế bản bằng phương pháp đồ họa Theo cách mô tả bằng ngôn ngữ mô tả phần cứng thì vấn đề chỉ là thay đổi đường bus từ 15 thành 31 ở dòng thứ

2 và từ 31 thành 63 ở dòng thứ 3 Việc này có lẽ chỉ mất đến 6 giây Sau đây là minh

Trang 12

họa của ngôn ngữ mô tả phần cứng khi thay đổi 2 bộ nhân trên Ví dụ thay đổi file HDL:

Đầu tiên là bộ nhân 16×16:

entity MULT is

port(A,B:in std_logic(15 downto 0);

Y:out std_logic(31 downto 0));

port(A,B:in std_logic(31 downto 0);

Y:out std_logic(63 downto 0));

Trang 13

Hình 1.3: Quá trình thiết kế số trên FPGA.

Quá trình 1: Mô tả ban đầu về thiết kế (Specification) Khi xây dựng một chip

khả trình (FPGA) với ý nghĩa dành cho một ứng dụng riêng biệt, vì xuất phát từ mỗi ứng dụng trong thực tiễn cuộc sống, sẽ đặt ra yêu cầu phải thiết kế IC thực hiện tối

ưu nhất những ứng dụng đó Bước đầu tiên của quy trình thiết kế này có nhiệm vụ tiếp nhận các yêu cầu của thiết kế và xây dựng nên kiến trúc tổng quát của thiết kế Các bước gồm:

Mô tả thiết kế (Design Specification): Trong bước này, từ những yêu cầu của

thiết kế và dựa trên khả năng của công nghệ hiện có, người thiết kế kiến trúc

sẽ xây dựng nên toàn bộ kiến trúc tổng quan cho thiết kế Nghĩa là trong bước này người thiết kế kiến trúc phải mô tả được những vấn đề sau:

- Thiết kế có những khối nào?

- Mỗi khối có chức năng gì?

- Hoạt động của thiết kế và của mỗi khối ra sao?

Trang 14

- Phân tích các kỹ thuật sử dụng trong thiết kế và các công cụ, phần mềm hỗ trợ thiết kế.

Một thiết kế có thể được mô tả sử dụng ngôn ngữ mô tả phần cứng, như VHDL hay Verilog HDL hoặc có thể mô tả qua bản vẽ mạch (schematic capture) Một thiết kế có thể vừa bao gồm bản vẽ mạch mô tả sơ đồ khối chung, vừa có thể dùng ngôn ngữ HDL để mô tả chi tiết cho các khối trong sơ

đồ

Mô phỏng chức năng (Function simulation): Sau khi mô tả thiết kế, người

thiết kế cần mô phỏng tổng thể thiết kế về mặt chức năng để kiểm tra thiết kế

có hoạt động đúng với các chức năng yêu cầu

Tổng hợp logic (Logic Synthesis): Tổng hợp logic là quá trình tổng hợp các

mô tả thiết kế thành sơ đồ bố trí mạch (netlist) Quá trình chia thành 2 bước: Chuyển đổi các mã RTL, mã HDL thành mô tả dưới dạng các biểu thức đại số Boolean và dựa trên các biểu thức này kết hợp với thư viện tế bào chuẩn sẵn

có để tổng hợp nên một thiết kế tối ưu

Hình 1.4: Logic Synthesis.

Hiệu chỉnh các kết nối (Datapath Schematic): Nhập netlist và các ràng buộc

về thời gian vào một công cụ phân tích thời gian (timing analysic) Công cụ phân tích này sẽ tách rời tất cả các kết nối của thiết kế, tính thời gian trễ của các kết nối dựa trên các ràng buộc Dựa trên kết quả phân tích (report) của công cụ phân tích, xác định các kết nối không thỏa mãn về thời gian Tùy theo nguyên nhân dẫn đến không thỏa mãn mà ta có thể viết lại mã và tiến hành lại tổng hợp logic hoặc hiệu chỉnh lại các ràng buộc

Trang 15

Quá trình 2: Thực thi (Implementation) Ta đã có sơ đồ bố trí netlist mô tả tổng

thể thiết kế tại mức cổng (chỉ gồm các cổng logic cơ bản) Quá trình này sẽ đặt sơ đồ netlist này lên chip, gọi là quá trình thực thi (Device Implementation) Quá trình này gồm các bước:

Ánh xạ (mapping): Chuẩn bị dữ liệu đầu vào, xác định kích thước các khối

Các khối này sẽ phải phù hợp với cấu trúc của một tế bào cơ bản của FPGA (gồm nhiều cổng logic) và đặt chúng vào các vị trí tối ưu cho việc chạy dây

Hình 1.5: Mapping.

Đặt khối và định tuyến (Place & Route): Đặt khối tức là đặt các khối ánh xạ

vào các tế bào (cell) ở vị trí tối ưu cho việc chạy dây

Hình 1.6: Placing.

Trang 16

Định tuyến tức là thực hiện việc nối dây các tế bào.

Hình 1.7: Routing.

Để thực hiện việc này, chúng ta cần có các thông tin sau:

- Các thông tin vật lý về thư viện tế bào, ví dụ kích thước tế bào, các điểm để kết nối, định thời, các trở ngại trong khi đi dây

- Một netlist được tổng hợp sẽ chỉ ra chi tiết các instance và mối quan hệ kết nối bao gồm cả các đường dẫn bị hạn chế trong thiết kế

- Tất cả các yêu cầu của tiến trình cho các lớp kết nối, bao gồm các luật thiết

kế cho các lớp chạy dây, trở kháng và điện dung, tiêu thụ năng lượng, các luật

về sự dẫn điện trong mỗi lớp

Quá trình 3: Nạp (download) và lập trình (program) Sau quá trình thực hiện, thiết kế

cần được nạp vào FPGA dưới dạng dòng bit (bit stream) Quá trình nạp thiết kế vào FPGA thường nạp vào bộ nhớ bay hơi, ví dụ như SRAM Thông tin cấu hình sẽ được nạp vào bộ nhớ Dòng bit được truyền lúc này sẽ mang thông tin định nghĩa các khối logic cũng như kết nối của thiết kế Tuy nhiên, lưu ý rằng, SRAM sẽ mất dữ liệu khi mất nguồn nên thiết kế sẽ

không lưu được đến phiên làm việc kế tiếp Lập trình là thuật ngữ để mô tả quá trình nạp

chương trình cho các bộ nhớ không bay hơi, ví dụ như PROM Như vậy, thông tin cấu hình vẫn sẽ được lưu trữ khi mất nguồn

Trang 17

Chương 2GIỚI THIỆU VỀ VI MẠCH LOGIC KHẢ TRÌNH

VÀ GIẢI PHÁP CỦA XILINX

2.1 GIỚI THIỆU VỀ VI MẠCH LOGIC KHẢ TRÌNH

2.1.1 Mảng logic khả trình (PLA)

Cuối những năm 1970, các linh kiện logic chuẩn đang chiếm toàn bộ trên bản mạch in, và một số người đã đặt vấn đề: “Sẽ thế nào nếu nhà thiết kế có thể thực hiện kết nối các đường mạch trong một linh kiện lớn hơn” Điều này sẽ cho phép các nhà thiết kế tích hợp nhiều linh kiện logic chuẩn trong một vi mạch

Ron Cline đã đưa ra ý tưởng về hai mảng khả trình Hai mảng này kết hợp các cổng AND và OR Đây là kiến trúc mềm dẻo và được gọi là PLA (Programmable Logic Array) Đặc điểm PLA là:

Hình 2.1 mô tả kiến trúc của PLA

Hình 2.1: Kiến trúc của PLA.

Trang 18

2.1.2 Logic mảng khả trình (PAL)

PAL đã có sự thay đổi nhỏ về kiến trúc so với PLA Kiến trúc mới này khác với PLA ở chỗ là một mảng khả trình được cố định với mảng cổng OR chỉ có mảng AND là khả trình Kiến trúc PAL nhanh hơn, phần mềm ít phức tạp hơn, nhưng không được mềm dẻo như PLA Đặc điểm của PAL là:

Hình 2.2 mô tả kiến trúc của PAL

Hình 2.2: Kiến trúc của PAL.

Kiến trúc này có một mạng lưới kết nối ngang và dọc Ở mỗi kết nối có một cầu chì Với sự trợ giúp của công cụ phần mềm, người thiết kế có thể lựa chọn kết nối nào không được nối bằng cách phá vỡ tất cả các cầu chì không được kết nối (việc này được thực hiện bằng một bộ nạp, nhưng bây giờ thường làm bằng công nghệ ISP)

Công nghệ PLD đã phát triển từ những ngày đầu tiên cho đến bây giờ bởi những công ty như Xilinx đang sản xuất những vi mạch trên công nghệ CMOS tiêu thụ năng lượng cực nhỏ, dựa trên công nghệ lưu trữ flash PLD dựa trên flash cho phép khả năng lập trình lại nhiều lần, lập trình và xóa bằng điện

Trang 19

2.1.3 Vi mạch logic khả trình phức hợp (CPLD)

CPLD (Complex PLD) mở rộng mật độ của SPLD (Simple PLD), CPLD có một vài khối PLD hay còn gọi là macrocells trong một linh kiện vi điện tử, với mạng kết nối nằm ở giữa Các khối logic đơn giản có thể được thực hiện với một khối đơn lẻ còn các khối logic tinh vi hơn yêu cầu nhiều khối và sử dụng với mạng kết nối chung CPLD có đặc điểm sau:

• Mạng kết nối trung tâm

• Định thời trước, đơn giản

CPLD cho phép thiết kế dễ dàng, chi phí phát triển thấp hơn, và cho phép đưa các sản phẩm ra thị trường một cách nhanh chóng Các ưu điểm của CPLD như:

Thiết kế dễ: CPLD hỗ trợ cách thiết kế một cách đơn giản Khi một thiết kế

được mô tả bằng sơ đồ nguyên lí, hoặc ngôn ngữ mô tả phần cứng, ta chỉ cần dùng công cụ phát triển CPLD để thực hiện tối ưu thiết kế, ghép nối thiết kế vào thiết bị đích, và mô phỏng thiết kế Công cụ thiết kế tạo ra một file để nạp cho CPLD với chức năng mong muốn Điều này tạo ra một cấu trúc phần cứng và cho phép các quá trình xử lý, gỡ rối có thể thực hiện ngay từ khi bắt đầu công việc thiết kế Khi cần thiết phải thay đổi thiết kế, ta có thể thay đổi thiết kế đó vào trong công cụ phát triển CPLD và thực thi trên nó, sau đó ta có thể kiểm tra thiết kế mới ngay sau đó bằng một phần mềm mô phỏng

Trang 20

Chi phí phát triển thấp: CPLD làm cho chi phí phát triển giảm xuống còn

rất thấp Vì có thể lập trình lại được, ta có thể dễ dàng và không tốn kém gì để thay đổi thiết kế của mình Điều này cho phép ta tối ưu thiết kế và thêm những tính năng mới để nâng cấp sản phẩm Công cụ thiết kế CPLD rất đáng tin cậy và rất rẻ (hoặc miễn phí đối với trường hợp của Xilinx)

Giảm kích thước bo mạch sử dụng: CPLD đưa ra một mức tích hợp cao

hơn (tức là một mức độ lớn các cổng hệ thống trên một đơn vị diện tích) Điều này cung cấp một giải pháp hoàn chỉnh cho người thiết kế mà sản phẩm của họ phải thích hợp với các bo mạch có diện tích bị giới hạn Ví dụ, CP56 CPLD có khoảng cách của các chân là 0,5mm và kích thước đóng gói chỉ là 6×6 mm, điều này cho phép đưa ra một sản phẩm nhỏ gọn cùng với mức độ tiêu thụ nguồn thấp CoolRunner II CPLD cũng được đóng gói sẵn ở gói QF (Quad Flat) là dạng nhỏ nhất trong công nghiệp QF32 có kích thước chỉ là 5×5mm Hình 2.4 là các dạng đóng gói khác nhau của CPLD

Hình 2.4: Các dạng đóng gói khác nhau của CPLD.

Chi phí của người sử dụng: Chi phí người sử dụng có thể định nghĩa như là

chi phí để bảo dưỡng, sửa chữa hoặc bảo hành sản phẩm Bởi vì CPLD có khả năng tái lập trình, không đòi hỏi phải tái lập lại phần cứng, như vậy chi phí rất

ít để thay đổi thiết kế sử dụng chúng

Độ tin cậy: Có độ tin cậy cao bởi việc sử dụng công suất nhỏ dẫn đến giảm

sự tiêu thụ năng lượng và giảm nhiệt

2.1.4 Mảng cổng cho phép lập trình được (FPGA)

Năm 1985, Xilinx giới thiệu một ý tưởng mới: Đó là sự kết hợp giữa việc điều khiển của người dùng và thời gian tiếp cận thị trường của các PLD cùng với mật độ tích hợp và giá của các ma trận cổng Điều này đã cho ra đời vi mạch FPGA và cho đến nay Xilinx vẫn là nhà cung cấp số một về FPGA trên thế giới

FPGA (Field Programmable Gate Array) thường là cấu trúc của các tế bào logic (Logic Cell hay module) và các liên kết hoàn điều khiển được Điều này có nghĩa là

ta có thể thiết kế, lập trình và thay đổi bất cứ lúc nào ta muốn FPGA ngày nay đang vượt qua giới hạn 10 triệu cổng và ta có thể thực hiện những tham vọng cho những thiết kế lớn Hình 2.5 là kiến trúc của một vi mạch FPGA

Trang 21

Hình 2.5: Kiến trúc của FPGA.

Từ khi giới thiệu dòng Spartan đến giờ Xilinx đã hoàn thiện mảng cổng về mọi khía cạnh - giá cả, cổng, số các đầu vào ra cũng như hiệu năng và chi phí

Cơ bản thì có hai loại FPGA: Loại khả trình dựa trên SRAM và loại lập trình một lần (One Time Programmable) Hai loại FPGA này khác nhau về việc thực hiện các logic cell và cơ cấu sử dụng để tạo nên kết nối trong linh kiện Với FPGA dựa trên SRAM thì SRAM xác định các kết nối và các khối logic trong bảng tìm kiếm (Look

Up Table) Với FPGA lập trình chỉ một lần thì các liên kết là các cầu chì và các khối Logic là các cổng truyền thống

Loại ưu thế hơn cả là loại dựa trên SRAM vì nó có thể lập trình lại nhiều lần Thực tế thì một SRAM FPGA được nạp cấu hình lại mỗi khi được khởi động, bởi vì FPGA loại này thực chất là một chíp nhớ theo ý muốn Điều này giải thích tại sao cần có một số PROM nối tiếp hay hệ thống nhớ với mọi SRAM FPGA Chúng ta hãy xem cấu trúc của SRAM FPGA như ở hình 2.6

Hình 2.6: Cấu trúc SRAM FPGA.

Trang 22

Trong các tế bào logic, một bảng tìm kiếm LUT xác định đầu ra dựa trên giá trị đầu vào Ở hình 2.6, có sáu sự kết hợp khác nhau của bốn đầu vào để xác định giá trị đầu ra Các bit trong SRAM cũng được dùng để tạo ra các kết nối.

Các OTP FPGA chỉ cho phép lập trình một lần Hình 2.7 là cấu trúc của OTP FPGA

Hình 2.7: Tế bào Logic OTP.

Trong OTP FPGA không cần SPROM hay các phương tiện khác để tải chương trình về FPGA Tuy nhiên mỗi khi muốn thay đổi thiết kế, ta phải thay chip khác Các tế bào logic OTP cũng tương tự như bộ PLD với các bộ cổng và các Flip-Flop chuyên dụng

2.2 GIỚI THIỆU VỀ GIẢI PHÁP CỦA XILINX

Giải pháp logic khả trình của Xilinx giúp tối thiểu rủi ro cho việc chế tạo thiết bị điện tử bằng cách rút ngắn thời gian cần thiết để phát triển sản phẩm và đưa ra thị trường Ta có thể thiết kế và kiểm tra mạch điện trong các vi mạch logic khả trình của Xilinx nhanh hơn so với việc lựa chọn các phương pháp thiết kế truyền thống như là mảng cổng logic cố định và lập trình mặt nạ Hơn nữa, bởi vì các vi mạch của Xilinx là các vi mạch chuẩn nên nó chỉ cần được lập trình, ta không mất thời gian chờ đợi để có được nguyên mẫu hoặc không phải trả tiền cho chi phí nghiên cứu không thường xuyên

Các sản phẩm của Xilinx hướng tới nhiều mảng thị trường Trong đó có các lĩnh vực như xử lí dữ liệu, viễn thông, điều khiển công nghiệp, máy công cụ, điện tử gia dụng, tự động hóa, quốc phòng, và hàng không Hình 2.8 là các vi mạch Logic khả trình của Xilinx

Trang 23

Hình 2.8: Các vi mạch Logic khả trình của Xilinx.

2.2.1 CPLD Xilinx

Hiện tại Xilinx chia các sản phẩm CPLD của mình ra làm hai loai: XC9500 và CoolRunner Hai loại này tập trung chủ yếu là hai dòng phổ biến nhất đó là XC9500XL và CoolRunner-II

- XC9500XL với tính năng tốc độ cao, chi phí thiết kế thấp

- CoolRunner-II thì tiêu thụ năng lượng cực thấp, dẫn đầu trong các thiết bị cầm tay Với dòng tiêu thụ ở trạng thái nghỉ dưới micro ampe và tối thiểu năng lượng tiêu thụ khi hoạt động CoolRunner-II đặc biệt phù hợp với các ứng dụng cầm tay chạy pin, hay những ứng dụng mà tiêu thụ nguồn là vấn đề cần phải quan tâm

Để lựa chọn được vi mạch tốt nhất cho các tiêu chuẩn thiết kế của mình, ta cần chú ý tới các chi tiết thiết kế và đặc điểm sản phẩm để có những thông tin về vi mạch mình dùng trong thiết kế như:

Mật độ: Mỗi phần đều có một lượng cổng hay ước lượng mật độ logic mỗi

phần

Số lượng thanh ghi: Đếm số thanh ghi cần cho bộ đếm, các máy trạng thái,

các thanh ghi và các bộ chốt Số lượng các macrocell cần thiết trong một vi mạch

Số lượng chân vào/ra: Mạch thiết kế cần bao nhiêu lối vào và bao nhiêu lối

ra

Tốc độ: Cần phải xác định tốc độ lớn nhất để lựa chọn vi mạch cho phù hợp

với thiết kế của mình

Trang 24

Đóng gói: Tác động của các điều kiện điện cơ, các kiểu đóng gói khác nhau

cho phù hợp với thiết kế của mình

Công suất nhỏ: Thiết kế có yêu cầu công suất thấp nhất có thể không? Có

quan tâm đến vấn đề giảm nhiệt lượng cho thiết bị không?

Giới thiệu CPLD công suất nhỏ CoolRunner-II:

• Dòng CoolRunner-II của CPLD kết hợp giữa nguồn tiêu thụ rất thấp và tốc độ cao, nhiều cổng vào ra trên một vi mạch Dòng CoolRunner-II có từ 32 đến

512 Macrocell CoolRunnerII-CPLD là nét đặc biệt của công nghệ RealDigital cho phép các thiết bị gần như không tiêu thụ nguồn ở chế độ chờ Điều này khiến nó trở nên lý tưởng cho các mảng thị trường của các thiết bị điện tử cầm tay, chạy pin đang tăng trưởng nhanh như: Laptop PCs, điện thoại cầm tay, PDA, trò chơi điện tử,

• Dòng CoolRunner-II của CPLD tiêu thụ nguồn thấp Đây là một đặc điểm quan trọng cho các thiết bị có hiệu suất cao, nhạy cảm với nhiệt độ như là các chuyển mạch viễn thông, hệ thống hội nghị bằng hình ảnh, các bộ mô phỏng, các bộ kiểm tra đầu cuối Hình 2.9 minh họa các loại CPLD và xu hướng ứng dụng của CPLD

Hình 2.9: Các hướng ứng dụng với CPLD.

• Công nghệ CMOS được dùng trong CoolRunner-II CPLD phát ra nhiệt lượng rất nhỏ, cho phép sử dụng những bộ đóng gói nhỏ trong suốt quá trình hoạt động ở tốc độ cao Các đóng gói như VQ100, TQ144 và FT256 Loại FT256 đặc biệt phù hợp với các sản phẩm cầm tay mỏng với yêu cầu mật độ logic cao

• Bảng 2.1 chỉ ra các đặc điểm nổi trội thông qua dòng CoolRunner-II

Trang 25

Bảng 2.1: Dòng CoolRunner-II.

2.2.2 FPGA Xilinx

Xilinx cũng chia sản phẩm FPGA của mình ra làm hai loại là: Spartan FPGA và Virtex FPGA Các dòng sản phẩm FPGA như: Spartan-3/3E FPGAs, Virtex-4/5 FPGAs

Họ Spartan-3/3E FPGAs

Họ Spartan FPGA là ý tưởng dùng cho các ứng dụng với số lượng lớn, giá thành thấp, chúng được đưa vào các thiết bị đích nhằm thay thế các mảng cổng logic cố

định và các sản phẩm chuyên dụng (chẳng hạn như các chip giao tiếp bus) Với họ

Spartan-3 FPGA (1.2V), nó không chỉ có giá thành thấp mà còn được tích hợp thêm một số tính chất mới về cấu trúc Spartan-3 FPGA đã tạo ra sự thay thế các chip ASIC và các vi mạch chuyên dụng khác Ví dụ một chip Spartan-3 FPGA trong hệ thống đa phương tiện truyền thông trong xe hơi có thể tập hợp được rất nhiều chức năng của hệ thống, bao gồm các lõi IP nhúng, giao tiếp hệ thống khách hàng, DSP và các đơn vị logic khác Hình 2.10 dưới đây minh họa một hệ thống Multimedia trên

xe hơi

Trang 26

Hình 2.10: Hệ thống Multimedia trên xe hơi.

Khối RAM - có các Block

18K

Cho phép thực hiện các bộ đệm gói lớn, bộ đệm FIFOs, các bộ đệm đường truyền

Distributed RAM Cho phép thực hiện các bộ đệm

FIFOs nhỏ hơn, các bộ đồng xử lý DSP

Chế độ thanh ghi dịch Ý tưởng thanh ghi dịch 16 bits

dành cho các ứng dụng tốc độ cao, hoặc lưu trữ dữ liệu trong DSP và các ứng dụng mã hóa, xử lý đường ống nhanh

Các khối nhân 18×18 Dùng cho việc xử lý DSP tốc độ

cao, việc sử dụng các bộ nhân kết hợp với kết cấu bên trong cho phép thực hiện DSP song song, siêu nhanh

Trang 27

Bộ quản lý đồng hồ số Loại trừ sự giữ chậm đồng hồ

mức board và on-chip, nhân chia tức thì, có thể giảm được tốc độ đồng hồ phù hợp ở mức board, giảm số bộ đồng hồ trên bo mạch

Có thể điều chỉnh pha đồng hồ đảm bảo độ chính xác cao

Có các tài nguyên định

tuyến toàn cục

Sự phân phối các clock và các tín hiệu khác cùng với nhiều hệ số phân chia đầu ra trên toàn vi mạch

Bảng 2.2: Tóm tắt đặc tính và công dụng của họ Spartan-3.

Bảng 2.3: Một số sản phẩm thuộc họ Spartan-3 FPGA.

Họ Virtex FPGA:

Dòng sản phẩm Virtex về cơ bản đã được định nghĩa lại tất cả các đơn vị logic lập trình bởi việc mở rộng các khả năng của FPGA truyền thống để có đặc tính mạnh hơn, nó được dùng cho các thiết kế hệ thống thực thi cao Các vi mạch mới nhất được đưa ra với họ sản phẩm Virtex-4, Virtex-5

Virtex-4: Họ Virtex-4 gồm ba loại khác nhau đó là: Virtex-4 LX được tối ưu

hóa cho các hàm Logic hiệu năng cao; Virtex-4 SX được tối ưu hóa cho xử lý tín hiệu, Virtex-4 FX được tối ưu hóa cho các kết nối nối tiếp tốc độ cao và

xử lý nhúng Hình 2.11 tóm tắt các loại khác nhau thuộc họ Virtex-4

Trang 28

Hình 2.11: Dòng Virtex-4.

Virtex-5: Họ Virtex-5 thuộc thế hệ thứ 5 của dòng Virtex FPGAs Dòng

Virtex 5 được giới thiệu với các khách hàng là một sản phẩm có hiệu năng cao nhất, với kết nối mềm dẻo, năng lượng được tối ưu Dòng sản phẩm đầu tiên thuộc họ này là Virtex-5 LX Bảng 2.4 dưới đây trình bày các sản phẩm thuộc dòng sản phẩm Virtex-5 LX

Bảng 2.4: Dòng sản phẩm Virtex-5 LX.

Qua những sản phẩm kể ra ở trên, chúng ta có thể thấy rằng Xilinx là một trong những nhà cung cấp chip CPLD và FPGA hàng đầu trên thế giới Các sản phẩm của Xilinx đang được phân phối rộng khắp trên thế giới Các nhà thiết kế cần tính toán

Trang 29

và lựa chọn sản phẩm nào phù hợp nhất với thiết kế của mình Nếu muốn có thêm các thông tin chi tiết hơn về các sản phẩm này, ta có thể vào trang chủ http://xilinx.com/ để tra cứu Tất cả các sản phẩm mới nhất của Xilinx sẽ luôn được cập nhật trên trang Web này.

Trang 30

Chương 3NGÔN NGỮ VHDL

GIỚI THIỆU VỀ VHDL

VHDL là viết tắt của cụm từ Very High Speed Intergrated Circuit Hardware Description Language - ngôn ngữ mô tả phần cứng cho các mạch tích hợp tốc độ rất cao VHDL là ngôn ngữ mô tả phần cứng được phát triển dùng cho chương trình VHSIC (Very High Speed Intergrated Circuit) của bộ quốc phòng Mỹ Mục tiêu của việc phát triển VHDL là có được một ngôn ngữ mô tả phần cứng tiêu chuẩn và thống nhất cho phép phát triển thử nghiệm các hệ thống số nhanh hơn cũng như cho phép

dễ dàng đưa các hệ thống đó vào ứng dụng trong thực tế Ngôn ngữ VHDL được ba công ty Intermetics, IBM và Texas Instruments bắt đầu nghiên cứu phát triển vào 7/1983 Phiên bản đầu tiên được công bố vào 8/1985 Sau đó VHDL được đề xuất để

tổ chức IEEE xem xét thành một tiêu chuẩn Năm 1987, đã đưa ra tiêu chuẩn về VHDL – tiêu chuẩn IEEE-1076-1987

VHDL được phát triển để giải quyết các khó khăn trong việc phát triển, thay đổi

và lập tài liệu cho các hệ thống số Như đã biết, một hệ thống số có rất nhiều tài liệu

mô tả Ðể có thể vận hành bảo trì sửa chữa một hệ thống ta cần tìm hiểu tài liệu đó

kỹ lưỡng Với một ngôn ngữ mô tả phần cứng thì việc xem xét các tài liệu mô tả trở nên dễ dàng hơn vì bộ tài liệu đó có thể được thực thi để mô phỏng hoạt động của hệ thống Như thế ta có thể xem xét toàn bộ các phần tử của hệ thống hoạt động trong một mô hình thống nhất

Trước khi VHDL ra đời, có nhiều ngôn ngữ mô tả phần cứng được sử dụng nhưng không có một tiêu chuẩn thống nhất Vì các ngôn ngữ mô tả phần cứng đó được các nhà cung cấp vi mạch phát triển, nên mang các đặc trưng gắn với các vi mạch của nhà cung cấp đó và thuộc sở hữu của nhà cung cấp

Trong khi đó, VHDL được phát triển như một ngôn ngữ độc lập không gắn với bất kỳ một phương pháp thiết kế, bộ mô phỏng hay công nghệ phần cứng nào Người thiết kế có thể tự do lựa chọn công nghệ, phương pháp thiết kế trong khi vẫn sử dụng một ngôn ngữ duy nhất

VHDL có một số ưu điểm hơn hẳn các ngôn ngữ mô tả phần cứng khác là:

Tính công cộng: VHDL được phát triển dưới sự bảo trợ của chính phủ Mỹ

và hiện nay là một tiêu chuẩn của IEEE, VHDL không thuộc sở hữu của bất

kỳ cá nhân hay tổ chức nào Do đó VHDL được hỗ trợ của nhiều nhà sản xuất

vi mạch cũng như nhiều nhà cung cấp công cụ thiết kế mô phỏng hệ thống Ðây là một ưu điểm nổi bật của VHDL, giúp VHDL trở nên ngày càng phổ biến

Trang 31

Khả năng hỗ trợ nhiều công nghệ và phương pháp thiết kế: VHDL cho

phép thiết kế bằng nhiều phương pháp như phương pháp thiết kế từ trên xuống, hay từ dưới lên dựa vào các thư viện có sẵn Như vậy VHDL có thể phục vụ tốt cho nhiều mục đích thiết kế khác nhau, từ việc thiết kế các phần

tử phổ biến đến việc thiết kế các IC ứng dụng đặc biệt (Application Specified IC)

Ðộc lập với công nghệ: VHDL hoàn toàn độc lập với công nghệ chế tạo

phần cứng Một mô tả hệ thống dùng VHDL thiết kế ở mức cổng có thể được chuyển thành các bản tổng hợp mạch khác nhau tùy thuộc vào công nghệ chế tạo phần cứng nào được sử dụng (dùng CMOS, nMOS, hay GaAs) Ðây cũng

là một ưu điểm quan trọng của VHDL nó cho phép người thiết kế không cần quan tâm đến công nghệ phần cứng khi thiết kế hệ thống, như thế khi có một công nghệ chế tạo phần cứng mới ra đời nó có thể được áp dụng ngay cho các

hệ thống đã thiết kế

Khả năng mô tả mở rộng: VHDL cho phép mô tả hoạt động của phần cứng

từ mức hệ thống số (hộp đen) cho đến mức cổng VHDL có khả năng mô tả hoạt động của hệ thống trên nhiều mức nhưng chỉ sử dụng một cú pháp chặt chẽ thống nhất cho mọi mức Như thế ta có thể mô phỏng một bản thiết kế bao gồm cả các hệ con được mô tả ở mức cao và các hệ con được mô tả chi tiết

Khả năng trao đổi kết quả: Vì VHDL là một tiêu chuẩn được chấp nhận,

nên một mô hình VHDL có thể chạy trên mọi bộ mô phỏng đáp ứng được tiêu chuẩn VHDL và các kết quả mô tả hệ thống có thể được trao đổi giữa các nhà thiết kế sử dụng công cụ thiết kế khác nhau nhưng cùng tuân theo chuẩn VHDL Hơn nữa, một nhóm thiết kế có thể trao đổi mô tả mức cao của các hệ thống con trong một hệ thống; trong khi các hệ con đó được thiết kế độc lập

Khả năng hỗ trợ thiết kế mức lớn và khả năng sử dụng lại các thiết kế:

VHDL được phát triển như một ngôn ngữ lập trình bậc cao, vì vậy nó có thể

sử dụng để thiết kế một hệ thống lớn với sự tham gia của một nhóm nhiều người Bên trong ngôn ngữ VHDL có nhiều tính năng hỗ trợ việc quản lý, thử nghiệm và chia sẻ thiết kế VHDL cũng cho phép dùng lại các phần đã có sẵn

3.1 CÁC CẤU TRÚC CƠ BẢN CỦA NGÔN NGỮ VHDL

Các thành phần chính xây dựng trong ngôn ngữ VHDL được chia ra thành năm nhóm cơ bản như sau:

- Entity

- Architecture

- Package

- Configuration

Trang 32

- Library

Entity: Trong một hệ thống số, thông thường được thiết kế theo một sự xếp chồng

các Modul, mà mỗi Modul này tương ứng với một thực thể thiết kế (được gọi là Entity) trong VHDL Mỗi một Entity bao gồm hai phần:

- Khai báo thực thể ( Entity)

- Thân kiến trúc (Architecture Bodies)

Một khai báo Entity được dùng để mô tả giao tiếp bên ngoài của một phần tử (component), nó bao gồm các khai báo các cổng đầu vào, các cổng đầu ra của phần

tử đó Phần thân của kiến trúc được dùng để mô tả sự thực hiện bên trong của thực thể đó

Packages: Các đóng gói chỉ ra thông tin dùng chung, mà các thông tin này được sử

dụng bởi một vài Entity nào đó

Configuration: Định cấu hình, nó cho phép gắn kết các thể hiện của phần tử cần

dùng nào đó của một thiết kế nào đó có dạng một cấu trúc và đưa các thể hiện này vào trong cặp Entity và Architecture

Nó cho phép người thiết kế có thể thử nghiệm để thay đổi các sự thực thi khác nhau trong một thiết kế Mỗi một thiết kế dạng VHDL bao gồm một vài đơn vị thư viện, mà một trong các thư viện này được dịch sẵn và cất trong một thư viện thiết kế

3.1.1 Khai báo Entity

Như trên đã đề cập, phần khai báo Entity chỉ đưa ra một cái nhìn phía bên ngoài của một phần tử mà không cung cấp thông tin về sự thực hiện của phần tử đó như thế nào Cú pháp khai báo của một Entity như sau:

• [] : Dấu ngoặc vuông chỉ ra các tham số có thể lựa chọn

• | : Dấu gạch đứng hiển thị một sự lựa chọn trong số các lựa chọn khác

• {} : Khai báo một hoặc nhiều các đối tượng, mà các đối tượng này có thể được định nghĩa bởi người dùng

a Khai báo Generic: Dùng để khai báo các hằng mà chúng có thể được dùng để

điều khiển cấu trúc và sự hoạt động của Entity Cú pháp của khai báo này như sau:

generic ( constant_name : type [:=init_value]

{;constant_name: type[:=init_value]});

Trang 33

• Ở đây tên hằng constant_name chỉ ra tên của một hằng dạng generic (hằng dùng chung).

• Kiểu (Type) được dùng để chỉ ra kiểu dữ liệu của hằng

• Init_value : chỉ ra giá trị khởi tạo cho hằng

b Khai báo cổng (Port): Được dùng để khai báo các cổng vào, ra của Entity Cú

pháp của khai báo này như sau:

Port ( port_name : [mode] type [:= init_value]

{; port_name:[mode] type [:=init_value]});

• Port_name được dùng để chỉ ra tên của một cổng, mode chỉ ra hướng vào ra của tín hiệu tại cổng đó Type chỉ ra kiểu dữ liệu của một cổng và init_value chỉ ra giá trị khởi tạo cho cổng đó

Chú ý ! Với VHDL không phân biệt chữ hoa và chữ thường, chẳng hạn như: xyz =

xYz = XYZ

• Có bốn mode được sử dụng trong khai báo cổng:

- In: Chỉ có thể được đọc, nó chỉ được dùng cho các tín hiệu đầu vào (chỉ được phép nằm bên phải phép gán)

- Out: Chỉ được dùng để gán giá trị, nó chỉ được dùng cho các cổng đầu ra (nó chỉ được nằm bên trái của phép gán)

- Inout: Có thể được dùng để đọc và gán giá trị Nó có thể có nhiều hơn một hướng điều khiển (có thể nằm ở bên trái hoặc bên phải phép gán)

- Buffer: Có thể được dùng để đọc và gán giá trị (có thể nằm ở bên trái hoặc bên phải phép gán) Inout là một cổng hai hướng, còn Buffer là một cổng không có hướng

c Entity_declarative_item: Được dùng để khai báo các hằng, kiểu dữ liệu, hoặc tín

hiệu mà nó có thể được sử dụng trong khi thực hiện của một Entity

Trang 34

C <= A ; ( Câu lệnh đúng: A được gán cho C )

A <= B ; ( Câu lệnh sai: A là một đầu vào )

E <= D + 1; ( Câu lệnh đúng: D ở mode inout vì vậy nó

có thể được gán và đọc )

D <= C + 1; ( Câu lệnh sai : C là cổng đầu ra nên không

thể đọc được cho đầu vào )

Entity FULL_ADDER is

port ( A, B, CIN : in BIT;

SUM, COUT : out BIT );

End FULL_ADDER ;

Chúng ta có thể điều khiển cấu trúc cũng như thời gian của một Entity bởi việc

sử dụng các hằng generic Ví dụ sau sẽ chỉ ra việc điều khiển này, trong ví dụ này hằng N được dùng để chỉ ra số bít của một bộ cộng Trong quá trình mô phỏng hoặc quá trình tổng hợp, giá trị thực tế cho mỗi hằng dùng chung generic có thể bị thay đổi

entity ADDER is

generic (N : INTEGER := 4);

M : TIME := 10ns);

port ( A, B : in BIT_VECTOR (N -1 downto 0 );

CIN :in BIT;

Trang 35

SUM : out BIT_VECTOR (N-1 downto 0);

COUT : out BIT );

end ADDER;

Giao diện mô tả bộ cộng này như sau:

Hình 3.2: Thực thể FULL_ADDER 4 bit

3.1.2 Các kiểu kiến trúc (Achitecture)

Một kiến trúc đưa ra kết cấu bên trong của một Entity Một Entity có thể có nhiều hơn một kiến trúc, nó chỉ ra quan hệ giữa các đầu vào và đầu ra của một Entity mà quan hệ này được diễn tả theo các thuật ngữ sau:

- Kiểu hành vi hoạt động ( Behavioral )

- Kiểu hoạt động của các luồng dữ liệu ( Dataflow )

- Kiểu cấu trúc ( Structure )

Một kiến trúc xác định chức năng của một Entity Nó bao gồm các phần: Khai báo các các tín hiệu, hằng, khai báo các kiểu, các phần tử, tiếp theo là các phát biểu (lệnh) đồng thời

Khai báo một kiến trúc sử dụng cú pháp sau:

architecture architecture_name of entity_name is

{ architecture_declarative_part }

Begin

{concurrent_statement} (lệnh đồng thời) end [architecture_name ];

3.1.2.1 Kiến trúc theo kiểu hành vi hoạt động (Behavioral)

Một kiến trúc kiểu hành vi hoạt động chỉ ra các hoạt động mà một hệ thống riêng biệt nào đó phải thực hiện trong một chương trình, nó giống như việc diễn tả các quá trình hoạt động, nhưng không cung cấp chi tiết mà thiết kế được thực thi như thế nào Thành phần chủ yếu của việc diễn tả theo kiểu hành vi trong VHDL là process Dưới đây là ví dụ chỉ ra kiểu diễn tả theo kiểu hành vi của một bộ cộng với tên là FULL_ADDER

Trang 36

architecture BEHAVIOURAL of FULL_ADDER is

(A='0' and B='0' and CIN='1') or

(A='0' and B='1' and CIN='0') or

(A='1' and B='0' and CIN='0') then

SUM <= '1';

COUT <= '0' ; elsif

(A='0' and B='1' and CIN='1') or (A='1' and B='0' and CIN='1') or

(A='1' and B='1' and CIN='0') then

3.1.2.2 Kiến trúc theo kiểu hoạt động của các luồng dữ liệu (Dataflow)

Một kiến trúc kiểu luồng dữ liệu chỉ ra một hệ thống dưới dạng mô tả đồng thời của các luồng điều khiển và dịch chuyển của dữ liệu Nó sử dụng theo mẫu thông tin hoặc mẫu hoạt động của luồng dữ liệu đó, hoặc mẫu thời gian của các chức năng logic tổ hợp Chẳng hạn như các bộ cộng, bộ so sánh, bộ giải mã, và các cổng logic nguyên thủy

Ví dụ:

architecture DATAFLOW of FULL_ADDER is

signal S : BIT;

begin

Trang 37

S <= A xor B ;

SUM <= S xor CIN after 10 ns;

COUT <= (A and B ) or (S and CIN) after 5ns;

end DATAFLOW;

3.1.2.2 Kiến trúc theo kiểu cấu trúc (Structure)

Một kiến trúc kiểu cấu trúc chỉ ra sự thực thi cấu trúc theo dạng sử dụng các khai báo phần tử và các thể hiện của phần tử đó Ví dụ dưới đây chỉ ra sự diễn tả cấu trúc của một bộ cộng FULL_ADDER như trên đã giới thiệu

Hai kiểu phần tử được sử dụng trong ví dụ này là HALF_ADDER và OR_GATE

architecture STRUCTURE of FULL_ADDER is

HA1: HALF_ADDER port map (A,B,N1,N2);

HA2: HALF_ADDER port map (N2,CIN,N3,SUM);

OR1 : OR_GATE port map (N1, N3,COUT);

end STRUCTURE;

Ở ví dụ này Entity ở mức cao nhất sẽ chứa hai thể hiện của HALF_ADDER và một thể hiện của OR_GATE Thể hiện HALF_ADDER có thể bị ràng buộc với một Entity khác, mà Entity này bao gồm một cổng XOR và một cổng AND Giao tiếp của một bộ cộng HALF_ADDER có dạng như sau:

Hình 3.3: Giao tiếp bộ cộng HALF_ADDER.

Trang 38

Bộ cộng này gồm có hai đầu vào L1 và L2, đầu ra là SUM và CARRY Kiểu BIT

là kiểu tiền định nghĩa của ngôn ngữ VHDL, nó có kiểu liệt kê dạng chữ ký tự như '0' và '1'

3.1.3.1 Phần khai báo Package

Một khai báo Package được dùng để cất giữ hàng loạt các khai báo dùng chung, chẳng hạn như các phần tử, các kiểu, các thủ tục, các hàm Các khai báo này có thể nhập vào các đơn vị thiết kế khác bởi việc sử dụng một mệnh đề use

Ví dụ:

package EXAMPLE_PACK is

type SUMMER is ( MAY, JUN, JUL, AUG, SEP);

component D_FLIP_FLOP

port (D, CK:in BIT;

Q, QBAR: out BIT)

Giả sử rằng đóng gói này đã được dịch và tạo thành một thư viện thiết kế và

được gọi là DESIGN _LIB Xem xét việc dùng mệnh đề use để sử dụng chúng dưới

đây:

library DESIGN_LIB;

use DESIGN_LIB.EXAMPLE_PACK.all

Entity RX is

Trang 39

Mệnh đề library DESIGN_LIB cho phép thư viện thiết kế DESIGN_LIB được phép dùng trong phần mô tả này, điều đó có nghĩa là tên DESIGN_LIB có thể được

sử dụng Mệnh đề use tiếp theo sẽ lấy tất cả các khai báo có trong Package

EXAMPLE_PACK vào trong khai báo Entity của RX Có nghĩa là ta có thể chọn lựa các khai báo từ trong một các khai báo của một đóng gói vào trong một đơn vị thiết

architecture RX_STRUCTURE of RX is

Hai mệnh đề use ở ví dụ này nhằm tạo ra khai báo cho D_FLIP_FLOP và khai báo hằng cho PIN2PIN_DELAY được phép sử dụng trong thân kiến trúc

3.1.3.1 Phần khai báo thân Package

Sự khác biệt giữa khai báo Package và thân Package có cùng mục đích như khai báo của một Entity và phần thân kiến trúc Architecture của chúng Cú pháp khai báo của Package như sau:

Ví dụ:

package EX_PKG is

subtype INT8 is integer range 0 to 255;

constant zero : INT8:=0;

procedure Incrementer (variable Count : inout INT8);

end EX_PKG;

package body EX_PKG is

procedure Incrementer (variable Data : inout INT8) is

Trang 40

để cung cấp một sự thay thế nhanh các thể hiện của các phần tử (Component) trong một thiết kế dạng cấu trúc Cú pháp khai báo của Configuration này như sau:

Configuration configuration_name of entity_name is

Với một Entity của bộ cộng FULL_ADDER như đã giới thiệu ở phần trên, ở ví

dụ này ta có thể sử dụng chúng trong phép định cấu hình như sau:

configuration FADD_CONFIG of FULL_ADDER is

sử dụng chúng trong ví dụ trên

Ngày đăng: 13/03/2013, 21:30

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Peter J.Ashenden: “The VHDL Cookbook”, Computer Science University of Adelaide South Australia, 1990 Sách, tạp chí
Tiêu đề: “The VHDL Cookbook”
2. L.Perry: “VHDL Programming by Example”, McGraw-Hill, Douglas, 2002 Sách, tạp chí
Tiêu đề: “VHDL Programming by Example”
3. Robert K.Dueck: “Digital Design with CPLD Applications and VHDL”, Cengage Learning, 2005 Sách, tạp chí
Tiêu đề: “Digital Design with CPLD Applications and VHDL”
5. Tống Văn On: “Thiết kế mạch số với VHDL &amp; Verilog”, NXB Lao động xã hội 2001 Sách, tạp chí
Tiêu đề: “Thiết kế mạch số với VHDL & Verilog”
Nhà XB: NXB Lao động xã hội 2001
6. Nguyễn Nam Quân: “Toán logic &amp; kỹ thuật số”, NXB Khoa học và Kỹ thuật, 2006 Sách, tạp chí
Tiêu đề: “Toán logic & kỹ thuật số”
Nhà XB: NXB Khoa học và Kỹ thuật
4. Programmable Logic Design Quick Start Handbook, 2006 Khác

HÌNH ẢNH LIÊN QUAN

Hình 1.2: Bộ nhân (16×16) được thiết kế bằng HDL. - Thiet ke mach dien bang may tinh
Hình 1.2 Bộ nhân (16×16) được thiết kế bằng HDL (Trang 11)
Hình 1.3: Quá trình thiết kế số trên FPGA. - Thiet ke mach dien bang may tinh
Hình 1.3 Quá trình thiết kế số trên FPGA (Trang 13)
Hình 1.6: Placing. - Thiet ke mach dien bang may tinh
Hình 1.6 Placing (Trang 15)
Hình 2.1 mô tả kiến trúc của PLA. - Thiet ke mach dien bang may tinh
Hình 2.1 mô tả kiến trúc của PLA (Trang 17)
Hình 2.5: Kiến trúc của FPGA. - Thiet ke mach dien bang may tinh
Hình 2.5 Kiến trúc của FPGA (Trang 21)
Hình 2.8: Các vi mạch Logic khả trình của Xilinx. - Thiet ke mach dien bang may tinh
Hình 2.8 Các vi mạch Logic khả trình của Xilinx (Trang 23)
Hình 2.9: Các hướng ứng dụng với CPLD. - Thiet ke mach dien bang may tinh
Hình 2.9 Các hướng ứng dụng với CPLD (Trang 24)
Bảng 2.1: Dòng CoolRunner-II. 2.2.2. FPGA Xilinx - Thiet ke mach dien bang may tinh
Bảng 2.1 Dòng CoolRunner-II. 2.2.2. FPGA Xilinx (Trang 25)
Hình 2.11: Dòng Virtex-4. - Thiet ke mach dien bang may tinh
Hình 2.11 Dòng Virtex-4 (Trang 28)
Hình 3.4: Biểu đồ thời gian Transport Delay. Ví dụ:  - Thiet ke mach dien bang may tinh
Hình 3.4 Biểu đồ thời gian Transport Delay. Ví dụ: (Trang 60)
Hình 3.5: Mô tả Transport Delay. - Thiet ke mach dien bang may tinh
Hình 3.5 Mô tả Transport Delay (Trang 61)
Hình 3.10: Thực thể Programmable Gate. 3.6.5. Phát biểu NULL - Thiet ke mach dien bang may tinh
Hình 3.10 Thực thể Programmable Gate. 3.6.5. Phát biểu NULL (Trang 65)
Hình 3.14: Sơ đồ bộ cộng bốn bit sử dụng một bộ cộng - Thiet ke mach dien bang may tinh
Hình 3.14 Sơ đồ bộ cộng bốn bit sử dụng một bộ cộng (Trang 89)
Hình 4.3: Cửa sổ chọn mã soạn thảo chương trình. - Thiet ke mach dien bang may tinh
Hình 4.3 Cửa sổ chọn mã soạn thảo chương trình (Trang 96)
Hình 4.2: Cửa sổ nhập New Project. - Thiet ke mach dien bang may tinh
Hình 4.2 Cửa sổ nhập New Project (Trang 96)
Hình 4.4: Cửa sổ khai báo các cổng vào và ra. - Thiet ke mach dien bang may tinh
Hình 4.4 Cửa sổ khai báo các cổng vào và ra (Trang 97)
Hình 4.6: Cửa sổ soạn thảo trong ISE. - Thiet ke mach dien bang may tinh
Hình 4.6 Cửa sổ soạn thảo trong ISE (Trang 98)
Hình 4.7: Cửa sổ mã chương trình của bộ đếm Counter. - Thiet ke mach dien bang may tinh
Hình 4.7 Cửa sổ mã chương trình của bộ đếm Counter (Trang 99)
Hình 4.9: Cửa sổ thiết lập thời gian và xung đồng hồ cho mô phỏng. - Thiet ke mach dien bang may tinh
Hình 4.9 Cửa sổ thiết lập thời gian và xung đồng hồ cho mô phỏng (Trang 100)
Hình 4.8: Cửa sổ chọn mã nguồn soạn thảo. - Thiet ke mach dien bang may tinh
Hình 4.8 Cửa sổ chọn mã nguồn soạn thảo (Trang 100)
Hình 4.13: Chọn Simulate Behavioral Model. - Thiet ke mach dien bang may tinh
Hình 4.13 Chọn Simulate Behavioral Model (Trang 102)
Hình 4.16: Cửa sổ chọn mã nguồn soạn thảo. - Thiet ke mach dien bang may tinh
Hình 4.16 Cửa sổ chọn mã nguồn soạn thảo (Trang 103)
Hình 4.17: Cửa sổ tạo nhóm các trạng thái máy. - Thiet ke mach dien bang may tinh
Hình 4.17 Cửa sổ tạo nhóm các trạng thái máy (Trang 104)
Hình 4.20: Cửa sổ để sửa trạng thái. - Thiet ke mach dien bang may tinh
Hình 4.20 Cửa sổ để sửa trạng thái (Trang 105)
Hình 4.19: Cửa sổ thiết lập các kích thích chuyển trạng thái. - Thiet ke mach dien bang may tinh
Hình 4.19 Cửa sổ thiết lập các kích thích chuyển trạng thái (Trang 105)
Lưu đồ trạng thái sẽ trông giống như hình 4.22 dưới đây. - Thiet ke mach dien bang may tinh
u đồ trạng thái sẽ trông giống như hình 4.22 dưới đây (Trang 106)
Hình 4.23: Cửa sổ tạo điều kiện kích thích đầu ra. - Thiet ke mach dien bang may tinh
Hình 4.23 Cửa sổ tạo điều kiện kích thích đầu ra (Trang 107)
Hình 4.26: Kết quả được biên dịch. - Thiet ke mach dien bang may tinh
Hình 4.26 Kết quả được biên dịch (Trang 108)
Hình 4.25: Lưu đồ trạng thái sau khi soạn thảo xong. - Thiet ke mach dien bang may tinh
Hình 4.25 Lưu đồ trạng thái sau khi soạn thảo xong (Trang 108)
Hình 4.30: Cửa sổ chọn mã nguồn soạn thảo. - Thiet ke mach dien bang may tinh
Hình 4.30 Cửa sổ chọn mã nguồn soạn thảo (Trang 110)
Hình 4.34: Đoạn mã khai báo component và instantiation. - Thiet ke mach dien bang may tinh
Hình 4.34 Đoạn mã khai báo component và instantiation (Trang 112)
Hình 4.35: File top.vhd. - Thiet ke mach dien bang may tinh
Hình 4.35 File top.vhd (Trang 113)
Hình 4.36: Các kết nối tín hiệu mức đỉnh. - Thiet ke mach dien bang may tinh
Hình 4.36 Các kết nối tín hiệu mức đỉnh (Trang 114)
Hình 4.40: Cửa sổ thiết lập thời gian và xung đồng hồ cho mô phỏng. - Thiet ke mach dien bang may tinh
Hình 4.40 Cửa sổ thiết lập thời gian và xung đồng hồ cho mô phỏng (Trang 116)
Hình 4.44: Cửa sổ chọn mã nguồn soạn thảo. - Thiet ke mach dien bang may tinh
Hình 4.44 Cửa sổ chọn mã nguồn soạn thảo (Trang 118)
8. Phóng to lên để ta được hình 4.46 dưới đây. - Thiet ke mach dien bang may tinh
8. Phóng to lên để ta được hình 4.46 dưới đây (Trang 119)
Hình 4.45: Các symbols. - Thiet ke mach dien bang may tinh
Hình 4.45 Các symbols (Trang 119)
Hình 4.56: Cửa sổ Processes hiển thị kết quả kiểm tra cú pháp cho “Counter.vhd”. - Thiet ke mach dien bang may tinh
Hình 4.56 Cửa sổ Processes hiển thị kết quả kiểm tra cú pháp cho “Counter.vhd” (Trang 125)
Hình 4.58: Cửa sổ Process Properties. - Thiet ke mach dien bang may tinh
Hình 4.58 Cửa sổ Process Properties (Trang 126)
Hình 4.59: Chọn Assign Package Pins. - Thiet ke mach dien bang may tinh
Hình 4.59 Chọn Assign Package Pins (Trang 127)
Hình 4.61: Thông tin về chân bị khóa được hiển thị. - Thiet ke mach dien bang may tinh
Hình 4.61 Thông tin về chân bị khóa được hiển thị (Trang 128)
Hình 4.63: Cửa sổ Xilinx Constraints Editor. - Thiet ke mach dien bang may tinh
Hình 4.63 Cửa sổ Xilinx Constraints Editor (Trang 129)
Hình 4.65: Tạo nhóm trong Constraints Editor. - Thiet ke mach dien bang may tinh
Hình 4.65 Tạo nhóm trong Constraints Editor (Trang 130)
Hình 4.67: Nội dung file “top_sch.ucf”. - Thiet ke mach dien bang may tinh
Hình 4.67 Nội dung file “top_sch.ucf” (Trang 131)
Hình 4.68: Cửa sổ Process Properties. - Thiet ke mach dien bang may tinh
Hình 4.68 Cửa sổ Process Properties (Trang 132)
Hình 4.69: Cửa sổ Preferences. - Thiet ke mach dien bang may tinh
Hình 4.69 Cửa sổ Preferences (Trang 133)
Hình 4.70: CPLD Fitter Report dưới dạng File HTML. - Thiet ke mach dien bang may tinh
Hình 4.70 CPLD Fitter Report dưới dạng File HTML (Trang 134)
Ta hãy chọn Post-Fit Simulation như hình 4.71 dưới đây. - Thiet ke mach dien bang may tinh
a hãy chọn Post-Fit Simulation như hình 4.71 dưới đây (Trang 134)
Hình 4.70: CPLD Fitter Report dưới dạng File HTML. - Thiet ke mach dien bang may tinh
Hình 4.70 CPLD Fitter Report dưới dạng File HTML (Trang 134)
Hình 4.71: Lựa chọn Post-Fit Simulation. - Thiet ke mach dien bang may tinh
Hình 4.71 Lựa chọn Post-Fit Simulation (Trang 135)
Hộp thoại Project Properties sẽ hiện ra như hình 4.75. - Thiet ke mach dien bang may tinh
p thoại Project Properties sẽ hiện ra như hình 4.75 (Trang 137)
Hình 4.76: Cửa sổ Processes cho thấy việc kiểm tra cú pháp đã thành công. - Thiet ke mach dien bang may tinh
Hình 4.76 Cửa sổ Processes cho thấy việc kiểm tra cú pháp đã thành công (Trang 139)
Hình 4.80: Cửa sổ Processes hiển thị Assign Package Pins. - Thiet ke mach dien bang may tinh
Hình 4.80 Cửa sổ Processes hiển thị Assign Package Pins (Trang 141)
Hình 4.82: Cửa sổ định nghĩa Clock - Thiet ke mach dien bang may tinh
Hình 4.82 Cửa sổ định nghĩa Clock (Trang 142)
Hình 4.82: Cửa sổ định nghĩa Clock - Thiet ke mach dien bang may tinh
Hình 4.82 Cửa sổ định nghĩa Clock (Trang 142)
Hình 4.85: File ràng buộc thiết kế. - Thiet ke mach dien bang may tinh
Hình 4.85 File ràng buộc thiết kế (Trang 143)
Hình 4.88: Chọn JTAG Clock trong cửa sổ Process Properties. - Thiet ke mach dien bang may tinh
Hình 4.88 Chọn JTAG Clock trong cửa sổ Process Properties (Trang 145)
Hình 4.89 : Trình nạp iMPACT. - Thiet ke mach dien bang may tinh
Hình 4.89 Trình nạp iMPACT (Trang 146)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w