You are on page 1of 8

1.

Cấu trúc của chương trình mô tả bằng VHDL


Cấu trúc tổng thể của một khối thiết kế VHDL gồm ba phần, phần khai
báo thư viện, phần mô tả thực thể và phần mô tả kiến trúc.

Ngoài các khối trên trong 1 thiết kế VHDL còn có thể có chứa thêm các khối:
o Configuration.
o Packege.
o Package body.
2. khai báo thư viện sử dụng:
Khai báo thư viện phải được đặt đầu tiên trong mỗi thiết kế VHDL, luu ý rằng
nếu ta sử dụng một tệp mã nguồn để chứa nhiều khối thiết kế khác nhau thì mỗi một
khối đều phải yêu cầu có khai báo thư viện đầu tiên, nếu không khi biên dịch sẽ phát
sinh ra lỗi.
Ví dụ về khai báo thư viện:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
Khai báo thư viện bắt đầu bằng từ khóa Library Tên thư viện (chú ý là VHDL
không phân biệt chữ hoa chữ thường). Sau đó trên từng dòng kế tiếp sẽ khai báo các
gói thư viện con mà thiết kế sẽ sử dụng, mỗi dòng phải kết thúc bằng dấu “;”. Tương
tự như đối với các ngôn ngữ lập trình khác, người thiết kế có thể khai báo sử dụng các
thư viện chuẩn hoặc thư viện người dùng.Thư viện IEEE gồm nhiều gói thư viện con
khác nhau trong đó đáng chú ý có các thư viện sau:
- Gói IEEE.STD_LOGIC_1164 cung cấp các kiểu dữ liệu std_ulogic,
std_logic, std_ulogic_vector, std_logic_vector, các hàm logic and, or, not, nor, xor…
các hàm chuyển đổi giữa các kiểu dữ liệu trên. std_logic, std_ulogic hỗ trợ kiểu logic
với 9 mức giá trị logic .
- Gói IEEE.STD_LOGIC_ARITH định nghĩa các kiểu dữ liệu số nguyên
SIGNED, UNSIGNED, INTEGER, SMALL INT cung cấp các hàm số học bao gồm “
+ ”, “ - “, “ * ”, “ / “, so sánh “ < ”, “ > “, “ <= ” , “ >= “, các hàm dịch trái, dịch phải,
các hàm chuyển đổi từ kiểu vector sang các kiểu số nguyên.
- Gói IEEE.STD_LOGIC_UNSIGNED Cung cấp các hàm số học logic làm
việc với các kiểu dữ liệu std_logic, integer và trả về giá trị dạng std_logic với giá trị
không có dấu
- Gói IEEE.STD_LOGIC_SIGNED Cung cấp các hàm số học logic làm việc
với các kiểu dữ liệu std_logic, integer và trả về giá trị dạng std_logic với giá trị có dấu
- Gói IEEE.NUMERIC_BIT Cung cấp các hàm số học logic làm việc với các
kiểu dữ liệu signed, unsigned đƣợc là chuỗi của các BIT.
- Gói IEEE.NUMERIC_BIT Cung cấp các hàm số học logic làm việc với các
kiểu dữ liệu signed, unsigned đƣợc là chuỗi của các STD_LOGIC.
-Gói IEEE.STD_LOGIC_TEXTIO chứa các hàm, thủ tục vào ra
READ/WRITE để đọc ghi dữ liệu cho các định dạng STD_LOGIC, STD_ULOGIC từ
FILE, STD_INPUT, TD_OUTPUT, LINE.
- Gói STD.TEXTIO chứa các hàm vào ra READ/WRITE để đọc ghi dữ liệu
với các định dạng khác nhau gồm, BIT, INTEGER, TIME, REAL, CHARATER,
STRING từ FILE, STD_INPUT, STD_OUTPUT, LINE.
-Gói IEEE.MATH_REAL, IEEE.MATH_COMPLEX cung cấp các hàm
làm việc với số thực và số phức nhƣ SIN, COS, SQRT… hàm làm tròn, CIEL,
FLOOR, hàm tạo số ngẫu nhiên SRAND, UNIFORM… và nhiều các hàm tính toán số
thực khác.
- Gói STD.ENV cung cấp các hàm, thủ tục hệ thống phục vụ mô phỏng gồm
stop – dừng mô phỏng, finish – thoát chƣơng trình, resolution_limit trả về bƣớc thời
gian mô phỏng.
3. Khai báo biến, hằng, tín liệu + Vị trí đặt các biến, hằng, tín hiệu
Trong VHDL có 3 lớp đối tượng dữ liệu :
+ Hằng (constant)
+ Biến( variable)
+Tín hiệu (signal)
 Hằng (constant)
- Là đối tượng có giá trị không thay đổi.
- Được khai báo trong các gói, entity, architecture, chương trình con, các
block và các phát biểu trong process.
- Cú pháp khai báo:
Constant constant_name:type [:=value];
Ví dụ : Constant YES : BOOLEAN := TRUE;
 Biến( variable)
Dùng để lưu trữ dữu liệu tạm thời.
Chỉ được khai báo trong các process hoặc chương trình con.
Cú pháp khai báo biến :
Variable tên_biến : kiểu_biến ;
Ví dụ : variable X,Y :BIT ;
 Tín hiệu (signal)
Dùng để kết nối các entity với nhau.
Trao đổi các giá trị biến đổi trong process.
Được hiểu như các dây dẫn hoặc bus trong mạch.
Khai báo trong package, entity, architecture, block.
Cú pháp khai báo:
Signal Signal_name : type [:=value];
Ví dụ : signal BEEP :BIT := ‘0’
4. Trình bày bảng chân lý , nguyên lý hoạt động của các mạch:
 Bộ cộng 1 bit (bán cộng), bộ trừ (bán trừ).
- Bộ cộng bán tổng thực hiện cộng hai sô nhị phân một bít

Quy tắc cộng như sau:

Trong đó:
a,b là số cộng, s là tổng của phép cộng , c là số nhớ.
Bảng chân lý mô tả hoạt động của
mạch và phương trình logic như
sau:

Mạch cộng này chỉ cho phép cộng hai số nhị phân một bít mà
không thực hiện cộng hai số nhị phân nhiều bít
- Bộ bán trừ thực hiện trừ hai số nhị phân một bít
Trong đó a số bị từ, b số trừ , D là hiệu, B là số mượn

Bảng chân lý mô tả hoạt động và sơ đồ mạch :

Mạch trừ này chỉ cho phép trừ hai số nhị phân một bít mà không
thực hiện trừ hai số nhị phân nhiều bít.
 Bộ cộng , trừ đầy đủ .
- Bộ cộng toàn phần
Trong đó
Cn-1 : Số nhớ của lần cộng
trước đó
C n : Số nhớ của lần cộng
hiện tại
S : Tổng hiện tại
Bảng chân lý của mạch cộng toàn phần:

- Bộ trừ toàn phần

Bảng chân lý mô tả họa động của mạch :

an bn B n-1 Dn Bn
0 0 0 0 0
0 0 1 1 1
0 1 0 1 1
0 1 1 0 1
1 0 0 1 0
1 0 1 0 0
1 1 0 0 0
1 1 1 1 1
 Bộ kiểm tra chẵn lẻ.

 Bộ MUX, DEMUX.
- MUX 4-1

Mạch trên có 2 đường điều khiển chọn là S0 và S1 nên chúng tạo ra 4 trạng thái
logic. Mỗi một trạng thái sẽ cho phép 1 đường vào I nào đó qua để truyền tới
đường ra Y. Như vậy tổng quát nếu có 2n đường vào song song thì phải cần n
đường điều khiển chọn.
Cũng nói thêm rằng, ngoài những đường như ở trên, mạch thường còn có thêm
đường G: được gọi là đường vào cho phép (enable) hay xung đánh dấu (strobe).
Mạch tổ hợp có thể có 1 hay nhiều đường vào cho phép và nó có thể tác động
mức
cao hay mức thấp. Như mạch dồn kênh ở trên, nếu có thêm 1 đường cho phép G
tác
động ở mức thấp, tức là chỉ khi G = 0 thì hoạt động dồn kênh mới diễn ra còn
khi G
= 1 thì bất chấp các đường vào song song và các đường chọn, đường ra vẫn giữ
cố
định mức thấp (có thể mức cao tuỳ dạng mạch)
Như vậy khi G = 0
S1S0 = 00, dữ liệu ở I0 sẽ đưa ra ở Y
S1S0 = 01, dữ liệu ở I1 sẽ đưa ra ở Y
S1S0 = 10, dữ liệu ở I2 sẽ đưa ra ở Y
S1S0 = 11, dữ liệu ở I3 sẽ đưa ra ở Y
do đó biểu thức logic của mạch khi có thêm đường G là

- DEMUX 4-1
Mạch tách kênh từ 1 đường sang 4 đường nên số đường chọn phải là 2.
Khi đường cho phép G ở mức 1 thì nó cấm không cho phép dữ liệu vào được
truyền ra ở bất kì đường nào nên tất cả các đường ra đều ở mức 0.

Như vậy khi G = 0 BA = 00 dữ liệu S được đưa ra đường Y0, nếu S = 0 thì Y0
cũng bằng 0 và nếu S = 1 thì Y0 cũng bằng 1,tức là S được đưa tới Y0; các
đường khác không đổi.
Tương tự với các tổ hợp BA khác thì lần lượt ra ở S sẽ là Y1, Y2, Y3
Biểu thức logic củacác đường ra sẽ là:

5. Quy trình thiết kế mạch logic tổ hợp.


Quy trình thiết kế mạch logic như sau:
+ Xây dựng phương trình logic sử dụng các phương trình theo CTT, hay CTH
hoặc có thể sử dụng bảng chân lý để biểu diễn
+ Sử dụng bảng karnaugh hoặc các phương pháp đại số để tối thiểu hóa hàm
logic hoặc đưa hàm logic về dạng mà dễ thiết kế mạch
+Thiết kế mạch cho chạy thử
+ Đánh giá tính ổn định của mạch

You might also like