BASIC LANGUAGECONSTRUCTS OF VHDL


  1. INTRODUCTION 

-VHDL là một ngôn ngữ phức tạp. 

-Nó được thiết kế để mô tả cả quan điểm cấu trúc và hành vi của một hệ thống số ở các cấp độ trừu tượng khác nhau.

-Nhiều cấu trúc ngôn ngữ được dùng cho mô hình hóa và mô tả hành vi trừu tượng.

-Chỉ một phần nhỏ của VHDL có thể được tổng hợp và thực hiện về thể chất trong phần cứng.

  2. SKELETON OF A BASIC VHDL PROGRAM 

1. EXAMPLE OF A VHDL PROGRAM 

- Một chương trình VHDL bao gồm một bộ sưu tập các đơn vị thiết kế.

-Một chương trình VHDL tổng hợp cần ít nhất hai đơn vị thiết kế: một khai báo thực thể và một cơ cấu kiến ​​trúc liên kết với thực thể đó.

-Bộ khung của một chương trình VHDL điển hình có thể được giải thích bằng một ví dụ.

2. ENTITY DECLARATION 

-Cú pháp đơn giản hóa của một khai báo thực thể là.

3. ARCHITECTURE BODY 

Cơ cấu kiến ​​trúc xác định hoạt động nội bộ hoặc tổ chức một mạch.

4. DESIGN UNIT AND LIBRARY 

-Các đơn vị thiết kế là những khối xây dựng cơ bản trong một chương trình VHDL.

-Khi một chương trình được xử lý, nó được chia thành các đơn vị thiết kế riêng lẻ và mỗi đơn vị được phân tích và lưu trữ độc lập.

-There are five kinds of design units: 

  Tuyên bố thực thể

 Kiến trúc cơ thể

 Khai báo gói 

Cấu trúc cơ thể

 Cấu hình 

-Một gói VHDL thường chứa một bộ sưu tập các vật dụng thông thường, như các kiểu dữ liệu, các chương trình phụ và các thành phần, cần thiết cho nhiều chương trình VHDL.

-Như tên cho thấy, một gói khai báo bao gồm các tuyên bố của các mục này.

-Một cơ thể trọn gói thường có chứa việc thực hiện và mã của các tiểu chương trình

-Trong VHDL, nhiều cơ cấu kiến ​​trúc có thể được liên kết với một khai báo thực thể.

-Một cấu hình xác định cơ thể kiến ​​trúc nào sẽ bị ràng buộc với khai báo thực thể.

  3. LEXICAL ELEMENTS AND PROGRAM FORMAT 

1. LEXICAL ELEMENTS 

-Các yếu tố từ vựng là các đơn vị cú pháp cơ bản trong một chương trình VHDL. 

-Chúng bao gồm nhận xét, số nhận dạng, từ dành riêng, số, ký tự và chuỗi.

bình luận

- Một nhận xét bắt đầu với hai dấu gạch ngang, -, tiếp theo là bình luận văn bản.

- Bất cứ điều gì sau khi ký hiệu - trong dòng sẽ bị bỏ qua. Các bình luận chỉ dành cho mục đích tài liệu và không có

-Ví dụ, chúng tôi đã thêm ý kiến ​​vào mã VHDL trước đó:

định danh

- Một định danh là tên của một đối tượng trong VHDL.

- Các quy tắc cơ bản để tạo ra một số nhận dạng là:

 Mã nhận dạng chỉ có thể chứa các ký tự chữ cái, số thập phân chữ số và dấu gạch dưới.

 Nhân vật đầu tiên phải là một lá thư.

 Ký tự cuối cùng không thể là dấu gạch dưới.

 Không được phép gạch dưới thứ hai.

Ví dụ, các định danh sau đây là hợp lệ:

-Mặt khác, các định danh sau vi phạm một trong các quy tắc và sẽ gây ra một lỗi cú pháp:

-Vì VHDL không phải là trường hợp nhạy cảm, các định danh sau đây là giống nhau:

Số, ký tự và dây

- Ví dụ, 45 có thể được đại diện là 2 # 101101 # và

16 # 2D # trong cơ sở 2 và cơ sở 16 tương ứng.

- Chúng tôi cũng có thể thêm một gạch dưới để tăng cường khả năng đọc.

-Ví dụ: 12_3456 tương tự như 123456, và 2 # 0011_1010_1101 # là giống như 2 # 001110101101 #.

  4. OBJECTS 

1. TÍN HIỆU

- Tín hiệu là đối tượng phổ biến nhất và chúng ta đã sử dụng nó trong các ví dụ trước.

- Một tín hiệu phải được khai báo trong cơ thể của kiến ​​trúc khai báo. 

- Cú pháp đơn giản hóa của khai báo tín hiệu là

- Ví dụ, dòng sau tuyên bố một, tín hiệu b và c với kiểu dữ liệu std_logic:

-Theo định nghĩa VHDL, chúng ta có thể chỉ định một giá trị ban đầu tùy chọn trong việc khai báo tín hiệu. Ví dụ, chúng ta có thể gán một giá trị ban đầu là '0' với các tín hiệu trước đó:

2. BIẾN

- Một biến là một khái niệm được tìm thấy trong một chương trình truyền thống ngôn ngữ. Nó có thể được coi như là một "ký ức tượng trưng vị trí "mà một giá trị có thể được lưu trữ và sửa đổi.

- Không có ánh xạ trực tiếp giữa một biến và một phần cứng.

-Một biến chỉ có thể được khai báo và sử dụng trong một quá trình và là cục bộ của quá trình đó.

-Ứng dụng chính của một biến là để mô tả hành vi trừu tượng của một hệ thống.

-Cú pháp khai báo biến tương tự như khai báo tín hiệu:

3. hằng số

-Hằng số giữ một giá trị không thể thay đổi. Cú pháp của khai báo hằng là:

-Thuật ngữ value_expression chỉ định giá trị của hằng.

Một ví dụ đơn giản là:

  5. DATA TYPES AND OPERATORS  

Trong VHDL, mỗi đối tượng đều có một kiểu dữ liệu. Một loại dữ liệu được định nghĩa bởi:

 Một tập các giá trị mà một đối tượng có thể giả sử. Một tập hợp các phép tính có thể được thực hiện trên các đối tượng này

loại dữ liệu.

1. CÁC LOẠI D DATA LIỆU CHUYÊN NGHIỆP TRONG VHDL

Số nguyên: VHDL không xác định chính xác xác định rằng phạm vi tối thiểu tương ứng với 32 bit.

--Boolean: được định nghĩa là (false, thật)

-Bit: được định nghĩa là ('0', '1')

-Bit_vector: được định nghĩa như một mảng một chiều với các phần tử của kiểu dữ liệu bit.

2. Dạng dữ liệu trong Gói STD_LOGIC_1164 của IEEE

-Để phản ánh tốt hơn tài sản điện của phần cứng kỹ thuật số, một số loại dữ liệu mới đã được phát triển bởi IEEE để phục vụ như một phần mở rộng cho các loại dữ liệu bit và bit_vector.

-Các kiểu dữ liệu chủ đề được định nghĩa trong gói std_logic_1164 của tiêu chuẩn IEEE 1164.

-Kiểu dữ liệu std_logic bao gồm chín giá trị có thể, được hiển thị trong danh sách sau:

-Các giá trị này được diễn giải như sau:

 '0' và '1': đứng cho "ép logic 0" và "buộc logic 1 , "Có nghĩa là tín hiệu được điều khiển bởi một mạch với một thường xuyên lái xe hiện nay.

 'Z': viết tắt của trở kháng cao, thường gặp trong một bộ đệm bang ba.

 L 'và' H ': đứng cho "logic yếu 0" và "logic yếu 1", mà có nghĩa là tín hiệu thu được từ các kiểu logic có dây mạch, trong đó dòng điện dẫn động yếu.

 'U': viết tắt của uninitialized. Nó được sử dụng trong mô phỏng để chỉ ra rằng một tín hiệu hoặc biến vẫn chưa được gán một giá trị.

 '-': viết tắt của don't-care.

 'X' và 'W': viết tắt của "unknown" và "weak unknown."

 Không xác định đại diện cho một tín hiệu đến một giá trị điện áp trung gian có thể được hiểu là không logic 0 hoặc logic 1. Điều này có thể xảy ra do xung đột đầu ra (chẳng hạn như tín hiệu logic-0 và tín hiệu logic-1 bị buộc cùng với nhau). Chúng được sử dụng trong mô phỏng cho một sai lầm

 Trong số các giá trị này, chỉ có '0', '1' và 'Z' được sử dụng trong tổng hợp.

 Các giá trị 'L' và 'H' hiếm khi được sử dụng ngay từ bây giờ thiết kế thực tiễn ít khi sử dụng một mạch logic có dây.

 Sử dụng 'Z' và vấn đề tiềm ẩn của '-' được thảo luận trong Chương 6.

- Toán tử kết nối

 Toán tử nối, &, rất hữu ích cho mảng Thao tác.

 Chúng ta có thể kết hợp các phân đoạn của các phần tử và các mảng nhỏ hơn để tạo thành một mảng lớn hơn.

-Mảng tổng hợp

 Ví dụ: nếu chúng ta muốn gán giá trị "10100000" thành một tín hiệu, nó có thể được viết như sau: a <= "10100000"; 

 Một cách khác là liệt kê từng giá trị của phần tử trong vị trí tương ứng, được gọi là vị trí hiệp hội. Công việc trước đây trở thành a <= ('1', '0', '1', '0', '0', '0', '0', '0'); 

• Chúng ta cũng có thể sử dụng dạng index => giá trị để rõ ràng chỉ định giá trị cho mỗi chỉ mục, được gọi là tên hiệp hội.

• Bản tuyên bố có thể được viết bằng a <= (7=> '1', 6=> '0', 0=> '0', 1=> '0',

5 => '1', 4=> '0', 3=> '0', 2=> '0'); 

-Chúng ta có thể kết hợp các chỉ số, như trong a <= ((7|5) => '1', 6|4|3|2|1|0=>'0'); 

hoặc sử dụng một từ dành riêng, những người khác, để bao gồm tất cả các chỉ số không sử dụng, như trong a <= (7|5=>'1', others=> '0'); 

-Ví dụ, nếu chúng ta muốn gán "00000000" cho một tín hiệu, chúng tôi có thể viết  a <= (others=> '0'); 

-Nó nhỏ gọn hơn a <= "10100000"; 

Để thực hiện bổ sung các tín hiệu a và b, chúng ta phải sử dụng kiểu số nguyên, như trong

 Khó nhận ra tuyên bố này trong phần cứng kể từ mã không chỉ ra phạm vi (số bit) của các tín hiệu a và b.

 Mặc dù điều này không quan trọng đối với mô phỏng, đó là quan trọng cho tổng hợp vì có một sự khác biệt rất lớn giữa sự phức tạp phần cứng của một bộ cộng 8-bit và của một adder 32-bit.

 Một lựa chọn tốt hơn là sử dụng một mảng của 0 và 1 và giải thích nó như là một số unsigned hoặc ký kết.

 Gói numeric_std của IEEE đã được phát triển cho Mục đích này.

- Kể từ khi các kiểu dữ liệu ký tên và unsigned là mảng, các khai báo tương tự như các dữ liệu std_logic_vector kiểu, như trong signal x, y: signed(15 downto 0); 

-Để sử dụng các kiểu dữ liệu đã ký tên và chưa ký, chúng ta phải bao gồm các tuyên bố thư viện trước khi khai báo thực thể

*Giả sử rằng một số tín hiệu được khai báo như sau:

  library ieee;
use ieee.Std_logic_1164.all;
use ieee.Numeric_std.all; 

 

Bạn đang đọc truyện trên: AzTruyen.Top

Tags: #sdada