y: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); rest: OUT INTEGER RANGE 0 TO 15;
9.6. Bộ nhận dữ liệu nối tiếp.
Sơ đồ khối của bộ nhận dữ liệu nối tiếp được chỉ ra trong hỡnh 9.13. Nú bao gồm một đầu vào dữ liệu nối tiếp (din) và một đầu ra dữ liệu song song (data(6:0)). Ngoài ra cũn cú tớn hiệu điều khiển clk (tớn hiệu clock). Hai tớn hiệu giỏm sỏt được tạo ra bởi mạch là: tớn hiệu err (error) và tớn hiệu data_valid. Đầu vào xử lý chứa 10 bớt. Bit đầu tiờn là bit bắt đầu, nếu bit là 1 thỡ mạch bắt đầu nhận dữ liệu. 7 bit tiếp theo là cỏc bit dữ liệu hoạt động. Bit thứ 9 là bit chẵn lẻ: bit này = ‘0’ nếu số lượng cỏc bit 1 trong dữ liệu la chẵn và bằng ‘1’ trong trường hợ cũn lại. Bit 10 là bit stop: bit này sẽ mang giỏ trị là 1 nếu quỏ trỡnh chuyển đổi là đỳng. Một lỗi được phỏt hiện khi bit chẵn lẻ khụng được kiểm tra hoặc bit stop khụng phải la ‘1’. Khi quỏ trỡnh nhận kết thỳc mà khụng cú lỗi nào được phỏt hiện thỡ dữ liệu được lưu trữ trong cỏc thanh ghi bờn trong sẽ chuyển vào data(6:0) và đầu ra data_valid được xỏc nhận.
Hỡnh 9.13. Sơ đồ bộ nhận dữ liệu nối tiếp
Để thiết kế mạch này chỳng ta sẽ sử dụng một vài biến để làm cỏc biến đếm, biến xỏc nhận số bit nhận được, biến lưu trữ dữ liệu, biến tớnh toỏn lỗi và biến trung gian.
Mó thiết kế bộ nhận dữ liệu nối tiếp sẽ như sau:
---LIBRARY ieee; LIBRARY ieee;
USE ieee.std_logic_1164.all;