Thiết kế mạch so sánh 4 bit vhdl

Thông thường để so sánh hai giá trị với nhau thì ta dùng các thuật ngữ bằng, lớn hơn và nhỏ hơn để nói lên kết quả của phép so sánh này. Một bộ so sánh là một mạch thực hiện nhiêm vụ so sánh hai số nhị phân gồm có nhiều bit. Để so sánh một giá trị là bằng hay không bằng một giá trị hằng số, thì một cổng AND cơ bản cần phải được sử dụng. Ví dụ để so sánh một biến x gồm 4 bit với hằng số cho trước là 3, mạch điện thực hiện phép so sánh này sẽ được biểu diễn trong hình 2.27[a]. Ngõ ra của cổng AND là 1 khi ngõ vào của nó bằng với giá trị 3.

Các cổng XOR và XNOR có thể được sử dụng cho việc so sánh sự không bằng nhau hay sự bằng nhau giữa hai giá trị một cách thích hợp. Ngõ ra cổng XOR là 1 khi cả hai giá trị ngõ vào là khác nhau. Vì thế ta có thể sử dụng cổng XOR để so sánh từng cặp bit một của chuỗi bit nhị phân. Một bộ so sánh 4 bit không ngang bằng nhau được biểu diễn trong hình

2.27[b]. trong hình 2.27[b], 4 cổng XOR được sử dụng, mỗi cổng XOR sẽ so sánh một cặp bit trong chuỗi bit nhị phân gồm 4 bit. Ngõ ra của các cổng XOR được nối đến cổng OR có 4 ngõ vào, vì thế nếu một trong các cặp bit tương ứng của hai số nhị phân mà khác nhau, thì kết quả ngõ ra F sẽ bằng 1. Tương tự như vậy, một bộ so sánh bằng nhau có thể được xây dựng bằng cách sử dụng cổng XNOR. Ngõ ra cổng XNOR bằng 1 khi cả hai ngõ vào của nó có cùng giá trị.

Để so sánh lớn hơn và nhỏ hơn, chúng ta có thể xây dựng một bảng chân trị và xây dựng sơ đồ mạch từ phương pháp thông thường. Ví dụ so sánh một số X gồm 4 bit nhỏ hơn 5, bảng chân trị, biểu thức và sơ đồ mạch được biểu diễn trong hình 2.27[c].

Hình 2. 27 : Bộ so sánh 4 bit đơn giản cho [a] X=3; [b] X Y; [c] X '0']; temp := '0'; err c->cd->d->de->e->ef->f->fa->a. Hình 9.18. Đồ hình trạng thái Quá trình sẽ dừng lại khi có tín hiệu Stop, và khi đó mạch sẽ trở lại trạng thái a và chờ cho đến khi stop xuống thấp trở lại. Hệ thống của chúng ta sẽ giữ lại ở các trạng thái a, b, c, d , e, f trong khoảng thời gian time1 = 80ms và ở các trạng thái ab, bc, cd, de, ef, fa là time2 = 30ms. Mã chương trình của chúng ta sẽ như sau: -------- LIBRARY ieee; USE ieee.std_logic_1164.all; -------- ENTITY Trochoiled7thanh IS PORT [ clk, stop: IN BIT; dout: OUT BIT_VECTOR [6 DOWNTO 0]]; END Trochoiled7thanh; -------- ARCHITECTURE arc OF Trochoiled7thanh IS CONSTANT time1: INTEGER := 4; Gia tri thuc te hien thi la 80  - 130 - §Ò Tμi 4: ThiÕt kÕ vi m¹ch b»ng VHDL  Nhãm 4 CONSTANT time2: INTEGER := 2; Gia tri thuc te hien thi is 30 TYPE states IS [a, ab, b, bc, c, cd, d, de, e, ef, f, fa]; SIGNAL present_state, next_state: STATES; SIGNAL count: INTEGER RANGE 0 TO 5; SIGNAL flip: BIT; BEGIN - Phan mach day cua arc : -- PROCESS [clk, stop] BEGIN IF [stop='1'] THEN present_state

Chủ Đề