Thanh ghi dịch nối tiếp ra song song và song song ra nối tiếp:

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

Cả hoạt động chuyển nối tiếp ra song song và song song ra nối tiếp, chúng ta đều làm dịch bit từ trái qua phải thông qua thanh ghi. Điểm khác biệt giữa 2 giải thuật là khi bạn thực hiện đọc song song sau khi dịch hoặc ghi song song trước khi dịch. Để chuyển nối tiếp ra song song bạn phải đọc song song sau khi bit được dịch vào trong. Còn để chuyển song

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

tiếp. Chúng ta có thể thực hiện cả hai chức năng vào trong mạch nối tiếp ra song song từ phần trước 1 cách đơn giản bằng việc thêm một chức năng Load song song vào mạch như trong hình 2.64a.

Bốn bộ ghép kênh làm việc với nhau để chọn những flip-flop mà bạn muốn giữ lại giá trị hiện tại, đọc vào một giá trị mới hay dịch những bit qua phải 1 vị trí bit. Hoạt động của mạch này tùy thuộc vào hai chân lựa chọn SHSel1 Và SHSel0, nó điều khiển ngõ vào của những bộ ghép kênh được chọn. Bảng hoạt động và ký hiệu lôgic ở hình 2.64b và 2.64c.

Hình 2. 64 : (a) Sơ đồ mạch thanh ghi dịch nối tiếp ra song song và song song ra nối tiếp; (b) Bảng chân trị ; (c) ký hiệu logic của thanh ghi dịch nối tiếp ra song song và song song

ra nối tiếp.

Tín hiệu mô phỏng ở hình 2.65:

Hình 2. 65 : Tín hiệu mô phỏng thanh ghi dịch nối tiếp ra song song và song song ra nối tiếp.

Mã VHDL mô tả cho thanh ghi dịch nối tiếp ra song song và song song ra nối tiếp.

LIBRARY ieee;

USE ieee.std_logic_1164.ALL; ENTITY shiftreg IS PORT (

Clock: IN STD_LOGIC;

SHSel: IN STD_LOGIC_VECTOR(1 DOWNTO 0); Serial_in: IN STD_LOGIC;

D: IN STD_LOGIC_VECTOR(3 DOWNTO 0); Serial_out: OUT STD_LOGIC;

Q: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END shiftreg;

ARCHITECTURE Behavioral OF shiftreg IS

SIGNAL content: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

PROCESS(Clock) BEGIN

IF (Clock'EVENT AND Clock='1') THEN CASE SHSel IS

WHEN "01" => -- load content <= D;

WHEN "10" => -- shift right, pad with bit from Serial_in content <= Serial_in & content(3 DOWNTO 1); WHEN OTHERS => NULL; END CASE; END IF; END PROCESS; Q <= content; Serial_out <= content(0); END Behavioral;

Chương 3 : Tìm hiểu Kit FPGA Spartan 3

CHƢƠNG 3 : TÌM HIỂU KIT FPGA SPARTAN 3

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

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

(137 trang)