Проблем с UART Прехвърляне в 4 байта

I

IceZero

Guest
Трябва да се прави нещо нередно, защото това не работи, както аз очаквах. Това, което се опитвам да направя, е да премести в четири байтове, получени от UART последователно в 32-битов регистър. Аз бях включен моя код по-долу. Когато прочетох 32-битов регистър на UART, всички 4-байта на 32-битов регистър съдържа последния байт от UART. Изглежда, че когато аз съм добавяне на uart_rx_data_out да uart_rx_opcode в последната стъпка, това е като добави, че стойността на всички от бита не само бита 0 до 7, както бихте очаквали. Аз съм може би прави нещо наистина тъпо.
Code:
 (cnt_rx_next == 0) започва / / Заредете наличната байт в ОП Код Регистрация uart_rx_opcode = 32'h00000000 + uart_rx_data_out / / СТЪПКА Брояч cnt_rx_next, = cnt_rx_reg + 1; края иначе, ако (cnt_rx_next == 1) да започне / / Заредете наличната байт в ОП Код uart_rx_opcode регистър = (uart_rx_opcode
 
Приемаме код е вътре комбинаторни винаги блок (лошо за публикуване на откъси), тя изглежда като теб, използваща нерегистрирани променливи в някои места, където трябва да използвате регистрирани, например в държавата сравнение.
 
Да, това е в следващия блок състояние логика (винаги @ *). Мисля, че може да бъде точно. Сега, аз мисля за това, uart_rx_data_out е на вид не тел рег..
 
Още до точката, вероятно имате "cnt_rx" някъде там, както и. И се предполага, че нещо, което прави това: [код] Винаги @ (posedge CLK) cnt_rx
 

Welcome to EDABoard.com

Sponsor

Back
Top