Problem med UART Shifting i 4 byte

I

IceZero

Guest
Jeg må gjøre noe galt fordi dette ikke fungerer som jeg forventet. Det jeg prøver å gjøre er å skifte i 4 byte som mottas fra UART sekvensielt i en 32-bit register. Jeg har tatt min kode nedenfor. Da jeg leste tilbake 32-bit register til UART, alle 4-byte av 32-bits register inneholder den sist mottatte byte fra UART. Det virker som når jeg legger den uart_rx_data_out å uart_rx_opcode i det siste trinnet, er det å legge denne verdien til alle biter ikke bare biter 0-7 som jeg forventer. Jeg er trolig gjør noe virkelig dumt.
Code:
 if (cnt_rx_next == 0) begynne / / Legg tilgjengelige byte inn OP kode Registrer uart_rx_opcode = 32'h00000000 + uart_rx_data_out / / Øk The Counter cnt_rx_next = cnt_rx_reg + 1; end else if (cnt_rx_next == 1) begynner / / Legg tilgjengelige byte inn OP kode Registrer uart_rx_opcode = (uart_rx_opcode
 
Antatt koden er inne i en combinational alltid blokk (dårlig av oppslaget tekstbiter), ser det ut som du bruker uregistrerte variabler i noen steder hvor du bør bruke registrerte seg, for eksempel i staten sammenligne.
 
Ja dette er i neste tilstand logikk blokk (alltid @ *). Jeg tror du kan ha rett. Nå som jeg tenker på det, er uart_rx_data_out av typen ledningen ikke reg.
 
Mer til poenget, har du sannsynligvis "cnt_rx" der inne et sted også. Og antagelig noe som gjør dette:
Code:
 alltid @ (posedge clk) cnt_rx
 

Welcome to EDABoard.com

Sponsor

Back
Top