Bài 10: Thanh Ghi Dịch Là Gì? (Shift Register) - IzTuts
Có thể bạn quan tâm
Đoạn mã trên minh họa việc tạo độ trễ bằng cách chuyển i_Data_To_Delay đến bit ít quan trọng nhất của r_Shift. Sau đó r_Shift liên tục dịch chuyển sang trái trên mỗi chu kỳ đồng hồ. Điều này có thể hữu ích ví dụ nếu bạn nhận được một số dữ liệu từ một mô-đun, nhưng không muốn hành động ngay lập tức. Trong đoạn mã trên, bất kỳ bit nào từ r_Shift có thể được sử dụng để kiểm soát chính xác độ trễ được áp dụng, bit 0 có 1 bit trễ, và bit 3 có 4 bit trễ.
Chuyển đổi dữ liệu nối tiếp thành dữ liệu song song
Chuyển đổi từ dữ liệu nối tiếp sang dữ liệu song song là một cách sử dụng phổ biến khác của thanh ghi dịch. Điều này xảy ra khi giao tiếp với các tín hiệu ngoài chip truyền dữ liệu một cách thẳng thắn như bộ thu UART. Khi dữ liệu đến trên UART, nó cần phải được chuyển đổi từ dữ liệu nối tiếp rộng 1-bit thành một byte song song mà FPGA có thể xem xét.
signal r_RX_Data : std_logic := '0'; signal r_Bit_Index : integer range 0 to 7 := 0; -- 8 Bits Total signal r_RX_Byte : std_logic_vector(7 downto 0) := (others => '0'); p_UART_RX : process (i_Clk) begin if rising_edge(i_Clk) then r_Rx_Byte[7] <= r_Rx_Data; -- Data is sent least-significant byte first r_Rx_Byte[6:0] <= r_Rx_Byte[7:1]; -- shift right -- ABOVE DOES SAME THING AS: -- r_RX_Byte(r_Bit_Index) <= r_RX_Data; -- Check if we have sent out all bits if r_Bit_Index < 7 then r_Bit_Index <= r_Bit_Index + 1; r_SM_Main <= s_RX_Data_Bits; else r_Bit_Index <= 0; -- RECEIVE OF A UART BYTE COMPLETE HERE reg r_Rx_Data = 1'b1; // Received UART Data reg [2:0] r_Bit_Index = 0; //8 bits total reg [7:0] r_Rx_Byte = 0; always @(posedge i_Clock) begin // SNIPPET: r_Rx_Byte[7] <= r_Rx_Data; // Data is sent least-significant byte first, so shift right r_Rx_Byte[6:0] <= r_Rx_Byte[7:1]; // ABOVE DOES SAME THING AS: // r_Rx_Byte[r_Bit_Index] <= r_Rx_Data; // Check if we have received all bits if (r_Bit_Index < 7) r_Bit_Index <= r_Bit_Index + 1; else r_Bit_Index <= 0; // RECEIVE OF A UART BYTE COMPLETE HEREChuyển đổi dữ liệu song song thành dữ liệu nối tiếp
Điều này ngược lại với phần trên và được sử dụng trong Máy phát UART. Khi bạn muốn truyền một byte qua UART, trước tiên nó phải được tuần tự hóa và được gửi đi trên một dòng UART duy nhất. Một thanh ghi thay đổi có thể được sử dụng cho mục đích này.
signal r_Bit_Index : integer range 0 to 7 := 0; -- 8 Bits Total signal r_TX_Data : std_logic_vector(7 downto 0) := (others => '0'); begin p_UART_TX : process (i_Clk) begin if rising_edge(i_Clk) then -- SNIPPET: o_TX_Serial <= r_TX_Data(0); -- Data is shifted out least-significant bit first. r_TX_Data(6 downto 0) <= r_TX_Data(7 downto 1); -- Shift next bit into place. -- ABOVE DOES SAME THING AS: -- o_TX_Serial <= r_TX_Data(r_Bit_Index); -- Check if we have sent out all bits if r_Bit_Index < 7 then r_Bit_Index <= r_Bit_Index + 1; else r_Bit_Index <= 0; // TRANSMIT OF A UART BYTE COMPLETE HERE end if; reg [2:0] r_Bit_Index = 0; reg [7:0] r_Tx_Data = 0; always @(posedge i_Clock) begin // SNIPPET: o_TX_Serial <= r_TX_Data[0]; // Data is shifted out least-significant bit first. r_TX_Data[6:0] <= r_TX_Data[7:1]; // Shift next bit into place. // ABOVE DOES SAME THING AS: // o_Tx_Serial <= r_Tx_Data[r_Bit_Index]; // Check if we have sent out all bits if (r_Bit_Index < 7) begin r_Bit_Index <= r_Bit_Index + 1; end else begin r_Bit_Index <= 0; end endHy vọng rằng bài viết này đã cho bạn một sự hiểu biết cơ bản về những gì một thanh ghi dịch trong FPGA hoặc ASIC. Để xem cách tạo thanh ghi dịch của riêng bạn trong Verilog hoặc VHDL, hãy xem các liên kết bên dưới.
Tạo một thanh ghi Shift trong Verilog Shift Left, Shift Right trong VHDL
Từ khóa » Các Loại Thanh Ghi Dịch
-
Thanh Ghi Dịch Shift Register Là Gì - ĐIỆN TỬ TƯƠNG LAI
-
Ứng Dụng Phổ Biến Của Thanh Ghi Dịch Là Gì? - Mạch điện Tử
-
Flip-Flop: Thanh Ghi
-
Thanh Ghi Shift Là Gì ?, Các Loại, Bộ đếm Và Ứng Dụng Khác Nhau
-
CHƯƠNG 6: FLIP FLOP – THANH GHI DỊCH MẠCH ĐẾM - TaiLieu.VN
-
Thanh Ghi Dịch - CHƢƠNG 3 CÁC CỔNG LOGIC CƠ BẢN ... - 123doc
-
II/- MẠCH GHI DỊCH - Tài Liệu Text - 123doc
-
Giáo Trình Kỹ Thuật Số: MẠCH GHI DỊCH - .vn
-
Thanh Ghi Dịch Chuyển - Shift Register - Wikipedia
-
Thanh Ghi Dịch – Du Học Trung Quốc 2022 - Wiki Tiếng Việt
-
IC CD4015 Thanh Ghi Dịch 4 Bit - Blog Mecsu
-
[Tìm Hiểu] Thanh Ghi Dịch 8-Bit IC 74LS166 - Blog Mecsu