Thanh ghi tập tin (Register Files):

Một phần của tài liệu Bài giảng VHDL (Trang 90 - 93)

Khi ta muốn lưu trữ vài số đồng thời, ta có thể dùng vài thanh ghi riêng trong mạch. Tuy nhiên có khi bạn muốn xử lý những thanh ghi này như một thành phần, tương tự như xác định các vị trí riêng lẻ của một mảng. Do đó thay vì có 1 vài thanh ghi ta muốn có 1 mảng thanh ghi. Mảng các thanh ghi này được xem như thanh ghi tập tin. Trong một thanh ghi tập tin, tất cả các tín hiệu điều khiển tương ứng đều được nối chung. Hơn nữa, tất cả dữ liệu

đầu vào và ra tương ứng cho tất cả các thanh ghi cũng được nối chung. Nói cách khác, ví dụ tất cả các chân d3 của tất cả các thanh ghi được nối chung. Vì thế thanh ghi tập tin chỉ

có 1 cách set ngõ vào và ngõ ra cho tất cả các thanh ghi. Để chỉ rõ thanh ghi nào trong thanh ghi tập tin mà bạn muốn đọc/ghi, từ đâu/đến đâu, thì thanh ghi tập tin có các đường điạ chỉ cho mục đích này.

Trong một mạch vi xử lý cần có một ALU, thanh ghi tập tin thì thường được dùng cho những toán hạng nguồn của ALU. Khi ALU có hai toán hạng ngõ vào, chúng ta muốn thanh ghi tập tin có hai giá trị ngõ ra từ hai vị trí khác nhau của thanh ghi tập tin. Vì thế một thanh ghi tập tin thường có một Port ghi và hai Port đọc. Tất cả 3 Port sẽ có các chân địa chỉ và chân cho phép riêng. Port đọc có trạng thái trở kháng cao khi chân cho phép đọc không đựơc tích cực. Trong chu kỳ hoạt động, dữ liệu trên Port đọc có giá trị lập tức sau khi chân cho phép đọc được tích cực, trong khi Port ghi xuất hiện mức tích cực ở cạnh lên tiếp theo của xung clock.

Mạch thanh ghi ở hình 2.45 không có chân điều khiển cho việc đọc dữ liệu ngõ ra. Để điều khiển khi ta muốn dữ liệu ngõ ra và đặt chân ngõ ra ở trạng thái trở kháng cao, chúng ta cần thêm vào bộ đệm 3 trạng thái ở mỗi ngõ ra. Tất cả các chân cho phép của bộ đệm 3 trạng thái được kết nối chung khi chúng ta muốn điều khiển tất cả ngõ ra cùng lúc. Hơn nữa chúng ta cần có 2 Port đọc. Ví dụ, 2 ngõ ra điều khiển của mỗi thanh ghi vì thế ta có thể kết nối 2 bộ đệm 3 trạng thái đến mỗi ngõ ra. Mạch thanh ghi được sữa đổi như hình 2.48.

Hình 2. 48 : Mạch thanh ghi có thêm chân điều khiển.

AE‟ và BE‟ là các chân cho phép đọc tín hiệu tương ứng của Port A và Port B. Mỗi 1 Port kết nối đến các chân cho phép của 4 bộ đệm 3 trạng thái khi set. Tất cả chúng đều tích cực mức thấp. PA và PB là 2 Port đọc 4 bit. Để chọn thanh ghi mà bạn muốn làm việc bạn dùng bộ giải mã để giải mã địa chỉ. Ngõ ra của bộ giải mã được dùng để tích cực chân cho phép đọc/ghi. Mạch hoàn chỉnh của 1 thanh ghi 4x4 (4 thanh ghi mỗi thanh ghi có độ rộng là 4 bit ) được chỉ ra ở hình 2.49.

Chương 2 : Dùng ngôn ngữ VHDL mô tả các mạch số cơ bản

LIBRARY ieee;

USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all;

USE ieee.std_logic_unsigned.all; -- needed for CONV_INTEGER() ENTITY regfile IS PORT (

clk: in STD_LOGIC; --clock

WE: in STD_LOGIC; --write enable

WA: in STD_LOGIC_VECTOR(1 DOWNTO 0); --write address D: in STD_LOGIC_VECTOR(7 DOWNTO 0); --input

RAE, RBE: in STD_LOGIC; --read enable PORTsA&B

RAA, RBA: in STD_LOGIC_VECTOR(1 DOWNTO 0); --read address PORTA&B A, B: out STD_LOGIC_VECTOR(7 DOWNTO 0)); --output PORTA&B

END regfile;

ARCHITECTURE Behavioral OF regfile IS

SUBTYPE reg IS STD_LOGIC_VECTOR(7 DOWNTO 0); TYPE regArray IS ARRAY(0 to 3) OF reg;

SIGNAL RF: regArray; --register file contents BEGIN

WritePort: PROCESS (clk) BEGIN

IF (clk'EVENT AND clk = '1') then IF (WE = '0') then

RF(CONV_INTEGER(WA)) <= D; --fn to convert from bit VECTOR to integer

END IF; END IF; END PROCESS;

ReadPortA: PROCESS (RAA, RAE) BEGIN

-- Read Port A

IF (RAE = '0') then

A <= RF(CONV_INTEGER(RAA)); --fn to convert from bit VECTOR to integer ELSE

A <= (others => 'Z'); END IF;

END PROCESS;

BEGIN -- Read Port B

IF (RBE = '0') then

B <= RF(CONV_INTEGER(RBA)); --fn to convert from bit VECTOR to integer ELSE

B <= (others => 'Z'); END IF;

END PROCESS; END Behavioral;

Hình 2.50 cho thấy tín hiệu mô phỏng cho ghi 4x4 với 1 Port ghi , 2 Port đọc

Hình 2. 50 : Tín hiệu mô phỏng cho ghi 4x4 với 1 Port ghi, 2 Port đọc.

Một phần của tài liệu Bài giảng VHDL (Trang 90 - 93)

Tải bản đầy đủ (PDF)

(137 trang)