UART Chuyển theo byte

I

IceZero

Guest
Tôi phải làm gì đó sai trái bởi vì điều này không làm việc như tôi mong đợi. Những gì tôi đang cố gắng làm là thay đổi trong 4 byte nhận được từ UART tuần tự vào một đăng ký 32-bit. Tôi đã bao gồm mã của tôi dưới đây. Khi tôi đọc lại sổ đăng ký 32-bit UART, tất cả các byte 4-32-bit có chứa các byte nhận được cuối cùng từ UART. Có vẻ như rằng khi tôi thêm uart_rx_data_out để uart_rx_opcode ở bước cuối cùng, nó thêm rằng giá trị cho tất cả các bit không chỉ bit 0 đến 7 như tôi mong đợi. Tôi có thể làm một cái gì đó thực sự câm.
Code:
 nếu (cnt_rx_next == 0) bắt đầu / / Load byte có sẵn vào OP Mã Đăng ký uart_rx_opcode = 32'h00000000 + uart_rx_data_out; / / tăng các cnt_rx_next Counter = cnt_rx_reg + 1; kết thúc khác nếu (cnt_rx_next == 1) bắt đầu / / Load byte có sẵn vào OP uart_rx_opcode Mã Đăng ký = (uart_rx_opcode
 
Giả định là bên trong một khối luôn luôn tổ hợp (xấu của đăng đoạn), có vẻ như bạn đang sử dụng các biến chưa đăng ký ở một số nơi mà bạn nên sử dụng những người đăng ký, ví dụ như trong tiểu bang so sánh.
 
Có điều này là trong khối logic trạng thái tiếp theo (luôn luôn @ *). Tôi nghĩ rằng bạn có thể là đúng. Bây giờ tôi nghĩ về nó, uart_rx_data_out là loại dây không reg.
 
Thêm vào điểm, bạn có thể có "cnt_rx" trong đó một nơi nào đó cũng. Và có lẽ là một cái gì đó mà thực hiện điều này:
Code:
 luôn luôn @ (posedge CLK) cnt_rx
 

Welcome to EDABoard.com

Sponsor

Back
Top