Nội Dung: 1. CÁC CẤU TRÚC CƠ BẢN CỦA NGÔN NGỮ VHDL 2. CÁC ĐỐI TƯỢNG DỮ LIỆU 3. CÁC KIỂU DỮ LIỆU 4. CÁC TOÁN TỬ 5. CÁC KIỂU TOÁN HẠNG 6. CÁC PHÁT BIỂU TUẦN TỰ 7. CÁC PHÁT BIỂU ĐỒNG THỜI
KIẾN THỨC CƠ BẢN VỀ VHDLVHDL 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ư ta đã 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ô phỏng phần cứng đó được các nhà cung cấp thiết bị phát triển, nên mang các đặc trưng gắn với các thiết bị 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 1 xuất thiết bị 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.• 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 tuỳ 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 2 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Ữ VHDLCá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. - 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 3.1.1. Khai báo EntityNhư 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: Entity entity_name is [generic (generic_declaration);] [port (port_declaration);] {entity_declarative_item {constants, types, signals};} end [entity_name]; • [] : 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]}); • Ở đâ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: 4 - 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. d. Ví dụ :Ví dụ về khai báo các cổng vào ra: entity xxx is port ( A : in integer ; B : in integer ; C : out integer ; D : inout integer ; E : buffer integer) ; end xxx; architecture bhv of xxx isbegin process (A,B) begin 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 ). end process; end bhv; Ví dụ về khai báo Entity:5 Hình 3.1: Thực thể FULL_ADDER 1bit.Hình 3.1 chỉ ra một giao diện của một bộ cộng một bit. Tên Entity của phần tử này là FULL_ADDER. Nó bao gồm các cổng đầu vào A, B và CIN. Các cổng này có kiểu dữ liệu là kiểu Bit, còn các cổng đầu ra SUM và COUT cũng mang kiểu dữ liệu là kiểu BIT. Ngôn ngữ VHDL dùng để diễn tả giao diện này như sau: 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; 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:6 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à 7 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.architecture BEHAVIOUR of FULL_ADDER is begin process (A,B,CIN) begin if ( A ='0' and B ='0' and CIN='0' ) then SUM <= '0'; COUT <= '0' ; elsif (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 SUM <= '0'; COUT <= '1'; elsif (A='1' and B='1' and CIN='1') then SUM <='1'; COUT <='1'; end if; end process; end BEHAVIOURAL; 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 8 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 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 component HALF_ADDER port (L1, L2 : in BIT; CARRY, SUM : out BIT); end component; component OR_GATE port (L1, L2 : in BIT; O: out BIT); end component; begin 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 9 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.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. Các đóng gói (Packages)Mục đích chính của Package là tập hợp các phần tử có thể bị chia sẻ bởi hai hay nhiều đơn vị thiết kế (hay các phần tử có thể dùng chung được). Nó có chứa các kiểu dữ liệu, các hằng, các chương trình con có thể dùng chung giữa các thiết kế. Một Package có cha hai phần chính: - Phần khai báo Package. - Phần thân Package. 3.1.3.1. Phần khai báo PackageMộ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) end component; 10 [...]... ('U','X','0','1','Z','W','L','H','_'); 16 KIẾN THỨC CƠ BẢN 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... 15 return [expression]; Ở đây expression sẽ đưa ra các giá trị trả về của hàm, phát biểu return trong một hàm cần phải có một biểu thức và giá trị trả về của nó, nhưng đối với phát biểu trả về trong thủ tục thì khơng cần phải có mặt của biểu thức. Một hàm có thể có nhiều hơn một phát biểu trả về, nhưng chỉ có một phát biểu trả về được sử dụng bởi một lời gọi hàm. 3.7. CÁC PHÁT BIỂU ĐỒNG THỜI Các... đư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... tuy nhiên phép gán này có thể có nhiều hơn một biểu thức cho một đích. Ngoại trừ biểu thức cuối cùng, các biểu thức còn lại phải có một điều kiện chắc chắn, các điều kiện này được đánh giá theo thứ tự. Nếu một điều kiện được đánh giá là TRUE thì biểu thức tương ứng được sử dụng, ngược lại các biểu thức còn lại sẽ được sử dụng. Nhớ rằng chỉ một biểu thức được sử dụng tại một thời điểm. Cú pháp của... 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. • 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... 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 1 process. Dưới đây là ví dụ chỉ ra kiểu... đặc biệt (Application Specified IC). • Ðộc lập với cơng nghệ: VHDL hồn tồ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 tuỳ 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... chỉ ra bởi một biểu thức. Biến có thể được khai báo và sử dụng bên trong một phát biểu q trình hay cịn được gọi là phát biểu Process. Một biến được gán một giá trị sử dụng thông qua phát biểu gán biến, mà phát biểu này có hình thức như sau: target_variable : = expression; 29 A1' low Trả về giá trị là 0. A1' range Trả về là 10 downto 0. A1' reverse_range Trả về giá trị là 0 to... là : "10101" 3.5. CÁC KIỂU TOÁN HẠNG Trong một biểu thức các toán tử sử dụng các toán hạng để tính tốn các giá trị của chúng. Các toán hạng trong một biểu thức bao gồm : - Kiểu chữ - Kiểu định danh - Các tên được đánh theo chỉ số - Tên các Slice - Tên các đặc tính - Các biểu thức điều kiện - Các lời gọi hàm - Các biểu thức chuyển đổi 23 logic tổ hợp. Chẳng hạn như các bộ cộng, bộ... 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 . KIẾN THỨC CƠ BẢN VỀ VHDLVHDL là viết tắt của cụm từ Very High Speed Intergrated Circuit. 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